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

Embedded 为什么ROM的闪存扇区在起始地址处较小?,embedded,bootloader,firmware,flash-memory,rom,Embedded,Bootloader,Firmware,Flash Memory,Rom,最近,我一直在大量使用闪存ROM,我发现在芯片内部闪存甚至外部SPI闪存设备中,扇区的大小通常是这样的: 我很好奇为什么起始地址空间的扇区比后面的地址小。我的怀疑是,使用引导加载程序这样的东西更方便。由于引导加载程序通常小于128k,这将允许将引导加载程序写入前2或3个扇区。这使得主要的空间应用程序有更多的扩展空间,因为要对其进行编程,我们需要从一个新的领域开始。如果我们只有128k大小的扇区,那么我们基本上是在空间中浪费128k-bootloader\u size 我的怀疑正确吗?或者这还有

最近,我一直在大量使用闪存ROM,我发现在芯片内部闪存甚至外部SPI闪存设备中,扇区的大小通常是这样的:

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


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

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

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


一些闪存制造商将引导加载程序段放在低端或高端(或允许您随意设置)

因为并非所有STM32F40x/41x设备都具有此表中所述的全部1 MB闪存。有些,比如,只有64KB,也就是说,只有前四个16KB扇区。在内存开始时减小扇区大小允许这些设备仍有多个可用扇区可供使用,而不会导致较大设备上出现过多扇区。它还可以在所有设备上为应用程序提供一些小扇区,例如,需要为其专用分配两个不同的闪存扇区。

@drescherjm刚刚发现,这些开发人员也有很好的机会遇到这个问题。如果你认为这是不合适的话,我会删除标签。这可能是一个更好的问题,因为它肯定介于两者之间。如果我在一天内找不到任何东西,我会把它寄到那里!顺便说一下,我强烈建议删除C++和C标记,因为你的问题与这些语言无关。@ ToMasMatthWS删除,可能不得不在electronics SE上发布这篇文章,因为这里不会有流量。你的答案很好地指出了为什么较小的扇区在具有较小ROM的设备上很重要。但它没有提到为什么较大的设备在开始时仍然有小扇区。由于STM32F410C8属于同一个F4系列,因此是否存在此系列中所有孩子都必须遵守的某种类型的扇区布局结构?我还不明白为什么你所说的STM32F410C8芯片与“是否有某种类型的扇区布局结构,家庭中的所有孩子都必须遵守?”你问题中的表格就是这种结构——较小的设备只是从末端去掉扇区。设备系列的全部要点是最大限度地减少其中设备之间的差异——在某些设备中更改闪存布局相当于拆分该系列。“设备系列的全部要点是最大限度地减少其中设备之间的差异——在某些设备中更改闪存布局相当于拆分该系列”我不知道这个。我现在明白了,谢谢。我觉得这才是真正的答案,我的观察只是一种很好的便利待遇。