AXD调试工具的使用-详解

合集下载

JLINK+AXD仿真调试配置

JLINK+AXD仿真调试配置

上海张江高科技园区晨晖路377弄91号邮 件: supports@电话: 86-21-38722155 JLINK+AXD 仿真调试仿真调试配置配置打开ADS1.2的AXD Debugger 程序。

配置configure Target…(如下图)点击”add”,如下图:选择到JLINK 的安装目录:上海张江高科技园区晨晖路377弄91号邮 件: supports@ 电话: 86-21-38722155选择“JLinkRDI.dll”,会出现如下界面:这时,选择右边的“configure”,跳转到“JTAG”项,设置如下(4000K 速度比较快速稳定)上海张江高科技园区晨晖路377弄91号邮 件: supports@ 电话: 86-21-38722155再跳到“flash”项,配置如下(不要勾选)上海张江高科技园区晨晖路377弄91号邮 件: supports@ 电话: 86-21-38722155再选择“Breakpoints”,配置如下:上海张江高科技园区晨晖路377弄91号邮 件: supports@ 电话: 86-21-38722155 再选择“CPU”,配置如下:最后,选择“确定”,这样就OK 了!以上步骤完成后,就会调回AXD 界面。

在界面下面,会显示连接信息:上海张江高科技园区晨晖路377弄91号邮 件:supports@ 电话: 86-21-38722155 载入镜像(ARM 学习调试笔记系列001-01 里面生成的myled.axf 文件):现在点击AXD 界面上的调试按钮,就能看到程序指针的运行了查看寄存器状态等:上海张江高科技园区晨晖路377弄91号邮件: supports@电话: 86-21-38722155上海张江高科技园区晨晖路377弄91号邮件: supports@电话: 86-21-38722155。

AXD使用

