IAP无法跳转

2019-07-14 15:07发布

  基于STM32Cube_IAP_using_UART编写boot程序时碰到一个奇怪的现象,跳转到新的地址执行APP程序时,APP无法正常执行。但是如果在void GotoApp(void)函数中,在跳转之前对GPIOA或GPIOB或GPIOC任一引脚做任一状态初始化,则可以正常跳转执行。同样的,把这段初始化代码加载APP main函数的第一行,也无法正常执行。看起来,这段初始化只有在boot中才会有作用。  不知各位是否碰到类似的问题,可能得原始是什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
yh3091876423
1楼-- · 2019-07-14 22:28
本帖最后由 luankelong 于 2018-1-26 16:42 编辑

1jjjjj
yh3091876423
2楼-- · 2019-07-15 01:58
zzy0407 发表于 2018-12-19 14:36
1.确认App程序没问题(不通过bootloader直接烧App测试)
2.确认App没问题后,bootloader中跳转前,关闭所有初始化的外设,关闭所有开启的中断

本帖最后由 luankelong 于 2018-1-26 16:43 编辑


1.因为APP修改icf重新设置了地址。在这种情况下,直接仿真实验没有问题。我修改icf ROM地址为0x08000 0000,直接下载不通过bootloader也没问题。
2.关外设和中断我试试(我看到ST官网程序貌似并没有关外设和中断的操作)
TOPCB
3楼-- · 2019-07-15 03:20
1、工程配置中的地址修改
2、向量地址的修改
yh3091876423
4楼-- · 2019-07-15 04:36
zzy0407 发表于 2018-12-19 14:36
1.确认App程序没问题(不通过bootloader直接烧App测试)
2.确认App没问题后,bootloader中跳转前,关闭所有初始化的外设,关闭所有开启的中断

我确认了下boot,没有用到中断。外设开了如下:
// Enable GPIOA, GPIOC and USART1 clock
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC
                     | RCC_APB2Periph_USART1, ENABLE);

    // Enable USART2 clock
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
试了下,关了这几个外设后还是不行。
yh3091876423
5楼-- · 2019-07-15 08:45
 精彩回答 2  元偷偷看……
TOPCB
6楼-- · 2019-07-15 09:55
楼主用的是什么编译器?

一周热门 更多>