基于Microwindows的嵌入式GUI分析及应用
扫描二维码
随时随地手机看文章
摘 要:嵌入式图形用户界面( embedded gui) 是嵌入式计算机系统的核心技术之一。本文首先阐述embedded gui的应用现状,指出microwindows (最新版本0. 9) 的优势所在;然后,分别从体系结构和应用编程接口的角度,结合源代码,深入分析了microwindows ;最后,在red hat linux8. 0 的仿真环境下演示了microwindows 的应用。关键词:microwindows ;嵌入式gui ;图形用户接口( gui) ;嵌入式系统引言 嵌入式图形用户界面与存储安全、嵌入式java 虚拟机并称为嵌入式系统中的三大关键技术。在嵌入式应用领域,伴随着硬件技术的发展,传统意义上的人机交互界面正趋于淡化,取而代之的是具有友好人机交互支持的嵌入式图形界面。 嵌入式计算机系统以其关键部件的高性能、低价格等优势为embedded gui 的发展奠定了坚实的市场和技术基础;而基于linux 开放源代码、遵循不同授权条款的诸多embedded gui 软件及其自由开发者,又大大推进了embedded gui 的应用进程,起到推波助澜的作用,如microwindows、minigui 及qt/ embedded 等。 嵌入式系统是以应用为中心、计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统的这一定义也就界定了嵌入式系统对embedded gui 的基本要求。这些要求如下: (1) 轻量级、占用系统资源少; (2) 性能高,友好的人机互动; (3) 可靠性高; (4) 模块架构,配置灵活,便于移植。 目前,在嵌入式应用领域比较成功的embedded gui主要有minigui、microwindows 和qt/ embedded。 minigui 和microwindows 都是自由软件,只是前者遵循l gpl 条款,后者遵循mpl 条款。这两个系统的技术路线也有所不同。minigui 的策略是首先建立在比较成熟的图形引擎之上,如svgalib 和libggi ,开发的重点在窗口系统、图形接口上。 microwindows 目前的开发重点则在底层的图形引擎上,它不需要其它图形系统的支持。在linux 操作系统上,microwindows 也可以充分利用linux 提供的framebuffer机制来显示图形。并且,microwindows 还具有很强的移植性,能够在大多数微处理器上运行。 qt/ embedded 由于移植了大量原来基于qt 的xwindows 程序,提供了非常完整的嵌入式gui 解决方案,再加上opera 浏览器,可以说是一个成熟的商业软件。然而,qt/ embedded 不能运行在非qt 的软件中,其源代码也过于庞大。 作为一个开放源代码项目,microwindows 将现代图形窗口技术的一些特性展现给了编程团体,而不需要诸如microsof t windows 或x window 这样占用较大磁盘和ram 空间的高级窗口的支持。它直接面向显示硬件本身,不需要任何操作系统或其它图形系统的支持,可以在linux 2. 0 以上的framebuffer 系统上很好地运行。microwindows 本身就被设计成便于移植、能够在大多数硬件和软件环境下运行的embedded gui。 microwindows 最新版本0. 9 有如下新特性: (1) 支持新的nxl ib 项目,nxl ib 对x11 的二进制程序可以不加修改地直接在microwindows 里运行,而无需x11 server 支持; (2) 支持sharp zaurus、tuxscreen、trimedia 及cygnus x11 平台; (3) 内建标准化校准(nxcal) 支持,如一个触摸屏驱动程序可以支持包含ipaq、zaurus、ads 和tuxscreen 在内的大多数arm 平台; (4) 增强了字符支持,包括big5 、gb2312 、euccn、euckr、eucj p 和j isx0213 等; (5) 大幅提高了x11 屏幕驱动程序和文本画图的速度; (6) 32 位argb 硬件驱动支持单色alpha ; (7) 支持带有havi 键盘映射的l irc 键盘; (8) 从源代码中为html 和pdf 文档自动生成支持基于doxygen 的文档。 总而言之,最新版本的microwindows 在硬件驱动加速上、在图形引擎算法上以及代码质量上,都比原先的版本有较大的改进。microwindows 的api microwindows 采用分层体系结构设计,提供了丰富的api 支持,支持win32/ wince gdi 和nano-x两种api 集。 microwindows 体系结构 microwindows 的体系结构由下至上,分别为具体硬件、驱动层、图形引擎层和api 层,如图1 所示。用户可以根据具体应用需求对不同层的代码进行修改或重写。(1) 设备驱动程序。 键盘驱动程序主要有两个,分别是kbd _ tty. c 和kbd _ bios. c 。前者主要用于linux 和el ks 系统,而后者主要用于msdos 实模式。 鼠标驱动程序主要有三个:mou_gpm. c ,用于linux 的一个gpm 驱动; mou _ ser. c ,用于linux 和el ks 系统;mou_gpm. c ,主要