第1章 ARM技术概述 1
1.1 ARM体系结构的发展及技术特征 1
1.1.1 ARM体系结构的发展 1
1.1.2 ARM微处理器的应用领域 1
1.2 ARM微处理器简介 3
1.2.1 ARM微处理器 3
1.2.2 ARM微处理器系列 4
1.3 ARM微处理器结构 7
1.3.1 RISC体系结构 7
1.3.2 ARM微处理器的寄存器结构 7
1.3.3 ARM微处理器的指令结构 8
1.4 ARM微处理器的应用选型 8
练习题 10
第2章 ARM920T内核的编程模型 11
2.1 ARM920T的内部功能及特点 11
2.2 ARM920T内核编程模型 13
2.3 ARM体系结构的存储器格式 13
2.4 处理器模式 14
2.5 寄存器组织 14
2.5.1 ARM状态下的寄存器组织 15
2.5.2 Thumb状态下的寄存器组织 17
2.6 程序状态寄存器 18
2.7 异常(Exceptions) 20
练习题 24
第3章 ARM微处理器的指令系统 25
3.1 ARM指令的寻址方式 25
3.1.1 立即寻址 25
3.1.2 寄存器寻址 25
3.1.3 寄存器偏移寻址 26
3.1.4 寄存器间接寻址 26
3.1.5 基址变址寻址 27
3.1.6 多寄存器寻址 27
3.1.7 相对寻址 28
3.1.8 堆栈寻址 28
3.1.9 块复制寻址 28
3.2 ARM指令集 29
3.2.1 ARM微处理器指令的分类与格式 29
3.2.2 指令的条件域 31
3.2.3 ARM指令详解 32
3.3 Thumb指令及应用 49
练习题 50
第4章 ARM汇编语言程序设计 52
4.1 ADS编译环境下的ARM的伪操作和宏指令 52
4.1.1 符号定义(Symbol Definition)伪指令 53
4.1.2 数据定义(Data Definition)伪指令 54
4.1.3 汇编控制(Assembly Control)伪指令 57
4.1.4 其他常用的伪指令 60
4.2 GNU编译环境下的ARM伪操作与宏指令 65
4.3 ARM汇编语言伪指令 71
4.4 汇编语言的语句格式 75
4.4.1 汇编语言程序中常用的符号 75
4.4.2 汇编语言程序中的表达式和运算符 76
4.5 汇编语言的程序结构 79
4.5.1 汇编语言的程序结构 79
4.5.2 汇编语言的子程序调用 80
4.5.3 汇编语言程序示例 80
练习题 85
第5章 嵌入式C语言程序设计基础 87
5.1 嵌入式C语言的预处理伪指令 87
5.2 嵌入式C语言的基本数据类型 91
5.2.1 数据类型与表达式 91
5.2.2 常量 93
5.2.3 变量 95
5.2.4 运算符 100
5.3 程序的控制结构 102
5.3.1 选择结构 102
5.3.2 switch语句 103
5.3.3 循环结构 104
5.3.4 其他控制语句 105
5.4 函数 106
5.5 数组 109
5.6 指针 113
5.7 构造数据类型 117
5.8 汇编语言与C/C++的混合编程 119
5.8.1 内嵌汇编指令 119
5.8.2 在汇编程序中访问C程序变量 122
5.8.3 汇编程序与C/C++程序的相互调用规则——ARPCS 123
5.8.4 汇编程序与C/C++程序的相互调用 126
5.9 嵌入式Linux下C语言编程——文件的操作 129
5.9.1 文件的创建和读写 129
5.9.2 移动文件的读写位置 131
5.9.3 文件的各个属性 132
5.9.4 目录文件的操作 133
练习题 134
第6章 ARM ADS集成开发环境 135
6.1 ADS 1.2的安装 135
6.1.1 ADS概述 135
6.1.2 ADS 1.2的安装 136
6.2 ADS集成开发环境的使用 138
6.2.1 建立一个新工程 138
6.2.2 配置生成目标 140
6.2.3 编译和链接工程 158
6.3 用AXD进行代码调试 161
练习题 163
第7章 ARM异常中断处理及编程 164
7.1 ARM异常中断处理概述 164
7.2 ARM体系异常中断 165
7.2.1 ARM体系异常中断种类 165
7.2.2 异常中断向量表及异常中断优先级 166
7.2.3 支持中断跳转的解析程序 170
7.3 ARM应用系统中异常中断处理程序的安装 172
7.3.1 在系统复位时安装异常中断处理程序 173
7.3.2 在C程序中安装异常中断处理程序 174
7.4 ARM的SWI异常中断处理程序设计 175
7.4.1 SWI异常中断处理程序的实现 175
7.4.2 SWI异常中断调用 178
7.5 FIQ和IRQ异常中断程序设计 182
7.5.1 IRQ和FIQ异常中断处理程序 183
7.5.2 多中断源的IRQ异常中断处理程序 185
7.6 基于ARM9芯片S3C2410异常中断程序设计 186
7.6.1 异常中断响应和返回 187
7.6.2 异常处理程序设计 187
7.6.3 外中断初始化程序设计 190
练习题 191
第8章 基于μC/OS-Ⅱ操作系统的ARM编程 192
8.1 μC/OS-Ⅱ的内核 192
8.1.1 μC/OS-Ⅱ内核调度特点 193
8.1.2 任务控制块OS_TCB描述 193
8.1.3 就绪表(Ready List) 195
8.1.4 任务状态 196
8.1.5 任务调度分析 197
8.1.6 μC/OS-Ⅱ的初始化 198
8.2 μC/OS-Ⅱ内核的API函数 199
8.2.1 任务类 199
8.2.2 消息类 201
8.2.3 同步信号量类 205
8.2.4 时间类 209
8.2.5 内存操作类 210
8.2.6 互斥信号量管理类 212
8.3 μC/OS-Ⅱ应用程序的基本结构 216
8.4 μC/OS-Ⅱ在S3C2410X上的移植 217
8.4.1 移植原理 217
8.4.2 移植实现 219
8.5 基于μC/OS-Ⅱ操作系统的开发案例 225
8.5.1 绘图API函数的应用 225
8.5.2 系统的消息循环 231
8.5.3 文件的使用 236
8.5.4 列表控件的使用 240
8.5.5 文本框控件的使用 248
练习题 255
第9章 基于ARM9和Linux嵌入式系统设计 256
9.1 嵌入式Linux的开发环境 256
9.1.1 嵌入式Linux开发环境建立 256
9.1.2 嵌入式Linux开发的一般过程 257
9.2 Linux开发工具的使用 258
9.2.1 Linux开发工具GNU gcc的使用 258
9.2.2 gdb调试器简介 261
9.3 GNU make命令和Makefile文件 264
9.3.1 Makefile文件的规则 265
9.3.2 Makefile文件中隐含规则 267
9.3.3 Makefile文件的命令 269
9.3.4 Makefile文件中的变量 270
9.3.5 Makefile文件的条件判断 273
9.3.6 Makefile文件中的常用函数 274
9.3.7 子目录Makefile 276
9.4 嵌入式Linux引导程序 277
9.4.1 BootLoader引导程序 277
9.4.2 VIVI简介 279
9.5 嵌入式Linux下程序调试应用举例 282
9.5.1 Linux宿主机下的应用程序调试 282
9.5.2 目标机下的应用程序调试 292
练习题 295
附录A S3C2410X引脚及信号定义 299
参考文献 305