ARM与ads1.2

ARM ADS 全称为 ARM Developer Suite 。是 ARM 公司推出的新一代 ARM 集成开发工具。如今 ADS 的最新版本是 1.2 ,它取代了早期的 ADS1.1 ADS1.0 。它除了能够安装在 Windows NT4 Windows 2000 Windows 98 Windows 95 操做系统下,还支持 Windows XP Windows Me 操做系统。 浏览器

ADS 由命令行开发工具, ARM 时实库, GUI 开发环境 (Code Warrior AXD) ,实用程序和支持软件组成。 有了这些部件,用户就能够为 ARM 系列的 RISC 处理器编写和调试本身的开发应用程序了。 tcp

下面就详细介绍一下 ADS 的各个组成部分。 编辑器

命令行开发工具 函数

这些工具完成将源代码编译,连接成可执行代码的功能。 工具

ADS 提供下面的命令行开发工具: 开发工具

armcc 测试

armcc ARM C 编译器。这个编译器经过了 Plum Hall C Validation Suite ANSI C 的一致性测试。 armcc 用于将用 ANSI C 编写的程序编译成 32 ARM 指令代码。 优化

由于 armcc 是咱们最经常使用的编译器,因此对此做一个详细的介绍。 ui

在命令控制台环境下,输入命令: spa

armcc help

能够查看 armcc 的语法格式以及最经常使用的一些操做选项

armcc 最基本的用法为: armcc [options] file1 file2 ... filen

这里的 option 是编译器所须要的选项, fiel1,file2filen 是相关的文件名。

这里简单介绍一些最经常使用的操做选项。

-c :表示只进行编译不连接文件;

-C ( 注意:这是大写的 C) 禁止预编译器将注释行移走;

-D<symbol> :定义预处理宏,至关于在源程序开头使用了宏定义语句 #define symbol ,这里 symbol 默认为 1

-E :仅仅是对 C 源代码进行预处理就中止;

-g<options> :指定是否在生成的目标文件中包含调试信息表;

-I<directory> :将 directory 所指的路径添加到 #include 的搜索路径列表中去; -J<directory> :用directory 所指的路径代替默认的对 #include 的搜索路径;

-o<file> :指定编译器最终生成的输出文件名。

-O0 :不优化;

-O1 :这是控制代码优化的编译选项,大写字母 O 后面跟的数字不一样,表示的优化级别就不一样, -O1 关闭了影响调试结果的优化功能;

-O2 :该优化级别提供了最大的优化功能;

-S :对源程序进行预处理和编译,自动生成汇编文件而不是目标文件;

-U<symbol> :取消预处理宏名,至关于在源文件开头,使用语句 #undef symbol;

-W<options> :关闭全部的或被选择的警告信息;

有关更详细的选项说明,读者可查看 ADS 软件的在线帮助文件。

armcpp

armcpp ARM C++ 编译器。它将 ISO C++ EC++ 编译成 32 ARM 指令代码。

tcc

tcc Thumb C 编译器。该编译器经过了 Plum Hall C Validation Suite ANSI 一致性的测试。

tcc ANSI C 源代码编译成 16 位的 Thumb 指令代码。

tcpp

tcpp Thumb C++ 编译器。 它将 ISO C++ EC++ 源码编译成 16 Thumb 指令代码。

armasm

armasm ARM Thumb 的汇编器 . 它对用 ARM 汇编语言和 Thumb 汇编语言写的源代码进

行汇编。

armlink

armlink ARM 链接器。该命令既能够将编译获得的一个或多个目标文件和相关的一个或多个库文件进行连接,生成一个可执行文件,也能够将多个目标文件部分连接成一个目标文件,以供进一步的连接。 ARM 连接器生成的是 ELF 格式的可执行映像文件。

armsd

armsd ARM Thumb 的符号调试器。它可以进行源码级的程序调试。用户能够在用 C 或汇编语言写的代码中进行单步调试,设置断点,查看变量值和内存单元的内容。

GUI 开发环境 (Code Warrior AXD)

CodeWarrior 集成开发环境

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 配置在 8.1.1中介绍的各类命令工具,实现对工程代码的编译, 汇编和连接。

CodeWarrior IDE 中所涉及到的 target 有两种不一样的语义。

目标系统 (Target system)

是特指代码要运行的环境,是基于 ARM 的硬件。好比,要为 ARM 开发板上编写要运行在它上面的程序,这个开发板就是目标系统。

生成目标 (Build target)

是指用于生成特定的目标文件的选项设置 ( 包括汇编选项,编译选项,连接选项以及连接后的处理选项 ) 和所用的文件的集合。

CodeWarrior IDE 可以让用户将源代码文件,库文件还有其余相关的文件以及配置设置等放在一个工程中。每一个工程能够建立和管理生成目标设置的多个配置。例如,要编译一个包含调试信息的生成目标和一个基于 ARM7TDMI 的硬件优化生成目标,生成目标能够在同一个工程中共享文件,同时使用各自的设置。

CodeWarrior IDE 为用户提供下面的功能:

源代码编辑器,它集成在 CodeWarrior IDE 的浏览器中,可以根据语法格式,使用不一样的颜色显示代码;

