(计算机软件与理论专业论文)嵌入式linux下gui的设计和实现.pdf_第1页
(计算机软件与理论专业论文)嵌入式linux下gui的设计和实现.pdf_第2页
(计算机软件与理论专业论文)嵌入式linux下gui的设计和实现.pdf_第3页
(计算机软件与理论专业论文)嵌入式linux下gui的设计和实现.pdf_第4页
(计算机软件与理论专业论文)嵌入式linux下gui的设计和实现.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

, 、 r 产 t 量 at h e s i si nc o m p u t e rs o f t w a r ea n dt h e o r y 川f l l f i i f | l | i i | l | ! i | i i l ? | i l 嗍 y 18 4 2 4 3 6 d e s i g na n di m p l e m e n t a t i o n o fg u ii n e m b e d d e dl i n u x b y h o uh a o s u p e r v i s o r :a s s o c i a t er e s e a r c b e ry hk e q i n g n o r t h e a s t e r nu n i v e r s i 锣 j u n e2 0 0 8 j 。童 独创性声明 本人声明,所呈交的学位论文是在导师的指导下完成的。论文中取得 的研究成果除加以标注和致谢的地方外,不包含其他人已经发表或撰写过 的研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工 作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示诚 挚的谢意。 学位论文作者签名:彳爱1 名 日期:沁3 ) ) 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。 作者和导师同意网上交流的时间为作者获得学位后: 半年口一年口一年半口两年 学位论文作者签名:彳索i 乍 签字日期: 沁暑) 聊躲窈。笏 签字日期:) p d 艿夕7 n , 一i i d e s i g na n di m p l e m e n t a t i o no f g u ii ne m b e d d e dl i n u x a b s t r a c t w i mt l i eg r e a td e v e l o p m 饥to fc o m p u t e rh a r d w a r e 锄ds o 小) i r a r c ,a p p l i c a t i o n so fe m b e d d e d s y s t e m sa r em u c hb o o s t e d b e c a l l s eo fi t sg o o dp e r f o m l a i l c e ,l i m l 】【h a sa l s ob e e nw i d e l y a c c e p t e di i lm ee r n b e d d o ds y s t e mf i e l d a so n eo fm eg o o dh 啪a n m a c m n ei n t e l l f - a c e s , 伊印m cu s e ri n t e r f a c e ( g u i ) i sa l s 0a d o p t e dt oe 1 1 l l a l l c ei t sl i s a b i l i 哆o fe l i l b e d d e dp r o d u c t s h o w e v l i n u ) 【i t s e l 仆勰n og u i ,锄dt l l exw i n d o wh 嬲o r e i lb e e i ls e e i la sm e 嘶t i co f l o w p e r f o 衄a i l c ea n db u l kv 0 l u m e t h u s ,i tc a r u l o tb et r a n s p l 锄t e dt o 锄b e d d c dl i n u ) 【d i r e c t l y b a s e do nt h er e s e 删lo f 锄b e d d e dl i n u x ,al i n u xk e n l e l b a s e dg u i ( k g u i ) w 勰 p r e s 即t e d 觚di m p l 锄e l l t e di n 廿1 i sp a p ,h i c hi sal a y e f e ds 仃u 咖r e d 印锄d i j l go n 廿1 i s s t m c t u r e ,t l l ei t e m sw e r es t u d i o di nm u c hd e t a i li n c l u d i n gs m a l lm 锄o r ym a n a g 唧c i l t ,i n p u t a b s t r a ml a y 蓼a p | l i c sa b s 的c t1 a y m e s s a g eq u e u e ,w i n d o wm 呻a g e m e n t ,锄da p p l i c a t i o n p r o 铲猢i n g i n t e r f a c e k g u ii sd e s i 印e da n di m p l e n l e n t e d 弱a “v e rm o d u l eo fv i m a ld e v i c e ,w h i c h 啪si i l l i 肌xk e m e ls p a c ea n dc 锄b ed y i l 锄i c a l l yl o a d e da n du n l o a d e d m o - e o v i td o e sn o ta d o p t t 1 1 es i m i l a rc ss 缸1 l c h 盯eu s e di ns o m ee m b e d d e dg u ia j l dn e e dn o ti m p l e n l e n ta i l yp r o c e s so n i n e 伍c i e m i n t e r - p r o c e s sc o 删 i l u i l i c a t i o n t 1 1 e r e f o r c ,i tm a l ( e st l l es y s t e mh a v ea so r e ns e e no f l l i 班e 街c i e i l c y 趾ds m a l ls i z e ,a n dc a nb ea p p l i e di nm e d i 啪a i l dl o w g r a d e 锄b e d d e dl i n u x p r o e l u c t s 1 ( e y w o r d s :e m b e d d e ds y s t e m ;e m b e d d e dl i n u ) 【;q a p h i c a lu s e ri n t 刊沁e i i i t 东北大学硕士学位论文 目录 目录 独创性声明i 摘要i i a b s t r a c t i i i 第1 章绪论l 1 1 引言1 1 2 研究背景、内容及意义2 1 2 1 课题背景和来源。2 1 2 2 课题的研究内容2 1 2 3 课题的意义3 1 3 本文的结构安排3 第2 章嵌入式g u i 的相关研究5 2 1 嵌入式系统中的g u i 5 2 2 常见的g u i 系统的研究5 2 2 1q t e m b e d d e d 6 2 2 2n a l l o x 7 2 2 3o p e n g u l 8 2 2 4m i n i g u i 9 2 3g u i 的总体结构研究。1 1 2 3 1 独立的g u i 系统1 1 2 3 2 传统c s 结构的g u i 系统1 l 2 3 3 多线程c s 结构g u i 系统1 3 2 3 4 多进程c s 结构g u i 系统1 4 2 3 5 基于操作系统核心的g u i 系统1 4 2 4 嵌入式g u i 特点分析一1 5 2 5 小结1 6 第3 章k g u i 的设计17 3 1 功能需求l7 3 2k g u i 的总体设计1 8 3 2 1 总体实现方法l8 3 2 2k g u i 的分层结构设计1 9 一一 东北大学硕士学位论文 目录 3 3 主要模块的设计2 0 3 3 1 输入抽象层设计2 0 3 3 2 图形抽象层设计2 3 3 3 3 内存管理设计2 4 3 3 4 消息队列设计一2 6 3 3 5 窗口结构设计2 8 3 3 6 应用程序接口设计3 0 3 4 叫、结。3 2 第4 章k g u i 主要模块的实现3 3 4 1 输入抽象层的实现3 3 4 1 1 输入抽象层的初始化3 3 4 1 2 输入抽象层的事件处理3 4 4 1 3 输入抽象层的注销3 5 4 2 图形抽象层的实现3 5 4 2 1k g u i 的绘图3 5 4 2 2 任意直线的绘制一3 6 4 3 内存管理函数的实现3 9 4 4 消息队列操作的实现4 0 4 4 1 访问消息队列4 0 4 4 2k g u i 事件入队列操作一4 l 4 4 3k g u i 消息出队列操作4 2 4 4 4 使用消息队列后的应用程序结构4 4 4 4 5k g u i 输入消息一4 4 4 5 窗口管理操作的实现4 6 4 5 1 窗口的创建。4 6 4 5 2 窗口的销毁4 7 4 5 3 窗口z 序的提升和降低4 8 4 5 4 窗口的显示和隐藏4 9 4 5 5 其它的窗口操作4 9 4 6d 、结。5 0 第5 章系统测试5 l 5 1s k y e y e 模拟硬件参数5 l 5 2l i i n l ) 【的裁剪5 2 5 3k g u i 功能测试5 2 5 4 j 、结。5 4 一v 一 一v i 东北大学硕士学位论文 第l 章绪论 第1 章绪论 1 1 引言 嵌入式系统( e m b e d d e ds y s t 锄) 是以应用为中心,以计算机技术为基础、软件硬 件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系 统。从上个世纪7 0 年代单片机的出现到今天各种嵌入式微处理器、微控制器的广泛应 用,嵌入式系统已经有将近4 0 年的历史。随着计算技术、通信技术的飞速发展,特别 是互联网的迅速普及和3 c ( 计算机、通信、消费电子) 合一的加速,微型化和专业化 成为发展的新趋势,嵌入式产品逐渐成为信息产业的主流。 功能较为简单的嵌入式产品通常没有采用操作系统,它们的软件系统是单一的应用 程序,并直接运行在产品的硬件平台上。然而目前嵌入式系统发展的一个趋势是要求产 品的功能越来越多而且越来越复杂,比如很多嵌入式产品都要求有强大的联网功能和方 便易用的图形用户界面系统。在这种情况下,合理地管理和利用嵌入式系统的资源,使 用单一应用程序就显得力不从心。如果将这些复杂的功能建立在嵌入式操作系统 ( e m b e d d e do p 酬i n gs y s t e i l l ) 的基础上,将大大地减小系统开发的难度并能够保证产 品的质量。 嵌入式l i m l 】【( e m b e d d e d “姗x ) 是指嵌入式设备上采用的“n u x 操作系统,作为 嵌入式操作系统中的一个杰出代表,在嵌入式系统中得到广泛地应用。与其它的操作系 统相比,l i n l 】x 源代码免费开放,具有广泛的硬件支持特性,而且它的内核采用分层的 结构,可以方便地根据产品的需求对操作系统的功能模块进行裁剪,很适合嵌入式系统 高度定制的特点。l i n u x 作为操作系统中的一枝奇葩与各种传统的商业嵌入式操作系统 分庭抗争,越来越多的企业和研发机构也都转向嵌入式“n u ) 【的开发和研究当中,甚至 嵌入式l i n u ) 【也得到g o o 四e 等一些国际公司的重视。 图形用户界面( g u i ,g r a p h i c a lu s e ri n t e r f a c e ) 是继命令行界面( c l i ,c o m m a n dl i n e i i l t e r f a c e ) 之后提出的第二代用户界面技术,因其美观大方、简单易用的特点而深受广 大用户所喜爱。良好的用户界面将大大拉近用户和嵌入式产品的距离,使得用户能够更 快更容易地使用产品。目前市场对嵌入式设备g u i 的需求越来越大【l 】,带有功能齐全 g u i 系统的嵌入式设备如手机、p d a 、电视机顶盒( s t b ) 随处可见。 然而l i n u x 操作系统本身并没有包含一个g u i 系统,基于嵌入式l i n u 】【的飞速发展 和嵌入式产品对g u i 系统的需求,很有必要提出一种适合嵌入式“n u ) 【特点的g u i 系 统。由于嵌入式系统的资源非常有限,嵌入式g u i 不能直接完全照搬个人计算机中的 g u i 系统,而需要根据嵌入式设备的特点量身定做、重新设计,目前嵌入式g u i 是嵌 一1 一 东北大学硕士学位论文第1 章绪论 入式系统的一个重要研究领域,本文将主要在这一方向上予以研究并做出努力。 1 2 研究背景、内容及意义 1 2 1 课题背景和来源 众所周知,桌面l i n u x 操作系统发行版本通常使用xw i n d o w 作为其g u i 系统,然 而x w i n d o w 最初的开发目的是用于个人计算机和工作站的,几十兆的庞大体积及缓慢 的运行速度使得不能将其直接应用到嵌入式l i n u ) 【系统中,因此需要重新针对嵌入式 l i n u x 的特点重新设计和改进。 本课题来源于实习公司的嵌入式部门的具体项目,该项目是在嵌入式l i i l u x 操作系 统基础之上,利用j 2 m e 的a :w t 图形接口进行产品的图形用户界面开发。项目结构大 致可分为三层,最底层是运行在硬件平台的嵌入式l i i 眦操作系统,最顶层是j 2 m e 的 j a v a 虚拟机( j v m ) ,在j a v a 虚拟机( m ) 和嵌入式l i n u x 操作系统之间是一个本地 ( n a t i v e ) 代码g u i 系统支持库。g u i 系统建立在操作系统的基础上完成诸如输入事件 处理、屏幕输出等等基本功能,提供一组供j a v a 虚拟机调用的应用程序接口( a p i ) , 以最终实现j 2 m e 的a w t 图形接口。 由于整个项目比较庞大,本文仅针对项目中间层部分进行研究,主要致力于解决嵌 入式l i 加x 下g u i 系统的实现方法。 1 2 2 课题的研究内容 本文在研究嵌入式l i n u x 操作系统特点的基础上,设计并具体实现了一个基于“n u x 内核的嵌入式图形用户界面,取名为k g u i ( k 取k 锄e l 的首字母,意为基于l i n u x 内 核) 。在总体结构上k g u i 不采用一些g u i 产品类似的c s 结构,而采用一种基于操作 系统核心的g u i 结构,使得整个g u i 系统运行在操作系统的内核空间中。这种结构摒 弃了c s 结构g u i 系统效率低下的进程间通讯( i p c ) 机制,并能有效利用操作系统内 核提供的种种高级功能。 课题的研究内容主要包括以下几个方面: ( 1 ) g u i 系统中存在大量的小内存动态分配现象,频繁对较小内存块的分配和释 放操作非常耗时,而且极容易造成内存碎片化现象,极端情况下会出现大量不连续的空 闲小内存单元无法充分利用的现象。本文在设计k g u i 的过程中,考虑到这种现象对系 统性能的影响,做出了一定程度的改良。 ( 2 ) 与g u i 系统紧密相关的硬件设备主要是各种各样的输入外设以及显示输出外 设。为了屏蔽底层硬件设备的复杂性和多样性,k g u i 在操作系统之上建立图形抽象层 和输入抽象层,从而提供统一、有效的接口,增强系统的可移植能力。根据l i n u x 操作 一2 一 ,。 东北大学硕士学位论文第1 章绪论 系统特点,设计和实现这两个抽象层是本课题的重要研究内容。 ( 3 ) g u l 程序的流程不是只有一个入口和若干个出口的串行执行线路,而是程序 会一直处于一种循环状态。在这个循环当中,程序不断地接收输入事件并作出响应完成 特定的功能,这就需要一种消息事件驱动机制来处理这种复杂的程序结构。本文对消息 事件驱动机制和消息队列也做出了研究和实现。 ( 4 ) g u i 系统中最基本的元素就是窗口对象,通常嵌入式产品最终呈现给产品用 户的操作界面就是各种窗口对象的组合。设计恰当的窗口结构便于系统的开发和扩展, 本文对窗口结构设计以及对应的窗口管理操作进行了深入的研究。 ( 5 ) 运行在用户空间的进程为了完成各种操作,需要调用运行在内核空间的k g u i 功能模块,必须使用系统调用来完成用户空间和内核空间的数据交互。如果增加新的操 作系统系统调用来实现k g u i 的应用程序接口,必然使得k g u l 与某个版本的l i n u 】【内 核耦合性过大,不利于它的可移植性。恰当地设计g u i 系统的应用程序接口也是本文的 研究内容之一。 1 2 3 课题的意义 在当前嵌入式l i n u x 被广泛应用并且采用图形用户界面的嵌入式产品越来越多的情 况下,研究嵌入式l i n u x 下的g u i 系统就显得很有必要。本课题研究内容一方面可以应 用到具体项目当中,同时另一方面也提供了一种新的基于嵌入式l i n u x 的g u i 实现方法。 本文在k g u i 的设计和实现过程中对g u i 系统中一些关键技术的处理,也为嵌入式l i l l u x 下的g u i 发展做出一份努力。 虽然目前有部分g u i 产品可以运行在嵌入式l i l l u x 环境下,然而由于嵌入式平台的 复杂多样性,这些产品并不是通用的,大多数时候我们仍需重新量身定做适合我们自己 所需的g u i 产品。并且这些产品大多追求面面俱到的功能,不能充分利用平台的特点, 软件体积随之膨胀而运行效率却大打折扣。再加上商业产品的昂贵的授权费用会大大增 加嵌入式产品的成本,有时也会使我们望而却步。另外,嵌入式l i 肌x 下g u i 系统的研 究同时涉及操作系统、计算机图像学等等多个研究领域,因此它无论在应用价值或在理 论研究价值上都有着很强的意义。 1 3 本文的结构安排 本文在结构安排上共分六个章节。其中: 第一章绪论部分首先对嵌入式系统、嵌入式l i n u x 操作系统以及g u i 系统进行简单 地介绍,然后详细说明了本文的研究背景、研究内容以及课题的意义。 第二章主要通过对当前在嵌入式l i n u x 下采用较多的q 忱m b e d d e d 、n a i l o x 、 一3 一 东北大学硕士学位论文第1 章绪论 o p e i l g u i 和m i n i g u i 等g u i 系统的研究和分析,总结并提出g u i 系统的总体结构类型 以及嵌入式g u i 的特点。 第三章首先说明k g u i 的总体设计方法,随后按照k g u i 的分层结构依次对各个模 块的设计进行详细阐述。 第四章详细说明了k g u i 的输入抽象层、图形抽象层、内存管理、消息队列、窗口 管理操作等主要模块的实现方法。 第五章是k g u i 的测试部分。该章在s k y e y e 模拟器上对k g u i 进行功能方面的测 试,测试结果表明k g u i 设计的各个功能模块均能够良好运行。 总结和展望是本文的最后一章。该章总结了k g u i 的特点,并对今后的研究方向和 待改进的部分做出展望。 一4 一 东北大学硕士学位论文 第2 章嵌入式g u i 的相关研究 第2 章嵌入式g u i 的相关研究 2 1 嵌入式系统中的g i j i 近年来g u i 系统在整个嵌入式系统中的地位越来越重要,很多嵌入式产品都需要有 一个方便易用的图形界面来拉近用户和产品间的距离,从而使得非专业用户也能很快地 接受和使用产品。诸如手机、p d a 、播放器等等常见的嵌入式设备之所以被人们广泛使 用,无不得益于这些产品的良好图形用户界面。 在一些嵌入式产品中,图形用户界面被作为应用程序的一部分,没有从应用程序层 剥离出来,而由应用程序负责整个图形绘制逻辑【l6 1 。这种实现方法增加了应用程序的复 杂性,显示逻辑和数据处理逻辑无法划分开来,导致程序的结构紊乱,不便于调试,而 且还使得大量代码不断地被重复,所以它只能用作临时的解决方案。在采用操作系统的 嵌入式系统中,g u i 系统应该是一种类似于操作系统之类的基础软件,作为一个独立的 层次从应用程序中抽象出来,从而使得应用程序只需专心处理本身的逻辑结构【l5 ,1 7 】。 图2 1 是嵌入式g u i 在嵌入式系统中的层次位置,它介于操作系统及设备驱动程序 和上层应用程序之间,通过操作系统和外设驱动程序的支持得以控制和操作输入设备和 输出设备,并提供给上层应用程序一系列方便的应用程序接口( a p i ) 。上层应用程序通 过g u i 系统的支持,接收用户的输入事件,并根据应用程序的逻辑做出反馈,最终调用 g u i 系统的应用程序接口将结果输出到显示设备中。 上层应用程序 嵌入式g u l 外设驱动程序 嵌入式操作系统 图2 1 嵌入式系统中的g u i f i g 2 1g u ii n 锄b e d d e ds y s t 锄 2 2 常见的g u i 系统的研究 目前已有多种嵌入式g u i 系统,l i n u ) 【下采用较多的成熟g u i 系统主要有 q t e n l b e d d e d 、m i n i g u i 、n a n o x 、o p e l l g u i 等。这些g u i 系统,都受到xw i n d o w 设 计理念的影响,都采用了与xw i n d o w 类似的c s 结构以及良好的分层设计。下面对这 几种流行的g u i 系统做一个简单的介绍。 一5 一 东北大学硕士学位论文 第2 章嵌入式g u i 的相关研究 2 2 1o t e m b e d d e d q t e m b e d d e d ( 3 】是挪威著名的q t 库开发商1 r o l l t e c h ( 奇趣科技, h t t p :肌哪w 们l l t e c h c 0 m ) 发布的面向嵌入式系统的q t 版本。因为q t 是l e 等项目使 用的g u l 支持库,所以有许多基于q t 的xw i n d o w 程序可以非常方便地移植到 q t e m b e d d e d 版本上。 目前q t e m b e d d e d 主要广泛应用在嵌入式l i n u x 领域,而1 r o l l t e c h 在2 0 0 8 年德国 纽伦堡嵌入式系统暨应用技术世界展览会上宣布q t 跨平台开发框架新增对微软 w i n d o w sc e 操作系统的支持,这就意味着使用q t 开发的应用程序也可以轻而易举地被 部署在基于w i n d o w sc e 和w i n d o w s 的一系列移动设备上。q tw i n d o w sc e 版本作为 q t4 4 版本的一部分即将推出,这将大大推动q t e m b e d d e d 在嵌入式系统领域的应用范 围。 如图2 2 所示,q t e 瑚【b e d d e dl i m l ) 【版本建立在嵌入式l i n u x 操作系统的基础之上, 与d e s k t o p 版本一样,它也采用c l i e i l t s e r v e r 结构,并延续了q t 在x 上的强大功能, 不同之处是它在底层直接取代掉xs e r v e r 及xl i b r a r y 等等角色,将所有的功能全部整 合在一起,仅采用f r 锄e b u 蹶作为底层图形接口【2 1 。同时,它将外部输入设备抽象为键 盘和鼠标输入事件,底层接口能够支持键盘、g p m 鼠标、触摸屏以及各种用户自定义 的设备等。q t e m b e d d e d 的类库完全采用c + + 封装,得益于c + + 面向对象强大功能支持, 它的开发使用非常方便,而且它的类库接口完全兼容于同版本的q t ,使用x 下的集成 开发工具q td e s i 髓e r 可以直接开发基于q t e m b e d d e d 的u i ( 用户操作接口) 界面。另 外q t e i n b e d d e d 最为优秀的一方面是提供了丰富的控件资源,开发人员可以在其基础上 方便地搭建出特定的应用程序。 图2 2q t e m b e d d e d 结构 f i g 2 2s t l l l c t u i eo fq t e m b e d d e d t r o l l t e c h 公司基于q t e m b e d d e d 还开发了一个嵌入式的窗口环境和应用程序,q t o p i a 即q p e ( q tp a l m t o pe n v i r o n m e n t ) 。它包括全套的个人信息管理p i m ( p e r s o n a li n f o n l l a t i o n m a j l a g e m e n t ) ,如地址本、日程安排、m p e g 播放、图像显示、浏览器、e m a j l 、游戏 等功能,可以广泛用于p d a 、掌上设备、网络设施等上面。 一6 一 东北大学硕士学位论文 第2 章嵌入式g u i 的相关研究 但是,q t e m b e d d e d 还有一些问题值得开发者注意: ( 1 ) 目前,该系统采用两种条款发布,在g p l 协议下发布的免费版本与专门针对 商业应用的收费版本。使用g p l 条款,意味着其上的应用只需遵循g p l 条款,而如果 要开发商业程序,就必须向t m l l t e c h 支付昂贵的授权费用。 ( 2 ) q t e m b e d d e d 的c + + 函数库,尽管q t e m b e d d e d 声称可以裁剪到最少6 3 0 k , 但这时的q t e i n b e d d e d 函数库已经基本上失去了使用价值。 ( 3 ) 低的程序效率、大的资源消耗也对运行q t e m b e d d e d 的硬件提出了更高的要 求。q t e m b e d d c d 库目前主要针对高端的手持式信息终端,因为对硬件加速支持的匾乏, 很难应用到对图形速度、功能和效率要求较高的嵌入式系统当中,比如机项盒、游戏终 端等等。 ( 4 ) q t e m b e d d e d 提供的控件集的风格沿用了p c 风格,并不太适合许多手持设备 的操作要求。 ( 5 ) q t e m b e d d e d 的结构过于复杂,很难进行底层的扩充、定制和移植,尤其是 那个用来实现s i 印训s l o t 机制的著名的m o c 文件。 因为上述这些原因,q t e m b e d d e d 对系统的各种要素要求很高,它主要是针对高性 能手持设备和移动设备设计,同时它也是目前商业化应用最多的一款商业收费嵌入式 g u i 系统。 2 2 2n a n o x n a n o x 【4 】( h t t p :、硎眠m i c m w i n d o w s o r g ) 即原来大名鼎鼎的m i c r o w i n d o w s ,为了 避免与微软的注册商标、矾n d o w s 混淆,它于2 0 0 5 初改名为n a n o x 、m n d o ws v s t e m 。 n 觚0 x 是一个开放源码的项目,它由美国c e i l 呻s o f h v a r e 公司主持开发,其目的 是把图形视窗环境引入到运行l i n u x 的小型设备和平台上。n a i l o x 可以用很少的洲 和文件存储空间提供与xw i n d o w 系统相似的功能;允许设计者轻松加入各种显示设备、 鼠标、触摸屏和键盘等;而且它的可移植性非常好,支持i n t e l1 6 位3 2 位c p u 、m 口s r 4 0 0 0 以及基于a i 洲内核的处理器芯片。 n a i l o x 也能够在没有任何操作系统或其他图形系统的支持下运行,它能对裸显示 设备进行直接操作。这样,n 觚o x 就显得十分的小巧且便于移植到各种硬件和软件系 统上。对于l i n l l ) 【平台的嵌入式系统,n a n o x 无疑是合理的选择之一。n a i l o x 现在除 了可以运行在拥有f r 锄e b u 胁驱动的3 2 位的l i n u x 系统上,还可以运行在流行的 s v g a l i b 库上,也能运行在1 6 位的“n u ) 【e l k s 和实模式的m s d o s 上。n a i l o x 已经 有了l 、2 、4 、8 、1 6 和3 2 位像素的s c r e 吼d d v 一13 1 。n a i l o x 的图形引擎使得它能够运 行在任何支持r e a d p i x e l 、而t 印i x e l 、d r a ,h o 亿l i l l e 、d r a e r l i n e 和s e c p a l e 位e 函数的系统。 一7 一 东北大学硕士学位论文第2 章嵌入式g u i 的相关研究 所有的b i t i i l a p 、f 0 n t 、c u r s o r 和c o l o r 支持的函数都是建立在这些基本函数之上的。可以 说,n a n o x 对8 、1 5 、1 6 和3 2 位的色彩系统,以及l 、2 、4 和8 位的调色板色彩系统 都提供了支持。同时,n 雒o x 的x 1 1 耐v e r 使得n 锄o x 应用可以运行在x 、聃n d o w s d e s k t o p 上。 n a x 是一个典型的基于c l i e 州s e r v e r 体系结构的g u i 系统,同时它也采用如下 面图2 3 所示的分层结构设计方法。n a i l o x 在底层提供对屏幕、鼠标、触摸屏和键盘的 驱动。在中间层提供底层硬件的抽象接口,并进行窗口管理,而且在中间层有一个可移 植图形引擎,提供绘制线条、区域填充、绘制多边形、裁减和使用颜色模式的方法。最 高层分别提供n 锄o x 接口和e c m a a p r w ( w i i l 3 2 子集) 的a p i 。其中使用n a n 0 x 接 口的a p i 与x w i n d o w 接口兼容,但是该接口没有提供窗口管理,如窗口移动和窗口剪 切等高级功能,系统中需要首先启动n 觚0 x 的s e r v e r 程序n 锄o x s e r v e f 和窗口管理程序 n 锄o w m 。用户程序连接n a n 0 x 的s e r v e r 获得自身的窗口绘制操作。使用e c m a a p i w 编写的应用程序无需n 锄o x s e r v e r 和n a i l o w m ,可直接运行。 n a n o - xa p ie c m aa p i w w i n d o wm a n a g e m e n t h a r d w a 陀a b s t 陷c ti a y e r d i s p i a yd e v i o ei n p u td e v i c e 图2 3n a n 0 - x 结构 f i g 2 3s 仇l c t u u eo f n a l l o - x n a i l o x 提供了相对完善的图形功能和一些高级的特性,如a l p h a 混合、三维支持 和t m e 聊e 字体支持等。该系统为了提高运行速度,也改进了基于s o c k e t 套接字的x 实现模式,采用了基于消息机制的c l i e n t s e r v e r 传输机制。n a n o x 也有一些通用的窗 口控件,但其图形引擎存在许多问题,可以归纳如下: ( 1 ) 无任何硬件加速能力。 ( 2 ) 图形引擎中存在许多低效算法,同时未经任何优化。比如,在直线或者圆弧 绘图函数中,存在低效的逐点判断剪切的问题。 ( 3 ) 由于该项目缺少一组强有力的核心代码维护人员,代码质量参差不齐。而且 2 0 0 3 年n a i l o x 推出版本o 9 0 之后,直到现在该项目的发展仍处于停滞状态。 2 2 3o p e n g u i o p e i l g u i 【5 1 ( h t t p :o p e n g u i s o u r c e f o 玛e n e t ) 在l i n u x 系统上存在己经很长时间了。 最初的名字叫f a s t g l ,只支持2 5 6 色的线性显存模式,但目前也支持其它显示模式,并 一8 一 东北大学硕士学位论文 第2 章嵌入式g u i 的相关研究 且支持多种操作系统平台,比如m s d o s 、q n x 和l i n u x 等等,不过目前只支持x 8 6 硬件平台。o p e l l g u i 也分为三层:最低层是由汇编编写的快速图形引擎;中间层提供了 图形绘制a p i ,包括线条、矩形、圆弧等,并且兼容于b o r l a l l d 的b g 认p i ;第三层用 c + + 编写,提供了完整的g u i 对象集。 o l ,g u i 可以很容易集成各种输入设备系统,所有的输入可以通过应用程序的几个 简单函数调用注入到系统当中;它支持跨平台的a p i ,很容易与d i r e c t x 、o p e l l g l 、o g r e 3 d 渲染引擎配合使用;它还能够很容易地通过类继承扩展小器件( w i d g e t ) ,并且能够 通过自由形式的渲染操作以各种想象的方式旋转和缩放小器件外形;通过f r e e l 卵e2 渲 染引擎,能够实现自动缩放、像素对齐的字体;灵活的系统插件机制使得无需重新编译 程序本身就能够将自定义的小器件嵌入在应用程序当中。 由于历史悠久,o p e i l g u i 非常稳定,但是由于其内核用汇编语言实现,其内部使用 的是私有的a p i ,所以其可移植性较差,可配置性也较差,只是比较适合于基于x 8 6 平 台的实时系统。 目前o p e l l g u i 采用b s d 条款发布,这就意味着不仅可以免费获得它的源代码,而 且可以以各种方式使用这份源代码,其中就包括将其用在新产品当中,并通过出售方式 盈利。 2 2 4m i n i g u i m i l l i g u i 【6 】( h t t p :,、 m r m i n i g u i c o m ) 是根据嵌入式系统应用特点量身定做的一个 图形支持系统。它源自一个由魏永明主持和开发的自由软件项目,现由北京飞漫软件技 术有限公司维护并开展后续开发。m i n i g u i 项目的最初目标是为基于l i n u ) 【的实时嵌入 式系统提供一个轻量级的图形用户界面。该项目自1 9 9 8 年底开始到现在,历经近十年 的开发和应用过程,已比较成熟和稳定,并且在许多实际产品或项目中得到了广泛应用。 m i n i g u l 支持多运行模式,为了适应不同的操作系统运行环境,m i n i g u i 可配置成 三种运行模式:m 诚g u i 1 1 l r e a d s 、m i n i g u i p r o c e s s e s 及m i n i g u i s t a n d a l o n e 。 运行在m i m g u i 1 1 聆a d s 上的程序可以在不同的线程中建立多个窗口,但所有的窗 口在一个进程或者地址空间中运行。这种运行模式主要用来支持大多数传统意义上的嵌 入式操作系统,比如v x w b r l 【s 、t h r e a d x 、n u c l e u s 、o s e 、p s o s 、p c o s 1 i 、e c o s 等等。 当然,在“i n l 】【和c l i r n l 】【上,m i n i g u i 也能以m g u i t h r e a d s 的模式运行。 和m i n i g u i t h r e a d s 相反,m i m g u i p r o c e s s c s 上的每个程序都是单独的进程,每个 进程也可以建立多个窗口,并且实现了多进程的窗口系统。m i i l i g u i p r o c e s s 懿适合于具 有完整u n i x 特性的嵌入式操作系统,比如嵌入式“n u x 。m 埘g u i p r o c e s s e s 是在2 0 及以后版本引入的新运行模式,它是以前的m i n i g u i l i t e 模式的改进,两者不同之处在 一9 一 东北大学硕士学位论文 第2 章嵌入式g u i 的相关研究 于p r o c e s s 懿版本是个完整的多进程环境中的窗口系统,能够在同一桌面上协调来自 不同进程的窗口,而后者则没有此功能。 m i f l i g u i s t 锄d a l o n e 模式下,m i n j g u i 能够以独立任务的方式运行,既不需要多线 程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 心h i 姒的嵌入式产品中,因为各种原因而缺少线程支持,这时,就可以使用 m i i l i g u i s t 锄d a l o n e 来开发应用软件。 基于m i n j g u i 的嵌入式结构如图2 4 所示,在嵌入式操作系统和硬件设备上, m i n j g u i 加入了一个可移植层,它可将特定操作系统及底层硬件的细节隐藏起来,而上 层应用程序则无需关心底层的硬件平台输出和输入设备。现在m i i l i g u i 能够支持包含 l i n u x 在内的多种操作系统,例如斗c l i n u x 、v x w b d ! 【s 、c c o s 、p c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论