论山寨手机与Android联姻 【6】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)
论山寨手机与Android联姻 【6】MTK手机的基带芯片的更多相关文章
- 论山寨手机与Android联姻 【7】 MTK手机软件系统
MTK feature phone的基本功能是通话和短信,要了解MTK手机软件系统,首先需要简要回顾几个移动网络通讯的基本概念. Figure 38. GSM-GPRS Architecture Co ...
- 论山寨手机与Android联姻 【8】 自己动手做XP手机
2010年1月20日,ViewSonic在北京发布了一款真正意义的电脑手机VCP08.根据商家的宣传,VCP08之所以能够被称为真正的电脑手机,是因为“该机做到了把真正的WindowsXP操作系统嵌入 ...
- 论山寨手机与Android联姻 【4】手机产业链
前文说到,生产手机以前,制造厂家需要预先得到软硬件的产品级设计方案,然后按照设计方案亦步亦趋地做,就可以制造出手机了.软硬件的产品级设计包括以下内容, 1. 主板设计,或者Gerber文件,或者PCB ...
- 论山寨手机与Android联姻 【5】MTK颠覆手机产业链
MTK一站式解决方案(Turn-Key)模式出现以前,手机设计开发流程大约可以分成以下6步. 第1步,Design House从芯片厂商那里拿到参考设计. 芯片厂商根据自己的市场部门对手机市场的预测, ...
- 论山寨手机与Android联姻 【3】手机是怎样生产出来的
要说清楚MTK在商业模式上有什么优势,以及Android对于MTK未来的手机开发会有什么影响,首先得了解手机从设计,开发到生产的整个过程.让我们先来看看手机的生产过程.在生产制造环节,山寨手机和正牌手 ...
- 论山寨手机与Android联姻 【2】手机OS成为核心
手机凭借通话和短信这两项基本功能,积累了用户,开拓了市场.但是用户的需求是永无止境的,对于手机制造商来说,紧跟用户需求,拓展手机功能,是机会也是挑战. 1988年第一款数码相机,在日本上市.数码相机的 ...
- 论山寨手机与Android联姻 【1】MTK亮相的历史背景
[1]MTK亮相的历史背景如果说1960年代是大型机(Mainframe)的时代,1970年代是小型机(Microcomputer)的时代,那么1980年代无疑是个人电脑(PC)的时代,而1990年代 ...
- 论山寨手机与Android联姻的技术基础 【序】
山寨手机的兴起,离不开 MTK(联发科).MTK为手机制造提供了一揽子解决方案,其中既包括硬件,也包括软件.软件方面最重要的,是操作系统.MTK方案的软件的稳定性非常高,一方面是因为其硬件系统变化不大 ...
- 论山寨手机与Android联姻 【10】SmartPhone的通信机制
上一章我们说到,智能手机 == 电脑 + 移动网卡,这个提法比较粗略,更精准的提法应当是,智能手机的硬件结构分为应用程序处理器AP,和基带处理器BP两个部分.虽然AP部分的功能与电脑主板基本类似,但是 ...
随机推荐
- 依赖注入 | Dependency Injection
原文链接: Angular Dependency Injection翻译人员: 铁锚翻译时间: 2014年02月10日说明: 译者认为,本文中所有名词性的"依赖" 都可以理解为 & ...
- yii操作数据库(PDO)
1.数据访问对象(DAO): 执行 SQL 语句 数据库连接建立后,SQL 语句就可以通过使用 [CDbCommand] 执行了.你可以通过使用指定的SQL语句作为参数调用 [CDbConnectio ...
- 【maven学习笔记】 01 初见
想学maven,maven是ant的替代品. 1:下载 maven是apache的顶级项目,在http://maven.apache.org/可以直接下载. 2:环境变量 下载完要配置环境变量,把bi ...
- SQL Server 无法启动的 4 种原因
SQL Server 无法启动的原因定位.首先要知道SQL Server 启动的过程. 第一步: 读取注册表,创建log文件.检测硬件.初始化系统配置. 第二步: 启动系统数据库. 第三步: 准备好网 ...
- oracle 创建表空间详细介绍
注意点: 1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在,比如[D:\oracle\oradata\Oracle9i\]也就是你要保存文件的路径存 ...
- SQL 临时表或表变量替代游标
1.如果表没有自动增长的标识列(int) 使用临时表 SELECT IDENTITY(int) NewID ,.. INTO #tmp FROM YouTable 2.表有标识列 使用表变量 INSE ...
- Inno Setup 安装前卸载原程序(转)
很多時候我們需要在安裝文件之前卸載原有的程序而不是覆盖安装,本文的code就是实现了这样的功能. 实现原理是:從注冊表'UninstallString'項中读取卸载信息,用Exec进行静默卸载. 下面 ...
- 使用virtualenv隔离python环境
使用virtualenv隔离python环境 | 爱积累爱分享 使用virtualenv隔离python环境 iitshare 分类:Python | 标签:pythonenv, virtualenv ...
- Linux下的sudo及其配置文件/etc/sudoers的详细配置说明
http://www.osedu.net/article/linux/2011-01-03/178.html Linux下的sudo及其配置文件/etc/sudoers的详细配置说明 1.sudo介绍 ...
- 网易云课堂_C++开发入门到精通_章节4:运算符重载
课时23运算符重载 运算符重载 重载赋值运算符 Person& Person::operator=(const Person& other) { //检查自赋值 if (this == ...