第1章 嵌入式系统概述 1
1.1 嵌入式系统应用概述 1
1.2 嵌入式系统软、硬件结构 2
1.2.1 嵌入式系统硬件结构 2
1.2.2 嵌入式系统软件结构 4
1.2.3 通用计算机系统与嵌入式系统对比 4
1.3 嵌入式处理器概述 5
1.3.1 微控制器 5
1.3.2 数字信号处理器 5
1.3.3 微处理器 6
1.3.4 片上系统 6
1.3.5 处理器技术的选型 7
1.4 嵌入式操作系统概述 8
1.4.1 操作系统主要特点及功能 8
1.4.2 常用嵌入式操作系统 9
本章总结 12
课后习题 12
第2章 嵌入式ARM处理器与开发工具 13
2.1 ARM处理器概述 13
2.2 ARM硬件体系结构 17
2.2.1 冯·诺依曼体系和哈佛总线 17
2.2.2 CISC和RISC指令集 18
2.2.3 ARM处理器的指令流水线 19
2.3 ARM处理器内部结构 20
2.3.1 ARM7内部结构图及主要特点 20
2.3.2 ARM7功能结构图 21
2.3.3 ARM9内部及功能结构图 22
2.3.4 XScale内部结构及功能 23
2.4 开发工具与开发流程介绍 26
2.4.1 常见的嵌入式开发模式 26
2.4.2 ADS集成开发环境简介 28
2.4.3 ADS使用简介 30
2.4.4 ADS调试程序实例 36
本章总结 39
课后习题 39
第3章 ARM程序设计基础 40
3.1 ARM处理器工作模式及寄存器介绍 41
3.1.1 ARM处理器工作模式 41
3.1.2 ARM处理器寄存器介绍 42
3.1.3 ARM指令编码方式 45
3.2 ARM寻址方式与程序框架 47
3.2.1 ARM寻址方式 47
3.2.2 ARM汇编程序框架 49
3.3 ARM指令及应用程序设计 51
3.3.1 加减法指令及例程 51
3.3.2 逻辑指令及例程 56
3.3.3 乘法指令及例程 58
3.3.4 跳转指令及例程 61
3.3.5 内存数据加载指令及例程 63
3.3.6 CPSR数据传输指令及例程 69
3.3.7 数据交换指令及例程 71
3.3.8 比较指令 72
3.4 ARM伪指令及应用程序举例 74
3.4.1 变量定义伪指令及例程 74
3.4.2 数据定义伪指令及例程 76
3.4.3 控制伪指令及例程 78
3.4.4 地址加载伪指令及例程 79
3.4.5 声明引用伪指令及例程 80
3.4.6 段域伪指令及例程 83
3.5 ARM汇编程序设计示例 84
3.5.1 ARM汇编程序结构示例 84
3.5.2 ARM分支跳转程序示例 85
3.5.3 ARM数据段复制程序示例 86
3.5.4 数据加载ARM汇编程序示例 86
本章总结 89
课后习题 89
第4章 ADS环境下汇编/C编程 91
4.1 ARM标准C语言编程 91
4.1.1 标准C库函数在ADS环境下的应用 92
4.1.2 重写C函数实现信息从串口输出 93
4.1.3 重写堆栈空间初始化函数 94
4.2 ADS编译器对C语言的扩展 95
4.2.1 _asm内嵌汇编应用程序开发 95
4.2.2 _inline关键字 97
4.2.3 _irq关键字 98
4.2.4 _value_ine_regs关键字 99
4.3 C程序与汇编程序汇合编程 102
4.3.1 ARM过程调用标准APCS 102
4.3.2 无符号整型数到字符串的转换程序 104
4.3.3 简单除法运算程序 107
4.3.4 产生及测试伪随机数字序列程序 116
4.3.5 大端和小端存储转换程序 118
本章总结 121
课后习题 122
第5章 ADS映像文件结构及加载技术 123
5.1 映像文件物理结构分析 123
5.1.1 目标文件结构分析 124
5.1.2 axf文件结构分析 128
5.1.3 二进制文件分析 130
5.2 ARM可执行程序段域加载问题 132
5.2.1 指定装载域和运行域 133
5.2.2 分散装载技术及Scatter文件 135
5.3 S3C2410启动汇编代码分析 137
5.3.1 简单地设置中断向量表 137
5.3.2 禁止看门狗,禁止中断 138
5.3.3 设置内存控制寄存器 139
5.3.4 初始化栈空间 141
5.3.5 安装中断 142
5.3.6 复制数据段和BSS段到相应位置 143
5.3.7 通过vivi下载可执行程序 144
本章总结 146
课后习题 147
第6章 ARM异常中断处理及程序设计 148
6.1 ARM中断类型及中断向量 148
6.1.1 ARM异常类型 149
6.1.2 ARM中断向量及中断优先级 150
6.1.3 ARM中断响应过程 150
6.1.4 ARM各类异常处理流程 151
6.2 安装ARM中断处理程序 154
6.2.1 在复位时使用汇编语言装载中断处理程序 154
6.2.2 使用C语言程序安装中断处理程序地址 156
6.3 IRQ中断处理过程及处理 158
6.3.1 中断管理办法 158
6.3.2 S3C2410中断处理办法 160
6.3.3 ISR中断处理过程 162
6.4 SWI中断处理原理及应用程序开发 163
6.4.1 SWI中断处理的基本概念 163
6.4.2 使用汇编程序实现SWI中断处理示例 164
6.4.3 使用C程序实现SWI中断处理示例 166
本章总结 170
课后习题 171
第7章 嵌入式系统接口及驱动程序开发 172
7.1 ARM9串行通信原理及驱动开发实验 172
7.1.1 串行通信原理介绍 172
7.1.2 S3C2410芯片UART接口原理 176
7.1.3 S3C2410串口硬件电路设计 184
7.1.4 串行通信实验C语言源代码分析 184
7.2 键盘及LED工作原理、驱动开发实验 187
7.2.1 键盘及LED工作原理 187
7.2.2 I2C通信原理及驱动程序开发流程 189
7.2.3 S3C2410处理器I2C接口设计 190
7.2.4 ZLG7290键盘及LED驱动芯片 194
7.2.5 S3C2410采用I2C接口电路 200
7.2.6 键盘及LED实验C语言源代码分析 200
7.3 触摸屏驱动原理及驱动开发实验 204
7.3.1 触摸屏工作原理 204
7.3.2 ADS7843触摸屏驱动芯片 205
7.3.3 S3C2410芯片的SPI通信原理 207
7.3.4 S3C2410触摸屏电路设计 212
7.3.5 触摸屏实验C语言源代码分析 212
7.4 A/D转换原理及驱动开发 216
7.4.1 A/D工作原理 216
7.4.2 S3C2410芯片A/D转换接口原理 219
7.4.3 A/D实验源代码分析 220
7.5 LCD的驱动控制原理及驱动开发实验 221
7.5.1 LCD工作原理介绍 221
7.5.2 S3C2410的LCD控制器扫描方式 223
本章总结 225
课后习题 226
第8章 基于μC/OS-Ⅱ应用程序开发基础 227
8.1 实时操作系统应用地位 227
8.1.1 实时操作系统在嵌入式系统中的地位 227
8.1.2 嵌入式操作系统基本概念 229
8.2 μC/OS-Ⅱ操作系统结构概述 230
8.2.1 μC/OS-Ⅱ内核目录结构 230
8.2.2 μC/OS-Ⅱ任务管理源代码分析 234
8.2.3 μC/OS-Ⅱ任务通信方式简介 239
8.3 开发基本ARM处理器的μC/OS-Ⅱ应用程序 243
8.3.1 μC/OS-Ⅱ操作系统底层文件介绍 243
8.3.2 与处理器相关的OS_CPU.H文件源码分析 244
8.3.3 与处理器相关的OS_CPU_C.C文件源码分析 245
8.3.4 与处理器相关的OS_CPU_A.S文件源码分析 249
8.4 μC/OS-Ⅱ在S3C2410的移植案例分析 255
8.4.1 设置代码存储加载位置 256
8.4.2 编写系统启动代码分析 257
8.4.3 中断处理与时钟中断任务 260
8.4.4 修改与调度相关的汇编代码 262
本章总结 265
课后习题 266
第9章 ARM存储管理 267
9.1 存储设备概念 267
9.1.1 常见存储设备名词解析 268
9.1.2 RAM存储设备 268
9.1.3 NAND Flash和NOR Flash存储设备 269
9.2 ARM内存管理单元MMU 270
9.2.1 存储器管理单元的结构 270
9.2.2 存储器的访问 271
9.2.3 转换过程 272
9.2.4 访问权限 278
9.2.5 域 279
9.2.6 异常 279
9.2.7 CP15寄存器 282
本章总结 286
课后习题 286
参考文献 287