AT32 bootloader 跳转到app无法运行的问题
问题之前在GD32、STM32上开发过bootloader,都是没有问题的,现在不知道为什么,代码都是正常的情况下,bootloader程序无法跳转到app
解决方法
在app,应用程序的代码中,开头加上一段延时,比如这样:
for (uint32_t i = 0; i <= 0xFFFF; i++) //添加延时,bootloader才能正常跳转
{
for (uint32_t j = 0; j <= 20; j++)
__NOP();
}
加了之后就可以了,去掉就跳转不了,我也不知道为什么,当时调试的时候,试了一下,碰巧发现的
————————————————
版权声明:本文为CSDN博主「nepqiu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/K_O_R_K/article/details/123312857
一般跳转不了是因为指针写的位置不对吧 估计是跳转过去之后,指针还没清理数据吧,导致数据不对,跳转不过来? 你仿真看看BootLoader运行的对不对? 这种跳转好像还需要在keil设置正确的地址吧,起始地址 那可能是因为主频运行速度不一样,你跳转过去,可能此时的数据还没被清除吧 为啥需要加个延时才能跳转呢? 你这个延时是加在哪儿了?是BootLoader跳转函数之前? 我之前也遇到过这种情况,但是好像是改了跳转地址OK的 之前说雅特力有一部分flash是非0等待的,你是不是跳转到那里了 这个时间延时楼主是怎么得出来的?是随便加了一段延时代码就OK了?
页:
[1]