CH32X033在调试时, 某些位置下断点会导致非法指令的异常

如图所示:

image.png

上图左侧是构建时生成的lst文件, 被调试的这个函数, 我加了highcode属性, 运行在memory中, 

右侧是调试运行时的反汇编视图, 我在某位置下了断点后, 发现断点附近的指令被改了, 导致执行到此处时, 出现了HardFault.

对比左右区域可以发现, 在0x2000128a处, 开始出现左右数据不一致的问题, 在HardFault中断处理函数里, 异常数据如下图:

image.png

可见是在0x2000128c这里遇到了非法指令的异常, 这是为什么?

我做了个小实验, 发现将被调试函数去掉highcode属性, 下断点就不会出现异常. 好像只有运行在IRAM内的代码, 下断点才会出现非法指令的异常.


您好,这边暂时没有复现你的问题,若方便可将你的工程发至我的邮箱(lzs@wch.cn)看一下,后续问题的沟通也可以通过邮箱进行沟通。


已发邮件demo


只有登录才能回复,可以选择微信账号登录