下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【Word版本下载可任意编辑】 Microwindows的嵌入式Linux轻量级图形应用库的设计 嵌入式Linux系统的很多应用领域,诸如消费类电子产品、测量控制设备等,图形用户界面不仅在技术上是软件系统设计的一个重点,而且在商业上也关系到用户对该产品承受的程度。 根据产品功能低高端的不同定位,系统设计对图形用户界面的要求也不同,一般大致可以分为单进程方式的轻量级图形界面和多任务窗口系统图形用户界面GUI,前者主要用于低端的信息终端和工业控制系统,后者主要用于PDA、机顶盒、DVD/VCD播放机、WAP手机等产品中。 目前,在Linux操作系统中,一般可将图形应用库粗略地分为三个不同层次。层次
2、是图形根底设施,它们本身没有提供相应的应用程序编程接口,而是集成在操作系统中或采用某种封装形式,用作其他图形或者应用程序的基本函数库,较典型的有X Window、SVGALib、framebuffer(帧缓冲)和LibGGI等;第二层次是函数库,它们提供了大量的应用程序编程接口,较典型的有Xlib、GDK、GTK+、QT、SDL、OpenGL、PEG和DirectFB等;第三层次多任务窗口系统图形用户界面GUI,较典型的有Microwindows、OpenGUI、Qt/Embedded和MiniGUI等。 在低端的嵌入式系统中, 由于用户图形界面仅仅需要用到一些简单的画点、画线、图片显示和中西
3、文输入/显示等,同时考虑到成本、占资源大小和稳定性等诸多因素,因此在对Microwindows开展相应裁减的根底上开展应用图形库的设计。 1 Microwindows的分层构造 Microwindows是一个着名的开放源码的嵌入式GUI软件,专门用于小型嵌入式设备上开发高性能图形应用程序和多任务窗口系统。它用C语言实现,可移植性好,能够在嵌入式Linux上运行。目前,它不仅可以在支持Framebuffer的32位嵌入式Linux系统上运行,还可以在SVGALib库上运行,甚至可以被移植到16位的ELKS和实模式的MSDOS上。 Microwindows采用分层构造设计,共有三层(见图1)。底层
4、驱动层是面向基本的图形输出和键盘、鼠标或触摸屏的驱动程序,在程序中通过相应的数据构造就能访问实际的硬件设备;中间引擎层提供底层硬件的抽象接口,是一个可移植的图形引擎,提供点线绘制、区域填充、多边形绘制、裁减和RGB颜色模式使用等;应用层分别提供兼容于X Window 和Windows CE(Win32子集)的API,同时提供窗口管理。 底层驱动层也叫设备与平台相关层,这一层的功能是将系统与设备和操作系统平台的具体细节屏蔽起来。它通过实际的设备驱动程序接口或者OS系统调用来与硬件设备交互,这些硬件设备主要包括屏幕、鼠标和键盘等。我们使用设备对象(device object)的概念来描述一类设备,
5、每一个对象描述了一类实际设备的属性和方法。比方,屏幕设备对象就描述了其各种属性(屏幕尺寸、分辨率、像素深度、像素格式、逻辑显存首地址等)和基本方法(打开和关闭显示器、设置调色板、返回屏幕属性、读写像素点等)。 层实际上是以设备对象的方式为中间层提供了一个抽象的设备驱动界面。Microwindows在这一层中对屏幕、鼠标、触摸屏和键盘等设备分别定义了一个对应的数据构造。其中,屏幕设备驱动构造体SCREENDEVICE指定了诸如设备的大小、硬件使用的图形模式等底层的显示情况以及打开、关闭、画点线等方法;键盘设备驱动构造体KBDDEVICE定义打开、关闭和读取键值等方法; 屏幕信息的构造体MWSCR
6、EENINFO和位图信息的构造体MWIMAGEINFO是两个常用的构造体,用以取得当前打开的显示屏幕和位图的长、宽、位色等属性值。 中间引擎层也叫设备与平台无关层,这一层的功能是提供一个可以为各种应用层共享的与设备无关的图形引擎,其中的主要工作就是实现各种图形函数和输入设备的功能函数。对于中间层,它向下看到的是各类设备对象,向上则是要提供一个抽象的图形界面,使得上面的应用层对它所使用的到底是什么设备对象不用去理会。当运行在Linux系统中时,Microwindows提供的所有绘图函数都是通过调用底层屏幕驱动Framebuffer或SVGALib来实现的。它支持行绘制、区域填充、剪切以及RGB颜
7、色模型,控制字体的显示等。 层即应用层,这一层的功能是按照应用的具体要求为应用程序提供适当的应用层用户界面。当应用程序不需要窗口系统的时候,用户自定义图形界面将十分简单,甚至可以什么都不做而直接使用中间层提供的抽象界面(本文讨论的图形应用库就是基于该原理来构建的)。如果用户需要完善多任务窗口系统,则可以使用抽象界面来实现其应用程序编程接口(API)以及窗口和消息机制等。Microwindows实现了MicrosoftWin32/WinCE图形显示接口(GDI)和Xlib(XWindows)接口两种API以适应不同的应用环境。其中前者应用于所有的Windows CE和Win32应用程序,用于设计
8、类Win32图形用户界面GUI;后者就像Nano-X,应用于所有Linux X插件集的层,这样可让Linux图形程序员X接口开发图形应用程序。 显然,Microwindows的分层设计使得其能够在需要的时候易于改写和定制,能够运行在任何支持Framebufer的Linux系统(2.2以上版本的内核)中,这些特点使得Microwindows在嵌入式系统设计中的应用十分广泛。 2 图形应用库的设计 尽管Microwindwos已经提供了一个全功能的可视化图形用户界面开发工具,但是由它生成的代码量很大,在某些类低端的嵌入式Linux系统中不适合。 因此,设计一个面向低端的、非窗口管理的基本图形应用库就显得非常重要。它占用较少的磁盘空间和较少的内存开销,旨在为嵌入式系统构建基本的图形用户界面提供编程接口。基本图形应用库的设计思路是以Microwindows驱动层和独立图形引擎层为,将它们抽取出来,不再采用分层构造,构建一个尽可能小的、满足绘图、显示、中文输入等功能的轻量级图形应用库。 该图形应用库类似于Turboc C,支持灰度/彩色LCD和PS/2键盘,屏幕驱动支持1/2/4/8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论