硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4019|回复: 6
收起左侧

[有问必答] V5_136_串口IAP实验中怎么从APP跳转到IAP程序

[复制链接]

10

主题

34

回帖

64

积分

初级会员

积分
64
发表于 2019-2-22 14:17:54 | 显示全部楼层 |阅读模式
根据教程已经能正常从IAP跳转到APP程序中,并且APP程序能正常运行,不过APP程序跳转回IAP后再次升级时不能再次跳转到APP程序不知道哪里还有问题?



APP跳转回IAP程序如下
    __set_PRIMASK(1);
     HAL_RCC_DeInit();
    __disable_irq();
  __set_CONTROL(0);
JumpAddress = *(__IO uint32_t*) (d_IAP_DOWNLOAD_ADDRESS + 4);
/* 用户应用地址 */
Jump_To_Application = (pFunction) JumpAddress;
/* 初始化MSP */
__set_MSP(*(__IO uint32_t*) d_IAP_DOWNLOAD_ADDRESS);
Jump_To_Application();


APP程序用的Freertos系统


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2019-2-22 14:41:38 | 显示全部楼层
在APP里面直接调用SystemReset复位指令就正常了。
回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
 楼主| 发表于 2019-2-22 15:12:45 | 显示全部楼层
eric2013 发表于 2019-2-22 14:41
在APP里面直接调用SystemReset复位指令就正常了。

在什么位置调用啊,外设初始化之前吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2019-2-22 15:16:16 | 显示全部楼层
yewudao12 发表于 2019-2-22 15:12
在什么位置调用啊,外设初始化之前吗

APP程序跳转回IAP:

我们不跳转了,直接复位。这样直接就执行的IAP,有效防止了你的APP程序影响。
回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
 楼主| 发表于 2019-2-22 16:50:02 | 显示全部楼层
eric2013 发表于 2019-2-22 15:16
APP程序跳转回IAP:

我们不跳转了,直接复位。这样直接就执行的IAP,有效防止了你的APP程序影响。

谢谢,确实这样就好了
回复

使用道具 举报

75

主题

1228

回帖

1453

积分

至尊会员

积分
1453
发表于 2020-7-16 13:31:07 | 显示全部楼层
请问硬汉,app转boot只要软件复位就行了吗?
            __set_FAULTMASK(1);      // 关闭所有中端
            HAL_NVIC_SystemReset();
是不是两个语句就行了?
外设、中断需要关闭吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2020-7-16 14:34:05 | 显示全部楼层
wdliming 发表于 2020-7-16 13:31
请问硬汉,app转boot只要软件复位就行了吗?
            __set_FAULTMASK(1);      // 关闭所有中端
    ...

【安富莱】V6,V5开发板用户手册,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至36章(2020-05-25)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255



QQ截图20200716143355.jpg


回复

使用道具 举报

75

主题

1228

回帖

1453

积分

至尊会员

积分
1453
发表于 2020-8-7 21:11:37
    /* Keep the user application running */
    else
    {
        /* Test if user code is programmed starting from address "ApplicationAddress" */
        if (((*(__IO uint32_t *)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
        {
            /* Jump to user application */
            JumpAddress = *(__IO uint32_t *) (ApplicationAddress + 4);
            Jump_To_Application = (pFunction) JumpAddress;
            /* Initialize user application's Stack Pointer */
            __set_MSP(*(__IO uint32_t *) ApplicationAddress);
            Jump_To_Application();
        }
    }

请问硬汉哥我看了stm32的官方iap的程序,但是看不到跳转的地址是多少,全局搜索也没有

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-13 20:25 , Processed in 0.176489 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表