>
首页 » 技术文章 » PDA设备的Linux配置及其编译

PDA设备的Linux配置及其编译

作者:吴升艳,赵新田,胡冰  时间:2003-06-12 00:00  来源:本站原创
摘要:本文通过引出在PDA上使用Linux的优势,着重介绍在Compaq iPAQ高端PDA上使用的几款Linux配置版本,以及安装配置和编译的过程。另外,对其图形用户界面的实现和文件系统的选择也进行了论述。

关键词:Linux ;PDA; Compaq iPAQ

引言
Linux是一个成熟又通用的操作系统,可运行在多种硬件平台上(如Intel、Power PC、Sparc、Alpha、ARM等)。它有一个小巧高效的内核,仅包含系统运行最必需的功能,而将可选的部分设计成内核模块。系统启动时,仅加载一个小的内核(0.5MB左右),当需要某些额外功能时,再临时将相应的功能模块插入内核,不使用时,立刻将其撤出,并释放占用的资源。它的设备驱动程序、文件系统、网络协议等均被设计成了内核模块。
当前PDA产品的硬件配置与普通PC机相比有很大的不同。在PDA中只有一些小容量的按块进行操作的闪存和小的液晶屏,处理器能力也较弱,没有键盘和鼠标,导致其文件系统和应用程序的图形用户界面受到了很大限制。因此在PDA上选用小而高效内核的Linux作为其操作系统成为发展趋势。

图1 iPAQ中不同配置版本的关系图

Linux在PAD上的版本及其配置
在大多数PDA中使用的是标准的Linux内核,本文将以Compaq iPAQ 36XX系列中所采用的Linux版本为例,说明iPAQ中Linux的配置,它是由Compaq Research Laboratories(CRL)开发的一种高端PDA设备,采用206MHz的Intel StrongARM RISC处理器和32MB的RAM,还有16MB的非易失性闪存,其显示屏为320*240的液晶显示屏,输入设备为触屏和一些按键,iPAQ还包括内置的扬声器、耳机和麦克风插槽以及USB接口,还可根据需要购买PCMCIA和CF卡。
IPAQ有五种Linux配置(Debian、HandHelds.org、Familiar、PocketLinux、Microwindows),虽然这些配置版本表面上不同,但是核心都是由CRL的原始版本发展而来,图1说明了这些版本之间的关系。
其中HandHelds.org是在Debian版本上发展而来,其它三个版本从HandHelds.org上发展而来。下面对后四个版本进行详细介绍:
HandHelds.org
HandHelds.org是经Debian/GNU修改而得。它的0.21版本中包含有2.4版本的Linux内核以及command shell(bash)等用户指令,同时移植了X11-server(Xfree86)和TWM窗口管理器来实现图形的显示,由于使用了Linux的帧缓存,因而可使用Xfebdev(X-server)来描述服务器。该版本中还含有触屏的驱动程序以及一些示例性的软件,如屏幕校准和适用于X的虚拟键盘,以及MP3播放器和简单的浏览器。
HandHelds.org中的用户界面是基于TWM窗口管理器的,它不适于小屏幕显示,它的优势是网络功能,该版本中提供了针对于朗讯公司的WLAN卡(Lucent Orinoco 802.11b)的内核模块,可向用户提供telnet、ftp和网络文件系统等功能,同时还包括PCMCIA卡的软件服务并支持热拔插(需驱动程序),其不足之处在于它里面没有如记事本、电话簿、日历等相应软件。从整体上看,HandHelds.org提供的版本比较适合于程序员用来开发自己在iPAQ上的软件或是构建新版本。
该版本提供GCC工具,还免费向用户提供带有共享文件系统的StrongARM组件(由6块芯片组成)。iPAQ的内核开发是完全公开的,任何人都可从网上下载到升级的内核代码,目前代码升级集中在电源管理的优化和JFFS2(Jounaling Falsh Filesystem)的开发。

图2 PocketLinux分层结构图

图3 Microwindows层次结构图

Familiar

