




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I目录 基于OpenGL的VxWorks图形用户界面开发毕业论文目录第一章 绪论11.1 背景知识介绍11.1.1 嵌入式实时系统11.1.2 图形用户界面概述21.2 国内外研究现状41.2.1 嵌入式GUI的现状41.2.2 基于VxWorks的图形解决方案51.2.3 嵌入式GUI的发展趋势71.3 课题来源和意义71.4 论文结构8第二章 VxWorks操作系统及媒体库WindML112.1 VxWorks深入研究112.1.1 VxWorks概述10112.1.2 VxWorks实时微内核1112122.2 VxWorks集成开发环境Tornado152.2.1 Tornado介绍1314152.2.2 交叉编译环境152.2.3 Tornado的组成162.3 WindML媒体库182.3.1 WindML概述16182.3.2 WindML事件服务机制192.3.3 WindML2D图形库分析192.3.4 WindML程序开发流程212.4 本章小结22第三章 OpenGL/Mesa及其在VxWorks下的移植233.1 OpenGL/Mesa233.1.1 OpenGL开发库233.1.2 OpenGL开发库结构243.1.3 Mesa库283.2 OpenGL/Mesa库的移植293.2.1 工作概述293.2.2 重要数据结构和函数的引入293.2.3 使用改进后的库313.2.4 编译Mesa库323.3 搭建虚拟开发环境333.4 本章小结35第四章 VxWorks系统GUI关键技术及实现374.1 消息驱动机制374.1.1 消息驱动机制实现原理374.1.2 消息检测任务384.1.3 事件分发任务384.2 中文显示方案394.2.1 中文显示的基本原理394.2.2 字库文件格式404.2.3 具体的实现方案424.3 窗体管理444.3.1 主窗口444.3.2 对话框454.3.3 控件464.3.4 菜单464.4 常用控件设计474.5 本章小结50第五章 工程应用和效果测试515.1 工程应用515.2 测试效果515.2.1 普通图形界面515.2.2 3D图形显示525.3 本章小结53结束语55致谢57参考文献599第一章 绪论 第一章 绪论1.1 背景知识介绍1.1.1 嵌入式实时系统在计算机技术和信息技术高速发展的今天,很多计算机已经脱离了大型机和PC的概念,广泛应用的嵌入式计算机便是其中之一。嵌入式计算机或者叫嵌入式系统,源于20世纪60年代,其定义为1:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的,用来完成一种或多种特定功能的专用计算机系统。其具有软件代码小,高度自动化,响应速度快,是软硬件的紧密结合体等特点。当前嵌入式系统呈现出巨大的市场需求,小到照相机、电冰箱、移动电话,大到舰船、汽车、卫星和火箭,涵盖了工业控制、武器系统、航空航天、消费电子等领域。工业控制、武器系统、航空航天等领域的多数嵌入式系统有一个共同的特性:对系统的响应时间有严格要求,这些系统也被称为实时系统。所谓实时,也就是“立即”“及时”的意思。在实时控制系统中,计算机通过特定的外围设备与被控对象发生联系,并对外来事件在限定的时间内做出反应。所以,其结果的正确性不仅与计算或控制的逻辑正确性有关,还与其时间特性有关。嵌入式实时操作系统(Embedded Real Time,RTOS)是实时系统的核心软件,它嵌入在目标代码中,系统复位后首先执行,它负责在硬件基础之上,为应用软件建立一个功能更为强大的运行环境,用户的其他应用程序都建立在RTOS之上,从这个意义上而言,可以认为RTOS是一个虚拟机,它比底层硬件更容易编程。RTOS最关键的部分是实时多任务内核,它的基本功能包括任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、信号量管理等,这些管理功能是通过内核服务函数形式交给用户调用的,也就是API。RTOS根据各个任务的优先级,合理地在不同任务之间分配CPU时间,从这个意义上而言,操作系统的作用是资源管理器。RTOS的引入,解决了嵌入式软件开发标准化的难题。随着嵌入式系统中软件比重不断上升、应用程序越来越大,对开发人员、应用程序接口、程序档案的组织管理成为一个大的课题,引入RTOS相当于引入了一种新的管理模式。基于RTOS开发出的程序,具有较高的可移植性,实现90以上的设备独立,一些成熟的通用程序可以作为专家库函数产品推向社会。目前国内外主要的RTOS有:美国风河公司的VxWorks,微软的WinCE,3COM公司的Palm OS和嵌入式Linux。这些嵌入式操作系统各有各的特点。1) VxWorksVxWorks是美国Wind River System公司(WRS)推出的一个实时操作系统。VxWorks是专门为嵌入式而定制的,实时性非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效。VxWorks的内核及一些系统模块可以根据需要进行定制,内核最小仅8KB,且不失其实时、多任务的系统特征。随着近年来VxWorks操作系统开发环境的完善,提供了更加友善的开发界面和更加强大的模拟环境,并且改善了图形产品开发中存在的不足,使VxWorks成为嵌入式系统中比较成熟和完善的产品。2)WindowsCEMicrosoft公司的WinCE是从Windows 95发展而来,提供给开发人员一个熟悉的开发环境,但是在内核结构的设计中并未考虑适应系统的高度可裁减性的要求,需要较大存储空间,应用程序也比较庞大,且在实时性方面较VxWorks略逊一筹。3)嵌入式Linux嵌入式Linux具有开放的源代码的优点,但是它的开放代码有很多都没有经过一个严格的测试,直接使用开放代码的BSP(Board Support Packet)会带来不稳定的问题。它和WinCE一样都是从桌面操作系统演变而成,不像VxWorks是专门为嵌入式而定制的,程序执行效率也没有VxWorks的高。4)Palm OSPalm OS是由3COM公司开发的一种嵌入式操作系统,一般只用于PDA。1.1.2 图形用户界面概述图形用户界面(Graphic User Interface),简称为GUI,是一个软件系统的图形化的前端,使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,接收用户的输入或其它系统的输入,产生图形输出,帮助用户和计算机之间进行交互。GUI的广泛流行是当今计算机技术的重大成就之一,其最重要的优势在于使用户摆脱了在命令行提示符下与操作系统进行交互的方式,用户可以仅仅通过鼠标点击来快速的熟悉程序的操作,而且由于图标、对话框的引入,使得操作更为直观、形象,这些直接给人们的生活方式带来了变革,为数字化普及做出了巨大的贡献。GUI工程是一种结合计算机科学、美学、心理学、语言学、行为学,及各商业领域需求分析的人机系统工程,强调将人、机器、环境三者作为一个系统而进行的总体设计,它充分利用硬件资源,通过合理的屏幕布局及颜色搭配,可提供清晰、直观、友好的人机界面,是连接计算机和操作者的桥梁。随着计算机软、硬件技术的不断发展,人机界面的设计已成为软件设计的重点。在软件的开发过程中,人机界面的工作量约占整个软件开发工作量的40%60%,人机界面的优劣直接关系到软件的成功和生存。这种面向客户的系统工程设计将更好的优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。GUI是计算机与其使用者之间的对话接口,是计算机系统的重组成部分,它基于硬件和操作系统之上,为用户提供丰富的图形编程接口,使其能够方便快速的编制界面友好的应用程序。虽然不同的GUI系统因为其使用场合或服务目的的不同,具体实现互有差异,但是总结起来,一般在逻辑上可以分为三个基本的层次2:用户模型、窗口模型和显示模型。如图1.1所示。桌面管理系统GUI用户模型窗口模型显示模型操作系统硬件平台图1.1 图形用户界面系统的层次结构在图1.1的框架结构中,位于最底层的是计算机硬件平台。和这些硬件密切相关的就是驱动程序,它完成诸如:初始化硬件设备,设定设备运行参数;读外部设备的数据和对设备中断的响应等。在硬件平台的上面是计算机的操作系统。大多数GUI都只能在一两种操作系统上运行,只有少数产品例外。操作系统之上的是显示模型,它决定了图形在屏幕上的基本显示方式,即用位映射图形显示各种图形对象的方式。不同的图形用户界面系统所采用的显示模型各不相同。例如大多数在UNIX之上运行的图形用户界面系统都采用X窗口作显示模型;MS-Windows则采用自己设计的图形设备接口(GDI)作显示模型。显示模型之上的是窗口模型,它确定了窗口如何在屏幕上显示和窗口的层次关系,例如菜单、对话框等。它通常包括两部分:一是编程工具,如函数集;二是对如何移动、输出和读取屏幕显示信息的说明。窗口模型之上的是用户模型,它主要包含了显示和交互特征,由此图形用户界面这一术语有时也特指用户模型。另外,用户模型也定义为图形用户界面的外观与视觉。它主要包括两部分:一是构造用户界面的工具,如工具箱和框架集,包括对高层界面构件对象的数据结构的定义和说明;二是定义在屏幕上组织各种图形对象以及这些对象之间的行为规范和协议,即每个GUI用户模型都应当说明它支持什么样的窗口和什么样的显示方式,因为定义规范和建立工具集都必须针对具体的显示模型和窗口模型。最上层的是桌面管理系统,它是在图形用户界面基础之上开发的应用程序,实现人机交互的图形化管理。它通常包括以下几个组成部分:图形化的文件管理系统、供用户使用的图标库、桌面管理机构、图标库管理机构等。1.2 国内外研究现状1.2.1 嵌入式GUI的现状随着嵌入式技术的发展,嵌入式硬件平台、操作系统、开发工具、以及应用开发组件等很多方面都取得了较大突破,嵌入式GUI系统也得到了发展,涌现出了一大批嵌入式GUI系统或者组件。目前终端系统己经开始广泛采用32位处理器芯片,配置触摸屏(或鼠标)、键盘等多种输入设备和LCD等图象显示设备,这为GUI在嵌入式系统上应用提供了基础硬件平台。目前GUI的实现方法各有不同,分别有以下几种方式3:1)某些大型厂商有能力自己开发满足自身需要的GUI系统。如VxWorks集成的UGL,ZAL等;2)某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己负责。3)采用某些比较成熟的GUI系统,比如MiniGUI、MicroWindows或者其他GUI系统。在上述手段中,第2种方法是一种临时解决方案。利用这种手段编写的程序,无法将显示逻辑和数据处理逻辑划分开来,从而导致程序结构不好,不便于调试,并导致大量的代码重复。一般认为GUI是一种类似于操作系统的基础软件,这种软件系统应该遵循一定的标准,并且应该是开放源码的自由软件,从而可以使开发商集中精力开发自己的应用程序。下面是对一些成熟GUI方案的概述:1)紧缩的X Window系统4由麻省理工学院推出的X Window系统是类UNIX系统的标准GUI。XWindow系统采用标准的客户/服务器体系结构,具有可扩展性、可移植性等优点,但该系统的庞大、累赘和低效率也是大家所共知的。为了获得应用程序的可移植性,许多厂家都试图通过对X Window系统的紧缩开发,使之能够在嵌入式系统上运行。国外已经开发出了大小约为800K的X服务器,基本能够满足嵌入式系统的需求。缺点:该系统的源代码尚不开放,从而很难进行本地化开发。2)MiniGUI5MiniGUI的主要特色有:l 提供了完备的多窗口机制。这包括:多个单独线程中运行的多窗口、单个线程中主窗口的附属、对话框和预定义的控间类(按钮、单行和多行编辑框、列表、进度条、工具栏等)。l 消息传递机制。l 多字符集和多字体支持,目前支持ISO8859-l,GB2312,Big5等字符集并且支持各种光栅字体和TrueType,Typel等矢量字体。l 全拼、五笔等汉字输入法支持。l BMP,GIF,JPEG,PCX等常见图像文件的支持。l 小巧。包括全部功能的库文件大小为300K左右。l 可配置。可根据项目需求进行定制配置和编译。l 高稳定性和高性能。MiniGUI己经在Linux发行版安装程序、CNC系统、蓝点嵌入式系统等关键应用程序中得到了实际的应用。l 可移植性好。目前,MiniGUI可以在XWindows和Linux控制台上运行。缺点:图形功能不全,应用设计比较困难。1.2.2 基于VxWorks的图形解决方案当前,VxWorks以其良好的可靠性和卓越的实时性被广泛应用于军事、航空、航天、通信等高精尖技术及实时性要求极高的领域中。随着硬件技术的不断发展,硬件资源不再是一个制约的问题,同时为了提高系统的易用性,要求我们能够开发出良好的图形界面。比较普遍使用的有以下几种678:1)VxWorks上的媒体库组件WindMLWindML是由Wind River公司提供的媒体库,其中包含的UGL组件提供了显示模式设置、标准输入输出和点线面作图等函数,是VxWorks的GUI基础。但用WindML开发图形界面效率较低,且显示效果较差,图像中的动画、三维、反走样等问题难以解决,不适宜开发高性能界面。2)WindML与Zinc结合Zinc基于WindML,提供了类似于Windows风格的控件。将两者结合,使用Zinc实现用户界面,使用UGL库函数图画实现图形文字显示。不幸的是Zinc本身存在很多BUG,并且搭建Zinc开发环境需要给WindML和Tornado打补丁,对网卡也有一定要求,所以该方案已经不再是VxWorks上图形界面开发的最佳选择。3)X Window与OSF/Motif结合X Window不依赖于特定硬件系统的图形和文字显示系统。X系统包含的Xlib库提供了建立窗口、画图、处理用户操作事件等基本功能,以Xlib库为基础又开发了Xt库。Motif是基于Xlib库和Xt库建立的更高层次的工具包,提供了交互的图形组件库,其中包括建立各种窗口组件的便利函数。4)WindML与Tilcon结合Tilcon是目前最先进的实时操作系统图形开发工具,同步支持最新版本的Tornado/VxWorks以及WindML多媒体库。Tilcon采用了最先进的图形技术,具有极高的可靠性和可维护性,还支持OPC,XML,SOAP等标准工业协议,已成功应用在医疗仪器,军用武器,工业流水线,航空/航天等领域。在资金充足的情况下,选择WindMLTilcon方案是最为稳定可靠的选择。5)OpenGL图形开发包在VxWorks系统下开发3D图形显示,多数的采用的办法都是基于OpenGL的软件开发包。各大显卡厂商,在其专业级别的显卡产品上附带了OpenGL开发包,甚至出品了自己成套的OpenGL图形显示解决方案,如ALT的GT3D Embedded Graphics Solution,这也成为目前在VxWorks下开发2D/3D图形界面的一个主要方法。随着3D技术的应用在嵌入式领域不断增多,OpenGL已经出现了独立的嵌入式技术标准OpenGL ES。针对硬件资源相对紧缺的嵌人式系统,统一标准的操作系统平台接口层EGL,仅保留OpenGL最常用的API,增加了新的特性:定点运算、字节匹配、调色板纹理。在OpenGL标准的基础上,OpenGL ES针对嵌入式系统硬件特点作了如下修改:删除了冗余的API函数,保留一个精简高效的子集;删除了实现复杂和很少使用的函数;舍去部分数据类型,加人少许数据类型;加人了定点运算(对OpenGL ES Comm支持浮点和定点运算,对OpenGL ES Comm-lite仅支持定点运算)。目前,OpenGL ES已经推出了多个特征版本,OpenGL ES 1.X 面向功能固定的硬件所设计并提供加速支持、图形质量及性能标准。OpenGL ES 2.X 则提供包括遮盖器技术在内的全可编程3D图形算法。OpenGL ES-SC 专为有高安全性需求的特殊市场精心打造。6)其他开发方案作为一个应用面非常广泛的嵌入式实时操作系统,很多厂商意识到了VxWorks下图形开发的广阔市场,纷纷推出了各种图形界面开发方案。国内的MiniGUI便是一款完善的轻量级图形用户界面支持系统。1.2.3 嵌入式GUI的发展趋势目前,伴随着各种手持、无线及嵌入式设备的迅猛发展,相应的软硬件设计也发生了很大的变化。许多设备都使用了ARM,MIPS,摩托罗拉的32位微处理器及大屏幕的液晶图形显示器。由于在过去10年中,桌面操作模式取得了巨大成功,于是许多开发者在嵌入式设计中开始使用类似于桌面的操作系统。只要是面向人机交互的嵌入式产品,就涉及到文字或者图形的输出问题,人们与信息终端交互要求以GUI系统为中心的交互式界面。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像己取得初步成效。由此可见,从应用领域的范围来看,嵌入式GUI系统的发展空间将是无比宽广的。随着虚拟现实、科学计算、可视化、多媒体技术以及硬件技术的飞速发展,嵌入式GUI将有如下几个发展方向9:1)更加高效、可靠、可定制和小巧灵活,并具有很好的跨硬件平台、跨操作系统可移植性的嵌入式GUI系统将是将来的一个重要方向。2)支持3D建模。在目前的嵌入式系统中,3D技术的应用并不常见,这与嵌入式系统的特点有很大的关系,然而,随着硬件技术的发展与市场的需求,目前,一些成熟的3D技术已经应用到了嵌入式环境中,比如OpenGL ES使用了大量的渲染技术以提供给用户调用。因此支持3D建模必将成为未来嵌入式GUI发展的一个趋势。3)智能化。精确交互技术是指能用一种技术来完全说明用户交互目的的交互方式,键盘和鼠标器均需用户精确输入。而人们的动作或思想往往并不很精确,计算机应该理解人的要求,甚至于纠正人的错误,智能化的界面也是未来嵌入式GUI的一个重要方向。4)高宽带。支持高的输入带宽,快速大批量地输入信息以及对语音、图像、姿势等的输入和理解也是今后的发展方向。1.3 课题来源和意义本论文题目来源于实习工作中所进行的“某星载仪表控制计算机”的项目。该设备采用VxWorks作为其操作系统,而本课题的目的在于选择合适的开发方案,在VxWorks环境下设计与开发一套友好的图形用户界面,能够满足在显示器上进行复杂和有实时性要求的图形信息、参数信息以及状态信息的显示,该系统另一个重要的技术要求是能提供对3D模块的支持,这就对研发人员提出了很大的挑战。VxWorks提供了一个图形开发库WindML,同时也有很多软件开发商开发了多种基于VxWorks的图形界面软件开发包,但由于这些方案中有的价格昂贵,有的不适合开发高要求的图形界面,还有的不易移植并且存在很多BUG。最终,我们选用OpenGL开发我们的图形界面,主要原因分析如下:第一:独立性和无关性。OpenGL被设计成独立于硬件,独立于窗口系统的,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,其目的是将用户从具体的硬件中解放出来,完全不用理解这些系统的结构和指令系统,只要按照规定的格式书写应用程序就可以在任何支持该语言的硬件平台上执行,是专业图形处理、科学计算等高端应用领域的标准图形库。第二:灵活性和通用性。由于OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。另外,各种流行的编程语言都可以调用OpenGL的库函数,如:C、C+、Fortran、Ada、 Java。第三:高效性。OpenGL被计算机工业界看作当前最先进的三维图形API,它提供很强的绘制二维和三维图形能力,包括基本图元、造型、着色、光照、景深、阴影、混合、动画、反走样、纹理映射、隐面消除、图像处理等绘制功能。另外,OpenGL利用显示列表概念引入了PHIGS中的层次概念,不需要包括复杂的预定义对象,设计者只需调用OpenGL的几个简单几何单元,即可建立所要求的模型,因而深得许多专业人员的喜爱。另外OpenGL顶部还设有实用程序库,支持绘制二次曲线和曲面、nurbs曲线和曲面以及其它高级图元。1.4 论文结构本文详细分析了国内外嵌入式GUI系统的发展现状,特别VxWorks系统下支持3D建模的嵌入式GUI系统的特点。OpenGL作为新一代的三维图形工业标准,以其与硬件无关性和独立性使得它有很好的跨平台能力。而Mesa3D图形库则是目前为止对OpenGL标准最完整的一个实现,本论文的一个重要的工作就是将Mesa3D移植到VxWorks系统,移植成功后,我们将结合UGL图形库为系统构建一个简单的、具有最基本功能的用户图形界面。本论文的安排如下:第一章:绪论。对嵌入式系统及其图形用户界面进行介绍。说明课题来源,国内外现状和本论文主要章节安排。第二章:VxWorks操作系统及媒体库WindML。分析了VxWorks系统及其实时微内核Wind的特性,介绍了VxWorks的集成开发环境Tornado的几个重要组件,最后详细说明风河公司提供的多媒体库WindML,对其事件服务机制、主要API和利用它开发图形等多媒体程序的详细流程。第三章:OpenGL/Mesa及其在VxWorks下的移植。介绍了当今三维图形工业标准OpenGL的开发库结构和它的一个实现版本Mesa。然后实现了本课题的两个主要任务:移植OpenGL/Mesa到VxWorks系统中,利用虚拟机搭建图形开发环境。第四章:VxWorks系统GUI关键技术详细介绍。介绍了本课题的另一个主要的任务设计并实现一个以消息驱动机制为核心的、具有中文显示功能、能创建和显示窗口及常用控件、支持3D功能的图形用户界面系统。第五章:工程应用和效果测试。介绍了本GUI系统在实际工程中的应用情况及显示效果,验证了其普通2D图形界面和3D图形显示的性能。21第二章 VxWorks操作系统及媒体库WindML第二章 VxWorks操作系统及媒体库WindML2.1 VxWorks深入研究2.1.1 VxWorks概述10VxWorks是专门为实时嵌入式系统设计开发的操作系统内核。VxWorks的出品公司美国风河公司组建于1981年,是一个专门从实时操作系统开发与生产的软件公司,该公司在实时操作系统领域被世界公认是最具有领导作用的公司。从1983年设计成功以来,VxWorks已经经过广泛的验证,成功的应用在航空、航天、舰船、通信、医疗等关键领域,如美国的F-16、FA-18战斗机、B-2隐形轰炸机、爱国者导弹上以及1997年4月在火星表面登陆的火星探路者上都使用了VxWorks。目前,VxWorks得到了许多软硬件厂家的支持,这些第三方软硬件厂家提供丰富的VxWorks的扩展组件。因此,从应用软件角度而言,VxWorks操作系统在各种CPU硬件平台上可以提供统一的接口和一致的运行特性,应用程序无需做过多的改动就可以运行在各种CPU上,为程序员提供了一致的开发、运行环境,减少了重复劳动。VxWorks操作系统是现在所有独立于处理器的实时系统中最具特色的操作系统之一。VxWorks系统运行环境支持的CPU包括:Power PC、68K、CPU32、SPARC、i960、x86、Mips等;同时支持RISC、DSP技术。支持多种硬件环境也是VxWorks得以流行的重要原因。VxWorks的微内核Wind是一个具有较高性能的、标准的嵌入式实时操作系统内核,其主要特点包括:快速多任务切换、抢占式任务调度、任务间通信手段多样化等。该内核具有任务间切换时间短、中断延迟小、网络流量大等特点,与其他嵌入式实时操作系统相比具有一定的优势。VxWorks是一种功能强大而且比较复杂的操作系统,包括了进程管理、存储管理、设备管理、文件系统管理、I/O管理、网络协议及系统应用、C+和其他标准支持等几个部分。VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。VxWorks系统具有较好的可剪裁的能力,可剪裁的组件超过80个,用户可以根据自己系统的功能目标通过交叉开发环境方便地进行配置。VxWorks支持应用程序的动态链接和动态下载,使开发者省去了每次调试都将应用程序与操作系统内核进行链接和下载的步骤,缩短了编辑调试的周期。VxWorks具有较好的兼容性。良好的兼容性,使其在不同运行环境间可以方便的移植,从而使用户在开发和培训方面所做的工作得到保护,减少了开发周期和经费。VxWorks是最早兼容POSIX1003.1b标准的嵌入式实时操作系统之一,同时也是POSIX组织的主要会员。VxWorks的TCP/IP协议栈部分在保持与BSD4.4版本的TCP/IP兼容基础上,在实时性方面有较大提高。这使得基于BSD4.4 UNIX socket的应用程序可以很方便地移植到VxWorks中去,并且网络的实时性得到提高。VxWorks还是第一个通过Windows NT测试的可以在Windows NT平台进行开发和仿真的嵌入式实时操作系统。同时支持ANSIC标准,并通过ISO 9001的认证。VxWorks体系结构图如图2.1所示。图2.1 VxWorks体系结构2.1.2 VxWorks实时微内核1112VxWorks内核(wind)的基本功能可以分为如下几大类:1)任务管理;2)事件和异步信号服务;3)信号量服务;4)消息队列服务;5)内存管理;6)中断服务程序;7)时钟管理和定时器服务;8)错误处理。其中,本课题主要用到的功能是任务管理、任务间通信和同步,下面将重点对这两方面内容进行描述。l 任务管理VxWorks实时内核Wind提供了基本的多任务环境。从表面上来看,多个任务正在同时执行,实际上,系统内核根据某一调度策略让它们交替运行。系统调度器使用任务控制块(TCB)的数据结构来管理任务调度功能。TCB用来描述一个任务,每一任务都与一个TCB关联。TCB包括了任务的当前状态、优先级、要等待的事件或资源、任务程序码的起始地址、初始堆栈指针等信息。调度器在任务最初被激活时以及从休眠态重新被激活时,要用到这些信息。此外,TCB还被用来存放任务的上下文(context)。任务的上下文就是当一个执行中的任务被停止时,所要保存的所有信息。在任务被重新执行时,必须要恢复上下文。嵌入实时系统的一个任务可有多种状态,其中最基本的状态有四种:就绪态:任务等待系统分配CPU资源;悬置态:任务需等待某些不可利用的资源而被阻塞;休眠态:如果系统不需要某一个任务工作,则这个任务处于休眠状态;延迟态:任务被延迟时所处状态。任务的状态在这几种状态中切换。内核维护每个任务的当前状态。状态迁移发生在应用程序调用内核功能服务的时候。任务被创建以后进入挂起态,需要通过特定的操作使被创建的任务进入就绪态,这一操作执行速度很快,使应用程序能够提前创建任务,并以一种快捷的方式激活该任务,如图2.2。图2.2 VxWorks任务状态的转换多任务调度须采用一种调度算法来分配CPU给就绪态任务。Wind内核采用基于优先级的抢占式调度法作为它的缺省策略,同时它也提供了轮转调度法。Wind内核划分优先级为256级(0255)。优先级0为最高优先级,优先级255为最低。当任务被创建时,系统根据给定值分配任务优先级。优先级也可以是动态的,它们能在系统运行时被用户使用系统调用taskPrioritySet()来加以改变,但不能在运行时被操作系统所改变。基于优先级的抢占式调度,它具有很多优点。这种调度方法为每个任务指定不同的优先级。没有处于悬置或休眠态的最高优先级任务将一直运行下去。当更高优先级的任务由就绪态进入运行时,系统内核立即保存当前任务的上下文,切换到更高优先级的任务。Wind内核可通过调用taskLock()和taskUnlock()来使调度器起作用和失效。当一个任务调用taskLock()使调度器失效,任务运行时没有基于优先级的抢占发生。然而,如果任务被阻塞或是悬置时,调度器从就绪队列中取出最高优先级的任务运行。当设置抢占禁止的任务解除阻塞,再次开始运行时,抢占又被禁止。这种抢占禁止防止任务的切换,但对中断处理不起作用。l 任务通信和同步机制VxWorks支持各种任务间通信机制,提供了多样的任务间通信方式,主要有如下几种:1)共享内存主要是数据的共享,任务间通信的最简单的方法,即相关的各个任务分享属于它们的地址空间的同一内存区域。所有任务都存在于单一的线性地址空间,任务间共享数据。全局变量、线性队列、环形队列、链表、指针都可被运行在不同上下文的代码所指向。2)信号量VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。针对不同类型的问题,有以下三种信号量:二进制信号量,使用最快捷、最广泛,主要用于同步或互斥;互斥信号量,主要用于优先级继承、安全删除和回溯;计数器信号量。VxWorks还提供POSIX信号量和多处理器上信号量的应用。3)消息队列和管道消息机制使用一个被各有关进程共享的消息队列,任务之间经由这个消息队列发送和接收消息。图2.3描述了任务间全双工信息传送的过程图2.3 任务间全双工信息传送管道用VxWorks的I/O系统提供一种灵活的消息传送机制,它受驱动器pipeDrv(VxWorks所提供)管理的虚拟I/O设备。任务能调用标准的I/O函数打开、读出、写入管道。当任务试图从一个空的管道中读取数据,或向一个满的管道中写入数据时,任务被阻塞。象I/O设备一样,管道有一个消息队列所没有的优势调用select(),任务等待一系列I/O设备上的数据。4)Socket和远程过程调用主要用于网络间任务消息传送,是任务间透明的网络通信。网络是VxWorks系统之间及与其它系统间通信的主要途径。VxWorks实现了与BSD4.4 TCP/IP兼容的网络协议堆栈。2.2 VxWorks集成开发环境Tornado2.2.1 Tornado介绍1314嵌入式软件开发是一种比较复杂的劳动,操作系统性能再好,仅仅依靠人工编程调试,很难发挥它的功能,要设计出可靠、高效的嵌入式系统,必须要有与之相适应的开发工具。Tornado就是为开发VxWorks应用系统提供的界面友好的图形化的集成开发环境。使用Tornado及其开发调试工具,可以轻松地编译生成BootRom,创建并配置VxWorks,编辑、编译、下载和调试代码,随时查看目标机的系统资源,帮助用户缩短开发的周期。使用Tornado IDE,可以大大缩短嵌入式系统开发周期。Tornado支持动态链接与加载,允许开发人员分别将目标模块加载到目标系统中。这种动态的链接与加载功能是Tornado系统的核心功能,可以使开发人员省去很多的开发步骤。这样,编辑测试调试的周期就大为缩短,而且所有的模块都可以共享,主机上的应用程序模块也不需要重新链接,所以,加载目标模块到运行中的VxWorks目标系统中以达到调试和重新配置成为可能。2.2.2 交叉编译环境Tornado环境采用主机目标机交叉开发模型15。交叉开发环境的建立需要宿主机和目标机共同完成,通常称所用的普通PC机为宿主机(Host),而所开发的目标设备为目标机(Target)。宿主机上运行VxWorks的开发环境Tornado,编译生成可以在目标机上运行的代码映像,交叉调试器就是通过宿主机和目标机之间的耦合实现前后台调试。要建立VxWorks的交叉开发环境,就必须在目标机上运行起VxWorks嵌入式实时操作系统。目标机运行的程序包括两部分:引导文件bootrom和系统映像文件VxWorks。引导文件bootrom的作用类似于PC机的BIOS,它可以存放在软盘、目标机硬盘或目标机flash盘上,由Vxld程序加载到内存。bootrom的作用是初始化目标机,建立VxWorks所需的运行环境,并从引导设备上加载VxWorks操作系统映像,最后将CPU的控制权移交给VxWorks操作系统。VxWorks操作系统是以映像的形式存放在bootrom所在的软盘、目标机硬盘或目标机flash盘上。如果是通过网络来建立交叉开发环境,其映像文件还可以存放在宿主机硬盘上。VxWorks是应用程序和目标代理程序(调试环境的目标机部分)运行的软件平台。Bootrom和VxWorks映像文件可以利用Tornado提供的工具,按照配置文件的有关设置自动生成。本项目中要根据目标机的硬件配置,来生成引导文件bootrom和系统映像文件VxWorks。交叉开发环境一般存在很多问题,如有限的调试通信通道,有限的目标机资源等。为了解决这些问题,Tornado使用了Target Server Agent模式,如图2.4所示。这种模式使所有主机工具可以用于各种目标机,而不必考虑目标机的资源和通信机制,这种模式还提供了Tornado图形界面的统一性和广泛适用性。Tornado还是一个开放的可扩展环境,很容易集成第三方的开发工具,也可以按自己习惯定制开发环境。图2.4 Tornado交叉编译环境2.2.3 Tornado的组成Tornado软件工具包的核心工具主要包括以下几种:调试器CrossWind、命令行界面WindShell、资源查看器Browser、模拟器Simulator等工具。1、图形化的交叉调试器这是一个远程的源代码集成调试器,支持任务级和系统级调试,支持混合源代码和汇编代码显示,支持多目标机同时调试。开发人员可以在目标运行系统上产生和调试任务,也可以将调试器和已经运行的任务链接在一起,这些任务可以是源自应用程序也可以是来自任务级调试环境。2、工程配置工具(Project Facility/Configuration)这是一个功能强大的图形化工具,可以用来对VxWorks操作系统及其组件进行自动配置。自动的依赖性分析、代码容量计算和自动裁剪大大缩短了开发周期。工程工具简化了VxWorks应用程序的组织、配置和建立工作,使工程管理和VxWorks配置的许多方面实现自动化,并且单独的组件可以各自独立开发,然后由小组的其他成员共享和重用。3、集成仿真器(Integrated Simulator)这种集成仿真器VxSim支持CrossWind、WindView和Browser,提供与真实目标机一致的调试和仿真运行环境。VxSim仿真器作为核心工具包含在各个软件包中,因而允许开发者可以在没有BSP、操作系统配置、目标机硬件的情况下,使用Tornado迅速启动开发工作。4、诊断分析工具(WindView for the Integrated Simulator)WindView是一个图形化的动态诊断和分析工具,主要是向开发者提供目标机硬件上实际运行的应用程序的许多详细情况。这种系统级的诊断分析工具可以与VxSim一起使用。5、C/C+编译环境(C/C+ Compilation Environment)Tornado提供了交叉编译器、iostreams和一系列的工具来支持C语言和C+语言。交叉编译器进行了许多优化,允许开发者能够迅速产生高效而简洁的代码。6、主机目标机连接配置器(Launcher)Tornado的主机目标机连接配置器Launcher允许开发者轻松地设置和配置一定的开发环境,也提供对开发环境的管理和许多其他管理功能。7、目标机系统状态测览器(Browser)Tornado的目标机系统测览器Browser是Tornado shell的一个图形化组件,目标机系统状态创览器Browesr的主窗口提供目标系统的全面状态总结,也允许开发者监视独立的目标系统对象:任务、信号、消息队列、内存分区、定时器、模块、变量、堆栈等。这些显示信息根据开发者的选择进行周期性或条件性更新。8、命令行执行工县(WindSh)Tornado的命令行执行工具WindSh是Tornado所独有的功能强大的命令行解释器,可以直接解释执行C语言表达式、调用目标机上的C函数、访问系统符号表中登记的变量。WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。主要的调试功能有:下载软件模块;删除软件模块;创建并发起一个任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区等);复位目标机等等。2.3 WindML媒体库2.3.1 WindML概述16利用WindML进行图形界面开发的研究是本课题一个重要的部分。WindML即Wind Media Library(Wind多媒体库),是VxWoks库的一部分,风河公司设计它主要是为了是用来提供基本的图形、视频和声频技术以及为用户提供一个开发标准用户设备驱动程序的框架。WindML的主要功能有二维图形API、事件服务、区域和窗口管理、多媒体、资源管理。其中二维图形API是最常用的部分,包括基本画图操作(画线、矩形、椭圆、多边形、点)、选择字体输出文本、位图、光标管理,批量画图操作、图形上下文、色彩管理、双缓冲。事件服务程序是用来处理输入设备的输入请求的。区域和窗口管理可以在界面上定义一个区域或多线程之间共享的窗口以供画图操作。多媒体支持NTSC、PAL、SECAM等视频制式及混频器设备的音频输出。资源管理是指资源的建立、控制和删除。并且,WindML提供了一系列工具用来处理输入设备和过程事件。正是由于WindML提供了这样基础的图形接口,因此很好地研究它是在VxWorks下进行复杂的图形界面开发不可缺少的台阶。应用程序图形、视频、音频、事件服务VxWorks输出驱动输入驱动输出设备(例如显示器)驱动(例如鼠标)SDKDDK(与硬件相关的层)硬件图2.5 WindML的层次结构WindML包括两个组件:软件开发包(Software Development Kit,SDK)和驱动程序开发包(Drive Development Kit,DDK)。SDK组件用于为各种平台开发与硬件无关的应用。它在图形、输出处理、多媒体、字体和内存管理方面提供了完整的API。DDK用于开发驱动程序,它提供了一整套可用于通用硬件配置、软件框架的参考驱动程序,以及支持开发人员从提供的“通用”代码快速创建新驱动程序的API。WindML的层次结构如图2.5所示。综上所述,WinML是本课题的GUI系统设计的基础,正是由于WindML提供了众多具有强大功能的接口,才使得在完成GUI设计的过程中,大大减少了工作量。2.3.2 WindML事件服务机制事件服务机制17的建立在整个WindML界面开发过程中占有很重要的地位。WindML组件把键盘和鼠标的输入作为事件来处理,整个的处理过程称为事件服务。通过使用uglInitialize,一个事件服务机制就被创建了。它主要完成以下三个任务:1、 从输入设备中得到原始数据,并把它封装成WindML事件;2、为了做进一步的处理(比如鼠标移动、事件路由等),它可以将WindML事件传递给事件处理部分;3、它可以传递WindML事件到应用程序队列。每个事件服务被创建时就产生一个输入任务,这个任务阻塞在与这个事件服务关联的输入设备的输入上,每个事件服务可以和多个输入设备关联,使用select函数可以同时监测多个设备的数据。当鼠标和键盘有输入时,输入任务被唤醒,它调用输入设备对应的设备驱动读取设备产生的原始数据,将数据格式化并封装成WindML事件,然后将事件传递给事件处理部分,事件处理调用应用程序安装的回调函数来处理事件,处理完后将事件放在应用程序的事件队列中。事件的处理可以单独作为一个任务,这个任务具有较低的优先级,它读取应用程序的事件队列,然后处理或通知其他的任务做出反应。键盘和鼠标的使用不需要额外的初始化,只要在WindML配置时包括普通键盘和鼠标即可,输入可以使用ANSIC的标准I/O库函数,也可以使用事件处理实现更精确的控制。具体在程序的实现中,通常会使用一个无限循环来接收事件的输入。2.3.3 WindML2D图形库分析WindML2D图形库可以分为以下几个方面18:1)绘图原语:提供了基本的画图原语包知画点、线uglLine()、矩形ug1Rectangle()、圆uglEllipse()、多边形uglPlogon()。2)文本显示与字体管理:文本可以用不同的字体来表现。用户可以通过这些函数进行字体管理,包括:应用程序需要的字体、指定的字体等等,并利用这些字体进行文本的显示,然后字体显示函数可以在显示设备上显示出对应的文本信息。如本系统中设置的英文字体和中文宋体的设置如下:uglFontFindString(fontDrvId,familyName=Courier ,&fontDef);if(fontl=uglFontCreate(fontDrvId,&fontDef) = = UGL_NULL)printf( WindML:Font not found,Exiting.n );uglDeinitialize();return; /*英文*/uglFontFindString(fontDrvId,familyName=Song,&fontDef);if(fontl=uglFontCreate(fontDrvId,&fontDef) = = UGL_NULL)printf( WindML:Font
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45994-2025信息技术大数据跨域数据可信共享参考架构
- 森林电影院课件观看
- 森林灭火战术课件
- 森林火灾警示课件
- 桥隧试验检测课件
- 2025年人力资源咨询公司面试模拟题及答案详解
- 2025电工技师考试题库及答案
- 2025年行业协会秘书长竞聘面试模拟题及答案解析
- 2025年金融机构财务岗位应聘面试技巧与预测题
- 桥梁养护知识培训总结课件
- (2025年标准)动火安全协议书
- 2026届广州市高三年级阶段训练(8月市调研摸底) 数学试卷(含答案解析)
- 动物防疫检疫试题(附答案)
- 残疾人家庭无障碍改造投标方案(技术标)
- GB/T 6913-2023锅炉用水和冷却水分析方法磷酸盐的测定
- 郑渊洁童话之《五个苹果折腾地球》
- 阿特拉斯变频无油螺杆空压机说明书
- 项目经理带班检查记录表(每周一次)
- 人卫九诊断学发热
- 《特困人员集中供养服务协议》
- 说明书hid500系列变频调速器使用说明书s1.1(1)
评论
0/150
提交评论