ARM应用软件的开发工具根据功能的不同,分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等,目前世界上约有四十多家公司提供以上不同类别的产品。
用 户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软 件、工程管理及函数库的集成开发环境(IDE)一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。
使用集成开发环境开发基于ARM的应用软件,包括编辑、编译、汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可完成,目前常见的调试方法有以下几种:
1、指令集模拟器
部分集成开发环境提供了指令集模拟器,可方便用户在PC机上完成一部分简单的调试工作,但是由于指令集模拟器与真实的硬件环境相差很大,因此即使用户使用指令集模拟器调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应用的开发。
2、驻留监控软件
驻留监控软件(Resident Monitors)是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互,由调试软件发布命令通知驻留监控软件控制程序的执行、读写存储器、读写寄存器、设置断点等。
驻留监控软件是一种比较低廉有效的调试方式,不需要任何其他的硬件调试和仿真设备。ARM公司的Angel就是该类软件,大部分嵌入式实时操作系统也是采用该类软件进行调试,不同的是在嵌入式实时操作系统中,驻留监控软件是作为操作系统的一个任务存在的。
驻留监控软件的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。
3、JTAG仿真器
JTAG 仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描 口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG调 试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、AC和DC参数不匹配,电线长度的限制等被最小化了。使用集 成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。
4、在线仿真器
在线仿真器使用仿真头完全取代目标板上的CPU,可 以完全仿真ARM芯片的行为,提供更加深入的调试功能。但这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工 艺,因而其价格比较昂贵。在线仿真器通常用在ARM的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。
在以下的章 节中,我们选取了ARM SDT、ARM ADS、MULTI 2000、Hitools for ARM、Embest IDE for ARM五种集成开发环境向读者作一个简单的介绍,这些产品在国内有相对较畅通的销售渠道,用户容易购买。前三种由国外厂商出品,历史比较悠久,在全球范围 内应用较为广泛,后两种由国内厂商推出,具有很高的性价比。另外选取了国际市场上较流行的两种JTAG仿真器:EPI公司的JEENI和ARM公司的 Multi-ICE。
二、 ARM SDT
ARM SDT的英文全称是ARM Software Development Kit ,是ARM公司(www.arm.com)为方便用户在ARM芯片上进行应用软件开发而推出的一整套集成开发工具。ARM SDT经过ARM公司逐年的维护和更新,目前的最新版本是2.5.2,但从版本2.5.1开始,ARM公司宣布推出一套新的集成开发工具ARM ADS 1.0,取ARM SDT而代之,今后将不会再看到ARM SDT的新版本。
ARM SDT由于价格适中,同时经过长期的推广和普及,目前拥有最广泛的ARM软件开发用户群体,也被相当多的ARM公司的第三方开发工具合作伙伴集成在自己的产品中,比如美国EPI公司的JEENI仿真器。ARM SDT(以下关于ARM SDT的描述均是以版本 2.50为对象)可在Windows95、98、NT以及Solaris 2.5/2.6、HP-UX 10上运行,支持最高到ARM9(含ARM9)的所有ARM处理器芯片的开发,包括StrongARM。
ARM SDT包括一套完整的应用软件开发工具:
Ä armcc ARM的C编译器,具有优化功能,兼容于ANSI C。
Ä tcc THUMB的C编译器,同样具有优化功能,兼容于ANSI C。
Ä armasm 支持ARM和THUMB的汇编器。
Ä armlink ARM连接器,连接一个和多个目标文件,最终生成ELF格式的可执行映像文件。
Ä armsd ARM和THUMB的符号调试器。
以上工具为命令行开发工具,均被集成在SDT的两个Windows开发工具ADW和APM中,用户无需直接使用命令行工具。
Ä APM Application Project Manageer,ARM工程管理器,完全图形界面,负责管理源文件,完成编辑、编译、链接并最终生成可执行映像文件等功能,见下图。
Ä ADW Application Debugger Windows,ARM调试工具,ADW提供一个调试C、C++和汇编源文件的全窗口源代码级调试环境,在此也可以执行汇编指令级调试,同时可以查看寄存器、存储区、栈等调试信息。
ARM SDT还提供一些实用程序,如fromELF、armprof、decaxf等,可以将ELF文件转换为不同的格式,执行程序分析以及解析ARM可执行文件格式等。
ARM SDT集成快速指令集模拟器,用户可以在硬件完成以前完成一部分调试工作;ARM SDT提供ANSI C、C++、Embedded C函数库,所有库均以lib形式提供,每个库都分为ARM指令集和THUMB指令集两种,同时在各指令集中也分为高字节结尾(big endian)和低字节结尾(little endian)两种。
用户使用ARM SDT开发应用程序可选择配合Angel驻留模块或者JTAG仿真器进行,目前大部分JTAG仿真器均支持ARM SDT。
ARM SDT 2.50的零售价一般在4000美元到4500美元。
三、 ARM ADS
ARM ADS的英文全称为 ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具,用来取代ARM公司以前推出的开发工具ARM SDT,目前ARM ADS的最新版本为1.2。
ARM ADS起源于ARM SDT,对一些SDT的模块进行了增强并替换了一些SDT的组成部分,用户可以感受到的最强烈的变化是ADS使用CodeWarrior IDE集成开发环境替代了SDT的APM,使用AXD替换了ADW,现代集成开发环境的一些基本特性如源文件编辑器语法高亮,窗口驻留等功能在ADS中才 得以体现。
ARM ADS支持所有ARM系列处理器包括最新的ARM9E和ARM10,除了ARM SDT支持的运行操作系统外还可以在Windows2000/Me以及RedHat Linux上运行。
ARM ADS由六部分组成:
Ä 代码生成工具(Code Generation Tools)
代 码生成工具由源程序编译、汇编、链接工具集组成。ARM公司针对ARM系列每一种结构都进行了专门的优化处理,这一点除了作为ARM结构的设计者的ARM 公司,其他公司都无法办到,ARM公司宣称,其代码生成工具最终生成的可执行文件最多可以比其他公司工具套件生成的文件小20%。
Ä 集成开发环境(CodeWarrior IDE from Metrowerks)
CodeWarrior IDE是Metrowerks公司一套比较有名的集成开发环境,有不少厂商将它作为界面工具集成在自己的产品中。CodeWarrior IDE包含工程管理器、代码生成接口、语法敏感编辑器、源文件和类浏览器、源代码版本控制系统接口、文本搜索引擎等,其功能与Visual Studio相似,但界面风格比较独特。ADS仅在其PC机版本中集成了该IDE。
Ä 调试器(Debuggers)
调试器部分包括两个调试器:ARM扩展调试器AXD(ARM eXtended Debugger )、ARM符号调试器armsd(ARM symbolic debugger)。
AXD基于Windows9X/NT风格,具有一般意义上调试器的所有功能,包括简单和复杂断点设置、栈显示、寄存器和存储区显示、命令行接口等。
Armsd作为一个命令行工具辅助调试或者用在其他操作系统平台上。
Ä 指令集模拟器(Instruction Set Simulators)
用户使用指令集模拟器无需任何硬件即可在PC机上完成一部分调试工作。
Ä ARM 开发包(ARM Firmware Suite)
ARM开发包由一些底层的例程和库组成,帮助用户快速开发基于ARM的应用和操作系统。具体包括系统启动代码、串行口驱动程序、时钟例程、中断处理程序等,Angel调试软件也包含在其中。
Ä ARM应用库(ARM Applications Library)
ADS的ARM应用库完善和增强了SDT中的函数库,同时还包括一些相当有用的提供了源代码的例程。
用户使用ARM ADS开发应用程序与使用ARM SDT完全相同,同样是选择配合Angel驻留模块或者JTAG仿真器进行,目前大部分JTAG仿真器均支持ARM ADS。
ARM ADS的零售价为5500美元,如果选用不固定的许可证方式则需要6500美元。
四、 Multi 2000
Multi 2000是美国Green Hills软件公司(www.ghs.com)开发的集成开发环境,支持C/C++/Embedded C++/Ada 95/Fortran编程语言的开发和调试,可运行于Windows平台和Unix平台,并支持各类设备的远程调试。
Multi 2000支持Green Hills公司的各类编译器以及其它遵循EABI标准的编译器,同时Multi 2000支持众多流行的16位、32位和64位处理器和DSP,如PowerPC、ARM、MIPS、x86、Sparc、TriCore、SH-DSP 等,并支持多处理器调试。
Multi 2000包含完成一个软件工程所需要的所有工具,这些工具可以单独使用,也可集成第三方系统工具。Multi 2000各模块相互关系以及和应用系统相互作用如下图所示:
l 工程生成工具(Project Builer)
工程生成工具实现对项目源文件、目标文件、库文件以及子项目的统一管理,显示程序结构,检测文件相互依赖关系,提供编译和链接的图形设置窗口,并可对编程语言的进行特定环境设定。
l 源代码调试器(Source-Level Debugger)
源代码调试器提供程序装载、执行、运行控制和监视所需要的强大的窗口调试环境,支持各类语言的显示和调试,同时可以观察各类调试信息。
l 事件分析器(EventAnalyzer)
事件分析器提供用户观察和跟踪各类应用系统运行和RTOS事件的可配置的图形化界面,它可移植到很多第三方工具或集成到实时操作系统中,并对以下事件提供基于时间的测量:任务上下文切换、信号量获取/释放、中断和异常、消息发送/接受、用户定义事件。
l 性能剖析器(Performance Profiler)
性能剖析器提供对代码运行时间的剖析,可基于表格或图形显示结果,有效的帮助用户优化代码。
l 实时运行错误检查工具(Run-Time Error Checking)
实时运行错误检查工具提供对程序运行错误的实时检测,对程序代码大小和运行速度只有极小影响,并具有内存泄漏检测功能。
l 图形化浏览器(Graphical Brower)
图形化浏览器提供对程序中的类、结构变量、全局变量等系统单元的单独显示,并可显示静态的函数调用关系以及动态的函数调用表。
l 文本编辑器(Text Editor)
Multi 2000的文本编辑器是一个具有丰富特性的用户可配置的文本图形化编辑工具,提供关键字高亮显示、自动对齐等辅助功能。
l 版本控制工具(Version Control System)
Multi 2000的版本控制工具和Multi 2000环境紧密结合,提供对应用工程的多用户共同开发功能。Multi 2000的版本控制工具通过配置对支持很多流行的版本控制程序,如Rational公司的ClearCase等。
五、 Embest IDE
Embest IDE英文全称是Embest Integrated Development Environment,是深圳市英蓓特信息技术有限公司(www.embedinfo.com)推出的一套应用于嵌入式软件开发的新一代集成开发环境。
Embest IDE是一个高度集成的图形界面操作环境,包含编辑器、编译器、汇编器、链接器、调试器等工具,其界面同Microsoft Visual Studio类似(见下图)。Embest IDE支持ARM、Motorola等多家公司不同系列的处理器,对于ARM系列处理器,目前支持到ARM9系列,包括ARM7、ARM5等低系列芯片。
Embest IDE运行的主机环境为Windows95/98/NT/Me/2000,支持的开发语言包括标准C、Embedded C和汇编语言。
Embest IDE包括编辑器、编译器、连接器、调试器、工程管理器等功能模块,用户同时可选配Embest JTAG仿真器。Embest IDE的所有与处理器和调试设备相关模块采用即插即用方式,可在同一个工作区中同时管理多个应用软件和库工程,各工程均可配置不同的处理器和仿真器,用户 可在各工程中无缝切换。
Embest IDE主要特性:
l 工程管理器:图形化的工程管理工具,负责应用源程序的文件组织和管理,提供编译、链接、库文件的设置窗口。
l 源码编辑器:标准的文本编辑功能,支持语法关键字、关键字色彩显示等。
l 编译工具:集成著名优秀自由软件GNU的GCC编译器,并经过优化和严格测试。
l 调试器:源码级调试,提供了图形和命令行两种调试方式,可进行断点设置、单步执行、异常处理,可查看修改内存、寄存器、变量等,可查看函数栈,可进行反汇编等。
l 调试设备:Embest JTAG仿真器,一端是一个DB25的接口,连接到主机的并行口,另外一端是IDC插头,连接到目标板的JTAG接口。
l 联机帮助:中、英文两种版本在线帮助文档。
用户可以使用Embest IDE配合Embest JTAG仿真器进行应用软件的开发,Embest IDE同时也支持一些国内外常用的Jtag Cable线。
Embest IDE的零售价格为9600人民币(包括Embest JTAG仿真器)。
六、 Hitool for ARM
由Hitool International Inc.( www.hitoolsys.com)出品,是一种较新的ARM嵌入式应用软件开发系统,主要包括Hitool ARM Debugger、GNU Compiler(内建)、JTAG cable、评估板以及嵌入式实时操作系统ThreadX等。其中编译器模块可以替换成ARM ADS Compiler或ARM SDT Compiler。
其主要特点如下:
1) 近似MS Visual Studio的调试界面风格,可以在Win98/ME/NT等多种Win32环境下运行;
2) 优秀的工程管理器、源代码和二进制代码编辑器、字符串搜索引擎以及调试目标的自由拖放等功能;
3) 支持汇编、C以及C++源码级调试,不仅可以通过串口和并口进行本地调试,也可以通过TCP/IP进行远端调试;
4) 集成了S-Record、Binary和Disassembly格式的内存上下载工具,Flash编程工具;
5) 支持多种常用的Jtag Cable,具备通过宏和脚本实现的自动化调试功能。
有关Hitool for ARM的详细资料见附录和本书附带光盘。
七、 JEENI仿真器
JEENI仿真器是美国EPI公司(www.epitools.com) 生产的专门用于调试ARM7系列的开发工具。它与PC之间通过以太网口或串口连接,与ARM7目标板之间通过JTAG口连接。该仿真器使用独立电源。
JEENI 仿真器支持ARM/THUMB指令,支持汇编/高级语言调试。用户应用程序通过JEENI仿真器下载到目标RAM中。通过JEENI仿真器,用户可以观察 /修改ARM7的寄存器和存储器的内容,用户可以在所下载的程序上设置断点,用户可以以汇编/高级语言单步执行程序,也可以全速运行程序,用户可以观察高 级语言变量的数据结构及内容并对变量的内容在线修改。
JEENI 内部使用了一片带有高速缓存的 ARM 处理器,支持对调试操作的快速响应,比如:单步、读写存储器、读写寄存器和下载应用程序到目标板。JEENI 的这种结构,允许以太网接口在处理器执行JTAG指令的同时访问存储器。这种设计极大的提高了下载速度。
JEENI 仿真器能够很好地与SDT2.5工具连接,用户可使用SDT的编译器和调试界面。JEENI 对那些正在使用ARM BlackICE/EmbeddedICE JTAG接口的用户来说是即插即用的替代品。JEENI 可用于ARM SDT 2.11a 或 SDT 2.5,另外大多数第三方的调试器也都支持 JEENI。
八、 Multi-ICE
Multi-ICE是ARM公司自己的JTAG在线仿真器,目前的最新版本是2.1版。
Multi -ICE的JTAG链时钟可以设置为5 kHz到10 MHz,实现JTAG操作的一些简单逻辑由FPGA实现,使得并行口的通信量最小,以提高系统的性能。Multi-ICE硬件支持低至1V的电压。 Multi-ICE 2.1还可以外部供电,不需要消耗目标系统的电源,这对调试类似手机等便携式、电池供电设备是很重要的。
Multi-ICE 2.x支持该公司的实时调试工具MultiTrace,MultiTrace包含一个处理器,因此可以跟踪触发点前后的轨迹,并且可以在不终止后台任务的同时对前台任务进行调试,在微处理器运行时改变存储器的内容,所有这些特性使延时降到最低。
Multi-ICE 2.x支持ARM7、ARM9、ARM9E、ARM 10和Intel Xscale微结构系列。它通过TAP控制器串联,提供多个ARM处理器以及混合结构芯片的片上调试。它还支持低频或变频设计以及超低压核的调试,并且支持实时调试。
Multi-ICE提供支持Windows NT4.0、Windows95/ 98/2000/Me、HPUX 10.20 和 Solaris V2.6/7.0的驱动程序。
Multi-ICE主要优点:
l 快速的下载和单步速度。
l 用户控制的输入/输出位。
l 可编程的JTAG位传送速率。
l 开放的接口,允许调试非ARM的核或DSP。
l 网络连接到多个调试器。
l 目标板供电,或外接电源。