第1章 嵌入式系统 1
1.1嵌入式系统的概念 1
1.2嵌入式系统的分类 2
1.3嵌入式平台 3
1.3.1嵌入式平台的硬件结构 3
1.3.2嵌入式操作系统 5
1.3.3应用程序设计基础 8
1.4嵌入式系统的应用领域 10
1.5嵌入式系统的开发流程 12
1.6思考与练习 14
第2章 ARM微处理器的结构及指令系统 15
2.1 ARM公司简介 15
2.2 ARM微处理器系列 16
2.2.1 ARM7微处理器系列 16
2.2.2 ARM9微处理器系列 17
2.2.3 ARM10微处理器系列 18
2.2.4 ARM11微处理器系列 19
2.2.5 Cortex微处理器系列 19
2.2.6 StrongARM及Xseale微处理器 19
2.3 ARM微处理器体系结构 19
2.3.1 RISC体系结构 20
2.3.2 ARM微处理器的寄存器结构 21
2.3.3 ARM微处理器的指令结构 21
2.4 ARM微处理器的应用选型 21
2.5 ARM指令集 22
2.5.1 ARM微处理器的指令集概述 22
2.5.2 ARM指令的寻址方式 24
2.5.3 ARM指令集 26
2.5.4 Thumb指令及应用 44
2.5.5伪指令 45
2.5.6汇编语言的语句格式 57
2.6简单汇编实例 62
2.7思考与练习 63
第3章 嵌入式开发环境的构建 65
3.1交叉开发环境 65
3.2主机与目标板的连接方式 67
3.2.1串口通信接口 67
3.2.2以太网接口 67
3.2.3 USB接口 68
3.2.4 JTAG接口 68
3.3建立主机开发环境 68
3.3.1超级终端和Minicom配置及使用 68
3.3.2宿主机服务配置 69
3.3.3建立交叉工具链 73
3.4启动目标板系统 79
3.4.1 BootLoader 79
3.4.2编译嵌入式内核 81
3.4.3 Linux内核目录结构 82
3.4.4制作文件系统 82
3.5思考与练习 83
第4章 S3C2410X内部资源 85
4.1 S3C2410 85
4.1.1概述 85
4.1.2 S3C2410X处理器引脚 87
4.1.3 S3C2410X的内核结构 87
4.1.4存储器管理 88
4.1.5 BankO总线宽度 89
4.1.6 nWAIT引脚的作用 90
4.1.7 nXBREQ/nXBACK引脚操作 91
4.2时钟和电源管理 91
4.3 DMA控制器 93
4.4通用I/O端口 100
4.5脉冲带宽调制定时器和看门狗定时器 113
4.5.1脉冲带宽调制定时器 114
4.5.2看门狗定时器 119
4.6存储器的控制寄存器 121
4.6.1 S3C2410X存储器控制器 122
4.6.2 NAND Flash控制器 125
4.7中断管理 127
4.7.1 S3C2410X中断控制器 129
4.7.2 S3C2410X中断系统结构 129
4.7.3 S3C2410X中断控制器专用寄存器 129
4.8串行口管理 135
4.9 A/D转换器与触摸屏 137
4.9.1 A/D转换器的结构与工作原理 137
4.9.2 ADC和触摸屏专用寄存器 140
4.10思考与练习 142
第5章 S3C2410X外围电路设计及接口 143
5.1单元电路设计 143
5.1.1电源电路设计 143
5.1.2晶振电路设计 143
5.1.3复位电路设计 145
5.2存储器系统设计 145
5.2.1存储器接口设计 145
5.2.2 Flash接口电路设计 146
5.2.3 SDRAM接口电路设计 147
5.3 JTAG调试接口设计 149
5.3.1 JTAG综述 149
5.3.2 TAP状态机 150
5.3.3接口电路设计 152
5.4串行接口 154
5.4.1串行接口的基本原理与结构 154
5.4.2 S3C2410X的UART 156
5.4.3与S3C2410X的UART连接的串行接口电路 159
5.4.4 S3C2410X的UART编程实例 160
5.5 I2C接口 164
5.5.1 I2C接口的基本原理与结构 164
5.5.2 S3C2410X的I2C接口 166
5.5.3 S3C2410X的I2C接口应用实例 166
5.6 USB接口 171
5.6.1 USB接口的基本原理与结构 171
5.6.2 S3C2410X的USB控制器 173
5.6.3 S3C2410X的USB接口电路与驱动程序 174
5.7 SPI接口 178
5.7.1 SPI接口的基本原理与结构 178
5.7.2 S3C2410X的SPI接口电路 181
5.7.3 S3C2410X的SPI接口编程实例 185
5.8 I2S总线接口 186
5.8.1数字音频简介 186
5.8.2 S3C2410X的I2S总线接口 188
5.9思考与练习 190
第6章 嵌入式操作系统 191
6.1嵌入式操作系统的特点 191
6.1.1嵌入式操作系统的发展 192
6.1.2嵌入式操作系统的优势 192
6.1.3嵌入式操作系统的分类 193
6.2嵌入式操作系统中的关键技术 194
6.3进程管理 197
6.3.1进程的描述 197
6.3.2进程的调度 197
6.4存储管理 198
6.4.1存储器的体系结构 199
6.4.2存储管理的基本概念 199
6.4.3连续分配存储管理方式 201
6.4.4页式存储管理方式 202
6.5文件管理 204
6.5.1文件 204
6.5.2目录 205
6.5.3 EXT2文件系统 205
6.6设备管理 206
6.6.1设备的分类 207
6.6.2数据传输控制方式 208
6.6.3中断处理 208
6.6.4设备驱动程序 211
6.7思考与练习 212
第7章 Linux内核移植 213
7.1 Linux简介 213
7.1.1 Linux的历史 213
7.1.2 Linux的特点 214
7.1.3 Linux的主要组成部分 215
7.1.4 Linux的种类 216
7.2 Linux内核简介 218
7.2.1 Linux内核的发展 218
7.2.2 Linux内核的组成结构 219
7.2.3 Linux内核源代码的结构 220
7.3 Linux源码结构目录 222
7.3.1体系结构目录 222
7.3.2驱动程序目录 223
7.3.3内存管理目录 230
7.3.4进程管理目录 232
7.3.5网络系统目录 239
7.3.6虚拟文件系统目录 240
7.3.7其他目录 244
7.4内核编译 247
7.4.1编译前的准备 247
7.4.2 Flash分区设置 248
7.4.3编译内核配置 249
7.4.4内核编译过程 250
7.5内核配置选项 250
7.5.1常规设置 251
7.5.2模块和块设备层 252
7.5.3 CPU类型 252
7.5.4电源管理 253
7.5.5总线和网络 254
7.5.6驱动 255
7.5.7文件系统 255
7.5.8其他 256
7.6下载内核 257
7.7内核调试 257
7.8思考与练习 257
第8章 嵌入式系统的设备管理及驱动 258
8.1 Linux设备管理和驱动概述 258
8.1.1设备驱动程序的原理及功能 258
8.1.2访问设备的实现 260
8.1.3 Linux操作系统的设备控制方式 264
8.2 Linux设备驱动程序的开发 265
8.2.1模块的构建和加载 265
8.2.2字符设备驱动程序的开发及示例 268
8.2.3阻塞与非阻塞 275
8.2.4中断处理驱动程序及测试 280
8.3块设备驱动程序开发 289
8.3.1块设备驱动程序 290
8.3.2块设备驱动结构 293
8.3.3块设备驱动程序中的主要函数 303
8.4思考与习题 312
第9章 Linux环境下的C语言开发工具 313
9.1 Vim编辑器 313
9.1.1 Vim的编辑模式 314
9.1.2 Vim的进入与退出 315
9.1.3 Vim的常用命令 322
9.2 GCC编译器 325
9.2.1 GCC的编译流程 326
9.2.2实例分析 328
9.3 GDB调试器 333
9.3.1 GDB的功能 333
9.3.2 GDB的使用流程 333
9.3.3常用的GDB调试命令 340
9.3.4 GdbServer远程调试 344
9.4工程管理器Make 346
9.4.1 Makefile文件 346
9.4.2 Makefile的规则 346
9.4.3 Makefile中变量的使用 347
9.4.4 make命令的使用 348
9.4.5自动生成Makefile的方法 350
9.5思考与练习 350
第10章 嵌入式系统中C语言的开发流程 352
10.1命令行下的开发流程 352
10.1.1编写代码 353
10.1.2编译程序 355
10.1.3运行程序 357
10.1.4交叉编译 357
10.1.5编写Makefile 358
10.2基于Eclipse的开发流程 360
10.2.1下载和安装Eclipse 360
10.2.2新建工程 362
10.2.3编写代码 363
10.2.4编译工程 363
10.2.5运行程序 366
10.3思考与练习 367
参考文献 368