第1章 嵌入式系统基础 1
1.1嵌入式系统简介 1
1.1.1嵌入式系统的定义 1
1.1.2嵌入式系统的组成 1
1.1.3嵌入式系统的特点 3
1.1.4嵌入式系统的分类 3
1.1.5嵌入式系统的应用 4
1.2嵌入式处理器 5
1.2.1嵌入式处理器简介 5
1.2.2嵌入式处理器分类 5
1.2.3嵌入式计算机系统与通用型计算机系统 6
1.2.4嵌入式处理器选择 6
1.3嵌入式系统开发环境 7
1.4嵌入式操作系统 8
1.4.1嵌入式操作系统 8
1.4.2实时操作系统 9
1.4.3常见的嵌入式操作系统 10
第2章ARM处理器及系统结构 14
2.1 ARM处理器简介 14
2.2 ARM处理器系列 14
2.3 ARM9处理器内核 18
2.4 ARM处理器工作状态 21
2.5 ARM处理器运行模式 22
2.6 ARM寄存器 22
2.6.1 ARM状态下的寄存器 22
2.6.2 Thumb状态下的寄存器 26
2.7 ARM存储系统 28
2.7.1 ARM存储方法 28
2.7.2存储空间管理单元(MMU) 28
2.8 ARM的异常 30
2.8.1异常类型 30
2.8.2异常发生过程 31
第3章ARM指令集 33
3.1 ARM指令集简介 33
3.1.1 ARM指令的分类与格式 33
3.1.2 ARM指令的条件码域 35
3.1.3 ARM指令可选后缀 35
3.2 ARM指令的寻址方式 37
3.2.1立即寻址 37
3.2.2寄存器寻址 37
3.2.3寄存器间接寻址 37
3.2.4基址变址寻址 38
3.2.5堆栈寻址 39
3.2.6多寄存器寻址 40
3.2.7相对寻址 40
3.3 ARM指令集 40
3.3.1跳转指令 40
3.3.2数据处理指令 43
3.3.3乘法指令与乘加指令 47
3.3.4程序状态寄存器访问指令 48
3.3.5加载/存储指令 49
3.3.6批量数据加载/存储指令 51
3.3.7数据交换指令 52
3.3.8移位指令(操作) 52
3.3.9协处理器指令 53
3.3.10异常产生指令 55
第4章Thumb指令集 56
4.1 Thumb指令集概述 56
4.1.1 Thumb指令集简介 56
4.1.2 Thumb指令集与ARM指令集的区别 57
4.1.3 Thumb状态切换 57
4.1.4 Thumb指令集代码 58
4.2 Thumb存储器访问指令 59
4.2.1加载/存储指令(LDR和STR) 59
4.2.2寄存器入栈及出栈指令(PUSH和POP) 60
4.2.3多寄存器加载/存储指令(LDMIA和STMIA) 61
4.3 Thumb数据处理指令 61
4.3.1数据传送指令 61
4.3.2算术逻辑运算指令 62
4.3.3比较指令 66
4.4 Thumb跳转指令 66
4.5 Thumb软中断指令 68
第5章 伪指令 70
5.1伪指令概述 70
5.2与ARM指令相关的伪指令 70
5.3与Thumb指令相关的伪指令 72
5.4通用伪指令 73
5.4.1为变量定义或赋值的伪指令 73
5.4.2定义各类寄存器名称的伪指令 74
5.4.3数据定义伪指令 75
5.4.4控制程序流向的伪指令 77
5.4.5过程定义伪指令 79
5.4.6报告伪指令 79
5.4.7其他伪指令 81
第6章ARM编程基础 84
6.1汇编语言与C语言的比较 84
6.2 ARM汇编语言设计 84
6.2.1汇编语言的语句格式 84
6.2.2汇编语言的程序结构 88
6.2.3 ARM中汇编程序实例 89
6.3 C语言与汇编语言混合编程 93
6.3.1在C程序中内嵌的汇编 93
6.3.2从汇编程序中访问C程序变量 94
6.3.3汇编程序与C程序的相互调用 95
第7章S3C2440嵌入式系统 99
7.1 S3C2440综述 99
7.1.1 S3C2440信号描述 100
7.1.2 S3C2440专用寄存器 106
7.2 S3C2440的存储控制器 112
7.2.1 S3C2440存储控制器特性 113
7.2.2 S3C2440存储控制器功能 114
7.2.3 S3C2440存储控制器寄存器 114
7.3 NAND Flash控制器 119
7.3.1 NAND FLASH控制器的特性 119
7.3.2专用寄存器 121
7.4时钟和功率管理 123
7.4.1时钟和功率管理功能描述 124
7.4.2时钟发生器和功率模块特殊寄存器 131
7.5 DMA 134
7.5.1 DMA简介 134
7.5.2 DMA工作原理 135
7.5.3 DMA特殊功能寄存器 137
7.6中断控制器 141
7.6.1中断控制器的操作 142
7.6.2 S3C2440中断源 142
7.6.3中断控制器的特殊功能寄存器 143
第8章S3C2440处理器的外设 150
8.1 I/O端口 150
8.1.1 S3C2440端口控制描述 150
8.1.2 I/O端口寄存器及引脚配置 151
8.2 PWM定时器 159
8.2.1 PWM概念 159
8.2.2 PWM定时器结构 159
8.2.3 PWM定时器操作 160
8.2.4 PWM定时器的特殊功能寄存器 164
8.3 UART接口 167
8.3.1 UART接口概述 167
8.3.2 UART的操作 168
8.3.3 UART特殊功能寄存器 172
8.4 USB主机控制器 178
8.5 USB设备控制器 179
8.6 LCD控制器 180
8.6.1 LCD控制器的特性 180
8.6.2 LCD外部接口信号 181
8.6.3 LCD控制器框图 181
8.6.4 LCD控制操作 182
8.6.5 LCD控制器的特殊功能寄存器 186
8.7 ADC和触摸屏接口 189
8.7.1 ADC结构与工作原理 190
8.7.2 A/D转换器的工作模式 191
8.7.3编程要点 192
8.7.4 ADC和触摸屏接口专用寄存器 192
8.8实时时钟 194
8.8.1实时时钟操作 194
8.8.2 RTC特殊功能寄存器 195
8.9看门狗定时器 198
8.9.1看门狗定时器操作 198
8.9.2 WDT特殊寄存器 199
8.10 MMC/SD/SDIO主控制器 200
8.10.1 SD操作 200
8.10.2 SDIO操作 201
8.10.3 SDI特殊寄存器 202
8.11 IIC总线接口 204
8.11.1 IIC总线接口操作 205
8.11.2 IIC总线接口的特殊功能寄存器 209
8.12 IIS总线接口 210
8.12.1 IIS的功能描述 210
8.12.2 IIS串行接口特殊功能寄存器 212
8.13 SPI接口 213
8.13.1 SPI操作 213
8.13.2 SPI特殊寄存器 216
第9章ADS集成开发系统 218
9.1 ADS系统组成与文件 218
9.1.1 ADS系统的组成 218
9.1.2 ADS系统中的文件 219
9.2 AD S创建工程 220
9.2.1建立一个工程 220
9.2.2编辑和链接工程 223
9.3 ADS调试器 226
9.3.1 AXD 226
9.3.2创建工程调试 228
9.4 ADS连接器 231
9.4.1连接器的基本功能 231
9.4.2 armlink的选项 232
9.4.3取得映像符号 232
第10章 嵌入式Linux开发基础 234
10.1 Linux简介 234
10.1.1在嵌入式系统中使用Linux的优点和缺点 234
10.1.2 Linux内核的功能 235
10.2 Linux文件及文件系统 235
10.2.1文件类型和文件属性 235
10.2.2文件系统类型 236
10.2.3 Linux目录结构 237
10.3嵌入式Linux开发流程 238
10.4 Linux常用指令 239
10.5 Linux下的用户界面 242
10.5.1 X Window简介 242
10.5.2 X服务器 243
10.5.3窗口管理器 244
第11章 Windows CE操作系统 245
11.1 Windows CE简介 245
11.1.1什么是Windows CE 245
11.1.2 Windows CE的主要功能 245
11.1.3 Windows CE版本 246
11.2 Windows CE的应用领域 247
11.3 Windows CE的内存管理 248
11.3.1内存结构 248
11.3.2 RAM和ROM 249
11.3.3虚拟内存 250
11.3.4堆 252
11.3.5栈 255
11.3.6静态数据块 255
11.4 Windows CE的文件系统 255
11.4.1 ROM文件系统 256
11.4.2对象存储 256
11.4.3存储管理器 256
第12章 综合应用实例 260
12.1 1O端口——LED流水灯实例 260
12.1.1系统简介 260
12.1.2实例说明 261
12.1.3实例代码 263
12.2液晶屏显示实例 263
12.2.1实例说明 264
12.2.2实例代码 264
12.3 UART接口实例 268
12.3.1实例说明 268
12.3.2实例代码 269
12.4以太网接口实例 283
12.4.1实例说明 284
12.4.2实例代码 285
参考文献 298