WindML中Mesa的应用

毛子鹰1, 高贵明2 (1. 南京信息工程大学电子与信息工程学院,南京210044; 2. 南京船舶雷达研究所,南京210003)

摘 要: 研究了在WindML3.0中应用Mesa来改进嵌入式图形界面显示效果的方法。针对实际产生的问题进行了简要的分析,提出了相应的解决方法,达到了预期的效果。

关键词: WindML; Mesa; VxWorks; 图形界面

The application of Mesa in WindML

(1. College of Electronics and Information Engineering, Nanjing University of Information Science & Technology, Nanjing 210044; 2. N anjing Marine Radar Institute, Nanjing 210003)

Abstract: A method of applying Mesa in WindML3.0 to improve the display effect of the embedded GUI is introduced. Based on the problems in the test, the brief analysis is made with the corresponding solutions to achieve the expectant effect.

Keywords: WindML; Mesa; VxWorks; GUI

下载地址

Files:
(3 votes)
Date 2018-08-01
File Size 720.72 KB
Download 223

Wind River Tilcon Graphics Suite 5.8.1安装介质

├── 3rd_party_licensor_notices

│   └── tilcon-5.8.pdf

├── autorun.inf

├── docs

│   ├── wr_media_lib_ddk_programmers_guide_5.3.pdf

│   ├── wr_media_lib_sdk_programmers_guide_5.3.pdf

│   ├── wr_tilcon_graphics_suite_tutorial_5.8.pdf

│   └── wr_tilcon_graphics_suite_users_guide_5.8.pdf

├── images

│   ├── CDR-R141785.1-1-08

│   ├── CDR-R148318.1-7-00

│   ├── CDR-R157603.1-3-00

│   ├── CDR-R157604.1-3-00

│   ├── CDR-R157605.1-3-00

│   ├── CDR-R158055.1-3-00

│   ├── CDR-R158056.1-3-00

│   ├── CDR-R158833.1-3-00

│   ├── CDR-R158920.1-3-00

│   └── CDR-R158921.1-3-00

├── installer

│   └── host_info

├── license.htm

├── mediaId

├── readme.txt

├── sdf.xml

├── setup.exe

├── setup_linux

├── setup_linux32

└── setup_solaris

获取Tilcon 5.8,请关注微信公众号:北南南北

北南南北

1 介绍

  WindML即Wind Media Library(媒体库),它支持多媒体程序运行于嵌入式操作系统,风河公司设计它主要是用来提供基本的图形、视频和声频技术以及提供一个设计标准设备驱动程序框架。

  WindML API库提供了一个统一的图形硬件接口以及处理输入设备和输入设备事件的能力。

  WindML有以下几个设计目的:

  • 简单。WindML提供一个灵活的图形源语集、基本的视频和声频功能;
  • 硬件便宜。可以在多种CPU体系结构上使用;
  • 操作系统便宜。可以在多种RTOS系统上使用;

驱动程序开发的容易。提供给开发者一个定制设备驱动程序的机理。

2 WindML结构

  WindML包括两个组件――软件开发包(SDK)和驱动程序开发包(DDK)。

  SDK组件用来开发应用程序,它提供了一个全面的API集,包括图形、输入处理、多媒体、字体和内存管理。

  DDK组件是用来实现驱动程序的,它提供了一个完整的驱动程序参考集,包括硬件配置和API集,以使得开发者能够迅速的引导和使用自己的驱动程序。

  WindML可以概括为如图1所示的结构:

VxWorks WindML

3 UGL图形接口(UGI) API

摘 要:通过对Mesa 3D库的移植及改进在VxWorks中实现了基于OpenGL1的图形API函数,解决了VxWorks下图形驱动开发组件WindML3.0不能使用标准图形API进行图形应用程序开发,不能支持3D图形显示的问题。同时利用硬件双缓冲技术解决了实时显示中画面闪烁、抖动的问题,提高了图形显示的质量

引言

随着嵌入式技术的不断发展,嵌入式系统的功能和结构日趋多样化和复杂化,已不再满足于简单图形的显示,对三维真实感图形的显示以及交互式用户界面提出了更高的要求。VxWorks是由美国风河公司推出的一个嵌入式实时多任务操作系统,当前VxWorks下的图形开发主要使用WindML来完成。虽然WindML支持丰富的显示方式、具有较快的显示速度、开放源代码等优势,但是WindML在以下两个方面的不足也限制了其进一步的发展。

(1) WindML提供的图形API函数根本不能同现有业界标准DirectX或是OpenGL兼容,这在很大程度上影响了代码的可移植性。

(2) WindML现有的图形API函数只支持简单的二维图形显示,根本不支持三维图形,这极大的限制了VxWorks下图形显示的开发,很难满足日益增长的对图形显示方面的要求。因此在WindML3. 0中实现对OpenGLAPI的支持就很有现实意义。

1 VxWorks三维图形引擎的总体架构

图形引擎在操作系统中可以视为一个独立的模块,其实质就是作为显示硬件的驱动程序,为应用程序的编写提供接口函数,同时在该操作系统中协调CPU与显示硬件芯片(GPU)之间的通信以及相应的内存管理等。

