嵌入式Linux图形系统(GUI)介绍
当你在桌面PC上安装Linux时,你通常在很少的几个"标准"的图形支持组件中选择。你很可能使用X Windows系统(XFree86或者Xorg)作为显示界面的基础(与Linux驱动一起来控制硬件),GNOME或者KDE作为桌面环境,浏览器则在FireFox,Konqueror或者Opera等功能全面的几个浏览器中间选择.
但是,这种典型的桌面Linux"桌面栈"("graphics stack")是不适合于嵌入式Linux应用的.嵌入式设备通常有着更受限制的资源,在内存和存储空间上对桌面图形软件来说,都显得捉襟见肘。举个例子,嵌入式设备通常只有2-16MB的Flash ROM,4-32MB的RAM,但这些典型的桌面图形组件都是声名狼藉的资源消耗大户:
X Window System : 5MB RAM, 16MB disk
GNOME : 14MB RAM, 95MB disk
KDE : 11MB RAM, 96MB disk
Mozilla : 12MB RAM, 26MB disk
这些内存需求不仅需要钱来购买,也需要更大的电路板安装,并且会已经消耗更多的电源。嵌入式系统有着和桌面图形组件不一样的需求,他们可能需要不同的定制的外观风格,控件,装载速度,以及不同寻常的显示或者输入设备。
为了满足日益增长的嵌入式Linux市场的需求,许多图形支持项目和产品也层出不穷,目标环境包括---固定设备便携设备 和移动设备,应用范围也从 手持消费产品,比如PDA和蜂窝电话(手机),到医疗仪器,工业自动化,以及商业航空座舱显示。
===开源嵌入式Linux图形系统软件===
Dillo -- Dillo 是一个非常小(小于300KB),快速,开源多平台web浏览器,它完全使用C语言写的,建立于GTK+库之上Dillo的高效率和对软件库非常小的依赖,使得它非常适合于嵌入式应用。Dillo可以同一个嵌入式web服务器联合起来,可完全避免使用 窗口管理器。
DirectFB -- DirectFB 是一个非常小的程序库,它提供给开发者以图形硬件加速支持,输入设备处理和抽象,集成窗口系统,支持半透明窗口和Linux Framebuffer设备的多重显示层。它是一个完全的硬件抽象层和软件fallback为每个图形操作,不支持underlying 硬件。
The Familiar Project --开源的PDA Linux项目,是handhelds.org项目的一个分支,聚集了一个完整的基于Linux的PDA计算平台的所有关键组件。目前的发行版包括:一个基于Blackbox的窗口管理器,Agenda Computing的基于Fltk+的PIM(个人信息管理)应用程序,一个嵌入式Python实现,系统配置和设置备份工具,OpenSSH客户端和服务器,基于Debian的ARM内核。
FBUI -- 非常小的GUI,驻留在linux内核中,FBUI最大的特点就是小,然后就是精炼,再次就是它只是一个driver,第四就是内核驱动,不属于用于空间。
GGI Project -- “通用图形接口CGI“工程致力于开发一个快速,稳定,开源的,跨平台多媒体API系统,完全为嵌入实现系统设计的。GGI是快速,整洁,抽象,动态模块和高度优化。
GPE Palmtop Environment -- 为palmtop/handheld计算机提供一个自由软件GUI环境,使用X Windows系统和GTK+ widget toolkit
GtkFB -- 从2.0开始,GTK+开始支持直接描绘(render)给Linux Framebuffer而不是X-Windows系统,对资源受到限制嵌入式系统来说,非常好,因为即可利用已有的丰富的基于GTK的应用程序,又可避免 X Windows的系统消耗。
handhelds.org PDA support -- 想建立自己独特的Linux PDA吗?早些年,Compaq创建了Open Handheld Program。现在iPAQ Linux移植版本可用。
Matchbox -- 小型窗口管理器,为资源受限制的X11-enabled 设备,比如手持计算机,PDA,机顶盒,消费性电子设备等显示大小,外村,CPU带宽,输入机制受到限制的设备。Matchbox包括一个窗口管理器,一个面板,一个桌面,一个共享功能程序库,一些小的面板应用程序。
Microwindows -- 一个开源项目,将现代图形窗口环境的特性引入到小型设备和平台。MicroWindow能建立在Linux桌面环境,也可跨平台建立于其他目标设备。注意:MicroWindows改名为Nano-X,因为MicroSoft Windows的缘故
NxZilla (前身NanoZilla) -- 一套程序库,允许Mozilla在NanoX服务器上运行的(NanoX Server来自于Mircrowindows 项目)
OpenGL ES -- 一个轻量级的,无授权费用的嵌入式图形标准,可为很多嵌入式系统和设备,提供图形API轮廓。包括手持无线设备,汽车和航空显示设备,多媒体消费电子设备,比如高级数字电视,机顶盒,游戏控制台。
OpenGUI -- 一个快速的32位的高级C/C++图形库和窗口库/GUI,建立在一个快速的,低级的x86汇编语言图形内核之上。提供原始的2D绘图能力和事件驱动的窗口API
PicoGUI -- 小巧,可移植的客户/服务器 GUI设计,工作在许多不同类型的硬件上,包括手持计算机,像X Windows系统一样,他有一个弹性的客户服务端架构。不像X,字体,位图,窗口小部件,以及其他应用程序需要的东西,都是直接建立在服务器上的。牺牲了一点灵活性,带来的是速度上的提升和体形的缩小。
Qt/Embedded -- 提供一个全功能的图形栈(Graphic Stack),从硬件接口到完全的GUI工具。API同流行的Qt/X11和Qt/Windows是一样,但Qt/Embedded不是基于X11,所以很大程度上减少了内存的需求,内存需要量,可调整到800KB到3MB (intel x86).Qt/Embedded是一个在GPL开源软件,也被它的所有者Trolltech以其他License发布
Simple DirectMedia Layer -- 开源跨平台的多媒体开发API/程序库,设计为快速访问图形Framebuffer和音频接口.SDL当前被应用到很多嵌入式Linux实现中,比如MicroWindows.
Tiny-X -- 一个小型的footprint X Window 服务器,为嵌入式系统设计.它由XFree86 核心开发小组的Keith Packard开发
SuSE赞助的.目的是建立一个消耗更少内存的,稳定的.典型的基于Tiny-X的Xserver少于1M内存在x86 CPU上,它已经移植到几个项目上了,包括KDriver(
http://www.pps.jussieu.fr/~jch/software/kdrive.html),
SmallX(
http://www.superant.com/smalllinux/tinyX01.html),
Integerated Tiny-X(
http://www.x-oz.com/tinyx.html)
ViewML -- 一个以嵌入式Linux平台为目标的的自由的,开源web浏览器.目前消耗760KB磁盘,2.1MB RAM
WML Browser -- 由5NINE支持开发的浏览器项目,允许无线设备有WAP功能的.支持多协议栈(WAP 1,2.1,http)
不同的环境用不同的输入设备.浏览器同Framebuffer一起工作
Xynth Windowing System -- 嵌入式客户/服务器窗口系统,提供轻量级的GUI窗口,在基于Linux的嵌入式系统和设备上.
比如手持设备和机顶盒.
===商业嵌入式Linux图形系统软件===
Access: Netfront browser -->一个嵌入式浏览器,为信息应用系统设计的,需要较少的内存和CPU性能.他要求至少1.3M ROm和2MB的RAM,支持完全的HTML 3.2和部分HTML 4.0特性,frames,javascript,cookies,web-printing和多语言.它的模块和可缩放的体系结构允许应用程序模块和插件来增强.一个独立的用户界面层和设计工具允许设备制造商建立独特的外观和风格.
ANT: Freesco browser -- 一个小内存footprint的JAVA标准兼容的浏览器,可使OME厂商快速,简单设计branded 界面为Internet应用程序.它是平台独立的,可同任何硬件和操作系统使用(包括不同的嵌入式Linux实现)
Century Software: PIXIL PDA and Microwindows :一个完整的PDA系统,包括一个操作环境,PIM应用程序,email客户端,web浏览器,一套多媒体应用程序,MicroWindows图形窗口系统(前面已经介绍过了)是PIXIL PDA 解决方案的核心.
Espial: Espial Suite -- 一个完全的100%的Java 应用层,独立于设备栈上层的 操作系统和JVM,包括 Espial DeviceTop 图形OSGi客户端,Espial Escape web浏览器, Espial Ebox email客户端, Espial Espresso轻量级工具.
Feynman Software: MiniGUI --一个双重协议的(GPL或者商业协议)的项目,建立一个小型的窗口系统,支持嵌入式系统和设备.它提供相应Win32API的窗口管理功能.
Fluffy Spider: FancyPants --- 商业图形框架,支持,skinning,overlays,fancy 特效.目标是中量级的消费电子和移动设备比如 POS(Point of Sales/Sevices)系统,机顶盒,移动电话
NetClue: Clue WBC browser -- 一个小型的,模块化的,平台无关的100% Java浏览器.支持Unicode,平滑滚动,流线型分析和显示,web打印,定制用户界面,WAP兼容,其他特性包括 HTML 4.0 ,XML, HTTP 1.0和1.1 ,CSS, DOM, cookie,javascript,Java Applets.
Swell Software: LinuxPEG -- LinuxPEG是一个嵌入式GUI库和开发工具,特意为嵌入式系统设计的,LinuxPEG库,设计为运行在任何Linux 发行版
Trolltech: Qtopia and Qt/Embedded -- Qtopia是一个用于PDA,palmtop计算机和IA(internet appliances)产品的移动设备窗口环境和应用套件,它基于Qt/Embedded,包括PIM应用程序,Internet客户端,娱乐和游戏程序,Qtopia/PDA可使用商业版权或者开源协议,但Qtopia Phone Edition 只能用于商业。