为什么 ROM 的闪存扇区在起始地址处较小?

Cap*_*ack 5 embedded firmware flash-memory bootloader rom

最近经常使用闪存 ROM,我发现在芯片的内部闪存以及外部 SPI 闪存设备中,扇区的大小通常都是这样的:

STM32F405/415 的闪存布局

我很好奇为什么起始地址空间的扇区比后面的地址小。我怀疑使用引导加载程序之类的东西会更方便。由于引导加载程序通常小于 128k,因此这将允许引导加载程序写入前 2 或 3 个扇区。这使得主空间应用程序有更多的扩展空间,因为要对其进行编程,我们需要从新扇区的开头开始。如果我们只有 128k 大小的扇区,那么我们基本上就会浪费128k - bootloader_size空间。

我的怀疑正确吗?或者这样做还有其他原因吗?真的很想知道这里的设计决策是什么。

小智 3

因为并非所有 STM32F40x/41x 器件都具有此表中描述的完整 1\xc2\xa0MB 闪存。有些扇区(例如STM32F410C8)只有 64\xc2\xa0KB,即只有前四个 16\xc2\xa0KB 扇区。减少内存开始时的扇区大小允许这些设备仍然有多个扇区可供使用,而不会导致较大设备上的扇区数量过多。它还使一些小扇区可在所有设备上用于EEPROM 仿真等应用,这需要分配两个不同的闪存扇区供其专用。

\n

  • “是否有某种类型的扇区布局结构是家庭中的所有孩子都必须遵守的?” 你的问题中的表格**就是**这种结构——较小的设备只是从末尾留下扇区。设备系列的重点是最大限度地减少其中设备之间的差异——更改某些设备中的闪存布局将相当于分裂该系列。 (3认同)