首页
社区
课程
招聘
[原创][智能手机][硬件系统]智能手机的CPU系统(含学习资料)[MASSADA0015]
2009-3-8 19:51 151606

[原创][智能手机][硬件系统]智能手机的CPU系统(含学习资料)[MASSADA0015]

2009-3-8 19:51
151606
随着移动智能设备如智能手机、PDA、导航仪等的普及,越来越多核心业务如手机银行、手机炒股、电子商务、位置服务等快速向这个平台转移。人们的日常生活越来越离不开手机,很多朋友也开始关注这个方向的研发。本人是2007年开始进入这个领域学习研发,对ARM体系结构和Windows CE/Android系统有一些了解。由于本人长期得到kanxue前辈和看雪论坛朋友的帮助,得知论坛要开辟“嵌入式平台安全”板块,于是准备写一些简单文章介绍一下自己的一点心得,希望各位朋友多多批评指教。

由于智能手机领域还很新,相关资料远远比不上PC平台,所以从2007年进入这个领域以来我一直坚持的研究原则就是:

类比PC平台确立学习方向,打好基础,深入研究!

我个人认为要想深入研究智能手机平台需要至少两个重要基础:CPU架构及其汇编语言和嵌入式操作系统(如CE/Android/塞班等)

文本主要讨论智能手机的CPU系统。

在PC平台要想深入研究逆向工程,加密解密必须熟悉X86汇编。因为很多时候我们都需要分析反汇编后的本地代码程序。在智能手机平台也是一样。嵌入式平台的CPU主要是精简指令集(RISC)架构的CPU。这种架构的CPU和我们常见的PC平台的复杂指令集(CISC)架构的CPU有很大区别。比如:RISC架构的CPU,功耗很低,寄存器多,指令操作数多,指令执行可以直接取决于标志寄存器的标志位状态,CPU存在多种工作模式,指令长度固定,指令编码简单等等。

常见的RISC架构的CPU有:ARM架构、MIPS架构、Power PC架构和SH架构。其中尤其以ARM架构的CPU使用比例最大。下面就以ARM架构CPU为例详细介绍这类CPU的特点。

ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。

ARM CPU特点介绍:

1、体积小、低功耗、低成本、高性能
   ARM体系结构简单因此设计实现都更容易,这样可以大大降低了成本和功耗。

2、寄存器多
   同X86 CPU相比,ARM处理器的寄存器非常多。ARM共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:
   - 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。
   - 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位。
   所以绝大多数运算操作都可以在寄存器中完成,这样可以大大提高运算速度。

3、操作数多
   一般X86指令都只有两个操作数如mov,add,sub等指令。而ARM的同类指令常常有3个操作数,这样常可以把多种操作放在一条指令中一次完成提高了运算效率。比如将mov指令除了传送数据还可以和移位指令混合,先移位后传送。

4、指令是否运行可以取决于标志寄存器的对应位
   我们知道在X86架构中我们可以通过cmp指令做出条件判断改变程序的运行流程。这样做的一个缺点是很容易切断指令流水线,继续运行必须重建指令流水线,这会导致运行效率降低。但是多数ARM指令都有一个标志位可以设置不同的条件,当运行该指令时会根据状态寄存器对应信息来决定是否运行该指令。这也是RISC架构CPU的一大特点。英特尔公司著名的安腾体系结构芯片也吸收了
这种设计理念。我在用ARM汇编写程序时也经常使用这项技术感觉非常灵活方便。

5、寻址方式灵活简单,执行效率高
   ARM的寻址方式同X86相比简单很多,绝大多数指令都是和寄存器打交道。只有很少的指令允许访问内存。由于在寄存器中处理数据效率远远高于在内存中处理,这种设计可以大大提高运行效率。

6、指令长度固定
   这是RISC架构CPU的又一个特点。X86指令从1B-13B不等情况很复杂。而ARM体系结构的指令一般都是16位或者32位指令长度固定。这样的设计结构简单,有利于降低电路系统的复杂性从而降低设计实现难度和功耗。

7、ARM体系结构有7种工作模式。
   用户模式(usr):ARM处理器正常的程序执行状态。
   快速中断模式(fiq):用于高速数据传输或通道处理。
   外部中断模式(irq):用于通用的中断处理。
   管理模式(svc):操作系统使用的保护模式。
   数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
   系统模式(sys):运行具有特权的操作系统任务。
   定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
   ARM处理器的多种工作模式可以根据使用需要切换提高了面对复杂环境的处理能力。并且在不同模式下可以使用不同的寄存器,从而
   减少了不同模式切换时保存数据的开销,提高了工作效率。

