• 沒有找到結果。

第 1 章 嵌入式系统开发入门

1.3 ADS 集成开发环境介绍

1.3.3 使用 AXD IDE

AXD 是 ADS 软件中独立于 CodeWarrior IDE 的图形软件,打开 AXD 软件,默认是打 开的目标是 ARMulator。ARMulator 也是调试的时候最常用的一种调试工具,本节主要是结 合 ARMulator 介绍在 AXD 中进行代码调试的方法和过程,使读者对 AXD 的调试有初步的 了解。要使用 AXD 必须首先要生成包含有调试信息的程序,在上节中,已经生成的 swi.axf 文件就是含有调试信息的可执行 ELF 格式的映像文件。这一节还是以 swi 工程为例讲述 AXD 调试工具的基本用法。

1.3.3.1 打开调试文件

在菜单 File 中选择“Load image…”选项,打开 Load Image 对话框,找到要装载的.axf 映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。在所打开的映像文件中 会有一个蓝色的箭头指示当前执行的位置。如图 1.9 所示:

图 1.9 打开 swi 调试文件

此外,在菜单 File 中还有一个“Load Debug Symbols.…”选项,该选项是用来调式那些 调试器不能访问调试符号的情况,比如调试装载在 ROM 中的 image。通常“Load image…”

选项用来调试装载在 RAM 中的代码。

在菜单 Execute 中选择“Go”,将运行代码。要想进行单步的代码调试,在 Execute 菜 单中选择“Step”选项,或用 F10 即可以单步执行代码,窗口中蓝色箭头会发生相应的移动。

1.3.3.2 设置断点

有时候,用户可能希望程序在执行到某处时,查看一些所关心的变量值,此时可以通过 设置断点达到此要求。将光标移动到要进行断点设置的代码处,在 Execute 菜单中,选择

“Toggle Breakpoint”或按 F9,就会在光标所在行的起始位置出现一个红色实心圆点,表明 该处为已设为断点。假设本例中给 62 行代码设置断点,首先将光标移至 62 行,然后按 F9 或点击“Toggle Breakpoint”按钮,此时如图 1.10 所示:

图 1.10 设置断点

1.3.3.3 查看寄存器内容

查看寄存器的值在实际嵌入式开发调试中经常使用,使用方法:从 Processor Views 菜 单中选择“Memory”选项,如图 1.11 所示。在 Memory Start address 选择框中,用户可以根 据要查看的存储器的地址输入起始地址,在下面的表格中会列出连续的 64 个地址。从图 1.11 中可以看出地址为 0x0 的存储器中的初始值为 0x E7FF0010,注意因为用的是 little-endian*

(注 2),所以读数据的时候注意高地址中存放的是高字节,低地址存放的是低字节。

*注 2:Big-endian 和 Little-endian 是用来表述一组有序的字节数存放在计算机内存中时的顺序的术语。

Big-endian 是将高位字节(序列中最重要的值)先存放在低地址处的顺序,而 Little-endian 是将低位字

节(序列中最不重要的值)先存放在低地址处的顺序。举例来说,在使用 Big-endian 顺序的计算机中,要 存储一个十六进制数 5F48 所需要的字节将会以 5F48 的形式存储(比如 5F 存放在内存的 1000 位置,而 48 将会被存储在 1001 位置)。而在使用 Little-endian 顺序的系统中,存储的形式将会是 485F(48 在地址 1000 处,5F 在地址 1001 处)。如果将 0x5F48 写到以 0x0000 开始的地址中,则存放的顺序如下:

地址 Big-endian Little-endian 0x0000 5F 48 0x0001 48 5F

IBM 的 370 种大型机、大多数基于 RISC 的计算机以及 Motorola 的微处理器使用的是 Big-endian 顺序,TCP/IP

协议也是。而 Intel 的处理器和 DEC 公司的一些程序则使用的 Little-endian 方式。

图 1.11 查看寄存器值

1.3.3.4 查看变量值

在调试过程中,经常需要查看某个变量的值,在 AXD 工具中,查看变量值的方法是:

先用鼠标选中要查看的变量,然后鼠标右击,在探出的对话框中选择“Watch..”,将会显示 指定变量的详细信息。此处以 62 行的 res_3 为要查看的变量,先选中 res_3 变量,然后鼠标 右击,选择“Watch..”项,将弹出如图 1.12 的对话框,该对话框显示了 res_3 变量的地址和 值等详细信息。

图 1.12 查看变量对话框

总之,AXD 工具的使用方法还有很多,关于 AXD IDE 的具体使用请参考 ADS 软件的 在线帮助文件,这里不再赘述。