关于AXD调试的详细探索

TMD总结必须写在开头

没有意义,没有意义,没有意义。千奇百怪的问题,然后有时过一会又不出现。==当bug不可复现的时候,就是你都有某些东西一无所知的时候。==从一开始就对这些东西一无所知。。。。迷得很。

1. 使用擦除成空的Flash

1.1 ADS设置RO为0x0,Image Entry Point为0x0,下载axf
第七次实验:
1.ADS反汇编:
在这里插入图片描述
2.AXD反汇编:
在这里插入图片描述
  显然二者是不匹配的,至于为什么不知道。。。又仔细看了一下,不仅是中断矢量不匹配,而且其他代码也不匹配。
3.JFlash打开的bin文件
在这里插入图片描述
4.问题解决:
  通过去对比第六次实验,发现中断向量表少写了一个中断。(这个并不是导致之前那个问题的真正原因
在这里插入图片描述
5.mmp的事情发生了
  我把那个新加的 IRQHandler B IRQHandler 注释掉发现,也可以了。。。之前明明是AXD显示的反汇编和bin文件是不对的。可能是编译或下载的时候出现了什么问题。(之前的bug已经无法复现了。。。)

第六次实验
  当时第六次实验是正常的,现在回去再看看
1.ADS反汇编
在这里插入图片描述
 咦,我突然发现第七次实验中的那个ADS反汇编,第一个中断矢量跳转地址不是 0x20 是不是这里的问题啊,回去查一下。
2.AXD反汇编
在这里插入图片描述
3.JFlash打开的bin文件
在这里插入图片描述
  画红框的是一条指令,可以看到这是小端模式,AXD中的反汇编第一列是地址(标号),第二列是指令的HEX形式(高字节在前,符合人们阅读习惯,第三列就是指令的汇编形式了),JFlash打开的bin文件,虽然是2进制,可能是JFlash把它转化成十六进制来进行显示了,可以看到一条指令的4个字节,按小端模式排列。还有就是,可能原地跳转有对应的汇编规则。
1.1 ADS设置RO为0x0,Image Entry Point为0x0,下载axf

2. 使用从0x0开始下载源程序的Flash
3. 使用从0x0下载中断向量转接程序的Flash

3.Command Line Interface不显示SDRAM时序配置命令:
  需要先给开发板上电,连接好JTAG,令AXD处于Multi-ICE环境下,然后重启AXD,就可以看到打印信息了。
在这里插入图片描述
  通过进一步探索,发现清空Command Line Interface后,reload image或者load image都不会再次配置SDRAM,窗口中没有配置信息的显示。发现在AXD-options-configure target中换到别的环境下再换回到Multi-ICE也不会触发SDRAM的配置,并且发现在别的环境下,J-Link那个页面依然存在。
在这里插入图片描述
  发现了,无论AXD处于哪种环境,只要关闭软件重新启动就会执行一次SDRAM的配置。

实验七
1. 堆栈初始化
在这里插入图片描述
问题是,最后给用户模式配置堆栈栈顶时,一进入用户模式,他的R13即SP就是需要配置的地址了,都不需要进行赋值配置。这个原因是什么???
2. 协处理器配置无效
在这里插入图片描述
3. 算了,不用自己写的代码了,用老师给的
  自己新建一个工程,一个文件一个文件新建,然后复制对应的例程。编译成功。发现老师没有配置中断,也没管,直接把RO、RW、Image entry point改了,然后也不debug了,直接使用JFlash下载。打开串口助手使用115200波特率,发现可以接收,接收数据为15,一直收15,与程序不符。改了一下串口发送函数,想发个别的字符。编译完,发现JTag下载不进去了。。。。(难道是之前没配中断的原因???)
在这里插入图片描述
  仿佛回到了当年玩esp8266启动文件没加延时的情况,导致程序下载不进去,需要重刷固件。但是ARM这个片子还是裸的啊,怎么可能堵死。。。
  原来是选错jflash文件了
在这里插入图片描述
  J-Flash-file-open project应该打开下面那个.jflash。至于这个文件是干什么的,里面都有什么配置我一无所知。。。。
4. 发现一个大问题,AXD下需要将开发板上存储器开关打到nandflash上
  nandflash中有下好的程序,不知道是boatload还是操作系统。打到norflash上,使用AXDdownload到SDRAM中的程序与打到nandflash上,download到SDRAM中的程序不一样。
使用norflash:
在这里插入图片描述
  tmd又正常了。。。。。无语了。可能真正的原因在于那个SDRAM配置文件那个session。。。正常也不能正常运行都是假象。
使用nandflash:
在这里插入图片描述
  现在看来是正常的,但是当要改变模式为用户模式的时候,会卡死。
5.使用J-Flash下载,使用AXD观察flash存储的指令
J-Flash下载:
在这里插入图片描述
AXD观察:
在这里插入图片描述
  根本不一致。。。。换一个之前可以正常运行的bin文件,发现二者是一致的,也就是说这种观察方法是没问题的。那问题到底出现在哪?是下载出错了还是AXD读取观察出错了?
6.arm工作模式的问题
在这里插入图片描述在这里插入图片描述
  是不是说明,AXD下arm不是从svc模式开始的?还是我没擦干净Flash的问题?我现在先擦完Flash再尝试一下。擦完还是这种现象。
  之前纯软件实验是:
在这里插入图片描述
那个Res不知道是什么。。

AXD问题

1.
在这里插入图片描述
先是重启AXD,还是有这个问题。
然后去ADS,又把工程编译了一遍还是有这个问题。
最后发现问题是:AXD中加载的是DebugRel模式的镜像,而ADS中打开的是Release模式的镜像。最后在ADS中切换到DebugRel模式编译之后,再重启AXD就不会报错了。

2. AXD页面中只显示Disassembly,不显示源文件
在这里插入图片描述
3. 不高亮的问题
  虽然不高亮可能和编辑器配置有关系,但是有时能高亮有时不能高亮就比较迷了吧。。。。而且不高亮的时候,运行会出各种奇怪问题
在这里插入图片描述
  有时是可以高亮的
在这里插入图片描述
  这个是哪的问题啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

匿名匿名匿名11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值