嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计

上传人:E**** 文档编号:89502199 上传时间:2019-05-26 格式:PPT 页数:127 大小:2.83MB
返回 下载 相关 举报
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计_第1页
第1页 / 共127页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计_第2页
第2页 / 共127页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计_第3页
第3页 / 共127页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计_第4页
第4页 / 共127页
嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计_第5页
第5页 / 共127页
点击查看更多>>
资源描述

《嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计》由会员分享,可在线阅读,更多相关《嵌入式系统原理与开发 教学课件 ppt 作者 范延滨 于忠清 郑立爱编著 Ch4-ARM汇编程序设计(127页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统原理与开发,V1.0,ARM汇编程序设计 本课程的主要内容,主要内容,4.1 概述 4.2 ARM伪操作、宏指令和伪指令详解 4.3 ARM汇编语言程序设计 4.4 GNU ARM汇编语言 4.5 ARM汇编语言程序设计实例 附:ARM仿真器中软/硬件断点的讲解,4.1 概述,ARM指令集和Thumb指令集是基于ARM的嵌入式系统程序设计的基础,C语言是嵌入式系统程序设计中使用最广泛的高级语言。 本章主要讲述如何应用汇编语言和C语言进行嵌入式系统设计,使读者能够掌握嵌入式程序设计的基本知识、基本方法和基本流程。,4.1 概述,1. 开发工具选择 ARM开发工具(IDE)一般应该包含编

2、译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等。 目前,世界上约有四十多家公司提供以上不同类别的产品。常用的ARM集成开发环境(IDE)主要有如下几类: ARM 公司的ARM开发工具 GNU的ARM工具链 RealView MDK,4.1 概述,1. 开发工具选择 ARM 公司的ARM开发工具 ADS ARM Developer Suite。最终版本为1.2。 ADS1.2提供完整的WINDOWS界面开发环境。C编译器效率极高,支持C以及C+,使工程师可以很方便的使用C语言进行开发。 提供软件模拟仿真功能,使没有Emulators的学习者

3、也能够熟悉ARM的指令系统。 配合ICE使用,ADS1.2提供强大的实时调试跟踪功能,片内运行情况尽在掌握。ADS1.2需要硬件支持才能发挥强大功能。目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE等。 主要工具有armasm、armcc、armlink、fromelf 等。 下载电缆:目前大部分JTAG仿真器均支持ARM ADS。,4.1 概述,1. 开发工具选择 ARM公司的ARM开发工具 RVDS RealView Development Suite,RVDS是ARM公司继SDT与ADS1.2之后主推的新一代开发工具,是一套附带支持文档和示例的

4、软件开发应用程序,可用于编写、生成和调试适用于ARM系列处理器的应用程序。 RVDS由RealView编译器(RVCT)、RealView汇编器(armasm)、RealView链接器(armlinker),以及RealView调试器(RVDebugger)组成,目前版本为4.0。 RVDS支持ARM最新架构下的编译和调试,包括支持V7指令集和NEON技术,支持Cortex A8和M3;RVDS可以直接连接到SoC Designer;支持CoreSight调试技术;Eclipse/Codewarrior集成开发环境。 丰富的项目管理系统:基于Eclipse的项目管理器,能支持Linux,Win

5、dows平台。,4.1 概述,1. 开发工具选择 ARM 公司的ARM开发工具 RVDS RealView ICE和RealView Trace:这是一种基于JTAG的调试解决方案,用于调试运行在基于ARM体系结构的处理器上的软件。 RealView Profiler:这是ARM Workbench IDE的一个插件,可在以最高250 MHz工作频率运行的目标上,对嵌入式软件进行长时间的非侵入分析。 RealView Developer Kit:这是多套附带支持文档和示例的工具,可用于编写、生成和调试针对基于特定ARM体系结构的处理器的应用程序。,4.1 概述,1. 开发工具选择 GNU的AR

6、M工具链 GNU提供的编译工具包括汇编器as、C编译器gcc、C+编译器g+、连接器ld和二进制转换工具objcopy。 基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g+、arm-linux-ld 和arm-linux-objcopy。 GNU的所有开发工具都可以从www.gnu.org上下载,基于ARM的工具可以从www.uclinux.org获得。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用缺省选项。,4.1 概述,1. 开发工具选择 RV MD

7、K RealView Microcontroller Development Kit。 德国Keil是颇受业界欢迎的51单片机开发工具,它拥有流畅的用户界面与强大的仿真功能。 ARM公司收购Keil之后,正式推出了针对ARM微控制器的开发工具。RV MDK将ARM开发工具RVDS的编译器RVCT与Keil的工程管理、调试仿真工具集成在一起,是一款非常强大的ARM微控制器开发工具。 RV MDK根据微控制器调试开发的特点采用了与ADS、RVDS完全不同的调试、仿真环境Vision debugger与simulator。因此MDK与ADS在工具架构组成上有一些不同,这些区别包括:不同的工程管理器,

8、不同版本的ARM编译器(Compiler),不同的调试器(Debugger),不同的仿真器(Simulator),以及不同的硬件调试。,4.1 概述,2. ADS开发工具 对初学者推荐选择ARM的ADS开发工具。 ADS包括了六个模块,其主要功能如下: 代码生成工具(Code Generation Tools):代码生成工具由源程序编译、汇编、链接工具集组成。ARM公司针对ARM系列每一种结构都进行了专门的优化处理,这一点除了作为ARM结构的设计者的ARM公司,其它公司都无法办到。ARM公司宣称,其代码生成工具最终生成的可执行文件最多可以比其它公司工具套件生成的文件小20%。 集成开发环境(C

9、odeWarrior IDE from Metrowerks):CodeWarrior IDE包含工程管理器、代码生成接口、语法敏感编辑器、源文件和类浏览器、源代码版本控制系统接口、文本搜索引擎等,其功能与Visual Studio相似,界面风格比较独特。ADS仅在其PC机版本中集成了该IDE。,4.1 概述,2. ADS开发工具 ADS包括了六个模块,其主要功能如下: 调试器(Debuggers)包括两个应用调试器:ARM扩展调试器AXD(ARM eXtended Debugger)、ARM符号调试器armsd(ARM symbolic debugger)。AXD基于Windows风格,具有

10、一般意义上调试器的所有功能,包括简单和复杂断点设置、栈显示、寄存器和存储区显示、命令行接口等。Armsd作为一个命令行工具辅助调试或者用在其它操作系统平台上。 指令集模拟器(Instruction Set Simulators):用户使用指令集模拟器无需任何硬件即可在PC机上完成一部分调试工作。,4.1 概述,2. ADS开发工具 对初学者推荐选择ARM的ADS开发工具。 ADS包括了六个模块,其主要功能如下: 调试器(Debuggers)包括两个应用调试器:ARM扩展调试器AXD(ARM eXtended Debugger)、ARM符号调试器armsd(ARM symbolic debugg

11、er)。AXD基于Windows风格,具有一般意义上调试器的所有功能,包括简单和复杂断点设置、栈显示、寄存器和存储区显示、命令行接口等。Armsd作为一个命令行工具辅助调试或者用在其它操作系统平台上。 指令集模拟器(Instruction Set Simulators):用户使用指令集模拟器无需任何硬件即可在PC机上完成一部分调试工作。,4.1 概述,2. ADS开发工具 ADS包括了六个模块,其主要功能如下: ADS使用CodeWarrior公司的编译器,几个主要命令如下: armasm.exe:汇编文件编译器 armcc.exe:C文件编译器 armlink.exe:目标文件连接器 fro

12、melf.exe:将axf或者elf格式转换成其它格式,如二进制。 armprof.exe:对调试过程中生成的profiling记录文件做分析用。 ADS IDE开发环境下的位操作和宏指令: 符号定义(Symbol Definition)伪操作; 数据定义(Data Definition)伪操作; 汇编控制(Assembly Control)伪操作; 框架描述(Frame Description)伪操作; 信息报告(Reporting)伪操作; 其它(Miscellaneous)伪操作;,4.2 ARM伪操作、宏指令和伪指令详解,概述 ARM汇编语言源程序语句一般都由指令、伪操作、宏指令和伪指

13、令组成,ARM汇编语言的设计基础是ARM指令、汇编伪指令、汇编伪操作和宏指令。 伪操作是ARM汇编语言程序里的一些特殊的指令助记符,其作用是为完成汇编程序做各种准备工作,在源程序运行汇编程序处理,而不是在计算机运行期间有机器执行。亦即,这些伪操作只在汇编过程中起作用,一旦汇编结束,伪操作的使命也就随之消失。 宏指令是一段独立的程序代码,可以插在程序中,它通过伪操作来定义,宏在被使用之前必须提前定义好,宏之间可以互相调用,也可自己递归调用。,4.2 ARM伪操作、宏指令和伪指令详解,概述 通过直接书写宏名来使用宏,并具有宏指令的格式输入输出参数。宏定义本身不产生代码,只是在调用它时把宏体插入到原

14、程序中。 伪指令也是ARM汇编语言程序里的特殊助记符,也不在处理器运行期间由机器执行,它们在汇编时将被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作。 伪操作、宏指令一般与编译程序有关,因此ARM汇编语言的伪操作,宏指令在不同的编译环境下有不同的编写形式和规则。,4.2 ARM伪操作、宏指令和伪指令详解,概述 几种微操作类型 符号定义(Symbol Definition)伪操作 数据定义(Data Definition)伪操作 汇编控制(Assemblly Control)伪操作 框架描述(Frame Description)伪操作 信息报告(Reporting)伪操作 其

15、它(Miscellaneous)伪操作,4.2 ARM伪操作、宏指令和伪指令详解,1.符号定义类伪操作 符号定义(Symbol Definition)伪操作主要实现ARM汇编程序中的变量定义、变量赋值,定义寄存器名称等。,4.2 ARM伪操作、宏指令和伪指令详解,1.符号定义类伪操作 GBLA、GBLL、GBLS GBLA:声明一个全局算术变量,初始化为0;A=算术。 GBLL:声明一个全局逻辑变量,初始化为F;L=逻辑。 GBLS:声明一个全局字符串变量,初始化为空;S=string 语法格式: Variable 格式说明 GBLX = GBLA、GBLL、GBLS; Variable是全局

16、变量名称应该是全局唯一的; 对已声明过的变量,重新声明时,将被重新初始化; 作用范围:为包含该变量的源程序。,4.2 ARM伪操作、宏指令和伪指令详解,1.符号定义类伪操作 GBLA、GBLL、GBLS 实例,4.2 ARM伪操作、宏指令和伪指令详解,1.符号定义类伪操作 LCLA、LCLL、LCLS LCLA:声明一个局部算术变量,并初始化为0; LCLL:声明一个局部逻辑变量,并初始化为FALSE; LCLS:声明一个局部字符串变量,并初始化为空串“”; 语法格式: Variable 格式说明 LCLX = LCLA、LCLL、LCLS Variable:局部变量名称应该是作用范围内唯一的; 对已声明过的变量,重新声明时,将被重新初始化; 作用范围:局部变量一般只用于宏代码中;,4.2 ARM伪操作、宏指令和伪指令详解,1.符号定义类伪操作 LCLA、LCLL、LCLS 实例,4.2 ARM伪操作、宏指令和伪指令详解,1.符号定义类伪操作 SETA、SETL、SETS SETA:给一个全局或局部算术变量赋值; SETL:给一个全局或局部逻辑变量赋值; SETS:给一个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号