作为一种16/32位的高性能、低成本、低功耗的嵌入式RISC微处理器,ARM微处理器目前已经成为应用最为广泛的嵌入式微处理器。
本书在全面介绍ARM微处理器的体系结构、编程模型、指令系统和开发工具的同时,以Samsung公司的一款基于以太网系统的ARM微处理器——S3C4510B为核心,详细讲解系统的设计、调试,以及相关的软件设计和嵌入式操作系统的移植、应用程序的开发、设备驱动程序的开发过程。
通过阅读本书,可以使具备一定的系统设计能力的读者全面掌握开发基于ARM微处理器系统的多方面知识,从而具备设计开发基于ARM微处理器的特定应用系统的能力。
本书可作为基于ARM的软件编程和硬件系统设计的参考手册,也可作为16/32位微处理器教学用书,以及嵌入式系统应用设计人员的参考用书。
第1章ARM微处理器概述
1.1ARM-AdvancedRISCMachines
1.2ARM微处理器的应用领域及特点
1.2.1ARM微处理器的应用领域
1.2.2ARM微处理器的特点
1.3ARM微处理器系列
1.3.1ARM7微处理器系列
1.3.2ARM9微处理器系列
1.3.3ARM9E微处理器系列
1.3.4ARMl0E微处理器系列
1.3.5ARM/1微处理器系列
1.3.6SecurCore微处理器系列
1.3.?StrongARM、Xscale微处理器系列
1.4ARM微处理器结构
1.4.1RISC体系结构
1.4.2ARM微处理器的寄存器结构
1.4.3ARM微处理器的指令结构
1.5ARM微处理器的应用选型
1.6本章小结
第2章ARM微处理器的编程模型
2.1ARM微处理器的工作状态
2.2ARM体系结构的存储器格式
2.3指令长度及数据宽度
2.4处理器模式
2.5寄存器组织
2.5.1ARM状态下的寄存器组织
2.5.2Thumb状态下的寄存器组织
2.5.3程序状态寄存器
2.6异常
2.6.1ARM体系结构所支持的异常类型
2.6.2对异常的响应
2.6.3从异常返回
2.6.4各类异常的具体描述
2.6.5异常进入/退出
2.6.6异常向量
2.6.7异常优先级
2.6.8应用程序中的异常处理
2.7本章小结
第3章ARM微处理器的指令系统
3.1ARM微处理器的指令集概述
3.1.1ARM微处理器的指令的分类与格式
3.1.2指令的条件域
3.2ARM指令的寻址方式
3.2.1立目p寻址
3.2.2寄存器寻址
3.2.3寄存器间接寻址
3.2.4基址变址寻址
3.2.5多寄存器寻址
3.2.6相对寻址
3.2.7堆栈寻址
3.3ARM指令集
3.3.1跳转指令
3.3.2数据处理指令
3.3.3乘法指令与乘加指令
3.3.4程序状态寄存器访问指令
3.3.5加载/存储指令
3.3.6批量数据加载/存储指令
3.3.7数据交换指令
3.3.8移位指令(操作)
3.3.9协处理器指令
3.3.10异常产生指令
3.4Thumb指令及应用
3.5本章小结
第4章ARM程序设计基础
4.1ARM汇编器所支持的伪指令
4.1.1符号定义伪指令
4.1.2数据定义伪指令
4.1.3汇编控制伪指令
4.14其他常用的伪指令
4.2汇编语言的语句格式
4.2.1在汇编语言程序中常用的符号
4.2.2汇编语言程序中的表达式和运算符
4.3汇编语言的程序结构
4.3.1汇编语言的程序结构
4.3.2汇编语言的子程序调用
4.3.3汇编语言程序示例
4.3.4汇编语言与C/C++的混合编程
4.4系统的初始化过程
4.4.1定义程序人口点
4.4.2设置异常向量
4.4.3初始化存储器系统
4.4.4初始化堆栈指针寄存器
4.4.5初始化临界I/O设备
4.4.6初始化C代码的运行环境
4.4.7改变处理器的运行模式和状态
4.4.8使官旨中断
4.4.9进入C代码运行
4.5本章小结
第5章应用系统设计与调试
5.1系统设计概述
5.2S3C4510B概述
5.2.1S3C4510B及片内外围简介
5.2.2S3C4510B的引脚分布及信号描述
5.2.3CPU内核概述及特殊功能寄存器(SpecialFunctionRegisters)
5.2.4S3C4510B的系统管理器
5.3系统的硬件选型与单元电路设计
5.3.1S3C4510B芯片及引脚分析
5.3.2电源电路
5.3.3晶振电路与复位电路
5.3.4Flash存储器接口电路
5.3.5SDRAM接口电路
5.3.6串行接口电路
5.3.711C接口电路
5.3.8JTAG接口电路
5.3.910Mbps/100Mbps以太网接口电路
5.3.10实时时钟接口电路
5.3.1l总线驱动电路
5.3.12译码电路
5.3.13LED数码显示接口电路
5.3.14LCD显示接口电路
5.3.15ADC接口电路
5.3.16DAC接口电路
5.3.17键盘接口电路
5.3.18通用I/O接口电路
5.4硬件系统的调试
5.4.1电源、晶振及复位电路
5.4.2S3C4510B及JTAG接口电路
5.4.3SDRAM接口电路的调试
5.4.4Flash接口电路的调试
5.4.5外设接口电路的调试
5.4.610Mbps/100Mbps以太网接口电路
5.5印刷电路板的设计注意事项
5.5.1电源质量与分配
5.5.2同类型信号线的分布
5.6本章小结
第6章部件工作原理与编程示例
6.1嵌入式系统的程序设计方法
6.2部件工作原理与编程示例
6.2.1通用I/O口工作原理与编程示例
6.2.2串行通信工作原理与编程示例
6.2.3中断控制器工作原理与编程示例
6.2.4定时器工作原理与编程示例
6.2.5GDMA工作原理与编程示例
6.2.6llc总线控制器工作原理
6.2.7以太网控制器工作原理
6.2.8Flash存储器工作原理与编程示例
6.3BootLoader简介
6.4本章小结
第7章嵌入式uCiinux及其应用开发
7.1嵌入式uClinux系统概况
7.2开发工具GNU的使用
7.2.1GCC编译器.
7.2.2GNUMake
7.2.3使用gdb调试程序
7.3建立uClinux开发环境
7.3.1建立交叉编译器
7.3.2uClinux针对硬件的改动
7.3.3编译uClinux内核
7.3.4内核的加载运行
7.4在uClinux下开发应用程序
7.4.1串行通信
7.4.2socket编程
7.4.3添加用户应用程序到uClinux
7.4.4通过网络添加应用程序到目标系统
7.5在uClinux下开发设备驱动程序
7.5.1设备驱动程序框架
7.5.2设备驱动程序作为可加载的模块
7.5.3设备驱动程序编译到内核
7.5.4通过用户应用程序访问设备驱动程序
7.6本章小结
第8章ARMADS集成开发环境的使用
8.1ADS集成开发环境组成介绍
8.1.1命令行开发工具
8.1.2ARM运行时库
8.1.3GUI开发环境(CodeWarrior和AXD)
8.1.4实用程序
8.1.5支持的软件
8.2使用ADS创建工程
8.2.1建立——个工程
8.2.2编译和链接工程
8.2.3使用命令行工具编译应用程序
8.3用AXD进行代码调试
8.4本章小结
附录相关术语
参考文献
嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等方面的严格要求的专用计算机系统。作为嵌入式系统的核心,嵌入式微处理器目前常采用8位或16位的微处理器。但由于这些微处理器系统的运行速度、寻址能力和功耗等方面的不足,已较难满足很多相对较复杂的嵌入式应用的需要。 ARM公司自成立以来,在32位RISC(ReducedlnstructionSetComputer)CPU开发领域不断取得突破,其结构已经从V3发展到V6。由于ARM公司自成立以来,一直以IP(IntelligenceProperty)提供者的身份向各大半导体制造商出售知识产权,而自己从不介入芯片的生产销售,加上其设计的芯核具有高性能、低功耗、低成本、小体积等显著优点,在移动计算和普适计算领域具有无可比拟的优势,因此得到众多的半导体厂家和整机厂商的大力支持,在32位嵌入式应用领域获得了巨大的成功,目前已经占有75%以上的32位RISC嵌入式产品市场份额,确立了市场领导地位。现在设计、生产ARM芯片的半导体生产商已经超过50家,国内多家大公司也已经购买ARM公司的芯核用于通信专用芯片的设计。鉴于目前ARM微处理器在国内的逐步推广应用,已有部分工科院校开设了基于ARM架构的32位微处理器的相关课程。
在ARM微处理器系列中,ARM7TDMI微处理器系列应用最广,采用ARM7TDMI微处理器作为内核生产芯片的公司最多,其性价比也是最高的。因此,本书主要介绍ARM7TDMI微处理器的结构原理,并以此为基础详细介绍应用系统的软、硬件设计与调试方法。
本书的各章节内容安排如下:
第1章 简要介绍目前ARM微处理器的种类及主要结构特征。通过对本章的阅读,可使读者对ARM技术、ARM微处理器及其应用有一个总体的认识。
第2章 介绍ARM编程模型的基本知识,包括寄存器的组织和ARM微处理器的工作模式,ARM体系结构中异常及处理等基本概念。通过本章的阅读,可使读者了解ARM编程模型的基本知识,为进一步的开发做准备。
第3章 详细介绍ARM体系的指令系统和寻址方式,着重介绍32位的ARM指令集。16位的Thumb指令集为32位ARM指令集的一个子集,在了解ARM指令集的基础上,就很容易理解Thumb指令。本章所介绍的内容适用于所有具有ARMTTDMI内核的ARM微处理器。
第4章 介绍ARM汇编语言程序设计的基本知识。通过阅读本章,读者可以掌握ARM汇编语言的设计方法。
第5章 本章是全书的重点,详细介绍基于S3C4510B的系统的设计全过程,包括存储器及外围芯片的选型,各单元电路的设计、调试等。通过对本章的阅读,具有一定系统设计知识的读者应该可以掌握基于S3C4510B的系统设计,同时,由于ARM体系结构的一致性和系统外围电路的通用性,本章所描述的设计方法也同样适合于其他ARM芯片。
第6章 详细介绍基于S3C4510B,的系统的各功能模块工作原理与应用编程示例,包括通用I/O口、串行接口、定时器、中断控制器、GDMA控制器、MAC控制器等的工作原理与编程示例,Flash存储器的编程与擦除等。通过本章的阅读,可使读者了解S3C4510B各功能模块的编程方法,并在自己设计的系统中加以充分利用。
第7章 详细介绍嵌入式操作系统的基本概念,操作系统在S3C4510B上的编译、运行过程,以及在uClinux操作系统上的简单应用程序的设计、设备驱动程序的设计等。通过本章的阅读,可使读者了解uClinux操作系统及在S3C4510B的运行,并能进一步地进行应用程序及设备驱动程序的开发。
第8章 详细介绍ADS集成开发环境的使用方法,这也是进行应用程序开发的基本工具。
在本书的编写过程中,得到了中国科学院自动化研究所博士生导师刘国平、郁文生老师的指导和帮助,同时得到了北京恒颐高科技术有限公司(www.hyesco.com)的大力支持,在此谨向他们深表谢意。
本书在编写过程中,引用了参考文献所列论著的有关部分,在此谨向论著作者表示由衷的谢意,同时还参考了一些期刊和网站的最新内容,不能一一列出,也在此向相关作者表示感谢。
本书在第一版的基础上,修正了一些不太妥当的地方,同时增加了部分新的内容,如ARM微处理器与常见外设的接口设计方法、BootLoader的编写等,这也是广大读者在系统设计中比较关心的问题。
由于编者的水平有限,书中的错误在所难免,恳请读者批评指正。