arm9开发(基于ARM9处理器的Linux系统开发)
一、Linux嵌入式系统开发的目录
第1章嵌入式系统概述 1
1.1嵌入式系统的概念 1
1.1.1嵌入式系统的定义 1
1.1.2嵌入式系统的特点 2
1.2嵌入式系统的组成 2
1.2.1嵌入式处理器 2
1.2.2外围设备 3
1.2.3嵌入式操作系统 3
1.2.4应用软件 3
1.3嵌入式处理器 4
1.3.1嵌入式处理器的分类 4
1.3.2嵌入式微处理器 5
1.3.3嵌入式微控制器 5
1.3.4嵌入式DSP处理器 6
1.3.5嵌入式片上系统 6
1.3.6选择嵌入式处理器 7
1.4嵌入式操作系统 7
1.4.1操作系统的概念和分类 7
1.4.2实时操作系统 8
1.4.3常用的嵌入式操作系统 10
1.5新型的嵌入式操作系统 13
1.5.1 Android 13
1.5.2 MontaVista 14
1.6嵌入式系统的应用 15
1.7嵌入式系统的发展趋势 18
1.7.1嵌入式系统面临的挑战 18
1.7.2嵌入式系统的发展前景 18
1.8本章小结 19
第2章嵌入式系统开发过程 20
2.1嵌入式软件开发介绍 20
2.1.1嵌入式软件开发的特殊性 20
2.1.2嵌入式软件的分类 21
2.1.3嵌入式软件的开发流程 21
2.1.4嵌入式软件开发工具的发展趋势 23
2.2嵌入式软件的调试技术 24
2.2.1调试技术介绍 24
2.2.2基于JTAG的ARM系统调试 25
2.3嵌入式软件测试技术 26
2.3.1宿主机-目标机开发模式 26
2.3.2目标监控器 27
2.4嵌入式系统集成开发环境 29
2.4.1 ADS的介绍 29
2.4.2 ADS建立工程的使用介绍 31
2.4.3 AXD调试器的使用介绍 36
实例2-1:ARM开发环境ADS的使用实例 38
2.5本章小结 42
第3章 ARM体系结构 43
3.1 ARM体系结构概述 43
3.1.1 ARM体系结构简介 44
3.1.2 ARM体系结构的技术特征 46
3.1.3 CISC的体系结构 47
3.1.4 RISC的体系结构 47
3.1.5 RISC系统和CISC系统的比较 49
3.2 ARM微处理器的分类 50
3.2.1 ARM7微处理器 50
3.2.2 ARM9微处理器 51
3.2.3 ARM9E微处理器 51
3.2.4 ARM10E微处理器 52
3.2.5 ARM11微处理器 53
3.2.6 SecurCore微处理器 53
3.2.7 trongARM微处理器 53
3.2.8 XScale微处理器 54
3.3 ARM微处理器的应用 54
3.3.1 ARM微处理器的应用选型 54
3.3.2 S3C2410处理器 55
3.4存储器 56
3.4. 1存储器简介 56
3.4.2 SDRAM操作 58
3.4.3 Flash 59
3.5 ARM编程模型 60
3.5.1数据类型 60
3.5.2存储器格式 61
3.5.3处理器工作状态 61
3.5.4处理器运行模式 62
3.5.5寄存器组织 62
3.5.6内部寄存器 65
3.6 ARM指令的寻址方式 66
3.6.1立即寻址 66
3.6.2寄存器寻址 67
3.6.3寄存器间接寻址 67
3.6.4相对寻址 68
3.6.5堆栈寻址 68
3.6.6块复制寻址 69
3.6.7变址寻址 69
3.6.8多寄存器寻址 70
3.7 ARM指令集 70
3.7.1 ARM指令的格式 70
3.7.2 ARM指令分类 71
3.7.3 Thumb指令介绍 77
3.7.4 Thumb指令分类 78
3.7.5 ARM指令集和Thumb指令集的区别 81
3.8 ARM微处理器的异常 82
3.8.1 ARM体系结构所支持的异常类型 83
3.8.2异常向量表 84
3.8.3异常优先级 84
3.8.4应用程序中的异常处理 85
3.8.5各类异常的具体描述 86
3.9本章小结 90
第4章 Linux基本操作 91
4.1 Linux系统的介绍 91
4.1.1 Linux的概况 91
4.1.2 Linux操作系统的构成 93
4.1.3 Linux常见的发行版本 94
4.1.4 Linux内核的特点 95
4.2 Linux命令的使用 96
4.3 vi编辑器的使用 106
4.3.1 vi编辑器的进入 107
4.3.2命令模式的命令 107
4.3.3末行模式的命令 108
实例4-1:vi编辑器使用实例 109
4.4 Shell编程 110
4.4.1 Shell基础介绍 110
4.4.2 Shell程序的变量和参数 113
4.4.3运行Shell程序 114
4.4.4 Shell程序设计的流程控制 115
4.4.5 Shell输入与输出 120
4.4.6 bash介绍 121
4.5综合实例 123
实例4-2:编写清除/var/log下的log文件综合实例 123
实例4-3:编写寻找死链接文件综合实例 126
4.6本章小结 129
第5章 Linux进程 130
5.1进程概述 130
5.1.1进程结构 131
5.1.2进程的控制操作 132
5.1.3进程的属性 134
5.1.4进程的创建和调度 135
5.1.5 Linux进程命令 137
5.2系统调用 141
5.2.1系统调用简述 141
5.2.2系统调用的进入 142
5.2.3与进程管理相关的系统调用 142
5.3管道 143
5.3.1管道系统调用 143
5.3.2管道的分类 144
实例5-1:管道通信实例 145
5.4信号 147
5.4.1常见的信号种类 147
5.4.2系统调用函数 148
5.4.3信号的处理 149
5.4.4信号与系统调用的关系 150
实例5-2:信号实例 151
5.5信号量 152
5.5.1信号量概述 152
5.5.2相关的数据结构 153
5.5.3相关的函数 155
实例5-3:信号量实例 156
5.6共享内存 161
5.6.1共享内存原理 161
5.6.2共享内存对象的结构 162
5.6.3相关的函数 162
实例5-4:共享内存实例 163
5.7消息队列 169
5.7.1有关的数据结构 169
5.7.2相关的函数 171
实例5-5:消息队列实例 173
5.8综合实例 177
实例5-6:多线程编程实例 177
5.9本章小结 178
第6章建立Linux开发环境 179
6.1建立Linux开发环境 179
6.1.1 Cygwin开发环境 179
6.1.2 VMware Workstation开发环境 181
6.2交叉编译的使用 183
6.2.1 GNU交叉工具链的设置 183
6.2.2 ARM GNU常用汇编语言 186
6.2.3 GNU交叉工具链的常用工具 188
6.2.4交叉编译环境 191
6.3 Linux下的C编程 194
6.3.1 Linux程序设计特点 194
6.3.2 Linux下C语言编码的风格 195
6.3.3 Linux程序基础 195
6.3.4 Linux下C编程的库依赖 197
6.4 gcc的使用与开发 197
6.4.1 gcc简介和使用 197
6.4.2 gcc选项 198
6.4.3 gcc的错误类型 201
实例6-1:gcc编译器环境的应用实例 202
6.5 gdb调试器的介绍和使用 203
6.5.1 gdb调试器的使用 203
6.5.2在gdb中运行程序 204
6.5.3暂停和恢复程序运行 206
6.5.4远程调试 209
实例6-2:gdb调试器环境的应用实例 209
6.6 GNU make和Makefile的使用 211
6.6.1 Makefile的基本结构 212
6.6.2 Makefile的变量 213
6.6.3 Makefile的隐含规则 215
6.6.4 Makefile的命令使用 218
6.6.5 Makefile的函数使用 219
6.6.6 Makefile文件的运行 221
6.6.7 Makefile规则书写命令 223
实例6-3:Makefile的命令使用实例 229
6.7 autoconf和automake的使用 231
6.7.1 autoconf的使用 231
6.7.2 Makefile的编写 234
6.7.3 automake的使用 234
6.7.4使用automake和autoconf产生Makefile 235
6.7.5自动生成Makefile的方法 235
6.8综合实例 236
实例6-4:gcc编译器的综合实例 236
实例6-5:gdb调试器的综合实例 239
实例6-6:Makefile的综合实例 242
6.9本章小结 244
第7章 Linux操作系统移植 245
7.1移植的概念 245
7.1.1 Linux可移植性发展 246
7.1.2 Linux的移植性 246
7.2 Linux内核结构 247
7.2.1 Linux内核组成 247
7.2.2子系统相互间的关系 251
7.2.3系统数据结构 252
7.2.4 Linux内核源代码 252
7.3 Linux内核配置 256
实例7-1:Linux内核配置实例 256
7.4 Linux操作系统移植介绍 259
7.4.1 Linux系统移植的两大部分 259
7.4.2内核文件的修改 261
7.4.3系统移植所必需的环境 265
7.5综合实例 268
实例7-2:编译Linux内核应用实例 268
实例7-3:Linux内核的烧写实例 270
实例7-4:使用Kgdb构建Linux内核调试环境 271
7.6本章小结 280
第8章 Bootloader的使用 281
8.1 Bootloader概述 281
8.1.1 Bootloader的作用 282
8.1.2 Bootloader的功能 283
8.1.3 Bootloader的种类 283
8.1.4 Bootloader的工作模式 285
8.1.5 Bootloader的启动方式 285
8.1.6 Bootloader的启动流程 287
8.1.7 Bootloader与主机的通信 287
8.2 vivi 287
8.2.1 vivi的常用命令和文件结构 288
8.2.2 vivi第一阶段的分析 288
8.2.3 vivi第二阶段的分析 295
8.2.4 vivi的配置与编译 297
8.3 U-boot 298
8.3.1 U-boot常用命令和源代码目录结构 298
8.3.2 U-boot支持的主要功能 301
8.3.3 U-boot的编译和添加命令 302
8.3.4 U-boot的启动介绍 305
8.3.5 U-boot的移植和使用 307
8.3.6 U-boot的启动过程 308
8.3.7 U-boot的调试 310
8.4其他常见的Bootloader 312
8.5综合实例 313
实例8-1:vivi编译实例 314
实例8-2:U-boot在S3C2410上的移植实例 315
实例8-3:Bootloader设计实例 317
8.6本章小结 319
第9章构建Linux根文件系统 320
9.1 Linux文件系统概述 320
9.1.1 Linux文件系统的特点 320
9.1.2其他常见的嵌入式文件系统 322
9.1.3 Linux根文件目录结构 324
9.1.4 Linux文件属性介绍 324
9.2使用BusyBox生成工具集 325
9.2.1 BusyBox概述 325
9.2.2 BusyBox进程和用户程序启动过程 326
9.2.3编译/安装BusyBox 327
实例9-1:用BusyBox建立简单的根文件系统 331
9.3构建根文件系统 333
实例9-2:构建根文件系统 337
9.4配置yaffs文件 339
9.4.1 yaffs文件系统设置 340
9.4.2 yaffs文件系统测试 341
9.5综合实例 343
实例9-3:制作/使用yaffs文件系统映像文件 343
实例9-4:制作/使用jffs2文件系统映像文件 345
9.6本章小结 347
第10章设备驱动程序开发 348
10.1设备驱动程序概述 348
10.1.1驱动程序的简介 349
10.1.2设备分类 349
10.1.3设备号 350
10.1.4设备节点 350
10.1.5驱动层次结构 351
10.1.6设备驱动程序的特点 352
10.2设备驱动程序与文件系统 353
10.2.1设备驱动程序与文件系统的关系 353
10.2.2设备驱动程序与操作系统的关系 353
10.2.3 Linux设备驱动程序的接口 353
10.2.4设备驱动程序开发的基本函数 359
10.2.5 Linux驱动程序的加载 359
10.3设备驱动程序的使用 364
10.3.1驱动程序模块的加载 364
10.3.2创建设备文件 364
10.3.3使用设备 364
10.4网络设备基础知识 365
10.4.1网络协议 365
10.4.2网络设备接口基础 366
10.5网络设备驱动程序的架构 369
10.5.1网络设备驱动程序体系结构 369
10.5.2网络设备驱动程序模块分析 369
10.5.3网络设备驱动程序的实现模式 376
10.5.4网络设备驱动程序的数据结构 376
10.6综合实例 381
实例10-1:键盘驱动开发实例 381
实例10-2:I2C总线驱动的编写实例 384
实例10-3:TFT-LCD显示驱动实例 388
10.7本章小结 393
第11章嵌入式GUI开发 394
11.1嵌入式系统中的GUI简介 395
11.1.1嵌入式GUI系统的介绍 395
11.1.2基于嵌入式Linux的GUI系统底层实现基础 397
11.1.3嵌入式GUI系统的分析与比较 397
11.2嵌入式系统下MiniGUI的实现 399
11.2.1图形用户界面MiniGUI简介 399
11.2.2 MiniGUI的发布版本 401
11.2.3 MiniGUI在S3C2410处理器上的移植过程 404
11.3 Qt/Embedded嵌入式图形开发基础 407
11.3.1 Qt/Embedded开发环境的安装 407
11.3.2 Qt/Embedded底层支持及实现代码分析 411
11.3.3 Qt/Embedded信号和插槽机制 412
11.3.4 Qt/Embedded窗口部件 415
11.3.5 Qt/Embedded图形界面编程 418
11.3.6 Qt/Embedded对话框设计 419
11.3.7数据库 420
实例11-1:Qt/Embedded图形开发应用实例 423
11.4 Qtopia移植 424
11.4.1 Qtopia简介 424
11.4.2交叉编译、安装Qtopia 424
实例11-2:Qtopia移植应用实例 426
11.5 Qt/Embedded应用开发 427
11.5.1嵌入式硬件开发平台的选择 427
11.5.2 Qt/Embedded常用工具的介绍 429
11.5.3交叉编译Qt/Embedded的库 430
11.5.4 Qt/E程序的编译与执行 431
实例11-3:Qt/Embedded实战演练 432
11.6综合实例 436
实例11-4:Hello,Qt/Embedded应用程序 436
实例11-5:基本绘图应用程序的编写 439
11.7本章小结 443
第12章综合工程实例 444
12.1文件系统的生成与烧写 444
12.1.1 yaffs文件系统的制作与生成 445
12.1.2 jffs2文件系统的制作与生成 449
12.2基于Linux的数码相框 452
12.2.1系统需求分析 452
12.2.2系统总体设计 453
12.2.3软件设计实现 454
12.2.4软硬件集成 460
12.3基于Linux的MPlayer解码播放器 461
12.3.1可行性分析报告 461
12.3.2系统总体设计 462
12.3.3软件总体设计 463
12.3.4软件详细设计 467
12.3.5软硬件集成 477
12.4基于Linux的GPS导航系统的开发 478
12.4.1嵌入式开发流程图 479
12.4.2 GPS导航定位系统的系统定义 481
12.4.3 GPS导航系统的可行性分析报告 486
12.4.4 GPS导航系统需求分析 487
12.4.5 GPS导航系统总体设计实现 489
12.4.6 GPS导航系统硬件设计实现 491
12.4.7 GPS导航系统软件概括设计 495
12.4.8 GPS导航系统软件详细设计 495
12.4.9 GPS导航系统数据库的配置设计 522
12.4.10 GPS导航系统软件实现 534
12.5本章小结 538
二、arm9指令系统
目前英国ARM架构占据手机处理器90%的市场份额。
1、德州仪器优点:低频高能且耗电量较少,高端智能机必备CPU缺点:价格不菲,对应的手机价格也很高
2、INTEL优点:CPU主频高,速度快缺点:耗电、每频率性能较低
3、高通优点:主频高,性能表现出色,功能定位明确缺点:对功能切换处理能力一般
4、三星优点:耗电量低、价格便宜缺点:性能低5、Marvell优点:很好继承和发挥了PXA的性能缺点:功耗大
1 ARM微处理器的应用领域及特点
1.2.1 ARM微处理器的应用领域到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域: 1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。 1.2.2 ARM微处理器的特点采用RISC架构的ARM微处理器一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定;
2 ARM微处理器系列
ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。- ARM7系列- ARM9系列- ARM9E系列- ARM10E系列- SecurCore系列- Inter的Xscale- Inter的StrongARM其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。以下我们来详细了解一下各种处理器的特点及应用领域。 1.3.1 ARM7微处理器系列 ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点:-具有嵌入式ICE-RT逻辑,调试开发方便。-极低的功耗,适合对功耗要求较高的应用,如便携式产品。-能够提供0.9MIPS/MHz的三级流水线结构。-代码密度高并兼容16位的Thumb指令集。-对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。-指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。-主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。 ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。 ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、 ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为: T:支持16为压缩指令集Thumb; D:支持片上Debug; M:内嵌硬件乘法器(Multiplier) I:嵌入式ICE,支持片上断点和调试点; 1.3.2 ARM9微处理器系列 ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:- 5级整数流水线,指令执行效率更高。-提供1.1MIPS/MHz的哈佛结构。-支持32位ARM指令集和16位Thumb指令集。-支持32位的高速AMBA总线接口。-全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。- MPU支持实时操作系统。-支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。 ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。 1.3.3 ARM9E微处理器系列 ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。 ARM9E系列微处理器的主要特点如下:-支持DSP指令集,适合于需要高速数字信号处理的场合。- 5级整数流水线,指令执行效率更高。-支持32位ARM指令集和16位Thumb指令集。-支持32位的高速AMBA总线接口。-支持VFP9浮点处理协处理器。-全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。- MPU支持实时操作系统。-支持数据Cache和指令Cache,具有更高的指令和数据处理能力。-主频最高可达300MIPS。 ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。 ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。 1.3.4 ARM10E微处理器系列 ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。 ARM10E系列微处理器的主要特点如下:-支持DSP指令集,适合于需要高速数字信号处理的场合。- 6级整数流水线,指令执行效率更高。-支持32位ARM指令集和16位Thumb指令集。-支持32位的高速AMBA总线接口。-支持VFP10浮点处理协处理器。-全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。-支持数据Cache和指令Cache,具有更高的指令和数据处理能力-主频最高可达400MIPS。-内嵌并行读/写操作部件。 ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。 ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S三种类型,以适用于不同的应用场合。 1.3.5 SecurCore微处理器系列 SecurCore系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安全解决方案,因此,SecurCore系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。 SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下的特点:-带有灵活的保护单元,以确保操作系统和应用数据的安全。-采用软内核技术,防止外部对其进行扫描探测。-可集成用户自己的安全特性和其他协处理器。 SecurCore系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。 SecurCore系列微处理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四种类型,以适用于不同的应用场合。 1.3.6 StrongARM微处理器系列 Inter StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Inter公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。 Intel StrongARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。 1.3.7 Xscale处理器 Xscale处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。 Xscale处理器是Inter目前主要推广的一款ARM微处理器。
3 ARM微处理器结构
1.4.1 RISC体系结构传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。基于以上的不合理性,1979年美国加州大学伯克利分校提出了RISC(Reduced Instruction Set Computer,精简指令集计算机)的概念,RISC并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。到目前为止,RISC体系结构也还没有严格的定义,一般认为,RISC体系结构应具有如下特点:-采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。-使用单周期指令,便于流水线操作执行。-大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:-所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。-可用加载/存储指令批量传输数据,以提高数据的传输效率。-可在一条数据处理指令中同时完成逻辑处理和移位处理。-在循环处理中使用地址的自动增减来提高运行效率。当然,和CISC架构相比较,尽管RISC架构有上述的优点,但决不能认为RISC架构就可以取代CISC架构,事实上,RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一。 1.4.2 ARM微处理器的寄存器结构 ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:- 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。- 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。同时,ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。关于ARM处理器的寄存器结构,在后面的相关章节将会详细描述。 1.4.3 ARM微处理器的指令结构 ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。关于ARM处理器的指令结构,在后面的相关章节将会详细描述。
4 ARM微处理器的应用选型
鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构,几十个芯片生产厂家,以及千变万化的内部功能配置组合,给开发人员在选择方案时带来一定的困难,所以,对ARM芯片做一些对比研究是十分必要的。以下从应用的角度出发,对在选择ARM微处理器时所应考虑的主要问题做一些简要的探讨。 ARM微处理器内核的选择从前面所介绍的内容可知,ARM微处理器包含一系列的内核结构,以适应不同的应用领域,用户如果希望使用WinCE或标准Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都带有MMU功能。而ARM7TDMI则没有MMU,不支持Windows CE和标准Linux,但目前有uCLinux等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。事实上,uCLinux已经成功移植到多种不带MMU的微处理器平台上,并在稳定性和其他方面都有上佳表现。本书所讨论的S3C4510B即为一款不带MMU的ARM微处理器,可在其上运行uCLinux操作系统。系统的工作频率系统的工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100MHz-233MHz,ARM10最高可以达到700MHz。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。芯片内存储器的容量大多数的ARM微处理器片内存储器的容量都不太大,需要用户在设计系统时外扩存储器,但也有部分芯片具有相对较大的片内存储空间,如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间,用户在设计时可考虑选用这种类型,以简化系统的设计。片内外围电路的选择除ARM微处理器核以外,几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中,我们称之为片内外围电路,如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC和DAC、DSP协处理器等,设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化系统的设计,同时提高系统的可靠性。
编辑本段四 OMAP处理器
无线设备制造商,诸如诺基亚、爱立信、Palm、惠普公司及索尼等业界顶尖的设备制造商,以及诸如宏碁、LuckyGoldstar、HTC、Sendo及其它的主要设计制造商均宣布支持TI的OMAP处理器平台。此外,领先的 OS厂商,包括 Symbian、微软、Sun Microsystems及其它厂商与 TI也进行了密切合作,已将其解决方案移植到了 TI的OMAP处理器上。OMAP平台通过支持Symbian OS、Microsoft PocketPC 2002及Windows CE;Palm OS、Linux、Java、ARM Instruction Set及 C/C++,为软件应用开发商提供了易于使用的开放式编程环境。 TI还投入大量的资金开发和拓展其OMAP开发商网络,该网络是由致力于创建全新应用的国际软件开发商所组成的社区。通过提供多种工具、培训以及独立OMAP技术中心的全球网络,TI使开发商和客户能快速开发新的应用及产品。目前TI主流的应用处理器是OMAP730。 OMAP730是集成了ARM926TEJ应用处理器和TI的 GSM/GPRS数字基带的单芯片处理器。由于集成了40个外设在单芯片中,基于OMAP730的设计只需要上代处理器一半的板级空间。此外OMAP730具有独特的SRAM frame buffer用于提高流媒体和应用程序的处理性能。OMAP730处理器还提供复杂的硬件加密功能,包括加密的引导程序,操作的加密模式,加密的RAM和ROM,并对一些加密标准提供硬件加速。而采用了OMAP730处理器的TCS2600则是TI现在推出的主流智能手机平台,它是新的低功耗和低成本的选择,充分利用了TI OMAP?平台的优势实现了安全的移动商务、多媒体游戏与娱乐、定位服务、流媒体、更高速的 Java处理、web浏览、增强的 2D图形、支持高层操作系统以及其他众多应用。整个平台的功能在53.20mm×31.25mm的印刷电路板上实现,和其他的具有相同特征和存储器的方案相比拥有较低的成本。另外的一个特点就是极低的功耗,能够极大的延长电池的使用寿命。该方案可以升级支持EDGE协议需求,面对JAVA需求,采用了对JAVA的硬件加速并集成了 USB, SD/MMC/SDIO, Bluetooth?, 802.11 high-speed link, Fast IrDA等外设。此外,TCS2600还提供无与伦比的安全特性,通过采用安全引导装载程序、真正的硬件随机数生成器(RNG)、安全执行与存储环境,以及硬件加速器等来进行大量加密与单向散列算法,可防止病毒攻击并可确保个人信息及专有软件或储存在移动终端中的创造性内容的安全性。在灵活性方面,TI的智能手机平台可以方便的和TI的WLAN已及蓝牙方案集成,将会为用户提供提能各异且个性化的产品。
对中国的OEM厂商来讲,要想在未来2.5G/3G无线市场上获得领先的市场地位,选择一个可提供整套解决方案包括无线软件协议,数字基带、电源管理,应用处理器,模拟基带,RF,嵌入式内存和参考设计并具有优秀集成能力的厂商至关重要。作为GSM的领先半导体供应商,TI无疑在无线领域占据着领先地位。针对智能手机市场的未来发展趋势,据IDC预计,随着移动数据增值业务的发展,全球高端智能手机将以每年100%以上的高速增长,在2006年左右攀升至2000万台。而国内智能手机市场的发展则更为迅猛,平均年增长率为220%。通过提供业界最高性能的DSP、功耗最低的模拟组件,以及在集成电路技术领域最深刻的体验,TI期待为中国智能手机市场的未来发展起到不可替代的促进作用。
三、ARM9开发板的ARM926 处理器
ARM926EJ-S™处理器具有如下特点:Jazelle®技术得到增强的 32位 RISC CPU、灵活的大小指令和数据缓存、紧密耦合内存(TCM)接口和内存管理单元(MMU)。它还提供单独指令和数据 AMBA® AHB™接口,适合基于多层 AHB的系统。ARM926EJ-S处理器可执行 ARMv5TEJ指令集,其中包括功能得到增强的 16 x 32位乘法器,可进行单周期 MAC运算,以及 16位定点 DSP指令,可增强多个信号处理应用程序的性能并支持 Thumb®技术。
ARM926EJ-S处理器为入门级处理器,支持各种操作系统,如 Linux、Windows CE和 Symbian。ARM926EJ-S处理器是最流行的 ARM处理器之一,是众多应用的理想之选。
ARM926EJ-S处理器具有以下一些功能:Java加速DSP扩展可选浮点单元灵活的本地内存系统,其缓存可与卓越的紧密耦合内存(TCM)集成保持与 ARM7TDMI®处理器的二进制兼容
业界标准
迄今已售出 50多亿台 ARM9处理器
ARM926EJ-S处理器已授权于全球 100多家硅片供应商,并不断在众多产品和应用中得到成功部署。
通过提供稳定而可靠的性能,该处理器为设计人员提供了低风险解决方案,并加快了产品上市速度。应用范围
ARM926EJ-S可用于众多先进的数字产品:
产品类型应用
消费品智能手机、PDA、机顶盒、PMP、电子玩具、数码相机、数码摄像机等
联网无线局域网、802.11、蓝牙、Firewire、SCSI、2.5G/3G基带等
汽车电力火车、ABS、车身系统、导航、信息娱乐等
嵌入式 USB控制器、蓝牙控制器、医用扫描仪等
存储硬盘控制器、固态驱动器等
为实现产品的迅速上市,抢占市场先机,许多厂商没有底层的开发人员,或者开发工作量大,就采购第三方嵌入式主板厂商的开发板作为产品的主板。安赛卓尔电子科技推出的一系列ARM926EJ-S内核的ARM9开发板已在工业控制、医疗电子、节能环保、智能交通、能源节能、电力系统、通讯系统、纺织行业、数控行业、汽车电子、工业触摸屏控制系统、机器人视觉、媒体处理无线应用、数字家电、车载设备、通信设备、网络终端等环境恶劣场合广泛应用,赢得国内多家应用厂商的好评,与国内多家公司和厂家建立战略合作伙伴关系。