本书系统全面地介绍了嵌入式系统中广泛使用的ARM处理器及新的ARMCortexA系列处理器,主要内容包括ARM处理器的体系结构、指令系统;基于ARMCortex-A9内核的Exynos4412处理器,以及基于Exynos4412处理器的FS4412实验教学系统;Linux程序设计,基于FS4412实验教学平台的嵌入式Linux应用程序和驱动程序的设计;ARMCortexA处理器的应用实例。
本书以嵌入式系统的开发为主线. 全面、系统地讲述了嵌入式系统开发的基本知识、基本流程和基本方法. 并以三星公司的基于ARM Cortex A9 内核的Exynos4412 处理器和华清远见公司的FS4412 实验教学系统为硬件平台. 介绍了嵌入式系统的软硬件开发过程.本书力求实用. 侧重于嵌入式系统的开发过程. 力争能够指导学生进行一个完整的嵌入式系统开发.本书共分9 章. 各章的具体内容如下:第1 章介绍了ARM 公司及其处理器的发展历史、现状和未来发展趋势. ARM 公司的主流处理器架构及Cortex 系列处理器. 最后给出了ARM 处理器选型中需要考虑的基本因素.第2 章介绍了ARM 处理器体系结构的发展和特征、处理器的工作状态、寄存器组织、异常处理和ARM Cortex A9 内核架构等内容.第3 章介绍了ARM 处理器的寻址方式. ARM 指令系统的基本格式、各种指令.ARMv4T 版本以后新增的指令以及指令的应用场合及方法.第4 章介绍了基于ARM Cortex A9 内核的Exynos4412 处理器内核单元. Exynos4412 处理器片内外设的一些特性以及功能模块.第5 章介绍了FS4412 实验教学系统的硬件资源. 以及各功能模块单元中所用的芯片及其特征. 并详细介绍了实验教学系统的硬件设计. 包括存储系统、电源和时钟系统、LCD及触摸屏人机接口系统等. 以及多种通信接口的应用电路.第6 章介绍了Exynos4412 处理器最基本的部件编程. 包括处理器的GPIO、中断控制器、异步通信、定时器、MMU 的编程方法和实例.第7 章介绍了Linux 开发中常用的应用程序和驱动程序设计技巧. 包括文件操作、线程创建及同步以及进程通信等. 并介绍了Linux 驱动程序设计的框架和流程. 给出了具体实例.第8 章介绍了嵌入式Linux 目标平台运行环境的建立. 包括交叉编译工具的安装、引导程序BootLoader、内核和根文件系统的编译. 并通过具体的驱动程序案例. 介绍了微处理器硬件部件驱动程序的基本设计思想.第9 章以ARM Cortex A9 及更高版本的ARM 处理器为基础. 介绍了几种系统应用案例. 包括华为荣耀畅玩5x 手机、网络机顶盒等.附录介绍了ARM 处理器的CP15 协处理器使用的指令和寄存器.本书的编写是在多轮教学实践的基础上完成的. 本书内容充实. 重点突出. 阐述循序渐进. 由浅入深. 各章均安排了丰富的思考题. 便于学生自学和自测.本书的编写得到了东北大学研究生院的“东北大学研究生教育科研计划教学立项” 和东北大学计算机科学与工程学院本科教学改革研究项目的支持.本书采用了华清远见公司的FS4412 实验教学系统. 该公司为作者提供了大量的技术资料和技术支持. 本书在编写过程中. 还参考了参考文献所列论著的有关内容及网上相关资Ⅳ料. 在此向相关公司和论著作者一并表示衷心的感谢.本书的主编为张石. 副主编为佘黎煌、鲍喜荣、张新宇. 姚定界、闫鑫、李玉珍、杨朝晖参加了本书有关资料的收集整理工作.由于编者水平有限. 加上时间仓促. 书中难免有一些错误和不足之处. 恳请各位专家和读者批评指正.编 者
前 言
第1 章 ARM 嵌入式技术概论 1
1. 1 ARM 处理器的历史及发展 1
1. 2 ARM 处理器简介 2
1. 2. 1 ARM 处理器特征 2
1. 2. 2 ARM 处理器架构 2
1. 2. 3 Cortex 处理器架构 3
1. 3 ARM 处理器系列 3
1. 3. 1 Classic ARM 处理器 3
1. 3. 2 Cortex A 系列处理器 4
1. 3. 3 Cortex M 系列处理器 7
1. 3. 4 Cortex R 系列处理器 8
1. 3. 5 SecurCore 系列处理器 9
1. 4 ARM 处理器的芯片选型 10
本章小结 11
思考题 11
第2 章 ARM 处理器体系结构 12
2. 1 数据类型 12
2. 2 处理器工作模式 12
2. 3 ARM 处理器的存储系统 13
2. 3. 1 存储空间 13
2. 3. 2 存储格式 13
2. 3. 3 存储管理单元 14
2. 3. 4 高速缓冲存储器 14
2. 3. 5 协处理器 15
2. 4 寄存器组织 15
2. 4. 1 ARM 处理器模式下的寄存器分布 15
2. 4. 2 通用寄存器 17
2. 4. 3 程序状态寄存器 18
2. 5 异常处理 21
2. 5. 1 ARM 处理器异常类型 21
2. 5. 2 ARM 异常处理 22
2. 5. 3 异常优先级 27
2. 6 ARM Cortex A9 内核架构 28
2. 6. 1 ARM Cortex A9 架构简介 28
2. 6. 2 ARM Cortex A9 单核技术 28
2. 6. 3 ARM Cortex A9 多核技术 28
本章小结 31
Ⅵ
思考题 31
第3 章 ARM 处理器指令系统 32
3. 1 ARM 指令集概述 32
3. 2 ARM 指令的基本格式 33
3. 2. 1 ARM 指令集编码 33
3. 2. 2 ARM 指令基本语法格式 33
3. 3 ARM 指令的寻址方式 35
3. 4 ARM 存储器访问指令 39
3. 5 ARM 数据处理指令 42
3. 6 ARM 分支指令 49
3. 7 协处理器指令 50
3. 8 杂项指令 52
3. 9 其他指令介绍 54
本章小结 56
思考题 56
第4 章 Exynos4412 处理器简介 57
4. 1 处理器功能介绍 57
4. 2 处理器引脚介绍 59
4. 3 内核单元 64
4. 4 存储器系统 65
4. 5 多媒体处理单元 65
4. 6 外部连接及通信接口 66
4. 7 系统外设单元 66
4. 8 GPIO 单元 66
4. 9 通用中断控制器 67
4. 10 SPI 接口功能单元 68
4. 11 I2C 接口功能单元 69
4. 12 UART 接口功能单元 70
4. 13 ADC 功能单元 70
本章小结 71
思考题 71
第5 章 Exynos4412 实验教学系统设计 72
5. 1 实验教学系统概述 72
5. 2 Exynos4412 存储模块 75
5. 3 Exynos4412 电源管理系统 75
5. 4 LED/ KEY 模块 76
5. 5 UART 模块 77
5. 6 红外信号接收器 78
5. 7 CAN/ RS 485 通信接口模块 79
5. 8 3 AXIS 传感器模块 80
5. 9 温度传感器模块 80
5. 10 音频模块 81
5. 11 ADC 模块 82
5. 12 LCD 模块 82
Ⅶ
5. 13 摄像头接口模块 84
5. 14 TF 卡/ SD 卡存储模块 85
5. 15 USB 模块 85
本章小结 86
思考题 86
第6 章 Exynos4412 部件编程实例 87
6. 1 GPIO 编程 87
6. 1. 1 GPIO 功能描述 87
6. 1. 2 Exynos4412 的GPIO 常用寄存器分类 87
6. 1. 3 Exynos4412 的GPIO 常用寄存器详解 88
6. 1. 4 GPIO 编程实例 90
6. 2 中断控制器编程 94
6. 2. 1 ARM 处理器的中断响应流程 94
6. 2. 2 Exynos4412 中断概述 95
6. 2. 3 中断相关控制寄存器 95
6. 2. 4 ARM 中断编程实例 101
6. 3 异步串行编程 105
6. 3. 1 Exynos4412 串口简述 106
6. 3. 2 UART 通信寄存器详解 106
6. 3. 3 UART 通信编程实例 110
6. 4 PWM 定时器编程 113
6. 4. 1 PWM 定时器的寄存器 114
6. 4. 2 定时器的PWM 输出工作流程 116
6. 4. 3 PWM 的编程实例 116
6. 5 MMU 编程 118
6. 5. 1 MMU 的作用 118
6. 5. 2 MMU 的工作流程 119
6. 5. 3 MMU 编程实例 120
本章小结 123
思考题 123
第7 章 Linux 程序开发 124
7. 1 开发工具GNU 概述 124
7. 1. 1 GCC 编译器 124
7. 1. 2 GNU Make 126
7. 1. 3 makefile 编程实例 130
7. 2 Linux 文件