ARM嵌入式软件开发_第1页
ARM嵌入式软件开发_第2页
ARM嵌入式软件开发_第3页
ARM嵌入式软件开发_第4页
ARM嵌入式软件开发_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM嵌入式软件开发ARM嵌入式软件开发2主要内容:3.1 ADS开发环境3.1.1 ADS软件组成介绍3.1.2 使用ADS创建工程3.1.3 用AXD进行代码调试3.2 ARM汇编程序设计ARM嵌入式软件开发3开发环境在这一节里,将介绍ARM开发软件ADS(ARM Developer Suite)。通过学习如何在CodeWarrior IDE集成开发环境下编写,编译一个工程的例子,使读者能够掌握在ADS软件平台下开发和调试ARM汇编程序。本节内容:3.1.1 ADS软件组成介绍3.1.2 使用ADS创建工程3.1.3 用AXD进行代码调试ARM嵌入式软件开发43.1.1 ADS软件组成介绍

2、ARM ADS全称为ARM Developer Suite。是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是,它取代了早期的和。它除了可以安装在Windows NT4,Windows 2000,Windows 98和Windows 95操作系统下,还支持Windows XP和Windows Me操作系统。ADS由命令行开发工具,ARM时实库,GUI开发环境(Code Warrior和AXD),实用程序和支持软件组成。 有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。ARM嵌入式软件开发5命令行开发工具 ADS提供下面的命令行开发工具:Arm

3、cc ARM C编译器,默认工具Armcpp ARM C+编译器 tcc Thumb C编译器 Tcpp Thumb C+ 编译器 Armasm ARM和Thumb的汇编器 Armlink ARM连接器 Armsd ARM 和Thumb的符号调试器 ARM嵌入式软件开发63.1.2 ARM运行时库ANSI C库函数:这个C函数库是由以下几部分组成:(1)在ISO C标准中定义的函数;(2)在semihosted环境下(semihosting是针对ARM目标机的一种机制,它能够根据应用程序代码的输入/输出请求,与运行有调试功能的主机通讯。这种技术允许主机为通常没有输入和输出功能的目标硬件提供主机

4、资源)用来实现C库函数的与目标相关的函数;(3)被C和C+编译器所调用的支持函数。ARM C 库提供了额外的一些部件支持C+,并为不同的结构体系和处理器编译代码。C+库函数包含由ISO C+库标准定义的函数。 ARM嵌入式软件开发7库路径库路径是在ADS软件安装路径的lib目录下armlib和cpplib的两个子目录。与这些库相应的头文件安装在adsv1_2include目录下环境变量ARMLIB必须被设置成指向库路径。另外一种指定ARM C和ARM C+库路径的方法是,在链接的时候使用操作选项-libpath directory(directory代表库所在的路径),来指明要装载的库的路径。

5、无需对armlib和cpplib这两个库路径分开指明,链接器会自动从用户所指明的库路径中找出这两个子目录。 ARM嵌入式软件开发8开发环境(Code Warrior和AXD) CodeWarrior for ARM是一套完整的集成开发工具,充分发挥了ARM RISC 的优势, 使产品开发人员能够很好的应用尖端的片上系统技术. 该工具是专为基于ARM RISC的处理器而设计的, 它可加速并简化嵌入式开发过程中的每一个环节,使得开发人员只需通过一个集成软件开发环境就能研制出ARM产品,在整个开发周期中,开发人员无需离开CodeWarrior开发环境, 因此节省了在操做工具上花的时间,使得开发人员有

