第1章 嵌入式系统导论 1
1.1 工作场景导入 2
1.1.1 工作场景一 2
1.1.2 工作场景二 2
1.2 嵌入式系统的应用 3
1.2.1 无处不在的嵌入式系统 3
1.2.2 嵌入式系统的历史 4
1.2.3 嵌入式系统的定义和特点 5
1.3 嵌入式系统的发展 5
1.3.1 嵌入式系统硬件平台的发展 6
1.3.2 嵌入式系统软件的特点 8
1.3.3 嵌入式系统软件的开发 9
1.3.4 嵌入式系统软件平台的发展及分类 10
1.4 嵌入式系统软件开发环境 13
1.4.1 交叉编译 13
1.4.2 集成开发环境简介 13
1.4.3 集成开发环境的使用 14
1.4.4 调试器 23
1.5 回到工作场景 24
1.5.1 回到工作场景一 25
1.5.2 回到工作场景二 25
1.6 工作实训营 26
1.7 习题 27
第2章 ARM体系结构与指令系统 29
2.1 工作场景导入 30
2.1.1 工作场景一 30
2.1.2 工作场景二 30
2.1.3 工作场景三 30
2.2 ARM9处理器简介 31
2.2.1 ARM简介 31
2.2.2 ARM处理器内核及其体系结构 31
2.2.3 ARM处理器核 35
2.3 ARM9编程模型 36
2.3.1 ARM9的数据类型 36
2.3.2 字对齐 38
2.3.3 大端存储和小端存储 39
2.3.4 ARM9处理器工作模式 40
2.3.5 ARM9处理器的工作状态 41
2.3.6 内部寄存器组织 41
2.3.7 ARM9的异常类型 45
2.4 ARM9微处理器的寻址方式 46
2.4.1 指令和指令格式 47
2.4.2 ARM9微处理器的寻址方式 49
2.5 ARM9指令集 53
2.5.1 汇编语言的地位 53
2.5.2 ARM9指令集的特点 53
2.5.3 数据传送指令、算术运算指令、比较指令和跳转指令 54
2.5.4 寄存器加载/存储指令和伪指令 61
2.5.5 程序状态寄存器访问指令和逻辑运算指令 74
2.6 Thumb指令集 77
2.7 回到工作场景 78
2.7.1 回到工作场景一 78
2.7.2 回到工作场景二 79
2.7.3 回到工作场景三 79
2.8 工作实训营 80
2.8.1 训练实例1 80
2.8.2 训练实例2 82
2.9 习题 83
第3章 嵌入式程序设计语言 87
3.1 工作场景导入 88
3.1.1 工作场景一 88
3.1.2 工作场景二 88
3.2 ARM汇编中的伪操作 88
3.2.1 常用伪操作的分类 90
3.2.2 常用伪操作的用法 91
3.3 汇编语言程序设计 99
3.3.1 汇编语言程序的编程规则 100
3.3.2 汇编语言程序的变量 101
3.3.3 子程序的实现及调用 103
3.4 嵌入式C语言程序设计 104
3.4.1 嵌入式C语言基础 104
3.4.2 嵌入式C语言编程 111
3.5 C语言和汇编语言混合编程 113
3.5.1 在C语言程序中内嵌汇编指令 114
3.5.2 在C语言程序中调用汇编程序 115
3.5.3 在汇编语言程序中调用C代码 117
3.5.4 汇编语言中的函数定义 118
3.5.5 小结 118
3.6 回到工作场景 118
3.6.1 回到工作场景一 119
3.6.2 回到工作场景二 124
3.7 工作实训营 125
3.8 习题 126
第4章 S3C2410概述及应用实例 127
4.1 工作场景导入 128
4.1.1 工作场景一 128
4.1.2 工作场景二 128
4.2 Samsung S3C2410简介 128
4.2.1 认识S3C2410 128
4.2.2 S3C2410的体系结构 129
4.2.3 S3C2410的总线 132
4.3 实验开发系统 133
4.3.1 基于S3C2410的实验开发系统 134
4.3.2 实验开发系统的软件开发环境 136
4.3.3 嵌入式软件开发步骤 137
4.4 S3C2410接口功能示例 142
4.4.1 S3C2410与十字路口交通控制系统 142
4.4.2 S3C2410与MP3播放器 143
4.4.3 软硬件协同设计 143
4.4.4 嵌入式系统的接口设计 144
4.4.5 ARM处理器选择的一般原则 147
4.5 回到工作场景 148
4.5.1 回到工作场景一 149
4.5.2 回到工作场景二 150
4.6 工作实训营 151
4.6.1 训练实例 151
4.6.2 工作实践常见问题解析 152
4.7 习题 152
第5章 存储器接口设计 155
5.1 工作场景导入 156
5.2 嵌入式系统的存储系统 156
5.2.1 存储系统组织结构 156
5.2.2 常用存储器简介 157
5.3 S3C2410存储空间 160
5.3.1 S3C2410处理器的存储器映射 160
5.3.2 外接存储器的地址空间划分 161
5.3.3 S3C2410存储空间的使用 162
5.3.4 S3C2410存储器控制器的特性 164
5.4 存储器控制 164
5.4.1 控制存储器的特殊功能寄存器 164
5.4.2 SDRAM存储器接口 165
5.4.3 NAND Flash存储器接口 170
5.4.4 NOR Flash存储器接口 175
5.5 回到工作场景 176
5.6 工作实训营 178
5.7 习题 179
第6章 中断系统设计 181
6.1 工作场景导入 182
6.2 基础知识 182
6.2.1 中断方式 182
6.2.2 中断的分类 183
6.2.3 中断源和中断优先级 184
6.2.4 中断向量和中断向量表 184
6.2.5 中断号 185
6.2.6 中断服务程序 186
6.3 中断处理流程 186
6.3.1 建立中断向量表 187
6.3.2 登记中断 187
6.3.3 中断初始化 189
6.3.4 端口初始化 191
6.3.5 请求中断 192
6.3.6 使能中断 194
6.3.7 中断服务程序 194
6.3.8 清除中断 195
6.4 中断优先级 195
6.4.1 中断优先级判别 195
6.4.2 小结 198
6.5 回到工作场景 198
6.6 工作实训营 202
6.6.1 训练实例 202
6.6.2 工作实践常见问题解析 203
6.7 习题 204
第7章 DMA机制 207
7.1 工作场景导入 208
7.2 基础知识 208
7.2.1 DMA方式 208
7.2.2 DMA请求源 209
7.2.3 DMA控制器 209
7.2.4 DMA请求模式 210
7.2.5 DMA传输模式 210
7.2.6 DMA服务模式 211
7.2.7 DMA操作过程(DMA状态) 211
7.3 DMA的处理流程 212
7.3.1 DMA的操作 212
7.3.2 DMA操作的初始化 213
7.3.3 DMA中断 218
7.3.4 DMA状态寄存器 218
7.4 回到工作场景 219
7.5 工作实训营 222
7.6 习题 223
第8章 定时/计数器接口设计 225
8.1 工作场景导入 226
8.1.1 工作场景一 226
8.1.2 工作场景二 226
8.1.3 工作场景三 227
8.2 定时/计数器的原理 227
8.2.1 定时/计数器 227
8.2.2 看门狗定时器概述 228
8.2.3 Timer部件概述 229
8.3 实时时钟 229
8.3.1 RTC部件 230
8.3.2 S3C24 10 RTC的主要特点 231
8.3.3 S3C2410 RTC的基本操作 231
8.4 回到工作场景一 242
8.5 看门狗定时器 248
8.5.1 看门狗定时器的原理 248
8.5.2 看门狗定时器的基本操作 249
8.6 回到工作场景二 252
8.7 Timer部件 253
8.7.1 基础知识 253
8.7.2 Timer部件的基本原理 254
8.7.3 S3C2410的Timer部件 255
8.7.4 Timer部件的基本操作 255
8.8 回到工作场景三 259
8.9 工作实训营 261
8.9.1 训练实例1 261
8.9.2 训练实例2 263
8.9.3 工作实践常见问题解析 265
8.10 习题 265
第9章 I/O端口设计 267
9.1 工作场景导入 268
9.2 基础知识&. 268
9.2.1 数字量输入/输出 268
9.2.2 I/O端口控制方式 269
9.2.3 I/O端口寻址方式 270
9.2.4 S3C2410的GPIO端口和引脚 271
9.2.5 端口功能定义 272
9.3 GPIO的操作 277
9.3.1 GPIO的处理流程 277
9.3.2 外部中断控制寄存器 280
9.3.3 外部中断的其他寄存器 281
9.3.4 端口其他寄存器 282
9.4 回到工作场景 282
9.5 工作实训营 284
9.5.1 训练实例1 284
9.5.2 训练实例2 285
9.5.3 工作实践常见问题解析 288
9.6 习题 288
第10章 异步串行通信接口 289
10.1 工作场景导入 290
10.1.1 工作场景一 290
10.1.2 工作场景二 290
10.2 时钟系统相关的基础知识 291
10.2.1 时钟控制 291
10.2.2 时钟源选择 291
10.2.3 FCLK、HCLK和PCLK 293
10.3 时钟配置 293
10.3.1 锁定时间计数器寄存器 293
10.3.2 配置APB和AHB总线时钟 294
10.3.3 配置系统主时钟 295
10.4 回到工作场景一 296
10.5 异步串行通信接口的基础知识 297
10.5.1 异步串行通信接口概述 297
10.5.2 同步通信方式和异步通信方式 299
10.5.3 串行通信相关的基本概念 299
10.5.4 RS-232串行接口 301
10.5.5 RS-485标准 303
10.5.6 S3C2410异步串行接口 303
10.6 串行通信处理流程 303
10.6.1 端口初始化 304
10.6.2 数据通信属性设置 305
10.6.3 串口初始化设置 306
10.6.4 数据接收和发送 311
10.7 回到工作场景二 313
10.8 工作实训营 315
10.8.1 训练实例 315
10.8.2 工作实践常见问题解析 316
10.9 习题 317
第11章 人机接口及其他接口设计 319
11.1 工作场景导入 320
11.1.1 工作场景一 320
11.1.2 工作场景二 321
11.2 LED显示器接口 321
11.2.1 LED显示器件基本知识 321
11.2.2 单个LED显示器件 321
11.2.3 数码管 322
11.2.4 点阵式LED显示器 325
11.3 回到工作场景一 326
11.4 键盘接口 327
11.4.1 键盘实现方案 327
11.4.2 按键的抖动和串键 328
11.4.3 按键识别方法 329
11.4.4 产生键值方法 330
11.4.5 键盘接口的具体实现 331
11.5 步进电机 332
11.5.1 步进电机概述 332
11.5.2 步进电机的操作 333
11.6 A/D转换器接口 334
11.6.1 A/D转换基础知识 334
11.6.2 S3C2410 A/D转换器 336
11.6.3 S3C2410 A/D转换器的操作 337
11.7 回到工作场景二 340
11.8 LCD控制器 343
11.8.1 LCD显示的基本原理 343
11.8.2 S3C2410 LCD接口及控制方法 344
11.8.3 LCD的显示方法 346
11.8.4 LCD控制寄存器及设置 347
11.9 IIC接口 354
11.9.1 IIC接口相关的基本知识 354
11.9.2 IIC的操作 357
11.10 工作实训营 361
11.10.1 训练实例1 361
11.10.2 训练实例2 363
11.11 习题 366
参考文献 367