STM32数字电源应用-STM32G474单bank程序烧录成双bank程序解决方案

问题描述:          

STM32G474的芯片flash可以配置双bank flash类型(64Kbyte + 64Kbyte),而客户由于使用超过64Kbyte大小,所以设定只能单bank才能正常工作,STM32G474出厂默认双Bank,工厂烧录过程中漏掉Bank配置,直接用双Bank模式进行烧录,而产品依然可以工作,正常测试流程无法测试出。在在线升级过程中,由于擦除Page大小不同,Flash读写Size不同,导致部分升级失败,所以需要重新升级。

现象如图:




诉求:

对于配置为双Bank已烧录过的芯片,使用ST utility工具,目前通过将PCROP_RDP 配置为1,Read Out Protection 修改为Level 1然后同步将PCROP_RDP配置为0,Read Out Protection 从Level 1 修改为Level 0,清除芯片保护和Flash信息然后重新配置为单Bank,然而,对于工厂端,很难保证不会出错,帮忙确认是否有简单方式重新配置Bank。如图:






解决方案:

1.对于已经烧录的双Bank配置软件,可以分成2个步骤:

  • 恢复保护前的配置:

批处理文件命令如下:

st-link_CLI.exe -c ur -ob PCROP_RDP=1

st-link_CLI.exe -c ur -ob RDP=1

st-link_CLI.exe -c ur -ob PCROPA_STRT=0x7fff PCROPA_END=0x0000 PCROPB_STRT=0x7fff PCROPB_END=0x0000 RDP=0

  • 烧录新的firmware:

st-link_CLI.exe -c -ob DBANK=0 -Rst

st-link_CLI.exe -c -p "D:\ST\MCU\FW\G4\en.stm32cubeg4_v1-4-0_v1.4.0\STM32Cube_FW_G4_V1.4.0\Projects\NUCLEO-G474RE\Examples\GPIO\


GPIO_IOToggle\MDK-ARM\GPIO_IOToggle\Exe\GPIO_IOToggle.hex" -v



3.批处理文件用txt编辑,再修改后缀名为*.bat即可直接运行。

 
一劳永逸的解决方法,拿到新的mcu,直接使用下面操作方法即可:

烧录新的firmware:

st-link_CLI.exe -c -ob DBANK=0 -Rst

st-link_CLI.exe -c -p "D:\ST\MCU\FW\G4\en.stm32cubeg4_v1-4-0_v1.4.0\STM32Cube_FW_G4_V1.4.0\Projects\NUCLEO-G474RE\Examples\GPIO\
GPIO_IOToggle\MDK-ARM\GPIO_IOToggle\Exe\GPIO_IOToggle.hex" -v


原理:

关于芯片保护机制:

RDP的值为0xAA时,RDP level =0;这时候没有保护。

RDP的值为0xCC时,RDP level=2;这时候禁止调试,不能再用工具烧录程序,也就是说的变砖;

RDP的值不为上面两个值的时候,RDP level=1

Level1level2具体保护不同可以参考下面表格:


PCROP_RDP设置为1,是为了确保当我们从RDP level 1回退到 RDP level 0的时候,flash会进行全片擦除的动作。

关于PCROP_RDP和RDP level的详细说明,可以参考编程手册P120-P124页。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论