我正在阅读具有双闪存组(F4、H7...)的
STM32 型号的 RM,但不太了解如何使用组切换。
采取当旧固件在 bank1 中而新固件被编程到 bank2 时的固件更新场景。所以它编写了一些选项字节来切换银行,下次应该从银行 2 启动。
如果新版本不好,我想从 bank1 自动启动。但是怎么办?写入选项字节。有没有办法通过外部引脚控制银行切换?
在我以前见过的一些系统上,我们是通过以下方式实现的:我们制作了一个简单的看门狗(CPLD 或其他),它可以自动切换引导选择器引脚。
如果 CPU 在复位后的规定时间内没有接触看门狗,它将切换选择器引脚并再次复位。
因此,如果新固件无法启动,系统将重新启动到旧固件。
我想在 STM32 上实现相同的功能,如果需要的话可以使用外部小部件,但最好不要使用它。
另一方面,对于 H7,您可以在选项字节中为 BOOT0 高位和低位定义替代起始地址。但是如果没有银行转换,这将没有用。我的固件不是位置独立的,它是为第一银行的特定地址构建的。如果不切换银行,它不会耗尽 bank2。
有什么想法吗?