作为一种32位高性能、低成本的嵌入式RISC微处理器,ARM已经成为应用最广泛的嵌入式处理器。目前Cortex-A系列处理器已经占据了大部分的中高端产品市场。
本书在全面介绍Cortex-A9处理器的体系结构、编程模型、指令系统及Eclipse For ARM开发环境搭建的同时,以基于Cortex-A9为核心的应用处理器Exynos4412为核心,详细介绍了ARM系统设计及相关接口技术。接口技术涵盖了GPIO、GIC、UART、PWM、RTC、WDT、A/D、I2C、SPI等,并提供了大量的实验例程和视频讲解,通过练习和操作实践,帮助读者巩固所学的内容。
本书可以作为院校嵌入式相关专业和计算机相关专业的教材,也可以作为计算机软硬件培训班教材,还可以作为嵌入式研究方向的专业人才和广大计算机爱好者的自学教材。
ARM嵌入式体系结构与接口技术(Cortex-A9版)(微课版)章节:
第1章 嵌入式ARM技术概论 1
1.1 ARM体系结构的技术特征及发展 2
1.1.1 ARM公司简介 2
1.1.2 ARM技术特征 2
1.1.3 ARM体系架构的发展 3
1.2 ARM微处理器简介 4
1.2.1 ARM9处理器系列 5
1.2.2 ARM9E处理器系列 5
1.2.3 ARM11处理器系列 6
1.2.4 SecurCore处理器系列 6
1.2.5 StrongARM和Xscale处理器系列 6
1.2.6 MPCore处理器系列 6
1.2.7 Cortex处理器系列 6
1.2.8 ARM应用处理器发展现状与趋势 8
1.3 ARM微处理器架构 9
1.4 ARM微处理器的应用选型 10
1.4.1 ARM芯片选择的一般原则 10
1.4.2 选择一款适合ARM教学的CPU 10
1.5 Cortex-A9内部功能及特点 12
1.6 数据类型 13
1.6.1 ARM的基本数据类型 13
1.6.2 浮点数据类型 13
1.6.3 存储器大/小端 14
1.7 Cortex-A9内核工作模式 14
1.8 Cortex-A9存储系统 15
1.8.1 协处理器(CP15) 16
1.8.2 存储管理单元(MMU) 17
1.8.3 高速缓冲存储器(Cache) 17
1.9 流水线 17
1.9.1 流水线的概念与原理 17
1.9.2 流水线的分类 18
1.9.3 影响流水线性能的因素 19
1.10 寄存器组织 19
1.11 程序状态寄存器 21
1.12 三星Exynos4412处理器介绍 24
1.13 FS4412开发平台介绍 25
1.14 本章小结 29
1.15 练习题 29
第2章 ARM开发环境搭建 30
2.1 仿真器简介 31
2.2 开发环境搭建 31
2.2.1 Windows XP环境安装FS-JTAG工具 32
2.2.2 Windows 7/Windows 8环境安装FS-JTAG工具 34
2.2.3 Windows8.1环境安装FS-JTAG工具 39
2.2.4 连接硬件平台 42
2.2.5 USB转串口驱动安装 42
2.2.6 Putty串口终端配置 43
2.3 Eclipse for ARM使用 45
2.4 导入一个已有工程 45
2.5 调试工程 49
2.5.1 配置FS-JTAG调试工具 49
2.5.2 配置调试工具 49
2.5.3 查看变量及寄存器的方法 53
2.5.4 断点设置方法 54
2.5.5 查看内存数据信息方法 54
2.5.6 调试结束后的处理 55
2.6 创建一个新工程 56
2.7 编译工程 58
2.8 64位eclipse编译常见问题及解决 60
2.9 本章小结 62
2.10 练习题 62
第3章 ARM指令 63
3.1 ARM指令集 64
3.1.1 数据处理指令寻址方式 64
3.1.2 乘法指令 69
3.1.3 跳转指令 71
3.1.4 Load/Store指令 74
3.1.5 状态寄存器传输指令 79
3.1.6 协处理器指令 81
3.1.7 异常产生指令 82
3.2 ARM指令的寻址方式 84
3.2.1 数据处理指令的操作数的寻址方式 84
3.2.2 字及无符号字节的Load/Store指令的寻址方式 85
3.2.3 批量Load/Store指令的寻址方式 86
3.2.4 相对寻址 88
3.3 本章小结 88
3.4 练习题 88
第4章 ARM汇编程序设计 89
4.1 GNU ARM汇编器的伪操作 90
4.1.1 符号定义伪操作 90
4.1.2 数据定义伪操作 91
4.1.3 汇编控制伪操作 93
4.1.4 杂项伪操作 94
4.2 ARM汇编器支持的伪指令 96
4.2.1 ADR伪指令 96
4.2.2 ADRL伪指令 97
4.2.3 LDR伪指令 97
4.3 ARM汇编语言的程序结构 98
4.3.1 汇编语言的程序格式 98
4.3.2 汇编语言的子程序调用 99
4.3.3 汇编语言程序设计举例 99
4.4 汇编语言与C语言的混合编程 100
4.4.1 GNU内联汇编 100
4.4.2 C和汇编的相互调用 103
4.4.3 过程调用标准AAPCS/ATPCS 104
4.5 本章小结 105
4.6 练习题 105
第5章 GPIO编程 106
5.1 GPIO功能介绍 107
5.2 Exynos4412-GPIO控制器详解 107
5.2.1 GPIO功能描述 107
5.2.2 GPIO特性 107
5.2.3 GPIO分组预览 108
5.2.4 Exynos4412-GPIO常用寄存器分类 108
5.2.5 Exynos4412-GPIO接口常用寄存器详解 109
5.2.6 GPIO寄存器封装 110
5.3 GPIO控制实验 112
5.3.1 实验目的 112
5.3.2 实验原理 112
5.3.3 实验内容 113
5.3.4 实验代码 113
5.3.5 实验现象 114
5.4 本章小结 114
5.5 练习题 114
第6章 ARM异常及中断处理 115
6.1 ARM异常中断处理概述 116
6.2 ARM体系异常种类 116
6.3 ARM异常的优先级 121
6.4 ARM处理器模式和异常 121
6.5 ARM异常响应和处理程序返回 122
6.5.1 中断响应的概念 122
6.5.2 ARM异常响应流程 122
6.5.3 从异常处理程序中返回 123
6.6 ARM的SWI异常中断处理程序设计 124
6.7 ARM中断控制器简介 126
6.7.1 中断软件分支处理(NVIC和GIC) 126
6.7.2 硬件支持的分支处理(VIC) 127
6.8 通用中断控制器(GIC) 128
6.8.1 GIC功能模块 129
6.8.2 GIC中断控制器中断类型 130
6.8.3 GIC中断控制器中断状态 130
6.8.4 GIC中断处理流程 130
6.9 Exynos4412中断源 131
6.10 Exynos4412-GIC寄存器详解 131
6.11 GIC中断实验 135
6.11.1 实验目的 135
6.11.2 实验原理 135
6.11.3 实验内容 136
6.11.4 实验代码 137
6.11.5 实验现象 140
6.12 本章小结 140
6.13 练习题 140
第7章 串行通信接口 141
7.1 串行通信概述 142
7.1.1 串行通信与并行通信概念 142
7.1.2 异步串行方式的特点 142
7.1.3 异步串行方式的数据格式 142
7.1.4 同步串行方式的特点 142
7.1.5 同步串行方式的数据格式 143
7.1.6 波特率、波特率因子与位周期 143
7.1.7 RS-232C串口规范 143
7.1.8 RS-232C接线方式 145
7.2 Exynos4412异步串行通信 145
7.2.1 Exynos4412串口控制器概述 145
7.2.2 UART寄存器详解 146
7.3 串口通信实验 151
7.3.1 实验目的 151
7.3.2 实验原理 151
7.3.3 实验内容 152
7.3.4 实验代码 152
7.3.5 实验现象 154
7.4 本章小结 155
7.5 练习题 155
第8章 PWM定时器 156
8.1 定时器和PWM简介 157
8.1.1 定时器概述 157
8.1.2 脉冲宽度调制(PWM)概述 157
8.2 Exynos4412-PWM定时器详解 157
8.2.1 PWM定时器概述 157
8.2.2 PWM定时器寄存器详解 158
8.2.3 PWM定时器双缓冲功能 161
8.2.4 PWM定时器PWM信号输出 162
8.3 PWM定时器实验—定时触发 163
8.3.1 实验目的 163
8.3.2 实验原理 163
8.3.3 实验代码 163
8.3.4 实验现象 165
8.4 PWM定时器实验—PWM输出 166
8.4.1 实验目的 166
8.4.2 实验原理 166
8.4.3 实验代码 166
8.4.4 实验现象 167
8.5 本章小结 167
8.6 练习题 167
第9章 看门狗定时器 168
9.1 看门狗简介 169
9.2 Exynos4412看门狗定时器详解 169
9.2.1 看门狗定时器概述 169
9.2.2 看门狗定时器寄存器详解 170
9.3 看门狗定时器实验 171
9.3.1 实验目的 171
9.3.2 实验原理 171
9.3.3 实验内容 171
9.3.4 实验代码 171
9.3.5 实验现象 172
9.4 本章小结 173
9.5 练习题 173
第10章 RTC定时器 174
10.1 RTC简介 175
10.2 Exynos4412-RTC定时器详解 175
10.2.1 RTC定时器概述 175
10.2.2 RTC定时器寄存器详解 175
10.2.3 BCD码 177
10.3 实时时钟RTC实验 177
10.3.1 实验目的 177
10.3.2 实验原理 177
10.3.3 实验内容 178
10.3.4 实验代码 178
10.3.5 实验现象 179
10.4 本章小结 180
10.5 练习题 180
第11章 A/D转换器 181
11.1 A/D 转换器原理 182
11.1.1 A/D转换基础 182
11.1.2 A/D转换的技术指标 182
11.1.3 A/D转换器类型 183
11.1.4 A/D转换的一般步骤 186
11.2 Exynos4412-A/D转换器详解 186
11.2.1 Exynos4412-A/D转换器概述 186
11.2.2 Exynos4412-A/D转换器寄存器详解 187
11.3 A/D实验 188
11.3.1 实验目的 188
11.3.2 实验原理 188
11.3.3 实验内容 188
11.3.4 实验代码 189
11.3.5 实验现象 191
11.4 本章小结 191
11.5 练习题 192
第12章 I2C接口 193
12.1 I2C总线协议 194
12.1.1 I2C总线协议简介 194
12.1.2 I2C总线协议内容 194
12.2 Exynos4412-I2C控制器详解 197
12.2.1 I2C总线控制器概述 197
12.2.2 I2C总线控制器寄存器详解 197
12.2.3 I2C控制器操作流程 200
12.3 I2C重力感应/陀螺仪实验 201
12.3.1 实验目的 201
12.3.2 实验原理 201
12.3.3 实验内容 202
12.3.4 实验代码 203
12.3.5 实验现象 206
12.4 本章小结 207
12.5 练习题 207
第13章 SPI接口 208
13.1 SPI总线协议 209
13.1.1 协议简介 209
13.1.2 协议内容 209
13.2 Exynos4412-SPI控制器详解 212
13.2.1 SPI控制器简介 212
13.2.2 SPI控制器时钟源控制 212
13.2.3 SPI控制器寄存器详解 215
13.3 SPI/CAN总线实验 218
13.3.1 实验目的 218
13.3.2 实验原理 218
13.3.3 实验内容 219
13.3.4 实验代码 220
13.3.5 实验现象 223
13.4 本章小结 224
13.5 练习题 224