- UID
- 872238
|
2.3
用AXD 进行代码仿真、调试
2.3.1 AXD
简介
ADX(ARM extended Debugger)
是ADS 软件中
独立于 Code Warrior IDE 的图形软件,可从
Code Warrior for ARM Developer Suite 中进入
ADX 进行调试,或在 Windows 下选择 “程
序”∣ARM Developer Suite v1.2 v1.2∣AXD
Debugger 进入调试。要使用 AXD 必须首先有生
成包含调试信息的程序,即由 Code Warrior for
ARM Developer Suite 编译生成含有调试信息的
可执行 ELF 格式的映像文件( (*.axf axf)。 )
1 在AXD 中打开调试文件
在Code Warrior for ARM Developer Suite 界面中,点击
Debugger 进入 AXD 调试界面。
选择
File File∣Load image 命令,打开 Load image 对话框,
找到要装入的 .axf 映像文件,单击 “打开 ”按钮,就可以把
映像文件装载到目标内存中,如图 2-22 所示。
利用
Exeute 菜单中的子菜单项对可执行映像文件进行调
试,各选项的含义如下:
. 选择 Go 子菜单或按 F5 键,将全速运行代码。
. 选择 Stop 子菜单或按 Shift+F5 键,将停止运行代码。
. 选择 Step In 子菜单或按 F8 键,以单步执行代码,若遇到
函数,则进入函数内执行。
. 选择 Step 子菜单或按 F10 键,以单步执行代码,若遇到
函数,则把函数看成一条语句单步执行。
. 选择 Step Out 子菜单或按 Shift+F8 键,在 Step In 单步执行
代码进入函数内后,若选该子菜单,则可以从函数中跳出
返回到上一级程序执行。
. 选择 Run To cursor 子菜单或按 F7 键,以全速运行到光标
处停下。
. 选择 Show Execution Context 子菜单,可显示执行的内容。
. 选择 Delete All Breakpoint 子菜单,清除所有的断点。
2.查看存储器、寄存器、变量内容 .
利用AXD菜单选项Processor Views和System Views中的子菜单选项可查看寄存器、变量值,还可以查看某个内存单元的数值 等。各子菜单的含义如下:
选择
Registers 子菜单或按 Ctrl+R 键,可查看或修改目标板处
理器中寄存器中的值
. 选择 Watch 子菜单或按 Ctrl+E 键,可对处理器设置观察点,
观察点可以是寄存器、地址等, 但不能修改。特别注意:
Processor Views 菜单下的 Watch 只能观察处理器,而
System Views 菜单下的 Watch 或按 Alt+E 键时可对目
标板上的任何资源建立观察,可增加或删除观察点。
. 选择 Variables 菜单或按 Ctrl+E 键,可查看或修改当前可执行
的映像文件(程序)中的变量值,这些变量可以是局部变量、
全局变量、类属变量。可增加或删除查看或修改的变量。
. 选择 Memory 子菜单或按 Ctrl+M 键,可查看或修改存储器中
的值。
如在程序执行前,可以先查看两个宏变量
IOPMOD 和
IOPDATA 的当前值。方法是:
. 选择 AXD 的Processor Views Views∣Memory 命令或按 Ctrl +M 键
后,查看或修改存储器中的值,如图 2-23 所示。
3.
在Memory Start address 文本框图上,用户可以根
据要查看或修改的存储器地址输入起始地址,在下面的
表格中会列出连续的 64 个地址。因为 I/O 模式控制寄存器
和I/O 数据控制寄存器都是 32 位的控制寄存器,所以从
0x00000000 开始的连续 4个地址空间存放的是 I/O 模式控
制寄存器的值,从图中可以读出该控制寄存器的值,数
据控制寄存器的内容,注意因为用的是小端模式,所以
读数据时注意高地址中存放的高字节,低地址存放的是
低字节
4.
断点设置、查看
在程序调试时经常设置断点,即在程序的某处设置
断点,当程序执行到断点处即可停下,这时开发人
员可通过前面的方法查看寄存器、存储器或变量的
值,以判定程序是否正常。设置断点的方法是将光
标移到需设置断点处,使用快捷键 F9 在此处设置断
点。
查看断点的方法是:选择
System
Views Views∣breakpoint view 命令或按 Alt+K 键,在断
点状态对话框中右击,利用快捷菜单可增加或删除
断点。按 F5 键,程序将运行到断点,如果要进入函
数内查看如何运行的,可以选择 Execte Execte∣Step Inw
命令或按下 F8 键,进入到子函数内部进行单步程序
的调试。
2.3.2 JTAG
概述
JTAG
是Joint Test Action Group Group(联合测试行动小组)
(的简称,由于 IEEE 1149.1 标准是由 JTAG 这个组织最初
提出的,最终由 IEEE 批准并且标准化的。所以 IEEE
1149.1 这个标准一般也俗称 JTAG 调试标准。
JTAG
标准主要用于芯片内部测试及对系统进行仿真、调
试。 JTAG 技术是一种嵌入式调试技术,它在芯片内部封
装了专门的测试电路 TAP TAP(Test Access Port 测试访问
口),通过专用的 JTAG 测试工具对内部节点进行测试。
目前大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、
DSP 、FPGA 器件等。标准的 JTAG 接口是 4线: TMS 、
TCK 、TDI 、TDO TDO,分别为测试模式选择、测试时钟、测
,试数据输入和测试数据输出。 JTAG 测试允许多个器件通
过JTAG 接口串联在一起,形成一个 JTAG 链,能实现对
多个器件分别测试。 JTAG 接口还常用于实现 ISP ISP(In In-
System Programmable 在线系统可编程)功能,如对
FLASH 器件进行编程等。
在JTAG 调试中,边界扫描( Boundary Boundary-Scan Scan)是一个
)很重要的概念。边界扫描技术的基本思想是在靠近芯片的
输入输出管脚上增加一个移位寄存器单元。因为这些移位
寄存器单元都分布在芯片的边界上,所以被称为边界扫描
寄存器( Boundary Boundary-Scan Register Cell Cell)。
)芯片处于调试状态的时候,这些边界扫描寄存器可以将芯
片和外围的输入输出隔离开来。通过这些边界扫描寄存器
单元,可以实现对芯片输入输出信号的观察和控制。如果
需要捕获芯片某个管脚上的输出,首先需要把该管脚上的
输出装载到边界扫描链的寄存器单元中去,然后通过
TDO 输出,这样,我们就可以从 TDO 上得到相应管脚上
的输出信号。如果要在芯片的某个管脚上加载一个特定的
信号,则首先需要通过 TDI 把期望的信号移位到与相应管
脚相连的边界扫描链的寄存器单元里去,然后将该寄存器
单元的值加载到相应的芯片管脚。
由于在正常的运行状态下,这些边界扫描寄存器对芯片来
说是透明的,所以正常的运行不会受到任何影响。这样,
边界扫描寄存器就提供了一个便捷的方式,用以观测和控
制所需要调试的芯片。另外,芯片输入输出管脚上的边界
扫描(移位)寄存器单元可以相互连接起来,在芯片的周
围形成一个边界扫描链( Boundary Boundary-Scan Chain Chain)。一般的
)芯片都会提供几条独立的边界扫描链,用来实现完整的测
试功能。边界扫描链可以串行地输入和输出,通过相应的
时钟信号和控制信号,可以方便地观察和控制处在调试状
态下的芯片。
JTAG
仿真器需要设备驱动程序驱动,在我们使用的教学实
验系统( EDUKIT EDUKIT-Ⅲ), ),JTAG 仿真器的驱动程序为两个动
态链接库( EasyICEArm9Plus.dll dll,
EasyICEArm7Plus.dll dll),把这两个文件拷贝到
),C: C:\EmbestIDE EmbestIDE\Bin Bin\Device Device\路径下,即可正常使用。
2.3.3 Nor
和Nand Flash 的区别和使用
Nor
和Nand 是现在市场上两种主要的非易失闪存技术。
Intel 公司于 1988 年首先开发出 Nor Flash 技术。这项技术
的开发和投放市场彻底改变了原先由 EPROM 和EEPROM
一统天下的局面。紧接着, 1989 年东芝公司发表了 Nand
Flash 结构,强调降低每比特的成本,提供更高的性能,
并且像磁盘一样可以通过接口轻松升级。在具有 Nand
Flash 接口的系统中, Nand Flash 存储器可以替代 Nor
Flash 存储器使用。许多业内人士也搞不清楚 Nand 闪存技
术相对于 Nor 技术的优越之处,因为大多数情况下闪存只
是用来存储少量的代码,这时 Nor 闪存更适合一些。而
Nand 则是高数据存储密度的理想解决方案。
Nor
的特点是 XIP XIP(eXecute In Place 芯片内执行)特性,
这样,应用程序可以直接在 Flash 闪存内运行,不必再把
代码读到系统 RAM 中。 Nor 的传输效率很高,在 1~4MB 的
小容量时具有很高的成本效益,但是很低的写入和擦除速
度大大影响了它的性能。
Nand
结构能提供极高的单元密度,可以达到高存储密
度,并且写入和擦除的速度也很快。 |
|