第1章 嵌入式系统概述 1
1.1 嵌入式系统的概念与组成 1
1.1.1 嵌入式系统的定义 1
1.1.2 嵌入式系统的应用过程和发展趋势 1
1.1.3 嵌入式系统的组成 2
1.2 嵌入式微处理器的结构与类型 3
1.2.1 嵌入式微控制器 3
1.2.2 嵌入式DSP处理器 4
1.2.3 嵌入式微处理器 4
1.2.4 嵌入式片上系统 5
1.3 计算机组成、体系结构与嵌入式处理器 5
1.3.1 冯·诺依曼结构与哈佛结构 6
1.3.2 精简指令集计算机(RISC) 6
1.3.3 流水线计算机 7
1.3.4 嵌入式微处理器的信息存储方式 7
1.4 嵌入式应用系统的开发流程 9
习题 10
第2章 ARM微处理器体系结构 11
2.1 ARM微处理器的体系结构与特点 11
2.1.1 ARM微处理器体系的结构 11
2.1.2 ARM微处理器体系的特点 11
2.2 ARM微处理器系列介绍及应用选型 12
2.2.1 ARM7微处理器系列 12
2.2.2 ARM9微处理器系列 13
2.2.3 ARM更为高级的微处理器系列 13
2.2.4 ARM微处理器的应用选型 13
2.3 ARM的总线系统与接口 14
2.3.1 ARM的总线系统 15
2.3.2 ARM的JTAG调试接口 15
2.3.3 ARM的协处理器接口 16
2.4 ARM9体系结构的存储器组织 17
2.4.1 ARM体系结构的存储器空间 17
2.4.2 ARM9中的大端存储与小端存储 17
2.4.3 I/O端口的访问方式 18
2.5 ARM9微处理器的工作状态与运行模式 19
2.5.1 ARM9微处理器的工作状态 19
2.5.2 ARM9微处理器的运行模式 19
2.6 ARM9体系结构的寄存器组织 20
2.6.1 通用寄存器 21
2.6.2 程序状态寄存器 22
2.7 ARM9微处理器的异常 24
2.7.1 ARM9微处理器异常的概念 24
2.7.2 ARM体系结构的异常类型 24
2.7.3 各种异常类型的含义 25
2.7.4 异常的响应过程 26
2.7.5 应用程序中的异常处理 27
习题 27
第3章 ARM微处理器指令系统 28
3.1 ARM9的指令格式 28
3.1.1 ARM9微处理器的指令格式与特点 28
3.1.2 指令执行的条件码 30
3.2 ARM9微处理器指令的寻址方式与应用 31
3.2.1 立即数寻址方式与应用示例 31
3.2.2 寄存器寻址方式与应用示例 32
3.2.3 寄存器偏移寻址方式与应用示例 32
3.2.4 寄存器间接寻址方式与应用示例 34
3.2.5 基址+变址寻址方式与应用示例 34
3.2.6 多寄存器寻址方式与应用示例 35
3.2.7 堆栈寻址方式与应用示例 35
3.2.8 块复制寻址方式与应用示例 36
3.2.9 相对寻址方式与应用示例 37
3.3 ARM9指令系统与应用 37
3.3.1 ARM数据处理指令与应用示例 37
3.3.2 寄存器装载及存储指令与应用示例 43
3.3.3 ARM跳转指令与应用示例 47
3.3.4 ARM杂项指令与应用示例 49
3.3.5 杂项指令在Bootloader中配置各种异常栈顶指针综合应用示例 52
3.3.6 ARM协处理器指令与应用示例 53
3.3.7 ARM伪指令与应用示例 54
习题 56
第4章 微处理器ARM程序设计 58
4.1 ARM汇编伪指令 58
4.1.1 数据常量定义伪指令 58
4.1.2 数据变量定义伪指令 59
4.1.3 内存分配伪指令 60
4.1.4 汇编控制伪指令 62
4.1.5 汇编程序中常用伪指令 64
4.1.6 汇编语言中的运算符与表达式 67
4.1.7 Linux操作系统中GNU开发环境下的伪指令 69
4.2 ARM汇编语言程序设计 71
4.2.1 ARM汇编中的源文件类型 71
4.2.2 ARM汇编语言的语句格式 72
4.2.3 ARM汇编语言的程序结构 72
4.3 ARM汇编语言与C语言混合编程 74
4.3.1 基本的ATPCS 75
4.3.2 汇编语言程序调用C语言程序 76
4.3.3 C语言程序中调用汇编语言程序 76
4.3.4 C语言程序中内嵌汇编语言程序 77
4.3.5 在汇编程序中访问C语言程序变量 78
4.3.6 嵌入式C语言中的几个特殊关键字 79
4.4 ARM混合编程综合应用举例 80
习题 82
第5章 微处理器S3C2410A体系结构 83
5.1 微处理器S3C2410A介绍 83
5.1.1 微处理器S3C2410A的体系结构 83
5.1.2 微处理器S3C2410A的内部结构 83
5.1.3 微处理器S3C2410A的技术特点 84
5.2 微处理器S3C2410A存储器控制器特性与空间分布 86
5.2.1 微处理器S3C2410A存储器控制器特性 86
5.2.2 微处理器S3C2410A存储器空间分布 87
5.3 微处理器S3C2410A时钟电路与时钟频率管理 88
5.3.1 微处理器S3C2410A外部时钟电路 88
5.3.2 微处理器S3C2410A锁相环(PLL) 89
5.3.3 微处理器S3C2410A时钟分频控制 90
5.3.4 微处理器S3C2410A时钟频率管理与应用示例 91
5.3.5 S3C2410A工作频率的设置与分频编程示例 93
5.4 微处理器S3C2410A复位电路与电源电路 94
5.4.1 微处理器S3C2410A复位电路 95
5.4.2 微处理器S3C2410A电源电路 96
5.5 微处理器S3C2410A电源功耗管理 96
5.5.1 电源功耗管理模式及时钟功率配给 97
5.5.2 慢速控制寄存器(CLKSLOW)的属性及其位功能 97
5.5.3 电源功耗管理状态转换图 98
习题 99
第6章 嵌入式系统应用产品开发平台 100
6.1 硬件实验开发平台 100
6.1.1 FL2440开发板硬件资源简介 100
6.1.2 PC与开发板的硬件连接 101
6.2 软件开发平台 101
6.2.1 交叉开发环境简介 101
6.2.2 ADS1.2集成开发环境简介 101
6.2.3 编写应用程序需要使用的头文件 103
6.2.4 CodeWarrior IDE集成开发环境的使用 104
6.2.5 AXD调试器的使用 108
习题 113
第7章 嵌入式存储器系统及扩展接口电路 114
7.1 嵌入式存储器系统结构组成 114
7.1.1 嵌入式存储器的层次结构及特点 114
7.1.2 ARM9高速缓冲存储器(Cache) 115
7.1.3 S3C2410A存储器管理单元(MMU) 115
7.1.4 S3C2410A主存储器分布以及使用的存储器类型 117
7.2 存储器控制寄存器 119
7.2.1 存储器控制寄存器介绍 119
7.2.2 主存储器芯片综合配置编程示例 123
7.3 8位/16位/32位内存储器芯片扩展设计 124
7.3.1 8位存储器芯片扩展设计 124
7.3.2 16位存储器芯片扩展设计 126
7.4 Bank0闪存Nor Flash接口设计 128
7.4.1 Nor Flash与Nand Flash的区别 128
7.4.2 Nor Flash实用电路设计 129
7.5 Bank0闪存Nand Flash存储器接口设计 130
7.5.1 Nand Flash的结构组成 131
7.5.2 Nand Flash的引导、工作模式 133
7.5.3 Nand Flash控制功能寄存器 134
7.5.4 Nand Flash的实用电路与程序设计 136
7.6 SDRAM存储器的电路设计 138
习题 140
第8章 通用I/O端口和中断系统 141
8.1 S3C2410A的通用I/O端口 141
8.1.1 I/O端口的功能 141
8.1.2 通用I/O端口功能寄存器 145
8.1.3 其他端口功能寄存器 150
8.1.4 通用L/O端口程序综合设计示例 152
8.2 微处理器S3C2410A中断系统程序设计 154
8.2.1 S3C2410A中断系统的树型结构 154
8.2.2 S3C2410A的中断源 156
8.2.3 S3C2410A中断请求过程 156
8.2.4 ARM中断控制寄存器 157
8.2.5 子中断控制寄存器 162
8.2.6 外部中断功能寄存器 164
8.3 S3C2410A中断服务程序的设计 167
8.3.1 S3C2410A中断服务程序实现框架之一:普通实现方式 167
8.3.2 S3C2410A中断服务程序实现框架之二:基于中断向量的实现方式 169
8.3.3 子中断服务程序的实现框架 173
8.3.4 外部中断服务程序的实现框架 174
8.3.5 中断服务程序综合应用示例 174
习题 176
第9章 微处理器S3C2410A的定时器/计数器 177
9.1 S3C2410A定时器/计数器原理 177
9.2 看门狗定时器(WATCHDOG) 178
9.2.1 看门狗定时器的工作原理 178
9.2.2 看门狗特殊功能控制寄存器 178
9.2.3 看门狗定时器应用编程示例 180
9.3 具有脉宽调制(PWM)的定时器(Timer) 181
9.3.1 定时器Timer概述 181
9.3.2 Timer部件的操作 181
9.3.3 Timer特殊功能控制寄存器 185
9.3.4 定时器Timer编程示例 187
9.4 实时时钟(RTC) 188
9.4.1 RTC概述 189
9.4.2 RTC功能寄存器 190
9.4.3 RTC应用程序设计 192
习题 194
第10章 A-D转换、LCD触摸屏与液晶显示器 195
10.1 S3C2410A的模-数转换器与程序设计 195
10.1.1 ADC的分类与工作原理 195
10.1.2 ADC的主要技术参数 198
10.1.3 S3C2410A的ADC主要性能指标 199
10.1.4 S3C2410A的ADC和触摸屏接口电路 199
10.1.5 S3C2410A中ADC的功能寄存器 200
10.1.6 S3C2410A的ADC程序设计 202
10.2 LCD触摸屏原理与程序设计 203
10.2.1 LCD电阻式触摸屏的工作原理 203
10.2.2 S3C2410A与LCD触摸屏接口电路 204
10.2.3 使用触摸屏的配置过程 204
10.2.4 触摸屏编程接口模式 205
10.2.5 S3C2410A的LCD触摸屏程序设计 206
10.3 液晶显示器(LCD)与程序设计 208
10.3.1 LCD的显示原理与分类 208
10.3.2 S3C2410A LCD控制器的特性 209
10.3.3 S3C2410A LCD控制器的内部结构和显示数据格式 210
10.3.4 S3C2410A LCD功能控制寄存器 212
10.3.5 TFT-LCD控制器操作 220
10.3.6 LCD控制寄存器的配置 225
10.3.7 S3C2410A液晶显示器LCD程序设计 225
习题 235
第11章 嵌入式系统I/O总线接口 236
11.1 串行通信接口原理与S3C2410A的UART编程 236
11.1.1 数字通信的分类与特点 236
11.1.2 串行通信标准 237
11.1.3 S3C2410A的UART简介与结构 240
11.1.4 S3C2410A的UART操作 242
11.1.5 S3C2410A的UART功能寄存器 243
11.1.6 S3C2410A的UART编程示例 248
11.2 I2C接口原理与编程 255
11.2.1 I2C总线接口原理 255
11.2.2 I2C的总线协议 256
11.2.3 S3C2410A的I2C接口 257
11.2.4 I2C总线专用寄存器 259
11.2.5 S3C2410A处理器I2C总线与E2PROM芯片AT24C02应用编程示例 261
11.2.6 仿真I2C总线的MCS-51单片机实现程序 266
11.3 SPI接口原理与编程 267
11.3.1 SPI接口原理 267
11.3.2 S3C2410A的SPI接口电路 269
11.3.3 SPI功能寄存器 271
11.3.4 SPI总线接口编程流程 274
11.3.5 S3C2410A的SPI与内置E2PROM的看门狗芯片X5045应用编程示例 274
习题 280
第12章 嵌入式应用程序设计举例 282
12.1 嵌入式系统启动引导程序 282
12.1.1 启动引导程序的作用 282
12.1.2 启动引导程序的任务 283
12.1.3 引导程序的启动流程 283
12.2 系统启动引导程序的设计 284
12.2.1 外部文件的引用 284
12.2.2 常量的定义 285
12.2.3 S3C2410A的异常处理 287
12.2.4 主体程序 289
12.2.5 调用C语言程序 292
12.3 应用程序Main函数的实现 293
12.3.1 应用程序中的文件引用和变量定义 293
12.3.2 实时时钟RTC主要函数代码 293
12.3.3 触摸屏主要函数代码 294
12.3.4 数字温度传感器DS18B20主要函数设计 295
12.3.5 LCD主要函数设计 299
12.3.6 应用系统测试函数的设计 301
习题 301
第13章 ARM9实验项目及内容 302
13.1 汇编语言实验项目及内容 302
13.1.1 熟悉开发环境与汇编编程 302
13.1.2 ARM乘法指令实验 303
13.1.3 寄存器装载及存储汇编指令实验 304
13.1.4 算术加/减法汇编指令实验 305
13.1.5 ARM微处理器工作模式与堆栈指针设置实验 307
13.2 C语言实验项目及内容 309
13.2.1 ARM C/C++语言实验1 309
13.2.2 ARM C/C++语言实验2 310
13.3 混合编程实验项目及内容 310
13.3.1 汇编-C语言数据块复制编程实验 311
13.3.2 C-汇编语言整型4参数加法编程实验 311
13.3.3 汇编-C语言BCD码编程实验 312
13.4 FL2440开发板实验 313
参考文献 314