全部博文(133)
分类: IT业界
2011-06-03 10:47:40
http://blog.eastmoney.com/zhuyongnj/blog_180326562.html
论山寨手机与Android联姻的技术基础
By Sunny Cheng cheng.sunny@gmail.com and Kan Deng kan.deng@gmail.com
山寨手机的兴起,离不开MTK (联发科)。MTK为手机制造提供了一揽子解决方案,其中既
包括硬件,也包括软件。软件方面最重要的,是操作系统。MTK 方案的软件的稳定性非常
高,一方面是因为其硬件系统变化不大,另一方面,得益于MTK在系统软件上投入的巨额
的资金和大量的人力。MTK采用的操作系统是Nucleus RTOS。Nucleus的优势主要在于
占用CPU时间短,以及占用Memory空间少。随着手机硬件的发展,Nucleus的优势不再
那么重要,而日益突出的问题,是需要功能更强大的手机操作系统。
2007年11月,Google发布Android OS,剑指手机操作系统市场,并开源免费。两年来,
Android获得了相当热烈的市场回应。有没有可能用Android取代Nucleus,实现山寨手机
的升级换代?
这个问题不容易回答,因为涉及到的方方面面比较多。
1. MTK的下一代硬件[1],既能支持Android,也能支持Windows Mobile。为什么MTK没
有选择人气正旺,而且免费开源的Android,反而选择联姻WinMobile呢[2]?
2. 2009年3月,微软与MTK宣布结盟,共同开发针对中国TD-SCDMA手机市场的芯片[3]。
时至今日,8个月过去了,为什么没有实际成果?
3. MTK有没有意愿采用Android,替代Nucleus 和WinMobile?
4. MTK下一代软硬件系统,能不能重现今日风光?
5. 其它公司有没有意愿利用Android 的强势,为下一代手机制造提供一揽子解决方案,从
而取代MTK的市场地位?
6. Google免费提供Android的长远打算是什么?有没有雄心挺进硬件行业,甚至打造自有
品牌的手机?
当然,“有没有意愿”这种问题,只有相关企业的高管才知道答案。我们这里只关注技术方面
的可行性,以及利弊分析。
Hardware Engineer 是硬件工程师,Software Engineer 是软件工程师,那么桌上放着示波
器和逻辑分析仪的Software Engineer 是什么呢?是Firmware Engineer 固件工程师,或者
Embedded Engineer 嵌入式工程师。最近有幸与一位有过数年市场经验的固件工程师讨论
了以上问题,把讨论的内容整理成文,方便大家共同切磋。
Figure 1. 传说中的Google自有品牌手机
Courtesy
Reference,
[1] 联发科MT6516智能手机芯片。()
[2] 联发科MT6516为何不支持Android。()
[3] Microsoft and MediaTek to develop smartphone chipsets.
()
【1】MTK亮相的历史背景
如果说1960年代是大型机(Mainframe)的时代,1970年代是小型机(Microcomputer)的时代,
那么1980年代无疑是个人电脑(PC)的时代,而1990年代则是互联网的时代。2000年以
后呢?或许是移动互联网的时代。
与电脑的发展历程类似,移动互联网的发展轨迹,看来也同样是以硬件的改进为先导,软件
的繁荣紧随其后,带动整个行业的井喷式的爆发性增长。
Figure 2. 第一代手机,俗称大哥大。
Courtesy
1980 年代,手机开始商用。第一代手机俗称大哥大,特点是无线网络通讯信道中传输的是
模拟信号。传输模拟信号有两个缺点,一是耗电,二是同一频段能够同时容纳的用户数量少。
因为耗电,所以手机必须携带大块的电池,导致体积庞大,形如板砖。街头流氓打架时,常
常捡起地上的板砖砸人,如果随身携带着大哥大, 情急之时也可以把大哥大当板砖用。
Figure 3. 以DSP为核心的第二代手机的硬件架构[4]。
Courtesy
为什么传输模拟信号,会有耗电以及频段容量低的缺点?对比一下数字信号就清楚了。如果
把语音转换成数字,就可以采取数据压缩的办法,减少传输语音时占用的带宽。同时由于数
字信号容易处理,所以在传输数字语音信号时,可以使用复杂的传输协议与控制,以便在同
一频段,同时容纳更多用户相互通话。而对于模拟信号, 很难使用类似的协议与控制。
第二代手机的核心,是数字信号处理器,DSP(Digital Signal Processor)。第二代手机的硬
件架构,如Figure 3 所示,分为三部分。
1. 射频芯片组(Radio Subsystem)。它负责调制-发送,以及接收-解调无线信号。无论是发
送还是接收,射频芯片组只处理模拟信号。
2. 模拟基带芯片组(Analog Baseband)。这个芯片组中,主要包括两个功能块,射频接口
(RF Interface),以及音频接口(Audio Interface)。
射频接口负责把从射频芯片组接收来的模拟信号,转换成数字信号,转发给数字信号处理器
(DSP),以及把DSP输出的数字信号,转换成模拟信号,转发给射频芯片组以便发送。
音频接口负责把从麦克风接收来的模拟信号,转换成数字信号,然后转发给DSP做进一步
处理。同时,它也负责把DSP输出的数字信号,转换成模拟信号,然后转发给喇叭以便播
放。
3. 数字基带芯片组(Digital Baseband)。这个芯片组主要由两部分构成,数字信号处理器
(DSP),以及微控制器(Microcontroller)。
DSP 的主要任务是进行语音处理,例如去除噪音和语音矫正等等。此外DSP 还负责,对
语音数据流的压缩解压,不同格式之间的编码解码和转换,还有加密解密等等。如果单块
DSP芯片的功能不够,还可以借助于其它专用芯片(ASIC)。
微处理器负责两个任务,1. 处理无线通信协议,2. 运行手机操作系统。
当一位用户拨号呼叫另一位用户时,首先要建立一个通话通道,连接主叫方与被叫方。双方
对话的语音数字信号,在这个通话通道里传输。七号信令系统负责建立这个通话通道[5]。
为了保证信息安全,以及提高系统效率,采取了分离控制流与数据流的做法,也就是说,七
号信令系统是一套独立的系统,游离于承载语音数字信号的通话通道之外。
七号信令由一系列协议组成,与有线网络协议的ISO 七层模型大致对应,参见Figure 4。
微处理器负责处理七号信令的第一层到第三层协议,MTP1,MTP2,MTP3。
Figure 4. Comparison SS7 Protocol Suite and ISO Protocol Model [6]
Courtesy
手机操作系统,例如Nucleus RTOS,负责处理如何开机/关机/锁机,屏幕显示,音量控制,
响铃与震动等等外围动作。此外,还负责手机各个功能模块的运行调度(Scheduling),以
及不同进程间的数据交换(IPC)。虽然DSP 在手机中的地位非常重要,但是DSP 仍然接受
手机操作系统的控制。
微控制器处理的数据,存放在Flash存储器中。
第二代手机的核心任务是实时通讯,表现为通话与短信两种功能。围绕实时通讯这个核心,
操作系统具体协调各部分的工作。与用户的交互手段,依赖于十几个按键,以及一小块单色
液晶显示屏。1998年开始销售的Nokia 5165,是第二代手机的一个经典,参见Figure 5。
Figure 5. 第二代手机,Nokia 5165,1998年
Courtesy
http://i1.phonearena.com/showimage.php?m=Phones.Images&f=image&id=7252&v=defa
ult
Reference,
[4] Trends in Hardware Architecture for Mobile Devices.
()
[5] Signaling System 7, SS7. ()
[6] Comparison SS7 Protocol Suite and ISO Protocol Model.
()
【2】手机 OS成为核心
手机凭借通话和短信这两项基本功能,积累了用户,开拓了市场。但是用户的需求是永无止
境的,对于手机制造商来说,紧跟用户需求,拓展手机功能,是机会也是挑战。
1988年第一款数码相机,在日本上市。数码相机的关键是感光芯片。最初的数据相机,使
用的是CCD 芯片。1990年代初,美国宇航局的科学家Eric Fossum 发明了CMOS感光芯
片,体积更小,感光效果更好。如果把CMOS感光芯片集成到手机上去,那么手机就可以
兼具照相机和摄像机的功能。
但是事情没有那么简单,给手机配上镜头以及CMOS感光芯片只是起步,接下去还有其它
问题需要解决。1. 微控制器的处理能力需要加强。2. 操作系统需要增添相应的驱动程序,
同时改进任务调度的机制。3. 多媒体播放器,在液晶显示屏上(LCD)显示照片,播放视
频,同时协调扬声器同步播放视频的声音。4. 不仅可以在手机本地存储并显示照片和视频,
还要支持连网,支持用户上传和下载多媒体文件。
1997年,硅谷工程师Philippe Kahn制成了世界第一台具有摄像功能的手机。与相机手机
同时出生的,是他的女儿。Philippe用手机给襁褓中的女儿拍了照片,并转发给2000多名
亲友,这是人类历史上,第一次用手机拍摄,并通过移动网络散发的照片[7]。
从此,多媒体成为手机不可或缺的功能。此外,手机还添加了日历,记事本,计算器,音乐
播放器等等功能。以及Java VM,以便运行用J2ME编写的程序。还有WAP,用于访问互
联网。
第二代手机的使命结束了,取而代之的是第三代手机,也就是所谓功能手机(Feature
Phone)。如果说,对于第二代手机而言,DSP是核心,操作系统是配角。那么自从Feature
Phone以来,操作系统的功能大大强化了,地位也上升了,由配角熬成了主角。
Feature Phone的OS有多种选择。其中,Symbian长期占据Feature Phone OS市场的半
壁江山[8],曾几何时,Symbian OS叱诧风云,一言九鼎,俨然是手机操作系统领域的霸主。
举个例子,从严格意义上来说,Symbian OS是操作系统内核(Kernel)。同一套内核可以
支持多种GUI图形界面,当年曾经出现过S60,MOAP和UIQ三种GUIs,其中UIQ被索
爱(SonyEricsson)热捧。作为手机制造商,索爱是Nokia的竞争对手。坊间传说,Nokia
因为恨屋及乌,决定打压UIQ。2008 年,Nokia指使Symbian Foundation出面宣布,今
后Symbian OS只支持S60一款GUI。被冷落的UIQ 别无选择,只好关门大吉[9]。
Figure 6. Mobile OS marketshare recent history [10]
Courtesy
但是近年来,手机操作系统市场急剧动荡。带头造反的是Apple 的iPhone OS,第二冲击
波来自Google 的Android,此外还有Palm 的WebOS 凑热闹,参见Figure 6。有评论认
为,
1. Symbian老矣,很难逃脱日薄西山的命运。
2. iPhone特立独行,走精品路线,成为时尚风向标。
3. Android 稳扎稳打,免费开源,走群众路线,将来最有可能成为手机OS 的主流,取代
Symbian的盟主地位。
4.WinMobile偏安一隅,虽不大富,却也小康。
5. WebOS喧嚣一时,如昙花一现。
6. RIM 的未来在于投靠强人门下。假如自立山头,则前途暗淡。不仅自毙,而且有可能殃
及热销中的黑莓手机(BlackBerry)。
Nucleus OS在哪里?这是一个被市场遗忘的角落。
Figure 7. Nucleus OS Functional Modules [11]
Courtesy
是什么原因,使Nucleus成为昨日黄花?Figure 7描述了Nucleus内部各个功能块。Nucleus
本身有不可回避的技术限制,例如没有虚拟内存,而且不分Kernel Space和User Space,
系统和应用程序运行在同一个空间中。这对于Feature Phone 来说,问题还不是很大,但
是对于SmartPhones 来说就非常致命了。因为如果应用程序不受限制,那么恶意程序就可
以钻空子,获取整个操作系统的控制权,为非作歹。典型的案例就是死机短信,恶意操作致
使整个操作系统崩溃。
但是在2000年,MTK借力Nucleus,从一家默默无名的IC Design House,发展成为2009
年一季度世界第20名芯片销售大户,参见Figure 8。更重要的是,MTK颠覆了传统的手机
制造产业链。
MTK 最初靠什么发家?技术上有什么优势?商业模式上有什么优势?且听下回分解。
Figure 8. Top 20 Semiconductor Sales Leaders, Q1, 2009 [12]
Courtesy
Reference,
[7] Philippe Kahn created the first camera phone in 1997.
()
[8] Mobile OS market share. ()
[9] UIQ history.
( )
[10] iPhone and Android in two-horse smartphone OS race.
(
artphone-os-race.ars)
[11] Nucleus OS modules.
(
raphs/2/content_files/file/ill-nucleus.gif)
[12] Chaos reigns in top 20 semiconductor company ranking.
()
【3】手机是怎样生产出来的?
要说清楚MTK 在商业模式上有什么优势,以及Android 对于MTK 未来的手机开发会有什
么影响,首先得了解手机从设计,开发到生产的整个过程。
让我们先来看看手机的生产过程。在生产制造环节,山寨手机和正牌手机的区别其实不大。
1. 装配主板
大多数电子设备的制造过程,实际上就是按照设计图纸把各部分部件组合在一起,手机也不
例外。手机的主要部件有:1. 硬件主板,目前大部分的手机是单板结构,2. 天线,3. 键盘,
4. 显示屏,5. 外壳。其中主板是关键部件。各个手机制造商的技术能力不同,在手机制造
产业链中的定位也不同。有实力的厂家会从Gerber文件开始,自己生产PCB板。而不具
备PCB生产能力的小厂,可以向其它厂家订购已经生产好的PCB板。Figure 9 是一款MTK
出品的PCB板。
Figure 9. 一款MTK出品的PCB板[13]
Courtesy
有了PCB 板以后,就可以着手印刷和贴片。随着技术发展,老式的过孔型的PCB 板已经
几乎绝迹,现代PCB板大部分采用表面贴装技术。贴装工序分三步。
1. 把PCB板送入印刷机,印刷机把焊锡(Solder Paste)通过模板印刷在需要焊接的部位,
参见Figure 10。
2. 把印刷好焊锡的PCB板送入贴片机,贴片机把元器件贴装在PCB板上,Figure 11。小
的元器件是装在大盘上,大一些的从塑料管中送进贴片机的,Figure 12。
3. 把贴好的板子送入回流焊机,经预热,加热后,元器件就焊装在PCB板上了。Figure 13
显示的是焊接好的主板。
Figure 10. 印刷机把焊锡通过模板印刷在PCB板需要焊接的部位[13]
Courtesy
Figure 11. 贴片机把元器件贴装在PCB板[13]
Courtesy
Figure 12. 贴片机近景,小的元器件装在大盘上,大一些的从塑料管中送入贴片机[13]
Courtesy
Figure 13. 焊接好的手机主板[13]
Courtesy
制造过程强调质量控制,质量控制体现在多个环节。
1. 生产线上配备多种自动设备,检测各个工序是否工作正常。Figure 14 显示的是手机生
产线上的一个产品质量显示器。
2. 焊接好的手机主板被送入测试台,测试台给手机主板加电测试,Figure 15。
3. 如果各项指标合格,就可以进入下一工序,安装系统软件。没通过的就需要手工检验和
修复,Figure 16。举个例子,有的IC是正方形的,贴的时候有可能被转了90度。
Figure 14. 手机生产线上的一个产品质量显示器[13]
Courtesy
Figure 15. 测试台给手机主板加电测试[13]
Courtesy
Figure 16. 手工检验和修复[13]
Courtesy
2. 烧录系统软件
硬件制造结束并检验合格后,下一步是烧录手机系统软件。手机系统软件是以Flash Image
的形式,存放在工作站里面。把手机主板,通过串口或者USB口,与工作站相连。然后启
动工作站里的安装程序,把系统软件烧到手机主板上的闪存里,Figure 17。一台工作站可
以同时烧录几十台手机裸板。
Figure 17. 手机系统软件安装工作台[15]
Courtesy
3. 装配外围设备
有一些部件,是无法使用回流焊机这样的自动设备,需要手工处理。Figure 18 显示的是在
主板上手工焊接手机话筒。有些零部件不需要焊接,手工装配,或者拧螺丝即可。Figure 19,
装配无须焊接和螺丝的手机部件。Figure 20,装外壳。Figure 21,手工贴手机编码串号。
Figure 18. 手工焊接手机话筒[14]
Courtesy
Figure 19. 手工装配无须焊接和螺丝的手机部件[14]
Courtesy
Figure 20. 手工装配手机外壳[14]
Courtesy
Figure 21. 手工贴手机编码串号[14]
Courtesy
4. 校准和检测
手机组装结束以后,还需要检测辐射量,发射功率,待机时间等等,另外还有一些部件校准,
例如天线。Figure 22 估计是在校准天线。Figure 23 在测试声音。大厂会用更专业的检测
仪器,Figure 24.
Figure 22. 可能是在校准天线[14]
Courtesy
Figure 23. 测试声音[14]
Courtesy
Figure 24 更专业的检测仪器[16]
Courtesy
5. 打包出厂
前叙工序都完成以后,就可以打包出货了,Figure 25。
Figure 25. 打包准备出厂的山寨机[14]
Courtesy
由此,我们可以明白手机的生产过程和其它所有电子设备的生产几乎相同。能不能生产手机,
一方面离不开必要的资金,去购置生产设备和培训员工。另一方面,需要得到软硬件的设计
方案。而后者可能更重要。软硬件的设计包括以下内容。
1. 主板设计,或者Gerber文件,或者PCB板。
2. 系统软件。
3. 需要组装的全部元器件的清单(BOM List)。
4. 配套的外壳。
1,2 属于设计,3,4属于采购
一旦得到了软硬件的设计方案,以及BOM List,就可以从市场上采购,备料,然后就可以
开始制造了。问题是,谁提供软硬件的设计方案以及BOM List呢?
Reference,
[13] 山寨手机制造大揭秘。
()
[14] 山寨新闻调查。
(
tid=2645440990215816570&ref=commmsgs-paging&na=3&nst=501&
amp;pno=11&cpno=9& nid=34721-2645440990215816570-2655961375168415098)
[15] 友利通手机高层领导访谈记实。()
[16] Metrico for mobile device performance assessment。
()
【4】手机产业链与 Design House
前文说到,生产手机以前,制造厂家需要预先得到软硬件的产品级设计方案,然后按照设计
方案亦步亦趋地做,就可以制造出手机了。软硬件的产品级设计包括以下内容,
1. 主板设计,或者Gerber文件,或者PCB板。
2. 产品级的系统软件。
3. 需要组装的全部元器件的清单(BOM List)。
4. 配套的外壳。
谁负责这些设计呢?答案:大厂有自己的设计部门,例如Motorola,Nokia等等。小厂可以
外购设计,不仅芯片厂家能够提供设计服务,而且还可以求助专业的设计公司(Design
House)。Design House根据芯片厂家提供的手机参考方案,完成手机的产品级设计然后卖
给手机生产厂家。
照理说,合乎常理的顺序是手机经销公司确定手机功能,然后联系制造厂商定货,制造厂商
把设计任务交给Design House,Design House确定需要什么样的芯片后,向芯片厂商定
货。即,经销商-> 制造厂商-> Design House -> 芯片厂商。
但是早期的手机制造产品链不是这个顺序,而是正好反过来。芯片厂商制造芯片,提供手机
参考设计,然后向Design House兜售这些芯片和参考设计。Design House把参考设计完
善成产品级的设计方案后,推销给制造厂商。制造厂商生产出手机后,通过营销公司向市场
推销。即,芯片厂商-> Design House -> 制造厂商-> 经销商。
为什么会造成这种首末倒置的现象?据传,有人问发明汽车的亨利福特,为什么不重视市场
调查,福特的回答是这样的,“如果我问大家想要什么?他们会说,他们想要一匹跑得更快
的马。(If I'd asked people what they wanted, they would have asked for a better horse.)
[17]”。无独有偶,引领新潮的Apple公司的CEO,Steve Jobs,在谈到Apple公司的创新
理念时,他说,“Apple公司的设计宗旨很简单,就是做一个Apple员工自己喜欢的产品”。
在技术迅速发展的领域,研究引导制造,制造引导市场。
专业设计公司,Design House,不是一个全新的概念。中国手机的Design House,从曾经
昙花一现,到如今惨淡经营,大起大落只有不到短短10 年的时间。
中电集团的CECW (CECWireless),从99年开始与荷兰Philips合作,到2001年卖下Philips
R&D 设立中电赛龙,成为中国第一家手机Design House[18]。从那以后尤其是2002年,
国内Design House一度雨后春笋般成立的,2003年以后引起广泛注意。除中电赛龙外,
国内比较有名的Design House有,经纬科技,龙旗,德信。
微软曾经大力扶持德信,动机或许是企图以此改变微软对台湾的HTC 的过渡依赖,也可能
是打算控制住Design House,而Design House是手机制造产业链的龙头,控制住龙头就
影响了整个产业链。但是不幸的是,德信并没有如愿成长起来。倒是HTC,踏踏实实,一
步一个脚印,迅速做大。例如从HTC TouchFlo开始,HTC 向Shell 方面发力。当时大家都
觉得奇怪,WinMobile的Shell 已经很不错,作为微软的协作厂商,HTC 为什么要搞重复建
设呢?当HTC Hero亮丽出场以后,一切都得到了解释。人无远虑,必有近忧,如果德信当
年预见到软件的力量,像HTC 一样,花大力气积累技术实力,或许时至今日,就不会把自
己的陨落归结于产业链升级等等这些外因了。
2003年度,国内Design House的利润率曾经高达70%。但是好景不长,一年以后,2004
年平均利润率下降至35%左右。各个Design House为了扭转败局,改变了以往的商业模式,
转而采用对制造厂商更为优惠的方式。以往Design House的商业模式是,一手交钱一手交
设计方案,收取开发费。现在的模式是,根据销量提成的模式,与制造厂商分摊手机销量不
畅的风险。但是,形势进一步恶化,到了2005年,由于更多的公司掌握了手机设计技术,
Design House的平均利润率,进一步下降到23%[19]。Figure 26 列举了2006年国内主要
手机厂商及IC 供应商。
Figure 26. 2006年中国主要手机厂商及IC 供应商[20]
Courtesy
就在Design House冬天即将来临的时刻,2006年,MTK方案进入市场,并且迅速挤兑了
其它Design House的市场份额,使得国内Design House的平均利润率,2006年跌至15%,
2007年是5.1%,而2008年可能只剩3%[19]。
令人疑惑也令人感兴趣的是,眼看着Design House 的严冬即将来临,MTK 却似乎极具抗
寒能力,而且在其它企业面临萎缩的形势下,MTK却异军突起,2006年一举占据了国内手
机芯片市场的40%,见Figure 27。他们的独门秘笈是什么?
Figure 27. 2006年MTK芯片方案占中国市场40%份额[20]。
Courtesy
MTK的董事长蔡明介,早年是台湾第二大半导体企业,台联电的打工仔。1995年,台联电
调整业务方向,要把蔡明介所在的IC 设计部门剥离出去,分炉吃饭。蔡明介就这么被逼上
梁山,开始了创业的历程。经过一番波折以后,联发科(MTK)于1997年成立。塞翁失马,
焉知非福,不到两年的时间,MTK就赚到了第一桶金。
联发科起家靠的是CD-ROM芯片。CD-ROM 的读盘速度以150KB/秒为基数,当时大多数
CD-ROM的数据是4倍和8倍,即4x150KB/s 和8x150KB/s。MTK迅速推出20倍机型,
顺利确定了市场地位。
从 1999 年底开始,蔡明介频频访问美国加州,他注意到Intel 的增长率放缓了,只有5%,
而高通的增长率却高达26%。他意识到,为手机设计IC,前景看好。主意拿定以后,立刻
采取行动,他从Rockwell 挖来了手机基带芯片专家徐至强。徐上岗以后,2001 年,MTK
正式开始无线通信芯片的研发。2003年底,第一款MTK基带芯片研发成功。
产品研制出来以后,接下去就是营销。MTK的营销方式称为“Turnkey”,即把手机的关键组
成部分,芯片,操作系统,以及一些应用软件,这三者捆绑起来,给手机制造厂商提供“一
站式解决方案”。有人戏说,有了MTK以后,只要三个人就可以成立手机公司,一个人接洽
MTK,第二个人找代工厂,第三个人做营销。这个说法比较夸张,但是的确也说明了,MTK
大大降低了手机制造的难度。
另外,山寨手机之所以繁荣,除了MTK以外,还离不开配套元器件生产厂商,例如比亚迪
(BYD)。BYD 提供外壳,柔性线路板,液晶屏,摄像头,马达,键盘等等几乎手机所有配
件。除了做手机配件以外,比亚迪现在还制造汽车。
MTK 的“一站式解决方案(Turnkey)”,很多人耳熟能详。客观上讲,把芯片,OS和基本
Apps,三者捆绑起来,这个主意并不是具有突破性的技术创新。为什么其它公司没有做到,
偏偏让一个小公司,一个原本在手机芯片领域名不见经传的小公司,大红大紫呢?MTK 在
技术上做了哪些贡献呢?具体分析,留给下一节。
Figure 28. MTK董事长蔡明介[21].
Courtesy
Reference,
[17] Henry Ford's Quote. ()
[18] Philips transferred its mobile handset activities to China Electronics Co (CEC).
()
[19] China Mobile Phone Design House Report 2007.
()
[20] MTK方案及代表手机大揭秘。
(http://blog.163.com/xiaotu_sh2008/blog/static/683125962008111695849617/)
[21] 联发科董事长蔡明介。
()
[22] MTK发家史 ()
【5】MTK颠覆手机产业链
MTK一站式解决方案(Turn-Key)模式出现以前,手机设计开发流程大约可以分成以下6
步。
第 1步,Design House从芯片厂商那里拿到参考设计。
芯片厂商根据自己的市场部门对手机市场的预测,决定未来几年手机需要哪些功能,然后围
绕自己的CPU 内核,确定手机的参考设计,宗旨是推销自己的芯片。例如2003年,MTK
最早的MT6205基带芯片,内核为ARM7,只有GSM 等等基本功能。可能是因为当时MTK
认为,GPRS,WAP,MP3等等功能,市场上可能没有需求,所以决定MT6205基带芯片
轻装从简,把这些累赘的功能统统裁剪掉。
等到参考设计的软硬件开发都接近完工了,芯片厂商的营销人员就挨家挨户地拜访Design
Houses,展示新款的参考设计,游说新款方案具有广阔的市场前景。如果Design House
同意合作,那么Design House会依据新款的参考设计,设计新款手机的整套方案。然后
Design House把新款手机的整套方案,推销给手机制造厂商。制造商一旦决定投产,就会
向芯片厂商批量订购芯片,芯片厂商因此获利。
第 2步,确定配件元器件。
芯片厂商提供给Design House的是参考设计,而Design House提供给制造厂商的是产品
级设计。前文说过,所谓产品级设计,包括以下部分,
1. 主板设计,或者Gerber文件,或者PCB板。
2. 系统软件。
3. 需要组装的全部元器件的清单(BOM List)。
4. 配套的外壳。
芯片厂商提供参考设计,宗旨是推销芯片,尤其是基带芯片。对于其它外围元器件,则留有
余地,让Design House自己去选择。Design House选择外围元器件的标准,除了质量以
外,还需要考虑成本,以及供货商是否能按时供货等等因素。Design House确定了这些元
器件以后,就可以着手设计主板的布局和连线,决定配件元器件的清单(BOM List),系统
软件,和外壳等等。
芯片厂商提供的参考设计,往往以开发板的形式出现。所谓开发板,也被称为大板,因为尺
寸远比手机大得多,有的大板甚至可以媲美报纸的面积。Figure 29显示的是Samsung 的
S3C44BOX芯片开发板[24]。这个开发板的参考设计,包括使用HY57V641620 8M SDRAM,
HY29LV160 2M Flash。假如Design House认为,8M 的内存小了,2M 的闪存也小了,需
要换成更大空间的RAM 和Flash。LCD 也可以换成比亚迪(BYD)的产品,性能更好,价
格却更便宜[25]。在这个开发板上,可以方便地改变连线,测试选用不同的配件元器件的性
能和能耗等等。
Figure 29. Samsung S3C44BOX开发板,内核是ARM7TDMI,一些MTK基带芯片也采用
同级别的ARM7EJ-S内核[24]。
Courtesy
第 3步,开发调试驱动程序。
在确定配件元器件的时候,要同时开发及调试相应的驱动程序。
第 4步,产品级主板设计。
确定了微处理芯片以及配件元器件以后,Design House着手把大板改成小板,也就是设计
产品级主板。产品级主板设计主要是让主板更紧凑,这包括布局和连线,同时加上紧固件以
及绝缘和散热材料,使手机更加坚固耐用。
Figure 30. iPhone初版双主板[26]
Courtesy
Figure 31. iPhone初版无线主板[26]
Courtesy
Figure 30 显示的是iPhone 初版的主板。iPhone 有两块主板,左边是AP(Application
Processor)主板,操作系统,用户界面以及应用程序都运行在AP 主板上。图中黄色部分
是覆盖在芯片上的绝缘膜,四周的铝合金边框使手机更坚固。右边是BP(Baseband
Processor)主板,负责通讯功能。Figure 31显示的是BP主板的背面,从图中也可以看到
很多用于紧固的铝合金边框。这两张图片[26]显示的是初版iPhone的主板,3G版的iPhone
主板,可以参考[27]。
严格说来,在这篇介绍FeaturePhone的章节里,用iPhone做例子,是不准确的。因为iPhone
是SmartPhone,而不是FeaturePhone。但是无论是FeaturePhone,还是SmartPhone,
从大板到小板的设计过程,却是相似的。
第 5步,进一步调试软硬件,使之达到产品级。
所谓产品级的最高标准,是稳定,是不出bugs。当然在现实生活中,完全杜绝bugs 是不
可能的。但是产品有优劣之分,bugs数量的多寡,是衡量产品质量的一个重要指标。
第 6步,Design House设计一些参考外壳,参见Figure 32,然后把从里到外的整套设计
演示给制造厂商看。
Figure 32. Ginwave (经纬) Design House的设计样品[28]
Courtesy
总结一下前面所述,传统的手机设计开发分成6步,这六步均由Design House负责。
1. 从芯片厂商那里拿到参考设计。
2. 确定配件元器件。
3. 开发调试驱动程序。
4. 设计产品级主板。
5. 进一步调试软硬件,使之达到产品级。
6. 设计一些参考外壳,然后把从里到外的整套设计演示给制造厂商看。
MTK一站式解决方案(Turn-Key)模式出现以前,手机Design House与制造厂商的合作
模式,主要是Open BOM 模式。在这个合作模式下,Design House提供主板设计的图纸,
以及需要采购的配件元器件清单(BOM List)。手机制造厂商拿到主板设计图纸以后,让芯
片厂商按图纸制造主板。同时,手机制造厂商根据BOM List,采购其它所需配件元器件。主
板和配件元器件到齐以后,手机制造厂商组织生产以及质量测试。然后把生产出来的手机整
机交付营销商销售。
MTK 的一站式解决方案(Turn-Key),实质上是把芯片厂商与Design House 两家的工作,
由MTK一家包揽了。MTK提供给手机制造厂商的不是设计图纸,而是提供已经组装了主要
元器件的主板实物(PCBA),以及供参考的BOM List。手机制造厂商,只需要根据BOM List,
选择采购与主板兼容的LCD,麦克风,扬声器,以及外壳。然后把这些外设以及主板组装
起来,贴牌打包,即可上市销售。
采用 Turn-Key 模式,手机制造厂商需要采购LCD 等等外设,然后组装到主板上。如果手
机制造厂商,连这两个步骤也嫌麻烦,MTK 甚至可以提供完整的裸机。这种模式,称为整
机解决方案(Whole-Set)。采用Whole-Set 模式,手机制造厂商只需采购并组装外壳,就
可以贴牌打包上市销售了。
Figure 33. MTK提供的主板,组装了外设以后的裸机,以及装上外壳后的手机[29]。
Courtesy
Figure 34. 裸机主板的正面[30].
Courtesy
总之,MTK模式的出现,颠覆了以往的Open BOM模式,取而代之以Turn-Key模式,甚
至Whole-Set模式。在Turn-Key模式下,MTK只提供主板,参见Figure 33中,左边那张
照片,以及与主板兼容的可供选择的BOM List。在Whole-Set模式下,MTK不仅提供主板,
而且连外设也组装好了,手机制造厂商只需要组装外壳,参见Figure 33中,中间那张照片。
中间那张已经组装好了外设的主板的反面,参见Figure 34 [30]。图中可以清晰地看见MTK
的芯片,MT6225A。
MTK 模式的出现,打破以往手机制造大厂,垄断手机市场的局面,催生了众多小资本小规
模的手机制造厂商。对于消费者来说,MTK Feature Phone的卖点是,价格低廉,外壳新
潮,但是缺点是功能雷同。
MTK 模式出现以后,其它Design House 并不是无事可做,他们仍然可以在MTK 基础上,
做一些增值软件开发等等工作,但是这些修修补补的工作,难以重现往日Design House日
进斗金的辉煌了。
对比 Figure 34中MTK FeaturePhone的主板,与Figure 30中iPhone SmartPhone的主
板,一个明显的区别是,前者只有一块主板,而后者分为AP 和BP 两块主板。MTK 在
FeaturePhone时代的成功,是否能够在SmartPhone时代继续发扬光大?要回答这个问题,
首先要深入了解FeaturePhone与SmartPhone在硬件及软件方面的区别。
Reference,
[23] MTK平台发展及各款芯片的功能。
()
[24] 增强型Samsung S3C44BOX/ARM7TDMI开发板。
( /ARM7/16420090317111000.html)
[25] 比亚迪LCD 产品介绍。()
[26] 拆解初版iPhone。()
[27] 拆解3G版iPhone。()
[28] 手机Design House与制造厂商的合作模式。
()
[29] MTK平台手机。
(http://wujianspace.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&p
artqs=cat%3D%25e8%25ae%25a1%25e7%25ae%2597%25e6%259c%25ba%25e4%25
b8%258e%2520Internet)
[30] 山寨手机存活的理由。
( /10122253121.shtml)
【6】MTK手机的基带芯片
MTK的硬件技术的核心,在于它的基带芯片。为了降低成本,同时缩减手机主板的面积,
基带芯片中除了CPU 以外,还集成了很多外设控制器。FeaturePhone的功能,基本上取
决于基带芯片所支持的外设功能。
最早的MT6205方案,只有GSM 的基本语音功能,不支持GPRS 数据通信、没有WAP、
MP3等功能。
随后MT6218在MT6205基础上,增加了GPRS数据通信、WAP浏览、MP3功能。
接着MT6219在MT6218基础上,又增加了内置1.3M 照相/摄像功能,同时还增加了MP4
功能。
MTK再接再厉,在MT6219基础上进一步优化,开发了MT622x 系列产品。例如,MT6226
是一款性价比相当高的产品,内置VGA照相/摄相处理,支持GPRS、WAP、MP3、MP4
等。同时,还开发了多款衍生品,例如,MT6226M 支持1.3M 相机的。MT6227支持2M
相机。而MT6228不仅增加了电视输出功能,同时还支持3.0M 相机,等等。
从已经淡出市场的MT6205,MT6217,MT6218,MT6219,到现在仍然在市场销售的
MT6223,MT6225,MT6226,MT6227,MT6228,MTK生产的所有Feature Phone的基
带芯片,均采用ARM7的内核。
Figure 34. 以MT6225基带芯片为核心的MTK主板[30]
Courtesy
Figure 35. MT6225 Architecture [31,32,33,34]
Courtesy
在Figure 34中,整个MTK手机主板的核心,是红线标出的MT6225基带芯片。虽然MT6225
芯片的尺寸很小,但是它包含的功能却不少,参见Figure 35。
以 MT6225基带芯片为核心,加上电源管理芯片(PMIC)例如MT6318,还有射频芯片例
如MT6139,另外再加上Flash 存储芯片,就构成了MTK 手机主板的基石。把这些芯片的
引脚,连接上天线,LCD 显示屏,SIM 卡槽,扬声器麦克风等等外围设备,就实现了一个
完整的FeaturePhone的基本功能。
MT6225芯片的核心,是ARM7EJ-S微处理器(Micro Controller Unit,MCU)。ARM7EJ-S
微处理器的基本任务,是执行最基本的计算机指令(Instruction Set),例如move,add,
branch,shift,and,push/pop 等等[34],学过汇编语言的同学应该不陌生。
Figure 36. ARMv5TEJ CPU Core Block Diagram[34]
Courtesy
在 ARM7EJ-S 微处理器内部,又可以细分为多个模块。其中,负责执行机器指令的模块,
是ARMv5TEJ CPU 内核。
指令执行的物理实现方式,决定了CPU 内核的结构。CPU 内核结构的设计,包括如何设置
memory和register,如何读入数据以及移出数据,如何处理address,interrupt,exception,
等等。ARMv5TEJ CPU 内核的物理结构,如Figure 36所示。图中显示了CPU 内部各个物
理模块,以及各个模块之间相互勾连的组织方式。其中包括数据处理模块,如load/move,
算术运算模块,如add/multiply,以及数位操作模块,如shift/rotate,等等。
ARMv5TEJ 这个CPU 内核型号中,v5 代表第5 号版本的ARM 指令集,以及相应的CPU
内核物理结构。ARMv5TEJ CPU 内核被运用在多款微处理器中,包括ARM7EJ-S 和
ARM926EJ-S。StrongARM 系列微处理器的CPU内核是v4,ARM11 系列的CPU大多是
v6,而ARM Cortex 的CPU则是v7[36,37,38]。
虽然ARM有不同版本的指令集,但是这些指令的物理意义大同小异,不同之处在于指令数
量的多寡,以及指令的语法规则的调整。不管是哪一个版本,ARM 的指令集都属于精简指
令集RISC 系列。RISC(Reduced Instruction Set Computer)的设计宗旨,是把逻辑复杂
的指令,分解为一连串简单的基本指令,而RISC 指令集只包含这些基本指令。RISC的好
处是,逻辑电路简单,体积小,同时可以通过提高频率的办法,提高CPU 运行速度。但是
代价是增加了CPU与Memory之间数据交换的负担。
所谓精简指令集中的“精简(Reduced)”,是相对于早年不精简的指令集而言。不精简的指
令集,或者专业一点讲,复杂指令集CISC(Complex Instruction Set Computer)并没有过
时,并没有成为被淘汰的技术,例如Intel 的x86 CPU 系列,不仅当今仍然是电脑CPU的
霸主,而且Intel 正在积极努力,把x86 CPU 芯片,推向手机芯片市场。
老牌CISC 学派不同意RISC 的思路,他们认为,单纯提高CPU 的频率,并不能提高整个
系统的运行效率,理由是Memory 的IO 速度比CPU 慢,拖了整个系统的后腿。所以,为
了提高系统的运行效率,应该设法降低CPU 与Memory之间的数据交换。过份精简指令的
数量,导致的后果是增加了CPU与Memory之间的数据交换,从系统整体性能上看,得不
偿失[39]。
来自CISC 阵营的批评很有道理。于是,ARM 的设计者们在两个方面改进了ARM 微处理
器的设计,1. 扩展指令集,2. 添加memory管理的模块。
1. 扩展指令集。
前文说到,ARMv5TEJ是一款CPU 内核的型号名称,其中v5代表第5版本的CPU 内核,
T代表Thumb 指令集,J代表Java bytecode指令集。
ARM 原有的指令都是32-bit,而Thumb 指令只有16-bit。Thumb 指令集基本上是原有ARM
指令集的一个子集,通过压缩参数数量的办法, 降低指令长度。降低指令长度的目的,是
变相降低CPU 与Memory之间的IO,从而提高运行效率。但是压缩参数数量,等同于弱化
了微处理器的灵活性,降低了它的功能。为了解决这个问题,ARM 采取了同时支持原有ARM
指令集以及Thumb指令集的办法。通过识别指令的类别,对这两个指令集,分别处理。
除了支持Thumb 指令集以外,ARMv5TEJ 微处理器还同时支持8-bit 的Java bytecode。
负责执行Java bytecode指令的,是Jazelle模块。
至于ARMv5TEJ中那个“E”,意思是该微处理器还支持专为数字信号处理(DSP)设计的特
殊指令集。
2. 添加memory管理的模块。
前文还说到,ARMv5TEJ CPU 内核被运用在多款微处理器中,包括ARM7EJ-S 和
ARM926EJ-S。这两款微处理器的型号中都带有“-S”后缀,代表可合成(Synthesis),意
味着购买此微处理器技术的客户,可以自行对微处理器结构做进一步修改,例如改变频率,
扩展指令集等等。例如,前面Figure 35描述了MT6225芯片的内部结构,其中包括嵌入的
ARM7EJ-S微处理器部分。
Figure 37. Comparison of ARM7EJ-S and ARM926EJ-S Architectures [36].
Courtesy
Figure 37对比了ARM7EJ-S与ARM926EJ-S两款微处理器的逻辑结构。ARM7EJ-S微处
理器的逻辑结构,如Figure 37中左侧所示。这款微处理器的结构很简单,以ARMv5TEJ
为CPU 内核,辅以数据总线接口,用来接收来自外部的控制指令,以及交换数据。另外,
还设有与其它芯片协同工作的接口,以及Embedded Trace Macrocell(ETM)接口,用来
跟踪和调试CPU 内部工作状态。
Figure 37中右侧图,显示的是ARM926EJ-S微处理器的逻辑结构。对比ARM7EJ-S与
ARM926EJ-S,后者复杂很多。但是概括一下,ARM926EJ-S结构的调整,着力于两个方
面,1. ARM7遵循的是冯诺依曼结构,而ARM9转变成了Harvard结构,也就是把指令与
数据分开处理[45]。2. 增添了核内缓存(Cache),以及与紧致内存(Tightly Coupled Memory,
TCM)的接口[46,47],此外,还增添了MMU(Memory Management Unit),强化对内存的
管理。
由于ARM7系列微处理器内部没有MMU,所以ARM7系列无法实现虚拟内存。没有虚拟
内存的后果是,各个进程和内核之间可以互相访问对方使用的地址空间,这个漏洞的隐患很
大,有可能让恶意程序钻空子,获取整个操作系统的控制权,然后为所欲为。典型的案例就
是死机短信[49],这条短信利用了短信处理程序中的bug,造成黑屏和抖动,让手机系统失
常。
从 ARM 的网站上可以查到,MTK直接从ARM 购买的生产许可证,仅限于ARM7系列,
包括ARM7TDMI,ARM7TDMI-S,ARM7EJ-S[40]。这个局面,一直延续到2007年9月
10日才发生改变,当时MTK收购了ADI旗下SoftFone手机芯片系列。MTK此举的目的,
主要是着眼于ADI在3G上的专利,但是MTK同时间接获得了ARM9和ARM9E系列的生
产许可证,可谓一箭双雕。
从此MTK基带芯片产品,有两个系列,嫡系的MT系列与兼并来的SoftFone系列[42]。在
MT系列中,编号小于MT6235的各款芯片,内核均为ARM7系列。而SoftFone系列各款
芯片中,有的以ARM7系列为内核,也有的以ARM9系列为内核,ARM9系列中使用最多
的,是ARM926EJ-S这一款微处理器[43]。
回顾历史,MTK通过不断地优化升级自己的芯片,从而确定并扩大自己的市场地位。延续
这一做法,是否能够保持MTK的发展势头呢?不一定。MTK的传统领地在于
FeaturePhone,但是FeaturePhone正在被SmartPhone淘汰。MTK如何跟上SmartPhone
浪潮呢?且听下回分解。
Reference,
[30] 山寨手机存活的理由。(
/10122253121.shtml)
[31] MT6225芯片简介。()
[32] MTK6225内部结构简述。
( /weboch-50910-483309568.html)
[33] AM7EJ-S Introduction. ()
[34] ARM7EJ-S Technical Reference Manual.
()
[35] ARM926EJ-S Technical Reference Manual.
()
[36] ARM Processor Survey. ()
[37] ARM Processor Selector. ()
[38] ARM Core Overview.
(%EC%82%BC%EC%84%B1%ED%85%8C%ED%81%AC
%EB%85%B8MBA/2_arm_core.pdf)
[39] RISC vs CISC. ()
[40] ARM Processor Licensees. ()
[41] MTK收购ADI手机芯片产品线。
( /ART_8800078804_1400_2101_3101_4300_b1c7f2ad.HTM)
[42] MTK Product Lines. ()
[43] MTK SoftFone Product Line. ()
[44] MTK常用术语缩写。
( /4109.html)
[45] Difference of ARM9 from ARM7. ()
[46] 对ARM 紧致内存的理解。(http://hi.bccn.net/space-21499-do-blog-id-15164.html)
[47] ARM Technical Reference, Tightly Coupled Memory (TCM).
()
[48] Introduction to MMU. ()
[49] 让你手机死机黑屏的短信。()
【7】MTK手机软件系统
MTK feature phone的基本功能是通话和短信,要了解MTK手机软件系统,首先需要简要
回顾几个移动网络通讯的基本概念。
Figure 38. GSM-GPRS Architecture
Courtesy
以 GSM 系统为例,手机以无线方式建立起与基站(BTS)的联系,两者之间通讯接口是
Um。基站与基站控制器(BSC)之间的通讯接口是Abis,基站控制器与移动交换中心(MSC)
之间的通讯接口是A,参见Figure 38。
Figure 39. GSM Protocol Layer [1]
Courtesy
所谓接口(Interface),是一组协议的代名词,而这些协议可以分成若干层,层层叠叠,所
以接口又被称为协议栈(Protocol Stack)。Figure 39中最左边一列,显示的是手机需要处
理的协议栈。从第二列到第四列,分别显示的是基站(BTS),基站控制器(BSC),和移动
交换中心(MSC)分别需要处理的协议栈。相邻两列之间的虚线表示通讯接口,接口两侧
的协议栈对称,以保证通讯中传递的信息能够被对方识别。
MTK手机软件系统,需要处理的是最左边的协议栈[2]。
1. 该协议栈的底层是物理层(Physical Layer),负责无线射频(GSM RF)和信道管理
(Channel Access Method),用来传输原始的比特数据流,例如GSM 系统中的TDMA。
2. 第二层是数据链路层(Data Link. Layer),LAPDm 是该层使用的协议,负责把数据流分
成若干帧,并处理流控制。
3. 第三层是网络层(Network Layer),负责建立手机通讯发起方与接收方之间的连接。手
机的连接离不开基站,基站控制器以及移动交换中心。而且当手机的位置不固定时,譬如在
运动中的汽车上打电话,经过的基站,甚至基站控制器都不固定。所以,网络层又细分为三
个子层,分别是RR 层,MM层,以及CM 层。
3.1. RR 层负责无线资源管理(Radio Resource Management),负责建立手机与基站之
间的联系,尤其是当多个手机同时与同一个基站联系时,如何避免多个信道之间的相互干扰。
3.2. MM 层负责移动的管理(Mobile Management)。运动中的手机由一个基站切换到另
一个基站,甚至由一个基站控制中心切换到另一个基站控制中心,切换过程中如何保持通话
的连续性,诸如此类的工作由MM 层负责。
3.3. CM 层,又被称为CC 层,负责连接和呼叫的管理(Connection Management, or Call
Control)。在手机通话发起方拨号是,CM 层负责查询接收方当前所在位置,以及是否在通
话中,是否需要转入语音留言箱等等。
简要回顾一下GSM 的协议栈,有助于理解MTK的软件系统。GSM 协议层只规定了L1到
L3 三层协议,即物理层,数据链路层和网络层,并没有规定L4 以上的协议内容。MTK 把
L4视作应用层,L4的协议用来让应用程序调用网络层L3中的CM/CC 子层功能模块。
Figure 40. MTK software function modules [3].
Courtesy
Figure 40显示了MTK软件平台中包含的基本模块,来自MTK工程师的演讲稿[3]。其中各
个模块的名称缩写的含义,可参阅附录(Appendix)。虽然该资料来源可靠,但是Figure 40
图中存在一些令人疑惑的细节,
1. 物理层(L1),负责无线射频和信道管理。Figure 40中L1模块,如粗边框图所示。它的
左边是驱动器(Drivers)模块,右边是UART 串口。这种绘制方式不太准确,其实L1 和
UART都可以看成是硬件加驱动器的一种。
MCU(微处理单元)支持多种外设,例如扬声器/USB/远红外串口等等,参阅前文Figure 35。
每一个外设,不仅需要硬件,也需要驱动软件。MTK软件平台中包含的驱动软件非常丰富,
足以支持所有MCU 外设。
2. 数据链路层(L2)的模块,包含在Data部分,例如L2R。
按照图中所示,应用层(L4)可以通过CSM 模块,直接调用L2模块。这与先前介绍的GSM
协议栈是冲突的,按照协议栈的规定,L4只能与L3中CM/CC 子层联系。但是MTK的做
法,允许L4越级与L2直接联系。也就是说,[3]隐含的意思是,GSM 协议栈只是一个建议,
在具体实现中不需要严格遵守。
3. 网络层L3包含的功能模块很多,可以归纳为RR, MM/GMM,以及CC 三个部分,如图
中粗边的框图所示。
按照前文所述,GSM 协议栈建议,L3 层中RR 子层应该只与L2 模块联系,而不应该直接
调用L1模块。按图中所示,MTK没有严格遵守这个规定。更有意思的是,图中把L2与L3
描绘成并列的关系,而且它们之间没有直接联系,这一点也比较费解。
4. 应用层L4中的CSM模块,既负责与L3层的CM/CC 模块联系,也负责与L2层的L2R
模块联系,这一点似乎不合常规。
L4是连接应用程序与GSM 协议栈模块的接口。在FeaturePhone的语汇中,应用程序常常
被当成是MMI(Man-Machine-Interface)的同义词,其实细究一下,更准确的说法是,应
用程序是MMI 的一部分[4]。根据[3]的文字叙述,尤其是pp19 关于L4A 和L4C 的介绍,
以及pp38 关于Keypad 事件触发机制的介绍,似乎MTK 的应用程序,对于其它功能模块
的调用,有四种机制,如Figure 41所示。
Figure 41. MMI Architecture
Courtesy
4.1. 通过GUI模块控制LCD 显示屏。
4.2. 通过L4模块,以任务的方式,实现通信及其它附加功能,例如SIM 卡控制,语音通
信,数据通讯,通话历史记录,电话本,照相机等等功能。
4.3. 通过Framework 中的API,直接对文件系统进行操作,而无需通过OS。
4.4. OS的功能限于多任务的调度,以及内存的管理。
这四种调用机制中,尤其是第三和第四这两种,与PC 以及smartphone的差别非常大。这
阻碍了MTK软件平台未来顺畅地发展,这个问题留给后续文章,做进一步讨论。
Figure 40 中没有详述MTK 应用模块调用底层模块的四种机制,而只是简练笼统地描述成
FMI(Feature Rich MMI)。不妨把Figure 41,视为Figure 40中,FMI模块的局部放大。
虽然Figure 40存在一些令人疑惑的细节,但是基于它对于MTK各个功能模块的描述,同
时参考同一份资料的另一张图[3],我们不难勾勒出MTK软件系统的结构,参见Figure 42。
这张图略去了Figure 40中一些细节,例如RMI(Remote MMI)。RMI不仅可以支持PC 操
控手机,而且也为SmartPhone中,AP(Application Processor)与BP(Baseband Processor)
的分离打下了基础。这些内容留给后续章节。
Figure 42. MTK Software Platform. Overview [3].
Courtesy
比较 Figure 40与Figure 42,Figure 40中OS的位置,应该理解成原理介绍大于实际结构。
而Figure 42中描绘的,是系统架构,更符合实际情况。即,OS负责为整个系统,包括各
个协议栈模块,以及应用程序,提供多任务的调度,以及内存的管理。
MTK 使用的OS 是Nucleus。Nucleus 原为Accelerated Technology 公司的产品,开发于
1990年代。2002年,被Mentor Graphics 公司收购。目前Nucleus源代码完全开放,无产
品版税(Royalty Free),开发和调试工具齐全。Nucleus 系统是模块化结构,可以随意裁剪,
支持几乎所有嵌入式微处理器(MCU),可移植性强,无需BSP(Board Support Package,
版级支持包)开发[5]。
Nucleus 除操作系统内核(Kernel)外,还提供TCP/IP协议包(Nucleus Net),图形软件
包(Nucleus Grafix)等等辅助工具,被广泛应用与各式嵌入式系统中,包括手机,网络设
备,车载电子设备,通讯设备,医疗仪器等等。
MTK选用Nucleus 的原因,估计有三条,1. Nucleus 质量可靠,2. 开发容易,3. 成本低。
而且MTK 只用了Nucleus 的内核部分,这样的做法降低了MTK 软件系统对于Nucleus 的
依赖性。所谓Nucleus 内核,主要是多任务并发的处理机制,以及内存的管理,包括以下
几个部分。
1. 任务的调度,包括优先级(Priority),时间片(Time Slice),和抢占性(Preemptive)
控制机制。
2. 任务间的通信,包括信箱(Mailbox),队列(Queue),和管道(Pipe)通讯机制。
3. 任务间的同步,包括旗语(Semaphore),事件(Event),和信号(Signal)同步机制。
4. 内存的管理,包括分区与动态两种方式,即定长的与不定长的内存分配与释放。
Nucleus 内核,与Linux 等等其它内核并无重大区别。MTK 在Nucleus 与其它系统模块之
间,设置了一个适配层(KAL OS Adaptation)。这个适配层的意义,在于把OS内核的具体
实现封装起来,方便系统调用(System Call)。另外,MTK并没有用到Nucleus 对外设管
理的支持,以及Nucleus 应用程序图形界面库等等。
关于MTK 系统的硬件与软件,就介绍到这里。理解了MTK 的系统,或者更确切地说,针
对FeaturePhone的软硬件系统,我们就不难理解SmartPhone的出现,是FeaturePhone
的进化产物。而Figure 40中提到的RMI (Remote MMI),可以视为进入SmartPhone新
世界的入口,且听下回分解。
Appendix,
MTK软件系统中,各个功能模块名称缩写的全称和简介,参阅Figure 40。
1. RMI: Remote MMI,例如PC 可以通过UART口与协议栈进行通讯。
2. FMI: Feature rich MMI
3. L4: MMI通过L4与gsm/gprs 协议栈进行通讯,包括以下子模块,
3.1. ATCI: AT Command Interpreter, 解释来自PC端的命令并命令L4做相应的动作
3.2. L4A: L4 adaptation Layer, MMI与L4A通过消息通信
3.3. L4C: L4 Control entity, 处理所有的应用程序请求和响应
3.4. UEM: User equipments adaptation, 驱动相关的适配层
3.5. PHB: Phone book management, 电话簿相关的处理,如分类等
3.6. SMU: SIM management Unit, 安全性管理以及STK
3.7. CSM: Circuit switching protocol stack management电路交换协议栈管理
3.8. RAC: Registration access control
3.9. SMSAL: Short message service application layer
3.10. TCM: Terminal context management
4. NVRAM: Nor-volatile RAM, 是MMI到Flash的一个适配层, 保存一些默认设置
5. SIM: Subscriber identity module. Handle SIM behavior. as ETSI 11.11 description
6. DATA: 电路交换数据服务,包括以下子模块
6.1. FAX: Group 3 Facsimile
6.2. TDT: Transparent circuit switching data
6.3. L2R: Layer 2 relay protocol for non-transparent circuit switching data
6.4. RLP: Radio link. protocol for non-transparent circuit switching data
7. CC: Circuit-switched call control 电路交换呼叫控制
8. SS: Supplementary service 附加服务
9. SMS: Short message service 短消息服务
10. SM: Session management 会话管理
11. MM/GMM: Mobility management 移动性能管理
12. SNDCP: Sub-network dependent convergence protocol
13. LLC: Logical link. control 逻辑连接控制
14. RR: Radio resource management, 包括以下子模块
14.1. RRM: Handles cell selection and PLMN selection
14.2. RMPC: Handles the procedures in Idle/Dedicated state including the surrounding
cell scheme and measurement reporting
14.3. LAPDM: Handles the procedure defined in GSM layer 2
14.4. RLC: Radio link. control protocol
14.5. MAC: Medium access control protocol
14.6. MPAL: Adaptation layer for RR and L1A
15. PPP Point to Point protocol layer, 客户端点对点协议
Reference,
[1] GSM Protocol Stack. ()
[2] GSM Um Interface. ()
[3] MTK Software Platform. ()
[4] 浅谈GSM 手机的MMI软件开发. ()
[5] Introduction to Nucleus OS. ()
【8】自己动手做 XP手机,DIY 实战指南
2010年1月20日,ViewSonic在北京发布了一款真正意义的电脑手机VCP08。根据商家
的宣传,VCP08之所以能够被称为真正的电脑手机, 是因为“该机做到了把真正的
WindowsXP操作系统嵌入进手机当中”[1]。
Figure 8.1 ViewSonic VCP08's shape and size.
Courtesy
ViewSonic VCP08电脑手机的平面尺寸比普通手机略大,但是厚度则远超普通手机,参见
Figure 8.1。超凡的厚度,并不仅仅是因为VCP08手机采用翻盖设计,事实上,VCP08电
脑手机,是XP上网本与MTK手机,两个独立运行的系统的简单合并。
Figure 8.2 ViewSonic VCP08 is a combination of a XP Netbook, plus MTK feature phone.
Courtesy
VCP08 的外屏延用MTK手机系统,是一个自主运行的封闭系统。而内屏则采用Window XP
系统,配置Intel Atom Z500双核CPU,CPU速度是800MHz,内存空间512MB,硬盘空
间8GB,内屏屏幕为4.3英寸,分辨率高达800x480像素,是不折不扣的上网本[2]。不过,
VCP08的电池,只能支持2个小时的电脑操作[1]。
一言以蔽之,VCP08相当于在XP电脑上绑一个MTK Feature Phone。
Figure 8.3 Faked picture, a laptop bundled a MTK phone.
Courtesy
有没有可能自己做个电脑手机,也就是能够打移动电话的电脑呢?Figure 8.3是一个假想图。
下面,我们自己动手,做一个电脑手机。
第一步,先准备4样硬件。
1. 一台PC,运行Windows XP操作系统。
2. 一张SIM 卡。
Figure 8.4 SIM Card
Courtesy http://image.tianjimedia.com/imagelist/2009/159/tve53lu1g25x.jpg
3. 带麦克风的耳机。
4. 一台GSM/GPRS调制解调器(GSM/GPRS,Modem),例如MultiTech的MTCBA-G-F4
产品系列,串口的MTCBA-G-F4 或者USB 的MTCBA-G-U-F4 都可以,价格分别是150
美元和230 美元[3]。如果嫌MultiTech 的Modem 价格偏高,也可以选用国内生产的
GSM/GPRS Modem,安装和调试步骤可能略有不同,请参阅相关产品说明书。
Figure 8.5 GSM/GPRS Modem, MultiModem MTCBA-G-F4 [4]
Courtesy
第二步,连线安装。
1. 把SIM 卡插入Modem
Figure 8.6 Insert the SIM card into the modem [4]
Courtesy
2. 接上天线和电源,然后接入PC机串口或者USB口。如果需要语音电话,可以要求厂家
提供一条特殊的电缆,一端接Modem,另一端有两个接头,一个接PC 机串口或者USB
口,另一个接带麦克风的耳机,用来接收和传送语音。
Figure 8.7 Connect to power, antenna, and then the PC via RS232 or USB. [4]
Courtesy
3. 在XP操作系统中,点击Start(开始)-> Set(设置)-> Control Panel(控制面板)-> Add
Hardware (添加硬件)。
如果选用的Modem 是MultiModem MTCBA-G-F4,随产品附带的CD中,含有相应的驱动
程序。
Figure 8.8 Add modem driver.
Courtesy
第三步,调试及使用。
如果一切顺利,DIY版电脑手机就可以使用了。
1. 监测信号强度。
打开超级终端,即,点击Start(开始)-> All Programs(程序)-> Accessories(附件)->
Communications(通讯)-> HyperTerminal(超级终端)。如果PC 操作系统中,没有自带
HyperTeminal 软件,不妨下载替代品,例如Teraterm,
在超级终端(HyperTerminal)中,键入AT+CSQ
2. 检查GSM 登录及漫游。
在超级终端(HyperTerminal)中,键入AT+CREG?
回应:0,0表示还没登录,无法操作
回应:0,1表示已登录本地网
回应:0,5表示已登录一个漫游网
3. 打语音电话。
在超级终端(HyperTerminal)中,键入ATD1234567;
回应:OK
请注意不要忘记键入分号,分号代表语音呼叫。
1234567是随意举例的一个电话号码,如果你拨打的电话号码是7654321,那么这个命令
就是ATD7654321;
4. 挂机。
在超级终端(HyperTerminal)中,键入ATH
回应:OK
5. 发短信。
在超级终端(HyperTerminal)中,键入AT+CMGS=“1234567”发送短信到号码为“1234567”
的移动电话。
等待“>” 出现。
然后键入短信正文,按Ctrl-Z结束。
回应:
+CMGS: 52
OK
6. 收短信,这个稍微复杂一些。
在超级终端(HyperTerminal)中,键入AT+CMGF=1 以此设置成文本格式。
回应:“OK”。
键入AT+CSMS=1,以此设置SMS服务为GSM 07.05 Phase 2+兼容。
回应:
+CSMS: 1,1,1。各个参数的含义参阅[4]。
键入AT+CNMI=2,2,0,0,0 以此设置短信接收模式为直接转发到我们的DIY版电脑手机。
回应:
OK
+CMT: "+17632273726",,"06/03/17,09:06:11+00" (发送端电话号码及时间)
TEST SMS 3 (收到的短信内容)
键入AT+CNMA,通知网络短信已经收到。
屏幕回应:
OK
7. 连接Internet网络。
通过呼叫PPP,建立Internet连接。详细过程比较复杂,参阅[4]。
总结一下,制作一部DIY版电脑手机不复杂。如前文所述,电脑手机的关键部件是Modem。
不仅可用MultiTech生产的Modem,其实任何一个GSM/GPRS Modem 都能用。甚至,
也可以用一部MTK的Feature Phone来替代Modem,只不过安装和调试略微麻烦一点而
已。
我们制作DIY版电脑手机,并不纯粹为了自娱自乐,满足好奇心。通过这个例子,有助于
认清一下几个问题。
1. 移动通信的任务,其实完全可以用一部Modem 来完成。
2. 所谓电脑手机,实质上无非是把普通PC 以及操作系统,与Modem 相连。PC 操作系统,
可以通过AT指令,对Modem 进行相应控制,包括拨号,通话,收发短信等等。
3. DIY版电脑手机的操作界面非常不直观。为了改善用户体验,不妨通过开发界面友好的手
机应用程序包,实现以下功能。不难想像,开发这样一个应用程序包,虽然有一定难度,但
也并非遥不可及。
- 拨打电话:发起或接受语音电话。
- 短信管理:编辑短信,发送短信,接受短信,删除,回复或者转发短信等等。
- 通话历史
- 电话本
- 手机设置
4. 至于PC 上其它应用程序,例如日历,记事本,计算器等等,完全可以忽视Modem 的
存在,或者仅仅把当它当作是一个能够提供数据连接的网卡。
为什么需要电脑手机?根本原因在于Feature Phone 的功能有限,仅仅限于通话,短信,
以及一些预装的多媒体应用。手机生产厂商预装的功能再多,永远无法满足所有用户的,形
形色色的功能需求。所以需要一个类似于PC 的操作系统,能够支持第三方开发各种通用
软件,并且支持用户自主下载并安装非预装的软件。
那么,我们自己做的电脑手机与WinMobile或Android等等平台的SmartPhone有什么区
别?事实上我们的电脑手机与其它SmartPhone并没有本质的区别,或者说其它
SmartPhone是更加精致的电脑手机。一印科技制作的xpPhone,就是这样一款更加精致的
电脑手机。
Figure 8.9 xpPhone outlook [5].
Courtesy
Figure 8.10 xpPhone applications [6].
Courtesy
Figure 8.11 xpPhone applications [6].
Courtesy
虽然一印科技的xpPhone外观看起来很炫,用户体验很好。但是从技术角度来讲,结构上
与我们的DIY电脑手机同出一辙,一印科技的精力放在了外观的优化,以及应用程序的开
发上。
事实上,虽然SmartPhones 款式众多,令人眼花缭乱,但是它们的内部软硬件结构,大多
十分相似。从下一章节开始,我们着手解剖SmartPhone。
Reference,
[1] XP+MTK双系统手机。(
/5TGLC8MC0011179O.html)
[2] 优派VCP08电脑手机。()
[3] MultiTech Modem product list.
()
[4] MultiModem GPRSWireless Modem MTCBA-G-F4 manual.
(http://www.multitech.com/en_us/documents/collateral/manuals/s000443b.pdf)
[5] xpPhone introduction. ()
[6] xpPhone applications. ()
【9】SmartPhone的硬件结构
如何区别智能手机(SmartPhone)与功能手机(FeaturePhone)?
有一种观点认为,智能手机本质上是功能手机与便携式电脑(Laptop PC)的结合。功能手
机的功能受限于制造厂商的预制,也就是说,用户基本上只能使用手机出厂时已经预制的功
能,而不能自主下载并安装新的应用。而个人电脑出厂时,多半是裸机,用户根据自己的喜
好,自主决定安装哪些软件。一言以蔽之,所谓智能手机,就是用户能够自主安装应用软件
的手机。
按照这个定义,智能手机与上网本(Netbook)有什么本质区别呢?
智能手机与上网本并不存在本质区别。如果说电脑与功能手机是一段光谱的两极,那么智能
手机与上网本都处于两极的中间。智能手机更接近功能手机,强调小巧,省电。而上网本更
趋近与电脑,强调功能,但是代价是尺寸较大,耗电,续航时间短。例如,Apple公司最新
推出的iPad上网本,实际上就是放大了尺寸和功能的iPhone智能手机,见Figure 9.1 并
参考文献[1] 。
Figure 9.1 iPad notebook is an enlarged iPhone smartphone. [1]
Courtesy
从硬件结构上看,不妨把智能手机粗略地概括为电脑加移动网卡。我们在上一节,“自己动
手做电脑手机”一文中,大致介绍了电脑加移动网卡的具体做法。
智能手机== 电脑+ 移动网卡,这个提法比较粗略,更精准的提法应当是,智能手机的硬
件结构分为AP 和BP 两个部分。AP,应用程序处理器(Application Processor),负责大
部分应用程序的执行。而BP,基带处理器(Baseband Processor),也称为通信处理器(CP,
Communication Processor),负责所有通讯软件的执行。
如果说功能手机的硬件结构,以BP为主体,添加了一些额外的应用程序和相应的硬件外设。
那么智能手机作为功能手机的进一步发展,在BP的基础上,增加了AP,专门用于强化对
应用程序的支持。
但是AP并不等同于电脑主板,这主要体现在CPU的配置上。一方面智能手机AP的CPU
的运算速度,应当趋近于电脑CPU 的速度。以往智能手机AP的CPU,速度通常是200MHz
以上,而近期高档智能手机AP 的CPU 速度,有的已经达到1GHz。另一方面,智能手机
AP 的CPU 不能一味追求速度,而且要均衡CPU 尺寸,便于携带,还要考虑省电, 延长
续航时间。
在权衡了CPU 的速度,尺寸,以及耗电量等等诸多因素以后,ARM 系列CPU 成为智能手
机AP 的CPU 的主流。当然,并不是所有厂商都接受这个观点,例如Intel 就不看好ARM
系列。
2006年,Intel 把ARM 指令兼容内核的StrongARM/XScale产品线,作价6亿美元,卖给
了Marvell [2]。同时,Intel 着力发展x86内核的Atom CPU,与ARM 系列争夺手机芯片市
场。但是代号为Menlow 的第一代Intel 手机芯片,由于功耗和电源管理无法满足手机的要
求,无法挑战ARM系列在手机芯片市场的地位,只好转战上网本[3]。
但是在2010年1月份举办的美国家电年度展会(CES)上,韩国厂商LG展示了一款新手
机,LG GW990,见Figure 9.2。这款手机的看点,是使用了代号为Moorestown的第二代
Atom CPU芯片。据传闻,Moorestown的续航时间长达24小时[4,5]。
Figure 9.2 LG GW990, with Intel Moorestown Atom CPU inside [5].
Courtesy
http://www.blogcdn.com/www.engadget.com/media/2010/01/intel-keynote-ces10-0175-rm
-eng.jpg
虽然Moorestown似乎很有潜力,但是就目前而言,ARM 系列CPU在手机芯片市场的霸主
地位,是毋庸置疑的。例如,最近几年,多款被市场热捧的智能手机,它们的CPU 都不约
而同地选用了以ARM Cortex A8为内核的芯片。
1. Palm 公司曾经在1990年代以掌中宝Palm PDA风光一时。后来一度沉寂,迷失了自己
的定位。2009年1月,在美国家电年度展会(CES)上,Palm 高调宣布他们研制的Palm
Pre手机即将上市。这款手机的确很炫,获得该年度CES大奖。
Palm Pre手机于2009年6月正式上市,它使用的CPU 芯片,是德州仪器(TI)于2007
年推出的OMAP3430芯片,而OMAP3430芯片的内核,是ARM Cortex-A8 [10]。
2. 同样在2009年6月份,Apple公司的iPhone 3GS也上市,把Palm Pre的风头抢了过
去。iPhone 3GS的CPU,选用的是Samsung S5PC100芯片,这款CPU 的内核也是ARM
Cortex-A8 [11]。
3. 老牌手机制造商Moto,业绩持续下滑。但是在2009年底,老树新花,Moto推出以Google
Android v2.0 为操作系统的Droid,火爆一时。与Palm Pre 手机不谋而合的是,Droid 的
CPU 也选用了TI的OMAP3430芯片,其内核也是ARM Cortex-A8 [12]。
4. Google一直声称自己不介入手机制造。但是在2010年1月,由台湾HTC 代工的Nexus
One,却是Google 自己的品牌手机。Google Nexus _disibledevent=189601851)
[3] Intel drops Centrino Atom Brand after 5 months.
(
d_after_five_months.html)
[4] Intel demonstrates Moorestown smartphone.
()
[5] Intel Keynote CES 2010, introducing Moorestown.
()
[6] Introduction to TI OMAP3430 micro-processor.
(http://focus.ti.com.cn/cn/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&n
avigationId=12643&contentId=14649)
[7] ARM Processor Survey. ()
[8] ARM Processor Selector. ()
[9] ARM Core Overview.
(%EC%82%BC%EC%84%B1%ED%85%8C%ED%81%AC
%EB%85%B8MBA/2_arm_core.pdf)
[10] Palm Pre technical spec.
()
[11] iPhone series technical spec. ()
[12] Moto Droid technical spec. (http://developer.motorola.com/products/droid/)
[13] Google Nexus _disibledevent== 电脑+ 移动网卡,这个提法比较粗略,更精准的提法应当
是,智能手机的硬件结构分为应用程序处理器AP,和基带处理器BP两个部分。虽然AP
部分的功能与电脑主板基本类似,但是硬件结构有很大不同,不同之处体现在CPU的选择,
以及整个主板的布局连线。
BP负责所有通讯软件的执行,它的硬件结构, 也并非如网卡那么简单。基带处理器BP的
实现,有三种方式。
1. 分立器件(Discrete Components)。
把 BP部分的CPU,内存,电源管理,无线收发器,功率放大器等等器件,作为散装器件
组装起来的做法,称为分立器件。如Figure 10.1所示,Palm Pre的BP部分,采用的就是
分立器件的做法[1]。有趣的是,Palm Pre把BP部分与AP部分,分别组装在不同的电路
板上。这个做法,不同于Moto Droid和iPhone 3GS,参见上一章中Figure 9.6的手机实体
图,和Figure 9.5的逻辑结构图。Moto Droid把逻辑上属于BP的器件,以及属于AP的器
件,统统组装在同一块电路板上。而iPhone 3GS,虽然也把AP和BP的器件组装在同一
块电路板上,但是隔离成了不同屏蔽区域。
不同的分立器件的组装方式,对于散热,抗震,重量和外观会有一定影响。各个厂商考虑这
些因素时的侧重点不同,导致各自选择了不同的组装方式。
Figure 10.1 Palm Pre teardown and analysis [1].
Courtesy
2. BP模块。
最接近网卡的方式,是BP模块。使用BP模块很方便。在设计电路板时,设计好相应的接
口,大部分情况下是miniPCI接口。在制造时,只需要把外购来的完整BP模块,插入相应
接口即可。这个做法很方便,但是方便的代价是成本,通常3G BP模块的单价超过100美
元。所以,熟悉BP内部结构,技术积累厚实的手机制造厂商,多半不用BP模块,而是选
择了成本低,但是技术难度大的分立器件方式。
但是,对于其它移动设备,例如电子书(eBook),考虑到作为新产品,抢先进入市场的时
间,比成本更重要。而且作为投石问路的尝试阶段,对销量的期望不高。另外,eBook 的
赚钱法门在于销售内容,而不是设备本身。或许是考虑到这三个因素,Amazon 的电子书,
Kindle 1&2,Barns&Noble的电子书,Nook,采用的都是BP模块的做法,来解决移动上
网的需求[2,3,4]。
Amazon Kindle 2 有两个版本,美国国内版用的是Novatel 出品的E725 miniPCI模块,国
际版用的是AnyDATA 的DTP600W miniPCI模块。由于两个模块都是miniPCI 接口,它们
可以很容易互换。
Figure 10.2中,上排左边的照片是Amazon Kindle 2 国际版的外观。上排中间和上排右边
的照片是打开后盖时,看到的AnyDATA DTP600W BP模块的外观照片。下排左边的照片
是拆解了BP模块以后,看到的内部实物照片,下排右边的逻辑图,是Kindle 2国际版的逻
辑结构图,红线标识的部分,是BP模块所包括的构件。
Figure 10.2 Amazon Kindle 2 and its BP module [3,5].
Courtesy
3. SoC(System _disibledevent=49900397)
[8] Solving SoC shared memory resource challenges.
(
ges.html)
[9] Google Nexus _disibledevent== 电脑+
移动网卡,或者更准确地说,智能手机的硬件结构分为应用程序处理器AP,和基带处理器
BP两个部分。这里隐含着两个问题,
1. BP部分与AP部分的集成。
2. 传统的功能手机只配备了出厂时预装的应用软件,而不允许用户自主下载并安装第三方
应用软件,而智能手机突破了这一限制,因此智能手机的AP部分,必须有相应的开放机制,
方便第三方软件的开发与安装,同时尽可能降低第三方软件造成对整个系统,包括其它软件
的恶意伤害。更进一步说,智能手机的开放机制,不仅针对第三方软件,而且也针对手机生
产厂家,允许手机生产厂家更换手机系统的部分硬件设备,或者增设其它外设硬件设备,做
到一个通用平台可以出货多个手机型号,帮助手机生产厂家尽可能降低手机研发费用。
对于第一个问题,BP部分如何与AP部分集成,解决方案的思路很简单。翻开任何一本操
作系统教科书,都可以看到标准的分层结构,应用软件>> 操作系统>> 驱动器>> 硬件。
不妨把BP与AP的集成,与操作系统中的文件系统的构成相比较。
文件系统通常包括虚拟文件系统(Virtual File System,VFS)与实际存储设备(Storage
Device)两部分。实际存储设备包括闪存或者硬盘等等存储硬件,以及相应驱动器。虚拟
文件系统通过驱动器操纵存储硬件,在这个基础上实现文件和文件夹的建立与删除,文件读
写等等功能。虚拟文件系统之所以被称为虚拟,是因为应用软件通过标准的接口(APIs),
来调用虚拟文件系统实现的文件和文件夹的功能,而与实际存储设备究竟用的是哪一家厂商
出品的硬件和驱动器无关[1]。
如果把文件系统中的实际存储系统类比成智能手机的BP部分,那么虚拟文件系统相对应的
是AP部分中的Telephony Stack。Telephony Stack 提供三个功能,
1. 与BP部分的系统间通讯(Inter-Processor Communication,IPC),给BP部分下达指
令,建立通信通道,发送及接受语音和数据信息。IPC 的实现方式可以是通过传递ATCommand,
也可以是利用共享内存来实现数据交换。
2. 围绕BP部分提供的三大基础功能,即语音通话,短信等数据通信,以及SIM 卡管理,
加上与之密切相关的电话本(Address Book),提供以下服务,
- 拨打电话:发起或接受语音电话。
- 短信管理:编辑短信,发送短信,接受短信,删除,回复或者转发短信等等。
- 通话历史。
- 电话本。
- 手机振铃及振动设置。
- SIM 卡管理。
3. 提供标准的调用接口(Telephony APIs, TAPI),方便应用软件调用上述服务。
Figure 13-1描述的是WinMobile 6的AP系统中,Telephony Stack的内部结构。图中紫色
部分的模块,严格来说,并不属于Telephony Stack,它们是应用软件,它们通过调用
Telephony APIs 来使用黄色部分模块的功能。黄色部分的模块,负责实现拨打电话,短信
管理,SIM 卡管理,通话历史等等功能,称作cellcore,由cellcore.dll 提供,手机设计厂
家不可以更改cellcore。蓝色部分模块,主要是RIL(Radio Interface Layer),它负责AP
部分与BP部分之间的系统间通讯。RIL部分是硬件相关的,由手机设计厂家完成。
Figure 13-1. WinMobile Telephony Stack.
Courtesy
第一个问题,BP与AP的集成,比较容易解决。第二个问题,AP的开放机制,提供调用系
统资源的标准接口,既方便第三方软件的开发与安装,同时也尽可能降低开放的风险,这个
问题不太容易解决。什么方式的调用接口才算方便,什么程度的风险控制才算安全,这两个
指标都缺乏公认的衡量准则。在当前情况下我们能做的,或许是比较几个智能手机的AP部
分的设计,分析一下谁更方便更安全。
Figure 13-2描述的是,Telephony Stack 在整个WinMobile系统中的位置,由红色方框界
定。WinMobile为第三方软件提供了Win32 APIs,Win32 APIs 不仅提供了分配内存,控制
进程与线程,读写文件,连接网络等等基本功能的调用接口(APIs),也提供了开启和关闭
窗口,以及控制窗口控件的GUI相关的APIs。
Figure 13-2. WinMobile Architecture.
Courtesy
Win32 APIs功能全面,但是使用难度大。很多APIs附带的参数很多,很多重复性的工作没
有被封装,导致应用软件的开发,不仅代码量大,而且容易出错。有鉴于此,微软把纯C
的Win32 APIs,用VC++重新包装,形成MFC(Microsoft Foundation Classes)。作为一
种Object-Oriented 语言,VC++具有封装(Encapsulation),多态(Polymorphism), 继
承(Inheritage)等等特性。MFC 利用VC++这些特性,大大简化了对Win32 APIs 的调用
方式,程序员可以用更精简的代码,完成应用软件的开发。
微软把MFC 称为一种Application Framework。Application Framework这个概念的兴起,
源于寻求降低GUI 开发的难度。GUI 的开发,涉及图形,布局,事件捕捉与响应,消息传
递等等诸多技术,不仅入门难, 而且容易出错。Application Framework 借助多种编程环境
(IDE),工具集,和软件系统定式,例如MVC 定式,不仅简化了编程的复杂度,而且通过
规范编程方式,降低了出错的风险[2]。
MFC中的Object,可以直接分配内存,所以当清除Object时,需要手工清除内存分配,不
留残余。防范内存泄漏,不仅是应用软件开发过程中的难点,而且也容易出bug。如果把
MFC中的Object,称为原生态的Objec(t Native Object),那么Jave和C#/.NET中的Object,
是受管制的Object(Managed Object)。所谓受管制,主要体现在Virtual Machine中的垃
圾收集器(Garbage Collector)负责管理它们占用的内存空间,而不需要编程者手工分配
内存,与清除内存。
Google 的智能手机OS,Android,把Telephony 功能封装成Java Object,Telephony
Manager。依此类推,把GPS功能也封装成Java Object,Location Manager,此外还有
Resource Manager 等等。通过这些Manager Java Object,把外设硬件(peripheral)的功
能封装起来,提供简单的调用接口,降低了应用软件开发的难度,提高了程序员的生产力。
同时,还提供Activity Manager,Window Manager,Content Provider,View System,
Notification Manager 等等,简化并规范GUI的开发[3,4]。
这些Java Object运行在Virtual Machine上,它们的内存占用受Garbage Collector管制,
从而降低了内存泄露的风险。另外,Android给每个应用软件都分配了独立的VM实体,如
果某个应用软件出错,导致支撑其运行的VM 实体崩溃,但是通常不会殃及运行其它应用软
件的VM 实体,从而提高了系统的整体安全。
与 MFC 相比,Android的Application Framework,更方便,更安全。当然也有代价,代价
是损耗了运行速度。
Figure 13-3. Android Architecture [4].
Courtesy
Android 的开放机制,不仅体现在Application Framework,而且还体现在Hardware
Abstraction Layer(HAL)。关于设置HAL的意义,Google有三点说明[4],
1. 为各种硬件器件制订标准的驱动器接口。
2. 由于Android的内核是开源的,服从GPL许可。而有些硬件器件厂商不愿意开源他们的
驱动器程序,有了HAL 这个隔离带,就可以解决开源的内核与不开源的硬件驱动器之间的
矛盾。
3. Android对于硬件驱动器有一定要求。
这三点说明涉及手机制造产业链上的三个参与者,
1. 如果有标准的驱动器接口,最大的受益者是手机生产厂商。只要硬件外设生产商按照标
准接口提供相应的硬件驱动程序,手机生产商就可以自由选择各种配件,大大简化了手机的
集成的难度和时间。
2. 不必开源的驱动器程序,受益者是硬件器件生产厂商,而且不给手机生产厂商制造困扰。
3. 比较难以理解的是Android对硬件驱动器会有哪些要求,Android为什么要提出这些要求。
为了理解这个问题,不妨分析一个实例,看看Android HAL是如何处理Telephony的。
Figure 13-4描述的是与Telephony相关的各个层次之间的协作关系。我们关心的HAL,在
图中以Libraries(User Space)命名,Telephony HAL的内部结构以绿色标注,包含两个
构件,Radio Daemon和Vendor RIL。
1. Radio Daemon,它是由Android 提供的,不随BP 硬件的生产厂家和型号而改变。在
Android启动时,Radio Daemon就被激活,并一直处于运行状态,直到Android 关闭[4]。
2. Vendor RIL(Radio Interface Layer)。Vendor RIL由BP部分生产厂家提供,不同品牌
的BP,以及不同型号的BP,绑定不同的Vendor RIL。Vendor RIL的存在形式是一个函数
库文件,文件命名必须服从约定的规范,libril-
Radio Daemon查找可用的Vendor RIL[5]。
在实时运行时,应用软件调用Telephony Stack,而Telephony Stack指示Radio Daemon
去发现当前可用的Vendor RIL,并动态载入相应的.so函数库。也就是说,让Radio Daemon
去实现热拔插(Plug-and-Play)的功能。Vendor RIL 函数库负责AP 与BP 之间的IPC。
至此,从应用软件,到Telephony Stack,到HAL中的Radio Daemon和Vendor RIL,到
BP部分的硬件和驱动器,全线贯通。全线贯通后,应用软件就可以处理拨打电话,发送短
信等等通信业务了[4,5,6]。
虽然Figure 13-4仅仅描述了与Telephony相关的各个层次之间的协作关系,但是对于其它
功能,各个层次之间的协作关系也大致相仿,例如音响控制,和电源管理等等。
Android HAL隐含的意义在于,允许Android手机外接其它硬件设备,例如温度计,扩大手
机的功能。
Figure 13-4. Android Telephony system architecture [5].
Courtesy
总结一下,智能手机AP部分与BP部分集成,类似于文件系统中通用的VFS与不同厂家
提供的Storage Device的集成。BP部分提供基础的通话,数据通信,和SIM 卡功能。而
AP部分围绕这些基础功能,提供丰富的服务,例如通话记录,短信的编辑回复和转发等等。
这些服务,囊括在Telephony Stack 函数库中。
为了方便第三方软件的安装和运行,Android提供了Application Framework,它以Java
Object的形式,封装了Telephony Stack 函数库的功能,GUI 功能,和其它外设硬件设备的
功能。Application Framework不仅降低了第三方应用软件的开发难度,而且降低了第三方
应用软件出错的可能性,另外还降低了万一第三方应用软件出错,所造成的对整个系统的破
坏。
为了方便集成来源广泛的硬件设备,Android提供了Hardware Abstraction Layer。与文件
系统中VFS与Storage Device的协作方式类似,一方面,HAL提炼出不同硬件厂商都必须
提供的共同的功能,把它们囊括进通用的模块,例如Radio Daemon,通用的模块与硬件的
品牌和型号无关。另一方面,HAL要求硬件厂商提供符合Android规范的IPC 函数库,例
如Vendor RIL,以便建立起通用的模块与不同品牌和型号的硬件设备之间的通讯渠道。
Reference,
[1] Introduction to Virtual File System. ()
[2] Introduction to Application Framework.
()
[3] Inside the Android Application Framework.
(
e-io-2009)
[4] The anatomy and physiology of Android.
()
[5] Android Telephony Porting Guide.
()
[6] Android驱动开发关键技术HAL及移植要领. ()
【14】3G SmartPhone时代的MTK
分析了SmartPhone的里里外外以后,现在我们可以分析MTK的机遇和挑战了。MTK面临
的外部环境在发生变化,变化有两条,一是移动网络从2G演变到3G,二是手机由
FeaturePhone演化到SmartPhone。
根据前文的分析,MTK在FeaturePhone的产业链中的位置,原本应该只是一个BP芯片厂
商。但是MTK没有局限于BP芯片,而是多做一步,担当了系统集成商的角色。把BP芯
片,外围配件以及驱动器,还有GUI界面,和其它应用程序全面集成起来,提供给手机制
造商Turnkey的解决方案。这样手机制造商所需要做的附加工作很少,于是催生了大量所
谓山寨手机厂商。
在 3G网络时代,在SmartPhone制造领域,MTK是否能够延续Turnkey的战略,把山寨
手机厂商,由制造廉价的2G FeaturePhone,转型到制造廉价的3G SmartPhone呢?
不妨把这个问题拆分成三个问题来讨论,1. 3G FeaturePhone的Turnkey解决方案是否可
行? 2. 2G SmartPhone的Turnkey解决方案是否可行?3. 3G SmartPhone的Turnkey解决
方案是否可行?
1. 3G FeaturePhone的Turnkey解决方案是否可行?
2G芯片相对简单,但是3G的BP芯片难度非常大。现在3G芯片市场,Qualcomm 是霸
主,市场上3G Featurephone主要是采用Qualcomm 的参考设计。而其它3G芯片厂商,
如ST-Ericsson,Marvell 等等,只有很小的市场份额,而TI和Freescale近乎鞠躬谢幕。
与 GSM/GPRS等等2G网络技术不同,3G的BP技术,涉及到大量专利,而这些专利大
多数掌握在Qualcomm 等等欧美公司手中。对于MTK在2G市场的成功,Qualcomm 无比
垂涎。站在Qualcomm 角度讲,它势必不情愿MTK 在3G时代复制当年的辉煌。这一判断,
可以从MTK与Qualcomm 关于WCDMA专利许可转让的谈判中印证[1,2]。
Qualcomm 拒绝与MTK达成一揽子专利授权,由MTK代付所有CDMA专利费。但是给予
MTK不需要付高通前置金(No Upfront Fee),之后每颗3G芯片出货也不需付给高通Royalty
的条件。换句话说,对于MTK是零使用费,但是每一个使用MTK出品的3G芯片的手机
制造厂商,都必须单独与Qualcomm谈判,取得专利授权。对于山寨厂商来说,与Qualcomm
单独谈判,通过缴纳专利费,取得合法专利授权,经济上几乎是不可能的事情。所以,山寨
厂商要生存,最可能的出路就是忽视3G专利,继续像2G芯片一样,在不缴纳CDMA专
利授权的前提下,使用3G芯片。当然,严格来说,这是不合法的。
显然Qualcomm 肯定会预料到这样的前景,或许Qualcomm 的打算是,时紧时松地动用法
律手段,威胁山寨厂商,威胁MTK的主要市场。通过这个办法,Qualcomm 间接操控MTK
的发展,让MTK协助Qualcomm 争夺低端3G芯片市场,压制Broadcomm,ST-Ericsson,
Infineon,Marvell 等等Qualcomm 的竞争对手。
所以,对于MTK来说,3G功能手机不是没有前途,但是前途是否开阔,受制于Qualcomm。
2. 2G SmartPhone的Turnkey解决方案是否可行?
暂时撇开3G网络的专利授权问题,MTK在SmartPhone制造领域,是否能够重现它在
FeaturePhone制造领域的成就呢?如前文所述,SmartPhone与FeaturePhone不同,包
含AP和BP两个部分,而且通常情况,AP部分对于芯片的要求,比BP部分的要求高。
另外,近年的SmartPhone发展表明,把AP部分和BP部分的两颗CPU 内核,集成到同
一枚芯片上,即SoC 的做法,是大势所趋。
MTK对于AP芯片,以及把AP和BP二合一集成起来的SoC 芯片,是否做好了充分的准
备呢? 从 ARM 的网站上可以查到,MTK直接从ARM 购买的生产许可证,仅限于ARM7
系列,包括ARM7TDMI,ARM7TDMI-S,ARM7EJ- S[3]。2007年9月,MTK收购了ADI
旗下SoftFone手机芯片系列,间接获得了ARM9和ARM9E系列的生产许可证[4]。从此,
MTK 基带芯片产品,有两个系列,嫡系的MT系列与兼并来的SoftFone系列[5]。在MT
系列中,编号小于MT6235的各款芯片,内核均为ARM7系列。而SoftFone系列各款芯片
中,有的以ARM7系列为内核,也有的以ARM9 系列为内核,ARM9 系列中使用最多的,
是ARM926EJ-S这一款微处理器[6]。
2010年4月初,人们翘首以待的以MTK芯片为平台的第一款SmartPhone,终于上市。这
款手机的代号是A9[7],它沿袭了山寨机的传统做法,模仿热门手机。A9模仿的对象,是
HTC于2009年2月推出的Touch Diamond2 T5353手机。所以市面上通常把A9称为Touch
T5353 MTK版[8]。虽然外形相似,但是性能却有很大不同,真正的HTC Touch Diamond2
T5353支持3G网络并兼容2G,即GSM/GPRS/EDGE/WCDMA/HSDPA/HSUPA[9],而
Touch T5353 MTK版只支持2.75G网络,GSM/GPRS/EDGE[8]。
除了BP部分不相同以外,A9的硬件性能也与真正的Touch T5353有差距,原因在于A9
使用的芯片。MTK6516是MTK为智能手机打造的第一款芯片,是一款SoC芯片,内部集
成了两枚CPU 内核,其中ARM926EJS内核专门给AP部分使用,而另一枚ARM7EJS
内核专供BP部分使用,参见Figure 14-1左侧[10]。A9使用的芯片,是MTK6516,而真
正的HTC Touch T5353使用的芯片是Qualcomm的MSM7200A,这款芯片也是SoC芯片,
内部集成了两枚CPU 内核,其中ARM11 专供AP 部分使用,ARM9 专供BP 部分使用,
参见Figure 14-1右侧[11]。
虽然,仅仅用AP的CPU 性能来判断手机性能的方法并不全面, 但是不可否认,MT6516
的整体性能是值得怀疑的。所以,MTK的确有能力解决2G智能手机的Turnkey方案,而
且价格低廉。但是低廉的价格是以削弱功能为代价的。
S/ c. g* q, e# z8 E; A
Figure 14-1. MTK6516 vs Qualcomm MSM7200 architectures [10,11].
Courtesy
3. 3G SmartPhone的Turnkey解决方案是否可行?
SmartPhone与FeaturePhone的最大区别,在于SmartPhone允许用户自主下载第三方应
用软件,而FeaturePhone 只有预装的应用软件。SmartPhone 在BP 的基础上增加AP,
2D/3D 图形加速器和视频加速器,让AP和各种加速器专职负责应用软件的运行。而3G网
络,解决了无线带宽的瓶颈。有了SmartPhone 的硬件结构,和3G 网络的带宽,应用软
件繁荣的外部条件成熟了。
Figure 14-2 是一张截图,取自摩根斯坦利2009 年底做的移动互联网趋势分析报告。图中
红条表示的是全球iPhone 用户总人数,到2009 年9 月,大约是3 千4 百万(57-23 ==
34MM),AppStore 上可供用户自主下载的第三方软件总数是10 万个,而用户下载人次是
20亿次,平均每个软件的下载人次是2万(2,000MM/0.1MM==20K)。这个数字是惊人的。
如果摩根斯坦利的报告是准确的话,结论非常明确,第三方软件非常受用户欢迎。
Figure 14-2. iPhone and applications growth.
Courtesy
但是同样是摩根斯坦利的这份报告,另一张图却显现着相反的景象。Figure 14-3 是2009
年第三季度与2008年同期,世界各大市场SmartPhone的市场份额。摩根斯坦利乐观地认
为,SmartPhone的市场份额在快速成长,商业前景明朗。
其中值得特别关注的是日本的SmartPhone市场现状。日本3G网络从1990年代初开始推
广,迄今已经接近 20年,所以日本的3G市场的成长情况,对于包括欧美的整个世界范围
而言,有领先示范的意义。令人意想不到的现象是,日本的SmartPhone市场份额只有50%
左右,也就是说,在3G 网络普及了近20 年,在用户普遍富裕的日本,居然还有将近一半
的用户,仍然还在使用传统的FeaturePhone。
摩根斯坦利没有详细分析这一怪异的现象。或许日本没有出现iPhone这样抢眼的手机?或
许日本没有出现Google Map,YouTube和Facebook 这样有人气的第三方应用软件?或者
是日本的Feature phone上已经预置足够的应用程序?
也许,最可信的解释是SmartPhone 的应用软件虽然热闹,但是到目前为止,尚没有出现
杀手级的应用,让用户不得不用。而对于一半左右的用户而言,他们对于手机的依赖,还停
留在通话和短信这些基础功能。他们没有足够的动机,花费超过功能手机一倍甚至几倍的价
钱,仅仅为了时尚,去购买对于他们而言华而不实的 SmartPhone。这也许可以解释为什
么K3在900元的价位仍然没有达到预计的热买。
Figure 14-3. Global SmartPhone market shares.
Courtesy
什么是杀手级应用?针对不同的市场,杀手级应用也应该是不同的。对于中国市场而言,用
户热衷的通信服务是QQ,搜索是百度,消遣是人人网和开心网,购物是淘宝,等等。要开
拓中国的SmartPhone市场,或许可以从移植这些应用入手。
总结一下,在3G网络时代,在SmartPhone闪亮登场的当下,对于MTK而言,或许值得
注意以下几点。
1. 牢牢把握FeaturePhone市场。FeaturePhone不仅目前占据中国市场的绝大多数份额,
而且在未来几年,仍然是中国手机市场的主流。
2. 对于SmartPhone,因势利导,以低端SmartPhone芯片为主攻方向。所谓低端
SmartPhone,就是外形像流行的SmartPhone,预装了中国用户热衷的QQ,百度,淘宝
等等软件,允许用户自主更新这些软件的版本,但是不鼓励用户下载更多应用软件的手机。
这种手机介于传统FeaturePhone,和高端SmartPhone之间。有限满足用户对于
SmartPhone的热情,但是更强调照顾用户的购买能力。
Figure 14-4. MTK iPhome3G, an enhanced feature phone mimicking smartphone outlook,
and MTK A9, an entrylevel smartphone mimicking HTC's Touch Diamond2 [13,14].
Courtesy
Reference,
[1] MTK and Qualcomm enter into patent arrangement.
()
[2] 高通给联发科零授权金是另有打算。
()
[3] ARM Processor Licensees. ()
[4] MTK收购ADI手机芯片产品线。
(/ART_8800078804_1400_2101_3101_4300_b1c7f2ad.HTM)
[5] MTK Product Lines. ()
[6] MTK SoftFone Product Line. ()
[7] 第一款MTK平台山寨手机,代号A9。()
[8] 第一款MTK平台山寨手机视频。()
[9] HTC Touch Diamond2 T5353 Spec. ()
[10] MTK6516, HI3611, PXA310智能平台对比。
()
[11] Qualcomm MSM7200 architecture.
()
[12] Morgan Stanley's Mobile Internet Report, 12/2009.
(
html)
[13] iPhome 3G with MTK chip.
()
[14] Fake Touch Diamond2 T5353 with MTK chip.
()
【15】结束语
去年 11月,与人讨论山寨版Android智能手机的前景,最初觉得这个问题很容易回答。但
是三言两语之后,不仅听者茫然,而且言者自己也意识到条理紊乱,说服力不强。于是决定
写几篇文章,把这个问题展开说说。所谓展开说说,当时预计也不过是三五篇的规模。
没曾想, 刚刚写到第2章的时候,就引来不少争议和批评。考虑再三,觉得蜻蜓点水般的
浅尝辄止,难以把问题说透。于是改弦更张,从头梳理传统功能手机的软硬件系统, 以此
为基础,分析当今智能手机的软硬件系统。
写到第7章,关于MTK功能手机的软件系统的时候,不可避免地涉及到2G网络结构。在
与网友的讨论中,谈到开源基站项目(OpenBTS)。这个话题很有意思,值得花点笔墨多
说几句,同时为了避免影响山寨手机系列文章的主轴,于是另开一个系列, 专门讨论
OpenBTS。
当时的计划是这样的,把OpenBTS作为一个引子,引出Cognitive Radio这一前沿技术,
进而切入真正的主题,三网融合(Triple Play)和MBMS(Multimedia Broadcast Multicast
Service)。但是这个系列写到第2 章的时候,觉得两条作战,负担之重难以承受。于是踩
了一个急刹车,连虎头蛇尾这种形式上的善始善终也顾不上了。
后来写到第11 章和第12 章关于3G 网络的时候,遇到这样一个问题:对于互联网而言,
有Akamai 这样的内容分发网络(Content Delivery Network),对于移动互联网,内容分
发网络也势在必行。。但是,移动互联网的Akamai在哪里?这个问题也十分有趣,展开说
说十分必要。但是挖坑容易填坑难,前车之鉴后事之师,所以决定坚持集中精力,避开分枝
话题。
完成了第13 章,关于智能手机的OS 的初步讨论以后,本来打算横向比较WinMobile,
iPhoneOS, Android, Palm WebOS等等时下流行的智能手机操作系统。但是智能手机的操
作系统的设计,已经不再是一个纯粹的技术问题,而是涉及到手机研发制造产业链的分工协
作,以及各个厂商的竞争战略。产业链,竞争战略,这又是一个值得仔细探讨的话题。
无论好坏,作为技术分析,这个系列写到第14章,基本可以告一段落。
移动互联网,作为一个新鲜事物,存在很多商业和技术上的问题,在我们看来,任何难题,
都是机会,机会在于是否能够找到行之有效的解决方案。下一个系列,我们就顺着这个思路,
对移动互联网做一番粗浅的经济分析。
Sunny & Kan
April 20,2010