嵌入式Linux体系下Microwindows的应用
发布日期:2011-04-15
择要:通过对嵌入式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。 |
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在嵌入式体系中被很多人利用的缘故因由。
筹划得在筹划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应用步调不须要跨平台编译,就可在桌面上直接运行和测试,同时仍可在目标平台上运行。这一点需通过利用Micorwindows的X11屏幕驱动器实现,同时驱动器可以根据像素点和颜色值来仿照目标平台的表现。因此,纵然桌面体系是24位的颜色模式,它也可以以2色模式表现目标体系中的应用步调。
敷衍那些熟习利用Microsoft Windows或Linux X Windows的步调员页言,经编写应用步调时是有肯定区别的。Microsoft Windows的编程员一样通常利用MS-Visual C++的类库(MFC)中的C++应用步调框架大概是更新的ATL框架,在绘制图形时利用Win32图形配置接口(GDI)。Windows中还包括有很多Win32 GDI中的应用界面控件,如按钮、列表等。而X Windows体系提供了一个低级接口——Xlib,仅用于实现最低级大抵的画图结果,并将其封装成步调包在需表现时在表现配置上运行。在用户界面中,大多数的办理利用插件,在Xlib的上层参加插件集来实现更高级的函数。如今,对Microwindows的应用正在逐阵势参加GTK+/GDK以及FLTK插件,以实现更多的用户界面控件。
3 Microwindows的体系布局
由于Microwindows在筹划上有着明显的分层布局,如图3所示,其配置与平台干系层、配置与平台无关层和应用层之间层次明白、布局明显,因此勿需窜改其团体布局,只需在其相应的部分添加代码即可实现一些更为巨大的结果。
在Microwindows的最底层(配置与平台干系层),体系针对表现屏、鼠标、触屏以及键盘等各定义了一个数据布局。该数据结讨论顶层布局一样,供图形引擎利用,包括了针对指定设置和硬件驱动代码。Microwindows中还包括了诸多配置和利用体系的种种版本的驱动步调。屏幕驱动可支持体系1的、2、4、8、16、24、32位表现和调色板、真彩色、灰度等颜色模式。屏幕驱动中还包括一些入口指针,这些指针分别用读写像素、绘制程度或垂直线,在屏幕和内存之间相互映射内存空间。在实现这些底子指针的进程中需运行包括TrueType或Adobe Type1的字体支持、RGB颜色支持、JPEG以及BMP图形处理惩罚处罚等Microwindows上层函数。要是屏幕驱动中还包括有硬件加快的话,仅需变动驱动步调即可;也可在体系中添加触屏、键盘、按键等的输入。
Microwindows的中间层是图形引擎层(也称为配置与平台无关层),由于全部的画图函数都通过调用屏幕驱动来实现,该层与硬件无关。图形引擎层为应用层提供了一系列相应的入口指针调用画图函数,还为全部的颜色指定了RGB的颜色模型;同样,该层也与表现配置无关,可以由RGB值为刚倔强件中的像素值。除此之外,Microwindows还在中间层实现淘汰结果,它采取多矩形算法,可在恣意巨大的地区中实现画图结果。中间层还要控制全部字体的表现,支持FreeType以及利用T1Lib的Adobe Type 1字体、支持比例字体,同时还支持ASCII、Unicode-16、Unicode-32、UTF-8编码端正。
Microwindows的最高层(应用层)实现了窗口交互体系,这使得步调员既可在全屏幕表现,也可在层叠的窗口中表现。一层还包括变乱处理惩罚处罚,可将触摸屏、按键等引发的变乱发送给应用步调。
Nano-X API容许步调可以根据Client/Server协议通过网络或是本地的UNIX主机举行编译,以同时表现几个运行在已连接到Microwindows办事器的嵌入式配置或长途主机上的步调。除此之外,Client/Server协议还可以利用共享的内存空间客户端和办事器之间传播数据。Nano-X可在每个客户机上步运行,这意味着一旦发送了客户机恳求包,办事器在另一个客户机提供办事之前不绝等待,直到整个包到达为止。这使得办事器代码非常大抵,而运行速率仍非常快。
4 Micorowindows上的FLTK API
FLTK是一个大抵机动的GUI东西箱,分外实用于占用资源很少的环境。它提供大多数窗口构件逐一按钮、对话框、文本框以及大方的“赋值器”选择(用于输入数值的窗口构件),还包括滑动器、转动条、刻度盘等别的构件。针对Microwindows GUI引擎的FLTK的Linux版本被称为FLNX,它能用来为嵌入式环境创建一个大方的UI构建器,由两个构件构成:FI_Widget和FLUID。FI_Widget由全部底子窗口构件API构成,占用40~48KB的资源。FLUID(Fast Light User Interface Desigher,快速轻巧的用户界面筹划器)是用来孕育孕育产生FLTK源代码的图形编辑器,占用约莫380KB资源(包括每个窗口构件)。
FLTK是一个C++库,由于大多数当代GUI环境都是面向东西的,这定名编写的应用步调移植到雷同的API中会更容易。
结语
Microwindows正在嵌入式开辟范畴稳步生长,是完全免费的开放式源代码,为嵌入式配置提供了更多的办理方案;恣意对将Linux定制于PDA、掌上机大概可移动配置感兴趣的人都可从因特网免费下载,并将其移值或开辟。熟习图形应用步调的用户可以很快就在该体系上编写本身的图形应用步调,在将来的嵌入式体系筹划中,它的作用是无可限量的。