6、更多的精力投入到代码编写上来,CodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面。用户可以使用ADS的CodeWarrior IDE为ARM和Thumb处理器开发用C,C+,或ARM汇编语言的程序代码。 ARM嵌入式软件开发93.1.3.2 ADS调试器 调试器本身是一个软件,用户通过这个软件使用debug agent可以对包含有调试信息的,正在运行的可执行代码进行比如变量的查看,断点的控制等调试操作。ADS中包含有3个调试器:(1) AXD(ARM eXtended Debugger):ARM扩展调试器;(2) armsd(ARM Symbolic D

7、ebugger):ARM符号调试器;(3) Debug targetAXD可以在Windows 和UNIX下,进行程序的调试。它为用C,C+,和汇编语言编写的源代码提供了一个全面的Windows 和UNIX 环境。 ARM嵌入式软件开发103.1.4 ADS实用程序 fromELF这是ARM映像文件转换工具。该命令将ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式映像文件), Motorola 32-bit S-record format(Motorola 32位S格式映像文件), Intel Hex 32 format(Intel 32

8、位格式映像文件),和 Verilog-like hex format(Verilog 16进制文件)。armarARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。Flash downloader用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具ARM嵌入式软件开发113.1.5 ADS支持的软件 ADS为用户提供下面的软件,使用户可以在软件仿真的环境下或者在基于ARM的硬件环境调试用户应用程序。ARMulator这是一个ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,

9、为ARM和Thumb提供精确的模拟。用户可以在硬件尚未做好的情况下,开发程序代码。ARM嵌入式软件开发123.2 使用ADS创建工程 3.2.1 建立一个工程 在CodeWarrior中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New”菜单。这样就会打开一个如图所示的对话框。ARM嵌入式软件开发13提供了7种可选择的工程类型 ARM Executabl Image:用于由ARM指令的代码生成一个ELF格式的可执行映像文件; ARM Object Library:用于由ARM指令的代码生成一个armar格式的目标文件库; Empty Projec

10、t:用于创建一个不包含任何库或源文件的工程; Make Wizard:用于将Visual C的nmake或GNU make文件转入到CodeWarrior IDE 工程文件; Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混和代码生成一个可执行的ELF格式的映像文件; Thumb Executable image:用于由Thumb指令创建一个可执行的ELF格式的映像文件; Thumb Object Library:用于由Thumb指令的代码生成一个armar格式的目标文件库。 在这里选择ARM Executable Image,在“Project na

11、me:”中输入工程文件名,点击“Location:”文本框的“Set”按钮,浏览选择想要将该工程保存的路径,将这些设置好后,点击“确定” 即可 。ARM嵌入式软件开发14这个时候会出现的窗口,如图所示,有三个标签页,分别为 order,target默认的是显示第一个标签页files。通过在该标签页点击鼠标右键,选中“Add Files”可以把要用到的源程序添加到工程中。ARM嵌入式软件开发15对于本例,由于所有的源文件都还没有建立,所以首先需要新建源文件。在“File”菜单中选择“New”,在打开的如图所示的对话框中,选择标签页File,在中输入要创建的文件名,输入“helloworld.S”

12、,点击“确定”关闭窗口。在这里还有一个细节。在建立好一个工程时,默认的target是DebugRel,还有另外两个可用的target,分别为Realse和Debug,这三个target的含义分别为:DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;Debug:使用该目标为每一个源文件生成最完全的调试信息;Release:使用该目标不会生成任何调试信息。在本例中,使用默认的DebugRel目标。ARM嵌入式软件开发163.2.2 编译和链接工程前的配置点击Edit菜单,选择“DebugRel Settings” 本课程实验程序都使用默认配置即可 更多详细配置说明 请看

13、“ARM ADS集成开发环境的使用.doc ”ARM嵌入式软件开发173.3 用AXD进行代码调试AXD(ARM eXtended Debugger)是ADS软件中独立于CodeWarrior IDE的图形软件,打开AXD软件,默认是打开的目标是ARMulator。这个也是调试的时候最常用的一种调试工具,本节主要是结合ARMulator介绍在AXD中进行代码调试的方法和过程,使读者对AXD的调试有初步的了解。 ARM嵌入式软件开发18编译,调试,运行ARM嵌入式软件开发19调试过程中-查看内存内存数据情况ARM嵌入式软件开发20调试过程中-查看寄存器寄存器数据情况ARM嵌入式软件开发21提纲A

