我正在研究 B-L475E-IOT01A2,它是 STM32L475 系列 Discovery IoT 套件,具有 ARM M4 皮质。它有两个 FLASH 存储器,每个大小为 512 KB。我正在实现两个应用程序以及一个引导加载程序,它们都存储在闪存中。由于空间非常小,引导加载程序、第一个应用程序和第二个应用程序的某些部分存储在第一个存储库中,而第二个存储库包含第二个应用程序的剩余部分。因此,在引导加载程序中,我需要交换两个应用程序。
问题是两个应用程序中只有一部分被交换,因为第二个应用程序部分存储在两个银行中。一次只能在 FLASH 中写入一页 (2 KB) 内存。这两个应用程序的大小均为 384 KB,计算后结果为 192 页。但在运行交换程序后,只交换了 72 页。
这是应用程序和引导加载程序的地址。
BOOTLOADER_ADDRESS 0x08000000, (Size = 48K )
APPLICATION1_ADDRESS 0x0800F000 (Size = 384 KB)
APPLICATION2_ADDRESS 0x0806F800 (Size = 384 KB)
那么我应该怎么做才能确保正确交换?我应该启用双银行模式还是将第二个应用程序存储在第二个银行或做其他事情?
您的帮助将不胜感激。
谢谢,
舍图