扬州大学硕士学位论文
第四章 嵌入式系统开发工具
4.1 ADS v1.2集成开发环境
ADS(ARM Development Suite)V1.2是ARM公司的ARM软件集成开发环境,可以运行在Windows或者Solaris操作系统。
ADS是集项目管理、文档编辑、编译、链接、调试、仿真的集成开发环境(IDE)。图4.1是ADS编译、链接环境。可以在ADS中,使用C++、C和汇编语言。
图4.1 ADS v1.2 IDE界面
ADS由以下几个部分组成:命令行开发工具、GUI开发工具、工具集、支持软件。
36
周全 ES体系结构的研究及其应用
命令行开发工具有: armcc ARM C编译器。它符合ANSI源代码规范。 armcpp ARM C++编译器。它符合ISO C++或者EC++源代码规范。 Tcc Thumb C编译器。它符合ANSI源代码规范。 Tcpp Thumb C++编译器。它符合ISO C++或者EC++源代码规范。 armasm ARM and Thumb汇编器。它会变ARM汇编语言和Thumb汇编语言代码。 armlink ARM链接器。它合成一个或者多个目标文件的内容,加上选择的目标库文件内容,生成一个可执行程序。ARM链接器生成ELF可执行映像。 armsd ARM and Thumb符号调试器。它支持源代码级程序调试。用户可以在C或者汇编语言代码中单步执行,设置断点和观察点,并且检查程序变量或者内存。 Rogue Wave C++ Rogue Wave库提供ISO/IEC 14822:1998 International Standard for C++定义的标准C++库library 实现。 support libraries ARM C库提供附加的构件来支持不同体系结构和处理器的代码的编译。 ADS提供如下的图形用户界面(GUI): AXD 用于Windows和UNIX的ARM Debugger。它提供完整的Windows和 UNIX环境用于调试C、C++和汇编语言代码。 CodeWarrior IDE 用于Windows的项目管理工具。自动管理源代码和建立你的软件开发项目。 下面的工具集用于支持主要开发工具:
fromELF ARM映像转换工具。它接受ELF格式的输入文件,转换成不同格式的输出文件,包括plain binary、Motorola 32-bit S-record格式、Intel Hex 32格式和Verilog-like hex format。fromELF也可以生成输入文件的文本信息,如代码和数据大小。 armprof ARM profiler显示由ARM debugger生成的profile数据的。 armar ARM库管理器在库中集中并且维护ELF格式目标文件。 Flash downloader 用于下载二进制映像到Flash memory的工具。 下面的支持软件用于仿真调试或者在基于ARM的硬件上调试: ARMulator ARM核心仿真器。提供ARM处理器的指令精确仿真,支持ARM和Thumb可执行程序在非本地硬件上运行。ARMulator与ARM debuggers相集成。 图4.2是ARM调试器AXD Debugger的界面。
37
扬州大学硕士学位论文
图4.2 AXD debugger界面
AXD debugger支持多种调试目标(ARMulator、JTAG Emulator等等),提供统一的调试界面。因此,ADS既可以配合Multi-ICE做硬件调试,又可以使用ARMulator做软件仿真和调试。
4.1.1 调试的概念
1. 调试器(Debugger)
调试器是一种软件,利用它可以使用调试代理(debug agent)来检查和控制调试目标(debug target)上软件的运行。
2. 调试目标(Debug target)
在一个产品开发的早期可能还没有硬件。产品期望的行为可以由软件仿真。并可以与调试器在同一台计算机上运行软件。
当然也可以在建立产品原型的印刷电路板上进行目标系统的调试。 3. 调试代理(Debug agent)
调试代理处理调试器请求的动作,例如:设置断点、读内存、写内存。调试代理不是被调试的程序,也不是调试器本身。调试代理的例子有:
Multi-ICE ARMulator Angel
4. 远程调试接口(Remote Debug Interface)
Remote Debug Interface (RDI)是ARM标准过程接口和调试代理 (参见图4.3)。
38
周全 ES体系结构的研究及其应用
图4.3 RDI调试接口的结构
RDI使调试器以统一的格式同下面的部分通信: ⑴ Host上的调试代理(例如,ARMulator);
⑵ 通过一个通信链路访问的基于ARM的调试监控程序 (例如,Angel); ⑶ 通过硬件调试支持,来控制ARM处理器的调试代理 (例如,Multi-ICE)。 5. 单处理器硬件(Single-processor hardware)
大多数场合,目标系统只有一个处理器。所有的ARM调试器可以在单处理器目标硬件上成功地工作。
6. 多处理器硬件(Multi-processor hardware) 多处理器硬件的需求在不断增长。在有些场合,需要特定的处理器可以专用于特定的任务或者进行并行处理。
调试器可以允许并发的检查和控制几个处理器,实现多处理器的调试。
4.1.2 与目标系统接口
AXD可以在不同的调试系统上运行和调试ARM目标映像。 AXD作为硬件和软件系统的连接点,如图4.4所示。
ARM开发板通过Multi-ICE或者Angel与AXD连接是一种硬件方式; 而ARMulator是一种软件方式。
使用不同的窗口显示应用程序的不同视图,来调试应用程序。 要调试应用系统,就必须选择以下两种调试系统中的一种: ① 基于ARM core的硬件 ② 仿真ARM core的软件 调试器,如AXD、或者armsd.
39
扬州大学硕士学位论文
图4.4 ARM调试系统
4.1.3 调试系统
1. ARMulator
ARMulator是一个程序集合,用于仿真不同ARM处理器的指令集和体系结构。在支持的系统上,提供用于ARM目标开发的软件环境。
支持ARM目标程序的benchmarking。
ARMulator是指令精确的,就是说它对指令集建模而不考虑处理器实际运行的时间。它可以汇报硬件运行的时钟周期数。
2. Multi-ICE and EmbeddedICE
Multi-ICE和Embedded ICE是基于JTAG的调试系统。它们提供调试器和嵌入到ASIC中的ARM core 之间的接口。Multi-ICE是Embedded ICE的替代产品。
3. Angel调试监控程序
Angel是一个调试监控程序,可以用来快速开发和调试运行在ARM硬件上的应用程序。Angel可以在ARM状态或者Thumb状态调试ARM程序。它和需要调试的应用程序运行在同一个目标平台上。
Angel可以使用semihosting,使嵌入的微处理器访问host系统的服务。如屏幕显示、键盘输入和磁盘存储等。
可以使用Angel来在ARM开发板或者定制的硬件上调试应用程序。
4.1.4 Multi-ICE仿真器
Multi-ICE是ARM公司提供的ARM JTAG在线仿真器,与ADS配合使用,可以构建一套ARM开发环境。Mulit-ICE实际上是一个JTAG协议转换器(参见图4.5)。
40