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

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




【7】 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/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子层功能模块。

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所示。

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)的分离打下了基础。这些内容留给后续章节。

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)

(7个打分, 平均:5.00 / 5)

雁过留声

“论山寨手机与Android 【7】 MTK手机软件系统”有15个回复

  1. 陈怀临 于 2010-02-19 9:55 上午

    这个专题发完之后,我会花时间把文章合起来整理成一个PDF文件,供大家下载。

  2. 陈怀临 于 2010-02-19 10:12 上午

    图38(第一张图)是一个很好的图解。从通信的角度,华为的无线产品线,例如singleRAN等东东就是左半部分;华为的核心网就是右半部分;思科要染指的就是核心网的东东。。。

  3. mpc8240 于 2010-02-19 11:28 上午

    Smartphone is so hot these days. A friend of mine is debating b/t two offers, Android@Samsung or Nexus7k@Cisco..

  4. mpc8240 于 2010-02-19 11:41 上午

    哪位大虾给解释一下Figure 38里SS7 network和SGSN之间的Gr/Gs是干嘛用的?

  5. 陈怀临 于 2010-02-19 1:51 下午

    总的来说,GTP Tunning Protocol是GPRS Backbone的核心。 这里面网络安全的东西也不少。

    Interfaces in the GPRS network

    Gb
    Interface between the base station subsystem and the SGSN the transmission protocol could be Frame Relay or IP.
    Gn
    IP Based interface between SGSN and other SGSNs and (internal) GGSNs. DNS also shares this interface. Uses the GTP Protocol.
    Gp
    IP based interface between internal SGSN and external GGSNs. Between the SGSN and the external GGSN, there is the border gateway (which is essentially a firewall). Also uses the GTP Protocol.
    Ga
    The interface servers the CDRs (accounting records) which are written in the GSN and sent to the charging gateway (CG). This interface uses a GTP-based protocol, with modifications that supports CDRs (Called GTP’ or GTP prime).
    Gr
    Interface between the SGSN and the HLR. Messages going through this interface uses the MAP3 protocol.
    Gd
    Interface between the SGSN and the SMS Gateway. Can use MAP1, MAP2 or MAP3.
    Gs
    Interface between the SGSN and the MSC (VLR). Uses the BSSAP+ protocol. This interface allows paging and station availability when it performs data transfer. When the station is attached to the GPRS network, the SGSN keeps track of which routing area (RA) the station is attached to. An RA is a part of a larger location area (LA). When a station is paged this information is used to conserve network resources. When the station performs a PDP context, the SGSN has the exact BTS the station is using.
    Gi
    IP based interface between the GGSN and a public data network (PDN) either directly to the Internet or through a WAP gateway.
    Ge
    The interface between the SGSN and the service control point (SCP); uses the CAP protocol.
    Gx
    The on-line policy interface between the GGSN and the charging rules function (CRF). It is used for provisioning service data flow based charging rules. Uses the diameter protocol.
    Gy
    The on-line charging interface between the GGSN and the online charging system (OCS). Uses the diameter protocol (DCCA application).
    Gz
    The off-line (CDR-based) charging interface between the GSN and the CG. Uses GTP’.
    Gmb
    The interface between the GGSN and the broadcast-multicast service center (BM-SC), used for controlling MBMS bearers..

  6. appleleaf 于 2010-02-19 6:04 下午

    文章凝结了作者很多的心血,估计得写一个季度。

  7. wxh168 于 2010-02-20 3:42 上午

    To mpc8240,我来解释一下吧。

    SS7 Stack: TDM时代的一个可靠数据传输系统,专用于传送交换机之间的信令数据包。
    SS7 Stack严格按照OSI 7层协议设计,包括如下几层:
    第一层:MTP1:就是采用64K话音通道,后来又升级为一个E1的所有64K通道;
    第二层:MTP2,链路层,设计思路基本上参考X.25,又做了不少裁剪和链路保护内容;
    第三层:MTP3,网络层,路由算法是静态配置的,这是和IP的最大不同,通常路由表都比较小,几百~几千之间;
    第四层:SCCP:信令连接控制层,功能类似于TCP/UDP,但比TCP/UDP要复杂,提供服务类型要多;
    第五层:TCAP: 事务控制层,提供RPC服务;
    第六层:表示层,就是应用层语义和语法的表述,主要有ASN.1编码,和IP网的TLV编码方式类似,但功能更强;
    第七层:应用层,定义各种RPC服务操作的内容和交互流程;例如图中的MAP协议;对应于IP网的HTML;

    当然SS7 Stack并不严格按照7层来设计,对于部分简单协议,可以是4层或5层;
    例如,对于ISUP/TUP协议,直接在MTP3上承载,对于A口协议,直接在SCCP上承载;

    当信令网IP化后,改动最大的是下三层,通常是采用一条SCTP链路替换一个TDM链路,上层协议栈均不变,可以认为是一个IP的Overlay网络;

    SS7 Network通常由STP(对应于Router)和SPC(对应于主机)组成,和IP网络类似,每个节点都有1个信令点;

    但SS7 Network的路由方式和IP网络不同,不仅仅根据信令点路由,还可以根据GT(Global Label)来路由,GT路由非常类似于MPLS,通过GT实现了全球信令的互通;

    实际上移动网络的应用层通常都采用GT来寻址的。

    个人认为GT这个东西很好,如果IP网络能吸收,我认为对于IP应用的移动性和HA将变得很容易实现;

  8. wxh168 于 2010-02-20 3:47 上午

    对于L2/L3/L4的分层化,图中还是严格实现的。

    其实图40是把控制协议栈和媒体协议栈一起画的,对于控制层来说,协议栈是 APP/L3/L2/L1的;
    对于媒体层来说,协议栈是 APP/L2/L1的(因为在终端和MSC之间建立的是一条点到点数据通道,是不需要网络层的);
    L2R/FAX/RLP都是数据链路层内容;

    图中缺少语音通话的媒体通道描述;

  9. ilovebgp4 于 2010-02-20 4:55 上午

    wxh168是高手啊,讲起SS7来举重若轻,令我这个门外行也体会不少

  10. wxh168 于 2010-02-20 5:32 上午

    呵呵,过奖了,这是我吃饭的东东,时间长了,自然就理解了。

    估计让ilovebgp4兄分析BGP,也是头头是道,改天请写写,我正好缺这方面的知识。

  11. 邓侃 于 2010-02-21 4:03 上午

    wxh168 写的几段话,篇幅不长,却是言简意赅。

    是否有兴趣谈谈3G移动网络内部架构?

    例如,中国移动最近在自己的频段里,实现了手机广播和电视。要实现这个功能,

    1. 移动网络内部需要做哪些调整?因为移动网络原先是负责1对1的信息传递的,广播和电视,却是1对多。

    2. 手机需要做哪些调整?Hardware,Firmware
    还是只需要App software?

    多谢!

  12. wxh168 于 2010-02-21 6:21 上午

    呵呵,据我所知,中国移动的DAB和DTV是和广电合作的。

    电视标准采用的是广电搞的CMMB;

    上行采用GPRS通道,下行采用卫星通道,当然手机是无法直接从卫星上接收信号,那样终端成本太高,而是广电在多个城市建设发射塔(从卫星上接收信号,并放大给终端接收);

    因此手机电视和广播的覆盖范围是有限的。

    当然目前基于移动网的广播也有标准,就是3GPP制定的MBMS协议,其实非常类似于IP网的多播标准,为移动网做了些优化;

    但现在使用的很少,主要是3G网络的接入速度太低,玩起来体验太差。估计到LTE时代能成功吧。

  13. wxh168 于 2010-02-21 6:29 上午

    因此,对于中国移动的电视手机来说,必须采用定制终端才行,终端说白了就是一个电视 + 手机组成,再增加一个App,将二者组合起来。

  14. 李忠洲 于 2010-04-02 8:14 下午

    我有一款手机,是仿诺基亚N97的,就是一款山寨机里面什么游戏也没有,我想问问各位朋友有什么游戏软件可以下载 *#777755999#这个也不行 还有没有其他软件可以下的

  15. 江龙 于 2011-05-04 3:53 下午

    我有一款手机,是深玔产山寨苹果4代机,称T9,因清除了彩信,手机不显示了,请高手教我怎么复原?在这里先谢谢了.