第1章 绪论 1
1.1 嵌入式系统的概念 1
1.2 嵌入式系统的分类 2
1.3 嵌入式系统的组成 2
1.4 嵌入式系统设计流程 4
1.5 嵌入式技术的发展趋势 5
习题与思考题 8
第2章 嵌入式处理器与ARM体系结构2.1 嵌入式处理器及其体系结构 9
2.1.1 冯·诺依曼和哈佛体系结构 9
2.1.2 CISC与RISC体系结构 10
2.2 PowerPC处理器 11
2.2.1 PowerPC体系结构 11
2.2.2 飞思卡尔公司的PowerQUICC处理器 12
2.2.3 IBM的PowerPC4xx 12
2.3 MIPS处理器 13
2.4 ARM处理器 14
2.5 ARM体系结构一些重要概念 16
2.5.1 处理器工作状态 16
2.5.2 处理器模式 17
2.5.3 ARM寄存器 17
2.5.4 异常 20
2.6 XScale体系结构 22
2.6.1 XScale超级流水线 23
2.6.2 协处理器 24
2.6.3 无线MMX指令单元 24
2.6.4 内存管理 25
2.6.5 指令高速缓存 25
2.6.6 数据高速缓存 26
2.6.7 转移目标缓冲器BTB 26
2.6.8 写缓冲器 27
2.6.9 性能监视 27
2.6.10 电源管理 27
2.6.11 调试 27
2.7 PXA系列处理器 28
2.7.1 PXA255处理器 28
2.7.2 PXA27x处理器 30
本章小结 32
习题与思考题 32
第3章 嵌入式系统软件基础3.1 嵌入式程序中常见的C语言现象 33
3.1.1 宏定义 33
3.1.2 volatile关键字 35
3.1.3 static关键字 37
3.2 链表及其在Linux中的实现 38
3.2.1 链表简介 38
3.2.2 Linux链表的定义 39
3.2.3 Linux链表操作接口 40
3.3 什么是操作系统 43
3.4 操作系统发展过程 43
3.5 嵌入式操作系统 46
3.5.1 嵌入式操作系统的演化及其发展趋势 46
3.5.2 常见的嵌入式操作系统 47
3.5.3 嵌入式操作系统的选择 50
3.6 操作系统的功能 52
3.6.1 进程管理 52
3.6.2 存储器管理 55
3.6.3 设备管理 59
3.6.4 文件管理 60
本章小结 60
习题与思考题 61
第4章 Linux概述 62
4.1 Linux的历史 62
4.2 Linux常见发行版简介 63
4.3 Linux操作系统构成 64
4.3.1 总体结构 64
4.3.2 Linux内核 64
4.3.3 根文件系统目录树结构 65
4.3.4 Shell简介 67
4.3.5 Linux的文件 68
4.4 Linux基本操作 68
4.4.1 Linux命令的使用 68
4.4.2 vi编辑器的使用 86
4.4.3 Linux的配置与管理相关命令 87
4.5 嵌入式Linux简介 88
4.5.1 自制嵌入式Linux 89
4.5.2 商业版嵌入式Linux 89
4.5.3 NMT RT-Linux简介 90
4.5.4 RTAI简介 90
4.5.5 μClinux简介 91
本章小结 92
习题与思考题 93
第5章 Linux程序开发简介5.1 GNU Compiler Collection简介 94
5.1.1 用GCC编译简单程序 95
5.1.2 GCC使用简介 95
5.2 GNU make与Makefile编写 98
5.2.1 Makefile的编写 99
5.2.2 Makefile的处理过程 100
5.2.3 Makefile的变量 100
5.2.4 PHONY目标 102
5.2.5 利用隐含规则简化Makefile 103
5.2.6 make的命令行参数 104
5.2.7 Makefile示例 104
5.3 autoconf和automake简介 105
5.3.1 使用前的准备 106
5.3.2 自动生成Makefile的方法 107
5.3.3 Makefile.am的编写 109
5.3.4 自动处理复杂软件包 110
5.4 GDB/Insight调试器的使用 112
5.4.1 GDB调试工具简介 112
5.4.2 GDB图形前端Insight简介 123
5.5 Linux下集成开发工具的使用 130
5.5.1 Eclipse 130
5.5.2 KDevelop 134
本章小结 137
习题与思考题 138
第6章 嵌入式Linux开发入门6.1 嵌入式系统的开发模式 139
6.2 嵌入式Linux系统的开发流程 140
6.3 嵌入式Linux的构造 141
6.3.1 开发环境的安装 141
6.3.2 内核裁剪与编译 142
6.3.3 Busybox与根文件系统的构造 148
6.4 在开发板上运行嵌入式Linux 155
6.4.1 Linux下的串口终端仿真程序minicom简介 155
6.4.2 Bootloader简介 158
6.4.3 U-boot烧写与使用 159
6.4.4 用U-boot启动嵌入式Linux 163
6.5 嵌入式硬件仿真环境SkyEye 171
6.5.1 SkyEye编译安装 171
6.5.2 在SkyEye中运行嵌入式Linux 173
6.5.3 利用SkyEye调试Linux内核 177
本章小结 181
习题与思考题 181
第7章 嵌入式Linux接口与应用开发7.1 嵌入式应用程序开发调试 182
7.1.1 将应用程序加入嵌入式Linux系统 182
7.1.2 应用程序的移植 183
7.1.3 通过NFS调试嵌入式应用 185
7.1.4 通过Cross-gdb调试程序 188
7.2 嵌入式Web控制接口与应用 191
7.2.1 嵌入式Web服务器的移植 192
7.2.2 嵌入式系统Web控制接口的设计 193
7.3 串口编程与GSM短信收发 195
7.3.1 RS-232C串行接口标准 195
7.3.2 RS-232串行接口通信连接方式 197
7.3.3 RS-232串行接口编程 197
7.3.4 SMS短信与AT命令 201
7.3.5 SMS短信与PDU 202
7.3.6 GSM短信收发实例 207
7.4 USB接口与应用 211
7.4.1 机械和电气标准 212
7.4.2 USB总线拓朴结构 213
7.4.3 USB存储设备在嵌入式系统中的应用 214
7.4.4 USB摄像头的使用与编程 217
7.5 I2C总线接口与应用 222
7.5.1 I2C总线原理与基本操作 222
7.5.2 Linux下I2C总线的操作 224
7.5.3 利用Linux的I2C字符设备文件接口读写X1227时钟芯片 227
7.6 音频接口编程 229
7.6.1 ALSA简介 229
7.6.2 ALSA内核配置与软件安装 230
7.6.3 ALSA API接口简介 231
7.6.4 ALSA录音回放 231
本章小结 235
习题与思考题 235
第8章 嵌入式图形用户界面8.1 常见的嵌入式图形用户界面 236
8.2 帧缓冲图形设备驱动接口 237
8.2.1 帧缓冲 237
8.2.2 帧缓冲编程原理 239
8.2.3 利用帧缓冲显示图像 241
8.3 Qt/Embedded和Qtopia移植 244
8.3.1 Qt/Embedded与Qtopia简介 244
8.3.2 Qtopia移植 245
8.4 OPIE移植 254
8.4.1 准备工作 255
8.4.2 OPIE的移植 256
8.4.3 OPIE的交叉编译与运行 258
8.5 Qtopia与OPIE应用程序设计 260
8.5.1 基于Qt/Embedded的应用程序设计 260
8.5.2 在Qtopia与OPIE桌面添加应用程序 264
8.6 Qt/Embedded应用软件的国际化和中文化 265
8.6.1 Qt/Embedded应用程序的I18N支持与中文化 265
8.6.2 Qtopia和OPIE的中文化 267
本章小结 268
习题与思考题 268
第9章 嵌入式Linux网络应用开发9.1 TCP/IP和Linux网络简介 269
9.2 Linux套接字编程接口介绍 271
9.3 基于IPv4协议Socket编程 273
9.3.1 基于TCP的Socket编程 273
9.3.2 基于TCP Socket的应用实例——猜数字游戏 276
9.3.3 基于UDP的Socket编程 279
9.3.4 基于UDP Socket的应用实例——服务查询 281
9.4 IPv6网络应用程序开发 284
9.4.1 IPv6简介 284
9.4.2 IPv4程序移植到IPv6的方法 286
9.5 IPv4到IPv6程序移植实例 291
9.5.1 基于TCP Socket的猜数字游戏程序移植 291
9.5.2 基于UDP Socket的服务查询程序移植 294
本章小结 300
习题与思考题 300
附录 基于μClinux的嵌入式开发 301
参考文献 313