第一篇 基础知识篇 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 ARM流水线与时序 23
1.7.1 ARM流水线 23
1.7.2 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章 ARM开发环境与调试系统 76
3.1 ADS开发环境 76
3.1.1 CodeWarrior的使用 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 用仿真器调试系统 92
3.4.1 初始化存储器 92
3.4.2 在线仿真 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
第二篇 常用模块设计实例篇 130
第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 软件开发方法 137
4.4.1 软件开发流程 137
4.4.2 软件开发环境构建 138
4.5 实例总结 139
第5章 DMA模块应用设计 140
5.1 实例内容和目标 140
5.2 DMA数据传输原理 140
5.2.1 DMA操作原理 141
5.2.2 外部DMA请求/应答协议 142
5.2.3 DMA传送方式 143
5.2.4 DMA的寄存器介绍 144
5.3 软件设计 145
5.4 实例总结 148
第6章 RTC模块应用设计 149
6.1 实例内容和目标 149
6.2 RTC工作原理 149
6.2.1 RTC的特性 149
6.2.2 RTC相关寄存器 150
6.3 硬件设计 153
6.4 软件设计 153
6.4.1 RTC初始化 154
6.4.2 RTC显示控制程序 154
6.5 实例总结 156
第7章 PWM模块应用设计 157
7.1 实例内容和目标 157
7.2 PWM工作原理 158
7.2.1 PWM的特性 158
7.2.2 PWM的工作原理 158
7.2.3 PWM的定时操作 159
7.2.4 PWM的特殊寄存器 160
7.3 实例软件设计 163
7.3.1 PWM启动 163
7.3.2 调制PWM 164
7.3.3 程序代码 164
7.4 实例总结 165
第8章 看门狗定时器模块设计 166
8.1 实例说明 166
8.2 看门狗工作原理 166
8.2.1 看门狗定时器操作 166
8.2.2 看门狗定时器特殊功能寄存器 167
8.3 实例软件设计 168
8.4 实例总结 169
第9章 中断处理模块设计 170
9.1 实例说明 170
9.2 中断处理与寄存器设置 171
9.2.1 ARM中断处理类型 171
9.2.2 ARM中断及相关寄存器 172
9.3 中断硬件模块图 173
9.4 软件程序设计 174
9.4.1 中断处理流程 174
9.4.2 中断程序设计 174
9.4.3 中断处理程序优化 175
9.5 实例总结 176
第10章 复位模块设计 177
10.1 实例说明 177
10.2 ARM复位原理 177
10.2.1 ARM复位源类型 177
10.2.2 复位工作原理 178
10.3 硬件电路设计 179
10.3.1 复位电路原理图 179
10.3.2 复位电路的调试 180
10.4 看门狗软件复位 181
10.5 实例总结 183
第11章 A/D变换模块设计 184
11.1 实例说明 184
11.2 A/D变换原理 185
11.2.1 A/D变换类型 185
11.2.2 A/D转换过程 187
11.3 硬件电路设计 188
11.3.1 A/D模块 188
11.3.2 D/A模块 189
11.4 A/D采样软件设计 190
11.5 实例总结 192
第12章 电源模块设计 193
12.1 实例说明 193
12.2 电源工作原理 193
12.2.1 系统工作状态 193
12.2.2 外设耗电考虑 194
12.3 电源线与地线设计 196
12.4 硬件电路设计 198
12.4.1 直流电压产生方法 198
12.4.2 电源模块电路原理图 198
12.5 电源的软件管理 200
12.6 实例总结 201
第13章 SDRAM模块设计 202
13.1 实例说明 202
13.2 SDRAM特点 202
13.2.1 SDRAM状态 202
13.2.2 SDRAM控制 203
13.2.3 SDRAM时序特点 204
13.2.4 地址空间分配 205
13.3 硬件电路设计 206
13.3.1 SDRAM芯片 206
13.3.2 SDRAM模块原理图 207
13.4 软件设计 208
13.4.1 SDRAM读写 208
13.4.2 SDRAM软件测试 209
13.5 实例总结 216
第14章 Nand-Flash/Nor-Flash存储模块设计 217
14.1 实例说明 217
14.2 Flash原理 218
14.2.1 Nand-Flash与Nor-Flash区别 218
14.2.2 Flash驱动 220
14.3 硬件电路设计 220
14.3.1 Nor-Flash的设计 220
14.3.2 Nand-Flash的设计 222
14.3.3 Nor-Flash/Nand-Flash跳线选择 223
14.4 软件设计 224
14.4.1 Flash数据存储操作流程 224
14.4.2 程序代码说明 224
14.5 实例总结 228
第15章 通用I/O模块设计 229
15.1 实例说明 229
15.2 GPIO原理 229
15.2.1 GPIO设备驱动原理 229
15.2.2 如何驱动GPIO及对应设备 231
15.3 GPIO应用举例 231
15.4 GPIO设备程序开发 232
15.4.1 开发步骤 232
15.4.2 GPIO端口编程 233
15.5 实例总结 234
第16章 键盘模块设计 235
16.1 实例说明 235
16.2 键盘工作原理 235
16.2.1 常用键盘接口 235
16.2.2 行列式键盘工作原理 236
16.2.3 键盘扫描流程 237
16.3 硬件电路设计 237
16.3.1 ARM键盘接口 237
16.3.2 键盘电路原理图 237
16.4 软件设计 238
16.4.1 键盘扫描程序 238
16.4.2 键盘测试程序 242
16.4.3 键盘驱动 243
16.5 实例总结 244
第17章 LCD模块设计 245
17.1 实例说明 245
17.2 LCD工作原理 246
17.2.1 LCD显示模式 246
17.2.2 LCD显示地址 247
17.2.3 LCD读写时序 247
17.3 硬件电路设计 249
17.3.1 LCD显示电路 249
17.3.2 电路原理图 250
17.4 软件设计 251
17.4.1 LCD显示定位、结构与驱动 251
17.4.2 LCD显示流程 253
17.4.3 LCD显示与测试 253
17.4.4 LCD字模显示程序 257
17.5 实例总结 259
第18章 USB设备模块设计 260
18.1 实例说明 260
18.2 设计思路分析 260
18.2.1 USB工作原理 260
18.2.2 USB特点 262
18.2.3 USB传输方式 263
18.3 硬件电路设计 263
18.3.1 USB接口内部结构 263
18.3.2 端口描述 265
18.3.3 USB硬件原理图 266
18.4 软件设计 267
18.4.1 固件程序的设计 268
18.4.2 驱动程序设计 268
18.5 实例总结 271
第19章 以太网控制器模块设计 272
19.1 实例说明 272
19.2 以太网口工作原理 273
19.3 硬件电路设计 274
19.3.1 电路原理图 274
19.3.2 网卡芯片调试 275
19.4 软件设计 276
19.4.1 以太网口存储及初始化 276
19.4.2 发送数据包 277
19.4.3 接收数据包 278
19.4.4 程序代码 279
19.5 实例总结 286
第20章 I2C总线串行接口应用设计 287
20.1 实例说明 287
20.2 I2C设计原理 287
20.2.1 I2C主从模式 287
20.2.2 I2C工作原理 288
20.3 I2C硬件电路设计 289
20.3.1 I2C串口存储器 289
20.3.2 电路原理图 290
20.4 软件设计 290
20.4.1 I2C读写过程设计 290
20.4.2 程序代码说明 292
20.5 实例总结 300
第21章 UART异步串行接口模块设计 301
21.1 实例说明 301
21.2 串行通信原理 301
21.2.1 异步串行通信 301
21.2.2 同步串行通信 302
21.2.3 RS-232-C接口 302
21.3 硬件电路设计 304
21.4 软件设计 305
21.4.1 串口中断程序 305
21.4.2 串口调试程序代码 306
21.5 实例总结 308
第22章 ARP网络寻址模块设计 309
22.1 实例说明 309
22.2 ARP设计 310
22.2.1 ARP协议工作原理 310
22.2.2 硬件ARP实现 311
22.3 软件设计 311
22.3.1 ARP实现流程 311
22.3.2 ARP程序设计 313
22.4 实例总结 317
第23章 Boot-loader模块设计 318
23.1 实例说明 318
23.2 设计思路分析 319
23.2.1 Boot-loader原理 320
23.2.2 Boot-loader的stage 1 322
23.2.3 Boot-loader的stage 2 323
23.3 实现方法 326
23.3.1 Boot-loader的设置 326
23.3.2 Boot-loader程序设计 327
23.3.3 Boot-loader程序烧写 330
23.4 实例总结 331
第24章 基于Nand-Flash的文件系统设计 332
24.1 实例说明 332
24.2 根文件系统原理 332
24.2.1 Linux源文件的组织结构 332
24.2.2 文件系统指标 334
24.2.3 文件系统分类 334
24.3 根文件创建过程 336
24.3.1 配置NFS 336
24.3.2 创建根文件系统 336
24.3.3 文件系统的页面管理 340
24.4 实例总结 342
第25章 GUI系统的移植与应用设计 343
25.1 实例说明 343
25.2 GUI系统原理 343
25.2.1 常用的GUI系统 343
25.2.2 GUI设计要求 346
25.3 不同GUI平台的移植配置 347
25.3.1 MicroWindows的移植配置 347
25.3.2 MiniGUI的移植配置 348
25.3.3 Qt/Embedded的移植配置 348
25.4 GUI图形显示的实现 349
25.4.1 GUI系统的移植过程 349
25.4.2 基于Frame-buffer的GUI图形显示 350
25.5 实例总结 352
第26章 ARM Linux的移植与应用设计 353
26.1 实例说明 353
26.2 Linux系统移植原理 354
26.2.1 系统移植类型 354
26.2.2 系统移植的启动阶段 354
26.3 ARM Linux的移植过程 355
26.3.1 建立Linux交叉编译环境 355
26.3.2 剪裁和配置ARM Linux内核 357
26.3.3 引导内核启动流程 362
26.3.4 编写嵌入式Linux的设备驱动程序 364
26.4 实例总结 367
第27章 μC/OS-Ⅱ移植与应用设计 368
27.1 μC/OS-Ⅱ实例内容 368
27.2 μC/OS-Ⅱ概述 368
27.2.1 μC/OS-Ⅱ简介 368
27.2.2 μC/OS-Ⅱ的特点 369
27.3 μC/OS-Ⅱ移植 371
27.3.1 μC/OS-Ⅱ文件体系结构 371
27.3.2 μC/OS-Ⅱ移植条件 371
27.3.3 μC/OS-Ⅱ在S3C44B0X上的移植 372
27.4 μC/OS-Ⅱ实例软件设计 373
27.5 实例总结 375
第三篇 综合应用系统设计实例篇 378
第28章 餐厅手持电子点菜系统设计 378
28.1 实例说明 378
28.2 设计思路分析 378
28.2.1 系统工作原理 378
28.2.2 系统功能模块 379
28.3 系统硬件设计 379
28.4 系统软件设计 380
28.4.1 系统初始化程序代码 380
28.4.2 主程序部分 385
28.5 实例总结 390
第29章 UDP数据报与TCP传输应用系统设计 391
29.1 实例说明 391
29.2 UDP与TCP数据传输原理 391
29.2.1 UDP工作原理 391
29.2.2 TCP工作原理 392
29.3 层间接口设计 393
29.4 软件设计 396
29.4.1 UDP数据报传输 396
29.4.2 TCP数据传输的实现 401
29.5 实例总结 409
第30章 音频编解码应用系统设计 410
30.1 实例说明 410
30.2 音频编解码原理 411
30.2.1 音频编解码框图 411
30.2.2 音频编码过程 412
30.2.3 IIS音频总线 414
30.2.4 IIS音频时钟与传输方式 415
30.3 硬件电路设计 416
30.3.1 音频A/D单元 416
30.3.2 与ARM音频接口 417
30.4 软件设计 417
30.5 实例总结 421
第31章 数字视频监控应用系统设计 422
31.1 实例说明 422
31.2 设计思路分析 422
31.2.1 监控系统实现方案 422
31.2.2 监控系统应用举例 424
31.3 硬件电路设计 425
31.3.1 ARM视频监控平台 425
31.3.2 VGA接口与权电阻网络 426
31.3.3 CMOS图像采集模块 427
31.4 软件设计 429
31.4.1 监控主程序流程 429
31.4.2 程序代码说明 430
31.5 实例总结 447
第32章 指纹识别应用系统设计 448
32.1 实例说明 448
32.2 指纹识别 448
32.2.1 基本概念 449
32.2.2 指纹识别的基本原理 449
32.2.3 指纹识别的方法 450
32.3 硬件电路设计 454
32.3.1 指纹硬件电路 454
32.3.2 电路原理图 455
32.4 软件设计 456
32.4.1 指纹识别驱动 456
32.4.2 指纹处理程序设计 456
32.5 实例总结 464
第33章 车载信息系统设计 466
33.1 实例说明 466
33.2 设计思路分析 467
33.2.1 车载系统的结构 467
33.2.2 车载系统的基本原理 468
33.2.3 车载系统开发平台 468
33.2.4 系统软件体系结构 469
33.3 硬件电路设计 469
33.3.1 硬件电路 470
33.3.2 硬件模块说明 470
33.4 软件设计 472
33.4.1 相关驱动说明 473
33.4.2 模块程序设计 474
33.4.3 整体设计 476
33.4.4 部分源程序 476