第第 44 章章 ARMARM 嵌入式开发流程和开发工具嵌入式开发流程和开发工具
嵌入式系统的设计可以分成三个阶段:分析、设计和实现。分析阶段是确定要解决的问
题及需要完成的目标,也常常被称为“需求阶段”;设计阶段主要是解决如何在给定的约束条
件下完成用户的要求;实现阶段主要是解决如何在所选择的硬件和软件的基础上进行整个软、
硬件系统的协调实现。在分析阶段结束后,通常开发者面临的一个棘手的问题就是硬件平台
和软件平台的选择,因为它的好坏直接影响着实现阶段的任务完成。
通常硬件和软件的选择包括:处理器、硬件部件、操作系统、编程语言、软件开发工具、
硬件调试工具、软件组件等。
在上述选择中,通常,处理器是最重要的,同时操作系统和编程语言也是非常关键的。
处理器的选择往往同时会限制操作系统的选择,操作系统的选择又会限制开发工具的选择。
ARM 嵌入式开发模式
嵌入式系统与一般 PC 机在开发的硬件环境上的最大差异就是它分成两个平台,一个是
宿主机(Host),一个是目标机(Target)。这里的宿主机通常就是 PC 机,首先利用宿主机
上丰富的资源、良好的开发环境编写和编译能够在目标机上运行的程序,这个过程叫做交叉
编译,然后通过串口、并口、网络或其它接口通过一定的传输手段将交叉编译生成的目标代
码传输并装载到目标机上。图 4-1 中就是采用并口在线仿真器与目标机和宿主机进行连接,
从而实现目标代码的运行和调试。宿主机的工作环境可以是 Windows 98,Windows XP,
Windows 2000 以及 RedHat 等操作系统,具体选择何种操作系统是由所采用的仿真器和所开
发的软件决定,在 ARM 的开发过程中对于不同的软件开发阶段所采用的调试手段是不同的,
宿主机的操作系统需求也就不一样。详细的描述请参考本节后面的内容。
图 4-1 所示为一个典型的目标机/宿主机开发模式。宿主机运行 ADS 集成开发环境,
并通过在线仿真器(Multi-ICE)对目标处理器(Samsung 公司的基于 ARM920T 核的
S3C2410 处理器)ARM 处理器进行调试。宿主机和在线仿真器通过并口连接,在线仿真器
同时连接到目标机的 JTAG 接口。
ARM 嵌入式开发流程和开发工具
ARM 嵌入式系统的开发流程非常灵活而复杂,尤其是软件开发过程牵涉到许多不同的
开发过程,而且每个开发过程所使用的开发工具均不尽相同,因此,在深入学习 ARM 软件
开发之前,有必要对 ARM 嵌入式开发流程和所使用的开发工具有一个初步的了解,本节就
是要达到这样的目的,至于各个开发过程和开发工具的详细介绍请参考后续有关章节。
宿主机
ADS
在线仿真器
Multi-ICE
嵌入式系统
S3C2410
(ARM920T)
并口 JTAG 接
口
图 4-1 目标机/宿主机开发模式
选择硬件平台
1、处理器的选择
嵌入式系统的核心部件是各种类型的嵌入式处理器。据不完全统计,目前全世界嵌入式
处理器的品种总量已经超过 1000 多种,流行体系结构有 30 几个系列。但与全球 PC 市场不
同的是,没有一种微处理器和微处理器公司可以主导嵌入式系统,仅以 32 位的 CPU 而言,
就有 100 种以上嵌入式微处理器。由于嵌入式系统设计的差异性极大,因此选择是多样化的。
ARM 是近年来在嵌入式系统有影响力的微处理器制造商,ARM 的设计非常适用于小
的电源供电系统。Apple 在 Newton 手持计算机中使用 ARM,另外有几款数字无线电话也在
使用 ARM。
设计者在选择处理器时要考虑的主要因素有:
1)处理性能
一个处理器的性能取决于多个方面的因素,如时钟频率,内部寄存器的大小,指令是否
对等处理所有的寄存器等。对于许多需用处理器的嵌入式系统设计来说,目标不是在于挑选
速度最快的处理器,而是在于选取能够完成设计目标的处理器。
比如:对于 ARM 处理器,如果需要使用软解压实现视频,应该尽量选用 ARM9、Xscale
等高档处理器。而对于一般工业控制,则可以考虑 ARM7 芯片是否满足要求。
2)技术指标
当前,许多嵌入式处理器都集成了外围设备的功能,减少了芯片的数量,降低了整个系
统的开发费用和技术难度。开发人员首先考虑的是,系统所要求的一些硬件能否方便地连接
到处理器上。其次是考虑该处理器的一些支持芯片,如 DMA 控制器,内存管理器,中断控
制器,串行设备、时钟等的配套。
各个厂家市场的 ARM 芯片都根据不同的设计目标扩展了丰富的接口,在选择处理器时
应该考虑选择能够支持尽可能多的功能,尤其是相对设计复杂的功能。
3)功耗
嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS
导航器、智能家电等消费类电子产品。这些产品对微处理器的基本要求是:高性能、低功耗。
4)操作系统和软件支持工具的选择
操作系统的移植和开发是嵌入式设计中的一个关键阶段。处理器和操作系统的选择在一
定程度上互相影响,同时又将影响其软件支持工具,因此,处理器的选择的同时必须充分考
虑操作系统的因素。
在 ARM 系统中,如果用户希望使用 Windows CE、Linux 等操作系统,就需要选择
ARM720T 以上带有 MMU(Memory Management Unit)功能的 ARM 芯片,ARM720T、
ARM920T、ARM922T、ARM946T、Strong-ARM 都带有 MMU 功能。而 ARM7TDMI 则没
有 MMU,不支持 Windows CE 和 Linux,但目前有 uCLinux 以及 uC/OS-II 等不需要 MMU
支持的操作系统可运行于 ARM7TDMI 硬件平台之上。事实上,uCLinux 已经成功移植到多
种不带 MMU 的微处理器平台上,并在稳定性和其他方面都有上佳表现。
另外,如果决定采用 Linux、Windows CE、vxWorks 等操作系统时,在选择处理器时应
该尽量选择该操作系统已经支持的处理器,这样可以大大加快开发进度,降低难度。
选择不同的操作系统,其软件开发过程和调试手段各不相同,你的选择方案是否能够提
供各个开发阶段(包括 bootloader 开发、操作系统移植、驱动开发和应用开发)所需的软件
支持工具也是一个必须考虑的因素。
5)是否内置调试工具
处理器如果内置调试工具可以大大缩小调试周期,降低调试的难度。ARM 提供 JTAG
调试接口,而且有众多的第三方厂家推出各种调试工具。
2、硬件平台的选择
选择好目标微处理器后还需要准备硬件平台。目前国内外有许多针对各种 ARM 微处理
器的开发板,这些开发板对所支持的 ARM 微处理器做了详细的硬件评估和软件支持。在自
己动手设计硬件平台之前,购买一块这种开发板作为测试平台,进行学习和参考,这样可以
大大加快开发进度。对于一些应用,也可以直接在这些开发板上进行,这样可以省略硬件设
计的阶段。
如果您不打算购买开发板作为测试平台,您就需要自行设计硬件平台。在本书的第 5 章
中,以目前国内 ARM9 的主流芯片:Samsung 公司的 S3C2410 为例,详细介绍了该处理器
的硬件架构和硬件接口扩展方法。
硬件驱动调试
如果硬件平台是自行设计的,必须首先对硬件进行调试,硬件调试成功是进行操作系统
移植和应用程序开发的一个基本前提。
这个过程通常是通过编写一些简单的测试程序直接驱动硬件以验证硬件是否正确,这些
程序可以基于操作系统进行编程,也可以不使用操作系统,而且后一种方法来得更加简单,
调试也更方便和快捷。
这一类过程通常采用图 4-1 所示的开发模式,在运行于 Windows 的 ADS 中编写程
序并编译,然后通过 Multi-ICE 下载并调试程序。由于这个过程的编程动作依赖于硬件,采
用这种模式可以充分利用在线仿真器的强大的软件调试功能,从而加快排错过程。
操作系统的选择和移植
在单片机系统中,由于受硬件资源的限制,同时应用程序通常比较简单,因此,通常不
使用操作系统,直接采用前后台程序控制方式设计软件系统。前台运行一个死循环作为主程
序流程,在主程序中设置中断,当中断产生的时候,运行后台中断服务程序,然后返回继续
运行主程序。这样的开发方式在 ARM 开发中同样适用,而且对于一些小型应用完全可以采
取这种方式,但是对于复杂应用,如复杂的图形用户界面、网络协议等,采用前后台控制方
式进行设计的应用程序设计复杂,而且不便于软件模块的划分和软件升级、维护等。
在这种情况下,操作系统的优势展露无疑。使用操作系统能够充分发挥 ARM 微处理器
的优势。目前绝大多数嵌入式操作系统都能够稳定运行在 ARM 微处理器上。软件开发中必
须首先选择合适的操作系统。下面将简单介绍几种常用的嵌入式操作系统以及它们的基本开
发流程。
1、μC/OS-II
μC/OS-II 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其
内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。它
可以基于 ROM 运行(ROMable)、可裁减,具有高度移植性。
从应用的角度来看,μC/OS-II 提供了一个实时性非常好的嵌入式内核,在工业控制、数
据采集等领域应用广泛。但 μC/OS-II 内核不支持文件系统、网络协议等功能,而且没有提
供统一的硬件驱动程序接口和开发工具链,在复杂应用中需要考虑内核以外功能的实现难易
程度。
μC/OS-II 内核不支持文件系统,不支持应用程序和驱动程序的加载,因此,在 μC/OS-II
开发中,内核、驱动程序和应用程序都是集中编译,也就是说,μC/OS-II 编译以后的二进制
代码中即包含内核代码,也包含驱动程序和应用程序的代码。同时 μC/OS-II 没有提供统一
的开发工具链,μC/OS-II 程序的编译应该采用支持所选处理器的编译器。对于 ARM 处理器,
可以在 Windows 环境中使用 ADS 、ADT IDE 中编译 μC/OS-II,也可以在 Linux 环境中
使用 GNU GCC 编译 μC/OS-II。因此可以采用图 4-1 所示的开发模式调试基于 μC/OS-II 的
程序。
2、Linux/uClinux
Linux/uClinux 是对于有 MMU 和没有 MMU 的处理器的 Linux 解决方案。Linux 内核的
完全开放,使得可以自己设计和开发出真正的硬实时系统;对于软实时系统,在 Linux 中也
容易得到实现。
Linux/uClinux 提供强大的文件系统、网络功能、GUI 等软件模组支持,而且这些功能
都是可以裁减的,同时它还提供了标准的驱动程序接口和软件开发接口,便于用户编程和程
序维护。
Linux/uClinux 自身具备一整套工具链(GNU GCC),包括编译和调试工具,用户可以
自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中仿真工
具(ICE)的障碍。
对于 ARM 处理器,Linux/uClinux 内核、驱动程序以及应用程序的编译都在 Linux 环境
中使用 GNU GCC 完成。对于内核和驱动程序的调试通常借助于运行于 Linux/uClinux 之前
的 bootloader 来完成,只有在很少的情况下需要借助在线仿真器完成。对于应用程序的调试
则可以完全抛弃在线仿真器,使用 GDB 完成。在本书的第 7 章中介绍了 bootloader 以及
Linux/uClinux 的相关知识。
3、Windows CE
Windows CE 是 Windows 界面在嵌入式处理器中的实现,它提供了友好的人机交互界面
和强大的二次开发功能。Windows CE 包括四大基本模块,它们提供了操作系统的关键特性,
分别是:内核(Kernel)模块、对象存储(Object Store)模块、GWES(用户、应用程序和
操作系统之间的图形用户界面)模块和通信(Communication)模块。
Windows CE 拥有完善的软件支持开发工具,Windows CE 的核心移植和驱动开发使用
专门的操作系统定制工具:Windows CE Platform Builder(简称 PB)。而应用程序的开发则有
嵌入式开发工具包 Embedded Visual Tools,包括 Embedded Visual C++(简称 EVC)和
Embedded Visual Basic(简称 EVB)等。同时 Embedded Visual Tools 下还可以进行部分驱动程
序的开发。同时在 Windows CE 中还提供了用于 Windows CE 开发的 bootloader:EBOOT。
4、vxWorks
VxWorks 是专门为实时嵌入式系统设计开发的操作系统内核,为程序员提供了高效的
实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。在各种 CPU 平台上
提供了统一的编程接口和一致的运行特性,尽可能的屏蔽了不同 CPU 之间的底层差异。应
用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。基
于 VxWorks 操作系统的应用程序可以在不同 CPU 平台上轻松移植。
VxWorks 是一种功能强大而且比较复杂的操作系统,包括了进程管理、存储管理、设
备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks 只占用了很小的存储
空间,并可高度裁减,保证了系统能以较高的效率运行。所以,仅仅依靠人工编程调试,很
难发挥它的功能并设计出可靠、高效的嵌入式系统,必须要有与之相适应的开发工具。
TornadoII 就是为开发 VxWorks 应用系统提供的集成开发环境,TornadoII 中包含的工程管理
软件,可以将用户自己的代码与 VxWorks 的核心有效的组合起来,可以按用户的需要裁剪
配置 VxWorks 内核;vxSim 原型仿真器可以让程序员不用目标机的情况下,直接开发系统
原型,作出系统评估;功能强大的 CrossWind 调试器可以提供任务级和系统级的调试模式,
可以进行多目标机的联调;优化分析工具可以帮助程序员从多种方式真正地观察、跟踪系统
的运行,排除错误,优化性能。
ADS 与 Multi-ICE 简介
本节将简单介绍 ARM 开发软件 ADS(ARM Developer Suite)和 Multi-ICE 硬件仿真器。
在随后的 节中,将以一个简单的例子描述如何在 ADS 集成开发环境下编写、编译并调
试应用程序。
ARM ADS 全称为 ARM Developer Suite,是 ARM 公司推出的用于 ARM 程序设计、开
发和调试的集成开发工具。现在 ADS 的最新版本是 ,它取代了早期的 和
。它支持 Windows NT4,Windows 2000,Windows 98、Windows 95、Windows XP
和 Windows Me 等操作系统。
ADS 由命令行开发工具,ARM 运行时库,图形化集成开发环境(Code Warrior 和 AXD),
实用程序和支持软件组成。下面将就每个部分作详细的介绍。
本文以 ADS 为例,并假设已经将 ADS 安装在“C:\Program Files\ARM\ADSv1_2\”
目录下。
命令行开发工具
ADS 包含一系列基于命令行的 ARM 编译、汇编、链接等工具,它们位于 ADS 安装目
录的 bin 子目录下(C:\Program Files\ARM\ADSv1_2\Bin)。它们既可以在命令控制台环境
下使用,同时由于已被嵌入到了 ADS 的图形界面中,所以也可以在图形界面下通过参数设
置等手段来使用。
1、ARM C(C++)编译器
ADS 包含包含多种 C 编译器,包括:armcc,tcc,armcpp 和 tcpp。其中 armcc 是 ARM
C 编译器,armcpp 是 ARM C++编译器,tcc 是 Thumb C 编译器,tcpp 是 Thumb C++ 编译
器。
2、ARM 汇编器(armasm)
armasm 是 ARM 和 Thumb 的汇编器. 它对用 ARM 汇编语言和 Thumb 汇编语言写的源
代码进行汇编。
3、ARM 链接器(armlink)
armlink 是 ARM 连接器。该命令既可以将编译得到的一个或多个目标文件和相关的一
个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目
标文件,以供进一步的链接。ARM 链接器生成的是 ELF 格式的可执行映像文件。
5、符号调试器(armsd)
armsd 是 ARM 和 Thumb 的符号调试器。它能够进行源码级的程序调试。用户可以在
用 C 或汇编语言写的代码中进行单步调试,设置断点,查看变量值和内存单元的内容。
ARM 运行时库
ADS 提供以下的:
在 ADS 软件安装路径的 lib 目录(C:\Program Files\ARM\ADSv1_2\lib)下有两个子目
录:armlib 和 cpplib。这两个子目录提供了两种运行时库来支持被编译的 C 和 C++代码,它
们分别是:ANSI C 函数库和 C++函数库。
环境变量 ARMLIB 必须被设置成指向库路径。另外一种指定 ARM C 和 ARM C++库路
径的方法是,在链接的时候使用操作选项-libpath directory(directory 代表库所在的路径),来
指明要装载的库的路径。需要说明的是,ADS 安装成功后,ARMLIB 被缺省指向到
C:\Program Files\ARM\ADSv1_2\LIB 目录,因此通常不用进行设置链接器就会自动从
ARMLIB 指定的库路径中找出这两个函数库的路径。
1、ANSI C 函数库:(armlib)
ARM C 库包含浮点代数运算库、数学库等各类库函数。与这些库相应的头文件在
C:\Program Files\ARM\ADSv1_2\include 目录中。这个 C 函数库是由以下几部分组成:
1)在 ISO C 标准中定义的函数;
2)在 semihosted 环境下(semihosting 是针对 ARM 目标机的一种机制,它能够根据应用
程序代码的输入/输出请求,与运行有调试功能的主机通讯。这种技术允许主机为通常没有
输入和输出功能的目标硬件提供主机资源)用来实现 C 库函数的与目标相关的函数;
3)被 C 和 C++编译器所调用的支持函数。
ARM C 库提供了额外的一些部件支持 C++,并为不同的结构体系和处理器编译代码。
ARM C 库函数是以二进制格式提供的,并禁止修改。如果读者想对库函数创建新的实
现的话,可以把这个新的函数编译成目标文件,然后在链接的时候把它包含进来。这样在链
接的时候,使用的是新的函数实现而不是原来的库函数。
通常情况下,为了创建依赖于目标的应用程序,在 ANSI C 库中只有很少的几个函数需
要实现重建。
2、C++函数库:
这个子目录包含了 Rogue Wave C++库和 C++支持函数库。Rogue Wave C++库和 C++支
持 函 数 库 合 在 一 起 被 称 为 ARM C++ 库 。 与 这 些 库 相 应 的 头 文 件 安 装 在 C:\Program
Files\ARM\ADSv1_2\include 目录下。这个库是由以下几部分组成的:
1)版本为 的 Rogue Wave Standard C++库;
2)C++编译器使用的支持函数;
3)Rogue Wave 库所不支持的其他的 C++函数。
Rogue Wave Standard C++ 函 数 库 的 源 代 码 不 是 免 费 发 布 的 , 可 以 从 Rogue Wave
Software Inc.,或 ARM 公司通过支付许可证费用来获得源文件。
图形化集成开发环境(Code Warrior 和 AXD)
1、CodeWarrior for ARM
CodeWarrior for ARM 是一套完整的集成开发工具,充分发挥了 ARM RISC 的优势, 使
产品开发人员能够很好的应用尖端的片上系统技术. 该工具是专为基于 ARM RISC 的处理
器而设计的, 它可加速并简化嵌入式开发过程中的每一个环节,使得开发人员只需通过一个
集成软件开发环境就能研制出 ARM 产品, 在整个开发周期中 , 开发人员无需离开
CodeWarrior 开发环境, 因此节省了在操做工具上花的时间,使得开发人员有更多的精力投入
到代码编写上来,
CodeWarrior 集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面。
用户可以使用 ADS 的 CodeWarrior IDE 为 ARM 和 Thumb 处理器开发用 C,C++,或 ARM
汇编语言的程序代码。通过提供下面的功能,CodeWarrior IDE 缩短了用户开发项目代码的
周期。
1)全面的项目管理功能;
2)子函数的代码导航功能,使得用户迅速找到程序中的子函数。
可以在 CodeWarrior IDE 为 ARM 配置各种命令行工具的参数,实现对工程代码的编译,
汇编和链接。
CodeWarrior IDE 能够让用户将源代码文件,库文件还有其他相关的文件以及配置设置
等放在一个工程中。每个工程可以创建和管理生成目标设置的多个配置。例如,要编译一个
包含调试信息的生成目标和一个基于 ARM7TDMI 的硬件优化生成目标,生成目标可以在同
一个工程中共享文件,同时使用各自的设置。
CodeWarrior IDE 为用户提供下面的功能:
源代码编辑器,它集成在 CodeWarrior IDE 的浏览器中,能够根据语法格式,使用不同
的颜色显示代码;
源代码浏览器,它保存了在源码中定义的所有符号,能够使用户在源码中快速方便的跳
转;
查找和替换功能,用户可以在多个文件中,利用字符串通配符,进行字符串的搜索和替
换;
文件比较功能,可以使用户比较路径中的不同文本文件的内容。
ADS 的 CodeWarrior IDE 是基于 Metrowerks CodeWarrior IDE 版本的。它经过适当
的裁剪以支持 ADS 工具链。
针对 ARM 的配置面板为用户提供了在 CodeWarrior IDE 集成环境下配置各种 ARM 开
发工具的能力。
以 ARM 为目标平台的工程创建向导,可以使用户以此为基础,快速创建 ARM 和
Thumb 工程。
尽管大多数的 ARM 工具链已经集成在 CodeWarrior IDE,但是仍有许多功能在该集成
环境中没有实现,这些功能大多数是和调试相关的,因为 ARM 的调试器没有集成到
CodeWarrior IDE 中。
由于 ARM 调试器(AXD)没有集成在 CodeWarrior IDE 中,这就意味着,用户不能在
CodeWarrior IDE 中进行断点调试和查看变量。
2、ADS 调试器
这里所说的调试器本身是一个软件,用户通过这个软件并配合调试代理(debug agent)
可以对包含有调试信息的,正在运行的可执行代码进行比如变量的查看,断点的控制等调试
操作。
调试代理执行调试器发出的命令,如:设置断点,单步运行,从存储器中读数据,把数
据写到存储器等。调试代理既不是被调试的程序,也不是调试器。在 ARM 体系中,它可能
是下面几种情况中的一个:
1)在线实时仿真器
在线实时仿真器通过 JTAG 端口与目标机进行连接,可以实现对 ARM 处理器的在线、
实时调试,且不占用系统资源。
Multi-ICE(Multi-processor in-circuit emulator)是 ARM 公司自己的 JTAG 在线实时仿真
器。它支持全系列的 ARM 核,通过并口与 PC 机连接,数据接口为 8 位。Multi-ICE 内部采
用 FPGA 实现并口到 JTAG 的协议转换,速度很快,下载速度可在 120kByte/s 左右。
本章下节将要提到的 ADT 1000A 仿真器也是一种在线实时仿真器。
2)ARMulator
ARMulator 即软件模拟器,它独立于处理器硬件,是一种有效的源程序检验和测试工具。
但是,模拟器毕竟只是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、
定时器等方面与实际处理器有相对大的差别。
3)Angel
Angel 为一个运行于目标机上的监控程序,它在调试器和目标板之间通过一定的通信方
式,如:串口通信,为用户提供各种调试功能。这种方式需要占用目标机系统资源,如串口、
ROM、RAM 等。
ADS 中包含有 3 个调试器:
1)AXD(ARM eXtended Debugger):ARM 扩展调试器;
2)armsd(ARM Symbolic Debugger):ARM 符号调试器;
3)与老版本兼容的 Windows 或 Unix 下的 ARM 调试工具,ADW/ADU(Application
Debugger Windows/Unix)。
实用程序
此外,ADS 还提供了许多实用工具,下面简单的介绍开发中经常用到的程序:
1、fromELF
这是 ARM 映像文件转换工具。该命令将 ELF 格式的文件作为输入文件,将该格式转
换为各种输出格式的文件,包括 plain binary(BIN 格式映像文件), Motorola 32-bit S-record
format(Motorola 32 位 S 格式映像文件), Intel Hex 32 format(Intel 32 位格式映像文件),和
Verilog-like hex format(Verilog 16 进制文件)。FromELF 命令也能够为输入映像文件产生文本
信息,例如代码和数据长度。
2、armar
ARM 库函数生成器将一系列 ELF 格式的目标文件以库函数的形式集合在一起,用户可
以把一个库传递给一个链接器以代替几个 ELF 文件。
3、Flash downloader
用于把二进制映像文件下载到 ARM 开发板上的 Flash 存储器的工具
支持的软件
ADS 为用户提供下面的软件,使用户可以在软件仿真的环境下或者在基于 ARM 的硬件
环境调试用户应用程序。
ARMulator
这是一个 ARM 指令集仿真器,集成在 ARM 的调试器 AXD 中,它提供对 ARM 处理器
的指令集的仿真,为 ARM 和 Thumb 提供精确的模拟。用户可以在硬件尚未做好的情况下,
开发程序代码。
ADT IDE 简介
ADT IDE 集成开发环境
1. ADT IDE 简介
ADT IDE 是一套应用于嵌入式软件开发的新一代集成开发环境,它提供高效、清晰、
可视化的嵌入式软件开发平台,包括一整套完备的面向嵌入式系统的开发和调试工具:编辑
器、编译器、链接器、工程管理器以及调试器等。ADT IDE 运行于 Windows NT、95、98、
2000 及 XP,采用类 Visual Stdio 界面风格,其界面如图 4-2 所示。
图 4-2 ADT IDE 集成开发环境软件界面图
2. ADT IDE 主要特性
◆ 中文、英文版本支持
◆ 操作系统支持
◆ 支持 Vxworks,uCLinux,Linux,Nucleus 等操作系统的开发和调试。
◆ 可视化的源码编辑和工程管理功能:
◆ 界面友好,使用方便:类似 MS Visual Studio 的用户界面,支持打印功能,支持
文件内查找功能和 Find in Files 功能。
◆ 工程管理器:ADT IDE 提供图形化的工程管理工具,以 project 为单位为用户提
供应用源程序的文件组织和管理,管理用户的应用程序,编译链接选项以及调试参数等。
◆ 源码编辑器:支持标准的文本编辑功能,支持 C 语言、汇编语言语法高亮显示。
◆ 辅助编辑工具:提供多剪贴板工具、代码模板工具、头文件和源文件切换工具、
注释工具、符号配对书写工具等多种辅助编辑工具。
◆ 交叉编译功能:
◆ 支持开发语言:ANSI C;Embedded C++;汇编语言。
◆ 编译工具:使用著名优秀自由软件 GNU 的 GCC 交叉编译工具,并经过优化和严
格测试,支持 C 语言、汇编语言等。
◆ 编译参数设置:完全图形界面方式的编译参数设置,提供可视化的设置功能。支
持工程级/文件目录级/文件级编译参数设置。
◆ 强大的源代码级调试功能:
◆ 图形和命令行两种调试方式。
◆ 断点功能:支持软件断点和硬件断点,实现断点设置、断点屏蔽、断点取消、断
点列表。
◆ 程序的单步执行。
◆ 变量监视功能:随程序运行同步更新变量,即时修改变量值,可设置自动刷新方
式、十进制/十六进制显示。
◆ ARM 各种模式的寄存器即时查看与修改,当前模式指示,寄存器值修改时红色
突显。
◆ 存储器查看与修改,可设置自动刷新方式、字节/双字节/四字节显示、大/小端方
式显示,存储器值修改时红色突显。
◆ 函数堆栈显示,可设置自动刷新方式、十进制/十六进制显示、参数值显示,参
数类型显示。
◆ 支持源程序、反汇编程序和混合窗口显示,支持 ARM/THUMB 方式显示。
◆ 具有与 MS Visual Studio 类似的调试菜单功能:Go,Stop,Reset,Step into,Step
over,Step out,Run to Cursor 等。
◆ 支持程序下载。
◆ 板上寄存器(On Board Register)的查看和修改,可以查看支持 CPU 的所有板上寄
存器的具体意义、当前值、各个位的意义,可设置自动刷新方式、二进制/十进制/十六进制
显示、大/小端方式显示,支持十进制/十六进制方式修改寄存器值,寄存器值修改时红色突
显。
◆ 存储区下载和上载功能。
◆ 工程级调试参数的保存。
◆ 提供 Simulator 模拟器,支持脱机模拟调试。
◆ 集成 elf to bin 及反汇编常用工具。
◆ 丰富的例程程序。
◆ FLASH Memory 在线编程。
◆ 支持对多种 FLASH 芯片的实时检查、擦除、编程、校验等操作。
◆ 支持 8/16/32 位 Flash 访问宽度,支持多片 Flash 同时编程,无需劈分文件。
◆ 高速编程,编程速度约为 80Kbytes/S.
◆ 提供统一的 Flash 编程接口,用户可灵活地添加配置 Flash 编程方案。
ADT Emulator for ARM JTAG 仿真器
1. 支持 ADT IDE For ARM 集成开发环境;完全兼容 ADS 集成开发环境;
2. 支持 GDB 调试(Linux/windows 等操作系统下);
3. 支持 ARM 系列 CPU 内核:
ARM7,ARM7DI,ARM7TDMI,ARM7TDMI-S,ARM710T,ARM720T,ARM726FZ,AR
M9, ARM9TDMI,ARM940T,ARM920T,ARM922T,ARM9E-S,ARM966E-S,Intel Xscale,
Securcore…
4. 支持 Windows 98/NT/2000/XP;
5. 兼容电平接口;
6.支持标准的 14/20 针 JTAG 接口;
7.支持汇编级调试,支持 ARM、THUMB 及指令集交叉调试;
8.下载速度大于 120Kbytes/S.
9.支持标准 C 语言程序调试;
10.非插入式调试,不占用板上任何资源;
11.支持外接电源供电;
12.支持 Flash 在线编程;
13.采用标准并口技术,无须选择 ECP、EPP;
14.LED 指示运行状态;
15.通过软件升级方式支持更高版本的 ARM 核处理器;
16.支持硬件断点与不限个数的软件断点。
图 4-3 ADT Emulator for ARM JTAG 仿真器