第5章 ARM系统的开发软件介绍

上传人:我*** 文档编号:137910631 上传时间:2020-07-12 格式:PPT 页数:63 大小:9.49MB
返回 下载 相关 举报
第5章 ARM系统的开发软件介绍_第1页
第1页 / 共63页
第5章 ARM系统的开发软件介绍_第2页
第2页 / 共63页
第5章 ARM系统的开发软件介绍_第3页
第3页 / 共63页
第5章 ARM系统的开发软件介绍_第4页
第4页 / 共63页
第5章 ARM系统的开发软件介绍_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《第5章 ARM系统的开发软件介绍》由会员分享,可在线阅读,更多相关《第5章 ARM系统的开发软件介绍(63页珍藏版)》请在金锄头文库上搜索。

1、第 4 章 ARM系统硬件设计基础,嵌入式软件系统的体系结构,硬件,应用层,驱动层,操作系统层,中间件层,主要内容,1,3,2,4,ADS 1.2集成开发环境简介,基于ARM的汇编语言程序设计,基于ARM的硬件启动程序,基于ARM的C语言与汇编语言混合编程,5,印制电路板制作简介,4.1 ADS 1.2集成开发环境简介,ADS的英文全称为 ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。,ADS由六个部分组成,分别是: 代码生成工具 集成开发环境 调试器 指令集模拟器 ARM开发包 ARM应用库,4.1.1 ADS 1.2集成开发环境下工程的创建,使用ADS

2、创建工程的步骤 : 新建工程 “File|New” 设置目标及其参数 “Edit|Debug Settings” 向工程中添加文件 “Project|Add Files”,利用ADS开发应用程序,工程将所有的源码文件组织在一起,并能够决定最终生成文件存放的路径、输出的格式等。在CodeWarrior中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New”菜单。这样就会打开一个如图3.4所示的对话框。 在这个对话框中为用户提供了7种可选择的工程类型。 ARM Executabl Image:用于由ARM指令代码生成一个ELF格式的可执行映像文件; A

3、RM Object Library:用于由ARM指令代码生成一个armar格式的目标文件库; Empty Project:用于创建一个不包含任何库或源文件的工程; Makefile Importer Wizard:用于将Visual C的nmake或GNU make文件转入到CodeWarrior IDE工程文件; Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混合代码生成一个可执行的ELF格式的映像文件; Thumb Executable image:用于由Thumb指令创建一个可执行的ELF格式的映像文件; Thumb Object Library

4、:用于由Thumb指令的代码生成一个armar格式的目标文件库。,#include #include #include def.h #include option.h #include 2410addr.h #include 2410lib.h #include 2410slib.h #include mmu.h #include uart0.h void Isr_Init(void); /= void Main(void) MMU_Init(); ChangeClockDivider(1,1); ChangeMPllValue(0 xa1,0 x3,0 x1); Port_Init(); I

5、sr_Init(); Uart_Init(0,115200); Uart_Select(0);,while(1) Led_Display(15); Delay(1000); Led_Display(1); Delay(1000); Led_Display(2); Delay(1000); Led_Display(4); Delay(1000); Led_Display(8); Delay(1000); Uart_Printf(nnTest Program. FCLK = %d Hznn, FCLK); void Isr_Init(void) rINTMOD = 0 x0; rINTMSK =

6、BIT_ALLMSK; rINTSUBMSK = BIT_SUB_ALLMSK; ,函数MMU_Init()在mmu.h中定义,完成内存管理单元的初始化。 函数ChangeClockDivider()和函数ChangeMPllValue()在2410lib.h中定义,用来设置系统时钟。 Port_Init()也在2410lib.h中定义,以初始化通用I/O口。Isr_init()用来设置中断。Uart_Init()和Uart_Select()在uart0.h中定义,初始化串口以方便与主机的通信。Led_Display()实现LED的闪烁,Delay()为一延时程序,均在2410lib.h中定义

7、。Uart_Printf()实现与主机的通信。 该段代码在调用初始化函数、完成MMU单元、端口、系统时钟等初始化后,在while循环中实现4个LED循环显示功能,并通过超级终端显示FCLK时钟信息。 在建立好一个工程时,默认的Target是DebugRel,还有另外两个可用的Target,分别为Release和Debug,这3个target的含义分别说明如下。 DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息; Debug:使用该目标为每一个源文件生成最完全的调试信息; Release:使用该目标不会生成任何调试信息。 到目前为止,一个完整的工程已经建立,下面应该对

8、工程进行编译和链接工作。,编译和链接工程,在进行编译和链接前,首先讲述一下如何进行生成目标的配置。 单击“Edit”菜单,出现Edit菜单,选择“DebugRel Settings”,如图3.9所示。,图3.9 Edit菜单,单击“DebugRel Settings”后,出现如图3.10所示的对话框。这个对话框中的设置很多,在这里只介绍一些最常用的设置选项,读者若对其他未涉及的选项感兴趣,可以查看相应的帮助文件。,图3.10 DebugRel Settings对话框,1Target设置选项 Target Name文本框显示了当前的目标设置。 Linker选项供用户选择要使用的链接器。 Pre-

