第1章 嵌入式系统简介 1
1.1 嵌入式系统 1
1.1.1 嵌入式系统概念 2
1.1.2 嵌入式系统的分类 3
1.1.3 嵌入式处理器介绍 4
1.1.4 嵌入式系统组成 6
1.1.5 嵌入式系统开发 8
1.2 嵌入式系统的应用领域 9
1.3 嵌入式操作系统 11
1.3.1 操作系统 11
1.3.2 嵌入式操作系统简介 12
1.4 嵌入式系统的发展趋势 14
练习与思考题 17
第2章 ARM体系结构及编程模型 18
2.1 ARM微处理器的特点 18
2.1.1 ARM概述 18
2.1.2 ARM体系结构的特点 19
2.2 ARM微处理器系列介绍 20
2.2.1 ARM7系列 20
2.2.2 ARM9系列 21
2.2.3 ARM9E系列 21
2.2.4 ARM10E系列 21
2.2.5 ARM11系列 21
2.2.6 SecurCore系列 22
2.2.7 StrongARM和XScale系列 22
2.2.8 ARM Cortex系列 22
2.2.9 基于32位ARM核微处理器 23
2.2.10 ARM系列产品命名规则 23
2.3 ARM体系结构 23
2.3.1 体系结构概念 23
2.3.2 ARM体系结构 25
2.3.3 ARM9体系结构 26
2.4 ARM流水线结构 27
2.5 ARM总线结构 29
2.6 ARM微处理器的工作状态与模式 29
2.6.1 工作状态 29
2.6.2 工作状态切换 30
2.6.3 ARM微处理器的工作模式 30
2.7 ARM体系结构的存储器格式 32
2.7.1 ARM存储数据类型 32
2.7.2 ARM存储器组织 32
2.7.3 ARM存储器层次 34
2.8 寄存器组织 34
2.8.1 ARM状态下的寄存器组织 34
2.8.2 Thumb状态下的寄存器组织 37
2.8.3 程序状态寄存器 38
2.9 异常 40
2.9.1 ARM体系结构所支持的异常类型 40
2.9.2 对异常的响应 41
2.9.3 从异常返回 41
2.9.4 各类异常的具体描述 41
2.9.5 异常进入/退出 43
2.9.6 异常向量 44
2.9.7 异常优先级 44
练习与思考题 45
第3章 ARM指令系统 46
3.1 ARM指令系统版本 46
3.2 ARM微处理器指令格式 48
3.2.1 ARM指令特点 48
3.2.2 ARM指令格式 48
3.2.3 ARM指令条件码 50
3.3 ARM微处理器指令的寻址方式 51
3.3.1 寄存器寻址 51
3.3.2 立即寻址 51
3.3.3 寄存器偏移寻址 52
3.3.4 寄存器间接寻址 53
3.3.5 基址寻址 53
3.3.6 多寄存器寻址 54
3.3.7 堆栈寻址 54
3.3.8 块复制寻址 55
3.3.9 相对寻址 55
3.4 ARM指令分类 56
3.4.1 ARM跳转指令 56
3.4.2 ARM数据处理指令 58
3.4.3 ARM存储器访问指令 64
3.4.4 杂项指令 67
3.4.5 协处理器指令和异常中断指令 70
3.5 Thumb指令与等价的ARM指令 70
练习与思考题 71
第4章 ARM汇编程序设计 73
4.1 ARM汇编伪操作和宏指令 73
4.1.1 ADS下的伪操作和宏指令 74
4.1.2 GNU下的伪操作和宏指令 83
4.1.3 ADS与GNU编译环境下的比较 85
4.2 ARM ATPCS 86
4.2.1 基本ATPCS 86
4.2.2 ARM和Thumb程序混合使用 88
4.3 ARM程序设计 89
4.3.1 ARM汇编语言程序设计 89
4.3.2 ARM汇编语言程序实例 91
练习与思考题 92
第5章 ARM嵌入式系统软件设计 93
5.1 开发平台 93
5.1.1 概述 93
5.1.2 硬件开发环境 94
5.1.3 软件开发环境 97
5.2 ADS的使用简介 108
5.2.1 ADS的应用 108
5.2.2 AXD调试 113
5.3 ARM的启动过程分析 118
5.3.1 系统的初始化 118
5.3.2 初始化程序分析 120
5.4 嵌入式系统中的存储映射 132
5.4.1 ARM映像文件 132
5.4.2 分散装载技术 135
5.5 嵌入式系统中软件设计 139
5.5.1 嵌入式C编程规范 139
5.5.2 ARM汇编语言与C混合编程 140
5.5.3 中断 145
练习与思考题 154
第6章 ARM应用系统硬件设计 155
6.1 S3C2410X介绍 155
6.1.1 S3C2410X功能简介 155
6.1.2 引脚说明 161
6.2 开发板外围电路设计 169
6.2.1 电源电路 169
6.2.2 时钟和电源管理 171
6.2.3 复位电路 174
6.2.4 S3C2410X与外围电路的连接 175
6.2.5 存储器系统设计 177
6.3 开发板接口电路设计 183
6.3.1 I/O端口 183
6.3.2 DMA控制器 189
6.3.3 UART通用异步串行接口 196
6.3.4 USB接口 207
6.3.5 A/D转换与触摸屏 211
6.3.6 LCD控制器 218
6.3.7 I2C串行总线接口 227
6.3.8 I2S串行总线接口 235
6.3.9 网络接口 237
6.4 其他伺服电路 239
6.4.1 JTAG接口 239
6.4.2 看门狗 240
6.4.3 定时器 243
练习与思考题 253
第7章 Linux系统简介 254
7.1 Linux基础知识 254
7.1.1 什么是Linux 254
7.1.2 Linux应用开发 255
7.1.3 Linux特点 256
7.1.4 GNU与POSIX标准 256
7.2 Linux入门 257
7.2.1 Linux介绍 257
7.2.2 Linux的启动运行 261
7.2.3 Linux的文件系统 263
7.2.4 Linux常用命令 264
7.2.5 Linux文本编辑 269
7.2.6 Linux下的文件名与扩展名 270
练习与思考题 271
第8章 Linux编程基础 272
8.1 交叉开发环境的建立 272
8.1.1 嵌入式Linux系统开发流程 272
8.1.2 交叉编译概述 272
8.1.3 构建交叉工具链 279
8.1.4 嵌入式Linux开发环境组建方案 288
8.1.5 VMWare的安装与使用 290
8.1.6 安装RedHat9.0 290
8.1.7 配置宿主机 292
8.2 Shell脚本 295
8.2.1 什么是Shell 295
8.2.2 Shell脚本编程 297
8.2.3 Shell命令的集成 301
8.3 Makefile 303
8.3.1 GNU make 303
8.3.2 Makefile规则 305
练习与思考题 307
第9章 BootLoader 308
9.1 BootLoader基础 308
9.1.1 BootLoader简介 308
9.1.2 BootLoader的种类 311
9.1.3 BootLoader的基本原理 312
9.2 ViVi 313
9.2.1 ViVi命令 313
9.2.2 ViVi的配置与编译 315
9.2.3 ViVi代码分析 317
9.3 U-Boot 317
9.3.1 U-Boot介绍 317
9.3.2 U-Boot的启动过程及工作原理 318
9.3.3 U-Boot的移植 323
9.3.4 U-Boot的使用 329
练习与思考题 330
第10章 Linux内核的移植 331
10.1 Linux移植概述 331
10.1.1 Linux移植的概念 331
10.1.2 Linux移植的准备 332
10.1.3 移植过程的基本内容 332
10.2 Linux内核和结构 332
10.2.1 Linux内核概念 332
10.2.2 Linux内核的结构 333
10.2.3 嵌入式Linux的代码结构 334
10.3 Linux 2.4内核的移植 335
10.3.1 Linux 2.4内核配置、编译概述 335
10.3.2 Linux 2.4移植实例 337
10.3.3 Linux操作系统的启动 340
10.4 Linux 2.6内核移植 342
10.4.1 嵌入式Linux 2.6概述 342
10.4.2 Linux内核源代码目录 343
10.4.3 Linux 2.6移植实例 344
练习与思考题 349
第11章 Linux根文件系统制作 350
11.1 根文件系统概述 350
11.1.1 根文件系统的概念 350
11.1.2 文件系统的分类 351
11.1.3 Linux根文件系统目录结构 355
11.2 根文件系统的制作 356
练习与思考题 360
第12章 嵌入式Linux驱动开发 361
12.1 设备驱动程序基础 361
12.1.1 设备驱动程序概述 361
12.1.2 设备驱动程序的分类 364
12.1.3 处理器与设备间数据交换 364
12.1.4 驱动程序结构 365
12.2 驱动程序开发实例 368
12.2.1 编写驱动程序的基本要点 368
12.2.2 驱动程序实例开发 373
练习与思考题 381
第13章 嵌入式Linux应用开发 382
13.1 网络通信协议 382
13.1.1 TCP/IP 382
13.1.2 协议的选择 386
13.2 Linux网络编程基础 386
13.2.1 网络程序结构 386
13.2.2 Socket概念 387
13.2.3 Socket编程的基本函数 387
13.3 嵌入式Web服务器 397
13.3.1 嵌入式Web服务器概述 397
13.3.2 Boa的移植实例 398
13.4 嵌入式图形系统简介 407
13.4.1 Qt/Embedded 407
13.4.2 Microwindows 409
13.4.3 MiniGUI 409
13.5 基于Qt/E的嵌入式GUI设计 410
13.5.1 Qt/E和Qtopia开发模型 410
13.5.2 Qt/E开发环境的建立 411
13.5.3 Qt Creator的安装 420
13.6 Qt开发基础 422
13.7 Qt4开发实例 430
练习与思考题 441
参考文献 443