




已阅读5页,还剩62页未读, 继续免费阅读
(通信与信息系统专业论文)基于嵌入式linux系统的数字电视gui图形加速设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
独创性 或创新性 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研 究成果 尽我所知 除了文中特翱j o n 以标注和致谢中所罗列的内容以外 论文 中不包含其他人已经发表或撰写过的研究成果 也不包含为获得北京邮电大学 或其他教育机构的学位或证书而使用过的材料 与我一同工作的同志对本研究 所做的任何贡献均已在论文中作了明确的说明并表示了谢意 申请学位论文与资料若有不实之处 本人承担一切相关责任 本人签名 4 氍骁日期 缉i 她虱一 一一 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定 即 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学 学校 有权保留并向国家有关部门或机构送交论文的复印件和磁盘 允许学位论文被 查阅和借阅 学校可以公布学位论文的全部或部分内容 可以允许采用影印 缩印或其它复制手段保存 汇编学位论文 保密的学位论文在解密后遵守此 规定 保密论文注释 本学位论文属于保密在一年解密后适用本授权书 非保密 论文注释 本学位论文不属于保密范围 适用本授权书 本人签名 纽日期 鲤i 皿厶鑫 导师签名 二孑盏已季l 一日期 担绎j 凰 正l 一 基于嵌入式lin u x 系统的数字电视g ui 图形加速设计 摘要 在电视市场上 大屏幕平板电视已经成为主流 相对于一些其 他的手持嵌入式设备如手机 多媒体播放器和d v d 播放机等 大 屏幕电视对g u i 的要求更高 这主要是由于电视的高分辨率造成 的 以现在市场主流的4 2 寸且支持1 0 8 0 p 输出的电视为例 其分 辨率一般是1 0 8 0 1 9 2 0 而常见的q v g a 分辨率手机 分辨率为 2 4 0 x 3 2 0 前者的像素数是后者的2 7 倍 这意味着 用户界面上设 计出相同的效果 在电视上会消耗更多的c p u 运算量 这对嵌入式 系统中的计算功能较弱的c p u 来说是沉重的负担 可以说大屏幕电视 相对于其他嵌入式设备 更迫切的需要高 性能的g u i 因此 如何以较低的代价提高嵌入式g u i 系统的效能 是一个值得研究的课题 本文就将讨论一种解决方案 通过使用独 立的硬件图像加速模块将c p u 从这些运算中解放出来 代替c p u 做这些运算量大 但逻辑较简单的工作 试图在低成本的前提下提 高系统的图形性能 本文从分析g u i 系统中绘图操作的特点开始 设计出一个基于 流水线架构的图形加速器 并提出一种分层驱动设计模式 使图形 加速器在不同g u i 系统中有良好的移植性 通过在一个实际系统中 测试 说明图形加速器确实达到了提高系统图形性能的目标 本系 统目前已在某款已上市的数字电视芯片中应用 关键词大屏幕电视嵌入式系统g u i 图形加速流水线架构 t h ed e s i g no fg r a p h i ca c c e l a ra t l 0 ni n d i g i t a lt vg u ib a s e do ne 旧e d d e dl i n u x a b s t r a c t l a r g e s c r e e nt v h a sp r e d o m i n a t e di nt vm a r k e t i th a sah i g h e r d e m a n df o rg u it h a no t h e rh a n de m b e d d e dd e v i c e s l i k ec e l lp h o n e m u l t i m e d i ap l a y e ra n dd v d p l a y e r t h i si sm a i n l yb e c a u s eo ft h eh i g h r e s o l u t i o no fl a r g e s c r e e nt v t h er e s o l u t i o no f4 2 t vt h a ts u p p o r t s 10 8 0 po u t p u ti s10 8 0 x19 2 0 i t sn u m b e ro fp i x e l si s2 7t i m e so fq v g a c e l lp h o n e w h o s er e s o l u t i o ni so n l y2 4 0 x3 2 0 w h i c hm e a n s i tw i l lc o s t m u c hm o r ec p uc a l c u l a t i o ni nt vt or e a c hs a m ee f f e c to fu i t h i si s h e a v yl o a df o rc p u i ne m b e d d e ds y s t e m w h i c hi sr e a l l yw e a ki n p e r f o r m a n c e a si t w e r e b i g s c r e e n t vh a sam u c hm o r ed e m a n df o r h i g h c a p a b l eg u it h a no t h e re m b e d d e dd e v i c e i ti sr e a l l yw o r t h yt o r e s e a r c hh o wt oi m p r o v ep e r f o r m a n c eo fe m b e d d e dg u is y s t e mw i t ha l o wc o s t t h i sp a p e rw i l ld i s c u s sas o l u t i o n d e s i g na ni n d e p e n d e n t h a r d w a r eg r a p h i ca c c e l e r a t i o nm o d u l et or e l e a s ec p uf r o mg r a p h i c c a l c u l a t i o n i tw i l lr e p l a c ec p uf r o mt h eh u g ec o m p u t e db u ts i m p l y l o g i c a lw o r k t r yt oi m p r o v es y s t e mg r a p h i cp e r f o r m a n c ew i t hal o w c o s t t h i sp a p e rs t a r t sw i t ha n a l y z i n gg r a p h i co p e r a t i o ni nt h eg u i s y s t e m d e s i g n sag r a p h i ca c c e l a r a t o rb a s e do np i p e l i n em e c h a n i s m i t a l s o p r o p o s e s a l a y e r e d d r i v e rd e s i g n w h i c h m a k e s g r a p h i c a c c e l a t a t o rp o r t a b l ei nd i f f e r e n tg u is y s t e m f i n n a l l yt h ef u n c t i o no f g r a p h i ca c c e l a r a t o ri sm e a s u r e di naa c t u a ls y s t e m t h er e s u l t sp r o v e a c c e l a r a t o rh a si n d e e di m p r o v e ds y s t e m sg r a p h i cp e r f o r m a n c e t h e s y s t e mh a sa l r e a d yb e e na p p l i e di nao n s a l ed i g i t a lt vc h i p k e yw o r d sl a r g e s c r e e nt v e m b e d d e ds y s t e mg u i g r a p h i ca c c e l a r a t i o np i p e l i n em e c h a n i s m 第一章绪论 目 录 1 1 嵌入式系统 1 1 2 嵌入式操作系统和嵌入式l i n u x 系统 2 1 3 嵌入式l i n u x 系统上的g u i 发展概述 3 1 4 课题的意义 5 1 5 本文主要工作及章节安排 一6 第二章基于l i n u x 系统的g u i 中图形加速分析 7 2 1 嵌入式g u l 分析 7 2 1 嵌入式g u i 通用架构设计规则 7 2 1 2 帧缓冲设备简介 9 2 1 3 基于帧缓冲设备的图形抽象层构建 1 1 2 2g u i 中绘图操作的分解 1 2 2 2 1 基本的绘图操作 1 2 2 2 2 图形加速的必要性分析 1 3 2 2 3 绘图操作的分解 1 4 2 3 图形加速功能分析 18 2 3 1 图形加速设计方案 18 2 3 2 利用图形加速进行绘图操作 1 8 第三章基于流水线架构的图形加速器的设计 2 0 3 1 图形加速器与d m a 2 0 3 1 1 图形加速器的基本功能 2 0 3 1 2d m a 传输和d m a 控制器 2 1 3 1 3 图形加速器与d m a 2 2 3 2 图形加速引擎的架构设计 2 4 3 2 1 图形加速引擎的接口设计 2 4 3 2 2 图形加速引擎的流水线设计 2 5 3 2 3 图形加速引擎的模块划分 2 7 3 3 图形加速引擎中的主要模块设计 3 0 3 3 1 命令结构和命令存储器 3 0 3 3 2d m a 请求裁决器 3 2 3 3 3 高速a l p h a 混合运算模块设计 3 2 3 3 4 子块传输和数据反转传输 3 4 3 3 5 直线绘制的b r e s e n h a m 算法 3 6 3 4 图形加速器的工作方式分析 3 8 第四章图形加速功能的集成和测试 3 9 4 1 图形加速器的驱动程序设计 3 9 4 1 1l i n u x 系统驱动程序设计 3 9 4 1 2 图形加速器的驱动程序设计 4 0 4 2 图形加速功能的可行性分析 4 5 4 2 1l i n u x 系统中虚拟内存机制 4 5 4 2 2f r a m e b u f f e r 设备内存的扩展 4 6 4 3 图形加速功能的测试 4 8 4 3 1 测试系统介绍 4 8 4 3 2 加速功能测试 4 9 4 3 3 实际系统的图形功能 5 0 第五章总结与展望 5 1 参考文献 5 3 i i 谢 6 作者攻读硕士学位期间发表的学术论文 j 北京邮电大学2 0 1 0 届硕士研究生毕业论文 1 1 嵌入式系统 第一章绪论 嵌入式系统出现于6 0 年代晚期 它最初被用于控制机电电话交换机 如今已被广泛的应用于工业制造 过程控制 通讯 仪器 仪表 汽车 船 舶 航空 航天 军事装备 消费类产品等众多领域 现在的p c 机市场已 经逐渐趋于饱和 而各种个人消费类电子产品的飞速发展也表明 未来的计 算机市场属于嵌入列 嵌入式系统是以应用为中心 以计算机技术为基础 软件硬件可裁剪 适应应用系统对功能 可靠性 成本 体积 功耗有严格要求的专用计算机 系统 它主要由嵌入式微处理器 外围硬件设备 嵌入式操作系统以及用户 应用软件等部分组成 它具有 嵌入性 专用性 与 计算机系统 这三 个基本要素 最早出现的嵌入式系统很多都不采用操作系统 它们只是为了实现某个 控制功能 使用简单的循环控制来对外界的控制请求进行处理 随着嵌入式 系统的发展 当应用系统越来越复杂 使用范围越来越广泛时 每增加一项 新的应用功能 都可能需要从头开始设计系统软件 没有操作系统己成为其 最大缺陷 同时随着嵌入式设备与i n t e m e t 的广泛结合 手机 p d a 路由 器和调制解调器等复杂的高端应用对嵌入式处理器的性能提出了更高的要 求 虽然8 位单片机为核心的嵌入式技术不断发展 性能也不断提高 但是 由于其性能的局限性 己经无法满足未来高性能嵌入式技术的发展需求 激 烈的市场和技术竞争要求不断提高嵌入式系统的性价比和缩短嵌入式系统 的开发周期 因此 以3 2 位处理器作为高性能嵌入式系统的核心己经是嵌 入式技术发展的必然趋势 2 总的来说 嵌入式系统有以下特点 1 嵌入式系统功耗低 体积小 专用性强 2 为提高系统执行速度和可靠性 嵌入式系统软件一般都固化在存储 器芯片本身中 而不是存储在磁盘等介质中 3 嵌入式系统的硬件和软件都必须高效率地设计 系统要精简 操作 系统一般和应用软件的集成度较高 4 对软件代码质量要求很高 应该尽最大可能避免死机的情况发生 北京邮电大学2 0 1 0 届硕士研究生毕业论文 因为嵌入式设备所处的环境一般是无人职守或条件苛刻的情况下 5 嵌入式系统开发需要专门的开发工具和开发环境 1 2 嵌入式操作系统和嵌入式l i n u x 系统 嵌入式操作系统e o s e m b e x i d e x lo p e r a t i n gs y s t e m 是一种支持嵌入式系 统应用的操作系统软件 它是嵌入式系统 包括软 硬件的 中重要的组成 部分 通常包括与硬件相关的底层驱动软件 系统内核 通信协议等 嵌入 式操作系统具有通用操作系统的最基本功能 如任务调度 同步机制 中断 处理 文件处理等外 还具有可裁减 统一的接口 操作方便 简单 提供 强大的网络功能 强稳定性 弱交互性 可固化代码 良好的移植性等 嵌入式操作系统负责嵌入式系统的全部软 硬件资源的分配 调度 控 制 协调并发活动 它必须体现其所在系统的特征 能通过装卸某些模块来 达到系统所要求的功能 在嵌入式操作系统环境下开发应用程序使程序的设 计和扩展变得容易 不需要大的改动就可以增加新的功能 通过将应用程序 分割成若干独立的任务模块 使应用程序的设计过程大为简化 而且对实时 性要求苛刻的事件都得到了快速 可靠的处理 通过有效的系统服务 嵌入 式操作系统应该使得系统资源得到更好的利用 目前主流的嵌入式操作系统包括 l i n u x 将a n d r o i d 一并归入l i n u x w i n c e p a l m s y m b i a n 下表对这4 种操作系统的特性进行了比较 表1 1 各种嵌入式操作系统的比较 操作系统 l i n u xw i n c ep a l m s y m b i a n 主要特点开放源码 网多媒体能力强 界以p i m 为主 通信功能强 络资源丰富 面与p c 类似 兼容应用软件众无线安全性能 扩展性强性强多佳 硬件平台a r m 系列 x 8 6 m i p s a r ma r m 系列a r m 系列 m i p s x 8 6 等 系列 内存需求 7 0 0 k b y t e8 m b y t e2 m b y t e6 m b y t e 主流应用s t b p d a 智能手机 p d ap d a 手机 数字电视 智 能手机 2 北京邮电大学2 0 10 届硕士研究生毕业论文 i 授权费用i 免费l 高 3 1 7 l 高 6 8 l 高 5 5 i 这些系统并非都适合开发信息家电的嵌入式操作系统 w i n d o w sc e p a l mo s 及s y m b i a n 等都是商业化的专用嵌入式操作系统 价格昂贵而且源 代码封闭 其功能和内核体积不易配置 大大限制了其在中低端应用领域的 开发和利用 相应的 l i n u x 系统则在这些选择中脱颖而出 嵌入式l i n u x 操作系统的优点主要有 1 具有免费的开放源代码 开发成本低 新设备的支持速度快 开发 周期短 这能减少大量的开发费用 2 内核精悍 运行所需资源少 一个功能完备的l i n u x 内核运行要求大 约lm b 内存 嵌入式系统中的硬件资源通常是非常有限的 尽可能的节省 资源是一个开发原则 3 可应用于多种硬件平台 l i n u x 已经被移植到多种硬件平台 原型可 以在标准平台 如w i n d o w s 上开发然后移植到具体的硬件上 从而加快了 软件与硬件的开发过程 4 稳定性较好 嵌入式l i n u x 系统采用层次式的微内核结构 各层次间 以及同层次间的实现比较独立 l i n u x 采用虚地址空间模式 任务独立运行 不受其他任务错误的影响 这种体系结构的嵌入式系统可靠性高 稳定性较 好 5 很容易添加新服务模块 l i n u x 内核体系结构相当简单 网络和文件 系统以模块形式置于微内核的上层 驱动程序和其它部件可在运行时作为可 加载模块编译到或者是添加到内核 这为构造定制的可嵌入系统提供了高度 模块化的构件方法 并且易于调试和扩展 同时内核本身已经提供了许多将 其用于各种可能领域时需要的功能 如进程管理 文件系统 设备管理 网 络通信等功能 嵌入式l i n u x 不是一个纯软件的操作系统 它比一般操作系统更加接近 于硬件 总之 嵌入式l i n u x 是一种具有可裁减性好 执行效率高 高可靠 性以及强大的网络功能等特点的实时操作系统 非常适合于平板电视这类中 低端嵌入式信息家电的需要 3 1 3 嵌入式l i n u x 系统上的g u i 发展概述 用户图形界面 g u i 为嵌入式系统提供了一个应用与特殊场合的人机 交互接口 嵌入式g u i 要求简单 直观 可靠 占用资源小且反应快速 以 3 北京邮电大学2 0 1 0 届硕 士 研究生毕业论文 适应系统硬件资源有限的条件 嵌入式系统已经在消费类电子产品等领域得到了广泛的应用 随着这些 应用的不断增加 简单按钮及指示灯的操作方式不能满足系统易用性的要 求 而具有友好图形用户界面的嵌入式系统越来越成为必然选择 应该说 图形用户界面的广泛流行 是当今计算机技术的重大成就之一 而嵌入式系 统性能上的提升也为这些嵌入式设备上运行精美的图形用户界面提供了可 能性 它极大地方便了非专业用户的使用 因此嵌入式系统中对图形用户界 面的需求越来越明显 而这一切均要求有 个高性能的g u i 的支持 以现在市场上最有代表性的手机产品i p h o n e 为例 它成功的最重要的原 因之一就是因为它的用户界面和操作手感远远超出了同期市面上的其他手 机 因此可以说一个产品要想成功 它在用户界面上至少应该具备以下素质 1 精美 用户界面的效果要精美 这主要需要g u l 支持如半透明 动 画等特殊效果 2 流畅 操作流畅与否是用户体验的决定因素 如果界面对每个操作 都需要一定的时间来响应 用户体验必然糟糕 可以说 用户界面是否出色 已经成为一款产品成功的先决条件 现在大多数嵌入式设备采用的是l i n u x 系统 虽然用l i n u x 搭建嵌入式 系统有很多诸如免费 开源等优势 但g u i 却是它的 个瓶颈 关键在于 l i n u x 原有的xw i n d o w 是面向桌面应用开发的 对于嵌入式设备 它显得 太过庞大和臃肿 无法在资源受到限制的嵌入式系统中应用 因此在大多数 利用l i n u x 作为操作系统的嵌入式系统中 在上层搭建面向不同需求的专用 g u i 系统成为日益流行的嵌入式系统图形用户界面的解决方案 4 国外的l i n u x 嵌入式g u i 系统发展较早 较为著名的有q t 库开发商面 向嵌入式系统的q t e m b e d d e d 还有开放源码的项目m i c r o w i n d o w s o p e n g u i 及g t k 公司专门面向嵌入式系统开发的g t k f b 另外xw i n d o w 系统的紧缩型版本也有较好的应用 在国内自由软件领域作为代表的是 m i n i g u i 它是由清华大学的魏永明主持开发的一个轻量级g u i 解决方案 上述几个面向嵌入式系统的g u i 目前被认为比较成熟 同时得到最多 开发人员认可的有紧缩的xw i n d o w 系统 m i n i g u i m i c r o w i n d o w s 等系统 q t e m b e d d e d 尽管刚推出 但来势凶猛 紧缩的xw i n d o w 系统尽管其x 服务器可以降低到8 0 0 k 的大小 但因 为x w i n d o w 系统的运行还需要其它程序和库的支持 包括x 窗口管理器 x l i b 建立在x l i b 之上的g t k 和q t 等函数库 因此 紧缩的xw i n d o w 系统在运行期间所占用的系统资源很多 加上中文显示和中文输入等本地化 4 北京邮电大学2 0 1 0 届硕士研究生毕业论文 代码之后 系统的整体尺寸和运行时的资源消耗将进一步变大 因此 嵌入 式系统的开发商往往将紧缩的x w i n d o w 系统定位在机项盒等对资源要求并 不苛刻的嵌入式系统上 q t e m b e d d e d 由于移植了大量的原来基于q t 的x w i n d o w s 程序 提供 了非常完整的嵌入式g u i 解决方案 再加上o p e r a 浏览器 可以说是一个成 熟的商业软件 m i n i g u i 和m i c r o w i n d o w s 均为自由软件 只是前者遵循l g p l 条款 后者遵循m p l 条款 这两个系统的技术路线也有所不同 m i n i g u i 的策略 是首先建立在比较成熟的图形引擎之上 比如s v g a l i b 和f r a m e b u f f e r 开发 的重点在于窗口系统 图形接口之上 m i c r o w i n d o w s 目前的开发重点则在 底层的图形引擎之上 窗口系统和图形接口方面的功能还比较欠缺 举个例 子来说 m i n i g u i 有一套用来支持多字符集和多编码的函数接口 可以支持 各种常见的字符集 包括g b b i g 5 u n i c o d e 等 而m i c r o w i n d d o w s 在 多字符集的支持上尚没有统一接口 5 1 4 课题的意义 p 在电视市场上 随着大屏幕平板电视的普及 市场竞争的不断加剧 电 视的附加功能开始成了不少企业追逐的热点 市场上已经出现了集成了互联 网下载 本地文件播放和互联网视频点播功能的一体化电视机 通俗的说 现在的平板电视 除了传统的收看广播电视外 更提供了很多的附加功能 可以这么说 电视已经开始真正成为家庭娱乐中心 但是大屏幕平板电视 相对于一些手持嵌入式设备如手机 多媒体播放 器和d v d 播放机等 对g u i 的要求更高 这主要是由于大屏幕电视本身的 高分辨率造成的 以现在市场主流的4 2 寸且支持1 0 8 0 p 播放的电视为例 其分辨率一般是1 0 8 0 x1 9 2 0 而常见的q v g a 分辨率手机 分辨率为2 4 0 3 2 0 前者的像素数是后者的2 7 倍 这意味着 用户界面上设计出相同的 效果 在平板电视上会消耗更多的c p u 运算量 例如常见的背景图覆盖操 作 这个操作需要将整个屏幕用用户界面的背景图覆盖 假设表示屏幕中的 每个像素需要4 个字节来表达颜色 则这样一次覆盖操作的数据量就达到了 1 0 8 0 x1 9 2 0 4 8 2 9 4 4 0 0 b y t e s 将近8 m 字节的数据量对嵌入式系统中的 计算功能较弱的c p u 来说是沉重的负担 可以说嵌入式数字电视 相对于其他嵌入式设备 对图形系统的性能有 更高的要求 目前这些主流g u i 系统应用在大屏幕电视中表现都并不理想 北京邮电大学2 0 1 0 届硕士研究生毕业论文 但大多数嵌入式g u i 的设计已经没有多少优化的余地了 而且嵌入式系统在 成本 功耗和面积上受到的限制也决定了无法简单的通过提高系统参数如 c p u 频率等来提高图形系统的性能 所以说 采用硬件加速来提高性能是必 然的选择 目前已经有一些公司推出了一些专用于嵌入式设备的显示卡 6 但这会带来系统功耗和成本的增加 并不适用于中低端嵌入式设备 因此 如何以较低的成本和功耗代价提高嵌入式图形系统的性能是一个值得研究 的课题 1 5 本文主要工作及章节安排 本课题的主要研究内容是针对嵌入式平板电视分辨率较大的特点 指出 硬件图形加速的需求 进而设计出一个低成本的解决方案 并对此解决方案 的性能进行了分析 提出了进一步的研究方向 本文的章节安排如下 第一章简述了嵌入式系统和嵌入式g u i 并以此为基础分析了大屏幕平 板电视g u i 中硬件图形加速的研究背景和意义 并且概述了本文的主要工作 和章节的安排 第二章首先讨论了基于f r a m e b u f f e r 设备构建的嵌入式g u i 中的图形抽 象层 并对图形抽象层中的绘图操作进行分析 归纳出这些操作的物理意义 并根据这些绘图操作的特点 分析出硬件设计的大致方案 第三章主要主要讨论了图形加速硬件的设计方案 分析了基于流水线架 构的硬件设计架构 大大提高了系统的吞吐量 提高了效率 第四章讨论了图形加速硬件驱动的设计 提出了分层驱动的设计方法 解决了在g u i 中使用图形加速功能的主要障碍 最终在一个实际的电视芯片 上测试和分析了图形加速的性能 第五章总结了本文中主要的工作 并提出了一些今后可以继续研究的方 向 6 北京邮电大学2 0 1 0 届硕十研究生毕业论文 第二章基于l i n u x 系统的g u i 中图形加速分析 图形加速的主要目的是利用独立的硬件模块代替c p u 进行繁重的图形运 算 本章将从基于f r a m e b u f f e r 设备构建图形抽象层开始 介绍各种绘图操作 的特点 并在此基础上从硬件的角度分析了这些绘图操作 抽象出了这些操作 对应的硬件模型 最终提出了图形加速硬件设计的模型 2 1 嵌入式g u l 分析 2 1 1 嵌入式g u i 通用架构设计规则 在第一章绪论中 已经简单介绍了现在l i n u x 系统上主流的嵌入式g u i 系统 它们在设计上遵循着通用的规则 7 1 通用的体系结构 g u i 系统组件应该具有通用的体系结构 它基于 操作系统之上 为用户提供丰富的图形编程接口 使其能够方便快速的编制 界面友好的应用程序 2 模块化 可移植性好 一个设计良好的g u i 系统应该能够方便快速 的移植到各种硬件平台上 采用模块化的设计可以很好的实现这一点 大多 数g u i 系统在设计时都会引入一些抽象层 通过抽象层将g u i 上层和底层 操作系统隔离开来 一种常见的架构设计如下图所示 8 编程接口 窗口管理系统 图形设备接 i g d i 输入 抽象l l 图形抽象层g a l 罢i a l 一 1 设备驱动相关函数 图2 i 常见的g u i 架构 从图中可以看出 g u i 的结构设计有着明显层次 这样能降低各个模块之 间的耦合性 图中各个模块的作用如下 7 北京邮电大学2 0 10 届硕 e 研究生毕业论文 设备驱动相关函数主要涉及显示设备驱动和输入设备驱动 前者决定了 屏幕上基本显示方式 例如l i n u x 系统中常采用的x 窗口和帧缓冲 f r a m e b u f f e r 设备 而后者需要将鼠标 键盘 遥控等的输入转换为 g u i 中的事件 并交给i a l 处理 图形抽象层则在设备驱动的基础上 定义了一组不依赖于任何特殊硬件 的抽象接口 这些接口就定义了g u i 中的绘图操作单元 而所有上层 的图形操作和输入处理都建立在这些抽象接口之上 它掩盖了基于基于 不同设备的图形抽象层的细节 图形设备接口则在图形抽象层的基础上提供了更加高级的图形功能 如 画笔 画刷 窗口移动等高级绘图效果 这些效果直接对应窗口的显示 效果 输入抽象层主负责抽象键盘鼠标等输入设备 它负责将事件转发给窗口 管理系统 窗口程序根据输入事件作出响应 它需要判断当前焦点窗口 并根据窗口注册的消息处理回调函数处理输入消息 窗口管理系统也是g u i 中非常重要的模块 它负责管理各个窗口 w i n d o w 的创建 销毁 移动等活动 大多数g u i 中窗口管理系统 都采用了消息驱动机制 编程接口是提供给用户界面程序使用的接口 调用这些接口就可以实现 用户界面 通常以头文件的方式提供给用户 它对用户掩盖了g u i 系 统的实现细节 一一 这样嵌入式应用程序只需要通过a n s ic 库 操作系统和驱动程序接口以 及g u i 提供的编程接口就可以实现自己的功能 它们不需要关心底层的硬件平 台输出和输入设备 常见的嵌入式系统软件架构如下图所示 f 应用 g u i i 厂 1 a n sic 库 可移植层 i l 一一 一 一 一一 j 受训 l i n u x 操 堕0 广 一 一 硬件 一 一j 图2 2 基于l i n u x 系统的嵌入式软件架构 注意到图2 1 中有两个抽象层 g a l 和i a l 它们将g u i 的上层和硬件 北京邮电大学2 0 1 0 届硕士研究生毕业论文 隔离开来 抽象层的概念类似于l i n u x 内核虚拟文件系统的概念 从上图中可 以看出 通过引入图形抽象层 g r a p h i c a b s t r a t i o nl a y e r g a l 和输入抽象层 i n p u t a b s t r a c t i o nl a y e r i a l 两个抽象层 极大程度上掩盖了各种不同硬件 的技术实现细节 为系统程序开发人员提供统一的图形编程接口 也就是说如 果想要移植到不同的设备或者加入新的设备时 只需要对应的修改图形抽象层 和输入抽象层即可 g a l 层是图形加速设计中的关键所在 g u i 中对图形加速功能的支持应 该在这一层实现 而g d i 以及更上层的窗口管理系统 用户界面程序完全不用 关心是否采用了图形加速 2 1 2 帧缓冲设备简介 帧缓冲吲 f r a m e b u f f e r 下文简称f b 设备 作为基础图形设施 是从l i n u x 2 2 版本内核开始出现的一种驱动程序接口 它是作为其他高级图形或者图形 应用程序的基本函数库 这种接口将显示设备抽象为帧缓冲区 用户可以将它 看成是显示内存的一个映像而不必关心物理显存的位置 换页机制等等具体细 节 这些都是由f b 设备驱动来完成的 只要将其映射到进程地址空间之后 就可以直接进行读写操作 而写操作的结果可以直接反应在屏幕上 有了f b 设备 用户的应用程序不需要对底层的驱动的深入了解就能够做出很好的图 形 对于用户而言 它和 d e v 目录下的其他设备没有什么区别 用户可以把帧 缓冲看成一块内存 既可以向这块内存中写入数据 也可以从这块内存中读取 数据 f b 设备结构分为三层 如下图所示 1 0 一一 一 顶层 l 一 j i 一 一 一 1 中间层 l f 一 一1 最底层 图2 3 帧缓冲设备结构图 最底层 基本控制台驱动程序 它提供了文本控制台常规接口的一部分 通过使用控制台驱动程序函数 可以将文本显示在屏幕上 但还不能显 示图形或动画 中间层 使用视频模式功能来实现图形或动画功能 中间层驱动程序提 北京邮电大学2 0 1 0 届硕士研究生毕业论文 供了视频模式中绘图的常规接口 顶层 是与特定硬件相关的驱动程序 它需要支持显卡不同的硬件方面 像启用 禁用显卡控制器 深度和模式的支持以及调色板等 这也是项 层驱动程序引人注意之处 所有这三层都相互依赖以实现正确的视频功 能 在任何嵌入式l i n u x 系统中 f b 设备都发挥着极其重要的作用 没有了f b 设备的支持 我们不可能在诸多嵌入式设备中进行图形图象的操作和显示 比 如智能手机上的手写输入 家用设备的触摸感应操作等都无法完成 具体来说 f b 设备在嵌入式l i n u x 系统下有如下作用 1 获得显示设备的一些固定信息 比如显示内存大小 与显示模式相 关的可变信息 比如分辨率 像素结构 每扫描线的字节宽度 以及伪彩 色模式下的调色板信息等等 这些信息是通过f b 设备提供的i o c t l 系统调用 取得的 i o c t l 是设备驱动程序中对设备的i o 通道进行管理的函数 就是对 设备的一些特性进行控制 例如串口的传输波特率 马达的转速等等 该函 数调用如下 一 i n ti o c t l i n tf d i n tc m d 其中f d 是用户程序打开设备时使用o p e n 函数返回的文件描述符 c m d 是用户程序对设备的控制命令 后面的省略号是一些补充参数 一般最多一 个 和c m d 的意义相关 2 通过f b 设备获得当前内核所支持的加速显示卡的类型 这种类型通 常是和特定显示芯片相关的 获得了加速芯片类型之后 应用程序就可以将 显卡内存i o 映射到进程的地址空间 这些m e m i o 一般是用来控制显示卡的 寄存器 通过对这些寄存器的操作 应用程序就可以控制特定显卡的加速功 能 但本设计中并没有采用在f b 设备驱动中加入加速显示卡的方法 而是独 立的设计了一套图形加速驱动机制 因为不同的嵌入式系统中可能采用不同 的显示设备和图形加速设备 因此将调用图形加速的接口放到了g u i 中 这 样的好处是设计比较简单 增加了灵活性 3 显示设备可以将自己的控制寄存器映射到物理内存空间 而后 对 这些控制寄存器的访问 就可以通过指针 变成了直接对物理内存的访问 一旦被映射到物理内存 l i n u x 的普通进程就可以通过内存映射操作 m m a p 将这些内存i o 映射到进程地址空间 这样就可以直接访问这些寄存器 l o 北京邮电大学2 0 1 0 届硕士研究生毕业论文 2 1 3 基于帧缓冲设备的图形抽象层构建 如前面的讨论 图形抽象层的作用是将不同的图形设备抽象为一个逻辑设 备 提供一些基本的绘图功能 向上层模块提供统一的接口 而出于成本的考 虑 嵌入式系统中通常都不会采用独立的硬件图形设备例如图形卡 独立显示 内存 而是使用内存的一部分作为显示内存 在基于l i n u x 系统的嵌入式g u i 中 图形设备一般采用帧缓冲设备 当然也可以建立在其他设备或一些图形库 之上 对于不同的设备 其内部实现一般来说是不同的 但只需要增加针对这 种设备的g a l 实现版本就可以了 而不必修改上层模块 在帧缓冲设备上构建图形抽象层首先需要初始化帧缓冲设备 2 1 3 1 对帧缓冲设备进行初始化 因为帧缓冲设备工作在终端之上 所以首先要屏蔽终端的输入 使终端进 入图形工作模式 如下面的代码所示 l i l i n tt r y o p e n t t y n a m e o r d w r i o c t l t t y k d s e t m o d e k d g r a p h i c s c l o s e t t y 接着打开f b 设备 通过i o c t l o 函数取得f b 设备的属性 包括 f bf i xs c r e e n i n f o 和f bv a rs c r e e n i n f o 这两个结构包括f b 设备的分辨率 色深 和显存起始地址等消息 为下面的显存映射提供必要的参数 f b o p e n d e v f b o or d w r i o c t l f b f b i o g e 忑j s c r e e n i n f o f b f i x i n f o i o c t l f b f b i o g 蕊 s c r e e n i n f o f bv a ti n f o 根据这些参数就可以计算出需映射的显示内存的大小s i z e 接下来通过 m m a p 0 系统调用把显存映射到用户空间 a d d r m m a p n u l l s i z e p r o t r e a di p r o fw r i t e m a p s h a r e d f b 0 这个函数的返回值a d d r 就是显示内存映射到用户空间的起始地址 这样用 户程序就可以通过这个地址直接操作显示设备了 对于色深为8 位或更低的设备 需要在绘图操作前要设置合适的调色板 完成了这些工作后 f b 设备的初始化就完成了 而在退出应用程序的时候必须 按相反的顺序完成退出操作 包括调用m u n m a p o f f t 数取消显示内存的映射 取消调色板信息 并打开被屏蔽的终端输入功能 让它回到文本工作模式 2 1 3 2 构建图形抽象层 完成了f b 设备的初始化 接写来就可以构建图形抽象层 这一部分主要 北京邮电大学2 0 1 0 届硕上研究生毕业论文 完成画点 画线 填充区域等基本的绘图功能以及对图形设备属性的读取和修 改 着重解决的几个问题包括 针对不同显示模式的不同实现版本 各种基本 图元的剪切算法和各种绘图算法的性能和效率 1 2 图形设备的色深 像素映射方式等属性决定了显示模式的不同 对于不同 的显示模式 同一种绘图操作的实现显然是不同的 解决的办法就是针对每一 种显示模式都写出其对应的实现函数 这样对于不同的显示模式就对应着不同 的图形库版本 使用时通过环境变量或者初始化参数选择等设定实际的显示模 式 再根据模式选择不同的实现版本 在多窗口环境下 由于多个窗口的层叠 以及自身窗口大小的限制 绘图 操作往往只能在有限的范围内进行 这样就引进了剪切域的概念 它表示本次 绘图操作的区域范围 同时在某些区域不需要刷新的情况下 程序员也可以把 该片区域排除在剪切域之外 不进行刷新 这样可以大大提高刷新速率 剪切 域的管理可以采用一些成熟的图形学算法 如c o h e ns u t h e r l a n d 算法 1 3 等 接下来就是一些基本的的绘图操作 这些绘图操作是影响g u i 系统性能的 关键 运算量也集中在这些操作中 下文将详细讨论这些绘图操作 总之 用户完全可以将帧缓冲设备看成显示内存抽象化后的一种设备 只 要操作系统正确提供了驱动程序 就完全可以将帧缓冲设备看成显示内存在进 程地址空间中的一个映像 直接进行读写操作 并立即反应在屏幕上 应用程 序也完全不需要对底层的驱动的深入了解就可以做出很好的图形 2 2g u i 中绘图操作的分解 用户界面通过调用g u i 的编程接口实现各种各样的效果 无论这些效果多 么精美绚丽 最终都是绘图操作组合的结果 而且这些绘图操作大都会消耗很 大的运算量 硬件加速主要就是针对这些绘图操作 下面将试图如何从硬件角 度分析这些绘图操作 2 2 1 基本的绘图操作 g u i 中基本的绘图操作主要包括 点 直线和矩形等基本绘制函数 位块传输 位块缩放传输等区域拷贝操作 单色填充 位图填充等位图操作函数 文字绘制操作 北京邮电大学2 0 1 0 届硕十研究生毕业论文 这些绘图操作是实现用户乔面的基本操作单元 例如要在界面中显示 个 按钮 需要调用的绘图操作包括绘制一个矩形 和对这个矩形的单色填充 并 在按钮上显示对应的字符 文字绘制由于其特殊性 无法使用硬件加速 因此 本文中并不讨论这一绘图操作 下表是对这些绘图操作的简述 函数名来自m i n i g u i b 4 1 表2 1 基本绘图操作分析 函数名简述解释运算量 l i n e t o直线绘制用指定颜色和宽度的线条连接两较大 个点 r e c t a n g l e 矩形绘制本质就是画矩形的四条边线 可较大 以理解为4 次调用l i n e t o f i l l b o x 矩形单色用填充色填充矩形框大 填充 f i l l b o x w i t h b i t m a p 位图填充用设备相关图对象填充矩形框大 b i t b l t位块传输将显示内存中的某块矩形区域的 大 颜色数据复制到另一个内存或显 示区域 s t r e t c h b l t位块拉伸 同b i t b l t 唯一的不同在于源区域大 传输和目标区域大小不同 2 2 2 图形加速的必要性分析 嵌入式系统一个最重要的特性就是资源受到限制 典型的就是其c p u 运 算速度都比较慢 浮点运算能力较弱 因此在设计嵌入式系统时应充分考虑到 这些因素 尽量少让c p u 做事 尽量不进行浮点运算 表2 1 中的最后一栏运算量表示完成该绘图操作需要c p u 完成的运算次数 和运算的复杂程度 直线绘制操作由于需要浮点运算 因此计算量较大 而各 种填充造作 c p u 在执行时通常遵循存储器一 寄存器 计算处理一 寄存器 存 储器的数据流程 在这个过程中 涉及到了两次 f i l l b o x 或三次 b i t b l t 数据传输和一次数据运算 这些数据传输和运算都必须完全占用c p u 如果整 个过程都由纯软件实现的话 会占用大量的c p u 时间并且需要传递大量的数 据 下表表示在7 2 0 p 和1 0 8 0 p 模式下 每像素占用4 字节时要传送的数据量 1 3 北京邮电大学2 0 1 0 届硕上研究生毕业论文 表2 27 2 0 p 和1 0 8 0 p 模式下传送的数据量 模式分辨率传送数据量无图形加速时典型帧率 m b 帧 秒 7 2 0 p 7 2 0 1 2 8 03 5 21 0 1 0 8 0 p1 0 8 0 1 9 2 07 9 1 3 5 如果完全依靠c p u 进行绘图操作 用户界面的刷新速度会非常慢 以1 0 8 0 1 9 2 0 的分辨率为例 在c p u 主频为4 0 0 m h z 时 系统完全无其他负载 如 果完全依靠c p u 进行绘图运算时 经过试验 用户界面只能达到3 5 帧 秒的 帧率 并能明显观察到界面刷新过程中的停顿 这样的效果是完全不能接受的 一个基本流畅的用户界面的帧数至少应该达到2 0 帧 秒 并且在一些小范围的 刷新中表现的更快 同时 由于绘图操作时c p u 会被完全占用 这会使得其他的应用程序无 法获得更多的c p u 资源 进而影响了系统本身的响应速度 因此如果能够采用硬件来代替c p u 完成这些绘图操作 以解放c p u 提 高系统速度和用户体验 因此在对用户界面要求比较高和运算数据量比较大的 场合 采用硬件图形加速是必要的 2 2 3 绘图操作的分解 在2 2 1 节中已经讨论了g u i 中基本的绘图操作 从提供给上层的接口的 角度来说这些操作的含义各有不同 但从硬件的角度来看 必须将分析出这些 操作的实质 并以此来基础设计硬件接口 另外由于硬件并不能理解如f b 设 备 显示内存之类的概念 也必须对硬件抽象出这些概念
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东茂名市化州市播扬镇敬老院招聘10人模拟试卷及答案详解(名师系列)
- 2025贵州金沙县国有资本投资运营集团有限公司招聘经理层高级管理人员(财务总监)1人模拟试卷及参考答案详解1套
- 2025合同修订协议书范本
- 2025辽宁能源控股集团所属辽能股份招聘模拟试卷及答案详解1套
- 2025版融资租赁合同样式
- 2025年广州市合同范本
- 福建速写考试题库及答案
- 儿科中级考试题库及答案详解
- 邮政基金考试题库及答案
- 审计考试题库及答案山东
- 509册泵类书籍大全-截止到20150531
- 新增临时排水管方案
- GB/T 5796.3-2022梯形螺纹第3部分:基本尺寸
- 第七章-辐射防护分析课件
- 研究生英语阅读综合教程reading more
- 比较思想政治教育学-课件
- DB37-T 3577-2019水泥稳定碎石基层施工技术规范
- 眼科学教学课件:眼睑病
- ZXONE8700技术规范书
- 微观经济学生产与成本理论
- 环境监测第2章(2)——水和废水监测ppt课件
评论
0/150
提交评论