第1章 嵌入式系统基础 1
1.1 嵌入式系统简介 2
1.1.1 嵌入式系统的概念 2
1.1.2 嵌入式系统的特点 4
1.1.3 嵌入式系统的分类 4
1.2 嵌入式系统的研究现状和发展趋势 6
1.2.1 研究现状 6
1.2.2 发展趋势 7
1.3 典型嵌入式操作系统 8
1.3.1 嵌入式操作系统的特点 8
1.3.2 几种典型的嵌入式操作系统 8
1.3.3 嵌入式系统与PC机 10
1.3.4 嵌入式系统与单片机 11
1.3.5 嵌入式Linux系统的特点 11
1.4 课后练习 12
第2章 嵌入式处理器介绍 13
2.1 嵌入式处理器概述 14
2.1.1 嵌入式处理器简介 14
2.1.2 嵌入式处理器的特点 14
2.1.3 嵌入式处理器的分类 15
2.1.4 嵌入式处理器的体系结构 17
2.1.5 嵌入式处理器的存储体系结构 24
2.1.6 典型嵌入式处理器 26
2.2 ARM系列处理器 28
2.2.1 ARM简介 29
2.2.2 ARM技术的应用领域 29
2.2.3 ARM处理器系列 29
2.2.4 ARM处理器的工作状态 35
2.2.5 ARM处理器运行模式 36
2.2.6 ARM处理器的存储格式 37
2.2.7 ARM状态下的寄存器结构 38
2.2.8 ARM异常中断 42
2.2.9 ARM处理器的应用选型 46
2.3 ARM指令集 47
2.3.1 ARM指令的一般格式 47
2.3.2 ARM存储器访问指令 49
2.3.3 跳转指令 54
2.3.4 数据处理指令 55
2.3.5 程序状态寄存器(PSR)传输指令 61
2.3.6 协处理器指令 62
2.3.7 ARM杂项指令 64
2.3.8 ARM伪指令 67
2.4 Thumb指令集 69
2.5 课后练习 70
第3章 嵌入式系统的设计方法 73
3.1 嵌入式系统设计概述 74
3.1.1 嵌入式系统的总体结构 74
3.1.2 嵌入式系统设计内容 76
3.1.3 嵌入式系统设计的特点 76
3.1.4 嵌入式系统设计方法的分类 77
3.2 嵌入式系统设计流程 79
3.3 课后练习 82
第4章 ARM编程模型的工作原理 85
4.1 系统设计概述 86
4.1.1 嵌入式系统开发基础 86
4.1.2 嵌入式系统选型原则 87
4.2 ARM920T简介 88
4.3 S3C2410X开发板 89
4.3.1 S3C2410处理器的特点 91
4.3.2 ARM片上总线 95
4.3.3 S3C2410的处理器中断 97
4.3.4 S3C2410处理器片上资源的定义和使用 103
4.3.5 编程参考软件包2410TEST 106
4.4 课后练习 109
第5章 BootLoader 111
5.1 BootLoader介绍 112
5.1.1 BootLoader的基本概念 113
5.1.2 BootLoader所支持的CPU和嵌入式体系结构 114
5.1.3 BootLoader的安装媒介 115
5.1.4 BootLoader的概念扩展 115
5.1.5 ARM BootLoader的共性 115
5.1.6 BootLoader移植的必要性 117
5.1.7 BootLoader的烧录和存储 117
5.1.8 BootLoader与主机间文件传输所用的通信设备及协议 117
5.1.9 BootLoader的通用执行流程 117
5.2 常用的嵌入式Linux BootLoader 118
5.2.1 U-Boot 118
5.2.2 VIVI 119
5.2.3 Blob 120
5.2.4 RedBoot 120
5.2.5 ARMBoot 120
5.2.6 DIY 120
5.3 U-Boot基础 121
5.3.1 U-Boot源代码的目录结构 121
5.3.2 U-Boot支持的主要功能 123
5.3.3 U-Boot命令介绍及环境变量 123
5.4 U-Boot的启动过程 124
5.5 U-Boot的编译过程 128
5.6 U-Boot移植的关键技术 131
5.7 课后练习 132
第6章 Linux交叉编译环境 133
6.1 交叉编译环境简介 134
6.1.1 交叉编译环境概念模型 134
6.1.2 目标板与宿主机之间的连接 135
6.1.3 文件传输方式 137
6.1.4 网络文件系统 138
6.2 交叉编译工具简介 138
6.2.1 gcc编译器 138
6.2.2 Binutils工具包 140
6.2.3 GNU make 140
6.2.4 glibc库 142
6.2.5 gdb调试工具 142
6.2.6 交叉编译环境的建立 144
6.3 主机开发环境配置 148
6.3.1 配置主机服务 148
6.3.2 串口控制台工具 150
6.3.3 配置DHCP服务 152
6.3.4 配置TFTP服务 154
6.3.5 配置NFS服务 156
6.4 课后练习 158
第7章 嵌入式开发及调试 159
7.1 嵌入式系统的开发环境 160
7.1.1 开发环境简介 160
7.1.2 ADS集成开发环境的使用 161
7.2 嵌入式系统调试方法 174
7.2.1 基于主机的调试 176
7.2.2 远程调试器与调试内核 176
7.2.3 在线仿真ICE 177
7.2.4 BDM 178
7.2.5 软件仿真器 179
7.3 ROM仿真器 179
7.4 JTAG接口 180
7.5 课后练习 181
第8章 简单设备驱动程序 183
8.1 设备驱动概述 184
8.1.1 基本概念 185
8.1.2 数据结构 187
8.1.3 文件结构 191
8.2 设备驱动基础 192
8.2.1 设备驱动程序结构 194
8.2.2 设备驱动程序接口 195
8.3 设备驱动模块化编程 196
8.3.1 模块化驱动程序概述 197
8.3.2 设备驱动模块化编程的一般框架 200
8.4 PCI总线 201
8.4.1 PCI设备驱动概述 201
8.4.2 PCI驱动程序的编程实现 203
8.5 课后练习 209
第9章 网络设备驱动程序开发 211
9.1 网络设备驱动程序简介 212
9.1.1 网络设备概述 212
9.1.2 重要数据结构——struct device 214
9.2 以太网控制器 218
9.3 网络设备的初始化 220
9.3.1 模块初始化模式分析 221
9.3.2 启动初始化模式分析 226
9.4 网络设备的打开和关闭 230
9.5 数据包的传输和接收 232
9.5.1 Socket缓冲区及相关操作 233
9.5.2 数据包的传输 235
9.5.3 数据包的接收 236
9.6 网络设备驱动程序实例 238
9.7 TCP编程实例 244
9.8 课后练习 247
第10章 音频设备驱动程序开发 249
10.1 音频信号基础 250
10.1.1 音频信号 250
10.1.2 模拟音频的数字化过程 250
10.1.3 音频文件的格式 252
10.1.4 WAV文件格式剖析 253
10.2 基于IIS接口的音频系统 255
10.2.1 IIS接口总线控制原理 255
10.2.2 音频接口设计 257
10.3 音频设备程序的实现 263
10.3.1 音频设备编程接口 263
10.3.2 音频设备文件 266
10.3.3 音频设备编程设计 268
10.4 课后练习 274
第11章 USB设备驱动程序开发 275
11.1 USB驱动程序简介 276
11.1.1 USB总线概述 276
11.1.2 USB设备的基础构成 277
11.1.3 USB中的描述符 279
11.1.4 USB的数据传输 284
11.1.5 USB文件系统(usbfs) 284
11.1.6 Libusb介绍 284
11.2 Linux下USB系统文件节点 286
11.3 USB主机驱动结构 287
11.4 USB驱动数据结构 296
11.4.1 USB驱动的整体构架 296
11.4.2 USB驱动中主要的数据结构 297
11.4.3 驱动程序相关函数 298
11.5 USB主机驱动在S3C2410X平台的实现 304
11.5.1 S3C2410X简介 304
11.5.2 USB主机控制器 305
11.5.3 USB驱动程序的移植 305
11.6 课后练习 306
第12章 μC/OS-Ⅱ在ARM平台的移植 307
12.1 实时操作系统简介 308
12.1.1 实时操作系统的基本概念 308
12.1.2 几种主要的实时操作系统 311
12.1.3 实时操作系统的主要性能 312
12.2 μC/OS-Ⅱ操作系统 317
12.2.1 μC/OS-Ⅱ操作系统概述 317
12.2.2 μC/OS-Ⅱ系统内核 321
12.3 eCos简介及移植介绍分析 333
12.3.1 eCos的体系结构及可配置性 333
12.3.2 eCos内核的移植 335
12.4 课后练习 337
第13章 Linux在ARM平台的移植 339
13.1 Linux概述 340
13.1.1 Linux操作系统的产生及发展 340
13.1.2 Linux操作系统的特点和组成 342
13.2 Linux内核结构 344
13.2.1 Linux内核的主要模块 344
13.2.2 Linux的文件系统基础 346
13.2.3 文件系统的挂载 349
13.3 Linux操作系统移植及根文件系统 350
13.3.1 Linux内核移植 350
13.3.2 Linux根文件系统 361
13.4 课后练习 364
第14章 图形用户界面实例 367
14.1 图形用户界面 368
14.1.1 GUI简介 368
14.1.2 GUI特征 368
14.1.3 GUI架构 369
14.2 嵌入式Linux图形用户界面简介 370
14.2.1 Micro Windows 371
14.2.2 OpenGUI 371
14.2.3 Qt/Embedded 372
14.2.4 MiniGUI 372
14.3 Qt/Embedded嵌入式图形开发 373
14.3.1 Qt/Embedded简介 373
14.3.2 Qt/Embedded信号和插槽机制 378
14.3.3 Qt/Embedded实现技术分析 382
14.3.4 Qt/Embedded图形引擎实现基础 382
14.3.5 Qt/Embedded事件驱动基础 383
14.3.6 Qt/Embedded应用程序的开发流程 384
14.3.7 Qt/Embedded移植与应用 384
14.3.8 Qt/Embedded窗口部件 387
14.4 课后练习 390
习题答案 393