求助一个CH573的玄学问题

这个问题折腾了我好几天了,实在不解

我写了个带 dfu 的boot, 这里实现跳转到用户的firmware


image.png


我gdb在这里打断点,然后 set $pc = 0x20000,continue 以后没问题,但是如果让他正常跑,跳过去以后好像一旦跑到 startup_CH573.s 的 csrr mstatus就会reset


0x20000 我已经放了合法的固件,user firmware 的 ld 也改了


实在是不能理解为什么 gdb 手动跳就没问题,jalr 跳过去就有奇怪的我呢提

CH573官方的例程里面, 代码都是跑在用户模式,如果需要跳转有下面两种方式:

1,在中断里面跳转

2,boot的启动文件修改一下,让boot 的代码运行在机器模式:

image.png

 



感谢,已经解决了


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