第1章 嵌入式系统基础 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统基本概念 1
1.1.2 嵌入式系统的体系结构 2
1.1.3 嵌入式系统的特点 3
1.2 嵌入式系统的发展和应用领域 4
1.2.1 嵌入式系统的发展历史 4
1.2.2 嵌入式系统的发展前景及趋势 5
1.3 嵌入式操作系统 7
1.3.1 嵌入式操作系统的发展 7
1.3.2 几种有代表性的嵌入式操作系统 7
1.4 嵌入式系统的开发过程 10
1.5 嵌入式系统应用方案 10
1.5.1 基于嵌入式的视频网络监控系统 10
1.5.2 基于嵌入式系统的锅炉控制方案 12
1.5.3 基于嵌入式系统的网关实现方案 15
本章小结 16
习题 16
第2章 嵌入式系统硬件体系结构 17
2.1 相关基础知识 17
2.1.1 嵌入式微处理器 17
2.1.2 嵌入式微处理器的流水线技术 18
2.1.3 寄存器与存储器 19
2.1.4 总线 20
2.1.5 I/O端口 22
2.1.6 中断 23
2.1.7 数据编码 24
2.2 嵌入式系统硬件平台 25
2.3 ARM微处理器体系 30
2.3.1 ARM公司及ARM体系结构 30
2.3.2 ARM系列微处理器简介 32
2.4 微处理器的结构 33
2.4.1 RISC体系结构和ARM设计思想 33
2.4.2 ARM11微处理器结构的最小系统设计 34
2.4.3 Cortex微处理器结构 35
本章小结 36
习题 36
第3章 嵌入式Linux操作系统 37
3.1 Linux基本概念 37
3.2 嵌入式Linux文件系统 39
3.2.1 基于Flash的文件系统 40
3.2.2 基于RAM的文件系统 42
3.2.3 网络文件系统NFS 42
3.3 Linux常用操作命令 42
3.3.1 文件目录相关命令 43
3.3.2 磁盘及系统操作 47
3.3.3 打包压缩相关命令 50
3.3.4 与网络相关命令 51
3.4 Linux的文本编辑器 52
3.4.1 vi文本编辑器 52
3.4.2 gedit文本编辑器 55
3.5 Linux启动过程 56
3.5.1 Linux系统的引导过程 57
3.5.2 ARM Linux操作系统 59
本章小结 60
习题 60
第4章 嵌入式Linux程序开发基础 61
4.1 嵌入式Linux编译器 61
4.1.1 Linux下C语言编译过程 61
4.1.2 GCC编译器 62
4.2 “文件包含”处理 66
4.3 make命令和makefile 工程管理 69
4.3.1 认识make 69
4.3.2 makefile变量 72
4.3.3 makefile规则 73
4.3.4 make命令的使用 74
4.4 嵌入式Linux汇编语言程序设计 74
4.4.1 嵌入式Linux汇编语言格式 75
4.4.2 嵌入式Linux汇编程序示例 76
4.4.3 编译嵌入式Linux汇编程序 77
4.5 嵌入式Linux Shell编程 78
4.5.1 Shell语法基础 78
4.5.2 Shell的流程控制语句 80
4.5.3 Shell编程示例 80
4.6 位运算 81
4.6.1 位运算符 81
4.6.2 位表达式 84
本章小结 85
习题 85
第5章 嵌入式系统开发环境的建立 86
5.1 建立宿主机开发环境 86
5.1.1 交叉编译 86
5.1.2 建立交叉编译开发环境 87
5.2 配置超级终端minicom 89
5.3 建立数据共享服务 91
5.3.1 Linux系统的数据共享——NFS服务 91
5.3.2 串口通信协议 95
5.3.3 在VMware虚拟机中设置Windows-Linux的数据共享 99
5.4 编译嵌入式Linux系统内核 101
5.4.1 内核裁剪配置 101
5.4.2 内核编译 104
5.5 文件系统的制作 105
5.6 嵌入式系统开发板的烧写方法 108
5.6.1 Bootloader 108
5.6.2 ARM S3C2410开发板的烧写 110
5.6.3 XSCALE PXA270开发板的烧写 116
本章小结 120
习题 120
第6章 文件处理与进程控制 122
6.1 嵌入式Linux的文件处理 122
6.1.1 文件描述符及文件处理 122
6.1.2 open函数和close函数 123
6.1.3 read函数、write函数和lseek函数 125
6.2 进程与进程控制 128
6.2.1 进程 128
6.2.2 进程控制 130
6.3 进程间通信 134
6.3.1 进程间的通信方式 134
6.3.2 管道 135
6.3.3 共享内存 137
6.4 嵌入式Linux串口通信技术 141
6.4.1 嵌入式Linux串口通信基础 141
6.4.2 嵌入式Linux串口设置详解 143
6.4.3 RS232C标准 144
6.4.4 串口驱动程序的编写 147
本章小结 153
习题 154
第7章 嵌入式Linux网络应用开发 155
7.1 网络编程的基础知识 155
7.1.1 IP地址和端口号 155
7.1.2 套接字 157
7.2 Socket网络编程 158
7.2.1 Socket网络函数 158
7.2.2 Socket网络编程示例 161
7.3 嵌入式系统的Web服务器程序设计 168
7.3.1 Web服务器 168
7.3.2 Web服务器的程序设计 168
7.4 开发新的TCP通信协议 174
本章小结 175
习题 176
第8章 嵌入式设备驱动程序设计 177
8.1 嵌入式设备驱动程序基础 177
8.1.1 设备驱动程序概述 177
8.1.2 设备驱动程序的框架 179
8.1.3 设备驱动程序的加载过程 180
8.1.4 设备驱动程序的功能接口函数模块 182
8.1.5 设备驱动程序重要的数据结构体 184
8.2 字符设备驱动程序设计 186
8.2.1 字符设备驱动程序 186
8.2.2 编译和加载驱动程序 190
8.3 简单字符驱动程序设计示例 193
8.4 块设备驱动程序设计 198
8.4.1 块设备的基本概念 198
8.4.2 块设备的重要数据结构体 199
8.4.3 块设备的驱动程序设计方法 203
本章小结 206
习题 207
第9章 设备驱动程序开发实例 208
9.1 通用I/O接口驱动程序设计 208
9.1.1 GPIO设备驱动 208
9.1.2 PXA270的GPIO端口简介 208
9.1.3 编写LED设备驱动程序 210
9.1.4 编写LED用户应用程序 213
9.1.5 编译与运行程序 214
9.2 键盘驱动程序的设计 216
9.2.1 键盘原理介绍 216
9.2.2 键盘驱动程序设计思路分析 218
9.2.3 键盘驱动程序设计 221
9.2.4 键盘用户应用程序设计 224
9.2.5 编译和运行程序 226
9.3 直流电机驱动程序设计 227
9.3.1 直流电机控制电路设计 227
9.3.2 直流电机驱动程序 228
9.3.3 直流电机用户应用程序 231
9.3.4 编译和运行程序 232
9.4 步进电机驱动程序设计 233
9.4.1 步进电机的基本概念及工作原理 234
9.4.2 嵌入式系统控制步进电机 235
9.4.3 步进电机驱动程序设计 236
9.4.4 步进电机用户应用程序设计 243
9.4.5 编译与运行程序 245
9.5 数码管驱动程序设计 246
9.5.1 数码管工作原理 246
9.5.2 译码器74LS48简介 247
9.5.3 数码管驱动程序设计实例 248
本章小结 256
习题 256
第10章 Android系统开发环境的建立 257
10.1 在主机端建立Android系统开发环境 257
10.1.1 安装Android SDK前必要的准备 257
10.1.2 安装Android SDK 258
10.1.3 设置环境变量 258
10.1.4 安装ADT插件 258
10.2 创建Android应用程序 262
10.2.1 生成Android应用程序框架 262
10.2.2 编写MainActivity.java代码 264
10.2.3 配置应用程序的运行参数 264
10.2.4 在模拟器中运行应用程序 265
10.3 Android应用程序结构 266
10.3.1 目录结构 266
10.3.2 Android应用程序架构分析 272
10.4 Android应用程序设计示例 273
10.5 Android系统内核的编译与文件系统制作 275
10.5.1 安装系统及工具 275
10.5.2 编译内核及制作文件系统映像文件 277
本章小结 278
习题 278
附录 内核升级 279