ARM汇编编程基础之五 —— ADS开发环境的使用

掌握了基本的汇编指令和伪操作后,就具备了编写简单ARM汇编程序的基本理论能力,不过要实战得到真实可执行的程序,还需要可以对程序进行编辑和编译的开发环境(命令行编译器或IDE)的支持,同时程序在开发过程中免不了要进行调试,这就需要调试器的支持。一般而言,会有供应商将程序的编译器、编译器、调试器以及其它一些辅助工具组合在一起,形成程序的开发、调试集成开发环境(IDE)软件,提供给程序开发人员使用。对ARM程序开发而言,目前比较流行的IDE有2套:运行于windows平台的ADS和运行于Linux平台的gcc等交叉编译工具链。总的来看,ADS在程序的编译和调试方面要比gcc使用起来方便很多,也更容易掌握和使用,因此针对初学者,本文将展示ADS的使用。

ADS集成开发环境,主要由编辑、编译器Code Warrior和调试器AXD组成。

首先使用Code Warrior对程序进行编辑和编译,过程如下:

1、建立工程

•在磁盘里新建一个目录“D:\arm”

•打开ADS软件

•点击工具栏“File”,下拉点击“New…”

ARM汇编编程基础之五 —— ADS开发环境的使用

2、选择工程类型

ARM汇编编程基础之五 —— ADS开发环境的使用

3、输入工程名称及其目录

ARM汇编编程基础之五 —— ADS开发环境的使用

4、工程建立后的情形

ARM汇编编程基础之五 —— ADS开发环境的使用

5、新建工程后的目录

ARM汇编编程基础之五 —— ADS开发环境的使用

6、新建源文件并加入工程与target

ARM汇编编程基础之五 —— ADS开发环境的使用 

7、编辑汇编和C的源代码

ARM汇编编程基础之五 —— ADS开发环境的使用 

  ARM汇编编程基础之五 —— ADS开发环境的使用

8、编译源代码及其结果显示

ARM汇编编程基础之五 —— ADS开发环境的使用

ARM汇编编程基础之五 —— ADS开发环境的使用

以上是最普通(也是最简单)的源代码编辑和编译过程。但在很多时候,在Make之前都需要对编译和链接选项进行设置,下面对常用的设置进行演示。

进入编译连接设置

ARM汇编编程基础之五 —— ADS开发环境的使用

目标设置

ARM汇编编程基础之五 —— ADS开发环境的使用

汇编选项设置

ARM汇编编程基础之五 —— ADS开发环境的使用

C编译器选项设置

ARM汇编编程基础之五 —— ADS开发环境的使用

文件输出设置

ARM汇编编程基础之五 —— ADS开发环境的使用

在完成程序的编译、链接生成二进制可执行文件后,很多情况下需要对程序进行调试,ADS采用的调试工具是AXD,在调试中,我们可以完成:

设置断点及单步运行与调试;

查看各种模式下的CPU寄存器;

查看内存内容;

查看C语言变量;

下面就展示如何使用AXD对程序进行调试:(单击下载示例代码

1、使用ads打开demoled.mcp工程

2、单击菜单project->debug

ARM汇编编程基础之五 —— ADS开发环境的使用

3、单击Porcessor Views->registers,注意窗口左上部分

ARM汇编编程基础之五 —— ADS开发环境的使用

4、展开Current,可发现当前模式处于SVC模式,并可查看当前模式下,CPU的各个寄存器的置,例如r13=0,pc=0x8000

ARM汇编编程基础之五 —— ADS开发环境的使用

还可查看其它模式下,CPU各寄存器的值

5、单击Execute->step,可以单步运行程序

ARM汇编编程基础之五 —— ADS开发环境的使用

此时发现pc值增加了4,而r13的值也由于ldr指令的赋值操作变为了0x34000000

6、单击Execute->step-in,可以单步跟踪进入子程序

ARM汇编编程基础之五 —— ADS开发环境的使用

7、按1次F8,单击Processor Views-〉Memory

ARM汇编编程基础之五 —— ADS开发环境的使用

8、在Memory Start addr处输入0x56000010,再按1次F8,可以看到内存0x56000010处的值变为了0x00015400

ARM汇编编程基础之五 —— ADS开发环境的使用

9、单击Processor View-〉Variables可查看各种C变量(例如局部变量i)的值

ARM汇编编程基础之五 —— ADS开发环境的使用

10、单击Execute-〉Toggle Breakpoint,设置断点

ARM汇编编程基础之五 —— ADS开发环境的使用

11、继续单步执行程序,当程序再次回到断点是,观察i的值已经变为1了

ARM汇编编程基础之五 —— ADS开发环境的使用