14、RM 微处理器指令的分类ARM 微处理器指令的寻址方式3.2 ARM指令分类及寻址方式ARM 微处理器指令的条件域ARM嵌入式软件开发22ARM微处理器的指令系统 ARM微处理器的指令集是加载微处理器的指令集是加载/存储型的,也即存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载要通过专门的加载/存储指令来完成。存储指令来完成。ARM微处理器的指令集可以分为六大类微处理器的指令集可以分为六大类 :跳转指令跳转指令数据处理指令数据处理指令程序状态寄存

15、器(程序状态寄存器(PSR)处理指令)处理指令加载加载/存储指令存储指令协处理器指令和异常产生指令协处理器指令和异常产生指令ARM微处理器指令的分类ARM嵌入式软件开发23ARM微处理器指令表微处理器指令表-1助记符指令功能描述ADC带进位加法指令ADD加法指令AND逻辑与指令B跳转指令BIC位清零指令BL带返回的跳转指令BLX带返回和状态切换的跳转指令BX带状态切换的跳转指令ARM微处理器指令的分类ARM嵌入式软件开发24ARM微处理器指令表微处理器指令表-2助记符指令功能描述CDP协处理器数据操作指令CMN比较反值指令CMP比较指令EOR异或指令LDC存储器到协处理器的数据传输指令LDM加

16、载多个寄存器指令LDR存储器到寄存器的数据传输指令MCRARM寄存器到协处理器寄存器数据传输ARM微处理器指令的分类ARM嵌入式软件开发25ARM微处理器指令表微处理器指令表-3助记符指令功能描述MLA乘加运算指令MOV数据传送指令MRC协处理器寄存器到ARM寄存器数据传输MRS传送CPSR或SPSR的内容到通用寄存器MSR传送通用寄存器到CPSR或SPSR的指令MUL32位乘法指令MLA32位乘加指令MVN数据取反传送指令ARM微处理器指令的分类ARM嵌入式软件开发26ARM微处理器指令表微处理器指令表-4助记符指令功能描述ORR逻辑或指令RSB逆向减法指令RSC带借位的逆向减法指令SBC带

17、借位减法指令STC协处理器寄存器写入存储器指令STM批量内存字写入指令STR寄存器到存储器的数据传输指令SUB减法指令ARM微处理器指令的分类ARM嵌入式软件开发27ARM微处理器指令表微处理器指令表-5助记符指令功能描述SWI软件中断指令SWP交换指令TEQ相等测试指令TST位测试指令ARM微处理器指令的分类ARM嵌入式软件开发28指令的条件域 当处理器工作在当处理器工作在ARMARM状态时,几乎所有的指令状态时,几乎所有的指令均根据均根据CPSRCPSR中条件码的状态和指令的条件域有中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令条件的执行。当指令的执行条件满足时,指

18、令被执行,否则指令被忽略。被执行,否则指令被忽略。每一条每一条ARMARM指令包含指令包含4 4位的条件码,位于指令的位的条件码,位于指令的最高最高4 4位位31:2831:28。条件码共有。条件码共有1616种,每种条件种,每种条件码可用两个字符表示,这两个字符可以添加在码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳指令助记符的后面和指令同时使用。例如,跳转指令转指令B B可以加上后缀可以加上后缀EQEQ变为变为BEQBEQ表示表示“相等则相等则跳转跳转”,即当,即当CPSRCPSR中的中的Z Z标志置位时发生跳转。标志置位时发生跳转。 ARM微处理器指令的条件域ARM嵌入式软件开发29指令的条件域表-1条件码后缀标 志含 义0000EQZ置位相等0001NEZ清零不相等0010CSC置位无符号数大于或等于0011CCC清零无符号数小于0100MIN置位负数0101PLN清零正数或零0110VSV置位溢出0111VCV清零未溢出ARM微处理器指令的条件域ARM嵌入式软件开发30指令的条件域表-2条件码后缀标 志含 义1001LSC清零Z置位无符号数小于或等于1010GEN等于V带符号数大于或等于10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论