第1章 概述 1
1.1 嵌入式系统的发展 1
1.1.1 嵌入式系统的定义及特点 1
1.1.2 嵌入式系统的结构 2
1.1.3 嵌入式系统的发展史 3
1.2 嵌入式系统的分类 5
1.3 嵌入式系统的应用 6
1.4 嵌入式操作系统 7
1.4.1 操作系统的概念及功能 7
1.4.2 操作系统的分类 8
1.4.3 实时操作系统 9
1.4.4 常见的嵌入式操作系统 11
习题 13
第2章 ARM微处理器 14
2.1 ARM概述 14
2.1.1 ARM简介 14
2.1.2 ARM的版本及系列 15
2.2 嵌入式处理器基础 19
2.2.1 PC体系结构分类 19
2.2.2 CISC和RISC 20
2.2.3 CPU性能的影响因素 23
2.3 嵌入式处理器分类 24
2.4 ARM处理器的工作状态及运行模式 26
2.4.1 ARM处理器的工作状态 26
2.4.2 ARM处理器的运行模式 27
2.5 ARM处理器寄存器的组织结构 28
2.5.1 ARM状态下的寄存器组织 29
2.5.2 Thumb状态下的寄存器组织 31
2.5.3 程序状态寄存器 32
2.6 异常中断 32
2.6.1 异常的种类 33
2.6.2 异常向量表和优先级 34
2.6.3 异常的进入和返回 34
习题 37
第3章 ARM微处理器的指令系统 38
3.1 ARM微处理器的指令结构 38
3.1.1 ARM微处理器的指令集分类 38
3.1.2 ARM微处理器指令的格式 39
3.1.3 ARM微处理器指令的条件域 40
3.2 ARM微处理器指令集的寻址方式 41
3.2.1 立即寻址 41
3.2.2 寄存器寻址 42
3.2.3 寄存器间接寻址 42
3.2.4 寄存器移位寻址 43
3.2.5 基址变址寻址 44
3.2.6 多寄存器寻址 44
3.2.7 相对寻址 45
3.2.8 堆栈寻址 45
3.3 ARM微处理器的指令集 46
3.3.1 跳转指令 46
3.3.2 数据处理指令 48
3.3.3 乘法指令与乘加指令 53
3.3.4 程序状态寄存器指令 55
3.3.5 加载/存储指令 56
3.3.6 批量数据加载/存储指令 58
3.3.7 数据交换指令 59
3.3.8 移位指令 59
3.3.9 协处理器指令 61
3.3.10 异常中断指令 62
3.4 Thumb指令集 63
3.4.1 数据处理指令 63
3.4.2 跳转指令 64
3.4.3 Load/Store指令 65
3.4.4 软件中断指令 65
3.5 ARM程序设计基础 66
3.5.1 ARM伪指令 66
3.5.2 ARM汇编程序格式 76
3.5.3 汇编语言编程实例 80
3.6 汇编语言与C语言混合编程 81
习题 88
第4章 嵌入式系统开发环境 89
4.1 建立嵌入式系统的软件开发环境 89
4.1.1 在虚拟机上运行Linux操作系统 89
4.1.2 常用辅助工具 89
4.2 程序调试烧写工具 90
4.2.1 JTAG烧写线的制作 90
4.2.2 烧写程序Jflash简介 91
4.3 Linux操作系统移植 91
4.3.1 Bootloader概述 91
4.3.2 Linux操作系统的目录结构 94
4.3.3 Bootloader与Linux操作系统 96
4.3.4 编译及配置内核 97
4.3.5 制作根文件系统 100
4.4 ARM开发工具ADS 102
4.4.1 ADS基础 102
4.4.2 ADS中的工程管理工具CodeWarrior IDE 104
4.4.3 ADS中的调试工具AXD 110
4.4.4 调试工具条 110
4.4.5 AXD调试器中常用的调试窗口 111
习题 114
第5章 中断系统原理与应用 115
5.1 中断的基本概念 115
5.1.1 中断的基本概念和处理过程 115
5.1.2 中断源、中断信号和中断向量 117
5.1.3 接口和端口 118
5.1.4 中断优先级与中断嵌套 119
5.1.5 中断响应条件与中断控制 120
5.2 S3C2440的中断系统 120
5.2.1 S3C2440的中断源 121
5.2.2 S3C2440的中断控制 122
5.3 S3C2440中断编写实例 125
5.3.1 中断控制程序编写的步骤 125
5.3.2 中断实例 128
习题 136
第6章 Linux设备驱动程序 137
6.1 概述 137
6.2 Linux设备驱动模型 138
6.2.1 sysfs文件系统 138
6.2.2 内核相关数据结构 139
6.3 一个简单的设备驱动程序 142
6.4 设备驱动程序与硬件 146
6.5 用户程序和内核之间传递数据 148
6.6 中断技术 150
6.7 软中断和tasklets 152
6.8 /proc文件系统 156
习题 158
第7章 ADC和触摸屏接口 159
7.1 概述 159
7.2 特点 159
7.3 ADC及触摸屏接口操作 160
7.4 功能描述 160
7.4.1 AD转换时间 160
7.4.2 触摸屏接口模式 161
7.5 ADC及触摸屏接口特殊寄存器 162
7.5.1 ADC控制寄存器 162
7.5.2 ADC触摸屏控制寄存器 163
7.5.3 ADC开始延时寄存器 164
7.5.4 ADC转换数据寄存器0 164
7.5.5 ADC转换数据寄存器1 165
7.5.6 ADC触摸屏指针上下中断检测寄存器 165
7.6 ADC驱动程序及测试程序 166
7.6.1 三通道ADC驱动程序 166
7.6.2 三通道ADC采样测试程序 170
习题 171
第8章 嵌入式Linux图形用户接口 172
8.1 嵌入式GUI简介 172
8.1.1 嵌入式GUI的特点 172
8.1.2 嵌入式GUI的种类 172
8.2 嵌入式GUI——Qt 173
8.2.1 Qt与Qt/Embedded简介 173
8.2.2 Qt的特点 174
8.2.3 Qt的执行过程 174
8.2.4 Qt的插槽机制 175
8.2.5 一个完整的Qt程序 176
8.2.6 Qt Designer介绍 176
8.3 Qt/E4与键盘鼠标接口的映射 176
8.3.1 Qt/E4的移植过程 176
8.3.2 Qt/E4键盘鼠标接口的工作原理 180
8.3.3 Qt/E4与Linux PS/2键盘鼠标驱动的衔接 181
8.3.4 Qt/E4键盘驱动映射的实现 182
习题 184
第9章 基于ARM嵌入式银行排队模拟系统 185
9.1 功能分析 185
9.2 硬件设计 186
9.2.1 硬件总体设计 186
9.2.2 功能模板接口与连接 188
9.3 软件设计 189
9.3.1 软件总体结构设计 189
9.3.2 服务器软件设计 190
9.3.3 客户端软件设计 191
9.3.4 应用程序开发 192
习题 205
第10章 远程医疗监控系统设计 206
10.1 远程医疗监护系统概述 206
10.1.1 远程医疗监护系统发展背景 206
10.1.2 GPRS远程医疗监护系统组成 207
10.2 系统硬件接口描述 207
10.2.1 串口操作介绍 207
10.2.2 串口相关寄存器描述 208
10.3 硬件系统设计 209
10.3.1 数字加速度计ADXL345 210
10.3.2 GPRS模块介绍 213
10.3.3 GPS模块介绍 214
10.4 软件系统设计 218
10.4.1 程序流程图 218
10.4.2 程序代码及注释 219
习题 237
参考文献 238