[其他ST产品] STM32 dual bank 的bank切换问题

[复制链接]
1420|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切换位么?
将爱藏于深海 发表于 2023-9-9 22:00 | 显示全部楼层
你这是不是没有等待bank切换完成的操作啊?
白马过平川 发表于 2023-9-10 00:10 | 显示全部楼层
没这么弄过,一般都是一个bank直接升级的
捧一束彼岸花 发表于 2023-9-10 02:15 | 显示全部楼层
你可以看看第二部分的程序地址,你是否指针指到那里了
在曼谷的春 发表于 2023-9-10 04:20 | 显示全部楼层
注意一下,你的程序大小,也许第二段被覆盖了也有可能
她已醉 发表于 2023-9-10 06:20 | 显示全部楼层
双备份的话,我记得ST是有教程的啊,你可以看看的
温室雏菊 发表于 2023-9-10 08:25 | 显示全部楼层
这种能不能仿真一下,看看程序跑到哪儿了?
未说出口的像你 发表于 2023-9-10 10:25 | 显示全部楼层
如果用keil配置的话,好像得烧录两段还是三段程序的啊?
风凉 发表于 2023-9-10 12:30 | 显示全部楼层
你程序有多大啊?别整覆盖了,第二段可能就不好使了呗
Mowergy 发表于 2023-10-20 08:44 | 显示全部楼层
你是没有等待bank切换完成的操作吗
Bowclad 发表于 2023-10-20 13:23 | 显示全部楼层
没了解过这个操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1650

主题

5706

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部