第1章 嵌入式系统基础知识 1
1.1嵌入式系统的概述 1
1.1.1嵌入式系统简介 1
1.1.2嵌入式系统的特点 2
1.1.3嵌入式系统的发展 3
1.2嵌入式系统的组成 5
1.2.1嵌入式系统的硬件组成 5
1.2.2嵌入式系统的软件组成 6
1.3嵌入式操作系统举例 6
1.3.1商业版嵌入式操作系统 6
1.3.2开源版嵌入式操作系统 7
1.4嵌入式系统开发概述 8
小结 13
思考与练习 13
第2章 ARM技术概述 14
2.1 ARM体系结构的技术特征及发展 14
2.1.1 ARM公司简介 14
2.1.2 ARM技术特征 15
2.1.3 ARM体系结构的发展 16
2.2 ARM微处理器简介 18
2.2.1 ARM7处理器系列 19
2.2.2 ARM9处理器系列 19
2.2.3 ARM9E处理器系列 20
2.2.4 ARM 11处理器系列 20
2.2.5 SecurCore处理器系列 20
2.2.6 StrongARM和Xscale处理器系列 21
2.2.7 MPCore处理器系列 21
2.2.8 Cortex处理器系列 21
2.3 ARM微处理器结构 23
2.4 ARM微处理器的应用选型 23
2.4.1 ARM芯片选择的一般原则 24
2.4.2选择一款适合教学的ARM芯片 24
2.5 Coreex-A8内部功能及特点 28
2.6数据类型 28
2.6.1 ARM的基本数据类型 28
2.6.2浮点数据类型 29
2.6.3存储器大/小端 29
2.7 Cortex-A8内核工作模式 30
2.8 Cortex-A8存储系统 31
2.8.1协处理器 32
2.8.2存储管理单元 33
2.8.3高速缓冲存储器 33
2.8.4 NEON技术 34
2.8.5安全域(TrustZone) 34
2.9流水线 34
2.9.1流水线的概念与原理 34
2.9.2流水线的分类 35
2.9.3影响流水线性能的因素 36
2.10寄存器组织 37
2.11程序状态寄存器 39
2.12 SAMSUNG S5PC 100处理器介绍 41
小结 43
思考与练习 43
第3章 ARM的指令集合 44
3.1 ARM指令集 44
3.1.1数据操作指令 44
3.1.2乘法指令 51
3.1.3 Load/Store指令 53
3.1.4 跳转指令 59
3.1.5状态操作指令 62
3.1.6协处理器指令 63
3.1.7异常产生指令 65
3.2 ARM指令的寻址方式 67
小结 71
思考与练习 71
第4章 GNU汇编伪指令集 72
4.1 GNU汇编器的平台无关伪指令 72
4.1.1伪指令概念 72
4.1.2符号定义伪指令 73
4.1.3数据定义伪指令 74
4.1.4汇编控制伪操作 76
4.1.5杂项伪操作 78
4.2 GNU汇编器支持的ARM伪指令 80
4.2.1 ADR伪指令 80
4.2.2 ADRL伪指令 80
4.2.3 LDR伪指令 81
4.3 ARM汇编语言的程序结构 82
4.3.1汇编语言的程序格式 82
4.3.2汇编语言的子程序调用 82
4.3.3过程调用标准AAPCS/ATPCS 83
4.3.4汇编语言程序设计举例 84
4.4汇编语言与C语言的混合编程 84
4.4.1 GNU内联汇编 85
4.4.2 C和汇编的混合编程 87
小结 88
思考与练习 89
第5章 ARM集成开发环境搭建 90
5.1 FS-JTAG仿真器介绍 90
5.2开发环境搭建 91
5.2.1开发工具的安装 91
5.2.2创建一个新工程 93
5.2.3调试工程 95
小结 96
思考与练习 96
第6章 GPIO编程 97
6.1 GPIO功能介绍 97
6.2 S5PC 100芯片的GPIO控制器介绍 98
6.2.1特性 98
6.2.2 GPIO分组预览 98
6.2.3 S5PC 100的GPIO常用寄存器分类 98
6.2.4 S5PC100I/O接口常用寄存器详解 99
6.3 S5PC100的GPIO的实例 100
6.3.1电路原理 101
6.3.2寄存器设置 101
6.3.3程序编写 101
小结 102
思考与练习 102
第7章 ARM系统时钟及编程 103
7.1 S5PC100时钟域的划分 103
7.2 S5PC100时钟的产生过程分析 104
7.2.1时钟的产生 104
7.2.2模块对应的时钟域 105
7.3 S5PC100时钟源的选择 105
7.3.1时钟来自于外部引脚 105
7.3.2时钟来自于时钟管理单元(CMU) 106
7.4 S5PC100时钟的配置 106
7.5 S5PC100时钟配置寄存器描述 108
7.6 S5PC100时钟源配置示例 109
小结 110
思考与练习 110
第8章 ARM异常处理及编程 111
8.1 ARM异常中断处理概述 111
8.2 ARM体系异常种类 112
8.3 ARM异常的优先级 116
8.4 ARM处理器模式和异常 117
8.5 ARM异常响应和处理程序返回 117
8.5.1中断响应的概念 117
8.5.2 ARM异常响应流程 118
8.5.3从异常处理程序中返回 119
8.6 ARM系统中异常中断处理程序的安装 121
8.7 ARM的SWI异常中断处理程序设计 121
8.8 FIQ和IRQ异常中断程序设计 124
8.9基于Cortex-A8内核的S5PC100异常程序设计 125
8.9.1 S5PC100中断机制分析 125
8.9.2 S5PC100中断处理程序实例 128
小结 132
思考与练习 132
第9章 串行通信接口 133
9.1串行通信 133
9.1.1串行通信与并行通信的概念 133
9.1.2异步串行方式的特点 134
9.1.3异步串行方式的数据格式 134
9.1.4同步串行方式的特点 134
9.1.5同步串行方式的数据格式 134
9.1.6比特率、比特率因子与位周期 135
9.1.7 RS-232C串口规范 135
9.1.8 RS-232C接线方式 137
9.2 S5PC100异步串行通信 137
9.2.1 S5PC100串口控制器概述 137
9.2.2 S5PC100串口控制器寄存器 138
9.3串口发送接收程序示例 142
9.3.1电路连接 142
9.3.2程序的编写 142
9.3.3调试与运行程序 145
小结 145
思考与练习 145
第10章 PWM定时器 146
10.1 S5PC100 PWM定时器 146
10.1.1 PWM定时器概述 146
10.1.2 PWM定时器特点 147
10.1.3 PWM定时器的寄存器 148
10.1.4 PWM定时器示例 152
10.2 S5PC100看门狗定时器 154
10.2.1 S5PC100看门狗定时器概述 154
10.2.2看门狗定时器寄存器 155
10.2.3看门狗定时器程序编写 156
小结 157
思考与练习 157
第11章 A/D转换器 158
11.1 A/D转换器原理 158
11.1.1 A/D转换基础 158
11.1.2 A/D转换的技术指标 159
11.1.3 A/D转换器类型 160
11.1.4 A/D转换的一般步骤 164
11.2 S5PC 100 A/D转换器 164
11.2.1 S5PC100 A/D转换器概述 164
11.2.2 S5PC100 A/D控制器寄存器 165
11.3 A/D转换器示例 167
11.3.1电路连接 167
11.3.2程序的编写 167
11.3.3调试与运行结果 168
小结 168
思考与练习 168
第12章 实时时钟RTC 169
12.1 RTC介绍 169
12.2 RTC控制器 170
12.3 RTC控制器寄存器详解 170
12.4 RTC应用示例 173
小结 174
思考与练习 174
第13章 I2C总线 175
13.1 I2C总线 175
13.1.1 I2C总线介绍 175
13.1.2 I2C总线术语 176
13.1.3 I2C总线位传输 176
13.1.4 I2C总线数据传输 177
13.1.5 I2C总线寻址方式 177
13.1.6快速和高速模式 178
13.2 I2C总线控制器 179
13.2.1 S5PC100下的I2C控制器介绍 179
13.2.2 I2C总线控制寄存器详解 179
13.3 I2C总线应用示例 180
13.3.1电路原理分析 180
13.3.2代码实现 182
小结 183
思考与练习 183
第14章 存储器接口 184
14.1 Flash ROM介绍 184
14.2 NOR Flash操作 186
14.2.1 AM29LV 160D芯片介绍 186
14.2.2 AM29LV 160D字编程操作 187
14.2.3 AM29LV 160D扇区/块擦除操作 188
14.2.4 AM29LV 160D芯片擦除操作 188
14.2.5 AM29LV 160D与S5PC100的接口电路 189
14.2.6 AM29LV 160D存储器的程序设计 190
14.3 NAND Flash操作 192
14.3.1芯片介绍 192
14.3.2读操作过程 193
14.3.3擦除操作过程 194
14.3.4写操作过程 195
14.4 S5PC100中NAND Flash控制器的操作 195
14.4.1 S5PC100中NAND Flash控制器概述 195
14.4.2 S5PC100中NAND Flash控制器寄存器详解 196
14.5 S5PC100 NAND Flash接口电路与程序设计 198
14.5.1 K9F2G080U和S5PC100的接口电路 198
14.5.2 S5PC100控制K9F2G080U的程序设计 198
小结 202
思考与练习 202
第15章 SPI接口 203
15.1 SPI总线协议理论 203
15.1.1协议简介 203
15.1.2协议内容 203
15.2 SPI控制器详解 205
15.2.1 S5PC 100的SPI控制器简介 205
15.2.2时钟源控制 206
15.2.3寄存器详解 206
15.3 SPI接口应用示例 208
小结 214
思考与练习 214
第16章 DMA控制器 215
16.1 PL330原理概述 215
16.1.1 DMAC简述 215
16.1.2 S5PC100下的DMAC模型 216
16.1.3 PL330简述 217
16.2 PL330详解 219
16.2.1 PL330指令集 219
16.2.2相关寄存器详解 223
16.3 S5PC100 PL330示例 224
小结 228
思考与练习 228
第17章 LCD接口技术 229
17.1 LCD控制器原理概述 229
17.1.1 LCD控制器介绍 229
17.1.2 S5PC 100的LCD控制器介绍 230
17.1.3 S5PC100的LCD控制器操作 231
17.1.4 LCD控制器寄存器 233
17.2 LCD控制器应用示例 237
小结 241
思考与练习 241
第18章 CAMIF接口技术 242
18.1 OV9650介绍 242
18.1.1芯片功能描述 242
18.1.2 OV9650物理参数 243
18.1.3 OV9650寄存器详解 244
18.2 SCCB总线 246
18.2.1 SCCB协议介绍 246
18.2.2 SCCB的总线编程 247
18.3 CAMIF接口详解 248
18.3.1基于S5PC100的CAMIF接口介绍 248
18.3.2 S5PC100 CAMIF寄存器详解 250
18.3.3 CAMIF应用示例 253
小结 256
思考与练习 256
参考文献 257