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

Why are flash sectors of ROM smaller at the starting address?

最近一直在使用闪存 ROM,我发现在芯片的内部闪存和外部 SPI 闪存设备中,扇区的大小通常如下所示:

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

中浪费 128k - bootloader_size

我的猜测对吗?或者还有其他原因吗?真的很想知道这里的设计决策是什么。

通常,引导加载程序代码执行:
1. 处理器初始化。
2. 跳转到应用程序代码。

引导加载程序代码通常比应用程序代码小很多。小段允许更快地对闪存进行编程,因为许多闪存具有可擦除和编程的最小扇区大小。段大小越小,擦除和重新编程的速度就越快。

一些Flash制造商将Bootloader段放在下端或上端(或允许您随意设置)。

因为并非所有 STM32F40x/41x 设备都具有此 table 中描述的完整 1 MB 闪存。有些,例如 STM32F410C8, have as little as 64 KB -- that is, just the first four 16 KB sectors. Reducing the sector size at the start of memory allows these devices to still have multiple sectors available to work with, without leading to an excessive number of sectors on larger devices. It also makes some small sectors available on all devices for applications like EEPROM emulation,需要分配两个不同的闪存扇区供其专用。