tpgf 发表于 2023-7-25 09:10

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

B1lanche 发表于 2024-3-7 14:49

一般跳转不了是因为指针写的位置不对吧

Candic12e 发表于 2024-3-7 14:53

估计是跳转过去之后,指针还没清理数据吧,导致数据不对,跳转不过来?

Carmen7 发表于 2024-3-7 15:55

你仿真看看BootLoader运行的对不对?

Belle1257 发表于 2024-3-7 17:13

这种跳转好像还需要在keil设置正确的地址吧,起始地址

Allison8859 发表于 2024-3-7 18:20

那可能是因为主频运行速度不一样,你跳转过去,可能此时的数据还没被清除吧

Emily999 发表于 2024-3-7 19:32

为啥需要加个延时才能跳转呢?

Charlene沙 发表于 2024-3-7 20:36

你这个延时是加在哪儿了?是BootLoader跳转函数之前?

Annie556 发表于 2024-3-7 21:45

我之前也遇到过这种情况,但是好像是改了跳转地址OK的

Carina卡 发表于 2024-3-8 11:02

之前说雅特力有一部分flash是非0等待的,你是不是跳转到那里了

alxd 发表于 2024-3-8 12:30

这个时间延时楼主是怎么得出来的?是随便加了一段延时代码就OK了?


页: [1]
查看完整版本: AT32 bootloader 跳转到app无法运行的问题