源代码浏览器,它保存了在源码中定义的全部符号,可以使用户在源码中快速方便的跳转;查找和替换功能,用户能够在多个文件中,利用字符串通配符,进行字符串的搜索和替换;

文件比较功能,可使用户比较路径中的不一样文本文件的内容。

ADS CodeWarrior IDE 是基于 Metrowerks CodeWarrior IDE 4.2 版本的。它通过适当的裁剪以支持 ADS 工具链。

针对 ARM 的配置面板为用户提供了在 CodeWarrior IDE 集成环境下配置各类 ARM 开发工具的能力,这样用户能够不用在命令控制台下就可以使用在 8.1.1和将在 8.1.4 中介绍的各类命令。

ARM 为目标平台的工程建立向导,可使用户以此为基础,快速建立 ARM Thumb 工程。

尽管大多数的 ARM 工具链已经集成在 CodeWarrior IDE ,可是仍有许多功能在该集成环境中没有实现,这些功能大多数是和调试相关的,由于 ARM 的调试器没有集成到 CodeWarrior IDE 中。

因为 ARM 调试器 (AXD) 没有集成在 CodeWarrior IDE 中,这就意味着,用户不能在 CodeWarrior IDE 中进行断点调试和查看变量。

对于熟悉 CodeWarrior IDE 的用户会发现,有许多的功能已经从 CodeWarrior IDE For ARM 中移走,好比快速应用程序开发模板等。

CodeWarrior IDE For ARM 中有不少的菜单或子菜单是不能使用的。下面介绍一下这些不能使用的选项。

1. View 菜单下不能使用的菜单选项有:

Processes Expressions Global Variable Breakpoints Registers

2. Project 菜单不能使用的菜单选项:

Precompile 子菜单。由于 ARM 编译器不支持预编译的头文件。

3. Debug 菜单

该菜单中没有一个子菜单是可使用的。

4. Browser 菜单中不能使用的菜单选项:

New Property New Method New Event Set

5. Help menu 中不能用于 ADS 的菜单选项有:

CodeWarrior Help Index Search Online Manuals

有关 CodeWarrior IDE 中一些经常使用菜单的使用,将在后面的举例中具体说明的,在此,不在赘述。

8.1.3.2 ADS 调试器

调试器自己是一个软件,用户经过这个软件使用 debug agent 能够对包含有调试信息的,正在运行的可执行代码进行好比变量的查看,断点的控制等调试操做。

ADS 中包含有 3 个调试器:

AXD(ARM eXtended Debugger) ARM 扩展调试器;

armsd(ARM Symbolic Debugger) ARM 符号调试器;

与老版本兼容的 Windows Unix 下的 ARM 调试工具, ADW/ADU(Application Debugger

Windows/Unix)

下面对在调试映像文件中所涉及到的一些术语作一个简单的介绍。

Debug target

在软件开发的最初阶段,可能尚未具体的硬件设备。若是要测试所开发的软件是否达到了预

期的效果,这能够由软件仿真来完成。即便调试器和要测试的软件运行在同一台 PC 上,也能够把目标看成一个独立的硬件来看待。

固然,也能够搭建一个 PCB 板,这个板上能够包含一个或多个处理器,在这个板上能够运行和调试应用软件。

只有当经过硬件或者是软件仿真所获得的结果达到了预期的效果,才算是完成了应用程序的编写工做。

调试器可以发送如下指令:

1. 装载映像文件到目标内存;

2. 启动或中止程序的执行;

3. 显示内存,寄存器或变量的值;

4. 容许用户改变存储的变量值。

Debug agent

Debug agent 执行调试器发出的命令动做,好比:设置断点,从存储器中读数据,把数据写到存储器等。

Debug agent 既不是被调试的程序,也不是调试器。在 ARM 体系中,它有这几种方式:

Multi-ICE(Multi-processor in-circuit emulator) ARMulator Angel 。其中 Multi-ICE 是一个独立的产品,是 ARM 公司本身的 JTAG 在线仿真器,不是由 ADS 提供的。

AXD 能够在 Windows UNIX 下,进行程序的调试。它为用 C C++ ,和汇编语言编写的源代码提供了一个全面的 Windows UNIX 环境。

8.1.4 实用程序

ADS 提供如下的实用工具来配合前面介绍的命令行开发工具的使用

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 命令也可以为输入映像文件产生文本信息,例如代码和数据长度。

armar

ARM 库函数生成器将一系列 ELF 格式的目标文件以库函数的形式集合在一块儿,用户能够把一个库传递给一个连接器以代替几个 ELF 文件。

Flash downloader

用于把二进制映像文件下载到 ARM 开发板上的 Flash 存储器的工具

8.1.5 支持的软件

ADS 为用户提供下面的软件,使用户能够在软件仿真的环境下或者在基于 ARM 的硬件环境调试用户应用程序。

ARMulator

这是一个 ARM 指令集仿真器,集成在 ARM 的调试器 AXD 中,它提供对 ARM 处理器的指令集的仿真,为 ARM Thumb 提供精确的模拟。用户能够在硬件还没有作好的状况下,开发程序代码。