第1章 嵌入式系统概述 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统的定义 1
1.1.2 嵌入式系统的组成 2
1.1.3 嵌入式系统的特点 3
1.1.4 嵌入式系统的应用 4
1.1.5 嵌入式系统的发展 5
1.2 嵌入式系统硬件 6
1.2.1 嵌入式处理器 6
1.2.2 总线 9
1.2.3 存储器 13
1.2.4 I/O接口 14
1.3 嵌入式系统软件 14
1.3.1 引导程序 14
1.3.2 操作系统 15
1.3.3 应用软件 17
本章小结 17
思考与练习 18
第2章 ARM体系结构 19
2.1 ARM简介 19
2.1.1 ARM特点 19
2.1.2 ARM处理器工作状态和工作模式 20
2.1.3 ARM处理器异常 22
2.1.4 ARM指令流水 24
2.2 ARM微处理器 24
2.2.1 S3C2410组成结构和引脚信号 24
2.2.2 ARM寄存器 39
2.3 ARM存储器 44
2.3.1 存储器组织 44
2.3.2 存储管理单元 45
2.3.3 NAND Flash控制器 46
2.3.4 数据类型与存储格式 47
2.3.5 非对齐的存储访问 48
2.3.6 指令预取和自修改代码 48
2.4 ARM的I/O端口 49
2.4.1 DMA 49
2.4.2 定时器 49
2.4.3 中断控制器 51
2.4.4 LCD控制器 52
2.4.5 ADC和触摸屏接口 53
2.4.6 UART接口 55
2.4.7 USB接口 55
2.4.8 并行接口 56
2.4.9 串行接口 56
2.4.10 PCMCIA和CF 57
2.4.11 红外线接口 58
本章小结 58
思考与练习 59
第3章 ARM指令系统 60
3.1 ARM指令系统简介 60
3.2 ARM指令寻址方式 61
3.3 ARM指令集 64
3.3.1 分支指令 66
3.3.2 数据处理指令 67
3.3.3 移位指令 75
3.3.4 存储器访问指令 76
3.3.5 协处理器指令 79
3.3.6 软件中断指令及其他 82
3.4 Thumb指令集 84
3.4.1 Thumb存储器访问指令 87
3.4.2 Thumb数据处理指令 91
3.4.3 Thumb软中断指令 96
3.4.4 Thumb跳转指令 97
3.4.5 Thumb指令集与ARM指令集的切换与区别 98
3.5 ARM汇编语言伪指令 99
3.5.1 数据定义伪指令 99
3.5.2 符号定义伪指令 105
3.5.3 过程定义伪指令 107
3.5.4 汇编控制伪指令 107
3.5.5 其他伪指令 109
3.6 ARM汇编语言程序设计 113
3.6.1 汇编程序编写 114
3.6.2 汇编程序调试过程 119
本章小结 120
思考与练习 120
第4章 嵌入式Linux操作系统 122
4.1 Linux简介 122
4.1.1 Linux特点 122
4.1.2 Linux内核组成 124
4.1.3 Linux源码结构 125
4.2 Linux常用命令 126
4.2.1 文件管理 126
4.2.2 目录管理 130
4.2.3 进程管理 132
4.2.4 服务管理 132
4.2.5 环境设置 136
4.3 文本编辑 137
4.3.1 工作模式 137
4.3.2 文件的创建与打开 138
4.3.3 文件的保存与退出 138
4.3.4 编辑命令 138
4.4 Linux网络服务 141
4.4.1 服务管理 141
4.4.2 Samba服务 142
4.4.3 NFS服务 143
本章小结 146
思考与练习 146
第5章 嵌入式开发平台的组建 147
5.1 开发平台简介 147
5.1.1 开发模型 147
5.1.2 硬件开发平台 148
5.1.3 软件开发环境 149
5.1.4 嵌入式系统的调试方式 150
5.1.5 板级支持包 151
5.2 UP-NETARM2410-S开发平台 152
5.2.1 系统简介 152
5.2.2 核心板结构 153
5.2.3 主板结构 154
5.2.4 地址空间分配 155
5.3 ADS开发环境 155
5.3.1 ADS的组成 156
5.3.2 Code Warrior的配置与使用 157
5.3.3 AXD的配置与使用 165
5.3.4 DNW的配置与使用 174
5.3.5 超级终端的配置与使用 176
5.4 Linux开发环境 177
5.4.1 环境架构 177
5.4.2 安装与配置 178
5.4.3 建立交叉编译工具链 186
5.4.4 编译工具的使用 189
本章小结 193
思考与练习 193
第6章 嵌入式软件系统 194
6.1 引导启动 194
6.1.1 BootLoader简介 194
6.1.2 vivi裁剪 199
6.1.3 vivi下载 202
6.1.4 vivi内置命令 205
6.2 内核移植 208
6.2.1 移植准备 208
6.2.2 内核配置 209
6.2.3 内核编译 215
6.2.4 内核下载 216
6.3 根文件系统的建立 217
6.3.1 根文件系统的概念 217
6.3.2 常用根文件系统 218
6.3.3 根文件系统的制作方法 219
6.3.4 Cramfs根文件系统的建立 223
6.3.5 Yaffs文件系统的建立 225
本章小结 228
思考与练习 228
第7章 嵌入式应用程序开发 229
7.1 嵌入式应用程序的体系架构 229
7.2 嵌入式应用程序的开发流程 230
7.3 Linux环境下Hello World应用程序的实现 233
本章小结 236
思考与练习 236
附录 237
实验一 ADS开发环境的构建 237
实验二 ARM汇编语言程序设计 239
实验三 Linux操作系统的使用 240
实验四 Linux开发环境的建立 243
实验五 BootLoader的下载与使用 245
实验六 Linux内核移植 246
实验七 根文件系统的建立 248
实验八 应用程序的开发 250
参考文献 253