第1章 嵌入式系统概述 1
1.1 嵌入式系统定义 1
1.1.1 嵌入式系统的概念 1
1.1.2 嵌入式系统的特点 2
1.2 嵌入式系统的发展概述 3
1.2.1 嵌入式系统的历史与发展 3
1.2.2 嵌入式系统的功能 5
1.3 嵌入式系统的硬件和软件特征 6
1.3.1 嵌入式系统硬件平台 6
1.3.2 硬件抽象层 7
1.3.3 嵌入式操作系统 8
1.4 嵌入式系统的分类 9
1.5 嵌入式系统的应用 10
1.6 本章小结 11
1.7 习题1 11
第2章 ARM微处理器概述与编程模型 12
2.1 ARM微处理器概述 12
2.1.1 ARM微处理器的特点 12
2.1.2 ARM微处理器系列 12
2.2 ARM微处理器结构 18
2.2.1 RISC体系结构 18
2.2.2 ARM微处理器的寄存器结构 20
2.2.3 ARM微处理器的指令结构 20
2.2.4 ARM微处理器的应用选型 20
2.3 ARM微处理器的工作状态 21
2.4 ARM体系结构的存储器格式 21
2.4.1 指令长度及数据类型 22
2.4.2 存储管理单元 22
2.5 处理器模式 27
2.6 寄存器组织 27
2.6.1 ARM状态下的寄存器组织 28
2.6.2 Thumb状态下的寄存器组织 29
2.6.3 程序状态寄存器 31
2.7 异常 33
2.7.1 ARM体系结构所支持的异常类型 33
2.7.2 异常优先级 34
2.7.3 异常的响应及返回 34
2.7.4 应用程序中的异常处理 35
2.8 本章小结 36
2.9 习题2 36
第3章 ARM9指令系统 37
3.1 ARM处理器的寻址方式 37
3.1.1 寄存器寻址 37
3.1.2 立即寻址 37
3.1.3 寄存器间接寻址 37
3.1.4 变址寻址 38
3.1.5 寄存器移位寻址 38
3.1.6 多寄存器寻址 40
3.1.7 堆栈寻址 41
3.1.8 相对寻址 41
3.2 ARM指令集 41
3.2.1 指令格式 41
3.2.2 条件码 42
3.2.3 ARM存储器访问指令 42
3.2.4 ARM数据处理类指令 47
3.2.5 ARM分支指令 53
3.2.6 ARM协处理器指令 55
3.2.7 ARM软件中断指令 56
3.3 Thumb指令集 57
3.4 本章小结 59
3.5 习题3 59
第4章 嵌入式程序设计基础 61
4.1 伪指令 61
4.1.1 通用伪指令 61
4.1.2 与ARM指令相关的伪指令 69
4.1.3 与Thumb指令相关的伪指令 71
4.2 汇编语言的语句格式 72
4.2.1 书写格式 72
4.2.2 汇编语言中表达式和运算符 72
4.3 汇编程序应用 76
4.3.1 汇编程序基本结构 76
4.3.2 子程序调用 76
4.4 汇编语言与C/C++的混合编程 77
4.4.1 在C/C++程序中内嵌汇编指令的语法格式 79
4.4.2 C/C++与汇编语言的混合编程应用 79
4.5 本章小结 83
4.6 习题4 84
第5章 嵌入式内部可编程模块 85
5.1 存储控制模块 85
5.1.1 存储器控制器 85
5.1.2 NAND Flash控制器 90
5.1.3 存储器实例 96
5.2 GPIO 100
5.2.1 端口功能 101
5.2.2 端口配置寄存器 105
5.2.3 端口其他寄存器 114
5.2.4 I/O应用实例 124
5.3 中断系统 126
5.3.1 中断优先级 128
5.3.2 中断控制寄存器 129
5.3.3 中断编程实例 136
5.4 DMA 137
5.4.1 S3C2440A芯片的DMA方式 137
5.4.2 S3C2440A芯片的DMA寄存器 139
5.4.3 S3C2440A芯片的DMA实例 143
5.5 定时部件 147
5.5.1 看门狗定时器原理及实例 147
5.5.2 RTC部件 149
5.5.3 Timer部件 154
5.5.4 定时部件应用实例 162
5.6 UART 169
5.6.1 UART的操作 170
5.6.2 UART接口寄存器 173
5.6.3 UART实例 177
5.7 ADC及触摸屏接口 178
5.7.1 功能描述 179
5.7.2 ADC及触摸屏接口特殊寄存器 180
5.7.3 A/D转换实例 182
5.8 本章小结 184
5.9 习题5 184
第6章 嵌入式接口技术应用 185
6.1 LCD显示器接口 185
6.1.1 LCD的控制器 185
6.1.2 S3C2440A芯片的LCD专用寄存器 189
6.1.3 S3C2440A芯片LCD寄存器的设置 195
6.2 I2C总线 196
6.2.1 S3C2440A的I2C接口 196
6.2.2 I2C总线接口特殊寄存器 198
6.2.3 I2C编程举例 200
6.3 I2S总线 204
6.3.1 发送接收模式 204
6.3.2 音频串行接口格式 204
6.3.3 I2S总线接口特殊寄存器 205
6.3.4 I2S编程实例 207
6.4 AC97控制器 210
6.4.1 AC97控制器操作 211
6.4.2 AC97控制器特殊寄存器 213
6.4.3 AC97应用实例 215
6.5 S3C2440A的摄像头 219
6.5.1 S3C2440A的摄像头接口 219
6.5.2 摄像头接口特殊寄存器 223
6.5.3 摄像头接口应用实例 232
6.6 本章小结 233
6.7 习题6 233
第7章 软件开发环境 234
7.1 ADS1.2集成开发环境 234
7.1.1 使用ADS创建工程 234
7.1.2 用AXD进行代码调试 240
7.2 嵌入式Linux的软件开发环境 244
7.2.1 安装交叉编译环境 245
7.2.2 嵌入式Linux程序开发工程管理 251
7.3 本章小结 260
7.4 习题7 261
第8章 嵌入式系统Boot Loader技术 262
8.1 Boot Loader的基本概念 262
8.1.1 Boot Loader的相关设备和机制 262
8.1.2 Boot Loader的启动过程 263
8.1.3 Boot Loader的操作模式 263
8.1.4 Boot Loader的总体设计 264
8.2 Boot Loader(vivi)的代码分析 271
8.3 本章小结 279
8.4 习题8 280
第9章 嵌入式Linux操作系统移植 281
9.1 嵌入式Linux基本概念 281
9.2 嵌入式Linux内核移植 285
9.2.1 内核修改 285
9.2.2 内核配置 288
9.2.3 内核编译 300
9.3 建立Linux根文件系统 304
9.4 下载目标文件 308
9.5 本章小结 309
9.6 习题9 309
第10章 嵌入式Linux设备驱动程序开发 310
10.1 嵌入式Linux驱动程序开发基础 310
10.1.1 嵌入式Linux设备驱动程序分类 310
10.1.2 最简单的内核模块 311
10.2 嵌入式Linux设备驱动重要技术 315
10.2.1 内存与I/O端口 315
10.2.2 同步机制 320
10.2.3 阻塞与非阻塞 328
10.2.4 时间问题 330
10.2.5 中断处理 335
10.3 字符设备驱动程序 336
10.3.1 字符设备驱动结构 336
10.3.2 字符设备驱动实例——LED驱动 342
10.4 网络设备驱动程序 347
10.4.1 Linux网络设备简介 347
10.4.2 网络驱动核心数据结构 349
10.4.3 网络驱动程序分析 353
10.5 设备驱动实例 364
10.5.1 ADC设备驱动实例 364
10.5.2 PWM设备驱动实例 366
10.5.3 触摸屏设备驱动实例 368
10.6 本章小结 376
10.7 习题10 376
第11章 嵌入式Linux应用程序设计 377
11.1 嵌入式Linux C语言应用程序开发基础 377
11.1.1 编写源程序 377
11.1.2 交叉编译程序 380
11.1.3 调试程序 380
11.2 文件I/O编程 382
11.2.1 文件I/O操作例程 382
11.2.2 文件I/O操作API 383
11.3 网络编程 388
11.3.1 网络通信基础及例程 388
11.3.2 网络通信API 391
11.4 应用实例 397
11.4.1 ADC应用实例 397
11.4.2 PWM蜂鸣器控制应用实例 397
11.4.3 触摸屏应用实例 399
11.5 本章小结 401
11.6 习题11 401
参考文献 402