在STM32 Dual-Bank flash上执行Bank2固件时出现问题

问题描述 投票:0回答:1

我目前正在使用 STM32L073RZ 开展一个需要通过专有无线协议进行固件更新的项目。我正在研究的 OTA 方法是使用该 MCU 的双组功能。我成功地使用新固件对 BANK2 进行了编程,该固件在使用的外设和整体功能方面与 BANK1 固件完全不同。我的问题是,当我设置 BFB2=1 从 BANK2 启动时,MCU 无法执行固件。

我做了一些更多的测试,仅对 BANK2 进行编程,并尝试从它启动,而 BANK1 中没有任何固件,但仍然没有成功。我究竟做错了什么?即使我根本不想使用该银行,我是否需要将特定代码编程到银行1? MCU 在运行 BANK2 中的固件时使用 BANK1 中代码的哪一部分?

我应该提到,我已经阅读了 ST 关于此事的 AN4767 和 AN2606 文件。此外,当我在两个存储体上编写两个相同的固件(使用不同的链接器脚本编译以匹配存储体地址)并稍微更改代码以识别正在执行的固件(例如,一个存储体 LED 闪烁,一个 LED 亮起)时,一切正常两家银行。

embedded stm32 firmware
1个回答
0
投票

我确实发现了问题。就我而言,我没有注意

SYSCFG_CFGR1_UFB
注册。我试图用 BFB2 寄存器切换存储体,并且还为存储体 2 的地址构建了固件,这是错误的。实际上不知道当我切换bank时,第二个bank的地址将始终绑定到虚拟地址0x08000000。 感谢所有参与该主题的专家。

© www.soinside.com 2019 - 2024. All rights reserved.