第1章 嵌入式系统简介 1
1.1 嵌入式系统介绍 1
1.2 嵌入式处理器 3
1.2.1 嵌入式处理器分类 3
1.2.2 嵌入式处理器内核 4
1.3 嵌入式系统的组成 5
1.4 嵌入式系统的开发过程 8
1.5 嵌入式系统的应用 8
第2章 ARM体系结构 10
2.1 ARM公司简介 10
2.2 ARM微处理器系列 11
2.2.1 ARM7系列 12
2.2.2 ARM9系列 12
2.2.3 ARM9E系列 13
2.2.4 ARM10E系列 13
2.2.5 SecurCore系列 14
2.2.6 Intel的Xscale 14
2.2.7 Intel的StrongARM 14
2.3 ARM微处理器结构 14
2.3.1 RISC体系结构 14
2.3.2 ARM处理器的工作状态 15
2.3.3 ARM处理器模式 15
2.3.4 ARM处理器的寄存器结构 16
2.3.5 处理器的存储器结构 22
2.3.6 异常 23
第3章 ARM微处理器的指令系统 28
3.1 ARM指令的寻址方式 28
3.1.1 立即寻址 28
3.1.2 寄存器寻址 28
3.1.3 寄存器间接寻址 29
3.1.4 基址寻址 29
3.1.5 相对寻址 29
3.1.6 多寄存器寻址 30
3.1.7 堆栈寻址 30
3.1.8 寄存器偏移寻址 31
3.2 ARM指令格式 32
3.2.1 指令格式 32
3.2.2 指令集的机器码格式 33
3.2.3 指令条件码 33
3.3 ARM指令集 34
3.3.1 数据处理指令 34
3.3.2 乘法与乘加指令 40
3.3.3 跳转指令 43
3.3.4 程序状态寄存器访问指令 45
3.3.5 加载/存储指令 47
3.3.6 批量数据加载/存储指令 50
3.3.7 数据交换指令 52
3.3.8 移位操作 53
3.3.9 软中断指令 55
3.3.10 协处理器指令 56
3.4 Thumb指令及应用 56
第4章 ARM汇编程序设计 58
4.1 ARM伪指令 58
4.1.1 符号定义(Symbol Definition)伪指令 58
4.1.2 数据定义(Data Definition)伪指令 60
4.1.3 汇编控制(Assembly Control)伪指令 64
4.1.4 其他常用的伪指令 66
4.2 汇编语法 71
4.2.1 汇编程序源文件 71
4.2.2 汇编语句语法 72
4.3 汇编语言程序设计 77
4.3.1 汇编语言的程序结构 77
4.3.2 汇编语言的子程序调用 78
4.3.3 宏定义及其作用 78
4.3.4 数据比较跳转 79
4.3.5 循环 79
4.3.6 数据块复制 80
4.3.7 堆栈操作 80
4.3.8 查表操作 80
4.3.9 长跳转 81
4.3.10 对信号量的支持 81
4.3.11 片上特殊寄存器定义及应用 81
4.3.12 片外部件控制 81
4.4 汇编程序设计示例 82
第5章 ARM的C语言程序设计 95
5.1 嵌入式系统中的C语言 95
5.1.1 概述 95
5.1.2 C语言编程的优势 96
5.1.3 嵌入式C语言与ANSIC的主要区别 97
5.1.4 嵌入式C语言开发方法 97
5.2 嵌入式C程序的基本结构 99
5.3 ARM的C语言编译器 100
5.3.1 C语言程序中的元素:头文件、源文件及预处理 100
5.3.2 ARM的C语言编译器特性 101
5.3.3 ARM的标识符 107
5.3.4 ARM转义字符 108
5.3.5 ARM基本数据类型 109
5.4 ARM运行时库 109
5.4.1 库类型和选项 109
5.4.2 库路径结构 110
第6章 ARM开发工具的使用 112
6.1 开发工具概述 112
6.2 ADS开发工具 116
6.2.1 ADS开发工具的组成及功能 116
6.2.2 ADS软件的安装 116
6.3 ADS的命令行工具 121
6.3.1 命令行工具介绍 121
6.3.2 ADS命令行编译工具的用法 124
6.3.3 ADS命令行链接工具armlink的用法 125
6.4 ADS的集成开发环境 131
6.4.1 CodeWarrior模块 132
6.4.2 AXD模块 133
6.5 用ADS开发应用程序 134
6.5.1 新建一个工程 134
6.5.2 工程设置 140
6.5.3 工程编译 142
6.5.4 工程调试 145
第7章 ARM硬件系统设计 157
7.1 硬件的选择 157
7.1.1 处理器的选择 157
7.1.2 外围芯片的选择 158
7.2 嵌入式硬件系统的结构 159
7.3 S3C44B0芯片概述 160
7.3.1 简介 160
7.3.2 S3C44B0芯片的特性 161
7.3.3 S3C44B0芯片的内部功能框图 164
7.3.4 S3C44B0芯片的引脚定义 165
7.4 单元电路设计 168
7.4.1 电源电路 168
7.4.2 晶振电路 169
7.4.3 看门狗与复位电路 171
7.4.4 存储单元电路 172
7.4.5 串行接口电路 179
7.4.6 JTAG接口电路 180
7.4.7 I2C接口电路 182
7.4.8 网络接口电路 183
7.4.9 LCD接口电路 187
7.4.10 触摸屏控制电路 190
7.4.11 I2S接口电路 192
7.4.12 USB接口电路 195
7.4.13 PS/2键盘接口电路 199
7.4.14 I/O接口电路 201
7.4.15 A/D转换电路 202
7.5 S3C44B0最小系统 203
7.6 硬件电路板设计事项 205
7.7 硬件电路的调试 207
第8章 ARM的软件开发 210
8.1 Bootloader程序的编写 210
8.1.1 概述 210
8.1.2 Bootloader简介 211
8.1.3 S3C44B0的Bootloader 211
8.2 LCD程序的编写 213
8.2.1 字符显示 213
8.2.2 LCD绘图函数 215
8.3 异步串行口编程 221
8.3.1 异步串口简介 221
8.3.2 串口函数 223
8.4 I/O操作 225
8.4.1 I/O概述 225
8.4.2 I/O函数 226
8.5 I2C驱动编程 227
8.5.1 I2C简介 227
8.5.2 相关函数 229
8.6 A/D转换编程 234
8.7 网卡编程 235
8.7.1 网卡编程简介 235
8.7.2 基本函数 237
8.8 I2S编程 241
8.8.1 I2S简介 241
8.8.2 相关函数 242
8.9 触摸屏编程 244
8.9.1 ADS7843编程简介 244
8.9.2 触摸屏函数 246
8.10 PS/2键盘编程 248
8.10.1 PS/2协议介绍 248
8.10.2 PS/2函数 250
8.11 USB Host编程 255
8.11.1 USB Host简介 256
8.11.2 USB传输协议 256
8.11.3 Mass storage协议 258
8.11.4 FAT文件系统 258
8.11.5 U盘的FAT结构 261
8.11.6 SL811描述 263
8.11.7 相关函数 265
第9章 μC/OS-Ⅱ操作系统在S3C44B0上的移植 276
9.1 概述 276
9.1.1 嵌入式系统软件构成 276
9.1.2 实时操作系统与非实时操作系统 277
9.1.3 嵌入式操作系统的选择 281
9.2 μC/OS-Ⅱ操作系统简介 283
9.3 μC/OS-Ⅱ操作系统在S3C44B0上的移植 284
9.4 μC/OS-Ⅱ操作系统中应用程序的编写 292
附录 S3C44B0的寄存器 296
参考文献 349