VxWorks 环境下基于 Zinc 的 GUI 任务与非 GUI 任务之间的通信1 引言 VxWorks 是美国 Wind River Systems 公司开发的一种嵌入式实时操作系统,它以高性能可剪裁的微内核以及友好的用户开发环境在嵌入式实时操作系统领域占有重要的地位
在很多实时应用场合(如嵌入式地理信息系统) ,需要在 VxWorks 环境下设计图形用户界面(GUI)
VxWorks 提供了两种开发图形用户界面的组件:WindML (Wind 多媒体库)和Zinc
WindML 为图形、图象和声音应用程序的开发提供了基本技术,并且提供了为定制设备开发标准化驱动程序的框架
Zinc 是以 WindML 为基础的, Zinc 是为应用创建图形用户界面提供框架的可扩展的面向对象的类库
Zinc 为实现复杂的图形用户界面提供了更多的支持
为了提高性能和简化源代码,大多数情况下在一个实时环境中的应用程序是以多任务的方式实现的, Zinc 自身通常也是多任务的
一般不在外部任务里直接处理 GUI ,而是在一个专用的 GUI 任务里执行所有的 GUI 处理
在多任务环境下,非 GUI 任务将需要在不同的时期和 GUI 任务通信, GUI 也可能需要与外部任务通信
GUI 任务与非 GUI 任务之间的通信方式将对整个实时系统的实时性、可靠性和稳定性产生重大的影响
因此, 深入研究VxWorks 环境下 Zinc 所支持的 GUI 任务与非 GUI 任务之间的通信方式并确定在特定应用场合选择通信方式的原则是非常重要的
2 GUI( Zinc)任务和外部任务之间的通信方法 GUI 任务和非 GUI 任务之间的通信大致可以分为两种:同步通信和异步通信
Zinc 主要提供了如下几种通信机制供程序员选择使用:Zinc 入口点 共享内存 OS 消息队列 派生设备 a)Zinc 入口点