第1章 嵌入式系统基础 2
1.1 嵌入式系统概述 2
1.1.1 嵌入式系统的定义 2
第1部分 嵌入式系统知识 2
1.1.2 嵌入式系统的组成 3
1.1.3 嵌入式系统的特点 4
1.1.4 嵌入式系统的应用 5
1.1.5 实时系统 5
1.2 嵌入式处理器 7
1.2.1 嵌入式微处理器(EMPU) 7
1.2.2 微控制器(MCU) 7
1.3 嵌入式操作系统 8
1.3.1 操作系统的概念及分类 8
1.2.3 DSP 8
1.2.4 SoC 8
1.3.2 几个主要的概念 9
1.3.3 实时操作系统 10
1.4 嵌入式技术发展现状及趋势 14
1.5 嵌入式技术在汽车中的广泛应用 16
1.5.1 嵌入式技术的快速发展给汽车工业带来了新的生机 16
1.5.2 我国汽车电子市场的发展状况 17
思考题与习题 20
本章小结 20
第2章 嵌入式系统开发过程 21
2.1 嵌入式软件开发的特点 21
2.1.1 需要交叉开发环境 21
2.1.2 引入任务设计方法 21
2.1.3 需要固化程序 21
2.1.4 软件开发难度大 21
2.2.2 设计阶段 22
2.2.3 生成代码调试阶段 22
2.2 嵌入式软件的开发流程 22
2.2.1 需求分析阶段 22
2.2.4 固化阶段 23
2.2.5 嵌入式软件开发的要点 23
2.3 嵌入式系统的调试 24
本章小结 24
思考题与习题 24
第2部分 ARM体系结构 26
第3章 ARM微处理器概述 26
3.1 发展历程 26
3.2 ARM微处理器系列 26
3.2.1 ARM7系列 27
3.2.2 ARM9/9E系列 28
3.2.3 ARM10E系列 28
3.2.4 ARM11系列 29
3.3 技术特点 30
3.4 应用选型 30
3.2.5 其他 30
3.4.1 内核选择 31
3.4.2 工作速度 31
3.4.3 片内存储器容量 31
3.4.4 片内外设 31
3.4.5 其他因素 32
3.5 相关术语 32
3.5.1 RISC与CISC 32
3.5.2 流水线 33
3.5.3 Von Neumman和Harvard计算机结构 34
3.5.4 AMBA总线 34
3.5.5 ARM相关技术 35
本章小结 36
思考题与习题 36
第4章 编程模型 37
4.1 数据类型 37
4.2 存储器格式 37
4.4 处理器运行模式 38
4.3 工作状态切换 38
4.5 寄存器组织 39
4.5.1 通用寄存器 40
4.5.2 Thumb状态寄存器组织 41
4.5.3 程序状态寄存器 43
4.6 异常 44
4.6.1 异常类型 45
4.6.2 异常响应 45
4.6.3 异常返回 45
4.6.4 异常向量 46
4.6.5 异常优先级 46
4.6.6 异常描述 46
4.6.7 应用程序的异常处理 48
本章小结 48
思考题与习题 49
5.1 指令的分类与格式 50
第5章 ARM微处理器指令系统 50
5.2 指令的条件域 51
5.3 ARM指令的寻址方式 52
5.3.1 立即寻址 52
5.3.2 寄存器寻址 52
5.3.3 寄存器间接寻址 52
5.3.5 多寄存器寻址 53
5.3.6 相对寻址 53
5.3.4 基址变址寻址 53
5.3.7 堆栈寻址 54
5.4 ARM指令集 54
5.4.1 跳转指令 54
5.4.2 数据处理指令 55
5.4.3 乘法指令 60
5.4.4 程序状态寄存器访问指令 62
5.4.5 加载/存储指令 63
5.4.6 批量数据加载/存储指令 65
5.4.7 移位操作 67
5.4.8 协处理器指令 68
5.4.9 异常指令 70
5.5 Thumb指令集 70
本章小结 71
思考题与习题 71
第3部分 嵌入式操作系统Linux 74
第6章 嵌入式Linux操作系统 74
6.1 Linux概况 74
6.1.1 Linux和UNIX的历史 74
6.1.2 Linux的特点 77
6.1.3 Linux应用 78
6.2 嵌入式Linux的基本结构 79
6.3 Linux目录结构 80
6.3.1 root文件系统 81
6.3.2 /usr文件系统 81
6.4 Linux内核简介 82
6.3.3 /var文件系统 82
6.3.4 /proc文件系统 82
6.5 嵌入式Linux系统开发流程 84
本章小结 85
思考题与习题 85
第7章 嵌入式Linux应用程序的开发 86
7.1 Linux的使用 86
7.1.1 Linux常用命令 86
7.1.2 VI编辑器的使用 103
7.2 GNU开发工具的使用 106
7.2.1 GCC编译器 107
7.2.2 GNU Make 109
7.2.3 使用GDB 115
7.3 开发环境的建立 120
7.3.1 安装开发环境 120
7.3.2 配置开发环境 123
7.3.3 使用开发环境 125
7.4.1 低级文件操作 132
7.4 在嵌入式Linux下开发应用程序 132
7.4.2 标准输入输出 133
7.4.3 内存管理 133
7.4.4 进程和管道 134
7.4.5 信号 144
7.5 应用程序调试 151
7.5.1 通过以太网口远程调试 152
7.5.2 通过串口远程调试 154
7.5.3 使用DDD进行远程调试 155
本章小结 159
思考题与习题 159
第8章 嵌入式Linux驱动程序开发 160
8.1 嵌入式Linux的设备管理 160
8.1.2 驱动程序结构 161
8.1.1 驱动程序的概念 161
8.1.3 Linux对中断的处理 163
8.1.4 设备驱动的初始化 164
8.2 驱动程序的开发过程 166
8.2.1 驱动程序的开发流程 166
8.2.2 设备驱动程序存取 167
8.2.3 基于模块化的字符设备驱动框架 167
8.2.4 模块化驱动程序的加载和卸载 168
8.3 串口驱动程序 169
8.4 LCD驱动程序 174
8.4.1 Linux的帧缓冲设备 174
8.4.2 帧缓冲驱动的编写 176
本章小结 177
思考题与习题 177
9.1.2 图形用户界面系统的结构模型 178
9.1.1 对嵌入式GUI的认识 178
9.1 嵌入式GUI 178
第9章 嵌入式Linux下GUI的实现 178
9.2 MiniGUI 179
9.2.1 MiniGUI简介 179
9.2.2 在PC上安装与配置MiniGUI 181
9.2.3 MiniGUI下应用程序的开发方法与流程 184
9.2.4 MiniGUI编程示例 185
9.3 Qt、Qt/Embedded 192
9.3.1 Qt、Qt/Embedded简介 192
9.3.2 在PC上安装与配置Qt/Embedded 193
9.3.3 Qt下应用程序的开发方法与流程 194
9.3.4 QT编程示例 196
本章小结 197
思考题与习题 198
10.1.1 信号与系统 200
10.1 数据采集(DAQ)基础 200
第4部分 车载信息系统应用实例 200
第10章 MC9328MX1最小系统设计 200
10.1.2 信号采集 201
10.1.3 数据采集系统的功能 202
10.2 MC9328MX1概述 204
10.2.1 系统总体框图 206
10.2.2 系统主要部件 206
10.3 引脚定义及描述 212
10.4.1 EMOTION ARM 9 Linux开发系统概述 218
10.4 系统硬件选型与单元电路设计 218
10.4.2 EMOTION ARM 9 Linux开发系统资源接口说明 223
10.4.3 系统硬件选型与单元电路设计 233
10.4.4 硬件调试 253
10.4.5 印制电路板的设计 257
本章小结 260
思考题与习题 260
11.1.2 10/100Mbps以太网接口电路 261
11.1.1 10/100Mbps以太网接口电路特点 261
第11章 ARM9 Linux外围电路实例 261
11.1 10/100Mbps以太网接口电路 261
11.2 通用I/O接口电路 264
11.2.1 基本原理 264
11.2.2 硬件接口电路 265
11.3 Slave USB硬件接口电路 269
11.3.1 基本原理 269
11.3.2 USB的硬件接口电路 270
11.4 Audio CODEC硬件接口电路 271
11.4.1 基本原理 271
11.4.2 接口电路 274
11.5 LCD显示接口电路 276
11.5.1 LCD基本原理 276
11.5.2 LCD的驱动控制 277
11.5.3 LCD显示接口 278
11.6.1 触摸屏基本原理 280
11.6 LCD触摸屏接口电路 280
11.6.2 触摸屏与显示器的配合 281
11.6.3 触摸屏接口电路 282
11.7 模数转换接口电路 284
11.7.1 基本原理 284
11.7.2 A/D转换接口电路 286
11.8 D/A转换接口电路 287
11.8.1 基本原理 287
11.8.2 DAC硬件接口电路 290
11.9 CAN通信接口电路 292
11.9.1 基本原理 292
11.9.2 CAN通信接口电路 293
本章小结 293
思考题与习题 293
12.1.1 系统分析 294
12.1.2 系统功能 294
12.1 车辆信息采集系统 294
第12章 基于EMOTION的车辆信息采集系统 294
12.1.3 各级界面中分别要实现的功能 298
12.1.4 基于EMOTION开发系统的车辆信息系统 298
12.2 内核模块设计 299
12.2.1 内核模块编写快速入门 299
12.2.2 内核剪裁和文件系统创建 300
12.2.3 文件系统的建立 305
12.3 串口通信 307
12.4 开关量操作模块 308
12.4.1 系统工作原理 308
12.4.2 开发内容 309
12.4.3 开发步骤 309
12.5 车辆状态监测 310
12.5.1 软件实现原理 310
12.5.2 开发内容 310
12.6.1 MX1片内LCD控制器操作 311
12.6 人机界面开发 311
12.5.3 开发步骤 311
12.6.2 EMOTION ARM9 Linux的液晶显示系统 313
12.6.3 开发内容 314
12.6.4 开发步骤 314
12.7 CAN总线通信开发 314
12.7.1 软件原理 314
12.7.2 开发步骤 315
12.8.2 开发内容 316
12.8.3 开发步骤 316
12.8.1 开发原理 316
12.8 多进程编程开发 316
本章小结 317
思考题与习题 317
附录A Linux常用操作介绍 318
附录B EMOTION(ARM9 Linux)核心板电路原理图 320
附录C EMOTION(ARM9 Linux)扩展板电路原理图 326
参考文献 333