第1章 嵌入式系统概述 1
1.1 什么是嵌入式系统 1
1.1.1 嵌入式系统的定义 1
1.1.2 嵌入式系统的特点 3
1.1.3 嵌入式系统的发展历程 3
1.1.4 嵌入式系统的应用领域及发展趋势 4
1.2 嵌入式系统结构 6
1.2.1 嵌入式系统构架 6
1.2.2 嵌入式微处理器 7
1.2.3 嵌入式操作系统 8
1.3 嵌入式系统开发方法 10
1.3.1 嵌入式系统开发概述 10
1.3.2 嵌入式系统开发模式 13
1.3.3 嵌入式Linux系统开发流程 13
1.3.4 实例:汽车GPS导航系统设计 14
1.4 基于ARM9的硬件开发平台 17
1.4.1 ARM处理器简介 17
1.4.2 ARM微处理器核的体系结构 19
1.4.3 ARM硬件开发平台 23
习题1 26
实训项目一 组建开发平台 27
任务1 认识开发模型 27
任务2 开发板的选定 27
任务3 开发方案的确定 28
第2章 嵌入式Linux程序开发基础 29
2.1 Linux操作系统基础 29
2.1.1 Linux操作系统的安装 29
2.1.2 Linux文件系统及目录结构 35
2.1.3 Linux文本编辑器Vi 39
2.2 Linux常用操作命令 42
2.2.1 文件目录相关命令 42
2.2.2 系统操作命令 46
2.2.3 打包压缩相关命令 47
2.2.4 网络相关命令 49
2.2.5 获取联机帮助 50
2.3 嵌入式Linux编译器 50
2.3.1 编译、运行C语言程序 50
2.3.2 GCC程序编译流程 51
2.3.3 优化编译 54
2.3.4 自定义头文件编译处理 56
2.3.5 库文件的创建及使用 57
2.4 GDB程序调试器 59
2.4.1 GDB调试C语言程序 60
2.4.2 GDB基本命令 62
2.5 make命令和makefile工程管理 63
2.5.1 认识makefile 63
2.5.2 简单计算器程序的makefile文件编写 65
2.5.3 makefile变量 69
2.5.4 makefile规则 71
2.5.5 自动生成makefile 72
习题2 74
实训项目二 Linux下C语言程序的编译及调试 77
任务1 安装虚拟机 77
任务2 安装Linux操作系统 78
任务3 常用命令练习 78
任务4 用GCC编译程序 79
任务5 用GDB调试程序 80
任务6 编写makefile文件 82
第3章 构建嵌入式Linux开发环境 84
3.1 建立交叉编译环境 84
3.1.1 什么是交叉编译 84
3.1.2 建立交叉编译环境 85
3.1.3 交叉编译实例 87
3.2 宿主机与目标机之间的通信 87
3.2.1 连接宿主PC机与ARM目标板 87
3.2.2 Windows超级终端 88
3.2.3 配置Minicom 90
3.2.4 配置NFS服务 93
3.3 Windows-Linux文件共享 96
3.3.1 使用虚拟机的共享文件夹功能 96
3.3.2 配置Linux Samba服务器 98
习题3 101
实训项目三 嵌入式Linux开发环境配置 102
任务1 配置Minicom 102
任务2 安装、配置、测试交叉编译环境 103
任务3 配置NFS服务 104
第4章 文件处理与多任务编程 106
4.1 系统调用和文件描述符 106
4.1.1 系统调用 106
4.1.2 文件及文件描述符 107
4.2 嵌入式Linux文件处理 107
4.2.1 文件处理函数 107
4.2.2 文件操作实例 110
4.3 嵌入式Linux串口应用编程 112
4.3.1 串口传输数据的工作原理 113
4.3.2 串口的配置流程 114
4.3.3 串口编程实例 116
4.3.4 从PC机串口向开发板发送数据 121
4.4 嵌入式Linux进程编程 124
4.4.1 Linux进程概述 124
4.4.2 进程与进程控制 126
4.4.3 Linux守护进程 132
4.4.4 进程间的通信 135
4.5 嵌入式Linux线程编程 143
4.5.1 线程的概念 143
4.5.2 简单的多线程编程实例 144
4.5.3 多线程访问控制 146
习题4 154
实训项目四 嵌入式Linux文件I/O及多任务编程 156
任务1 嵌入式Linux文件读写 156
任务2 使用管道实现父进程写数据,子进程读数据 158
任务3 多线程解决“生产者—消费者”问题 160
第5章 嵌入式数据库 164
5.1 关系数据库基础 164
5.1.1 认识数据库 164
5.1.2 关系数据库理论 165
5.1.3 关系数据库设计 167
5.2 嵌入式数据库概述 175
5.2.1 嵌入式数据库简介 175
5.2.2 嵌入式数据库的特点 175
5.2.3 嵌入式数据库的应用 176
5.3 SQLite数据库 179
5.3.1 SQLite简介 179
5.3.2 Linux下SQLite数据库的安装 181
5.3.3 SQLite在ARM-Linux平台上的移植 182
5.3.4 SQLite的数据类型 183
5.3.5 SQLite数据库的基本命令 186
5.3.6 SQLite C/C++接口 189
5.4 嵌入式数据库应用实例 191
5.4.1 嵌入式数据库设计 192
5.4.2 C语言编程实现对嵌入式数据库的操作 192
5.4.3 嵌入式数据库测试 194
习题5 196
实训项目五 SQLite3数据库操作 197
第6章 嵌入式Linux应用开发 199
6.1 图形界面应用程序设计 199
6.1.1 Qt简介 199
6.1.2 构建Qt集成开发环境 199
6.1.3 简单计算器应用程序 200
6.2 嵌入式Web服务器的移植和应用 208
6.2.1 嵌入式Web服务器的移植和配置 209
6.2.2 在TINY210开发板上运行boa 211
6.2.3 在UP-NETARM2410实验箱上运行boa 213
6.2.4 客户端浏览器读取嵌入式设备文件数据 214
6.3 基于ARM-Linux的数据采集系统 218
6.3.1 系统结构 218
6.3.2 硬件电路连接 219
6.3.3 Socket网络编程 221
6.3.4 数据采集系统软件设计 225
6.3.5 系统调试 233
6.4 嵌入式Linux时间编程 235
6.4.1 时间类型 235
6.4.2 常用时间函数 235
6.4.3 时间信息的获取 238
6.4.4 计算程序运行时间 239
参考文献 240