嵌入式Linux系统下Microwindows的应用
摘要:通过对嵌入式GUI软件Microwindows进行分析并与X window进行对比,阐述Microwindows用于嵌入式设备上的优点;简要论述Microwindows的体系结构和图形应用程序接口;介绍其设备驱动特性、API、客户机/服务器模型、画图机制和FLTK。
关键词:嵌入式系统 Microwindows Linux
引言
在进入后PC时代以后,嵌入式设备以一种无法抑制的迅猛速度普及和发展到日常生活及工作当中,众多知名开发商为了抢占市场和争夺利润,竞相推出各种性能优异的软硬件及内核芯片。鉴于以视窗为代表的桌面操作模式取得巨大成功,该模式目前已成为国内外开发者们在嵌入式设备中的首选方案。
近几年,随着Linux技术的兴起,越来越多的企业和科研机构把目光转向嵌入式Linux的开发和研究。Linux不仅具有桌面电脑的全部功能和特性,允许修改和根据用户的要求进行定制,而且作为一种免费的开放式源码,还支持目前在嵌入式设计领域中常用的新型微处理器,如StrongARM、MIPS以及PowerPC等,具有稳定、高效、易定制、易裁减、硬件支持广泛等特点。Microwindows是一个著名的开放式源码的嵌入式GUI软件,目的是把图形视窗环境引入到运行Linux的小型设备和平台上。作为X Window系统的替代品,Microwindows可用更少的RAM和文件存储空间(100K~600KB)提供相似的功能,允许设计者轻松加入各种显示设备、鼠标、触摸屏和键盘等;可移植性非常好,可用C语言和少部分汇编语言实现,支持Intel 16位、32位CPU,MIPS R4000以及基于ARM内核的处理器芯片,有多种平台支持Microwindows。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 X Window的不足
由于使用了带有TCP/IP结构的自由式开放源码操作系统,使嵌入式设备进入了一个创新应用时代,不过这些新的应用需要考虑其资源环境,这是因为多数的嵌入式设备缺少硬件驱动和大的RAM。目前,在Linux系统中普遍使用X Window系统,如图1所示。X Window是在20世界80年代早期由MIT、DEC等提出来的,是一个基于Client/Server结构的视窗系统;允许在任一台UNIX主机(Clients——客户端)上运行程序,而在基于X的终端(Server——服务器)上显示出来。在这个过程中,相当一部分代码用于确认主机和服务器上运行的Client/Server程序是否正常。目前,大多数X的客户端和服务器是在同一台机器上运行,X Window服务器经编译后一般用于自动检测硬件。服务器中还包含有众多的画图函数,它们的位置根据执行速度被位置在裁减层之上或之下。这些便利X Window过于臃肿和复杂,运行时需要至少8MB的内存空间。
2 Microwindows分析比较
对于大多数嵌入式设计,尤其是在运行专用图形程序的场合,X Window不是一种恰当的选择。由此而发展起来的Microwindows是专门设计用于在小型设备上开发具有高品质图形功能的开放式源码桌面系统,有许多针对现代图形视窗环境的功能部件。它的结构设计使其可方便地加入不同的显示、鼠标、触屏以及键盘等设备。Microwindows基于2.2.0版本的Linux系统如图2所示。其内核所包含的代码允许用户程序将图形显示的内存空间作为framebuffer进行存取操作,这样在用户程序空间中可作为内存映射区域来直接控制图形显示,可使得用户在编写图形程序的时候不再需要去了解底层硬件,这是目前Microwindows在嵌入式系统中被很多人使用的原因。javascript:window.open(this.src);" style="cursor:pointer;"/>
设计得在设计Microwindows时沿用了已有的两个图形应用程序接口(API):一是Microsoft Windows中Win32/WinCE的图形设备接口(GDI),它适用于所有Windows CE和Win32的应用程序;另外就Nano-X(Xlib-like界面),它与GDK非常相似,用在Linux上,是像X的API,用于占用资源少的应用程序。这使得熟悉Windows或者是Linux X11的用户可在熟悉的环境下开发图形应用程序。
Microwindows在运行过程中仅需要50~250KB的内存空间,远小于X Windows系统所需空间。这主要是因为Microwindows对于在驱动层的每一个绘图函数采用的是单进程的方式,由驱动层核验是否裁减并调用驱动程序来绘制未被裁减的像素点或线;而在X Window系统中,则是出于对速度的考虑,包含所有像素点的绘制程序并分别有裁减和未裁减的版本。Microwindows完全支持新的Linux内核的帧缓冲区结构,同时支持1、2、4、8、16、24、32位像素点显示,支持调色板、真彩色、灰度等颜色模式,并对渲染提供内置支持。在其API函数的支持下,还可以以RGB的格式描述上述的颜色模式,系统中包含颜色转换的程序,可将像素点转换成相近的可显示颜色或相应单色系统中的灰度级。虽然Microwindows支持Linux系统,但它是基于相对简单的屏幕驱动界面结构,因此,可在许多不同的实时操作系统(RTOS)上运行,甚至于那些无硬件的实时操作系统也可运行Microwindows。这样,可使得客户的图形应用程序在不的工程中共享使用,也可在不同的RTOS上运行不同的目标程序而不需要重新编写图形应用程序,大大提高了编程效率。
Microwindows支持图形目标平台的主机平台竞争,也就是说应用于Linux的Microwindows应用程序不需要跨平台编译,就可在桌面上直接运行和测试,同时仍可在目标平台上运行。这一