embedded - 为什么ROM的闪存扇区在起始地址处较小?
问题描述
最近一直在使用闪存 ROM,我发现在芯片的内部闪存甚至外部 SPI 闪存设备中,扇区的大小通常如下所示:
我很好奇为什么起始地址空间的扇区比后面的地址小。我怀疑使用引导加载程序之类的东西会更方便。由于引导加载程序通常小于 128k,这将允许引导加载程序写入前 2 或 3 个扇区。这使得主要的空间应用程序有更多的扩展空间,因为要对其进行编程,我们需要从一个新领域的开始开始。如果我们只有 128k 大小的扇区,那么我们基本上就是在浪费128k - bootloader_size
空间。
我的怀疑正确吗?或者这样做有其他原因吗?真的很想知道这里的设计决策是什么。
解决方案
因为并非所有 STM32F40x/41x 器件都具有此表中描述的全部 1 MB 闪存。有些,如STM32F410C8,只有 64 KB ——也就是说,只有前四个 16 KB 扇区。在内存开始时减少扇区大小允许这些设备仍然有多个扇区可供使用,而不会导致较大设备上的扇区数量过多。它还使所有设备上的一些小扇区可用于EEPROM 仿真等应用程序,这需要分配两个不同的闪存扇区以供其专用。
推荐阅读
- php - PHP密码验证无法验证
- php - SQLSTATE [42S02]:未找到基表或视图:1146 表“My_database_Name.posts”不存在
- react-styleguidist - React-styleguardist - 静态资产?
- daml - 如何在“确保”子句中评估两个条件中的任何一个?
- algorithm - 设计像 TinyURL 这样的 URL 缩短服务
- css - 星号/身体颜色的特异性/继承?
- daml - 如何在 DAML 中将 Party 类型转换为 Text 或反之亦然?
- javascript - @change 方法正在获取选择框的先前选定值
- .net-core - 两个同名组件 - 定义优先级
- javascript - 如何隐藏类名动态变化的div元素?