打印
[其他ST产品]

STM32 dual bank 的bank切换问题

[复制链接]
726|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2023-9-1 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在项目中使用到STM32G474RE的dual bank的IAP升级功能,编写一份程序,分别下载到地址:0x08000000和地址:0x08040000中,通过按键进行bank的切换,通过指示灯显示在哪个bank中运行,运行结果:在bank1中程序可以正常运行,但是一旦程序跳入bank2,程序就无任何响应;切换bank的代码如下:
void switch_bank(void) { HAL_FLASH_Unlock(); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR); HAL_FLASH_OB_Unlock();
HAL_FLASHEx_OBGetConfig(&OBInit);
OBInit.OptionType = OPTIONBYTE_USER; OBInit.USERType = OB_USER_BFB2; if (((OBInit.USERConfig) & (OB_BFB2_ENABLE)) == OB_BFB2_ENABLE) / BANK1 active for boot / { OBInit.USERConfig = OB_BFB2_DISABLE; } else { OBInit.USERConfig = OB_BFB2_ENABLE;
}
if(HAL_FLASHEx_OBProgram(&OBInit) != HAL_OK) { ;
}
if(HAL_FLASH_OB_Launch()!= HAL_OK) { ; }
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
}
求各位大神帮忙看下,问题出在哪里,十分感谢!!!

使用特权

评论回复
沙发
Stahan| | 2023-9-2 21:48 | 只看该作者
偏移地址设置了吗?》

使用特权

评论回复
板凳
一只眠羊| | 2023-9-9 17:51 | 只看该作者
切换的话,你需要等待上一个操作完成,确保闪存不处于忙状态才可以的哦

使用特权

评论回复
地板
我吃小朋友| | 2023-9-9 19:59 | 只看该作者
你这有设置或清除Bank切换位么?

使用特权

评论回复
5
将爱藏于深海| | 2023-9-9 22:00 | 只看该作者
你这是不是没有等待bank切换完成的操作啊?

使用特权

评论回复
6
白马过平川| | 2023-9-10 00:10 | 只看该作者
没这么弄过,一般都是一个bank直接升级的

使用特权

评论回复
7
捧一束彼岸花| | 2023-9-10 02:15 | 只看该作者
你可以看看第二部分的程序地址,你是否指针指到那里了

使用特权

评论回复
8
在曼谷的春| | 2023-9-10 04:20 | 只看该作者
注意一下,你的程序大小,也许第二段被覆盖了也有可能

使用特权

评论回复
9
她已醉| | 2023-9-10 06:20 | 只看该作者
双备份的话,我记得ST是有教程的啊,你可以看看的

使用特权

评论回复
10
温室雏菊| | 2023-9-10 08:25 | 只看该作者
这种能不能仿真一下,看看程序跑到哪儿了?

使用特权

评论回复
11
未说出口的像你| | 2023-9-10 10:25 | 只看该作者
如果用keil配置的话,好像得烧录两段还是三段程序的啊?

使用特权

评论回复
12
风凉| | 2023-9-10 12:30 | 只看该作者
你程序有多大啊?别整覆盖了,第二段可能就不好使了呗

使用特权

评论回复
13
Mowergy| | 2023-10-20 08:44 | 只看该作者
你是没有等待bank切换完成的操作吗

使用特权

评论回复
14
Bowclad| | 2023-10-20 13:23 | 只看该作者
没了解过这个操作

使用特权

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

本版积分规则

1504

主题

4518

帖子

6

粉丝