Android - IV MTK手机的基带芯片


MTK的硬件技术的核心,在于它的基带芯片。为了降低成本,同时缩减手机主板的面积,基带芯片中除了CPU以外,还集成了很多外设控制器。Feature Phone的功能,基本上取决于基带芯片所支持的外设功能。

最早的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 http://farm3.static.flickr.com/2625/4194503831_d5fbf67d28_o.png


Figure 35. MT6225 Architecture [31,32,33,34]
Courtesy http://farm3.static.flickr.com/2735/4210933610_15de4f53c2_o.png

在Figure 34中,整个MTK手机主板的核心,是红线标出的MT6225基带芯片。虽然MT6225芯片的尺寸很小,但是它包含的功能却不少,参见Figure 35。

以MT6225基带芯片为核心,加上电源管理芯片(PMIC)例如MT6318,还有射频芯片例如MT6139,另外再加上Flash存储芯片,就构成了MTK手机主板的基石。把这些芯片的引脚,连接上天线,LCD显示屏,SIM卡槽,扬声器麦克风等等外围设备,就实现了一个完整的Feature Phone的基本功能。

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 http://farm3.static.flickr.com/2600/4216312750_de8d884003_o.png

在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之间数据交换的负担。

有些人不同意 RISC的思路,他们认为,单纯提高CPU的频率,并不能提高整个系统的运行效率,理由是Memory的IO速度比CPU慢,拖了整个系统的后腿。所以,为了提高系统的运行效率,应该设法降低CPU与Memory之间的数据交换。从这个思路出发,他们建议增加CPU指令的数量,于是他们发明了复杂指令集 CISC(Complex Instruction Set Computer),并且设计了相应的CPU物理结构[39],例如Intel的x86 CPU系列。

来自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 http://farm3.static.flickr.com/2547/4215334659_3c87870224_o.png

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的传统领地在于Feature Phone,但是Feature Phone正在迅速地被Smart Phone淘汰。MTK如何跟上Smart Phone浪潮呢?且听下回分解。


Reference,

[30] 山寨手机存活的理由。(http://tech.sina.com.cn/mobile/n/2008-06-12/10122253121.shtml)
[31] MT6225芯片简介。(http://www.study-kit.com/list.asp?ProdId=0203)
[32] MTK6225内部结构简述。(http://weboch.cn.alibaba.com/athena/offerdetail/sale/weboch-50910-483309568.html)
[33] AM7EJ-S Introduction. (http://www.arm.com/products/CPUs/ARM7EJSCore.html)
[34] ARM7EJ-S Technical Reference Manual. (http://infocenter.arm.com/help/topic/com.arm.doc.ddi0214b/index.html)
[35] ARM926EJ-S Technical Reference Manual. (http://infocenter.arm.com/help/topic/com.arm.doc.ddi0222b/index.html)
[36] ARM Processor Survey. (http://en.wikipedia.org/wiki/ARM_architecture)
[37] ARM Processor Selector. (http://www.arm.com/products/CPUs/core_selector.html)
[38] ARM Core Overview. (http://digital.knu.ac.kr/lecture/%EC%82%BC%EC%84%B1%ED%85%8C%ED%81%AC%EB%85%B8MBA/2_arm_core.pdf)
[39] RISC vs CISC. (http://www.pic24micro.com/cisc_vs_risc.html)
[40] ARM Processor Licensees. (http://www.arm.com/products/licensing/licencees.html)
[41] MTK收购ADI手机芯片产品线。(http://www.esmchina.com/ART_8800078804_1400_2101_3101_4300_b1c7f2ad.HTM)
[42] MTK Product Lines. (http://www.mediatek.com/en/product/list.php?cata1=1)
[43] MTK SoftFone Product Line. (http://www.mediatek.com/en/product/list.php?cata3=2)
[44] MTK常用术语缩写。(http://www.mtkmtk.com/html/download/mtkmmi/2009/0717/4109.html)
[45] Difference of ARM9 from ARM7. (http://en.wikipedia.org/wiki/ARM9)
[46] 对ARM紧致内存的理解。(http://hi.bccn.net/space-21499-do-blog-id-15164.html)
[47] ARM Technical Reference, Tightly Coupled Memory (TCM). (http://infocenter.arm.com/help/topic/com.arm.doc.ddi0338g/Chdhbjjb.html)
[48] Introduction to MMU. (http://en.wikipedia.org/wiki/Memory_management_unit)
[49] 让你手机死机黑屏的短信。(http://www.177hy.com/bbs/viewthread.php?tid=69038)



MTK手机软件系统


MTK feature phone的基本功能是通话和短信,要了解MTK手机软件系统,首先需要简要回顾几个移动网络通讯的基本概念。

Figure 38. GSM-GPRS Architecture
Courtesy http://farm3.static.flickr.com/2694/4239683146_55f0dd7e11_o.png

以GSM系统为例,手机以无线方式建立起与基站(BTS)的联系,两者之间通讯接口是Um。基站与基站控制器(BSC)之间的通讯接口是Abis,基站控制器与移动交换中心(MSC)之间的通讯接口是A,参见Figure 38。


Figure 39. GSM Protocol Layer [1]
Courtesy http://farm3.static.flickr.com/2784/4291716841_f48a0e217a_o.gif

所谓接口(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 http://farm5.static.flickr.com/4059/4292450480_69a0012631_o.png

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协议栈模块的接口。在feature phone的语汇中,应用程序常常被当成是MMI(Man-Machine-Interface)的同义词,其实细究一下,更准确的说法是,应用程序是 MMI的一部分[4]。根据[3]的文字叙述,尤其是pp19关于L4A和L4C的介绍,以及pp38关于Keypad事件触发机制的介绍,似乎MTK的应用程序,对于其它功能模块的调用,有四种机制,如Figure 41所示。


Figure 41. MMI Architecture
Courtesy http://farm5.static.flickr.com/4002/4292450478_37b455bd5f_o.png

  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 http://farm5.static.flickr.com/4043/4292450482_c18a4b2a90_o.png

比较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. (http://www.tutorialspoint.com/gsm/gsm_protocol_stack.htm)
[2] GSM Um Interface. (http://en.wikipedia.org/wiki/Um_Interface)
[3] MTK Software Platform. (http://www.docin.com/p-6004509.html)
[4] 浅谈GSM手机的MMI软件开发. (http://www.ergocn.com/wenzhai35.htm)
[5] Introduction to Nucleus OS. (http://www.docin.com/p-7535534.html)