新时代新潮流 WebOS【2】解剖 Palm Pre 之劲敌,iPhone
Palm Pre 在 CES 展会得了大奖,但是什么时候上市,却没有确切日期。Palm Pre 弧形的外壳里面,包藏了哪些硬件设备,至今是个谜。这个谜之所以有趣,主要在于比较 Palm Pre 和 iPhone,看看两者有什么异同。
2001 年,Apple 成功推出 iPod 以后,无论是正式媒体还是坊间,都在猜测 Apple 下一步会不会剑指手机。无论是肯定还是否定,都有证据,所以正反两方的 争论一度很热闹。尤其是 Apple 与 Motorola 的合作,刚开始各方期待甚高,后来不欢而散。正方说,无论如何,这个合作表明了 Apple 进军手机市 场的决心,反方说,Apple 此番受挫,充分领教了手机制造的深浅,所以有可能从此回避这个风激浪高的是非之地。
我们现在回顾历史,才知道 Apple 没有放弃手机,而是转与 AT&T 合作。AT&T 很有气魄,知道 Steve Jobs 是追求完美的专制暴君,与其双方合作,不如甩手不管。于是 Apple 在 Steve Jobs 乾坤独断的统帅下,历时 30 个月,耗资 15 亿美元,神神秘秘地研制 iPhone。这个过程创造了手机研制的两个记录,一个是投资,历史上从来没有 哪个企业有气魄砸 15 亿美元,去研制一款手机。另一个是保密,历史上从来没有哪款手机的研制如此神秘,不仅 Apple 内部各小组相互隔绝,不让彼此知道对 方工作细节,而且各子项目的名称也一换再换。频繁改动项目名称固然起到了迷惑外界的作用,但是也给 Apple 内部各小组工作协调带来了一些麻烦。
时间一晃到了 2007 年 1 月,Steve Jobs 高调展示了 iPhone,业界媒体为之哗然。同年 6 月 29 日下午 6:00PM,iPhone 正式投放美国市场。当日下午 2:00PM,全美各个 Apple 零售店全部清场,为 4 个小时以后的首发做准备。店内匆匆忙忙的雇员在整理货架,店外急不可待的顾客大排长龙。销售开始以后的 30 小时,全美国共 售出 27 万部 iPhone,盛况空前。
The first iPhone buyers leaves the store on Fifth Avenue in New York, 6/29/2007
人们拿到了 iPhone 以后,立刻有人开始解剖,探求 iPhone 的奥秘。以下这段视频内容很翔实,不仅展示了解剖 iPhone 的全过程,而且简 短地介绍了每个部件的功能。结束语很有意思,“在我们简短地观察了 iPhone 内部构造以后,可以说没有那个部件具有革命性的进步。之所以 iPhone 能 够引起市场轰动,是因为 Apple 精通造势,在他们投放产品以前,做足了市场预热的功课”。的确,没有哪个部件具有革命性的进步,但是把普通部件攒在一 起,未必就不能产生革命性的产品。回想当年 Steve Jobs 和 Steve Wozniak 发明个人电脑的时候,所用部件没有哪一个是具有革命性的,但是个人电脑的革命性是不可否认的。
【YouTube 视频,解剖 iPhone】
iPhone Original Model Teardown, 2007
下面这张照片,展示的是 iPhone 内部一部份部件,其中包括 Samsung 的 64GBit 闪存,Intel 的内存,Infineon 的 GSM/EDGE 收发器(Infineon M1817A11),Marvell 的 WiFi 收发器,CSR 的蓝牙,Skyworks 的无线信号增强器,Infineon 的多媒体引擎(Infineon PMB8876 S-Gold2)。这张照片没有显示 CPU 芯片,因为 CPU 在另外一块板子上。
iPhone Original Model Internal
每个功能芯片都有一套独特的指令集,这些指令集在芯片的 Datasheet 里面能找到。为了方便高级语言如 C/C++去调用这些指令,控制芯片的操作,需 要编写一些驱动器程序。通常人们把芯片称为硬件(hardware),把驱动器程序称为固件(firmware)。固件(fireware)的作用是把硬 件(hardware)和软件(software)彻底分开。这样即使对硬件不甚了解,软件工程师也能正确地编写程序。
但是光靠固件,编写程序的工作还是太难。原因是很少有程序只涉及单个芯片和单个固件,而是需要协调多个芯片的工作。所以,软件又分为操作系统(OS)和应用程序(Applications)两部分(也有很多论者把固件也看成是 OS 的一部份。OS 中最核心的部分是内核(kernel)。Kernel 负责以下几个任务:
- 把程序分解为若干进程,调度 CPU 的工作安排,逐步处理进程中的各个步骤
- 分配内存空间,存放程序执行过程中需要处理的数据以及产生的数据
- 硬盘的读写,以及组织安排数据在硬盘上的存储
- 管理外围设备如键盘鼠标显示屏,尤其是控制数据的输入输出(I/O)
- 管理网络数据传输
- 保障系统的安全。
下图是 Symbian S60 的软件体系。这个体系的特点是层次清楚。最下面一层是 Kernel。Kernel 以上两层是针对手机特点而扩充的 OS 功能,尤其是电话功能(Telephony Service),蓝牙和其它通讯功能(Networking, Connectivity and Serial Comms Services),以及强化和便利图形处理和显示的功能(Graphics Services)等等。这三层构成了 Symbian S60 的 OS。
在 OS 平台之上,渐次是应用模块(Application Services)和 UI 框架 (UI Framework)。至于 Java J2ME 在这个体系中的位置,问题稍微复杂一点,我们留给下一章讨论。
Symbian S60 体系非常符合传统 OS 的规范,而 Palm WebOS 相当离经叛道。
WebOS 的内核并不是 Palm 公司的原创,而是借用了 Linux Kernel。前文说过,OS 最核心的部分是 Kernel。WebOS 的 Kernel 不是自己的原创,Palm 凭什么勇敢地把 WebOS 命名为一个 OS 呢?
或许有人会为 Palm 辩解,Google 的 Android OS,也是以 Linux 为 Kernel。凭什么 Google 可以把 Android 称为 OS,而 Palm 却不能把 WebOS 称为 OS 呢?