Familiar是基于HandHelds的版本,它的内核和X-server完全一样,但是窗口管理器有所不同。Familiar的窗口管理器是为小型设备所设计,其中包括Agenda Applications等应用程序用来实现记事本、日历等相应功能。Familiar版本中还实现了手写识别功能,用户可以在屏幕的任意位置上书写。此外Familiar还有一个非官方版本可支持JFFS2文件系统。
PocketLinux
PocketLinux是由Transvirtual Technologies开发的基于HandHelds的版本,它实现了Java的编译环境(Kaffe),该版本具有和X-server一样的内核,但用户界面是基于Kaffe上的Java编译产生的。PocketLinux的分层结构图如图2所示。
PocketLinux中含有基于XML的模块,可以快速创建UI和在PocketLinux程序之间交换信息。但是XML不太稳定,而且速度很慢。
Microwindows
Microwindows是由Century Software开发的,含有Microwindows GUI环境和PIM(Personal Information Management)的版本。Century Software在开发中采用了自己的图形工具集Microwindows来取代X-server,其目的在于使用更小的内存和功耗来实现图形用户界面。
MicroWindows采用分层结构设计方法,允许改变不同的层来适应实际应用,在底层提供对屏幕、鼠标\触摸屏和键盘的驱动,使程序能访问实际的硬件设备和其它用户定制设备;在中间层有一个可移植图形引擎,提供绘制线条、区域填充、绘制多边形、裁剪和使用颜色模式的方法;在顶层实现多种API以适应不同的应用环境。Microwindows可移植性非常好,可用 C 语言实现,只有某些关键部分要求用汇编语言以提高执行速度,实现了两个API函数,同时支持Win32和X11,可以方便的移植Windows或Unix/X11中的代码。目前它使用两种流行的图形编程接口:Win32/WinCE图形显示接口(GDI)和Xlib-like接口。图3所示为Microwindows的层次结构图。
Nano-X组件可以为应用程序提供GUI服务,从某种意义上来说,它近似于X-server。Nano-X服务器大小约为210KB,在iPAQ上运行时需占用1MB的内存空间,而HandHelds使用的X-server(Xfbdev)大小约为870KB,运行时需占用3.5MB的RAM,相比之下Nano-X更为高效。但是Microwindows没有X11结构中的窗口管理器,每个应用程序都需要自己来管理窗口。
Microwindows中还实现了有名的射击游戏-Doom。此外在Microwindows中还包括一个浏览器-View-ML,可显示标准的HTML页面(3.2版本),但是不能运行Java-applets。

系统安装
上述各种版本的安装几乎一样。由于iPAQ的闪存中预装了微软的PocketPC,因此在安装Linux之前要对其保存。首先将iPAQ连接到PC机,然后将PocketPC备份到PC机;第二步把Bootloader装到闪存的开始头,Bootloader和x86上的Lilo(Linux Loader)很类似,它可把闪存中的内核装载到RAM中去,解压后自动跳到内核源代码头,Bootloader还提供了写闪存终端,这样就可以更新内核及其配置版本的剩余部分;第三步使用Bootloader加载内核,加载后,其配置版本的剩余部分也被加载到闪存中;最后设置引导参数,整个系统就可被引导来装载Linux。这里注意,配置版本的源码是以CRAMFS文件的格式编写的,该文件系统要被JFFS2所取代。
适于闪存的文件系统
PDA闪存通常使用以下三种文件系统:CRAMFS、RAMFS、JFFS2,有时也用EXT2,不过其效果欠佳。
CRAMFS中的数据已被压缩,属于只读性文件系统,不能在闪存中修改。用户想获取数据时,CRAMFS先把数据送到RAM中,用户从RAM中读取。一般CRAMFS的上层为RAMFS文件系统,经修改过的文件都保存在RAM中。图4为文件系统的层次结构图。
RAMFS和CRAMFS结合的缺陷在于,一旦出现掉电等特殊情况,保存在RAMFS中的修改数据将全部丢失。为此Linux采用了新的文件系统-JFFS2,它允许在闪存中直接进行修改,在掉电时会自动保存数据。JFFS2的数据压缩方式和CRAMFS一样,其数据可存放在全部的闪存区域中,数据的写入和删除分布在很大一片区域中以防止同样的块会被重复使用。
引导顺序
iPAQ的引导顺序和普通PC机有所不同。首先在iPAQ电源接通后,BIOS从闪存的某个特定位置载入启动代码,将Bootloader存入该区域并装载。Bootloader将内核装载到RAM中并解压,然后跳至内核代码的开头,内核被初始化后将运行名为“linuxrc” 的文件,根据这个文件中的内容运行其它初始化程序。

图4 文件系统层次结构图

PDA配置版本的编译
目前台式机上的Linux版本虽有数百种,但它们提供标准的Linux内核和操作系统的基本功能,不同之处一般表现在系统的安装、管理和使用上,特别是文档和用户支持方面。但各品牌PDA之间却差异很大,处理器通常采用ARM、MIPS、DragonBall等,处理器周围还有许多互不兼容的设备。目前大多数PDA都是将操作系统存放在ROM中,更新操作系统与更新ROM芯片同步进行,而iPAQ等PDA在闪存中存储操作系统,直接写入新的操作系统就可更改原系统。
iPAQ主板上的闪存为16MB,在配置版本时一定要考虑其大小不要超过闪存的

相关推荐

Linux将进军汽车智能系统领域

Linux  汽车智能系统  2013-07-09

Android回归Linux核心怀抱

Google  Linux  Android  2012-11-01

EXT4数据损失bug影响Linux稳定版内核

EXT4  Linux  2012-10-25

Fedora Linux 18 延期至年底

Fedora Linux 18  2012-10-17

Marvell和Tuxera推出业界最快的全功能NAS解决方案

Marvell  Linux  NAS  2012-01-19

ARM-Linux嵌入式系统的BootLoader分析与设计

嵌入式系统  Linux  2011-09-19
在线研讨会
焦点