# 论山寨手机与Android 【7】 MTK手机软件系统

- 作者：邓侃
- 发布时间：2010-02-19 14:54
- 分类：公司
- 原文：https://www.ifanr.com/18804

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

![](http://docs.google.com/File?id=drfcsw8_581hkdswkc2_b)

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。

![](http://docs.google.com/File?id=drfcsw8_582hcg7w4hb_b)

Figure 39. GSM Protocol Layer \[1\]   
Courtesy http://farm3.static.flickr.com/2743/4284005175\_06873d175f\_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子层功能模块。

![](http://docs.google.com/File?id=drfcsw8_587gk7gv6dq_b)

Figure 40. MTK software function modules \[3\].   
Courtesy http://farm5.static.flickr.com/4062/4294578472\_bfcf09c6f5\_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所示。

![](http://docs.google.com/File?id=drfcsw8_584cb7bp8df_b)

Figure 41. MMI Architecture   
Courtesy http://farm5.static.flickr.com/4049/4293838733\_7f23594f7d\_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）的分离打下了基础。这些内容留给后续章节。

![](http://docs.google.com/File?id=drfcsw8_585fq5pwv56_b)

Figure 42. MTK Software Platform Overview \[3\].   
Courtesy http://farm3.static.flickr.com/2743/4283671101\_5a60957fb5\_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)
