【问题标题】:How to use a file system on a flash chip with 256KB erase sectors如何在具有 256KB 擦除扇区的闪存芯片上使用文件系统
【发布时间】:2018-11-03 16:01:50
【问题描述】:

我被要求帮助一个嵌入式固件项目,他们试图在具有 256KB(千字节)擦除扇区大小的 SPI 闪存芯片 (Cypress S25FL512S) 上安装文件系统。

我过去使用文件系统的经验是,文件系统的块大小高达 4Kbytes,它映射到 512bytes 到 4Kbytes 的擦除扇区

嵌入式控制器是一个小型 NXP 设备,运行频率为 180MHz,具有 512KBytes 的 RAM,因此我什至无法缓存擦除扇区。我注意到该芯片系列确实有具有较小擦除扇区的引脚兼容设备。

我的一般问题是如何挂载块/簇大小小于闪存擦除扇区大小的文件系统?我还没有找到任何解决这个问题的文章。

【问题讨论】:

  • 我同意你提到的:擦除扇区大小对于这个应用程序来说太大了——256K 相当大,4K 是典型的。此外,您的最后一段似乎是倒退的。
  • @JonathonReinhart。我已经编辑了最后一段谢谢。
  • @JonathonReinhart 4k 擦除块大小在大型存储非易失性芯片中并不典型。对于较大的存储设备,它们通常为 128KB 或 256KB。如果它更小(比如在 SD 卡上),那么里面有一个控制器,它在执行转换层并管理物理硬件,同时向接口呈现一个虚拟擦除块。
  • 您找到解决方案了吗?我有同样的问题
  • @ransh 下面接受的答案证实了我的怀疑,即大型擦除扇区无法轻松容纳在小型 MCU 中以用作传统文件系统。我们希望使用闪存芯片记录事件,所以最后我们手工构建了一个简单的日志类型日志记录模块,它简单地硬分配 N 个扇区,将下一个事件条目写入日志末尾,并围绕扇区旋转擦除当前扇区已满时的下一个扇区。然后我们多次复制它以满足我们的需求。不是我最初问题的答案,而是一个足够的解决方法

标签: filesystems embedded


【解决方案1】:

你不能以任何明智的方式做到这一点。您的规范需要修改。

可能的解决方案是:

  • 选择擦除大小较小的闪存/eeprom 电路。
  • 选择具有更多内存和多个段的闪存/eeprom,这样您就可以在对另一个段进行编程时备份一个段中的数据。
  • 添加第二个闪存电路,该电路镜像第一个,一次擦除一个并用另一个的内容覆盖。
  • 选择具有更多 RAM 的 MCU。
  • 在 MCU 闪存中备份闪存(速度非常慢,可能会破坏使用外部闪存开始的目的)。

【讨论】:

  • 谢谢,这是我的恐惧,但我不确定我是否遗漏了一些明显的东西。
  • 文件系统通常由这些类型的 NAND 闪存构成。在您喜欢的搜索引擎中搜索“flash 文件系统”或“flash 翻译层”。 JFFS(和 JFFS2)在 Linux 中很常见。裸机还有其他解决方案。
猜你喜欢
  • 2021-02-12
  • 2022-01-03
  • 2021-10-15
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 2013-12-20
  • 2013-03-20
相关资源
最近更新 更多