第1章 嵌入式系统概述 1
1.1嵌入式系统简介 2
1.2嵌入式系统的组成 3
1.3嵌入式处理器简介 7
1.4嵌入式系统应用 9
1.5嵌入式系统发展趋势 11
1.6物联网与嵌入式系统 12
1.7嵌入式开发工具 14
1.7.1软件开发工具 14
1.7.2硬件开发工具 15
思考与习题 16
第2章ARM体系结构 17
2.1 ARM处理器基础 18
2.1.1 ARM简介 18
2.1.2冯·诺依曼结构、哈佛结构与改进的哈佛结构 18
2.1.3 CISC与RISC 19
2.1.4流水线 19
2.1.5 ARM处理器的命名方式 23
2.2 ARM处理器系列 24
2.21 ARM处理器架构 24
2.2.2常用ARM处理器系列简介 27
2.3 ARM体系结构 31
2.3.1 ARM的基本数据类型 31
2.3.2 ARM处理器的运行模式 31
2.3.3 ARM处理器的运行状态 32
2.3.4存储器的大/小端 32
2.3.5 ARM的寄存器组织 33
2.3.6异常处理 36
2.4 ARM存储器结构 38
2.4.1 ARM存储器接口 39
2.4.2 ARM Cache结构 40
2.4.3 ARM存储器管理单元MMU 45
2.4.4地址变换后备缓冲器 45
2.4.5 ARM的MMU结构 46
2.5 ARM的其他部件 54
2.5.1存储器映像I/O 55
2.5.2直接存储器存取 55
2.5.3中断IRQ和快速中断FIQ 55
2.5.4 ARM协处理器接口 56
2.5.5 ARM AMBA接口 57
思考与习题 58
第3章ARM指令集与程序设计 59
3.1 ARM指令系统特点 60
3.1.1数据类型 60
3.1.2 ARM指令特点 60
3.2 ARM指令系统 61
3.2.1 ARM指令的寻址方式 62
3.2.2 ARM指令的条件执行 64
3.2.3 Load/Store类指令 65
3.2.4 ARM数据处理类指令 68
3.2.5 ARM转移类指令 73
3.3 Thumb指令 74
3.3.1 Thumb指令概述 74
3.3.2 Thumb存储器访问指令 75
3.3.3 Thumb数据处理指令 78
3.3.4分支指令 83
3.3.5中断和断点指令 85
3.4 ARM伪操作与伪指令 85
3.4.1符号定义与变量赋值伪操作 85
3.4.2数据定义伪操作 86
3.4.3汇编控制伪操作 87
3.4.4信息报告伪操作 89
3.4.5指令集选择伪操作 89
3.4.6杂项伪操作 89
3.4.7 ADR、 ADRL、 LDR伪指令 89
3.4 8 NOP伪指令 91
3.5 ARM汇编程序设计 92
3.5.1汇编语言的基本格式 92
3.5.2汇编语言的子程序调用 93
3.6 ARM C语言基础及混合编程 93
3.6.1 ATPCS概述 94
3.6.2 C语言与汇编语言混合编程 96
3.7超级终端的使用 99
3.8 ADS集成开发环境的使用 100
3.8.1安装与卸载ADS 100
3.8.2使用ADS创建工程 101
3.8.3使用AXD进行仿真 108
思考与习题 110
第4章 基于S3C2440的硬件结构与接口编程 111
4.1 S3C2440简介 112
4.1.1 S3C2440A片上主要功能 112
4.1.2 S3C2440A特点 114
4.2 S3C2440A的存储器接口 118
4.2.1 S3C2440A存储器控制器 118
4.2.2 NAND Flash控制器 119
4.2.3 SDRAM原理 123
4.3时钟和电源管理 125
4.4 DMA 125
4.4.1 DMA请求源 126
4.4.2 DMA工作过程 126
4.4.3基本DMA时序 127
4.4.4 DMA传输大小 127
4.4.5 DMA专用寄存器 127
4.5 I/O端口 132
4.6定时器 137
4.7 ARM中断 139
4.8 LCD 148
4.8.1 LCD原理 148
4.8.2 ARM LCD驱动控制 149
4.8.3 LCD控制器特殊寄存器 150
4.9 A/D转换器和触摸屏 160
4.9.1 A/D转换器简介 160
4.9.2触摸屏的工作原理及种类 161
4.9.3 A/D转换器和触摸屏接口 162
4.10异步串行口通信 166
4.10.1串行通信概述 166
4.10.2 S3C2440A异步串行口简介 171
4.11 SPI、IIC、IIS、SD卡总线接口 181
4.11.1 SPI总线接口 181
4.11.2 IIC总线接口 182
4.11.3 IIS总线接口 190
4.11.4 SD卡 197
4.12 USB Host/Device控制器 203
思考与习题 205
第5章 嵌入式操作系统 206
5.1操作系统简介 207
5.1.1操作系统 207
5.1.2嵌入式操作系统 209
5.2 μC/OS-Ⅱ简介 211
5.3 VxWorks简介 212
5.4 WinCE简介 214
5.5 Linux简介 217
5.5.1 Linux简介 217
5.5.2 Linux特点 217
5.5.3嵌入式Linux 218
5.5.4 Linux内核版本与发行版本 218
5.5.5 Linux进程管理 219
5.5.6存储管理 224
5.5.7文件系统 227
5.5.8设备管理 229
5.5.9 Linux内核模块 231
5.5.10 Linux配置文件 232
5.5.11 Linux启动流程简介 233
5.6其他嵌入式操作系统 236
5.6.1其他国外常用嵌入式操作系统 236
5.6.2其他国内常用嵌入式操作系统 237
思考与习题 238
第6章 嵌入式Linux应用开发 239
6.1 Linux安装 240
6.1.1安装vmware 240
6.1.2创建虚拟机 240
6.1.3安装fedora14 244
6.1.4安装VMware Tools 250
6.2交叉编译环境的建立 251
6.2.1交叉编译 251
6.2.2交叉编译器的安装 251
6.3 Linux常用命令 253
6.3.1系统管理命令 253
6.3.2文件管理命令 255
6.3.3文件查看命令 257
6.3.4进程管理命令 258
6.3.5网络管理命令 259
6.3.6用户管理命令 259
6 4 minicom的使用 260
6.4.1 minicom的安装 260
6.4.2 minicom的设置 260
6.4.3 minicom的使用 261
6 5 vi程序的使用 261
6.5.1启动vi 262
6.5.2常用vi命令 262
6.6 gcc程序的使用 263
6.6.1 gcc简介 263
6.6.2 gcc编译程序的流程 264
6.6.3 gcc选项 264
6.7 gdb程序的使用 265
6.7.1 gdb简介 265
6.7.2 gdb的调试程序流程 265
67.3 gdb命令 265
6.8 makefile简介 266
6.8.1 makefile简介 266
6.8.2 makefile的规则 266
6.8.3 makefile文件的命名 266
6.8.4 makefile的组成 267
6.8.5简单的makefile示例 267
6.8.6使用变量 268
6.8.7使用隐式规则 268
6.8.8伪目标 269
6.9 Linux应用程序编程 269
6.9.1文件编程 269
6.9.2进程创建 273
6.9.3进程间通信之管道 278
6.9.4进程间通信之有名管道 280
6.9.5进程间通信之信号 283
6.9.6进程间通信之信号量 290
6.9.7进程间通信之消息队列 294
6.9.8进程间通信之共享内存 298
6.9.9原子操作 300
6.9.10线程 300
6.9.11网络编程基础 306
6.9.12 Linux中断 318
思考与习题 320
第7章 嵌入式Linux操作系统的移植 321
7.1 Bootloader 322
7.1.1 Bootloader简介 322
7.1.2常见Bootloader 323
7.2 Linux的移植 324
7.2.1安装前的准备工作 324
7.2.2 Linux的移植步骤 326
7.3根文件系统的制作 334
思考与习题 338
第8章 物联网中的常用嵌入式系统 339
8.1 TinyOS简介 341
8.1.1 TinyOS概述 341
8.1.2 TinyOS的特点 343
8.1.3 TinyOS开发平台 343
8.1.4 TinyOS开发案例 344
8.1.5 TinyOS的基本概念 344
8.2安装TinyOS 345
8.3 nesC简介 349
8.3.1 nesC概述 349
8.3.2 nesC基本概念 350
8.3.3一个简单的nesC编程示例 356
8.3.4 TOSSIM仿真 357
8.4 TinyOS内部机制简介 358
8.4.1 TinyOS程序运行机制分析 358
8.4.2 TinyOS的调度机制 359
8.4.3 TinyOS的通信模型 360
8.4.4 TinyOS的能量管理 362
思考与习题 362
参考文献 363