1、题(中、英文)目 基于 OpenGL的 VxWorks图形用户界面开发Research On Graphical User Interface of VxWorksBased on OpenGL作者姓名 李鹏 教授软件工程提交论文日期 年 月高级工程师代号分类号学号密级UDC 编号学校指导教师姓名职称工程领域 企业指导教师姓名职称摘要图形用户界面(GUI)是人机交互技术的重要内容,它使用图形图像信息、直观的表达方式与用户交互,使软件系统的人机界面简洁、美观、方便好用,更加人性化。目前 GUI 已经大量应用在嵌入式领域,但是大多数嵌入式 GUI 系统提供给用户的显示平面从逻辑设计上讲是二维的,最
2、大的缺点在于反映信息量小,在对真实场景进行模拟显示的时候,无法提供真实的场景数据。随着嵌入式系统硬件功能的不断提高,如何开发一款支持 3D 建模的嵌入式 GUI 已成为一个迫切的话题。本课题来源于实习工作中的“某星载仪表控制计算机” 项目,该计算机采用VxWorks 作为其操作系统,要求设计出人性化的人机界面,可以实时显示系统的相关参数数据、图形信息等,并提供对 3D 模块的支持,能够进行 3D 图形的绘制和显示。本文经过详细分析和设计,实现了将 OpenGL/Mesa3D 图形库移植到VxWorks 系统,并结合 VxWorks 内核及其多媒体库 WindML 的相关接口,开发了以消息驱动为
3、核心、具有基本窗口管理功能和仿 Windows 控件效果、支持中文界面和 3D 画面绘制显示的 GUI 系统。从工程应用和测试的效果来看,该 GUI 系统基本实现了预期功能。关键词:嵌入式系统 VxWorks 图形用户界面 OpenGL/Mesa WindMLAbstractAs an important branch of the HMI(Human-Machine Interface), GUI(Graphical User Interface)provides rich graphics modes for exchanging information with users in gra
4、phical and intuitionistic ways. GUI makes software convenient and humanistic, and has been applied in embedded fields prevalently. Most of traditional embedded GUI systems only provide 2D drawing control. It means that the show planes which are available to users are two-dimensional in logic. In the
5、 simulation of showing the real scene, the major drawback of this system is that information which is reflected is so little that can not provide true data. With the improvement of embedded systemshardwares, it has become an urgent topic how to develop an embedded GUI which supports 3D modeling. Thi
6、s issus originates from the project named “Space Instrument Control Computer“ and this computer uses VxWorks as its operating system, which request the UI is humanistic and could demonstrate the systems related parameter data, graphic and other information in real-time, and it also has the 3D graphi
7、cal function, which can be used to display and render the 3d graphics. With deeply analysis and design, this thesis finally make the OpenGL/Mesa3D library portable for the VxWorks system, and by using the WindML library containted inVxWorks System, I developed a Message-Driven oriented GUI System, w
8、hose style is windows liked and Chinese character supported. Moreover it can be used as a 3D display and rendering system. Regarding the test effect of the application, this GUI system has basically realized the anticipated function.Keyword: Embedded System VxWorks GUI OpenGL/Mesa WindML目录 I目录第一章 绪论
9、 .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 操作系统及媒体库 WindML.112.1 VxWorks 深入研究 .112.1.1 VxWorks 概述 10 .112.1.2 VxWorks 实时微内核 1112.122.2 VxWorks 集成开发环境 Tornado.152.2.1 Tornado
10、介绍 1314.152.2.2 交叉编译环境 .152.2.3 Tornado 的组成 .162.3 WindML 媒体库 .182.3.1 WindML 概述 16.182.3.2 WindML 事件服务机制 .192.3.3 WindML2D 图形库分析 .192.3.4 WindML 程序开发流程 .212.4 本章小结 .22第三章 OpenGL/Mesa 及其在 VxWorks 下的移植 .233.1 OpenGL/Mesa .233.1.1 OpenGL 开发库 .233.1.2 OpenGL 开发库结构 .243.1.3 Mesa 库 .283.2 OpenGL/Mesa 库的移
11、植 .293.2.1 工作概述 .29II 基于 OpenGL 的 VxWorks 图形用户界面开发3.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.
12、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参考文献 .59第一章 绪论 1第一章 绪论1.1 背景知识介绍1.1.1 嵌入式实时系统在计算机技术和信息技术高速发展的今天,很多计算机已经脱离了大型机和PC 的概念,广泛应用的嵌入式计算机便是其中之一。嵌入式计算机或者叫嵌入式
13、系统,源于 20 世纪 60 年代,其定义为 1:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的,用来完成一种或多种特定功能的专用计算机系统。其具有软件代码小,高度自动化,响应速度快,是软硬件的紧密结合体等特点。当前嵌入式系统呈现出巨大的市场需求,小到照相机、电冰箱、移动电话,大到舰船、汽车、卫星和火箭,涵盖了工业控制、武器系统、航空航天、消费电子等领域。工业控制、武器系统、航空航天等领域的多数嵌入式系统有一个共同的特性:对系统的响应时间有严格要求,这些系统也被称为实时系统。所谓实时,也就是“立即” “及时”的意思。在实时控制系统中,
14、计算机通过特定的外围设备与被控对象发生联系,并对外来事件在限定的时间内做出反应。所以,其结果的正确性不仅与计算或控制的逻辑正确性有关,还与其时间特性有关。嵌入式实时操作系统(Embedded Real Time,RTOS )是实时系统的核心软件,它嵌入在目标代码中,系统复位后首先执行,它负责在硬件基础之上,为应用软件建立一个功能更为强大的运行环境,用户的其他应用程序都建立在 RTOS 之上,从这个意义上而言,可以认为 RTOS 是一个虚拟机,它比底层硬件更容易编程。RTOS 最关键的部分是实时多任务内核,它的基本功能包括任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、
15、队列管理、信号量管理等,这些管理功能是通过内核服务函数形式交给用户调用的,也就是API。RTOS 根据各个任务的优先级,合理地在不同任务之间分配 CPU 时间,从这个意义上而言,操作系统的作用是资源管理器。RTOS 的引入,解决了嵌入式软件开发标准化的难题。随着嵌入式系统中软件比重不断上升、应用程序越来越大,对开发人员、应用程序接口、程序档案的组织管理成为一个大的课题,引入 RTOS 相当于引入了一种新的管理模式。基于RTOS 开发出的程序,具有较高的可移植性,实现 90以上的设备独立,一些成熟的通用程序可以作为专家库函数产品推向社会。目前国内外主要的 RTOS 有:美国风河公司的 VxWor
16、ks,微软的2 基于 OpenGL 的 VxWorks 图形用户界面开发WinCE,3COM 公司的 Palm OS 和嵌入式 Linux。这些嵌入式操作系统各有各的特点。1) VxWorksVxWorks 是美国 Wind River System 公司(WRS) 推出的一个实时操作系统。VxWorks 是专门为嵌入式而定制的,实时性非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效。VxWorks 的内核及一些系统模块可以根据需要进行定制,内核最小仅 8KB,且不失其实时、多任务的系统特征。随着近年来 VxWorks 操作系统开发环境的完善,提供了更加友善
17、的开发界面和更加强大的模拟环境,并且改善了图形产品开发中存在的不足,使VxWorks 成为嵌入式系统中比较成熟和完善的产品。2)WindowsCEMicrosoft 公司的 WinCE 是从 Windows 95 发展而来,提供给开发人员一个熟悉的开发环境,但是在内核结构的设计中并未考虑适应系统的高度可裁减性的要求,需要较大存储空间,应用程序也比较庞大,且在实时性方面较 VxWorks 略逊一筹。3)嵌入式 Linux嵌入式 Linux 具有开放的源代码的优点,但是它的开放代码有很多都没有经过一个严格的测试,直接使用开放代码的 BSP(Board Support Packet)会带来不稳定的问
18、题。它和 WinCE 一样都是从桌面操作系统演变而成,不像 VxWorks 是专门为嵌入式而定制的,程序执行效率也没有 VxWorks 的高。4)Palm OSPalm OS 是由 3COM 公司开发的一种嵌入式操作系统,一般只用于 PDA。1.1.2 图形用户界面概述图形用户界面(Graphic User Interface),简称为 GUI,是一个软件系统的图形化的前端,使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,接收用户的输入或其它系统的输入,产生图形输出,帮助用户和计算机之间进行交互。GUI 的广泛流行是当今计算机技术的重大成就之一,其最重要的优势在于使用户摆脱了在命令行提示
19、符下与操作系统进行交互的方式,用户可以仅仅通过鼠标点击来快速的熟悉程序的操作,而且由于图标、对话框的引入,使得操作更为直观、形象,这些直接给人们的生活方式带来了变革,为数字化普及做出了巨大的贡献。GUI 工程是一种结合计算机科学、美学、心理学、语言学、行为学,及各商业领域需求分析的人机系统工程,强调将人、机器、环境三者作为一个系统而进第一章 绪论 3行的总体设计,它充分利用硬件资源,通过合理的屏幕布局及颜色搭配,可提供清晰、直观、友好的人机界面,是连接计算机和操作者的桥梁。随着计算机软、硬件技术的不断发展,人机界面的设计已成为软件设计的重点。在软件的开发过程中,人机界面的工作量约占整个软件开发
20、工作量的 40%60%,人机界面的优劣直接关系到软件的成功和生存。这种面向客户的系统工程设计将更好的优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。GUI 是计算机与其使用者之间的对话接口,是计算机系统的重组成部分,它基于硬件和操作系统之上,为用户提供丰富的图形编程接口,使其能够方便快速的编制界面友好的应用程序。虽然不同的 GUI 系统因为其使用场合或服务目的的不同,具体实现互有差异,但是总结起来,一般在逻辑上可以分为三个基本的层次 2:用户模型、窗口模型和显示模型。如图 1.1 所示。桌面管理系统用户模型窗口模型显示模型操作系统硬件平
21、台图 1.1 图形用户界面系统的层次结构在图 1.1 的框架结构中,位于最底层的是计算机硬件平台。和这些硬件密切相关的就是驱动程序,它完成诸如:初始化硬件设备,设定设备运行参数;读外部设备的数据和对设备中断的响应等。在硬件平台的上面是计算机的操作系统。大多数 GUI 都只能在一两种操作系统上运行,只有少数产品例外。操作系统之上的是显示模型,它决定了图形在屏幕上的基本显示方式,即用位映射图形显示各种图形对象的方式。不同的图形用户界面系统所采用的显示模型各不相同。例如大多数在 UNIX 之上运行的图形用户界面系统都采用 X 窗口作显示模型;MS-Windows 则采用自己设计的图形设备接口(GDI
22、)作显示模型。显示模型之上的是窗口模型,它确定了窗口如何在屏幕上显示和窗口的层次关系,例如菜单、对话框等。它通常包括两部分:一是编程工具,如函数集;二是对如何移动、输出和读取屏幕显示信息的说明。窗口模型之上的是用户模型,它主要包含了显示和交互特征,由此图形用户界面这一术语有时也特指用户模型。另外,用户模型也定义为图形用户界面的外GUI4 基于 OpenGL 的 VxWorks 图形用户界面开发观与视觉。它主要包括两部分:一是构造用户界面的工具,如工具箱和框架集,包括对高层界面构件对象的数据结构的定义和说明;二是定义在屏幕上组织各种图形对象以及这些对象之间的行为规范和协议,即每个 GUI 用户模
23、型都应当说明它支持什么样的窗口和什么样的显示方式,因为定义规范和建立工具集都必须针对具体的显示模型和窗口模型。最上层的是桌面管理系统,它是在图形用户界面基础之上开发的应用程序,实现人机交互的图形化管理。它通常包括以下几个组成部分:图形化的文件管理系统、供用户使用的图标库、桌面管理机构、图标库管理机构等。1.2 国内外研究现状1.2.1 嵌入式 GUI 的现状随着嵌入式技术的发展,嵌入式硬件平台、操作系统、开发工具、以及应用开发组件等很多方面都取得了较大突破,嵌入式 GUI 系统也得到了发展,涌现出了一大批嵌入式 GUI 系统或者组件。目前终端系统己经开始广泛采用 32 位处理器芯片,配置触摸屏
24、(或鼠标) 、键盘等多种输入设备和 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 系统采用标准的客户/服务器体系结构,具有可扩展性、可移植性等优点,但该系统的庞大、累赘和低效率也是大家所共知的。为了获得应用程