当前位置:首页 > 嵌入式 > 嵌入式软件

摘要:本文主要分析介绍了Vxworks系统的媒体库WindML的结构和特点,并尝试在嵌入式系统下,特别是在更具难度的Vxworks系统下,进行移植WorldWind软件。

随着多媒体信息技术、互联网技术、通信技术产品智能化趋势的加强,嵌入式系统以其占用内存少、高性能、具有完全的可伸缩性、性能稳定等特点得到了越来越广泛的应用。

其应用主要包括网络通信、航空航天、医疗仪器、状态监控以及消费电子产品等领域。是美国VxWorks WindRiver System Inc.公司推出的强实时嵌入式操作系统,它在高可靠、高实时性、高性能领域有独到的优势和广泛的应用,特别是因为成功应用于火星探路器而名声大噪。本文将主要围绕VxWorks操作系统的图形用户接口的实现机制进行分析,讨论WorldWind软件的移植。

1 WorldWind 软件概述

NASA 就是我们所熟知的美国航天宇航局,在美国的高调宣传之下与FBI 一样如雷贯耳,能够使用NASA 所开发的软件会不会有一种特殊的心情呢?WorldWind(简称WW)就是一款出身高贵的软件,拥有NASA 的血统。同时它也是一款特殊的软件。华丽的界面,出彩的图象,完全自主的功能应用,完全可以和GoogleEarth(简称GE)软件相媲美。它与GoogleEarth最大的优势在于它的代码开源,这样便于我们更加深入的了解他。这也是WW 比GE 更受大家的青睐的最重要的原因。同时也为我们这些爱好者移植该软件提供了方便。

1.1 Add-On 功能

WW 是一款可以让用户通过从太空视角全面观察地球表面的软件,以他优秀的卫星图库与地形资料,通过3D 技术的应用,让用户拥有身临其境的感觉。与同类型软件一样,亦可以使用图层功能来方便使用者更快的索取自己想要的信息。不过不同的是WW 的图层更为强大。这一切都得益于他的一个名为Add-On 的功能。此功能让你不光可以享有官方所提供的图层数据,更为让人兴奋的是由于WW 为开源软件,他允许其他第三方人员为它提供编写的成品图层功能。图层是做什么用的?简单的来说,如果WW 给我们提供的模型球体是这款软件的骨架,那么图层则就是WW 的血脉,肌肉。两者是相辅相成的关系,骨架固然重要,但是人与人的不同并不简单的体现在骨架上,更多的是依靠血脉,肌肉来体现。这个功能就是为了让软件更为丰满,给于其很高的增长潜力,而同类型的 GE 则较之逊色的多了。

1.2 DDS 图片WW 默认设置中将下载到本地的图片(一般是jpg 格式)转换为dds 格式,这样本地的cache 中都是dds 文件,一般说来同样分辨率的dds 文件比jpg 文件大。我通过修改默认设置,不让WW 转为dds 格式,直接用jpg 格式,发现WW 中显示效果差不多,地形也能正确渲染。

DDS 是DirectDraw Surface 的缩写,它是DirectX 纹理压缩(DirectX TextureCompression,简称DXTC)的产物。许多3D 软件包括大部分游戏都用dds 格式,又称“贴图”,许多fans 通过修改dds 文件可以生成特殊显示效果。在WW 中也用到了其它格式的图片:JPEG:(文件扩展名为jpg 或jpeg)应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,将不易被人眼察觉的图像颜色删除,从而达到较大的压缩比(可达到2:1 甚至40:1),所以“身材娇小,容貌姣好”,特别适用于网络环境。

PNG:与JPEG 格式类似,网页中有很多图片都是这种格式,压缩比高于GIF,支持图像透明,可以利用Alpha 通道调节图像的透明度。BMP:Windows 系统下的标准位图格式,使用很普遍。其结构简单,未经过压缩,一般图像文件会比较大。它最大的好处就是能被大多数软件“接受”,可称为通用格式。

GIF:分为静态GIF 和动画GIF 两种,支持透明背景图像,适用于多种操作系统,“体型”很小,网上很多小动画都是GIF 格式。其实GIF 是将多幅图像保存为一个图像文件,从而形成动画,所以归根到底GIF 仍然是图片文件格式。