附件中是一些最近两年我反复学习的优秀教材。

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (154)
雪    币: 32408
活跃值: (18780)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2009-3-8 20:01
2
0
感谢加百力提供的文章和资料!
期待加百力系列文章的下一篇。
论坛欢迎大家一起来学习,一起进步。
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Laona 2009-3-8 20:11
3
0
新方向啊..得好好研究
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
望花煮 2009-3-8 20:50
4
0
强大!  不知什么时候才能涉及到!
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 12 2009-3-8 21:13
5
0
我多年来一直是看论坛的教材学习成长,最近又得到看雪前辈的指点在网络分析上有了突破。能够为论坛做贡献感到非常荣幸!

嵌入式方向应用面很广,发展潜力巨大,希望和大家一起学习进步!
雪    币: 357
活跃值: (2598)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2009-3-8 21:46
6
0
什么时候搞个游戏机硬件版块
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
nkspark 3 2009-3-8 22:54
7
0
ding~~~
雪    币: 308
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
痞子辉 1 2009-3-8 23:24
8
0
希望楼主能介绍一下嵌入式开发的学习路线和方向!!!
没有方向怎么学呀??
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 4 2009-3-8 23:27
9
0
新领域涌现新奇才

这才是论坛不断进步的表现
雪    币: 5801
活跃值: (1714)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zzlya 2009-3-8 23:55
10
0
哈哈 顶了 学习  迟早会普及的。。。
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 7 2009-3-9 09:16
11
0
听说开源3D引擎OGRE已经出了嵌入式的版本,已经出来的其中一个成果是手机里的日历是3D的
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 12 2009-3-9 09:28
12
0
大概从2008年初开始,各大手机厂商如HTC,三星等在UI方面都有一些调整。他们不再满足于WM提供的传统的Windows界面而是更多的仿造IPHONE的界面风格。很多都有3D效果。比如HTC所谓的Diamond风格就是大量使用了3D效果。日历就有翻动的效果,可上下翻页,看起来很漂亮。
雪    币: 247
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
安摧 2 2009-3-9 09:58
13
0
zhichi
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hustphoto 2009-3-9 09:58
14
0
顶一个
雪    币: 250
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxsz 2009-3-9 11:38
15
0
kanxue大神 我崇拜的神啊

雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liruoshui 2009-3-10 13:47
16
0
这个东西对我来说是有点新奇的呢?向楼主学习,以报论坛的栽培
雪    币: 255
活跃值: (49)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
ppanger 4 2009-3-10 23:15
17
0
感谢lz分享 期待下文 ^_^
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
战斧 2009-3-11 16:54
18
0
随着嵌入式atom的发布,x86也要介入了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
robos 2009-3-13 16:40
19
0
这是个好方向,前阵子要破解一个汽车导航设备上的gps,感觉都找不到相关资料。我现在身边嵌入式设备也非常非常多了,比如psd pda e路航等等,这方面的安全性关注比PC要少得多 。强列支持,支持,支持,支持,支持,支持,支持,支持,支持,支持,支持,支持,支持
雪    币: 445
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kuifatang 2009-3-20 14:03
20
0
支持一下!期待更多!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coldleon 2009-3-23 21:51
21
0
正需要,最近有事做了
雪    币: 404
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gdxhz 2009-3-29 04:14
22
0
先收藏了。不知道什么时候才能学到。5555555555,入门好难啊
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 12 2009-3-29 11:32
23
0
刚开始学习新技术都会有这样的感觉。我的经验就是开始时不要把目标定太高非要做个什么什么,或者想破解出什么什么。从最基础的东西开始,哪怕今天只学了一条mov指令,只翻译学习了一个API都是很大的进步!只要坚持每天学一点,逐步积累半年、一年都会有很大的收获了!加油!
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
strongerer 2009-3-29 20:15
24
0
要学的东西还真多呀
雪    币: 218
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
share 2009-3-31 11:11
25
0
找好一直没找到ARM的系统的学习资料,谢谢加百力
游客
登录 | 注册 方可回帖
返回