第1章 绪论 1
1.1 嵌入式系统的概念 1
1.1.1 嵌入式系统的定义 1
1.1.2 嵌入式系统的特点 1
1.2 嵌入式系统的历史和应用领域 3
1.3 嵌入式系统的组成 5
1.3.1 微处理器 5
1.3.2 外围硬件 6
1.3.3 嵌入式操作系统 6
1.3.4 应用程序 6
1.3.5 开发环境 6
习题 7
第2章 嵌入式硬件组成 8
2.1 嵌入式系统组成原理 8
2.1.1 计算机系统的一般运行原理 8
2.1.2 嵌入式系统与通用计算机硬件组成的异同 11
2.1.3 嵌入式系统硬件结构 12
2.2 嵌入式最小系统 14
2.2.1 嵌入式最小系统的概念 14
2.2.2 实际的嵌入式最小系统 17
2.3 嵌入式系统扩展 18
2.3.1 内存类芯片 19
2.3.2 网络芯片 21
2.3.3 USB芯片 21
习题 22
第3章 ARM体系结构 23
3.1 ARM微处理器基础 23
3.1.1 ARM的运行模式 24
3.1.2 ARM的工作状态 25
3.1.3 ARM的寄存器组织 26
3.1.4 ARM的异常 32
3.1.5 ARM的存储器格式 36
3.1.6 ARM的特点和优势 37
3.2 ARM的内核系列 39
3.2.1 ARM内核分类和系列 40
3.2.2 ARM体系结构版本 50
3.3 ARM微处理器的指令系统 54
3.3.1 ARM指令系统概述 54
3.3.2 ARM的寻址模式 56
3.3.3 ARM的指令集 59
3.3.4 Thumb的指令集 65
3.4 ARM内存管理单元 67
3.4.1 ARM MMU概述 67
3.4.2 ARM MMU功能与操作 68
3.4.3 ARM MMU的地址转换 72
习题 79
第4章 ARM嵌入式处理器 80
4.1 ARM微处理器概述 80
4.1.1 ARM核心微处理器的分类和特点 80
4.1.2 ARM核心微处理器的使用 88
4.2 S3C44B0X处理器 90
4.2.1 概述 90
4.2.2 处理器组成与框图 91
4.2.3 ARM7TDMI核心 94
4.2.4 S3C44B0X重点部件特点 95
4.3 PXA25x/PXA27x处理器 114
4.3.1 概述 114
4.3.2 处理器组成与框图 116
4.3.3 XScale核心 119
4.3.4 重点部件特点 120
习题 131
第5章 实际嵌入式系统 132
5.1 嵌入式系统的硬件扩展 132
5.1.1 内部模块扩展 133
5.1.2 总线扩展 133
5.1.3 GPIO扩展 133
5.1.4 综合扩展 134
5.2 S3C44B0X系统 135
5.2.1 系统概述 135
5.2.2 系统组成 137
5.2.3 系统总结 151
5.3 PXA 2xx系统 152
5.3.1 系统概述 152
5.3.2 系统组成 153
习题 154
第6章 嵌入式软件开发基础 156
6.1 嵌入式软件开发语言 156
6.2 嵌入式软件开发流程 157
6.2.1 嵌入式应用程序生成的特点 157
6.2.2 编译 158
6.2.3 汇编 158
6.2.4 链接 158
6.2.5 加载程序 159
6.3 调试工具和方法 159
6.3.1 嵌入式调试的特点 159
6.3.2 嵌入式开发的常用调试方式 160
6.4 C语言程序的结构 161
6.4.1 C语言目标文件中的段 161
6.4.2 执行程序内部细节 162
6.4.3 目标文件各段的链接 165
6.4.4 C语言程序的执行 166
6.5 仿真环境 168
习题 169
第7章 嵌入式Linux开发环境 170
7.1 GNU Tools 170
7.1.1 GNU Tools综述 170
7.1.2 GCC编译与链接 173
7.1.3 GCC工具介绍 178
7.1.4 C语言库 185
7.1.5 ELF文件格式 186
7.2 项目管理 188
7.2.1 工程管理工具Make与Makefile 188
7.2.2 版本控制 192
7.3 调试器 193
7.3.1 GDB调试基础 193
7.3.2 远程GDB调试 197
7.4 模拟器 198
习题 198
第8章 构建嵌入式Linux系统 200
8.1 嵌入式Linux系统的构建流程 200
8.1.1 嵌入式Linux的组成 200
8.1.2 嵌入式Linux的构建 201
8.2 Bootloader 202
8.2.1 嵌入式Linux的引导方式 202
8.2.2 Bootloader的作用 203
8.3 Linux内核 203
8.3.1 Linux内核配置和编译的流程 203
8.3.2 Linux内核配置 204
8.3.3 Linux内核的编译 205
8.4 根文件系统 206
8.4.1 Linux下的文件系统 206
8.4.2 嵌入式Linux的文件系统介绍 209
8.4.3 Linux的根文件系统 215
习题 216
第9章 嵌入式Linux系统移植 217
9.1 Bootloader 217
9.1.1 Linux Bootloader概述 217
9.1.2 Bootloader的stage1 220
9.1.3 Bootloader的stage2 221
9.2 基于ARM-with MMU的Linux移植 224
9.2.1 Linux内核概述 224
9.2.2 标准Linux移植概述 226
9.2.3 基于PXA 2xx嵌入式系统的ARM-Linux移植 235
9.3 基于ARM-noMMU的μCLinux移植 248
9.3.1 μCLinux的特点 248
9.3.2 μCLinux移植概述 251
9.3.3 S3C44B0X系统的μCLinux的移植 256
习题 265
第10章 Linux内核驱动原理 266
10.1 Linux驱动程序概述 266
10.2 Linux驱动程序的相关知识 268
10.2.1 内核模块的作用 268
10.2.2 模块的编程结构和使用 269
10.2.3 内核模块编写的注意事项 270
10.2.4 Linux设备文件 272
10.2.5 Linux对设备文件的操作 273
10.2.6 设备文件相关的数据结构 277
10.2.7 内核空间和用户空间的交互 279
10.3 驱动程序的结构 281
10.3.1 字符驱动程序框架 281
10.3.2 驱动程序的操作 285
10.3.3 带中断的驱动程序 286
10.3.4 块设备的驱动程序框架 288
10.3.5 网络设备的驱动程序框架 291
习题 293
第11章 嵌入式Linux驱动开发 294
11.1 串口及控制台驱动 294
11.1.1 串口及控制台驱动的作用 294
11.1.2 串口驱动程序 295
11.1.3 控制台功能的实现 302
11.2 FrameBuffer驱动 305
11.2.1 LCD驱动原理 306
11.2.2 FrameBuffer驱动结构 311
11.2.3 虚拟显示缓冲驱动分析 316
11.3 以太网络驱动 324
11.3.1 Linux以太网的应用 324
11.3.2 Linux网络驱动 327
11.3.3 回环网络设备驱动程序分析 333
11.4 Linux驱动程序总结 335
习题 336
第12章 嵌入式系统的应用程序开发 337
12.1 嵌入式GUI系统 337
12.1.1 嵌入式GUI的概述 337
12.1.2 GUI系统的设计原理 338
12.1.3 GUI系统的移植 342
12.1.4 GUI系统的应用开发 344
12.2 嵌入式网络应用 345
12.2.1 网络基础知识 345
12.2.2 TCP/IP知识 346
12.2.3 嵌入式Linux的网络应用 349
习题 356
附录 357
附录A ARM指令集 357
附录B 嵌入式系统网络资源 360
附录C 常用逻辑符号对照表 363
参考文献 365