从这个意义上说,要在一个操作系统中构建出一个完整的图形引擎至少应该包括以下三大功能模块:与CPU通信模块、图形芯片初始化模块、标准图形库函数模块。与CPU通信模块主要负责提供CPU与GPU之间通信总线的驱动程序。以PCI总线为例,这个模块必须实现查找PCI设备、读写PCI配置空间,以及实现PCI中断控制等功能,协助CPU完成内存映射的任务。图形芯片初始化模块负责初始化图形芯片,包括创建并向系统注册显示设备、完成内存映射、正确设置显示模式、销毁设备等,这个模块必须使GPU处于准备好的状态,随时接收并完成绘制图形的任务。标准图形库函数模块负责在底层硬件上实现符合业界标准的图形库API函数(比如OpenGL或是DirectX) 。

2 Mesa3D的移植及改进

2.1 Mesa3D的移植

Mesa3D是一个兼容OpenGL规范的开放源码的函数库,是目前Linux上提供专业三维图形支持的惟一选择。Mesa3D同时也是一个跨平台的函数库,能够运行在XWindow、XWindow with DGA、BeOS、Linux SVGALib等平台上。从编译原理上来说,Mesa3D的移植就是要将Mesa的源代码(.c文件)编译成模块文件(.o文件) ,使其能成为一个功能模块加入到最终的VxWorks镜像中。

但是Mesa3D并不是专门为VxWorks编写的,因此必须从源代码中选取那些实现OpenGL基本功能的源文件, 同时还应根据系统硬件配置实现Mesa3D库与WindML的接口。最后将所有的文件单独编译生成相应的模块,再链接进入VxWorks镜像文件中。根据笔者的实践,要将Mesa3D移植到WindML3.0并能实现所有的OpenGL API函数,以下文件是必须要加入工程,并且需要根据系统的硬件情况进行修改,具体的修改处理情况如下。

(1) 所有实现OpenGL标准功能的文件。在Mesa3D中,OpenGL按照功能分成以下部分:

摘 要:较全面地介绍了用WindML2.0实现嵌入式实时操作系统VxWorks的显控程序设计,并给出了在WindML2.0中显示中文的办法。

关键词: 嵌入式实时操作系统,VxWorks,显控程序,WindML

1 引言

VxWorks是美国WindRiver公司(位于美国加州的Alameda市)开发的,具有工业领导地位的高性能嵌入式实时操作系统。VxWorks具有专门为实时嵌入式系统设计开发的操作系统内核,提供了高效的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。基于VxWorks操作系统的应用程序可以在不同的CPU平台上轻松植。VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。VxWorks以其卓越的性能被广泛地应用在通信、军事、航空、航天等实时性要求极高因而普通操作系统难以胜任的领域中,美国的F-16战斗机、B-2隐形轰炸机和爱国者导弹及火星控测器“探路者”上都使用了VxWorks。

在VxWorks的一般嵌入式应用中,可以选择Zinc For VxWorks或WindML(Wind Media Library)2.0来进行图形界面设计,它们都是VxWorks中的可裁减的多媒体组件,都可以在VxWorks操作系统上以较低的系统开销实现丰富多彩的图形界面。Zinc是一套完善的图形用户界面开发工具,适用于为高性能嵌入式设备开发低内存开销、本地编译的图形化用户接口。WindML是将 Zinc和硬件设备之间连接在一起的简捷高效的通用多媒体图形库。WindML主要提供了对芯片、输入/输出设备、音频/视频、帧缓冲器等的开放的应用程序接口(API)。因此,Zinc必须通过调用多媒体图形库WindML的应用程序接口来实现其图形功能。Zinc属于高端应用,Zine组件的价格也较贵,而WindML在大多数情况下已经足可以满足应用需求了。而且,WindML编程也比较灵活,有更大的自由度。因此,一般是选用WindML来作图形界面设计。

一个系统中的各个软件模块往往都要和界面产生一定的联系,有的模块需要反数据送到界面进行显示,界面程序有可能还要将数据处理后转送其它模块以实现模块间的通讯,还有可能根据数据的情况或键盘等的输入启动某些程序,例如,按键启动系统自检等。因此,在WindML的许多应用场合,兴驻要求WindML完成图形界面的显示,而且还要完成一定的控制功能。WindML常常被用来编写VxWorks下的显示控程序。

2 WindML的功能

WindML本身也具有可裁剪性和可配置性,以适应不同的应用要求。WindML可以为在VxWorks操作系统下开发的软件提供基本图形、视频和音频文面的操作。WindML适用于很多种CPU,可以提供独立于硬件的代码,同时它也支持鼠标、键盘等输入设备。

WindML的主要功能有二维图形API,事件服务,区域和窗口管理,多媒体,资源管理。其中,二维图形API是最常用的部分,包括基本画图操作(画线、矩形、椭图、多边形、点),选择字体输出文体,位图,光标管理,批量画图操作,图形上下文,色彩管理,双缓冲。事件服务程序是用来处理输入设备的输入请求的。它会把键盘、鼠标等输入的数据转化为事件并且传送给事件句柄,送到应用队列中。区域和窗口管理可以在界面上定义一个区域或多线程之间共享的窗口以供画图操作。多媒体API支持NTSC,PAL,SECAM等视频制式,DSP或混频器两种设备的音频输出,也支持JPEG图形格式。资源管理是指资源的建立、控制和删除。这些资源是指常规的WindML资源(例如设备和事件队列),内存管理,驱动器注册等。

3 WindML的使用