Sharp Zaurus 手持式系统是嵌入式 Linux® 系统的一个先锋,Peter Seebach 认为在一种技术早期出现时就为其贡献自己的力量是一个好主意。在这个 Linux 的魅力 系列文章中,Peter 将对 Zaurus SL-5600 进行一下拆解,从而更好地了解一下它的历史。
George Santayana 曾经说过,“那些忘记历史的人注定会重复历史”。但是在计算机设计业界中,这个警告似乎并没有受到重视。很多公司通常都会重复同样的错误和教训,并对以前的系统反复进行改进。
当 Sharp Zaurus 首次声明要 “运行 Linux” 时,Linux 社区一时间变得热闹非凡,既有爱好者的欢呼,又充斥了各种谣言。几年以后,现在仍然有一些运行 Linux 的手持设备不断从 Sharp 的工作中吸取灵感和思想,尽管基于 Linux 的 Zaurus 在美国市场上已经逐渐退出了。
本月的 Linux 的魅力 文章将来介绍一下 Sharp Zaurus SL-5600。这是第二个零售版本(第一个零售版本是 SL-5500,这是在 SL-5000D 开发版之后的一个版本),本文将介绍一下这个领域中当前努力的根源。
嵌入式 Linux 系统的设计加入了很多方面的考虑;Zaurus 是第一个解决这些考虑的系统。Linux 社区对此的最初反应非常狂热,但是这个设备在美国市场上并没有取得 Sharp 所期望的成功。
硬件设计
在设计嵌入式系统时,一个主要的驱动因素是 硬件的功能。Zaurus 使用了手持式计算机非常典型的硬件平台:
- CPU 是 400MHz 的 Intel® XScale;Linux 称之为 ARM 处理器,因为 gcc 并没有试图与市场术语紧密吻合。
- 这个系统上安装了 64MB 的闪存和 32MB 的 RAM。5500 上有 32MB 的闪存和 64MB 的 RAM;结果是有些程序可以在 5500 上运行,但是无法在 5600 上运行。
- 另一方面,5600 可以很好地解决由于断电而引起的问题。
- 它有一个 320x240 的屏幕,这是嵌入式 PC 的典型设置。(以后这个模块升级到了 640x480 的屏幕,这看起来已经相当舒服了。)
- 它还有 CF(Compact Flash)和 SD(Secure Digital)插槽,可以支持非存储设备,例如 802.11b 无线 CF 卡或以太网适配器。
- Zaurus 与大部分 PDA 一样,也有一些通用键,不过它还有一个很小的隐藏键盘。这个键盘是一个真正的卖点;相对于手写识别来说,即使是一个非常小的家盘也是非常大的改进。可以使用键盘,这种特性的确令人惊讶。
5000 和 5500 的硬件设计非常类似。后来的模块采用的是蛤壳设计,它提供了更大的键盘,其中屏幕可以翻上来构成一个传统的肖像格式的 PDA 屏幕,它具有一个输入笔 —— 这与现在大部分 tablet PC 所采用的设计相同。
5600 相对于 5500 来说提供了一些改进,但是从 StrongARM 处理器到 XScale 处理器的变化并非十分平滑。新的模块对电池的寿命提供了很大的改进(方法非常简单,将电池扩充为 2 倍大小)。
5500 和 5600 之间的区别反映了 PDA 用户为 Sharp 提供的反馈。在大部分情况中,这些变化反映了 PDA 用户的通用考虑。例如,将用户数据存储到 flash 中是一个很好的解决方案,如果电池电力不足,PDA 用户就可能会面临同样的丢失数据的风险,这个方案可以很好地解决这个问题。另外,5600 的键盘也比 5500 的键盘更容易使用。
构建 PDA
Linux 开发人员对嵌入式系统的很多假设都不能在 PDA 上工作。PDA 用户希望能够运行新的应用程序、存储数据并以后再使用这些程序和数据。此外,从 3Com 引入第一个 Palm Pilot 以来,PDA 一直都在使用 GUI。9600 波特率的串口终端并不是典型的选择。
桌面 Linux 假设在 PDA 上也都不太适合。大部分 PDA 用户并不喜欢先登录到系统中,然后再显式地启动 X 服务器。另外,320x240 屏幕对于文本终端的用法来说并不足够。虚拟桌面、多个鼠标按钮以及典型桌面的其他特性对于一个具有输入笔的小屏幕来说也并不适合。
Zaurus 使用的是 Qtopia 桌面环境,而不是 X 服务器。您也可以在这种硬件上启动 X 服务器(毕竟,这个机器所拥有的内存和处理器的处理能力比 SPARC 工作站 SLC 所拥有的内存和处理器的处理能力更高),但是小足印和小显示器并不适合 X 工作站的假设。
Zaurus 为 PDA 提供的应用程序只是 PDA 上的一个弱小单元。这还只是非常年轻的一组应用程序,功能尚不像 Palm 平台上的应用程序一样完备。
调整 Linux
让 Linux 在 PDA 上工作的一个挑战是确定何时使用普通的 Linux 方法来实现某些功能,何时不使用这些普通的方法。结果不总会像用户所希望的一样。例如,确定何时(或是否)需要密码就是一个挑战。大部分用户在 PDA 上都不希望使用密码提示。
Zaurus 从一开始就彻底抛弃了安全性方面的考虑。GUI 以 root 用户身份运行,但是即使不以 root 用户身份运行,也不需要输入 root 密码, su
命令就可以实现这种功能。
Zaurus 是基于 BusyBox(0.60.4 版本)的。这个最优秀的工具让很多程序可以链接成一个可执行程序;不过这种组织有点奇怪。BusyBox 内嵌了对 gzip 的支持,但是它也单独提供了 zcat 工具。不过这是一个非常合理的决定,因为这样可以节省相当多的空间。
启动
rc.d 系统被完整地保留了下来,尽管 init 级别的定义与桌面 Linux 系统中的定义可能并不完全相同:
清单 1. SUSE Linux 和 Zaurus 上的运行级别
SUSE:
# runlevel 0 is System halt (Do not use this for initdefault!)
# runlevel 1 is Single user mode
# runlevel 2 is Local multiuser without remote network (e.g. NFS)
# runlevel 3 is Full multiuser with network
# runlevel 4 is Not used
# runlevel 5 is Full multiuser with network and xdm
# runlevel 6 is System reboot (Do not use this for initdefault!)
Zaurus:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - JavaVM(Intent) developer mode
# 5 - JavaVM(Intent)
# 6 - reboot (Do NOT set initdefault to this)
|
[1] [2] 下一页