9、linker:目前CodeWarrior IDE不支持该选项。 Post-Linker:选择在链接完成后,还要对输出文件进行的操作。,2Language Settings 因为本例中包含汇编源代码,所以要用到汇编器。首先看ARM汇编器。这个汇编器实际上就是armasm,ARM体系结构是ARM920T,字节顺序默认就是小端模式。在其他编译器的设置中,ARM体系结构均为ARM920T。 细心的读者可能会注意到,在设置框的右下角,当对某项设置进行修改后,该行中的某个选项就会发生相应的改动,如图3.11所示。事实上,这行文字显示的是相应的编译或链接选项,由于有了CodeWarrior,开发人员可以不用

10、再去查看繁多的命令行选项,只要在界面中选中或撤销某个选项,软件就会自动生成相应的代码,这项功能为那些不习惯在DOS下键入命令行的用户提供了极大的方便。,图3.11 命令行工具选项设置,3Linker设置 鼠标选中ARM Linker,出现如图3.12所示的对话框。这里详细介绍该对话框的主要标签页选项,因为这些选项对最终生成的文件有着直接的影响。 在标签页Output中,Linktype中提供了3种链接方式。Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple方式是默认的链接方式,也是使用最频繁的链接方式,它链接生成简单的ELF

11、格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered方式使得链接器根据scatter格式文件中指定的地址映射,生成复杂的ELF格式的映像文件。在一般情况下,该选项使用得不太多。,图3.12 链接器设置,在选中Simple方式后,会出现Simple image选项。 (1)RO Base:这个文本框设置使包含有RO段的加载域和运行域为同一个地址,默认是0 x8000。用户要根据自己硬件的实际SDRAM的地址空间来修改这个地址,保证在这里填写的地址是程序运行时,SDRAM地址空间所能覆盖的地址。 (2)RW Base:这个文本框设置了包含RW和ZI输出段的运行域地址。如果选中

12、split选项,链接器生成的映像文件将包含两个加载域和两个运行域,此时,在RW Base中所输入的地址为包含RW和ZI输出段的域设置了加载域和运行域地址。 (3)Ropi:选中这个设置将告诉链接器,使包含有RO输出段的运行域位置无关。使用这个选项,链接器将保证下面的操作。 检查各段之间的重定址是否有效; 确保任何由armlink自身生成的代码是只读位置无关的。 (4)Rwpi:选中该选项将会告诉链接器,使包含RW和ZI输出段的运行域位置无关。该选项要求RW Base有值,如果没有给它指定数值的话,默认为0值。如果这个选项没有被选中,域就标识为绝对。每一个可写的输入段必须是读写位置无关的。 (5

13、)Split Image:选择这个选项把包含RO和RW输出段的加载域分成2个加载域:一个是包含RO输出段的域,一个是包含RW输出段的域。这个选项要求RW Base有值,如果没有给RW Base选项设置,则默认值为RW Base 0。 (6)Relocatable:选择这个选项将保留映像文件的重定址偏移量。这些偏移量为程序加载器提供了有用信息。 在Options选项中,需要读者引起注意的是Image entry point文本框。该文本框用来指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址去执行。,在Linker下还有一个ARM fromELF,如图所示。,fr

14、omELF就是在3.3.1节中介绍的一个实用工具,它将链接器、编译器或汇编器的输出代码进行格式转换。例如,将ELF格式的可执行映像文件转换成可以烧写到ROM的二进制格式文件;对输出文件进行反汇编,从而提取出有关目标文件的大小、符号和字符串表,以及重定址等信息。只有在Target设置中选择了Post-linker,才可以使用该选项。 在Output format下拉框中,为用户提供了多种可以转换的目标格式,本例选择Plain binary,这是一个二进制格式的可执行文件,可以被烧写到目标板的Flash中。 在Output file name文本框输入希望生成的输出文件存放的路径,或通过单击“Ch

15、oose.”按钮从文件对话框中选择输出文件。如果不输入路径名,则生成的二进制文件存放在工程所在的目录下。,4.1.2 ADS1.2集成开发环境下进行仿真和调试的方法,在Codewarrior中,如果工程编译成功,将产生一个后缀为.axf的映像文件,接下来就可以使用AXD Debugger进行调试。,常用调试按钮,用AXD进行代码调试,AXD是ADS软件中独立于CodeWarrior IDE的图形软件。打开AXD软件,默认打开的目标是ARMulator,这也是在不具备仿真器的条件下调试时最常用的一种调试工具。为了更贴近实际硬件,需要选择Multi-ICE Server作为仿真器。本节主要结合Mu

16、lti-ICE Server介绍在AXD中进行代码调试的方法和过程,使读者对AXD的调试有初步的了解。在使用AXD进行代码调试之前,首先要保证Multi-ICE的正常连接,这样才能正常进入AXD环境。,3.4.1 调试架构 3.4.2 Multi-ICE的配置 3.4.3 使用AXD进行代码调试 3.4.4 生成.bin文件,调试架构,调试主机一般是一台运行调试软件的计算机,运行有ARM公司或者第三方提供的调试软件。常用的软件有ADS中的AXD、Linux下的arm-elf-gdb等。通过这些软件,调试主机可以发出一些高层的调试命令,例如,设置断点、访问内存等。 协议转换器负责转换Debug主控端发出的高级ARM调试命令,将其转换为底层的ARM JTAG调试命令和ARM内核通信的JTAG命令。调试主机和协议转换器之间的介质接口有很多种,比如,以太网、并口、USB和RS-232等。典型的协议转换器是ARM公司提供的Multi-ICE。 调试目

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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