第一篇 基础理论篇 3
第1章 嵌入式系统基础知识 3
1.1 嵌入式系统概述 3
1.2 嵌入式系统的定义 4
1.3 嵌入式系统的发展阶段 5
1.4 嵌入式系统的应用 5
小结 8
习题 8
第2章 嵌入式系统的体系结构 9
2.1 嵌入式组成结构概述 9
2.2 嵌入式系统的硬件构成 10
2.2.1 嵌入式处理器 11
2.2.2 嵌入式存储器 13
2.2.3 外设及接口 15
2.2.4 输入输出设备 16
2.3 嵌入式系统的软件构成 17
2.3.1 中间部件 17
2.3.2 嵌入式操作系统 17
2.3.3 嵌入式应用程序 20
2.4 嵌入式系统开发的流程 20
2.4.1 嵌入式系统开发的特点 20
2.4.2 嵌入式系统开发周期 21
2.4.3 嵌人式系统的开发环境 23
小结 26
习题 26
第二篇 ARM基础编程篇 29
第3章 ARM处理器概述及其体系结构 29
3.1 ARM处理器的概述 29
3.1.1 ARM的设计思想 29
3.1.2 ARM体系系列的命名规则 30
3.1.3 ARM处理器系列 33
3.2 ARM处理器的存储系统 36
3.3 ARM处理器的状态 38
3.4 ARM处理器的工作模式 39
3.5 ARM的寄存器 40
3.5.1 通用寄存器 40
3.5.2 程序状态寄存器 42
3.6 Thumb状态下的寄存器 44
3.7 ARM的流水线工作方式 45
3.8 异常中断处理 47
3.8.1 ARM中异常的种类 47
3.8.2 ARM异常中断处理 48
小结 51
习题 52
第4章 ARM指令系统 53
4.1 ARM汇编语言程序设计概述 53
4.1.1 ARM汇编语言中的程序结构 53
4.1.2 ARM指令集简介 54
4.1.3 指令的条件执行 55
4.2 ARM指令寻址方式 56
4.3 跳转指令 60
4.4 数据处理指令 63
4.4.1 数据处理指令简介 63
4.4.2 第二个操作数 63
4.4.3 数据传输指令 65
4.4.4 算术运算指令 67
4.4.5 逻辑运算指令 69
4.4.6 比较指令 70
4.4.7 测试指令 71
4.5 乘法指令与乘加指令 72
4.6 Load/Store内存访问指令 75
4.6.1 单寄存器Load/Store指令 75
4.6.2 多寄存器传送指令 78
4.6.3 交换指令 83
4.7 状态寄存器访问指令 84
4.8 异常产生指令 86
4.9 协处理器指令 87
4.9.1 协处理器数据操作 88
4.9.2 协处理器数据传送指令 88
4.9.3 协处理器寄存器传送指令 89
4.10 伪指令 91
4.11 Thumb指令集及其应用介绍 93
小结 95
习题 95
第5章 ARM嵌入式接口技术 97
5.1 Intel PXA270处理器概述 97
5.1.1 Xscale内核的特点 97
5.1.2 PXA270处理器的结构 98
5.2 EELiod270平台概述 100
5.3 GPIO模块 101
5.3.1 GPIO的原理和特点 101
5.3.2 PXA27x的GPIO寄存器简述 107
5.3.3 GPIO的应用举例 111
5.3.4 GPIO的综合实例 113
5.4 UART异步串行模块 116
5.4.1 异步串行接口介绍 116
5.4.2 UART模块简介 119
5.4.3 异步串行接口寄存器的使用和配置 122
5.5 异步串行接口使用实例 130
5.5.1 采用查询方式发送/接收数据 130
5.5.2 中断处理完成发送/接收数据 134
5.6 中断处理 134
5.6.1 中断原理 135
5.6.2 Intel PXA270中断控制器结构 137
5.6.3 中断源 138
5.6.4 主要寄存器介绍 139
5.6.5 中断控制器的使用 141
5.6.6 综合应用实例 142
小结 148
习题 149
第三篇 嵌入式Linux系统编程篇 153
第6章 嵌入式开发环境的构建 153
6.1 嵌入式交叉编译环境介绍 153
6.2 minicom的配置与使用 154
6.2.1 串口通信参数的设置 154
6.2.2 利用串口通信文件传输 156
6.3 交叉编泽环境的建立 158
6.3.1 安装交叉编译工具 158
6.3.2 交叉编译环境的测试 161
6.4 网络数据传输 162
6.4.1 IP地址的设置 162
6.4.2 网络文件系统的配置 163
6.4.3 FTP的使用方法 164
6.5 Makefile 165
6.5.1 Makefile的基本结构 165
6.5.2 Makefile中的变量 167
6.5.3 隐含规则 169
6.5.4 文件引用 170
6.5.5 Makefile中的函数 170
6.5.6 运行make 170
6.5.7 Makefile综合实例 171
小结 174
习题 175
第7章 嵌入式Linux系统的构建 176
7.1 嵌入式BootLoader技术 176
7.1.1 BootLoader的基本概念 176
7.1.2 常见的BootLoader 177
7.1.3 BootLoader程序架构分析 180
7.1.4 BootLoader程序的编译 188
7.1.5 BootLoader的下载 188
7.2 嵌入式Linux内核的移植 193
7.2.1 内核源代码目录介绍 193
7.2.2 内核的配置系统 194
7.2.3 Kbuild Makefile的语法 197
7.2.4 编译内核的常用命令 199
7.2.5 内核配置项介绍 199
7.2.6 Linux2.6内核的移植 208
7.3 嵌入式根文件系统的构建 211
7.3.1 嵌入式根文件系统简介 211
7.3.2 Linux文件系统的种类与特点 211
7.3.3 利用Busybox软件制作嵌入式文件系统 212
小结 217
习题 218
第8章 嵌入式Linux系统编程 219
8.1 嵌入式Linux简介 219
8.2 进程控制概述 220
8.2.1 Linux进程简介 220
8.2.2 进程的状态 220
8.3 进程控制编程 221
8.3.1 进程的创建 221
8.3.2 system函数 226
8.3.3 exec()函数族替换进程 227
8.3.4 wait()和waitpid()函数 231
8.3.5 Linux守护进程 237
8.4 信号 241
8.4.1 信号概述 241
8.4.2 信号相关的函数 243
8.4.3 信号集 247
8.4.4 信号处理 249
8.5 进程间的通信 254
8.5.1 管道通信 255
8.5.2 标准I/O流管道 259
8.5.3 FIFO管道 260
8.5.4 共享内存 265
8.5.5 消息队列 273
8.6 线程的控制编程 278
8.6.1 线程概述 278
8.6.2 Linux线程的基本操作 279
8.6.3 线程的属性 282
8.6.4 线程同步 284
小结 290
习题 291
第四篇 基于ARM嵌入式Linux系统的开发篇 295
第9章 嵌入式Linux设备驱动开发 295
9.1 设备驱动概述 295
9.2 模块机制 296
9.3 驱动程序的开发方法 302
9.3.1 设备标识 302
9.3.2 设备驱动程序的结构体 303
9.4 驱动程序的基本框架 305
9.5 嵌入式Linux字符设备驱动 311
9.5.1 Linux字符设备驱动结构 311
9.5.2 字符设备驱动编程实例 313
9.5.3 字符设备驱动加载介绍 326
小结 328
习题 328
第10章 嵌入式图形用户界面 329
10.1 嵌入式图形用户界面简介 329
10.2 常见的嵌入式图形用户界面 330
10.3 Qt图像开发工具 331
10.3.1 Qt与Qt/E 331
10.3.2 信号和槽 333
10.4 基于Qt/E的嵌入式GUI开发环境的构建 335
10.4.1 使用的相关工具 335
10.4.2 Qt/Embedded的编译设置 336
10.4.3 移植的操作流程 337
10.4.4 针对ARM开发平台的Qt/Embedded的编译步骤 337
10.5 Qt的工具 341
10.5.1 Qt设计器 341
10.5.2 Qt Creator 348
10.6 Qt编程 353
10.6.1 窗口的基础类QWidget 353
10.6.2 程序主窗口QMainWindow 353
10.6.3 布局管理器 357
10.6.4 信号和槽机制的实例 359
10.6.5 2D绘图 362
小结 368
习题 369
参考文献 370