打印
[应用相关]

AT32 bootloader 跳转到app无法运行的问题

[复制链接]
989|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2023-7-25 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题
之前在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

使用特权

评论回复
沙发
B1lanche| | 2024-3-7 14:49 | 只看该作者
一般跳转不了是因为指针写的位置不对吧

使用特权

评论回复
板凳
Candic12e| | 2024-3-7 14:53 | 只看该作者
估计是跳转过去之后,指针还没清理数据吧,导致数据不对,跳转不过来?

使用特权

评论回复
地板
Carmen7| | 2024-3-7 15:55 | 只看该作者
你仿真看看BootLoader运行的对不对?

使用特权

评论回复
5
Belle1257| | 2024-3-7 17:13 | 只看该作者
这种跳转好像还需要在keil设置正确的地址吧,起始地址

使用特权

评论回复
6
Allison8859| | 2024-3-7 18:20 | 只看该作者
那可能是因为主频运行速度不一样,你跳转过去,可能此时的数据还没被清除吧

使用特权

评论回复
7
Emily999| | 2024-3-7 19:32 | 只看该作者
为啥需要加个延时才能跳转呢?

使用特权

评论回复
8
Charlene沙| | 2024-3-7 20:36 | 只看该作者
你这个延时是加在哪儿了?是BootLoader跳转函数之前?

使用特权

评论回复
9
Annie556| | 2024-3-7 21:45 | 只看该作者
我之前也遇到过这种情况,但是好像是改了跳转地址OK的

使用特权

评论回复
10
Carina卡| | 2024-3-8 11:02 | 只看该作者
之前说雅特力有一部分flash是非0等待的,你是不是跳转到那里了

使用特权

评论回复
11
alxd| | 2024-3-8 12:30 | 只看该作者
这个时间延时楼主是怎么得出来的?是随便加了一段延时代码就OK了?


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2029

主题

15905

帖子

15

粉丝