第1章 嵌入式系统概述 1
1.1 嵌入式系统的基本概念 1
1.1.1 嵌入式系统定义 1
1.1.2 嵌入式系统的特点 1
1.2 嵌入式系统发展 2
1.3 嵌入式系统的应用 3
1.4 嵌入式系统的组成 4
1.4.1 嵌入式处理器 5
1.4.2 嵌入式操作系统 9
1.4.3 嵌入式应用程序 10
1.5 本章小结 11
习题与思考题 12
第2章 ARM编程模型 13
2.1 ARM发展历程及其技术特征 13
2.1.1 ARM发展历程 13
2.1.2 ARM技术特征 13
2.2 ARM体系结构版本概述 14
2.2.1 ARM体系结构版本 14
2.2.2 ARM体系结构版本的变种 16
2.3 ARM核概述 18
2.3.1 ARM核命名规则 18
2.3.2 ARM7系列微处理器核 19
2.3.3 ARM9 19
2.3.4 ARM9E 19
2.3.5 ARM10E 20
2.3.6 SecurCore 20
2.3.7 StrongARM 20
2.3.8 XScale 20
2.3.9 ARMll系列核 21
2.3.10 ARM Cortex系列核 21
2.4 ARM微处理器核的工作状态 21
2.5 ARM处理器核的工作模式 22
2.6 ARM核的内部寄存器 22
2.6.1 ARM状态下的寄存器 22
2.6.2 Thumb状态下的寄存器 25
2.7 ARM核的异常中断 26
2.7.1 ARM核异常中断概述 26
2.7.2 ARM核异常中断响应过程 27
2.7.3 ARM核异常中断的返回 28
2.7.4 ARM核异常中断处理程序结构 29
2.7.5 ARM核异常中断向量表 30
2.7.6 ARM核异常中断的优先级 30
2.8 ARM核流水线 31
2.8.1 三级流水线 31
2.8.2 五级流水线 34
2.9 ARM协处理器 34
2.10 ARM AMBA接口 35
2.11 ARM存储器结构 36
2.11.1 ARM存储器的数据类型和存储格式 36
2.11.2 ARM存储体系 36
2.1 2本章小结 37
习题与思考题 38
第3章 ARM指令系统 39
3.1 ARM指令系统概述 39
3.1.1 ARM指令的基本汇编格式 39
3.1.2 ARM指令的机器码格式 39
3.1.3 ARM指令可选后缀 40
3.2 ARM指令的寻址方式 43
3.2.1 立即寻址 43
3.2.2 寄存器寻址 43
3.2.3 寄存器间接寻址 45
3.2.4 基址变址寻址 45
3.2.5 堆栈寻址 46
3.2.6 多寄存器寻址 47
3.2.7 相对寻址 48
3.3 ARM指令集 48
3.3.1 数据传送指令 48
3.3.2 数据处理指令 54
3.3.3 程序状态寄存器访问指令MRS和MSR 63
3.3.4 跳转指令 64
3.3.5 异常产生指令 66
3.3.6 协处理器指令 69
3.4 Thumb指令集 71
3.4.1 Thumb指令集概述 71
3.4.2 Thumb指令分类介绍 71
3.5 本章小结 80
习题与思考题 80
第4章 ARM汇编程序设计 81
4.1 ARM伪操作与伪指令 81
4.1.1 GNU编译环境下的伪操作 81
4.1.2 ADS环境下的伪操作 86
4.1.3 两种编译环境下的常用伪操作汇总 96
4.1.4 伪指令 96
4.2 ARM汇编程序设计 98
4.2.1 ARM汇编语言中的文件格式 98
4.2.2 ARM汇编语言语句格式 99
4.2.3 汇编程序设计示例 103
4.2.4 C语言与汇编语言混合编程 105
4.3 本章小结 113
习题与思考题 114
第5章 嵌入式操作系统 115
5.1 嵌入式操作系统μC/OS-Ⅱ简介 115
5.2 μC/OS-Ⅱ的任务管理 116
5.2.1 μC/OS-Ⅱ任务概述 116
5.2.2 任务调度 118
5.2.3 任务创建 123
5.2.4 任务的挂起和恢复 128
5.2.5 任务的删除 129
5.3 μC/OS-Ⅱ的初始化 129
5.4 μC/OS-Ⅱ的启动 137
5.5 μC/OS-Ⅱ的中断 138
5.5.1 μC/OS-Ⅱ的中断过程 139
5.5.2 中断级任务切换 140
5.6 μC/OS-Ⅱ的时钟 141
5.6.1 μC/OS-Ⅱ时钟节拍中断服务程序 141
5.6.2 μC/OS-Ⅱ的时间管理 142
5.7 μC/OS-Ⅱ的同步与通信 143
5.7.1 同步与通信的基本概念 143
5.7.2 事件控制块ECB 143
5.7.3 信号量 145
5.7.4 消息邮箱 148
5.7.5 消息队列 149
5.8 μC/OS-Ⅱ的内存管理 149
5.9 μC/OS-Ⅱ的移植 151
5.10本章小结 157
习题与思考题 158
第6章 嵌入式系统架构 160
6.1 S3C44B0X处理器 160
6.1.1 功能模块与总线结构 160
6.1.2 设备控制器 161
6.1.3 设备控制器设备侧接口 162
6.1.4 设备控制器寄存器 166
6.2 嵌入式系统硬件结构 170
6.2.1 单总线结构 170
6.2.2 多总线结构 171
6.3 嵌入式系统软件结构 173
6.3.1 单任务结构 174
6.3.2 多任务结构 177
6.4 本章小结 178
习题与思考题 178
第7章 嵌入式系统硬件与底层驱动程序设计 179
7.1 功能模块划分 179
7.2 电源电路模块 180
7.3 复位电路模块 181
7.4 JTAG接口模块 182
7.5 时钟与电源管理模块 183
7.5.1 时钟产生电路 183
7.5.2 电源管理 186
7.5.3 控制寄存器 188
7.5.4 驱动程序 189
7.5.5 时钟电路电磁兼容设计 189
7.6 存储器模块 190
7.6.1 RAM 190
7.6.2 ROM 192
7.6.3 存储器芯片 194
7.6.4 存储空间规划 195
7.6.5 存储器电路设计 197
7.6.6 SDRAM驱动程序设计 198
7.6.7 Flash驱动程序 205
7.7 RS-232接口模块 207
7.7.1 RS-232接口介绍 207
7.7.2 UART接口介绍 208
7.7.3 RS-232接口电路设计 211
7.7.4 RS-232接口驱动程序设计 211
7.8 LED与GPIO模块 217
7.8.1 GPIO控制寄存器 217
7.8.2 GPIO初始化 220
7.8.3 LED设计 221
7.9 中断控制器模块 222
7.9.1 外部中断接口分配 223
7.9.2 中断控制器的功能 223
7.9.3 IRQ中断模式 231
7.9.4 中断处理程序 233
7.10定时器模块 234
7.10.1 PWM定时器 234
7.10.2 看门狗定时器 237
7.10.3 实时时钟 239
7.11键盘模块 240
7.12 8段数码管模块 245
7.13 EEPROM与ⅡC总线接口模块 247
7.13.1 ⅡC总线接口协议 247
7.13.2 AT24LC04 249
7.13.3 ⅡC总线控制器 250
7.13.4 ⅡC接口电路 250
7.13.5 ⅡC总线控制寄存器 251
7.13.6 驱动程序设计 252
7.14 LCD模块 255
7.14.1 LCD工作原理 255
7.14.2 液晶显示器驱动电路 256
7.14.3 S3C44B0X LCD控制器 256
7.14.4 驱动程序 264
7.15 A/D转换与触摸屏模块 265
7.15.1 S3C44B0X A/D转换器 266
7.15.2 触摸屏工作原理 267
7.15.3 触摸屏检测电路 268
7.15.4 驱动程序 269
7.16以太网接口模块 271
7.16.1 以太网MAC与PHY 271
7.16.2 以太网中的TCP/IP协议 273
7.16.3 以太网接口电路设计 275
7.16.4 以太网接口驱动程序设计 276
7.17 USB接口模块 289
7.18 IIS接口模块 293
7.18.1 IIS总线 293
7.18.2 S3C44B0X IIS总线接口 295
7.18.3 IIS总线接口电路 297
7.18.4 驱动程序 300
7.19本章小结 308
习题与思考题 311
第8章 嵌入式系统应用程序设计 313
8.1 可执行文件的产生 313
8.2 链接与装入程序 314
8.3 启动程序Bootloader 318
8.4 单任务应用程序 327
8.5 多任务应用程序 329
8.6 本章小结 332
习题与思考题 332
参考文献 333