第一篇 基础知识篇 2
第1章 ARM处理器及系统结构 2
1.1 ARM处理器概述 2
1.1.1 ARM公司简介 2
1.1.2 ARM特点 3
1.1.3 ARM应用领域 3
1.2 ARM处理器系列 5
1.3 ARM内核基本结构 9
1.3.1 ARM内核 9
1.3.2 ARM扩展功能块 10
1.3.3 ARM启动方式 13
1.4 ARM处理器运行模式 14
1.5 ARM寄存器 14
1.5.1 通用寄存器 14
1.5.2 程序状态寄存器 16
1.5.3 ARM状态下的寄存器 18
1.5.4 Thumb状态下的寄存器 19
1.6 ARM存储系统 20
1.6.1 ARM存储方法 20
1.6.2 存储空间管理单元(MMU) 21
1.7.2 ARM时序 23
1.7 ARM流水线与时序 23
1.7.1 ARM流水线 23
1.8 ARM中断与异常 24
1.8.1 ARM异常类型 25
1.8.2 异常的响应及返回 25
1.8.3 异常的描述 26
1.8.4 异常的处理 28
第2章 ARM编程基础 29
2.1 ARM指令系统 29
2.1.1 ARM指令介绍 29
2.1.2 ARM指令寻址方式 31
2.1.3 ARM指令集 34
2.2 ARM汇编语言设计 46
2.2.1 ARM汇编器所支持的伪指令 46
2.2.2 汇编语言的语句格式 53
2.2.3 汇编语言的程序结构 57
2.3 ARM C语言设计 58
2.3.1 优化C语言编程 58
2.3.2 C语言与汇编混合编程 64
2.3.3 ARM C/C++编译器 69
3.1.1 CodeWarrior的使用 76
第3章 ARM开发环境与调试系统 76
3.1 ADS开发环境 76
3.1.2 AXD的使用 83
3.2 SDT开发环境 86
3.2.1 SDT开发环境及特点 86
3.2.2 SDT调试环境 86
3.2.3 利用SDT软件编程实例 87
3.3 ARM体系中调试系统概述 90
3.4.1 初始化存储器 92
3.4.2 在线仿真 92
3.4 用仿真器调试系统 92
3.4.3 常见问题 94
3.5 基于Angel的调试系统 95
3.5.1 基于Angel的调试系统概述 95
3.5.2 使用Angel开发应用程序 98
3.5.3 Angel执行的操作 103
3.5.4 将Angel移植到特定的目标系统 105
3.6 基于JTAG的调试系统 122
3.6.1 调试接口JTAG介绍 122
3.6.2 基于JTAG的调试系统的特点 125
3.6.3 基于JTAG的调试系统结构 126
3.6.4 目标系统中的调试功能扩展部件 127
3.6.5 基于JTAG的调试过程 128
第二篇 ARM嵌入式常用模块设计实例篇第4章 ARM嵌入式开发平台的构建 130
4.1 实例说明 130
4.2 ARM系统体系结构 130
4.2.1 硬件体系结构 131
4.2.2 软件体系结构 133
4.3 硬件平台实现方法 134
4.3.1 硬件电路板设计 134
4.3.2 ARM硬件设计原则 136
4.4.1 软件开发流程 137
4.4 软件开发方法 137
4.4.2 软件开发环境构建 138
4.5 实例总结 139
第5章 电源模块设计 140
5.1 实例说明 140
5.2 电源工作原理 140
5.2.1 系统工作状态 140
5.2.2 外设耗电考虑 141
5.3 电源线与地线设计 143
5.4.2 电源模块电路原理图 145
5.4 硬件电路设计 145
5.4.1 直流电压产生方法 145
5.5 电源的软件管理 147
5.6 实例总结 148
第6章 SDRAM模块设计 149
6.1 实例说明 149
6.2 SDRAM特点 149
6.2.1 SDRAM状态 149
6.2.2 SDRAM控制 150
6.2.3 SDRAM时序特点 151
6.2.4 地址空间分配 152
6.3 硬件电路设计 153
6.3.1 SDRAM芯片 153
6.3.2 SDRAM模块原理图 154
6.4 软件设计 155
6.4.1 SDRAM读写 155
6.4.2 SDRAM软件测试 156
6.5 实例总结 163
第7章 Nand-Flash/Nor-Flash存储模块设计 164
7.1 实例说明 164
7.2.1 Nand-Flash与Nor-Flash区别 165
7.2 Flash原理 165
7.2.2 Flash驱动 167
7.3 硬件电路设计 167
7.3.1 Nor-Flash的设计 167
7.3.2 Nand-Flash的设计 169
7.3.3 Nor-Flash/Nand-Flash跳线选择 170
7.4 软件设计………………………17l7.4.1 Flash数据存储操作流程 171
7.4.2 程序代码说明 171
7.5 实例总结 175
8.2 GPIO原理 176
8.2.1 GPIO设备驱动原理 176
8.1 实例说明 176
第8章 通用I/O模块设计 176
8.2.2 如何驱动GPIO及对应设备 178
8.3 GPIO应用举例 178
8.4 GPIO设备程序开发 179
8.4.1 开发步骤 179
8.4.2 GPIO端口编程 180
8.5 实例总结 181
第9章 中断处理模块设计 182
9.1 实例说明 182
9.2.1 ARM中断处理类型 183
9.2 中断处理与寄存器设置 183
9.2.2 ARM中断及相关寄存器 184
9.3 中断硬件模块图 185
9.4 软件程序设计 186
9.4.1 中断处理流程 186
9.4.2 中断程序设计 186
9.4.3 中断处理程序优化 187
9.5 实例总结 188
10.2.1 ARM复位源类型 189
10.2 ARM复位原理 189
10.1 实例说明 189
第10章 复位模块设计 189
10.2.2 复位工作原理 190
10.3 硬件电路设计 191
10.3.1 复位电路原理图 191
10.3.2 复位电路的调试 192
10.4 看门狗软件复位 193
10.5 实例总结 195
第11章 A/D变换模块设计 196
11.1 实例说明 196
11.2.1 A/D变换类型 197
11.2 A/D变换原理 197
11.2.2 A/D转换过程 199
11.3 硬件电路设计 200
11.3.1 A/D模块 200
11.3.2 D/A模块 201
11.4 A/D采样软件设计 202
11.5 实例总结 204
第12章 LCD模块设计 205
12.1 实例说明 205
12.2.1 LCD显示模式 206
12.2 LCD工作原理 206
12.2.2 LCD显示地址 207
12.2.3 LCD读写时序 207
12.3 硬件电路设计 209
12.3.1 LCD显示电路 209
12.3.2 电路原理图 210
12.4 软件设计 211
12.4.1 LCD显示定位、结构与驱动 211
12.4.2 LCD显示流程 213
12.4.3 LCD显示与测试 213
12.4.4 LCD字模显示程序 217
12.5 实例总结 219
第13章 键盘模块设计 220
13.1 实例说明 220
13.2 键盘工作原理 220
13.2.1 常用键盘接口 220
13.2.2 行列式键盘工作原理 221
13.3.1 ARM键盘接口 222
13.3.2 键盘电路原理图 222
13.3 硬件电路设计 222
13.2.3 键盘扫描流程 222
13.4 软件设计 223
13.4.1 键盘扫描程序 223
13.4.2 键盘测试程序 227
13.4.3 键盘驱动 228
13.5 实例总结 229
第14章 UART异步串行接口模块设计 230
14.1 实例说明 230
14.2 串行通信原理 230
14.2.1 异步串行通信 230
14.2.3 RS-232-C接口 231
14.2.2 同步串行通信 231
14.3 硬件电路设计 233
14.4 软件设计 234
14.4.1 串口中断程序 234
14.4.2 串口调试程序代码 235
14.5 实例总结 237
第15章 I2C总线串行接口应用设计 238
15.1 实例说明 238
15.2 I2C设计原理 238
15.2.1 I2C主从模式 238
15.2.2 I2C工作原理 239
15.3 I2C硬件电路设计 240
15.3.1 I2C串口存储器 240
15.3.2 电路原理图 241
15.4 软件设计 241
15.4.1 I2C读写过程设计 241
15.4.2 程序代码说明 243
15.5 实例总结 251
第16章 以太网控制器模块设计 252
16.1 实例说明 252
16.2 以太网口工作原理 253
16.3.1 电路原理图 254
16.3 硬件电路设计 254
16.3.2 网卡芯片调试 255
16.4 软件设计 256
16.4.1 以太网口存储及初始化 256
16.4.2 发送数据包 257
16.4.3 接收数据包 258
16.4.4 程序代码 259
16.5 实例总结 266
17.2.1 USB工作原理 267
17.2 设计思路分析 267
17.1 实例说明 267
第17章 USB设备模块设计 267
17.2.2 USB特点 269
17.2.3 USB传输方式 270
17.3 硬件电路设计 270
17.3.1 USB接口内部结构 270
17.3.2 端口描述 272
17.3.3 USB硬件原理图 273
17.4 软件设计 274
17.4.1 固件程序的设计 275
17.4.2 驱动程序设计 275
17.5 实例总结 278
第18章 ARP网络寻址模块设计 279
18.1 实例说明 279
18.2 ARP设计 280
18.2.1 ARP协议工作原理 280
18.2.2 硬件ARP实现 281
18.3 软件设计 281
18.3.1 ARP实现流程 281
18.3.2 ARP程序设计 283
18.4 实例总结 287
19.1 实例说明 288
第19章 Boot-loader模块设计 288
19.2 设计思路分析 289
19.2.1 Boot-loader原理 290
19.2.2 Boot-loader的stage 1 292
19.2.3 Boot-loader的stage 2 293
19.3 实现方法 296
19.3.1 Boot-loader的设置 296
19.3.2 Boot-loader程序设计 297
19.3.3 Boot-loader程序烧写 300
19.4 实例总结 301
20.1 实例说明 302
第20章 ARM Linux的移植与应用设计 302
20.2.1 系统移植类型 303
20.2.2 系统移植的启动阶段 303
20.2 Linux系统移植原理 303
20.3 ARM Linux的移植过程 304
20.3.1 建立Linux交叉编译环境 304
20.3.2 剪裁和配置ARM Linux内核 306
20.3.3 引导内核启动流程 311
20.3.4 编写嵌入式Linux的设备驱动程序 313
20.4 实例总结 316
21.2 根文件系统原理 317
21.2.1 Linux源文件的组织结构 317
第21章 基于Nand-Flash的文件系统设计 317
21.1 实例说明 317
21.2.2 文件系统指标 319
21.2.3 文件系统分类 319
21.3 根文件创建过程 321
21.3.1 配置NFS 321
21.3.2 创建根文件系统 321
21.3.3 文件系统的页面管理 325
21.4 实例总结 327
22.1 实例说明 328
22.2 GUI系统原理 328
22.2.1 常用的GUI系统 328
第22章 GUI系统的移植与应用设计 328
22.2.2 GUI设计要求 331
22.3 不同GUI平台的移植配置 332
22.3.1 MicroWindows的移植配置 332
22.3.2 MiniGUI的移植配置 333
22.3.3 Qt/Embedded的移植配置 333
22.4.1 GUI系统的移植过程 334
22.4 GUI图形显示的实现 334
22.4.2 基于Frame-buffer的GUI图形显示 335
22.5 实例总结 337
第三篇 综合应用系统设计实例篇 340
第23章 UDP数据报与TCP传输应用系统设计 340
23.1 实例说明 340
23.2 UDP与TCP数据传输原理 340
23.2.1 UDP工作原理 340
23.2.2 TCP工作原理 341
23.3 层间接口设计 342
23.4.1 UDP数据报传输 345
23.4 软件设计 345
23.4.2 TCP数据传输的实现 350
23.5 实例总结 358
第24章 音频编解码应用系统设计 359
24.1 实例说明 359
24.2 音频编解码原理 360
24.2.1 音频编解码框图 360
24.2.2 音频编码过程 361
24.2.3 IIS音频总线 363
24.2.4 IIS音频时钟与传输方式 364
24.3.1 音频A/D单元 365
24.3 硬件电路设计 365
24.3.2 与ARM音频接口 366
24.4 软件设计 366
24.5 实例总结 370
第25章 数字视频监控应用系统设计 371
25.1 实例说明 371
25.2 设计思路分析 371
25.2.1 监控系统实现方案 371
25.2.2 监控系统应用举例 373
25.3.1 ARM视频监控平台 374
25.3 硬件电路设计 374
25.3.2 VGA接口与权电阻网络 375
25.3.3 CMOS图像采集模块 376
25.4 软件设计 378
25.4.1 监控主程序流程 378
25.4.2 程序代码说明 379
25.5 实例总结 396
第26章 指纹识别应用系统设计 397
26.1 实例说明 397
26.2 指纹识别 397
26.2.2 指纹识别的基本原理 398
26.2.1 基本概念 398
26.2.3 指纹识别的方法 399
26.3 硬件电路设计 403
26.3.1 指纹硬件电路 403
26.3.2 电路原理图 404
26.4 软件设计 405
26.4.1 指纹识别驱动 405
26.4.2 指纹处理程序设计 405
26.5 实例总结 413
附录A ARM主流微处理器芯片介绍 415