AXD使用
step3. 打开AXD Debugger以后,Option/->Configure Target/->Choose Target(Multi-ICE.dll)/->configure/->TAP0:ARM7TDMI/->确定/->OK:在窗口右下角状态栏显示:<No Pos>|Multi-ICE|ARM7TDMI_0|<No Image Name>
step6. Load image from file: test.bin,加载要烧入的二进制文件,并在对话框中设好缓存address.
step7. 点run/step/Run to Cursor: 蓝色光标总是在Disassembly窗口中,而不是在我想要的.C文件中指示程序run的进度,并且遇到断点都没有停过。
整个过程就是这样子的,不知道step7的这些现象的原因是为什么啊?请高手们指教。。。。。。谢谢了
首先要谢谢一下twentyon不行。我现在把我的整个操作流程写下来,你看看有什么不对的地方?我写的是基于JTAG仿真器和ADS的flash烧写程序。
step1. 打开Multi-ICE Server : 探测到[X] ARM7TDMI
step2. 双击AXD Debugger: 出现‘Default-1-2-0-0.ses’could not be loaded, 我点确定;出现‘Load Session’,我点取消 (我一直都不太明白这个session的东西是用来做什么的?)
step4. 打开Command Line Interface: Debug> obey .../***.txt :配置特殊寄存器
step5. Load image: FlashProgram.axf,出来的是Disassembly窗口,我自己在file框中点开main.c文件,并在这个主程序中设置了几个断点。

使用AXD 调试MMU 地址映射程序手记2

使用AXD 调试MMU 地址映射程序手记2

使用AXD 调试MMU 地址映射程序手记(二)黄振华实验背景: 在《使用AXD 调试MMU 地址映射程序手记(一)》的基础上,编写比较完整的启动代码,除了初始化存储器、关键I/O 口和为各模式设置堆栈外,还实现SDRAM 到0地址的映射,包括映像文件从Flash 到SDRAM 的拷贝,重映射后的RW 和ZI 段初始化等。

本次实验仍然专注于使用MMU 完成简单的段式地址映射,并且不使用I-Cache 、D-Cache 和Write-Buffer ;与前面的实验不同的是,前面的地址重映射并没有将SDRAM 映射到0地址,也没有对映像文件进行拷贝,只是简单学习和验证MMU 地址重映射的机制,程序是在SDRAM 中调试的;这里,我们首先将*.bin 格式的映像文件烧写到FLASH 中进行调试。

程序简单说明:1.启动过程: ①禁止所有中断→②初始化时钟→③初始化存储器→④初始化各模式下的栈指针→⑤初始化GPIO →⑥拷贝映像文件到SDRAM →⑦建立地址重映射表→⑧使能MMU →⑨使能异常中断→⑩应用程序初始化(RW&ZI 区)→⑾呼叫主程序(dummyOS )。

说明:关于④初始化各模式栈指针,由于栈区在内存中,因此必须在③之后进行。

那么应该在⑧使能MMU 之后还是之前进行呢?实际上,个人认为比较好的做法是,保持堆栈区的虚拟地址和物理地址一致,这样就可以在使能MMU 之前进行初始化栈指针,并且在使能MMU 之后,不会因为切换到虚拟地址空间而导致栈指针的误指。

如果堆栈区的虚拟地址和物理地址不一致,则需要在使能MMU 后再用虚拟地址初始化堆栈指针,保证堆栈区在一段有效的内存区内(个人推测,待证实)。

关于⑦建立地址重映射表,只是用预定的地址映射关系来建立翻译表,页表是保存在内存中的(本程序是保存在内部SRAM 中),因此也要在初始化存储器之后进行。

它并不使能MMU ,而是返回主引导程序后使能MMU ,这是为了防止使能MMU 后返回主程序时,LR 中的地址已经失效(变为无效的虚拟地址或指向错误的物理地址),这一点在前面的文章中已经提及——因此权威参考书中建议将使能MMU 的这一段代码的虚拟地址和物理地址也保持一致。

xadc wizard用法

xadc wizard用法
xadc wizard用法
XADC(Xilinx Analog-inx FPGA器件中的模数 转换器。XADC Wizard是Xilinx Vivado设计套件中的一个工具,用于配置和生成XADC的IP 核。以下是使用XADC Wizard的基本步骤:
xadc wizard用法
5. 点击"Next"继续,然后根据需要配置XADC的参数,例如采样率、通道数、电压范围等。 6. 配置完成后,点击"Next"继续,然后可以选择是否添加其他的IP核或连接到其他的模块。 7. 点击"Finish"完成配置,并将XADC Wizard生成的IP核添加到Block Design中。 8. 连接其他的模块或信号到XADC IP核的输入和输出端口。 9. 生成Bitstream,并将其下载到目标FPGA器件中进行验证和测试。
1. 打开Vivado设计套件,并创建一个新的项目。 2. 在设计界面中,点击左侧的"IP Integrator"选项卡,然后点击右侧的"Create Block Design"按钮,创建一个新的Block Design。 3. 在Block Design中,右键点击设计界面的空白处,选择"Add IP"。 4. 在弹出的对话框中,搜索并选择"XADC Wizard"。
通过XADC Wizard生成的IP核可以方便地在FPGA设计中使用XADC模块,实现模拟信号的采 样和转换功能。根据具体的需求,可以在XADC Wizard中配置不同的参数,以适应不同的应用场 景。

AXD使用技巧

AXD使用技巧

1、如何设置AXD连接的T arget。

在菜单的Configure Target…选项中可以设置。

一般选择MutiIce或者ARMUL两种。

ARMUL是一种ARM的模拟器。

一般的算法或者一些无需和硬件中断等设备打交道的程序都可以通过这个进行调试。

使用上非常简单。

我们一般上板子进行调试都是通过MutiICE来进行。

在刚刚安装了系统的时候,菜单中没有MutiICE,需要我们手动添加:点击ADD按钮,然后在弹出的文件浏览中,选择―C:\Program Files\ARM\Multi-ICE\Muti-ICE.dll‖(默认安装的话)。

然后点击―确定‖。

这样就把MutiICE的调试接口安装上了。

2、如何保存当前的调试现场。

我们在调试过程中,经常需要在不同的地方设置断点、设置Watchpoint或者打开很多source 文件。

但是,一旦我们关闭了AXD,所有的工作都白费了。

当我们再次打开AXD后,我们得到的仍然是没有任何断点、只打开一个entry文件的调试环境。

这里介绍一种方法可以自动保存上一次的调试现场(寄存器的数据都是保存的)。

Options->General tab. 这里确认Save and load default sessions 选项是选中的。

然后打开Session File,确保Rselect Target和Reload images 选项是选中的。

在设置保存后,我们在关闭AXD后,再次启动,就会自动加载上次的image,恢复寄存器了。

如果需要保存多个现场,那么就在设置保存后,在File菜单中选择Save Session来进行保存。

不过注意,保存的路径中不能有空格和特殊字符。

最好保存在ClearCase上。

在需要恢复现场的时候,只需要Load Session就一切OK。

你以前辛辛苦苦设置的断点、Watchpoint全都回来了。

3、不能设置断点,怎么办?不能设置断点时,我仅知有几种解决方案,这里列举一下:A:清空CPU的Vector Catch 。

掌握调试工具的使用技巧

掌握调试工具的使用技巧

掌握调试工具的使用技巧调试是软件开发和故障排除过程中必不可少的一步。

良好的调试技巧能够帮助开发者更快地定位和解决问题,提高开发效率。

在调试过程中,调试工具的使用是至关重要的。

本文将介绍几种常用的调试工具以及它们的使用技巧,帮助读者提高调试能力。

一、断点调试工具断点调试工具是最常用的调试工具之一,它允许开发者在代码中设置断点,并在程序执行到该断点时进行暂停,以便进行变量查看、堆栈跟踪等操作。

常见的断点调试工具有Visual Studio和Eclipse等。

使用断点工具时,首先需要在需要调试的代码行上设置断点。

在程序运行到断点时,调试工具会自动暂停程序的执行,并提供一个调试界面。

在该界面上,开发者可以查看当前的变量值、堆栈信息以及执行流程,以便更好地定位问题所在。

在使用断点调试工具时,需要注意以下几点技巧:1. 合理设置断点:断点的设置应该选择在可能出错的位置,以便有效地定位问题。

同时,过多的断点设置会造成调试器的性能下降,因此需要避免设置过多的断点。

2. 利用条件断点:条件断点允许开发者在断点处设置条件,只有满足条件时程序才会暂停。

这对于调试特定情况下出现的问题非常有用。

3. 使用断点间跳转:在调试过程中,有时需要从一个断点跳转到另一个断点。

断点间跳转功能可以帮助开发者快速定位问题所在。

二、日志调试工具除了断点调试工具,日志调试工具也是常用的调试工具之一。

日志调试工具可以将程序运行时的信息输出到日志文件中,以便开发者进行查看和分析。

常见的日志调试工具有Log4j和Logback等。

日志调试工具的使用过程较为简单,开发者只需要在程序中插入日志输出语句,并设置日志级别。

在程序运行过程中,日志调试工具会将相应级别的日志信息输出到文件中。

开发者可以根据日志信息来分析程序的执行流程、变量的值等。

在使用日志调试工具时,需要注意以下几点技巧:1. 合理设置日志级别:通常情况下,我们可以将日志级别设置为DEBUG,以便输出尽可能多的日志信息。

AXD调试工程

AXD调试工程

实验二:AXD调试工程一、实验目的1、熟悉ADS集成开发环境2、掌握ADS集成开发环境的使用方法3、掌握ADS环境下编写与调试程序的方法二、实验环境1、硬件:PC机一台,Pentium500以上,含串口、并口和网口,内存256M以上,硬盘40G以上,1024×768彩显。

2、软件:Windows XP操作系统,ADS1.2集成开发环境。

三、实验内容建立ADS新工程编写汇编语言源程序,并添加到工程中编译、连接工程使用AXD调试工程四、实验步骤1、创建ADS新工程(1)启动ADS集成环境。

(2)单击FILE菜单栏,选择NEW菜单项。

(3)在PROJECT标签中选择工程模板为ARM可执行映像(ARM Executable Image),建立工程名为prog0,文件后缀为.mcp。

2、编辑源程序(1)单击FILE菜单栏,选择NEW菜单项。

(2)在FILE标签中选择TEXT FILE,输入新建汇编源程序文件名prog0_1,文件后缀为.s。

(3)在新文件中编写程序并保存。

将文件保存在相应工程目录下,便于管理。

(4)将文件添加到工程中。

在工程窗口空白处右击鼠标,弹出快捷菜单,选择ADD FILES 命令,将prog0_1.s文件加入工程。

3、调试设置(1)在编辑界面中,通过EDIT菜单栏下DEBUGREL SETTINGS命令,设置相应ARM 型号ARM920T;选中ARM Linker选项,将Options中的Image entry pointg设置为prog0_1.o。

(2)确认对DebugRel Settings的修改并退出。

4、编译并连接程序直接点击工程窗口MAKE图标,完成编译。

如果有错误,会有出错提示,重新编辑源文件;如果编译连接通过,在工程名\工程名_Data\DebugRel目录下生成一个扩展名为.awf 的可执行映像文件。

5、调试程序(1)启动AXD调试器。

(2)选择菜单OPTIONS CONFIGURE TARGET,弹出CHOOSE TARGET对话框,选择仿真驱动软件ARMUL,确定。

AXD调试以及使用方法

AXD调试以及使用方法

可以用上面的方法,单步调试,观察led的亮灭, 自己也可以动手编写一些实验,可以让led按照 自己控制的方式亮灭。在所给的实验例子中,有 一个led.s。是控制led的例子,可以参考例子进 行程序的编写。
下面请大家动手调试。
ARM9 C程序设计
1 点击go后进入 Main() 2 点击Step让程序单步运行
在AXD里面可以直接查看各个通用寄存器内部值的变化。
查看存储器内容 在程序运行之前,可以先查看两个宏变量IOPMOD和 IOPDATA的当前值。方法是:从Porcessor Views菜单中 选择“Memory”选项,如图所示:
ARM9 C程序设计
首先看电路图:
从上面的电路原理图(MY2410板原理图.pdf)可以看出: 电路板上的四个LED灯分别连接的是S3C2410芯片的 GPB7,GPB8,GPB9和GPB10 四个引脚。 当这四个引脚的某个引脚为低电平时,对应的LED就会 发光。 当这四个引脚的某个引脚是高电平时,对应的LED就会 熄灭。
所以现在的主要任务是通过程序操作这些引脚。 (s3c2410s.pdf)下面看芯片的手册查找相关的寄存器。 从芯片手册可以看出和GPB端口相关的寄存器主要有 GPBCON,GPBDAT和GPBUP。其中GPBUP主要配置 引脚内部上拉电阻。GPBCON配置端口的属性。如果控 制LED需要将对应引脚设置为Output。
现在对程序进行单步调试,当程序运行到每个灯的亮灭 的时候,可以再查看一次局春期的内容,此时存储器的 内容如下:
设置断点 可以在延时程序之前“delay”;语句处设置断点,将光标 定位在该语句处,使用快捷F9在此处设置断点,按F5,程 序将运行到断点处,要是想看延时函数的运行话,可以在 execute菜单中选择“step in”选项,或者按下F8,跳转到 函数内部进行单步程序的调式如图

AXD 调试问题

AXD 调试问题

ADS(AXD) 调试之我见以前用ADS(AXD) 进行ARM调试时遇到不少莫名其妙的问题,一会可以一会又不成,昨天跑的好好的,今就跑掉,当时感觉就是ADS这个工具不好用。

最近有接触了一下ADS(AXD)调试,觉得其实是以前不太会用,没adptor他的性情。

总结一下吧:1. AXD调试没有什么特别的,他的工作原理是将编译好的运行时映像download到ARM相应地址中去,然后捕获arm 的PC 强制其到ADS中entry point 所设置的映像入口地址上,然后你一点击run,pc就从这个入口地址取指,后面该咋执行就咋执行去了。

实际代码的硬件运行环境就是ARM芯片的运行环境。

首先要明确一点的是ADS(AXD) 在线debug时要将编译好的运行时代码download到ARM 的相应地址上去,这里这个download的地址,就是arm上存储部件的地址,必须是RAM型的存储特性才可以被AXD进行download,如果这个地址域被映射成是Flash存储器,AXD 是download不了的,虽然AXD不报错,但可以通过在AXD下用dissambly 查看一下,如果是flash则看不到正确的指令。

2.正确download之后就是执行程序了,一般外扩SDRAM要有对它时序的配置,这里用AXD调试注意一点当用外部SDRAM进行download程序时,比如说刚复位过的ARM,extern SDRAM这时还没有对他进行时序配置,这时用AXDdownload到SDRAM的话可能会有问题,(AXD是通过jtag口在通过sdram把code放到sdram上去的,如果不在axd加载code前实现配置好sdram时序就无法保证加载的正确性,和运行时的正确性,)运行会产生什么异常指令之类的怪现象。

sothat ,定要给AXD提供一个已经配置好时序确实可用的SDRAM 这样才能保证download。

3. 正确进行AXD download 后,接下来就是执行代码了, 这里也有要注意的事情,就是,代码里不要有再次对SDRAM进行时序配置的指令出现,这就好比,程序已经在SDRAM 里运行了,然后在运行的过程中又对SDRAM进行了配置,这会出现什么异常之类的怪现象的。

ADS开发环境及AXD调试工具的使用

ADS开发环境及AXD调试工具的使用

ADS开发工具及AXD调试工具的使用一、ADS开发工具的使用1、ADS1.2的安装:ADS1.2 /SET UP,之后选择CRACK/LICENSE.DAT2、将LPC2300的工程模板《ARM Executable Image for LPC2300》拷到ADS1.2的安装目录下,即:C:/Program File/ARM/ADSv1_2/Stationery3、建立工程文件1)打开CodeWarrior for ARM Developer Suite v1.22)点击File New…1)ARM Executable Image:用于由ARM指令的代码生成一个ELF格式的可执行映像文件2)ARM Executable Image for LPC2300:LPC230的工程模板3)ARM Object Library:用于由ARM指令代码生成的一个armar格式的目标文件库4)Empty Project:用于创建一个不包含任何库和源文件的工程5)Makefile Importer Wizard:用于将Visual C的nmake或GNU make文件转入到CodeWarrior IDE工程文件6)Thumb ARM Interworking Image:用于由ARM指令和Thumb指令的混合代码生成的一个可执行的ELF格式的映像文件7)Thumb Executable Image:用于由Thumb指令创建一个可执行的ELF格式的映像文件8)Thumb Object Library:用于由Thumb指令代码生成的一个armar格式的目标文件库3)如上图所示,选择ARM Executable Image for LPC2300的工程模板,在Project name下填写要建立的工程名称,如LPC2388,在Location下选择保存的路径,点击确定,即可生成LPC2388.mcp的工程,如下图所示4)生成的工程有三个生成目标,如上图所示,各部分应用说明如下注意:选用RelInFlash目标时,将会对LPC2388芯片进行加密,加密的芯片只能使用ISP进行芯片全局擦除后,才能恢复JTAG调试及ISP读/写操作.模板是针对LPC2366/68/78设计的,如果使用LPO2388芯片,使用DebugInFlash 目标时,需将mem_c.scf中将STACKS 0x40008000 UNINIT ;for LPC2366/68/78更改为STACKS 0x40010000 UNINIT(FLASH空间不同)。

用AXD 在线调试uClinux

用AXD 在线调试uClinux

用AXD 在线调试uClinux-2.4.x操作系统用arm-elf-gdb可以在线调试uClinux下的应用程序,也可以仿真调试uClinux系统。

用AXD调试uClinux则简单易行。

用AXD调试uClinux所需主要文件有:images\image.ram、linux-2.4.x\linux和system.map。

image.ram将被AXD加载在实验板的SDRAM中执行;linux为AXD调试提供符号和函数等;system.map则提供给我们调试内容相关的符号和函数地址,可以用文本编辑器打开它查看。

在调试过程中,如果要查看所有的源文件,则必须要有相应的文件,可以把linux操作系统下的整个uclinux源文件子目录拷贝到windows操作系统下。

具体调试过程:1、启动AXD,配置菜单项options->configure target为希望的调试方式。

如可选择ARMUL 项,这是由AXD提供的仿真环境,不需要额外的支持,就可以开始下面的调试了;也可选择支持在线调试的目标环境(Target enviorment),如用banyan支持包支持的简易Jtag 方式,但这以前,必须安装banyan支持包并启动banyan接口支持。

2、用菜单项system views->command line interface进入命令方式,重映射存储器,以使SDRAM定位在0x0地址。

注意:如上一步选择的是ARMUL仿真调试环境,则不用重映射存储器,因为仿真环境下的所有存储地址都是可写入的。

用菜单项options->configure processor项,关闭vector catch和semihosting,不用AXD捕获中断。

3、用菜单项file->load memory from file加载image.ram文件,注意加载地址(address)为0x8000。

用菜单项file->load debugger symbols加载linux文件。

12 ARM调试工具AXD介绍

12 ARM调试工具AXD介绍
Evaluation Tooltips 在反汇编和源程序窗口中,在鼠标指针处显示变量,寄存器的当前值
Default Initial View State 默认的视窗初始状态,
Docked 锁定,在主窗口边缘
Undocked 不锁
Floating 浮动
12.3.4 在程序窗口中的级联菜单 (程序窗口中点右键)
பைடு நூலகம்
Execute (子项同Execute 菜单)
Stepping Mode 步进模式
Disassembly 按反汇编格式单步执行.
Strong Source 近照高级代码的源程序格式单步执行,单步执行不会进入程序调用的程序段.
2. Save and load default session file
中途退出时,保存调试状态以便下次使用.
3. Export Exceptions 报告异常.异常信息在 System,Output RDI Log中显示.
4. Export all warnings 报告所有警告
Search
Processor views
System views
Execute
Help
6. Refresh 定时刷新
Enable Timed Refresh 和 Windows,Timed Refresh 一起使用.
Disable Timer if user prompted by error dialog 调试器提交错误时,则定时器关闭
2. Views 视图配置
General Font 通用字体设置
Fixed Font 固定字体设置
Tab size Tab所占的空格数

AXD调试工具的使用-详解

AXD调试工具的使用-详解

3.使用ARMulator的调试方法 使用ARMulator的调试方法 ARMulator
AXD提供的一种软件仿真的调试方法,ARMulator调试方法。ARMulator 调试方法是一种脱离硬件调试软件的方法。这种方法所使用的工具软件 是armulate.dll。
AXD调试结构
1.2 AXD调试步骤
打开映像文件之后,大部分选项被激活。可以进行其他选项设置,也 可以开始调试。 注意:AXD没有复位功能,调试过程中如果想重新运行程序,需要重 新加载程序。
1.3 View菜单介绍
Processor Views菜单
System Views菜单
1.Control Monitor菜单介绍 Monitor菜单介绍
右键菜单中选择“Add”,系统弹出一个观测点设置对话框,如图所示
二、AXD调试方法
1.1 常用的调试方法
控制程序运行的方法分为两种: 单步运行 单步运行就是让程序一条语句接一条语句执行,可以通过 查看寄存器、内存表、变量以及表达式的值来判断程序的运 行结果。 设置断点运行。 设置断点的方法能够用来调试大段的程序。程序中并不重 要部分直接让它运行,在程序中的关键点处设置断点,当程 序运行到断点处时会自动停止,然后观察运行的结果或决定 程序是否继续运行。
在“Processor Views”菜单下“Source…”菜单用来打开源程序; “Disassembly”菜单用来打开反汇编代码文件。
4.Registers菜单介绍 Registers菜单介绍
调试中有两部分寄存器: 一部分是ARM内部的寄存器; 一部分是ARM外部其他模块的寄存器。 单击“Processor Views”→“Registers”打开一个ARM寄存器选项窗口。

AXD调试以及使用方法解析

AXD调试以及使用方法解析

可以用上面的方法,单步调试,观察led的亮灭, 自己也可以动手编写一些实验,可以让led按照 自己控制的方式亮灭。在所给的实验例子中,有 一个led.s。是控制led的例子,可以参考例子进 行程序的编写。
下面请大家动手调试。
查看变量
在c语言中,如果希望查看某个变量的值,可以在 processer views菜单中选择“watch”,会出现如图所示的 菜单,然后用鼠标选中变量,点击鼠标邮件,在快捷菜单 中选中“add to watch”这样变量添加到watch窗口的tab1中, 程序运行过程中,用户可以看到变量值在不断的变化。
查看一个指定的寄存器 在Processor Views里面点击watch,AXD左方就会出现Wacth Tab,在表中点击鼠标右键,add watch,就会跳出add watch的 对话框,之后在Expression里面输入你指定查看的寄存器,而后 点击Evaluate,再点击Add to View就可以了,在watch tab中就出 现你需要指定查看的寄存器了。
ARM9 C程序设计
1 点击go后进入 Main() 2 点击Step让程序单步运行
在AXD里面可以直接查看各个通用寄存器内部值的变化。
查看存储器内容 在程序运行之前,可以先查看两个宏变量IOPMOD和 IOPDATA的当前值。方法是:从Porcessor Views菜单中 选择“Memory”选项,如图所示:
AXD调试以及使用方法
调试工具条 加载完调试文件(即*.axf 文件)后,用户就可以操作AXD 运行调试工 具条中的工具按钮实现程序运行调试。AXD 运行调试工具条如图所 示, 全速运行(Go)
停止运行(Stop)
单步运行(Step In),与Step 命令不同之处在于对函数 调用语句,Step In 命令将进入该函数。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进行程序调试前的两个基本步骤:
1 目标配置
单击菜单“Options”→“Configure Target”,弹出一个 Target Environments选项窗口。这个窗口中有几个系统加载的选 项,如图所示。
目标简称 工具文件及路径 方法说明
增加新调 试方法 删除当前 调试方法
配置当前 调试方法
2. 断点管理窗口
State Processor Position Count Condition Size Action
断点状态; 处理器型号; 断点位置; 断点计数器; 断点计数器计数条件。 代码类型。 断点执行动作。
断点管理窗口中的右键下拉菜单
Add 增加一个断点; Disable 关闭选中的断点; Delete 删除选中断点; Delete All 删除断点管理窗口中所有的断 点; Locate Using Address搜索断点所在指令行的地 址; Refresh 断点管理窗口中的内容刷新一 次; Properties 设置断点的属性。 Float within main window使断点管理窗口浮置, 浮置的窗口可以悬挂在屏幕的任意位置; Allow docking 吨使断点管理窗口锁定在屏幕 边缘位置。 Hide 隐藏断点管理窗口; Close 关闭断点管理窗口。
在“Processor Views”菜单下“Source…”菜单用来打开源程序; “Disassembly”菜单用来打开反汇编代码文件。
4.Registers菜单介绍 Registers菜单介绍
调试中有两部分寄存器: 一部分是ARM内部的寄存器; 一部分是ARM外部其他模块的寄存器。 单击“Processor Views”→“Registers”打开一个ARM寄存器选项窗口。
使用ARMulate作为调试工具,点击“Configure”,则出现如图所示的配 置对话框。
2
加载映像文件
加载已经编译和链接过的映像文件: 进入菜单File后,选择上面第1项 Load Image加载映像文件,弹出一 个文件搜索对话窗口。加载的映像文件在工程项目文件夹中,扩展名 是AXF,文件名称和工程项目名称相同。
这个输出窗口共有RDI Log和Debug Log两个标签页,分别显示RDI日志 信息和调试过程中产生的日志信息。
Console窗口是一个控制台窗口,不但可以接收用户的按键信息,而且 可以显示程序的输出信息。
3.Disassembly、Source…菜单介绍 Disassembly、Source…菜单介绍
左侧的窗口是符号表管理窗口,每个符号都对应一个地址。
7.Watch菜单介绍 Watch菜单介绍
使用观测项(Watch)可以在调试程序时动态地了解某些信息,这些信息取决于所 设置的观测项的表达式。 在观测项窗口所得到的是一个表达式的值,表达式可以由程序调试者输入。 R0 + R5-R6 R0 + R7*0x20 &b b + value ;使用寄存器和算术运算符 ;使用寄存器和算术运算符 ;求变量b的地址 ;两个变量相加
Image标签页 ② Image标签页 :显示了当前装载的映像文件路径和名称
③ Files标签页:显示这个映像文件所涉及到的一些源文件 Files标签页 标签页:
标签页: ④ Class标签页:显示这个映像文件所涉及的类、全局变量和全局函数。 标签页
2.Output、Console菜单介绍 Output、Console菜单介绍
ARM寄存器选项窗口共有8个选项,每个选项可以打开一组寄存器。 1. Current当前工作寄存器,包括RO~R14、PC、CPSR和SPSR; 2. User/System用户模式/系统模式寄存器组,包括RO~R14、PC、 CPSR; 3. FIQ快速中断模式寄存器组,包括FIQ模式中的R8~R14、SPSR; 4. IRQ通用中断模式寄存器组,包括IRQ模式中的R13、R14和SPSR; 5. SVC '管理模式寄存器组,包括管理模式中的R13、R14和SPSR; 6. Abort中止模式寄存器组,包括abt模式中的R13、R14和SPSR; 7. Undef未定义模式寄存器组,包括und模式中的R13、R14和SPSR; 8. Debug Comms调试信息,包括控制信息寄存器,读状态寄存器和写 状态寄存器。
Add Watch… 添加观察项; Locate Using Value 搜寻观察项的值; Locate Using Address 搜寻观察项的地址; Format 设置数据显示格式。
在Watch窗口的右键菜单中选择“Add Watch…”。然后单击Evaluate 按钮,这个表达式和这个表达式的值就会出现在下面的窗口中。
通过菜单选项“Systerm Views”→“Watchpoint”打开系统观测点管理窗口:
State: 表明当前观测点的状态,当图标为圆形时,该观测点处于打开状态; Processor: 目标处理器的名称; Item: 观测点的地址或名称,可能是变量名、寄存器名或者是地址; Watching : 注释项; Count: 计数器,分母是一个设定的循环次数。 Condition: 观测点条件; Action: 程序执行到观测点时有两种可能的结果:一种是停止运行(Break); 另一种是注释字符串到指定日志文件中。
源程序窗口和反汇编窗口
存储器显示窗口
1.3 使用断点进行调试
1.断点的简单应用
在调试程序的过程中,使用断点是经常要使用的方法。 ① 设置断点 在源程序或反汇编程序的窗口中,把光标指向要设置断点的指令行,双 击即把这个选中的指令行标注为断点位置。或者单击要设置为断点的指 令行设置断点。 ② 执行到断点 按F9键使程序开始运行,直到最近一个断点。 ③ 删除断点 删除断点跟设置断点一样,最简单的方法是:在源文件或反汇编文 件的断点位置双击这个指令行,就可以删除这个断点。
AXD调试界面
各菜单的含义如下: File 用于文件管理; Processor Views 用于处理器选项管理,可以选择在调试时观察处理器的某些选项:如 寄存器、变量和存储器等; System Views 用于对调试目标管理,这是处理器以外的内容,比如其他寄存器和断 点等; Options 用于对AXD进行配置,如进行目标配置; Excute 控制程序运行,如单步、执行到断点等。
打开映像文件之后,大部分选项被激活。可以进行其他选项设置,也 可以开始调试。 注意:AXD没有复位功能,调试过程中如果想重新运行程序,需要重 新加载程序。
1.3 View菜单介绍
Processor Views菜单
System Views菜单
1.Control Monitor菜单介绍 Monitor菜单介绍
选择“System Views”→“Control Monitor”,就会打开如图所示 的显示窗口。这个“Control Monitor”窗口共有四个标签页: Target、Image、Files、Class。在“Control Monitor”窗口的任一 标签页中点击右键,选择右键菜单“Hide”命令可以隐藏本窗口。 ① Target标签页 标签页 在Target标签页中,显示了当前的目标硬件,如图所示,图中显示 当前的目标硬件是ARM7TDMI内核。
Angel是AXD中的另一种调试方法或工具。这种方法的软件支持工具 (调试环境)称为 ADP(Angel Debug Protocol),其文件名是 remote_a.dll。 Angel调试方法的结构包括计算机和目标板两部分。这种调试方法在 目标板上必须含有调试监控程序。计算机和目标板的通信实际上是计算 机与调试监控程序之间的通信。
右键菜单中选择“Add”,系统弹出一个观测点设置对话框,如图所示
二、AXD调试方法
1.1 常用的调试方法
控制程序运行的方法分为两种: 单步运行 单步运行就是让程序一条语句接一条语句执行,可以通过 查看寄存器、内存表、变量以及表达式的值来判断程序的运 行结果。 设置断点运行。 设置断点的方法能够用来调试大段的程序。程序中并不重 要部分直接让它运行,在程序中的关键点处设置断点,当程 序运行到断点处时会自动停止,然后观察运行的结果或决定 程序是否继续运行。
5.Memory菜单介绍 Memory菜单介绍
单击菜单栏“Processor Views”→“Memory”打开存储器显示窗口。
在Start addresser处可以输入要显示内存的起始地址,图中输入0x8000,所以 内存单元内容从0x8000处开始显示。
Symbols菜单介绍 6.Low Level Symbols菜单介绍
1.2 单步调试
工具栏中的“单步 单步”运行按钮。这个单步运行操作使程序执行到下一 单步 条指令。如果指令是一条函数调用指令,则这项功能不进入函数体内。 工具栏中的“进入单步 进入单步”运行按钮。这个单步运行操作使程序运行到 进入单步 下一条指令。如果指令是一条函数调用指令,则这项功能将进入函数 体内。 工具栏中的“跳出单步 跳出单步”运行按钮。这个单步运行操作使程序执行到 跳出单步 下一条指令。如果指令是在函数体内,则这项功能使程序跳出函数体。 工具栏中的“执行到光标处 执行到光标处”运行按钮。这项功能可以使程序运行到 执行到光标处 事先选定的指令行。
Add Watch窗口
8.Watchpoint菜单介绍 Watchpoint菜单介绍
AXD中还有一种辅助调试手段,叫做观测点(Watchpoint)。观测点与 观测项的主要区别: 1.观测项是检查一个表达式的值,要对表达式进行计算,而观测点不对 表达式进行计算; 2.观测项不会使正在执行的程序停止;而观测点与断点一样可以使程序 停止; 3.观测点和断点一样,可以设置实现条件;观测项没有条件
字符串拷贝程序清单
AREA BufData,DATA,READWRITE ;声明数据段BufData Mes DCB “HELLO,The World!” Buf SPACE 100 ;分配100字节空间 AREA Example1,CODE,READONLY ;声明代码段Example1 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 START LDR R1, =Mes LDR R2, =Buf LDRB R3, [R1,#16] ;装载Mes数组的最后一个字符 ‘$’ N LDRB R0, [R1], #1 ;读源地址的字符,R1自动加1 STRB R0, [R2], #1 ;保存字符到目的地址,R2自动加1 CMP R0, R3’ ;比较,判断字符是否为‘$’ BNE N ;没有碰到‘$’,继续传送字符 B START END
相关文档
最新文档