第一部分 嵌入式操作系统基础 1
第1章 嵌入式系统概论 1
1.1 嵌入式系统的定义 1
1.2 嵌入式系统的发展过程 2
1.3 嵌入式系统的开发流程 3
1.4 嵌入式操作系统介绍 5
习题 6
第2章 Linux系统介绍 7
2.1 Linux的特点 7
2.2 Linux的安装 9
2.2.1 安装方式 9
2.2.2 以虚拟机方式安装Linux 10
2.2.3 以多操作系统方式安装Linux 17
2.3 X-Window图形界面操作 18
2.3.1 桌面组件 19
2.3.2 面板 22
2.3.3 显示配置 22
2.3.4 常用应用程序 23
2.4 网络配置 27
2.4.1 图形界面方式 28
2.4.2 命令行方式 29
习题 34
第3章 Linux常用命令 35
3.1 Linux文件与目录 35
3.1.1 Linux中的文件类型 35
3.1.2 常用目录 36
3.1.3 路径 37
3.1.4 对文件操作的用户分类 37
3.1.5 文件操作权限 37
3.1.6 文件名通配符 38
3.2 常用命令 38
3.2.1 文件类 38
3.2.2 权限类 52
3.2.3 磁盘类 55
3.2.4 模块类 57
3.3 输入输出转向和管道 59
3.3.1 输入转向 59
3.3.2 输出转向 59
3.3.3 管道 59
3.4 vi编辑器的使用 59
3.4.1 启动vi编辑器 60
3.4.2 命令行状态 60
3.4.3 编辑状态 62
习题 62
第4章 与嵌入式系统开发相关的Linux服务 63
4.1 TFTP服务 63
4.1.1 检测与安装软件包 63
4.1.2 服务器端设置 65
4.1.3 启动TFTP服务 66
4.1.4 设置防火墙 67
4.1.5 TFTP服务客户端 67
4.2 Telnet 70
4.2.1 Telnet简介 70
4.2.2 启动Telnet服务 70
4.2.3 测试服务 70
4.2.4 定制服务 71
4.3 NFS 72
4.3.1 NFS介绍 72
4.3.2 服务器端的配置 72
4.3.3 启动服务 73
4.3.4 定制防火墙 73
4.3.5 使用服务 74
习题 74
第5章 Linux中的C语言编程 75
5.1 GCC 75
5.1.1 GCC介绍 75
5.1.2 GCC的使用 76
5.1.3 使用举例 77
5.2 GDB 77
5.2.1 GDB介绍 77
5.2.2 GDB的使用 77
5.2.3 GDB的使用举例 78
5.3 make工具 79
5.3.1 make工具介绍 79
5.3.2 makefile文件 79
5.3.3 make使用举例 80
习题 81
第二部分 ARM体系结构和指令系统 82
第6章 ARM处理器 82
6.1 ARM公司简介 82
6.2 ARM处理器的特点及其应用领域 83
6.3 ARM ISA概述 84
6.4 ARM处理器系列 88
6.4.1 ARM7系列 89
6.4.2 ARM9系列 90
6.4.3 ARM9E系列 90
6.4.4 ARM10E系列 91
6.4.5 ARM11系列 91
6.4.6 Cortex系列 92
6.4.7 SecurCore系列 93
6.5 ARM处理器编程模型 94
6.5.1 数据类型 94
6.5.2 处理器模式 94
6.5.3 寄存器组织 95
6.5.4 异常处理机制 98
6.5.5 存储器组织结构 99
习题 100
第7章 ARM指令集 101
7.1 条件执行 101
7.2 操作数预处理 103
7.3 运算类指令 107
7.4 控制类指令 119
7.5 传送类指令 126
7.6 Thumb指令集概述 133
习题 133
第8章 ARM汇编语言程序设计 134
8.1 用ADS调试ARM汇编语言程序 134
8.1.1 编辑ARM汇编语言源程序 135
8.1.2 在命令行方式下调试 136
8.1.3 在IDE环境下调试 136
8.2 ARM汇编语言程序基本结构 140
8.2.1 ARM汇编语言语句格式 140
8.2.2 ARM汇编语言程序格式 141
8.3 ARM汇编语言程序中的符号和表达式 143
8.3.1 ARM汇编语言中的符号 143
8.3.2 ARM汇编语言中的表达式 144
8.4 ARM汇编语言伪操作 148
8.4.1 符号定义伪操作 148
8.4.2 数据定义伪操作 150
8.4.3 杂项伪操作 154
8.4.4 汇编控制伪操作 160
8.4.5 信息报告伪操作 161
8.4.6 框架描述伪操作 162
8.5 ARM汇编语言程序伪指令 163
8.5.1 ADR 163
8.5.2 ADRL 164
8.5.3 LDR 165
8.6 ARM汇编语言程序宏指令 167
8.7 ARM汇编语言程序子程序 169
8.8 GNU ARM汇编简介 170
8.8.1 GNU ARM汇编语言程序的基本结构和程序运行环境 170
8.8.2 GNU ARM汇编语言伪操作 171
8.8.3 GNU ARM汇编语言其他主要操作符 172
习题 172
第9章 C语言与ARM汇编语言的混合编程 173
9.1 ATPCS概述 173
9.1.1 寄存器的使用规则 174
9.1.2 数据栈使用规则 174
9.1.3 参数传递规则 175
9.2 使用内嵌汇编器 175
9.2.1 内嵌汇编的语法格式 176
9.2.2 内嵌汇编指令的用法 176
9.2.3 内嵌汇编指令应用举例 177
9.3 从汇编代码中访问C程序全局变量 180
9.4 ARM汇编程序与C程序的相互调用 181
9.4.1 ARM汇编程序调用C程序 181
9.4.2 C程序调用ARM汇编程序 183
9.5 C语言与ARM汇编混合编程的实例 184
9.5.1 安装UArmJtag 184
9.5.2 建立工程 185
9.5.3 编译链接工程 189
9.5.4 调试程序 190
习题 191
第三部分 嵌入式实验 192
第10章 建立嵌入式系统开发环境 192
10.1 认识博创经典UP-TECH-S2410/P270-DVP实验箱 192
10.2 建立开发环境 193
10.2.1 实验目的 193
10.2.2 实验设备 193
10.2.3 实验内容 193
10.2.4 实验步骤 194
10.2.5 习题 195
10.3 给下位机烧写软件系统 196
10.3.1 实验目的 196
10.3.2 实验设备 196
10.3.3 实验内容 196
10.3.4 实验步骤 196
10.3.5 习题 199
第11章 基础实验 200
11.1 熟悉Linux开发环境 200
11.1.1 实验目的 200
11.1.2 实验设备 200
11.1.3 实验内容 200
11.1.4 实验步骤 200
11.1.5 习题 202
11.2 多线程应用程序设计 202
11.2.1 实验目的 202
11.2.2 实验设备 203
11.2.3 实验内容 203
11.2.4 多线程程序设计 203
11.2.5 实验步骤 208
11.2.6 习题 209
11.3 串行端口程序设计 209
11.3.1 实验目的 209
11.3.2 实验设备 209
11.3.3 实验内容 209
11.3.4 实验原理 209
11.3.5 实验步骤 216
11.3.6 习题 217
11.4 A/D接口实验 217
11.4.1 实验目的 217
11.4.2 实验设备 217
11.4.3 实验内容 217
11.4.4 实验原理 218
11.4.5 实验步骤 225
11.4.6 习题 225
11.5 D/A接口实验 226
11.5.1 实验目的 226
11.5.2 实验设备 226
11.5.3 实验内容 226
11.5.4 实验原理 226
11.5.5 实验步骤 229
11.5.6 习题 229
11.6 CAN总线通信实验 230
11.6.1 实验目的 230
11.6.2 实验设备 230
11.6.3 实验内容 230
11.6.4 实验原理 230
11.6.5 实验步骤 235
11.6.6 习题 236
11.7 RS-485通信实验 237
11.7.1 实验目的 237
11.7.2 实验设备 237
11.7.3 实验内容 237
11.7.4 实验原理 237
11.7.5 实验步骤 241
11.7.6 习题 241
11.8 直流电动机实验 242
11.8.1 实验目的 242
11.8.2 实验设备 242
11.8.3 实验内容 242
11.8.4 实验原理 242
11.8.5 实验步骤 247
11.8.6 习题 248
11.9 7段LED和点阵式LED实验 248
11.9.1 实验目的 248
11.9.2 实验设备 248
11.9.3 实验内容 248
11.9.4 实验原理 249
11.9.5 实验步骤 252
11.9.6 习题 252
第12章 扩展实验 253
12.1 小键盘实验 253
12.1.1 实验目的 253
12.1.2 实验设备 253
12.1.3 实验内容 253
12.1.4 实验原理 253
12.1.5 实验步骤 257
12.1.6 习题 257
12.2 嵌入式Web服务器 258
12.2.1 实验目的 258
12.2.2 实验设备 258
12.2.3 实验内容 258
12.2.4 实验原理 258
12.2.5 实验步骤 264
12.2.6 习题 264
12.3 利用GDBServer在下位机中调试执行程序 265
12.3.1 实验目的 265
12.3.2 实验设备 265
12.3.3 实验内容 265
12.3.4 实验步骤 265
12.3.5 习题 266
12.4 设备驱动程序设计实验 267
12.4.1 实验目的 267
12.4.2 实验设备 267
12.4.3 实验内容 267
12.4.4 实验原理 267
12.4.5 实验步骤 279
12.4.6 习题 279
12.5 字符设备驱动实例——触摸屏驱动实验 280
12.5.1 实验目的 280
12.5.2 实验设备 280
12.5.3 实验内容 280
12.5.4 实验原理 280
12.5.5 实验步骤 290
12.5.6 习题 290
12.6 LCD驱动控制实验 291
12.6.1 实验目的 291
12.6.2 实验设备 291
12.6.3 实验内容 291
12.6.4 实验原理 291
12.6.5 实验步骤 302
12.6.6 习题 303
12.7 音频驱动及应用实验 303
12.7.1 实验目的 303
12.7.2 实验设备 303
12.7.3 实验内容 303
12.7.4 实验原理 303
12.7.5 实验步骤 313
12.7.6 习题 313
12.8 SD卡使用实验 313
12.8.1 实验目的 313
12.8.2 实验设备 313
12.8.3 实验内容 313
12.8.4 实验原理 314
12.8.5 实验步骤 327
12.8.6 习题 328
参考文献 329