(计算机应用技术专业论文)基于多线程的嵌入式gui的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于多线程的嵌入式gui的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于多线程的嵌入式gui的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于多线程的嵌入式gui的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于多线程的嵌入式gui的设计与实现.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(计算机应用技术专业论文)基于多线程的嵌入式gui的设计与实现.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第f 页 摘要 图形用户界面( g u i ,g r a p h i c a lu s c ri n t e r f a c e ) 以丰富的图形图像信息、 简洁的操作方式与用户交互。随着嵌入式系统的广泛应用,高端消费类电子 产品的已经迅速普及,而同时也要求这些设备拥有华丽美观、易于操作的 g u i 系统。嵌入式图形用户界面作为嵌入式设备与使用者之间的交互接口, 它不仅能够显示系统信息,而且能够简化操作。让用户无需过多的培训就可 以使用该设备,它在嵌入式系统中的地位将越来越重要。 由于嵌入式系统的实时性要求非常高,对g ui 系统的要求也更高。这些 系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和g u i 之 上,这样,这些系统对实时、轻型g u i 的需求更加突出。嵌入式系统对g u i 的基本要求应包括轻型、占用资源少、高可靠性及可移植性。 为了向应用软件( 如浏览器、播放器等) 提供图形界面编程的功能接口, 本文首先在深入分析了多种主流嵌入式g u i 系统体系结构和实现原理的基础 上,并通过使用如有效的隔离数据和代码、回调函数机制和面向对象技术等 多种设计模式,提出了一个支持多线程嵌入式g u i 系统( n g u i ) 的设计思想和 设计原理。然后对体系结构中的各核心机制模块包括驱动抽象、消息机制、 多线程工作模式、剪贴域算法等进行了详细的研究与实现,并针对其中许多 问题提出了新的解决方案和优化算法。最后对系统进行了移植和测试,并介 绍了一个n g u i 系统的应用实例。结果证明,n g u i 系统能够很好地支持多线 程,且具有完善的功能、良好的可靠性和移植性。 关键词:嵌入式系统;图形用户界面;多线程;消息机制;剪贴域 西南交通大学硕士研究生学位论文 第11 页 蔓舅- - _ i = - - i - -_ _ 鼻i i iii i 曼曼舅曼曼 a bs trac t g r a p h i c a l u s e r i n t e r f a c e ( g u i ) e x c h a n g e si n f o r m a t i o n w i t hu s e r si n g r a p h i c a la n ds i m p l ew a y s w i t ht h ew i d e l yu s e do fe m b e d d e ds y s t e m s ,h i g h - e n d c o n s u m e re l e c t r o n i c sp r o d u c t sh a sr i s e ni np o p u l a r i t y , b u tt h e s ed e v i c e sa l s o r e q u i r e sab e a u t i f u la n de a s yo p e r a t i o ng u is y s t e m e m b e d d e dg r a p h i c a lu s e r i n t e r f a c ea st h ei n t e r a c t i v ei n t e r a c t i o nb e t w e e ne m b e d d e dd e v i c ea n du s e r s i ti s n o to n l yd i s p l a ys y s t e mi n f o r m a t i o n ,b u ta l s os i m p l i f yt h eo p e r a t i o n s ou s e r s c a n u s et h ed e v i c ew i t hn o tt o om u c ht r a i n i n g ,i tw i l lb ei n c r e a s i n g l yi m p o r t a n t i nt h ee m b e d d e ds y s t e m a st h er e a l t i m er e q u i r e m e n t so fe m b e d d e ds y s t e m s ,t h eg u is y s t e m r e q u i r e sh i g h e rr e a l t i m e t h e s es y s t e m sg e n e r a l l yd on o tw a n tt ob u i l do nt h e o p e r a t i n gs y s t e ma n dg u l w i t hh u g ec u m b e r s o m ea n ds y s t e mr e s o u r c e s ,s ot h e s e s y s t e m sd e m a n d s ar e a l - t i m ea n dl i g h tg u i t h eb a s i cr e q u i r e m e n to ft h e e m b e d d e dg u is h o u l di n c l u d el i g h t ,t a k eu pl e s sr e s o u r c e s ,h i g hr e l i a b i l i t ya n d p o r t a b i l i t y i no r d e rt op r o v i d ea p p l i c a t i o ns o f t w a r e ( s u c ha sb r o w s e r ,p l a y e r ,e t c ) g r a p h i c a lf u n c t i o ni n t e r f a c e i nt h i sd i s s e r t a t i o n ,f i r s t l y ,o nt h eb a s eo fa n a l y z i n g o fav a r i e t yo fm a i n s t r e a me m b e d d e dg u is y s t e m sa r c h i t e c t u r e sa n dd e s i g n p r i n c i p l e s ,a n dt h r o u g ht h eu s eo fd e s i g np a t t e r n ,s u c ha si s o l a t ed a t aa n dc o d e e f f e c t i v e l y ,t h ec a l l b a c kf u n c t i o nm e c h a n i s m ,o b j e c t o r i e n t e dt e c h n o l o g ya n d a l s o ,a na r c h i t e c t u r ea n dad e s i g np r i n c i p l e so fm u l t i t h r e a d e de m b e d d e dg u i s y s t e m ( n g u i ) i sp r o p o s e d t h e nt h es y s t e ms t r u c t u r eo ft h ec o r em o d u l e s i n c l u d i n gt h ed r i v e ra b s t r a c t ,m e s s a g em e c h a n i s m ,m u l t i t h r e a d e dm o d e ,t h e c l i p r e g i o na l g o r i t h ma r ed i s c u s s e da n da n a l y z e d ,a n df o rm a n yo ft h e man e w s o l u t i o na n do p t i m i z a t i o na l g o r i t h ma r ep r e s e n t e d f i n a l l y ,t h et r a n s p l a n t i n ga n dt e s t i n gi sp r o p o s e d ,a n di n t r o d u c e dan g u i s y s t e ma p p l i c a t i o ne x a m p l e s t h er e s u l t ss h o w e dt h a tn g u ic a ns u p p o r t m u l t i t h r e a d i n g ,a n dh a sp e r f e c tf e a t u r e s ,g o o dr e l i a b i l i t ya n dp o r t a b i l i t y k e y w o r d s :e m b e d d e ds y s t e m ;g r a p h i c a l u s e r i n t e r f a c e ;m u l t i t h r e a d i n g ; m e s s a g em e c h a n i s m ;c l i p - r e g i o n 西南交通大学 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部 门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权西南交通大学可以将 本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复印手段保 存和汇编本学位论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密z 使用本授权书。 ( 请在以上方框内打“v ”) 学位论文作者签名:褊多工舟 指导老师签名: 日期:加,口、占j 弓 幸匆斌 日期:lo 6 。l 弓 西南交通大学硕士学位论文主要工作( 贡献) 声明 本人在学位论文中所做的主要工作或贡献如下: 1 ) 对当前主流的嵌入式g u i 系统的特点和实现方法进行了一定的研究, 尤其是对其实现过程中的几项关键技术如帧缓存、消息驱动机制、窗 口管理和设备驱动等进行了详细分析。 2 ) 提出了n g u i 系统的体系结构和设计模型。针对嵌入式g u i 系统需要 高效、易用和可扩展性等特点,采用了层次化、模块化和面向对象等 多种设计思想。 3 ) n g u i 的关键模块设计和实现。对核心模块中的设计方法、重要的数据 结构、工作原理和具体实现等进行了深入阐述。 4 ) n g u i 的移植和应用。简述n g u i 移植的基本思想和流程,体现了它的 可移植性,并简要介绍了它的功能和应用情况。 5 ) 最后总结了本课题完成的工作并给出了下一步的工作展望。 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作 所得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均己在文中作了明确说明。本人完全了解违反上述声明所引起的一切法律责 任将由本人承担。 学位论文作者签名: 编专【丹 b 凝:伽占。l 弓 西南交通大学硕士研究生学位论文第1 页 1 1 课题的研究背景 第1 章绪论 后p c 时代的到来,使得人们开始越来越多地接触到嵌入式系统的概念【l 】。 现在,嵌入式产品已经在很多领域得到广泛应用,如国防、工业控制、通信、 办公室自动化和消费电子领域等【2 】。在嵌入式产品开发中,除操作系统之外, 开发人员关注最多的另外一个系统软件组件尤其是图形支持系统。 图形用户界面( g u i ,g r a p h i c a lu s e ri n t e r f a c e ) 作为人机交互技术的重要 内容,以丰富的图形图像信息、直观的表达方式与用户交互,这样的软件系统 简洁、美观、方便好用,更加人性化,已经被越来越多的领域所采用 2 】。嵌入 式图形用户界面( e m b e d e dg u i ) 就是在嵌入式系统中为特定的硬件设备或环 境而设计的图形用户界面系统。与通用系统相比,嵌入式系统普遍存在处理器 运行速度慢,内存容量小等局限,所以嵌入式系统对图形界面的基本要求是系 统结构简洁,占用的资源较少;使用模块结构,便于移植和定制且在某些应用 场合应具备实时性,以适应系统硬件资源有限的条件【3 】。嵌入式图形用户界面 为嵌入式系统提供了一种应用于特殊场合的人机交互接口。近来的市场需求显 示:越来越多的嵌入式系统,包括p d a ,机项盒,便携式d v d v c d 播放机, w a p 手机等,均要求实现诸如w a p 浏览器、3 g 应用、多媒体播放、甚至j a v a 虚拟机的功能,而实现这些目标都离不开高效,易于操作的图形用户界面的支 持【4 1 。 图形用户界面的性能将直接影响整个系统的性能,是产品制造商和最终用 户共同关注的问题。完善的图形用户界面不仅可以表示丰富的内容,而且具有 多种表达方式,己经成为现代终端系统和嵌入式系统的重要组成部分,也是当 今主流的人机界面。但是,由于越来越多的嵌入式系统对实时性要求越来越高, 在出现众多强大的r t o s 系统之后,许多控制系统开始采用这些r t o s 作为软 件平台,如v x w o r k s ,r t - l i n u x ,d e l t a o s ,r t a i 等,由于其面向的硬件平台 仍然变化较大,往往会根据应用进行定制【5 】。在一些新领域中,嵌入式系统面 临着和以往不同的需求和环境。新的要求包括:系统具备精干高效的嵌入式实 时操作系统内核,并且具有良好的扩展性性;提供轻型、高性能、友好的嵌入 式g u i 系统并具有显示实时性;更重要的是能够为后续应用程序的开发提供方 西南交通大学硕士研究生学位论文第2 页 便可靠的程序接口。 从技术层面来看,在嵌入式系统上的g u i 系统开发,不像p c 平台上的开 发那么简单和方便。是因为操作系统提供的底层机制有限,二是因为设备的 可用资源有限( c p u 频率大小、所分配的存储空间等) 。这样,为各类实时嵌入 式操作系统以及不同硬件配置的嵌入式产品提供功能完备、且又适合嵌入式产 品特点的g u i 系统,存在着诸多技术挑战。传统的简单嵌入式g u i 系统已经 不能满足高速发展的应用需求,新型的嵌入式g u i 系统,必须是体积小、消 耗资源少、可靠性高、并具有跨硬件平台、跨操作系统的可移植性 16 1 。 在嵌入式的应用环境中,往往对系统的实时性要求较高,要求在指定的响 应时间之内完成相应的任务,否则就会发生灾难【1 7 】。嵌入式g u i 系统面临着 同样的要求,即需要g u i 能够比较及时的反映用户输入与状态的变化( 尤其是 在一些实时监控领域) 。一旦程序中出现某个比较耗时的操作,则直接导致整 个系统响应迟缓甚至崩溃。综上所述,g u i 在嵌入式实时系统中的地位将越来 越重要。 尽管实时嵌入式系统对g u i 的需求越来越明显,但目前g u i 的实现方法各 有不同,主要有以下几点: 开发满足自身需求的g u i 系统,它能有利于提高系统性能。 某些厂商没有将g u i 作为一个软件从应用程序中剥离,g u i 的支持逻 辑由应用程序来负责。 采用某些比较成熟的g u i 系统,比如m i n i g u i 、q t e m b e d d e d 或其他 g u i 系统,但需要昂贵的授权费用。 1 。2 国内外现状分析 g u i 系统在嵌入式系统上的发展,与在桌面系统的发展类似,基本上是一 个从无到有、从字符界面到使用图形图象交互的过程,早期的工控系统基本没 有用户界面,或者仅仅靠简单的文字信息和l e d 显示与用户进行交互【6 】。随 着嵌入式技术的发展,嵌入式软硬件系统均取得了较大的进步。嵌入式g u i 系 统也得到了发展,涌现出了一大批嵌入式g u i 系统或者组件。目前终端系统 己经开始广泛采用3 2 位处理器芯片,配置触摸屏、键盘等多种输入设备和l c d 等图象显示设备,这为g u i 在嵌入式系统上应用提供了基础硬件平台【_ 7 1 。 随着嵌入式系统对g u i 系统的需求的明确,目前出现了多种实现嵌入式 图形用户系统的方法,大体上可以分为以下几种:首先是对传统的桌面平台风 西南交通大学硕士研究生学位论文第3 页 曼曼皇曼! 曼曼曼曼曼曼皇量曼曼 - - - - - - i i u l 皇曼曼曼曼曼曼曼曼曼曼曼皇曼! ! ! 曼曼曼曼 格的g u i 系统进行移植,如w i n d o w sc e 、紧缩的x w i n d o w s 系统等。这类 g u i 系统往往带有过多的桌面平台的痕迹,性能可靠,毕竟在成本上无法满足 嵌入式系统的要求,而且其体积过于庞大,占据了本来就不多的存储器空间【引。 在信息家电、p d a 、s m a r tp h o n e 等众多受欢迎的终端产品中,己经可以看到 相对成熟的g u i 系统。在目前的多个嵌入式g u i 系统中,比较成熟,同时得到 最多开发人员认可的系统有:m i c r o w i n d o w s ,m i n i g u i ,o p e n g u i ,q t e m b e d d e d 等。 m i c r o w i n d o w s 是一个著名的开放源代码的嵌入式g u i 软件,它提供了现 代图形窗口的一些特征m i c r o w i n d o w s 采用分层设计方法,基本上用c 语言实 现,只有某些关键代码被用汇编实现以提高速度,m i c r o w i n d o w s 已经支持很 多3 2 位c p u 、m i p s 和a r m 等p 】。但作为一个窗口系统,该项目提供的窗口 处理功能还需要进一步完善,比如控件或构件的实现还不是很完备,键盘和鼠 标等的驱动还很不完善。 m i n i g u i 是一种面向嵌入式系统或实施系统的图形用户界面支持系统。它 是一种面向嵌入式系统或实时操作系统的图形用户界面支持系统,主要运行于 l i n u x 控制台,同时也是国内最早出现的几个自由软件系统项目之一【1 0 】。 m i n i g u i 的主要特色有:提供了完备的多窗口机制;完备的控件支持;消息传 递机制;多字符集和多字符体的支持,包括g b 2 31 2 ,b i g s 等。 o p e n g u i 在l i n u x 上已经存在很长一段时间了,最初的名字叫f a s t g l ,只 支持2 5 6 色的线性显存模式,但目前也支持其他显示模式,o p e n g u i 是用c + + 编写的,只提供c + + 接口】。o p e n g u i 基于一个用汇编实现的图形内核,提供 了一个高层的c c + + 图形窗口接口。它提供了消息驱动的应用程序接口,支 持b m p 文件格式。o p e n g u i 的功能强大,运行的速度很快。 q t e m b e d d e d 是著名的q t 库开发商t r o l l t e e h 公司开发的面向嵌入式系统 的q t 版本。许多基于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 同样是s e r v e r c l i e n t 结构,它延续了q t 在x 上的 强大功能,在底层摒弃了xl i b ,仅采用f r a m e b u f f e r 作为底层图形接口 1 2 】。同 时,将外部输入设备抽象为k e y b o a r d 和m o u s e 输入事件,底层接口支持键盘、 g p m 鼠标、触摸屏以及用户自定义的设备等。q t e m b e d d e d 类库完全采用c + + 封装。丰富的控件资源和较好的可移植性是q t e m b e d d e d 最为优秀的一方面。 下表列出了以上g u i 系统之间的特点比较,从表中可以看出这些g u i 系统 各有各的优点,但也或多或少存在一些缺点【”】。 西南交通大学硕士研究生学位论文第4 页 表1 1 各类g u i 系统的分析比较 g u1 名称 mic r o win d o w sminig ul o p e n g u l 0 t e m b e d d e d 大小 6 0 0 k ( 一般) 5 0 0 k ( 较小)3 0 0 k ( 较小)1 5 m ( 较大) 可配置和可 一般 好( 提供了不差差 定制少可配置项) 可靠性差一般 好一般 可移植性 很好很好 差( 只支持x 8 6较好 平台) 性能一般好 很好( 底层用 好 汇编编写) 0 s 支持l i n u xl i n u xd o s 、l i i l u x 、l i f l u x 、w i n c e q n x 硬件环境x 8 6 、a r m 、m i p sx 8 6 、a r m 、x 8 6x 8 6 、a r m m i p s 、 p o w e r p c 、 我们可以看到,上述嵌入式g u i 系统均或多或少存在一些缺点。嵌入式 应用领域的多样化决定了嵌入式应用软件系统的多样性,因此,为了满足不同 的需求和应用场合,嵌入式g u i 系统也有多种体系结构和实现方法【l4 1 。例如 m c i o r w i n d o w s 适用于一些对图形要求相对简单的系统;q t e m b e d d e d 通常用于 高端产品,它们对硬件资源的消耗比大;而m i n i g u i 则提供了三种模式以适应 不同的需求和应用环境,对中文支持很好,因此在国内的应用范围较广【l5 1 。所 以在设计一个优秀的嵌入式g u i 系统时,必须充分考虑各方面的因素,能够 在应用领域里以优秀性能符合特定需求。 在软件技术的不断发展中,应用程序也开始支持同时运行多个任务的功 能。为了提高系统的效率,多线程技术在并行程序设计中得到了长足的发展, 多线程是在同一时间需要完成多项任务的时候实现的。本文就是在这种背景 下,提出了基于多线程的g u i 系统设计与实现。 1 3 课题综述及主要研究内容 本课题的研究内容来自某公司的研发项目:浏览器g u i 系统。该系统是专 西南交通大学硕士研究生学位论文第5 页 门针对其数字机顶盒中浏览器所用图形库的解决方案。它为上层软件( 浏览器) 实现其g u i 提供基础性的支持( 如画点、画线、图形显示、窗口管理等) 。在 功能、性能能够保证的前提下,实现无须更改或仅更改少量浏览器程序代码的 情况下实现g u i 系统的快速移植。 在深入分析了嵌入式g u i 系统的需求和硬件系统的特点后,提出需要一 种灵活方便的嵌入式g u i 体系结构,它能够提供简单但完备的窗口管理功能, 高速的图形绘制,实时性能较高和跨平台的移植能力等。为了实现上述特点, 本文完成了大量深入的分析研究,针对嵌入式g u i 系统的缺点及关键技术点 一一提出解决方案,最终设计和实现了一个支持多线程特征的嵌入式g u i 系 统- - n g u i ( n a n og r a p h i c a lu s e ri n t e r f a c e ) ,使得用户可以在不同的线程中创建 多个g u i 应用。所采用的方法是开发一个适用于多种嵌入式硬件开发平台且 支持大多数常见的g u i 对象的图形库,它为上层应用软件提供提供基础性图 形支持,并使其成为具有与其它w i n 3 2 应用程序相类似的应用编程接口的g u i 系统。这种方法使其能够很快地被具有编程经验的人员所接受。且系统要具有 结构灵活,高效率和便于移植等特点。由于课题的具体要求和时间关系,在移 植性上只是做了针对l in u x 操作系统的实现。n g u l 支持多线程特征,相对于 仅支持单任务的g u i 系统,主要有以下三个优点: 提高了嵌入式g u i 系统的响应能力; 更合理的资源分配,提高资源利用率; 大大降低了开发人员的应用编程难度; 本课题研究的主要内容包括: ( 1 ) 对当前主流的嵌入式g u i 系统的特点和实现方法进行了一定的研究, 尤其是对其实现过程中的几项关键技术如帧缓存、消息驱动机制、窗口管 理和设备驱动等进行了详细分析。 ( 2 ) 提出了n g u i 系统的体系结构和设计模型。针对嵌入式g u i 系统需要 高效、易用和可扩展性等特点,采用了层次化、模块化和面向对象等多种 设计思想。 ( 3 ) n g u i 的关键模块设计和实现。对核心机制模块中的设计方法、重要 的数据结构、工作原理和具体实现等进行了深入阐述。 ( 4 ) n g u i 系统构建和测试。简述n g u i 移植的基本思想和流程,体现了它 的可移植性,并简要介绍了它的功能和性能测试。 ( 5 ) 最后总结了本课题完成的工作并给出了下一步的工作展望。 西南交通大学硕士研究生学位论文第6 页 第2 章嵌入式g ui 的实现基础和关键技术分析 2 1 基于fr a m ebu f f e r 的显示驱动 嵌入式g u i 同p c 机上实现的g u i 一样,需要有一定的底层支持,即要有 一些底层的基本函数库或者底层系统作为实现高级图形系统的基础。目前,比 较稳定和功能强大的底层基础支持的函数库( 系统) 是f r a m e b u f f e r 。 f r a m e b u f f e r 译作帧缓冲,它作为基础图形设施,是出现在内核当中的一种驱 动程序接口,是作为其他高级图形或者图形应用程序的基本函数库。这种接口 将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像而不必 关心物理显存的位置、换页机制等等具体细节,这些都是由f r a m e b u f f e r 设备驱 动来完成的,帧缓冲区支持提高了绘图的速度和整体性能【l 8 1 。 f r a m e b u f f e r 对应的源文件在l i n u x d r i v e r s v i d e o 目录下,一般是d e v f b o 、 d e v f b l 等。总的抽象设备文件为f b c o n c ,在这个目录下还有与各种具体显卡 驱动相关的源文件。在使用帧缓冲时,l i n u x 是将显卡置于图形模式下的。有 了f r a m e b u f f e r ,用户的应用程序不需要对底层的驱动的深入了解就能够做出 很好的图形。对于用户而言,它和其他位于d e v 下面的设备类似,用户可以把 f r a m e b u f f e r 看成一块内存,既可以向这块内存中写入数据,也可以从这块内 存中读取数据。在任何嵌入式l i n u x 系统中,f r a m e b u f f e r 都发挥着极其重要的 作用,有了f r a m e b u f f e r 的支持,就可在诸多嵌入式设备中进行图形图象的操 作和显示: 1 ) 通过f r a m e b u f f e r 设备,可以获得显示设备的一些固定信息( 比如显示 内存大小) 、与显示模式相关的可变信息( 比如分辨率、像素结构、每扫描线的 字节宽度) 等【19 1 。这些信息是通过f r a m e b u f f e r 提供的i o c t l 命令的 f b i o g e tf s c r e e n i n f o 获取。该函数调用如下: i n ti o c t l ( i n tf d ,i n tc m d ,) ;其中f d 就是用户程序打开设备时使用o p e n 函 数返回的文件标示符。 2 ) 通过f r a m e b u f f e r 设备获得当前内核所支持的加速显示卡的类型( 通过 固定信息得到) 。这种类型通常是和特定显示芯片相关的。获得了加速芯片类 型之后,应用程序就可以将显卡内存i o ( 称为m e m i o ) 映射到进程的地址空间。 3 ) 显示设备可以将自己的控制寄存器映射到物理内存空间,而后对这些 控制寄存器的访问。一旦被映射到物理内存,l i n u x 的普通进程才可以通过映 西南交通大学硕士研究生学位论文第7 页 皇曼曼皇曼曼皇曼曼曼皇曼曼曼曼曼曼曼曼量曼曼曼曼! 曼曼皇鼍鼍曼皇曼曼曼! - - ii imm 曼曼皇曼曼皇 射操作( m m a p ) 将这些内存i o 映射到进程地址空间,这样就可以直接访问这些 寄存器【2 0 1 。 4 ) 映射( m m a p ) 操作:l i n u x 通过文件操作f i l eo p e r a t i o n s 结构中提供的 m m a p 函数映射操作将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址 中,之后用户就可以通过读写这段虚拟地址访问屏幕缓冲区在屏幕上绘图【2 1 1 。 5 ) i o 控制:通过i o c t l 操作完成。 举个例子来讲,f r a m e b u f f e r 就像一张画布,使用什么样子的画笔,如何 画画,都需要用户自己动手完成。在屏幕上绘图f r a m e b u f f e r 中内存块分布如 图2 1 所示。 2 2 窗口管理 图2 1f r a m e b u f f e r 内存块分布图 窗口是g u i 系统的基本输入输出基本元素,在g u i 系统中,任何输入均是 针对某一特定窗口的,输出结果也是在窗口中显示,对于窗口系统来说,显示 屏实质上也是一个特殊的窗口。每个窗口都占据屏幕上的一个矩形区域。窗口 的区域可以相互重叠,此时,上层的窗口会把下层的窗口遮挡住。同时,g u i 系统还要响应用户的鼠标事件。如果用户在某个窗口上单击鼠标,系统就要把 这个事件通知对应的窗口。同时,如果该窗口目前不在最上层,就要“激活” 它,使它成为最上层的窗口,而其他窗口间的遮挡关系则不受影响。如果鼠标 点击没有落在任何窗口的区域内,则认为用户点击了“桌面,所有窗口的遮 挡关系都不会变化【2 2 。 在一个足够复杂的g u i 系统中,管理窗口的首要问题是处理窗口之间的互 西南交通大学硕士研究生学位论文第8 页 相剪贴。多窗口系统首先确保个窗口中的绘制输出不会影响到另一个窗口。 为此,g u i 系统一般要利用z 序来管理窗口之间的互相剪贴关系。根据窗口在 z 序中所处的位置,g u i 系统要计算每个窗口受剪贴的区域,即剪贴域。通常, 窗口的剪贴域定义为互不相交的矩形集合,它是一个窗口所允许输出的区域 【23 1 。g u i 系统的底层图形引擎在进行输出时,要根据当前输出的剪贴域进行输 出的剪贴操作,从而保证窗口的绘制输出不会互相影响。因为任何一个窗口的 创建、销毁、隐藏、显示均有可能影响其他窗口中的剪贴域,所以首先要有一 个高效的剪贴域维护算法。 2 3 消息驱动机制 在任何g u i 系统中,均有事件或消息的概念。消息是一个报告事件发生的 通知,消息驱动是围绕消息的产生与处理展开的,并依靠消息循环机制来实现 【24 1 。在n g u i 中我们用消息驱动作为应用程序的创建构架。在消息驱动的应用 程序中,计算机外设发生的事件,如键盘键的敲击、鼠标键的点击等,都由支 持系统收集,并以事先约定的格式翻译为特定的消息。应用程序一般都有自己 的消息队列,系统将消息发送到应用程序的队列中。应用程序可以建立一个循 环,在这个循环中读取并处理消息,直到特定的消息传来为止。消息循环就是 这样一个循环体。一般地,消息由代表消息的一个整数和消息附加参数组成。 应用程序一般要提供一个处理消息的标准函数。在消息循环中,系统可以调用 此函数,应用程序在此函数中处理相应的消息。采用消息驱动机制后,g u i 系 统的模块之间形成了完全松散的耦合关系,增加了整个连接和集成的灵活性, 就变得更加容易维护。 但是,g u i 系统中的消息队列不能是一个简单的循环队列,它还要注意一 些问题如:消息数据传递的有效性、传递机制的多样性( 同步和异步) 、特殊消 息的处理、消息优先级问题等。 2 4 图形引擎 图形引擎是g u i 系统中非常重要的组成部分,它不仅负责提供绘图函数的 接口,同时还负责屏幕和区域的图形输出等。它包括各种g d i ,即图形设备接 口( g r a p h i c sd e v i c ei n t e r f a c e ) 和各种绘图工具。g d i 对象是设备上下文的 各种绘图属性的特定组合和抽象。如设备上下文、位图对象、字体对象、剪贴 西南交通大学硕士研究生学位论文第9 页 域、画笔和画刷等。所有绘图相关的函数均需要一个设备上下文,设备上下文 是包括设备和一些绘图属性在内的一个称呼。它要管理以下内容:逻辑设备和 物理设备的信息;图形设备上下文所在的窗口以及该窗口被其它窗口剪切的信 息;基本绘图函数所需的参数,显示模式,色彩深度等。 基本的画图操作用于屏幕的输出,完成画点、直线和弧线、矩形、多边形、 圆、圆弧、区域填充、文本显示等功能。高效的屏幕绘制对小型嵌入式c u i 系 统也是至关重要的。通常这部分都要涉及到显示对象管理、剪切域、高效的图 形算法等技术。在绘图操作中,如果将诸如背景颜色、线宽、字体等信息作为 绘图a p i 的参数传递,将加重每一次a p i 调用的负担,从而降低程序的性能【2 5 1 。 而g d i 对象在系统中缓存了这些信息,在批绘图操作之前,只需要设置一次 g d i 对象的属性,就避免了每次a p i 调用都传递一大堆参数。每一种g d i 对象, 都将对后续的某些绘图操作产生影响。 2 5 设备驱动 和p c 不同,嵌入式系统的外部设备接口千差万别。作为面向嵌入式操作 系统的图形用户界面支持系统,g u i 系统要面对各种各样的外部图形设备和输 入设备。拿图形设备来讲,最底层的绘图函数多是通过调用硬件设备的驱动来 完成,如果仅考虑颜色深度,可能是单色的,也可能是1 6 位,或者2 4 位色的, 但颜色深度和分辨率仅是图形设备的一个基本特性。如果从硬件角度来讲,其 形式就更多了。为了便于移植,我们需要引入基于图形显示设备的图形抽象层 和基于输入设备的输入抽象层( g r a p h i c sa n di n p u ta b s t r a c tl a y e r ,g a l 和 i a l ) 的概念。它定义了一组不依赖于任何特殊硬件的接口,所有顶层的图形操 作和输入处理都建立在抽象接口之上,而用于实现这一抽象接口的就是操作系 统中的驱动程序【26 l 。这实际是一种面向对象的程序结构,极大的隐蔽了各种硬 件的实现细节,就可以方便的将g u i 系统移植到其他硬件平台上。 西南交通大学硕士研究生学位论文 第10 页 第3 章n g ui 系统总体结构设计 3 1 多线程与嵌入式gui 传统的嵌入式g u i 系统大多采用单任务运行,即所有g u i 应用都在同一个 任务中开发、运行和调试。这种结构最大缺点在于程序以串行方式运行,响应 速度慢。如当某个应用窗口繁忙时,我们需要能够在其它窗口进行操作。如果 不能这样,整个窗口系统将在一段时间内不能及时使用。其次,如果所有g u i 相关应用都在一个任务中开发,既不利于调试,也不利于维护。在单任务系统 中,经常使用的解决方案是使用定时器( t i m e r ) 来模拟多任务( 如用定时器 来定期刷新多个动态改变的窗口) ,但是定时器的使用有时会限制程序的速度, 而且不能真实反映程序的运行状态,且到底使用多大粒度的定时器将依赖硬件 的速度和用户的设置,有很大的可变性【2 7 1 。这意味着并没有充分利用硬件资源, 若是能同时以线程运行多个g u i 应用,窗口系统将会有以下好处: 1 ) 更快的响应和运行速度,线程任务还可以根据优先级获得不同的响应 效果,克服了单任务运行时串行化执行的速度和低效响应度; 2 ) 更加合理的资源共享,多个g u i 应用可以有效利用c p u 及内存资源; 3 ) 应用程序均运行在同一个地址空间,线程切换时没有额外的数据复制 开销,提高了应用程序间的通信效率; 4 ) 减小应用开发的难度,不同需求的g u i 应用可以独立开发、调试和维 护,在逻辑上可以视作相互独立,使得上层开发人员能够专注于应用逻辑; 在对多种流行嵌入式g u i 系统深入研究和分析的基础上,本章提出了一种 功能完善、性能可靠、移植性强以及轻型的嵌入式g u i 体系结构- - n g u i ( n a n o g r a p h i c a lu s e ri n t e r f a c e ) 。n g u i 的主要目标是向嵌入式应用软件( 如浏览器、 播放器等) 提供图形界面编程的功能接口,使编程人员能快速、方便实现图形 界面。n g u i 系统的主要特点应包括以下几方面: 1 ) 多任务,多线程特征支持,提高响应速度,方便开发。 2 ) 提供完备的多窗口管理机制且实现了各种窗口,包括对话框和预定义的控 件类( 按钮、编辑框、列表框、组合框、进度条、滚动条等) 。 3 ) 支持中文双字字符集的输入及显示,提供中文点阵字库和t t f 字体。 4 ) 提供完整的类似w i n d o w s 操作系统的消息处理机制,增加了安全性和灵活 性。 西南交通大学硕士研究生学位论文 第11 页 曼! 蔓皇曼曼皇曼鼍曼曼曼曼曼皇皇曼曼曼曼,m | i, 一m i 曼曼皇曼! 皇曼曼曼曼曼曼曼曼曼曼皇曼曼曼曼蔓曼 5 ) 、将用户接口扩展成与w i n d o w s 操作系统相兼容的a p i 编程接口,便于用户 编程。 6 ) 结构灵活,便于扩展,高可靠性、用资源更少、全部功能以库文件的方式 提供。 7 ) b m p 、g i f 等常见图像文件的支持。 8 ) 资源文件的支持。如图标、光标、插入符、定时器等。 9 ) 支持单色、2 位色、4 位色、8 位色、16 位色、2 4 位色以及3 2 位色等多 种显示模式。 本g u i 系统软件的主要作用是向应用软件( 如浏览器、播放器等) 提供 图形界面编程的功能接口,使其能快速、方便实现图形界面。为实现这个目的 所需要的功能可分为表3 一l 所列的几大类。 表3 1g u i 系统功能分类表 功能类型功能类型作用描述 二维图形库基本的二维图形( 点、线、圆、多边形等) 操作 窗口系统及控件窗口及控件的绘制与管理 输入方式支持键盘、鼠标、触摸屏等输入方式的支持 操作系统功能支持库线程、定时器、同步等支持 点阵和矢量字库支持点阵和矢量字库的操作和绘制 图像处理库图像的读写、显示等操作 3 2 设计模式 设计模式( d e s i g np a t t e r n ) 常见于面向对象编程语言中。通过在程序中使用 某些设计模式,我们可以使代码结构清晰,减小错误几率,进而提高代码的可 扩展性及可维护性【27 1 。n g u i 系统是采用c 语言编写,但仍可采用一些设计模 式来提高代码的灵活性及可维护性。在n g u i 的开发过程中主要使用了有效隔 离数据和代码、使用回调函数、面向对象技术等常用设计模式。三种设计模式 的详细讨论如下。 ( 1 ) 一种有效的设计模式,第一个目的就是要隔离数据和代码【28 1 。除非是 特定算法( 如模式识别等) ,或者因为性能问题而不允许代码通用化,否则所 有良好的设计都要尽量使代码通用化,而不是将数据硬编码到代码中。 ( 2 ) 在g u i 系统中,回调函数扮演着非常重要的角色。和系统提供的函数 西南交通大学硕士研究生学位论文第12 页 不同,系统提供的函数由应用程序调用,而回调函数一般由应用程序实现,最 终由系统调用。一般回调函数借助函数指针这一特殊的类型来完成。通常需要 通过某种接口告诉系统已定义好的回调函数指针,系统保持这个指针,然后再 需要的时候通过这个指针来调用应用程序定义的回调函数。在n g u i 系统的消 息驱动机制中,用来处理消息的窗口过程函数需要采用大量回调函数。 ( 3 ) 面向对象技术将事物抽象成对象进行操作,每个对象被定义( 封装) 成一组属性和方法,属性能够来描述对象的特征,如外观、大小等,方法用来 提供对属性的操作。对嵌入式g u i 系统进行面向对象分析是要找出软件需求 中客观存在的所有实体对象,然后总结、抽象出实体类,完成这一工作的依据 是在需求分析过程中产生的用例模型【29 1 。程序所建立的每个窗口,包括主窗口 中的所有子窗口,即控件,都对应着g u i 系统预定义的某种窗口类。这一概 念和面向对象编程中的类、对象的关系类似。 3 3n g u i 系统的层次架构 g u i 系统在嵌入式系统中一般以组件的形式存,它的优势在于使g u i 本身 的保持相对独立,这样就方便g u i 系统的移植、裁剪和扩展【3 。这些特点决定 了g u i 系统在整个嵌入式系统中的地位和层次结构。它为上层软件( 如浏览器、 播放器等) 实现其g u i 提供基础性的支持( 比如画点、画线、图形显示、窗口 管理等) 。在整个嵌入式软件体系架构中处于应用程序与操作系统之间的中间 层位置,向下屏蔽操作系统的差异,向上提供通用的编程接口。如图3 1 所示。 硬件( x 8 6 ,a r m ,m i p s ,p o w e r p c ,m 6 8 k ) 图3 1 嵌入式g u i 架构层次图 从图中可以看出,嵌入式g u i 系统会与三个部分进行作用交互:与各种 西南交通大学硕士研究生学位论文 第13 页 量曼寡皇曼皇曼! 曼曼皇曼曼曼鼍曼曼曼! 皇曼皇! ! 曼曼曼曼舅曼曼舅舅_ ii iiii ii _ _ i 皇曼曼曼曼皇! 曼曼 不同输入、输出设备的驱动程序交互;以库的形式提供编程接口给应用程序; 与嵌入式操作系统相互通信。 嵌入式系统是一个复杂的系统,而采用基于组件化的多层次体系结构可以 满足复用、裁剪、移植、扩展等需求,并避免了由于重复开发可能引入的错误, 从而提高软件开发的效率【22 1 。n g u i 系统的层次结构和模块划分可用图3 2 表 示,从上至下分为四层。四个层次从上至下分别是:1 ) a p i 兼容层;2 ) g u i 系统引擎层;3 ) 平台抽象层;4 ) 驱动层。其中,a p i 兼容层实现了n g u i 与 w i n 3 2 在接口和功能上的兼容;g u i 系统引擎层实现了g u i 系统本身使用的各 项内部模块功

温馨提示

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

评论

0/150

提交评论