




免费预览已结束,剩余38页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文) 第38页 毕业设计(论文)设计(论文)题目: 嵌入式Linux基于MiniGUI 信息终端软件开发 学生姓名: 学生学号: 专业班级: 指导老师: 院长 (系主任): 5月21日嵌入式Linux基于MiniGUI信息终端软件开发摘 要随着信息技术日新月异的发展,嵌入式系统在信息终端上的应用越来越广泛。由于嵌入式系统在硬件方面的限制,需要GUI平台具有短小精悍、可靠稳定、方便移植、可裁减等特性,因此需要一个轻量级的通用图形用户接口,提供给终端的用户使用,从而加速终端设备的普及和发展。因为MiniGUI具有轻型,占用资源少,高性能,高可靠性等特点,所以MiniGUI能够好的提供一个满足需要的开发基础平台。与此同时,随着家用电器的增多,使得人们需要一个方便的智能终端进行统一操控。本论文研究在嵌入式Linux下基于MiniGUI开发一个智能家居信息终端。本论文详细介绍了整个系统的开发过程,从交叉编译开发环境的搭建,MiniGUI库和资源文件的移植,ramdisk.gz制作,到Flash的烧制以及终端图形化界面的设计与实现。系统实现采用JXARM9-2410嵌入式开发板作硬件平台,在Linux操作系统下利用MiniGUI作为图形用户界面软件开发平台,实现智能家居系统的主界面显示、智能家居系统开关控制显示、智能家居系统定时控制显示等功能。最后,本文对智能家居终端开发进行了总结,并对需要进一步解决的问题进行了讨论。 关键词:嵌入式Linux,开发板,MiniGUI,智能家居,信息终端MiniGUI Based Embedded Linux Information Terminal Software DevelopmentABSTRACTWith the rapid development of information technology, the embedded system is more and more frequently used in information terminal. Because the embedded system has some limitations on hardware, its GUI platform should be short and pithy, reliable and steady, convenient to transplant and able to reduce, thus it needs a lightweight common graphical user interface to be provided for the terminal user. The need accelerates the popularization and development of the terminal appliance. MiniGUI have these advantages, such as take up fewer resources, high performance, high reliability, etc. So can MiniGUI meet the needs of the development platform. Meanwhile, with the increase in household appliances, we need to make an intelligent terminal for the unified control. This paper introduces with detail an information terminal software-brainpower household system which is developed on the base embedded Linux and MiniGUI.This paper introduces the development process of the system, the development environments construction of cross translation, the transplant of MiniGUI storeroom and resource, the fire of Flash, the design and realization of terminal graphical user interface.In practice, the paper adopts JXARM9-2410 embedded development board as software platform, and it also takes MiniGUI which belongs to Linux operating system as software development platform of graphical user interface, which, aims at realizing the functions of display the main interface, switch control and timing control of the brainpower household system.In the end, the paper summarizes the development of the brainpower household terminal and discusses problems which need to be solved in implementations. Key words: embedded Linux, development board, MiniGUI, brainpower household, information terminal 目录1绪论11.1 基本概念及国内外研究现状11.2 智能家居概述21.3 论文背景31.4 论文组织结构32嵌入式系统与嵌入式图形用户界面42.1 嵌入式系统与嵌入式Linux42.1.1嵌入式系统概述42.1.2嵌入式系统发展阶段42.1.3嵌入式系统的技术特点52.1.4嵌入式系统和嵌入式Linux52.1.5嵌入式Linux的特点和优点62.2 图形用户界面(GUI)72.2.1用户界面概述72.2.2图形用户界面的特点72.3 嵌入式系统下的GUI系统82.3.1图形用户界面(GUI) 在嵌入式系统中的地位82.3.2目前嵌入式系统GUI的实现方法82.3.3各种嵌入式GUI系统之比较102.4 MiniGUI的开发模式112.4.1事件驱动编程112.4.2 MiniGUI 的三种运行模式123基于JXARM9-2410平台和Linux程序开发153.1开发环境的建立及开发调试方法153.1.1开发环境的建立153.1.2开发调试方法163.2 操作系统的裁减184 MiniGUI的安装和移植204.1 MiniGUI的特点和体系结构204.1.1 MiniGUI的特点204.1.2 MiniGUI的体系结构204.2 MiniGUI的安装214.3 MiniGUI的移植224.4制作Ramdisk244.5烧写Flash255智能家居终端的设计与实现285.1 智能家居功能设计285.2 人机界面设计与实现295.2.1 主界面295.2.2 智能家居开关控制295.2.3 智能家居定时控制305.2.4 家用电器状态显示315.2.5 家用备忘录315.3 程序总体框架325.4 代码实现336 总结35致谢36参考文献371绪论1.1 基本概念及国内外研究现状随着信息技术日新月异的发展,在以计算机技术、信息通讯技术相结合的信息时代的快速发展和互联网的广泛应用的形式下,人们对信息的需求越来越大,对获取信息速度和便捷性的要求也越来越高,普通的无操作系统的终端设备己无法满足人们在信息时代对通信方式的要求。业界普遍认识到终端发展的最终结果将是3C合一,即集Computer, Communication, Consumer为一体。于是,嵌入式设备应运而生。嵌入式设备是指应用嵌入式系统应用技术设计和开发的针对具体应用背景的嵌入式计算机设备,它将操作系统和功能软件集成于计算机硬件系统之中,简单的说就是系统的应用软件与系统的硬件一体化,类似于BIOS的工作方式。由于嵌入式设备与通用计算机设备相比具有成本更低、能耗更小、可靠性更高、功能针对性更强、资源利用率更高、体积更小、重量更轻、维护使用更为方便等等众多优势,更加适合作为通信终端,近年来异军突起,己经渗透到了社会生活的各个角落。同时,由于去除了系统中不必要的部分,大大提高了系统的整体性能,并采用了专用的处理器,所以对于具体的应用,嵌入式设备的运行性能并不输给配置较高的通用计算机设备。正是基于上述众多的优点,嵌入式设备在通信行业有着极其广泛的应用前景和发展潜力。目前较成熟的应用嵌入式设备的有工业控制系统、手机、PDA、机顶盒、掌上电脑等家电信息终端设备,以及汽车上各种智能化设备、彩票售票系统等等;同时,美国及西欧一些国家也积极地从事将嵌入式设备运用于航天领域,美国已经成功地将一个运用了嵌入式系统的智能机器人用于对月球的探测研究工作。然而也正是由于嵌入式设备是针对具体的应用方案进行设计开发的,如果在嵌入式设备上使用普通PC的操作系统Windows存在较大的困难。目前嵌入式系统的应用技术主要围绕嵌入式操作系统展开研究。嵌入式操作系统,是嵌入式系统的通用软件平台,也是整个嵌入式系统的灵魂,目前比较著名的嵌入式操作系统有WindowsCE, PalmOS,VRTX, VxWorks, pSOS, QNX, Nucleus等等,此外还有一半左右的开发者使用自行开发的操作系统,而上述这些系统尽管有着能够适用于强实时、多任务开发环境,有的甚至还具有相应的功能齐全的交互开发环境等优点,但对于我国广大开发者而言,昂贵的费用以及非开源的代码是其发展的障碍。因此,国内外许多开发个人或团体纷纷投入自由软件领域,其目标就是Linux,作为自由软件,它有着开放的源代码,并遵循GPL(GNU General Public License 通用公共许可)而赋予的,免费的开发使用设置销售的权利。与此同时,Linux作为一个类Unix的网络操作系统,提供了与Unix同样优秀的稳定性、通用性和网络支持,并且提供相当广泛的硬件平台支持,使得人们可以利用Linux进行嵌入式操作系统的开发。1.2 智能家居概述随着社会经济水平的发展,现在人们的生活追求个性化、自动化,追求快节奏,追求充满乐趣的生活方式,家装要求的档次越来越高,生活家居要求一种人性化、智能化。智能电子技术在现实生活中的智能家居电子产品中得到广泛应用。而计算机网络与通讯技术的应用,给人们的家居生活带来了全新的感受。智能家居正在日渐兴起,家居智能化成为一种趋势。智能家居是IT技术(特别是计算机技术)、网络技术、自动控制技术向传统家电业渗透发展的必然结果。特别是近年来信息化的高度发展,家居智能化的需求大为增加,并最终促成了智能家居的诞生和不断完善。家庭自动化系统智能家居的主体在于家庭自动化,未来家庭自动化的主体是家电、照明等电气设备的控制,家居自动化系统是智能家居的主要发展方向。智能家居在保持了传统的居住功能的基础上,摆脱了被动模式,成为具有能动性智能化的现代工具。它不仅提供了全方位的信息交换功能,还优化了人们的生活方式和居住环境,帮助人们有效地安排时间、节约各种能源,实现了家电(如空调、热水器等)控制、照明控制、室内外遥控、窗帘自控、防盗报警、定时控制及电话远程控制、计算机控制等。智能家电是智能家居集成系统的重要组成部分,也代表着家庭智能化的一个重要发展方向。建立家居智能平台系统就是利用计算机技术、微电子技术、通信技术,通过家庭智能终端及其系统软件将家庭智能化的所有功能集成起来,使智能家居建立在一个统一的平台上1。1.3 论文背景产品与用户之间交流的增多,嵌入式图形用户界面系统在嵌入式系统中的地位日益加重,一套良好的图形用户系统可以使人机交互更加方便快捷,使嵌入式系统的功能更加强大。因此本论文选用MiniGUI开发一个良好的图形用户界面作为智能家居的终端显示,使用户能够方便快捷地对家电进行操控。1.4 论文组织结构本论文在深入研究Linux的重点是论述图形用户界面系统的设计实现以及移植过程。本文的整体结构如下:第二章介绍嵌入式系统、嵌入式Linux及嵌入式图形用户界面系统,并对主流嵌入式图形用户界面系统进行分析,最终选择MiniGUI进行研究。第三章阐述了基于JXARM9-2410平台和Linux程序开发的环境搭建。第四章介绍了MiniGUI的安装和移植过程。第五章主要说明了智能家居终端的设计与实现,以及主要的代码编写。第六章作了全文的总结,包括整个设计过程的总结,也包括自己在整个毕业设计遇到的问题的感想和学习到的东西以及今后要解决的一些问题。2嵌入式系统与嵌入式图形用户界面2.1 嵌入式系统与嵌入式Linux2.1.1嵌入式系统概述随着上世纪90年代末计算机网络的成熟发展,到21世纪人类进入了所谓的后PC时代。在这一阶段,人们开始考虑如何将客户终端设备变得更加智能化、数字化,从而使得改进后的客户终端设备轻巧便利、易于控制或具有某些特定的功能。为了实现人们在后PC时代对客户终端设备提出的新要求,嵌入式技术(Embedded Technology)提供了一种灵活、高效和高性价比的解决方案。嵌入式系统,一般被定义成以应用为中心、以计算机技术为基础、软件硬件可裁剪适应应用,对功能可靠性成本体积功耗要求严格的一种专用计算机系统。简单地说,它就是一种用于控制、监测或协助特定机器和设备正常运转的计算机。通常情况下,一套完整的嵌入式系统由嵌入式处理器、相关硬件支持设备和嵌入式软件系统组成。其中,嵌入式处理器是嵌入式系统中的核心部件,按功能和用途划分,它又可进一步细分为以下几种类型:嵌入式微控制器(Embedded Microcontroller).嵌入式微处理器(Embedded Microprocessor)和嵌入式数字信号处理器(Embedded Digital Signal Processor)2-4。2.1.2嵌入式系统发展阶段早在20世纪六十年代,嵌入式系统这一概念实际上就已存在,当时它被用于对电话交换进行控制,称为“存储式过程控制系统”(Stored Program Control System),但真正意义上的嵌入式系统出现在上世纪70年代。美国著名计算机科学家、现任全美最大健康机构Kaiser Permanente首席计算机科学主管Brian Kronstad认为,其间大致经历了以下四个发展阶段:第一阶段是以单芯片为核心的可编程控制器系统,同时具有检测、伺服、指示设备相配合的功能,这一类型的系统大部分用于专业性极强的工业控制系统中,一般没有操作系统支持,通过汇编语言对系统进行直接控制。这一阶段系统主要的特点是:结构和功能相对单一、效率较低、存储容量较小、几乎没有用户接口。第二阶段是以嵌入式中央处理器(CPU)为基础,以简单操作系统为核心的嵌入式系统。这一阶段系统的主要特点是:CPU种类繁多、通用性较弱、系统开销小、操作系统只具有低度的兼容性和扩展性、应用软件较为专业、用户界面不够友好。这种嵌入式系统的主要任务是用来控制系统负载,以及监控应用程序的运行。第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是:嵌入式操作系统能够运行于各种不同类型的处理器之上、操作系统内核精小、效率高、模块化程度高、具有文件和目录管理、支持多任务处理、支持网络操作、具有图形窗口和用户界面等功能、具有大量的应用程序接口、开发程序简单、并且嵌入式应用软件丰富,但在通用性、兼容性和扩展性方面仍不理想。第四阶段是以基于网络操作为标志的嵌入式系统,这是一个正在迅速发展的阶段。随着网络在人们生活中的地位日益重要,越来越多的应用需要采用支持网络功能的嵌入式系统,所以在嵌入式系统中使用网络操作系统将成为今后的发展趋势。2.1.3嵌入式系统的技术特点一般认为,嵌入式系统应具有高可靠性的特点,即使在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。2.1.4嵌入式系统和嵌入式Linux在嵌入式系统发展的初期,还没有出现操作系统的概念,大部分功能是用汇编语言来实现,由于这些汇编程序只能用于某一种特定的处理器,所以这种嵌入式系统的兼容性、通用性和扩展性都很差。C语言的出现使得嵌入式操作系统的开发变得简单、便捷和可靠。自从上个世纪八十年代开始,出现了各种各样的商用嵌入式操作系统,逐步形成了百家争鸣的局面,较为流行有VxWorks, pSOS, Neculeus, WindowsCE等等。在国内,嵌入式操作系统可分为两大类型:一类是自主版权的操作系统,另一类是基于Linux的操作系统。自主版权的操作系统方面,凯思集团自主研发的嵌入式操作系统HopenOS(女蜗计划)、中国科学院北京软件工程研发中心开发的CASSPDA以及浙江大学自行研发开发的嵌入式操作系统HBOS(天堂之鸟)、深圳桑夏公司推出了桑夏2000操作系统等。中软和中科红旗等已经商业化运营的公司则致力于嵌入式Linux系统的开发。其中,凯思集团的Hopen操作系统己经取得良好的市场反响:与TCL联手推出了TCL HiD;与上海天亿合作推出了网络股票机:还推出了基于Hopen OS的VOD/KTV宽频视讯转换盒和无线PDA产品方案以及联想天矶911产品和高中低阶产业应用解决方案。2.1.5嵌入式Linux的特点和优点嵌入式操作系统主要有PalmOS, Windows CE, EPOC, LinuxCE, QNX, ECOS.LYNX等,高端嵌入式系统要求许多高级的功能,如图形用户界面和网络支持,很多高端RTOS供应商已经提供了这些功能,但其价格也很高端,一般人难以接受。微软的Windows CE也有此类功能,却不具备大多数嵌入式系统要求的实时性能,而且难以移植,也曾经有人想以DOS为基础用单独的第三方工具拼凑一个系统,但这种努力将是白费。现在需要的是一个便宜、成熟并且提供高端嵌入式系统所必须特性的操作系统,嵌入式Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量。目前,嵌入式Linux系统的研发热潮正在蓬勃兴起,并且占据了很大的市场份额,除了一些传统的Linux公司(RedHat,MontaVista等)正在从事嵌入式Linux的开发和应用之外,IBM, Intel, Motorola等著名企业也开始进行嵌入式Linux的研究。在中国,以Linux为基础的嵌入式操作系统比较活跃,其中中软Linux、红旗Linux、东方Linux是业界的代表。目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux3。Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其自身的优良特性是分不开的。Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC,MOTOROLA等现有的大部分芯片。程式源码全部公开,任何人可以修改并在GM通用公共许可证(GNU General Public License)下发行,这样开发人员可以对操作系统进行定制,再也不必担心像MS windows操作系统中“咽喉”的威胁。同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux用户遇到问题时可以通过Internet网向七成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)。其强大的语言编译器gcc, g+等也可以很容易得到。不但成熟完善、而且使用方便。2.2 图形用户界面(GUI)2.2.1用户界面概述人机界面UI(User Interface)又称人机界面HCI(Human-Computer Interface)或者图形用户界面GUI(Graphical User interface),是指计算机与其使用者之间的对话接口。人机界面HCI(Human-Computer Interface)是作为计算机系统的一个重要组成部分,是计算机行业重要的研究领域。道格拉斯恩格尔巴特在60年代发明了图形用户界面。图形用户界面GUI(Graphical serine interface)的提出曾经是计算机发展史上划时代的创举,是计算机界面设计的一大突破,可以说正是这一突破才使计算机真正进入千家万户。显示在计算机屏幕上的内容在可视性方面大大改善,人们再也不用像从前一样需要记忆计算机文件的名称和路径。由于图形用户界面对于减轻电脑操作者的记忆负担以及提供了一个良好的视觉空间环境,计算机终于发展成为一种工作场所4。2.2.2图形用户界面的特点图形用户界面有以下几个主要特征:1. WIMP其中,W(Windows)指窗口,是用户或系统的一个工作区域,一个屏幕上可以有多个窗口:I(Icons)指图符,系统形象化的图形标志,易于人们隐喻和理解;M(Menu)指菜单,可供用户选择的功能提示:P(Pointing Devices)指鼠标器等,便于用户直接对屏幕对象进行操作。2. 用户模型图形用户界面采用了不少桌面办公的隐喻,使使用者共享一个直观的界面框架。由于人们熟悉办公桌面的情况,因而对计算机显示的图符的含义容易理解,诸如:文件夹、收件箱、画笔、工作簿、钥匙及时钟等。3. 直接操作过去的界面不仅需要记忆大量命令,而且需要指定操作对象的位置,如行号、空格数、x及y的坐标等。采用图形用户界面后,用户可直接对屏幕上的对象进行操作,如拖动、删除、插入以至放大和旋转等。用户执行操作后,屏幕能立即给出反馈信息或结果,因而称为“所见即所得”(what you see is what you get)。用视、点(鼠标)代替了记、击(键盘),给用户带来了方便。2.3 嵌入式系统下的GUI系统2.3.1图形用户界面(GUI) 在嵌入式系统中的地位市场需求显示,越来越多的嵌入式系统,包括PDA、机顶盒、等等系统均要求有一个高性能、高可靠的GUI的支持。随着等嵌入式产品的广泛应用,图形用户界面(GUI)广泛流行起来,是当今计算机技术的重大成就之一。它极大地方便了非专业用户的使用,因此实时嵌入式系统对GUI的需求越来越明显,而这一切均要求一个高性能,高可靠的GUI的支持。由于嵌入式系统实时性要求非常高,对GUI的要求也更高。这些系统一般不希望建立在庞大累赘的,非常消耗系统资源的操作系统和GUI上,比如Windows或X Windows,太过庞大和臃肿。这些系统对轻型GUI的需求更加突出。另外嵌入式系统又是一种定制设备,因为不同的需求,所以GUI必须是可定制的,一般嵌入式系统对GUI的基本要求包括轻型、占用资源少、高性能、高可靠性以及可配置5-7。综上所述,GUI在嵌入式系统中的地位将越来越重要。2.3.2目前嵌入式系统GUI的实现方法尽管实时嵌入式系统对GUI的需求越来越明显,但目前GUI的实现方法各不相同:1. 某些大型厂商有能力自己开发满足自身需要的GUI系统。2. 某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己来负责。3. 采用某些比较成熟的GUI系统,比如MiniGUI,Micro Windows,或者其它GUI系统。在上述的实现方法中,第2种方法是一种临时解决方案。利用这种手段编写的程序,无法将显示逻辑和数据处理逻辑划分开来,从而导致程序结构不好,不便于调试,并导致大量的代码重复。GUI是一种类似于操作系统的基础软件,这种软件系统应该遵循一定的标准,并且应该是开放源码的自由软件,从而可以让开放商集中精力开发自己的应用程序。目前在Linux之上进行(实时)嵌入式系统开发的厂商,一般选择如下几种GUI系统:精简的X Windows系统,MiniGUI ,Micro Windows,OpenGUL,QT/Embedded等。下面简单介绍这些系统。1. MiniGUI MiniGUI是由原清华大学教室魏永明先生开发,是一种专门面向嵌入式系统或者实时系统的图形用户界面支持系统。目前已经广泛应用于手持信息终端、机顶盒、工业控制系统以及工业仪表、查询终端、便携式多媒体播放机等领域。它己经成为跨操作系统的图形用户界面支持系统,可在Linux/uClinux, eCOS,VxWorks,pSoS, Threads等操作系统以及Win32平台上运行;己验证的硬件平台包括Intel x86, ARM(ARM7/ARM9/StrongARM/xScale), PowerPC,MIPS,M68K等等。MiniGUI同时也是国内最早出现的几个自由软件之一。它是面向嵌入式系统的轻量级图形用户界面支持系统。MiniGUI具有小巧、开源、跨操作系统、高效、可配置等优势。2. Micro WindowsMicro Windows是一个著名的开放源码的嵌入式GUI软件。目前由美国一家公司在主持开发。该项目的开发非常活跃,国内也有人参与了其中的开发,并编写了GB2312等字符集的支持。该项目的主要特色在于提供了比较完善的图形功能,包括一些高级的功能,比如Alpha混合,三维支持,True type字体支持等。Micro Windows提供了现代图形窗口系统的一些特性。Micro Windows API接口支持类WIN32 API,接口试图和WIN32完全兼容。它还实现了一些WIN32用户模块功能。Micro Windows采用分层设计方法,以便不同的层面能够在需要的时候改写,基本上用C语言实现。Micro Windows已经支持INTEL16位和32位CPU, MIPS R4000以及ARM芯片;但作为一个窗口系统,该项目提供的窗口处理功能还需要进一步完善,比如控件或构件的实现还很不完备,键盘和鼠标等的驱动还很不完善。3. OpenGUIOpenGUI在Linux系统上存在己经很长时间了。最初的名字叫FastGL,只支持256的线性显存模式。但目前也支持其他显示模式。这个库是用C+编写的,只提供C+接口。OpenGUI基于一个用汇编实现的X86图形内核,提供了一个高层的C/C+图形/窗口接口。OpenGUI提供了二维绘图原语、消息驱动的API及BMP文件格式支持。OpenGUI功能强大,使用方便。甚至可以实现Borland BGI风格的应用程序,或者是QT风格的窗口。OpenGUI支持鼠标和键盘事件,在LINUX上基于Frame buffer或者SVGALib实现绘图。Linux下OpenGUI也支持Mesa3D。颜色模型方面,OpenGUI已经支持8, 15, 16和32位模型。由于其基于汇编实现的内核并利用MMX指令进行了优化,OpenGUI运行 速度非常快,由于其基于汇编实现的内核并利用MMX 指令进行了优化,OpenGUI运行速度非常决,可以用UltraFast形容,它支持32位的机器,能够在MS-DOS, QNX和Linux下运行。主要用来在这些系统中开发图形应用程序和游戏。由于历史悠久,OpenGUI非常稳定。当然,也可以看出来,由于其内核用汇编实现,可移植性受到了影响。通常在驱动程序一级性能和可移植性是矛盾的,我们必须找到一个折衷。4. 紧缩的X Window系统X Window是Linux以及其他类UNIX系统的标准GUI。X Window系统采用标准的客户/服务器体系结构,具有可扩展性好、可移植性好等优点。但该系统的庞大、累赘和低效率也是大家所共知的。为了获得应用程序的可移植性,许多厂家都试图通过对X Window系统的紧缩开发,使之能够在嵌入式系统上运行。国外己经开发出了大小约为800K 的X服务器。这对西方国家来说基本能够满足嵌入式系统的需求了。但该系统的源代码尚不开放,从而很难进行本地化开发。2.3.3各种嵌入式GUI系统之比较比较上述几个面向嵌入式系统的GUI,我认为目前比较成熟,同时得到最多开发人员认可的有紧缩的X Window系统、MiniGUI、Micro Windows等系统。QT/Embedded尽管刚推出,但来势凶猛。紧缩的X Window系统其X服务器可以降低到800K 的大小,但因为X Window系统的运行还需要其他程序和库的支持,包括X窗口管理器、XLib,建立在XLib之上的GTK和QT等函数库,因此,紧缩的X Window系统在运行期间所占用的系统资源很多,加上中文显示和中文输入等本地化代码之后,系统的整体尺寸和运行时的资源消耗将进一步变大。因此,嵌入式系统的开发商往往将紧缩的X Window系统定位在机顶盒等对资源要求并不苛刻的嵌入式系统上。QT/Embedded由于移植了大量的原来基于QT的X Windows程序,提供了非常完整的嵌入式GUI解决方案,再加上Opera浏览器,可以说是一个成熟的商业软件。但是需要支付昂贵的使用费用。MiniGUI和Micro Windows均为自由软件,只是前者遵循LGPL条款,后者遵循MPL条款。这两个系统的技术路线也有所不同。MiniGUI的策略是首先建立在比较成熟的图形引擎之上,比如Svgalib和LibGGI,开发的重点在于窗口系统、图形接口之上;Micro Windows目前的开发重点则在底层的图形引擎之上,窗口系统和图形接口方面的功能还比较欠缺。举个例子来说,MiniGUI有一套用来支持多字符集和多编码的函数接口,可以支持各种常见的字符集,包括GB, BIG5, UNICODE等,而MicroWindows在多字符集的支持上尚没有统一接口。通过以上介绍,与其他嵌入式图形界面支持系统相比,MiniGUI具有以下优势:1. 小巧:2. 可配置:可根据项目需求进行定制配置和编译。3. 高稳定性和高性能:MiniGUI己经在Linux发行版安装程序、CNC系统、蓝点嵌入式系统等关键应用程序中得到了实际的应用。4. 可移植性好:目前,MiniGUI可以在X Windows和Linux控制台上运行。中科院EEOS开发组己经成功地将MiniGUI移植到了他们的POSIX兼容系统上。蓝点软件研发中心也已经成功地将MiniGUI移植带了两款基于Strong ARM的嵌入式系统上7。考虑到这几种GUI系统的特点和使用情况以及我们所做系统的特点,我们采用MiniGUI。2.4 MiniGUI的开发模式2.4.1事件驱动编程MiniGUI 是一个图形用户界面支持系统,通常的GUI 编程概念均适用于MiniGUI 编程,如窗口和事件驱动编程等。在传统的GUI 图形系统模型中,键盘和鼠标动作产生由应用程序不断轮询的事件。这些事件通常被发送到具有焦点的窗口,而应用程序把这些事件交由和该窗口相关联的例程来处理。这些窗口例程通常是由应用程序定义的,或者是某些标准例程中的一个。操作系统、其它窗口的事件处理例程和应用程序代码都可以产生事件。用于处理事件的窗口例程通常标识了某一个“窗口类”,具有相同窗口例程的窗口实例被认为是属于同一窗口类。焦点和光标的概念用于管理输入设备和输入事件的传送。鼠标光标是一个绘制在屏幕之上的小位图,指示当前的鼠标位置。以某种非破坏性的方式绘制该位图是窗口系统的责任,不过应用程序可以控制绘制哪一个位图以及是否显示该光标。应用程序还可以捕捉鼠标光标并获取光标事件,即使该光标已经超出该应用程序窗口的显示范围。键盘输入有类似的输入焦点和键盘输入插入符的概念。只有具有输入焦点的窗口才能获取键盘事件。改变窗口的焦点通常由特殊的按键组合或者鼠标光标事件完成。具有输入焦点的窗口通常绘制有一个键盘插入符。该插入符的存在、形式、位置,以及该插入符的控制完全是由窗口的事件处理例程完成的。应用程序可通过调用一些系统函数来要求重绘窗口或窗口的某一部分,这些事件通常由窗口例程来处理。2.4.2 MiniGUI 的三种运行模式在编写第一个MiniGUI 程序之前,需要了解如下事实:我们可将 MiniGUI 配置编译成三种具有不同体系架构的版本,我们称为运行模式:1. MiniGUI-Threads。运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式非常适合于大多数传统意义上的嵌入式操作系统,比如 uC/OS-II、eCos、VxWorks、pSOS 等等。当然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。2. MiniGUI-Processes。和 MiniGUI-Threads 相反,MiniGUI-Processes 上的每个程序是独立的进程,每个进程也可以建立多个窗口。MiniGUI-Processes 适合于具有完整 UNIX 特性的嵌入式操作系统,比如嵌入式 Linux 和VxWorks 6。3. MiniGUI-Standalone。这种运行模式下,MiniGUI 可以以独立进程的方式运行,既不需要多线程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux 的嵌入式产品中,因为各种原因而缺少线程库支持,这时,就可以使用 MiniGUI-Standalone 来开发应用软件。和 Linux 这样的类 UNIX 操作系统相比,一般意义上的嵌入式操作系统具有一些特殊性。举例而言,诸如 uClinux、uC/OS-II、eCos、VxWorks 等操作系统,通常运行在没有 MMU(内存管理单元,用于提供虚拟内存支持)的 CPU 上,这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,GUI 系统的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,我们可将 MiniGUI 配置成上述三种运行模式。一般而言,MiniGUI-Standalone 模式的适应面最广,可以支持几乎所有的操作系统,甚至包括类似 DOS 这样的操作系统;MiniGUI-Threads 模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或者具备完整 UNIX 特性的普通操作系统; MiniGUIProcesses模式的适用面较小,它仅适合于具备完整 UNIX 特性的普通操作系统。MiniGUI 的早期版本(即MiniGUI-Threads)采用基于POSIX 线程的消息传递和窗口管理机制,这种实现提供最大程度上的数据共享,但同时造成了MiniGUI 体系结构上的脆弱。如果某个线程因为非法的数据访问而终止运行,则整个系统都将受到影响。为了解决这个问题,使MiniGUI 更符合嵌入式 Linux 系统的应用需求,MiniGUI 从0.9.8 版本开始推出Lite运行模式。Lite 运行模式下的MiniGUI 使用嵌入式 Linux 的进程机制,从而使得MiniGUI更稳定。基于有效的客户/服务器结构,在 MiniGUI-Lite 模式下,我们可以运行多个客户进程,并且充分利用类似地址空间保护的高级性能。因此,在MiniGUI-Lite 运行模式下,基于MiniGUI 的嵌入式系统的灵活性和稳定性将得到极大的提高。举例来说, 我们可以在MiniGUI-Lite 运行模式下运行多个MiniGUI 客户进程,并且如果其中一个进程不正常终止,其他进程将不受影响。除此之外,在 MiniGUI-Lite 运行模式下,非常有利于我们集成第三方应用程序8。实际上,这就是为什么许多嵌入式设备开发商使用 Linux 作为他们的操作系统。尽管 MiniGUI-Lite 运行模式提供了多进程支持,但是它不能同时管理不同进程创建的窗口。因此,MiniGUI-Lite 运行模式根据层来区分不同进程中的窗口。这种方法适合于大多数具有低端显示设备的嵌入式设备,但是也给应用程序的开发带来了一些问题。MiniGUI V2.0.x 完全地解决了这一问题。MiniGUI-Lite 运行模式下,客户创建的窗口不是一个全局对象,也就是说,客户不知道其他人创建的窗口。然而,MiniGUI-Processes 模式下创建的窗口都是全局对象, 并且由这种模式下创建的窗口可以互相剪切。因此,MiniGUI-Processes 是 MiniGUI-Lite 的继承者。它支持具备完整 UNIX 特性的嵌入式操作系统,如 Linux 和 VxWorks 6。在MiniGUI-Processes 版本中,我们可以同时运行多个 MiniGUI 应用程序。首先我们启动一个服务器程序 mginit,然后我们可以启动其他作为客户端运行的 MiniGUI 应用程序。如果因为某种原因客户终止,服务器不会受任何影响,可以继续运行。此外,MiniGUI 提供类Win32 的API,熟悉Win32 编程的开发者可以很快地掌握MiniGUI编程的基本方法和各个API。3基于JXARM9-2410平台和Linux程序开发3.1开发环境的建立及开发调试方法3.1.1开发环境的建立按照宿主机-目标机的开发模式,开发时使用宿主机上的交叉编译、汇编及连接工具形成只能在目标板上执行的二进制代码,然后把可执行文件下载到目标机上运行。宿主机和目标板的处理器一般都不相同,我们的宿主机为Intel处理器,JXARM9-2410目标板为SAMSUNG S3C2410。进行嵌入式开发前第一步的工作就是要有一台装有指定操作系统的PC机作宿主开发机,我选择Redhat 9.0作为开发系统的宿主机PC操作系统。嵌入式开发通常要求宿主机配置有网络,支持NFS为交叉开发时mount创造条件,支持tftp服务器以便下载、烧写等等。在宿主机上建立交叉编译调试的开发环境的步骤如下:在安装Redhat9 .0宿主机上首先配置网络:ifconfig eth0 80其次配置tftp服务器:在宿主机上执行setup,选择System services,将其中的tftp一项选中(出现*表示选中),并去掉ipchains和iptables两项服务(即去掉它们前面的*号)。然后还要选择Firewall configuration,选中No firewall.最后,退出setup,执行如下命令以启动TFTP服务:service xinetd restart.最后配置NFS:执行setup ,弹出菜单界面后,选中:System services,回车进入系统服务选项菜单,在其中选中*nfs,然后退出setup界面返回到命令提示符下。$vim /etc/exports将这个默认的空文件修改为只有如下一行内容/(rw) ,然后保存退出(:wq),然后执行如下命令:/etc/init.d/nfs restart将附带的光盘插入CDROM,然后执行以下命令:$mount /dev/cdrom /mnt $cd /mnt:进入mount后的目录$cd linux:$./linuxinstall:执行脚本文件linuxinstall,该程序将自动安装编译器,Linux源代码,在安装之前请确保已经建立cvtech用户名,并保证以root登陆。如果一切正常,将得到编译结果,在/tftpboot/目录下将产生zImage文件,该文件为Linux映像,然后通过bootloader下载到JXARM9-2410中运行9。3.1.2开发调试方法常用的开发调试方法总体上有两种:1. 先在宿主机上调试通过后,再移植到目标板上:移植的工作包括两个方面:一个是函数库的问题。在程序移植时可能会有函数未定义的问题.对于这种问题,一般要求开发者自己编制这些要用到却又未定义的函数。另一个是要修改Makefile以选择适合目标板的编译工具。2. 直接在目标板上进行开发:图3.1 标准开发配置连接方法将宿主机和目标板按照图3-1标准开发配置连接方式连接起来,这种调试方式充分利用Linux操作系统支持NFS(网络文件系统)的优势,在宿主PC机上运行minicom标板的显示终端,在目标板上通过NFS系统mount宿主机硬盘,把宿主机硬盘作为目标机的一个目录,这样程序的运行环境就是开发板上的运行环境,相当于应用程序直接运行在目标板上进行调试。这种开发调试方式的优点是节省了各种仿真调试器等额外的硬件设备,极大的降低了初期的资金投入量,但却不能拥有单步运行,跟踪,断点设置,寄存器查看等高级调试功能,而只能通过打印串口进行调试,给调试带来了一些不便。我们采用了这种方法,下面是这种开发模式下的开发流程:见图3.2 Linux下的应用程序全部都是用C代码开发的。用C代码开发应用程序,首先遇到的问题就是C库的问题,对于Linux而言,就和Redhat Linux这种JXARM9-2410这种有MMU的处理器平台上的PC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洗衣粉制造工异常处理考核试卷及答案
- 反应香精配制工招聘考核试卷及答案
- 豆制品制作工技能操作考核试卷及答案
- 城市轨道交通设备调度员成本控制考核试卷及答案
- 中药质检员知识考核试卷及答案
- 广东省高中化学 1.1 认识有机化学 第三课时 认识有机化学说课稿 鲁科版选修5
- 工业气体液化工前沿技术考核试卷及答案
- 线条材料产品应用规范分析报告
- 农艺工数字化技能考核试卷及答案
- 机制地毯制作工岗位操作规程考核试卷及答案
- 皮纹分析师培训
- 起重机械操作规程(4篇)
- 初级关务水平测试题库500题(含答案)
- 医疗设备应急管理与替代程序
- DB62-T 4913.1-2024温室气体排放核算方法与报告指南 第1部分:污水处理厂
- 手印鉴定书模板
- DB11T 065-2022 电气防火检测技术规范
- 人教版八年级历史上册第一次月考试题(附答案)第一单元
- 基本不等式课件-高三数学一轮复习
- DL∕T 2568-2022 电力行业数字化审计平台功能构件与技术要求
- 部编人教版《道德与法治》六年级上册第9课《知法守法 依法维权》精美课件(第1课时)
评论
0/150
提交评论