第六讲ARM开发工具的使用124第6讲目录6.1开发工具的选择6.2ADS开发工具简介6.3ADS的命令行工具6.4ADS的集成开发环境6.5用ADS开发应用程序6.1开发工具的选择开发过程集成开发环境含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境(IDE,类似VC、KeilC51等)调试方法嵌入式调试系统应含调试主机、仿真器和目标板3个部分。调试方法一般有如下4种:1指令集模拟器(软调试)2驻留监控软件3JTAG仿真器4在线仿真器(仿真头)调试方法1指令集模拟器(软调试)指令集模拟器可方便用户在PC机上完成一部分简单的软件调试工作,它只是将源代码在PC机上的开发环境中模拟运行,通过集成开发环境提供的寄存器查看、存储器查看、断点执行、单步执行等功能,能检测用户开发的软件在语法和功能上是否正确,它无法在电路板上运行。由于指令集模拟器与真实的硬件环境相差很大,因此即使用户使用指令集模拟器调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应用的开发。调试方法2驻留监控软件(ResidentMonitors:交互式硬件调试)驻留监控软件是一段运行在目标板(用户所开发的硬件电路板)上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互,由调试软件发布命令通知驻留监控软件控制程序的执行、读写存储器、读写寄存器、设置断点等。驻留监控软件是一种比较低廉有效的调试方式,不需要任何其他的硬件调试和仿真设备。ARM公司所提供的Angel调试软件属于该类工具。它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。调试方法3JTAG仿真器JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器在价格上比较便宜,与PC机相连接比较方便,通过现有的JTAG边界扫描口与ARMCPU内核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标板上存储器资源,不占用目标系统的任何端口。另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此许多接口问题,如程序的实时性限制等被最小化了。使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。用户所购买的嵌入式系统开发套件一般都附带有JTAG仿真器。基于JTAG的调试方法—简易JTAG接口调试方法4在线仿真器在线仿真器使用仿真头完全取代目标板上的CPU,可以完全仿真ARM芯片的功能,提供更加深入的调试功能。但这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。在线仿真器通常用在ARM的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。集成开发工具简介1SDTSDT的英文全称是SoftwareDevelopmentKit,是ARM公司为方便用户在ARM芯片上进行应用软件开发而推出的一整套集成开发工具。SDT经过ARM公司逐年的维护和更新,目前的最新版本是6.5.2,但从版本6.5.1开始,ARM公司宣布推出一套新的集成开发工具ARMADS取而代之,今后将不会再看到ARMSDT的新版本。集成开发工具简介2ADSADS的英文全称为ARMDeveloperSuite,是ARM公司推出的新一代ARM集成开发工具,用来取代ARM公司以前推出的开发工具SDT,目前ARMADS的最新版本为1.2。ADS起源于ARMSDT,对一些SDT的模块进行了增强并替换了一些SDT的组成部分,用户可以感受到的最强烈的变化是ADS使用CodeWarriorIDE集成开发环境替代了SDT的APM,使用AXD替换了ADW,现代集成开发环境的一些基本特性如源文件编辑器语法高亮度显示,窗口驻留程序执行等功能在ADS中得以体现。ADS支持所有ARM系列处理器包括ARM9E和ARM11等,除了SDT支持的运行操作系统外,还可以在Windows以及RedHatLinux上运行。集成开发工具简介3Multi2000Multi2000是美国GreenHills软件公司开发的集成开发环境,支持C/C++/EmbeddedC++/Ada95/Fortran编程语言的开发和调试,可运行于Windows平台和Unix平台,并支持各类设备的远程调试。Multi2000支持GreenHills公司的各类编译器以及其它遵循EABI标准的编译器,同时Multi2000支持众多流行的16位、32位和64位处理器和DSP,如PowerPC、ARM、MIPS、x86、Sparc、TriCore、SH-DSP等,并支持多处理器调试。Multi2000包含完成一个软件工程所需要的所有工具,这些工具可以单独使用,也可集成第三方系统工具。集成开发工具简介4EmbestIDEEmbestIDE英文全称是EmbestIntegratedDevelopmentEnvironment,是深圳市英蓓特信息技术有限公司推出的一套应用于嵌入式软件开发的新一代集成开发环境。EmbestIDE是一个高度集成的图形界面操作环境,包含编辑器、编译器、汇编器、链接器、调试器等工具,其界面同MicrosoftVisualStudio类似。EmbestIDE支持ARM、Motorola等多家公司不同系列的处理器,对于ARM系列处理器,目前支持到ARM9系列,包括ARM7、ARM5等低系列芯片。EmbestIDE运行的主机环境为Windows95/98/NT/Me/2000,支持的开发语言包括标准C、EmbeddedC和汇编语言。EmbestIDE包括编辑器、编译器、连接器、调试器、工程管理器等功能模块,用户同时可选配EmbestJTAG仿真器。集成开发工具简介5HitoolforARMHitool是一种较新的arm嵌入式应用软件开发系统,主要包括hitool/ARMDebugger、GNUCompiler(内建)、JTAGcable、评估板以及嵌入式实时操作系统ThreadX等模块。其中编译器模块可以替换成ARMADSCompiler或ARMSDTCompiler。集成开发工具简介6JEENI仿真器JEENI仿真器是美国EPI公司生产的专门用于调试ARM7系列的开发工具。它与PC之间通过以太网口或串口连接,与ARM7目标板之间通过JTAG口连接。该仿真器使用独立电源。JEENI仿真器支持ARM/THUMB指令,支持汇编/高级语言调试。集成开发工具简介7Multi-ICEMulti-ICE是ARM公司自己的JTAG在线仿真器,目前的最新版本是6.1版。Multi-ICE的JTAG链时钟可以设置为5kHz到10MHz,实现JTAG操作的一些简单逻辑由FPGA实现,使得并行口的通信量最小,以提高系统的性能。Multi-ICE硬件支持低至1V的电压。Multi-ICE6.1还可以外部供电,不需要消耗目标系统的电源,这对调试类似手机等便携式、电池供电设备是很重要的。Multi-ICE6.x支持该公司的实时调试工具MultiTrace,MultiTrace包含一个处理器,因此可以跟踪触发点前后的轨迹,并且可以在不终止后台任务的同时对前台任务进行调试,在微处理器运行时改变存储器的内容,所有这些特性使延时降到最低。Multi-ICE6.x支持ARM7、ARM9、ARM9E、ARM10和IntelXscale微结构系列。第6讲目录6.1开发工具的选择6.2ADS开发工具简介6.3ADS的命令行工具6.4ADS的集成开发环境6.5用ADS开发应用程序6.2ADS开发工具简介ARMADS的英文全称为ARMDeveloperSuite,是ARM公司推出的新一代ARM集成开发工具,用来取代ARM公司以前推出的开发工具ARMSDT,目前ARMADS的最新版本为1.2,它取代了早期的ADS1.1和ADS1.0。ADS1.2除了可以安装在WindowsNT4,Windows2000,Windows98和Windows95操作系统下,还支持WindowsXP和WindowsMe操作系统。6.2ADS开发工具简介名称描述功能代码生成工具ARM汇编器,ARM的C、C++编译器,Thumb的C、C++编译器,ARM连接器由CodeWarriorIDE调用把C语言或汇编语言编写的源代码编译成目标文件、然后链接成一个可执行的(或可调试运行的)文件集成开发环境CodeWarriorIDE工程管理源代码编辑(输入、修改)、编译、链接指令模拟器ARMulator由AXD调用,对源代码进行纯软件的调试(语法和非实时功能上)调试器由AXD、ADW/ADU和armsd等组成由CodeWarriorIDE调用,进行在线硬件、软件的仿真调试ARM开发包一些底层的例程和实用程序(如fromELF)由CodeWarriorIDE调用,用户可参考这些例子和源代码,以方便在此基础上进行开发ARM应用库C、C++函数库以及一些头文件等在用户的程序中使用6.2ADS开发工具简介第6讲目录6.1开发工具的选择6.2ADS开发工具简介6.3ADS的命令行工具6.4ADS的集成开发环境6.5用ADS开发应用程序6.3命令行工具介绍所谓命令行工具,就是ADS提供的DOS操作系统下运行的软件,ADS集成开发环境中所有的汇编、编译、链接以及调试等功能,都可以通过这些命令行工具在DOS环境下实现,而不必在ADS集成开发环境中的菜单、工具栏、对话框等方式下实现。ADS12提供了armcc、armcpp、tcc、tcpp、armasm、armlink和armsd等命令行开发工具,在安装完成后,这些命令行工具位于安装文件夹的Bin子目录下。6.3命令行工具介绍第6讲目录6.1开发工具的选择6.2ADS开发工具简介6.3ADS的命令行工具6.4ADS的集成开发环境6.5用ADS开发应用程序6.4.1新建一个工程ARMExecutableImage:用于由ARM指令的代码生成一个ELF格式的可执行映象文件项目Led.mcp中,在Initial文件夹下是一些44B0的初始化文件,其中44binit.s是一个ARM7类型的汇编语言源代码文件,在这里程序对外围进行初始化,定义了44B0芯片的一部分寄存器地址、44B0的工作模式、内存配置、初始化各种异常向量(包括了IRQ和FIQ中断向量)和堆栈以及一些C语言的变量,并提供系统上电、复位及异常处理的入口点。44B0芯片可外接8个Bank的存储器(ROM和RAM),Memcfg.s源代码文件对外部存储空间进行配置。OPTION.S汇编语言源代码文件对定义了一些宏,包括RAM的起始地址,中断入口表地址、RAM类型、系统主频、PLL控制字等。44BLIB_A.S汇编语言源代码文件中定义了一个ChangeMemCon函数(虽然没有使用)。44blib.c是一个C语言源代码文件,里面定义了其他各个文件所要调用的函数,如延时、I/O初始化、串口初始化、输入输出、PLL设置、波特率设置等的函数,该文件由用户自行编写。Bspinit.c是用户自己编写的一个C语言文件,里面用Bsp_Init函数封装了项目所有初始化需要调用的函数,这样在Main函数中只需要调用Bsp_Init函数即进行了所有的初始化。一些头文件,如44B.H文件中定义了44B0芯片的寄存器地址宏定义,OPTION.h文件中定义了C程序使用的一些反映系统工作方式的基本宏定义,Def.h文件中定义了一些数据类型的缩写。在进行44B0的项目的时候,最重要的是包含44binit.S与44blib_a.S这两个文件,如果需要串口输出等辅助功能,就包含进44blib.c文件,然后再加入自己的文件。44binit.S、44blib_a.S这些启动文件都由三星公司提供,建议用户不要进行修改。另外,在Initial文件夹下存在的一些头文件如44b.h、44b