WindML - Wind River Media Library。听上去是个多媒体库,但大家一直把它当作图形库,据说当初第一个版本的名字就叫UGL。目前最低版本是支持VxWorks 5.4的WindML 2.0,最高版本应该是VxWorks 6.9里配合Tilcon的WindML5.4吧,Vx7里应该已经没有它了
不管是多媒体库,还是图形库,要使用WindML,核心的设备肯定是显卡了。那项目刚启动时,Target device都还没准备好,更别提显卡了,要想学习或了解WindML,怎么办?还好不管哪个版本的VxWorks Simulator,都支持WindML,在Host本地就可以把WindML的所有上层功能跑起来了。
另外,不管哪个版本的WindML,Wind River都是以源码形式提供的。因此,要想使用它,得先把源码编译成库。今天咱们就来看看如何在Simulator里把WindML的例子跑起来:
打开Workbench,建个DKM:
根据自己的喜好,给它起个名字
选择合适的build spec。 Simulator在Windows上模拟的CPU叫SIMNT,编译器可以选择gnu,或者diab也是没问题的。另外,喜欢研究代码的小伙伴,可以使用默认的Debug Mode
Build Target改为Librarian
其它选项,都用默认值就可以了
然后新建一个Middleware Component
把这个Middleware加到刚刚的DKM上
选择合适的Middleware。可以看到,如果要编译其它Middleware,也是这样操作的,例如DCOM、OPC、Tilcon等
因为是要把源码编译为库,所以选择Component Configuration
DKM创建完毕后,Workbench自动打开了WindML的Configuration页面 - config.windml
接下来,根据实际需求来config这个windml,基本都可以先用默认值
接下来,添加一个Display。Audio就不用了,WindML对音频支持的力度也不够。
给这个Display随便起个名字
添加一个Graphics设备
添加一种Font引擎。BMFFonts(Bitmapped Monochrome Font)或FreeType Fonts,二选一。都不选的话,App绘制文本时,就会报错。都选的话,默认使用BMF Fonts。
例如选择BMF Fonts,然后选中想要的font。当然也可以Select All,不过编译的库就会大一些。
注意: 所有的Font都是有版权的。我们之所以能够在Windows里显示文本,是因为微软支付了Font的费用;之所以能够在公众号里看到这篇文章,是腾讯制作了Font;之所以能够在WindML里显示字符,是因为风河集成了这些Font。如果你想使用更多的Font,那就得掏钱了;如果你想把文字打印出来,用于商业目的,例如做一张宣传海报,也要支付费用的。
其它几个成员是可选的了
Keyboard: 键盘SimPC Keyboard
Pointer: 鼠标Simpc Pointer
Window Manager: WindML封装的一个控件库,支持Window、Menu、Button
Config完毕后,Build这个DKM。Elapsed Time取决于Host的硬件性能,例如我这次Build用了4分多钟。记得十五年前,第一次Build WindML 2/3时,至少也要20多分钟
这样就得到了WindML的两个库
现在,可以在VxWorks中使用WindML了。建个VIP
给它个名字
BSP就用simpc,Tool chain要与刚刚DKM的build spec一致。其它选项用默认值就行了
打开VIP的Kernel Configuration,添加组件INCLUDE_WINDML和INCLUDE_HOST_WINDML_GRAPHICS
在VIP中import一些samples
好了,Build这个VIP,启动Simulator Connection
跑个例子试试,例如winBall()或者ugldemo()
这正是:
想要画图和界面,缺乏经验少硬件?
有了Sim就好办,省时省力还省钱!