加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

TRACE32调试技巧

发布时间:2020-12-15 18:44:25 所属栏目:百科 来源:网络整理
导读:转自:http://blog.csdn.net/qitaosong/article/details/4708823# 1.?调试步骤 l?????????连接好?TRACE32-ICD?和目标板,注意不要带电插拔?JTAG?,容易损坏?TRACE32?或目标板,然后依次打开?TRACE32-ICD?和目标板的电源。 l?????????开启调试软件?TRACE32 l?

转自:http://blog.csdn.net/qitaosong/article/details/4708823#

1.?调试步骤

l?????????连接好?TRACE32-ICD?和目标板,注意不要带电插拔?JTAG?,容易损坏?TRACE32?或目标板,然后依次打开?TRACE32-ICD?和目标板的电源。

l?????????开启调试软件?TRACE32

l?????????设置?CPU?类型,状态等,可以通过命令或菜单,命令如下:

sys.reset

sys.CPU ARM7TDMI ;?这里设置?CPU?类型

sys.up ;?启动调试,如果正常的话,状态为?system.ready;?否则会报错,需要检查?CPU?设置是否正确,TRACE32?和目标板的连接和电源是否正常

?

如果调试正常启动后,就可以下载编译好的文件(可以是?.elf?、?.binary?等文件)到?RAM?或?FLASH?中调试了

?

l?????????下载编译文件,命令如下:

data.load.elf E:/source/test.elf /PATH E:/source

这里的?/PATH?选项是用来指明源代码的路径,在调试时?TRACE?就可以查找到源代码了。?这里?TRACE会根据?.elf?文件里包含的目标代码起始地址加载到?RAM?的对应地址上,也可以指定加载到?RAM?的地址,但须和编译时的设置一致,否则程序不能正常运行。

注:?TRACE?也可以把编译目标文件烧录到?flash?中进行调试,需要使用?flash?烧录相关命令,这里就不详述了。

?

l?????????然后就可以设置断点进行调试了,如:

break.set 0x0c008000

TRACE32?的断点有两种,一种是硬件断点(在?FLASH?中的断点),另一种是软断点(在?RAM?中的断点);硬件断点需要?CPU?的支持,如?ARM7?最多只支持?2?个硬件断点,如果使用了软断点的话,就只能使用一个硬断点了;而软断点没有限制,可以设置很多个。

注:在?TRACE32?中,如果要使用硬件断点,需要先设置好?FLASH?内存映射范围,如下命令:

Map.bonchip 0x0000--0xfffff ;?具体范围根据目标板?FLASH?的范围设置

?

l?????????设置好断点就可以正常调试了。

?

2.???????源代码调试

在编译源码的时候,编译成?(?加?-g?选项?)debug?版本的目标文件(可以是?axf/elf?等格式),用?TRACE32?就可以直接进行源代码调试了。?TRACE32?几乎支持所有的编译器的编译文件,具体格式参见?TRACE32?的帮助。?axf/elf?等编译文件也叫符号文件,即在文件中把源码的符号表(函数?/?变量等)保存下来了,供调试时使用,但里面的符号表只是起定位作用,在调试时还需要有目标源代码,否则只能进行汇编级调试,TRACE32?支持把机器码反汇编成汇编语言进行调试,而且不需要目标文件支持,?TRACE32?可以自动从FLASH/RAM?中读取机器码,然后反汇编成汇编代码。

通过?data.load?命令把符号表文件?(.elf?等?)?下载到目标机器上,指定源代码路径,就可以进行代码调试。

data.load.elf E:/source/test.elf /PATH E:/source

?

?

3.???????死机定位方法

在调试产品时会碰到设备死机的情况,如下在调试过程中出现问题,可以很方便的用?TRACE?来查看问题;但如果是设备在正常运行时(没有接?JTAG?调试)出现问题或死机就比较难定位问题了;这里可以通过TRACE32?的?attach?功能来进行调试,如下:

l?????????把出问题的机器和?TRACE32-ICD?连接好(连接?JTAG?,测试机器需先预留?JTAG?口),然后开启TRACE32?,设置好?CPU?类型,使用?sys.attach?命令就可以让?TRACE32?和问题机器连接上了,正常连接后,?system?的状态就变成了?running?或?up?。

l?????????接下来可以就可以直接进行汇编级调试了。

l?????????但一般情况下,汇编级调试很难定位问题,需要进行源码级调试,可以按如下操作进行:先把TRACE32-ICD?和一个同问题机器同类型的机器连接好,然后把符号表文件(?.elf?文件等)下载(通过data.load?命令)到好的机器上,然后再把?JTAG?线从好的机器上拔下,连接到问题机器上;然后再用sys.attach?命令让?TRACE32?和文件机器连上,这样就可以进行源码级调试了。

如果不想这么麻烦,也可以这样操作,连接好?TRACE32-ICD?和问题机器,打开?TRACE32?软件,此时system?的状态为“?system down?”?,?然后通过“?data.load?”命令下载符号表文件?(.elf?等?)?,由于system?状态为?down?,?TRACE32?会提示没有符号表文件没有下载成功,不用管它,因为虽然没有下载到问题机器的?RAM?上,但符号表文件已经下载到?TRACE32?上了;然后再通过?sys.attach?命令让TRACE32?和问题机器关联上,这样就可以进行源码级调试了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读