2 VxWorks 系统概述

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

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

3 WindML

3.1WindML 的系统结构和功能

WindML是基于实时嵌入式操作统的多媒体应用的支持链接库,它提供VxWorks基本的图形、视频、音频技术支持,并提供定制设备驱动的标准API接口,便于用户根据自己的硬件设备开发标准的设备驱动。它是一个代码量少、方便裁剪的提供语言接口的链接库。图1是基于VxWorks的WindML系统结构,它主要由SDK、DDK和硬件组成。其中SDK(SoftwareDevelopment Kit)是硬件无关层,它对用户应用程序提供统一的编程接口,包括图形、视频、音频和事件驱动服务器等,满足用户的基于事件驱动的多媒体应用的需要;DDK(DriverDevelopment Kit)是硬件相关层,即所谓的设备驱动程序,它与用户的硬设备相关,一般应由用户根据具体硬件定制开发,它对硬件系统层输出初始化信息、控制信息和用户应用程序的图形人机接口,对SDK层提供设备无关的标准驱动接口;硬件层一般由用户定制,以实现相应要求。


图1 WindML系统结构

3.2 WindML事件驱动机制的设计思想

3.2.1 分层模块化

WindML事件驱动机制设计成几个模块,如I/O设备驱动模块、I/O子系统处理模块、输入监测任务模块、消息分发模块等。在模块内,又按功能划分成更小的模块。同时,I/O设备驱动与I/O子系统处理模块严格处于系统的最下层,它用VxWorks系统的实时性设计来保证WindML事件的实时获取,并且上层模块可以不知道下层的实现细节。

3.2.2 任务队列化

WindML应用系统中,一定有很多任务,因此,不管是系统任务或用户任务,都采用任务队列方式管理本任务应处理的事件,以保证事件的完整性和有效性。

3.2.3 低开销强实时性

为了减小模块间的影响和保证强实时性,避免额外的拷贝操作,在实现中大量采用了指标方式,特别是在I/O子系统和消息分发模块中。

3.3 WindML事件驱动机制的实现方案

WindML是一个基于事件驱动的图形库,它采用客户/服务器模式,事件驱动的原理如图2。客户应用程序端负责窗口的绘制、窗口更新和其它用户消息的响应,每一个窗体对象均建立一个消息队列,用来接收服务器端的事件,从而进行处理。服务器端主要由一个叫“输入监测任务”的任务来集中处理。输入监控任务依靠VxWorks I/O系统和select机制来采集I/O设备的实时事件,然后将其打包(或压缩)成标准结构的事件信息。打包后的信息通过uglEventPost函数,发送到事件处理模块中,在这个模块中搜索应用程序的所有窗口的所有消息队列,判断当前事件应该由哪一个窗口的消息队列来接收,并将其发送到这个消息队列中。这样,这个客户应用程序就可以从消息队列中取出消息信息,进行相应的处理。而且,这种分层模块化机制也为用户直接以事件方式在窗口间进行通信提供了方便,只要调用uglEventPost函数即可,而不必经过其它底层模块。因此,在整个过程中,有几部分的实现非常关键,包括I/O子系统与设备I/O驱动、Select机制的实现方案、输入监测任务的实现机制、事件回调注册与事件分发处理机制等。


图2WindML 事件驱动原理图

3.3WindML 的使用

WindML 本身也具有可裁剪性和可配置性,以适应不同的应用要求。WindML 可以为在VxWorks 操作系统下开发的软件提供基本图形、视频和音频文面的操作。WindML 适用于很多种CPU,可以提供独立于硬件的代码,同时它也支持鼠标、键盘等输入设备.WindML 的主要功能有二维图形API,事件服务,区域和窗口管理,多媒体,资源管理。

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

