新时代新潮流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呢?