WindML 的图形界面是以像素为单位的,一般采用配色表来选择颜色,先在配色表上配置好一种颜色的R、G、B 值,并用其在配色表中的索引值代表这种颜色。VxWorks 支持C 和C++。在WindML 的编程中,用C 和C++写的程序完全可以编译通过,但是C 语言中的printf()等函数是无法在图形界面上输出字符的,必须用WindML 提供的相应函数才行。例如,uglTextDraw(ge,x1,y1,length,text)是在屏幕上(x1, y1)处用前面已设置的字体输出英文字符串text。WindML 本身不支持中文,而在国内的应用场合,图形界面中不能显示中文往往是不符合要求的。这里可以用调用点阵字库的办法解决这样的问题。国家标准规定:汉字库分94个区,每个区有94 个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号。每个汉字在库中是以点阵字模型式存储的,一般采用16×16 点阵(32 字节)、24×24 点阵(72字节),每个点用一个二进制位(0 或1)表示,地应在屏幕上显示出来,就是相应的汉字。

由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。采用这种方法就需要有字库文件,还必须自己写一个调用字库显示汉字的函数。这样,在主程序中将需要显示的汉字用引号表示成一个字符串,调用显示汉字的函数即可。由于Tornado 中无法直接输入中文,需要在其它的编辑器中(如UltraEdit)输入汉字字符串保存后在Tornado 中打开即可。

在图形显示前,必须先调用WindML 的API 函数UglInitialize()进行初始化,然后还需要产生一个图形环境,这样才可以显示自己的图片。WindML 使用多线程和多任务,但图形的资源是一定的,为防止多线程之间产生资源冲突,需要使用互斥信号量锁定资源。WindML 中,一般在使用一组画图函数前,用UglBatchStart(gc)通过互斥信号量锁定图形上下文、图形设备及缓冲,并且隐藏光标。在画图操作完成后,再用 UglBatchEnd(gc)释放被锁定资源以被其它的画图函数所使用。

4 结束语

该软件的在VxWorks系统下的移植工作已基本实现,图形的显示与浏览基本完成。不过现在显示的图形格式为JPEG,DDS格式图形的显示和软件功能的完善正在进行中。



与人玫瑰

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

SAP(思爱普)近日发出的裁员计划,不仅涉及全球范围内约8000个职位,更是在中国区造成了近1500名正式员工和合同工不续的情况。

关键字: 软件 互联网

德国埃朗根2024年4月16日 /美通社/ -- Elektrobit 今日宣布推出 EB zoneo GatewayCore——首款支持、配置和集成现代微控制器新一代硬件加速器的软件产品,可应用于先进的汽车电子/电气架...

关键字: 汽车 软件 硬件加速 通信网络

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

业内消息,日前欧洲软件巨头SAP宣布了一项重组计划推动人工智能增长,该计划将涉及大约8000名员工的岗位调整,这些员工将被纳入自愿休假计划和内部再培训措施,即鼓励员工自愿离职或进行内部转岗。

关键字: AI 重组 软件 裁员 SAP

业内消息,国家工信部近日公布了今年前三季度我国软件和信息技术服务业的具体情况,整体运行态势平稳,软件业务收入两位数增长,利润总额保持较快增长,软件业务出口降幅收窄。

关键字: 工信部 软件

嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,以完成特定的任务。嵌入式系统的结构组成是由硬件和软件两部器、输入输出设备和总线等组件,而软件部分则包括操作系统、应用程序和驱动程序等。

关键字: 嵌入式 计算机 软件

嵌入式软件系统是现代技术中广泛应用的一种软件形式,它通常嵌入在各种设备中,如汽车、电子设备、医疗设备等。由于这些设备的功能和性能对人们的生活至关重要,因此对嵌入式软件系统进行全面而有效的测试非常重要。本文将介绍如何对嵌入...

关键字: 嵌入式 设备 软件

安全态势可控、移动安全可及、安全开发可行

关键字: 软件 软件安全 智能终端

嵌入式系统已经成为现代生活中不可或缺的一部分,它们被广泛运用于各行各业,包括智能手机、汽车、家用电器、医疗设备等。在全球嵌入式软件市场中,中国作为制造业大国,自然也扮演着重要的角色。本文将详细分析国产嵌入式软件的发展趋势...

关键字: 嵌入式系统 软件 人工智能

在众多行业的数字化转型过程中,基于硬件的数据处理加速是构建高性能、高效率智能系统的关键之处,因而市场上出现了诸如FPGA、GPU和xPU等许多通用或者面向特定应用(如NPU)的硬件加速器。尽管它们的性能和效率都高于通用处...

关键字: 软件 硬件 FPGA GPU
关闭
关闭