嵌入式系统和串行闪存磨损问题

use*_*379 5 embedded

我正在为我的嵌入式应用程序使用串行NOR闪存(基于SPI),我还必须在其上实现文件系统.这使得我的NOR闪存更容易出现频繁的擦除和写入周期,其中具有磨损等级算法.我想问一些关于同样的问题:

首先,是否有可能为Nor flash实现磨损等级算法,如果是,那么为什么大多数时候我找到NAND闪存而非NOR闪存的解决方案?

其次,基于串行SPI的低成本NAND闪存可用,如果是,那么请分享相同的部件号.

第三,实施我们自己的磨损等级算法有多难?

第四,我也读过/听说工业级NOR闪存具有更高的擦除/写入周期(以百万计!!),这种理解是否正确?如果是,那么请让我知道这样的SPI NOR闪存的细节,这也可能导致避免实施磨损等级算法,如果不完全那么因为我打算实施我自己的磨损等级算法,它可能会给我一点点在某些区域可以轻松实现磨损等级算法.

所有这些点的限制是成本,我希望对这些问题采用低成本解决方案.

提前致谢

问候

Aditya Mittal

(mittal.aditya12@gmail.com)

mar*_*rko 5

实施耗损均衡算法并非易事,但也不是不可能的:

  1. 您的耗损均衡驱动程序需要知道文件系统何时不再使用磁盘块(这在现代SSD上称为TRIM支持).实际上,这意味着您需要修改其上方的块驱动程序API和归档系统,或让磨损均衡驱动程序了解归档系统的可用空间映射.第二个选项很容易用于FAT,但可能已获得专利.

  2. 您需要至少保留一个擦除单元+几个分配单元,以允许擦除单元回收.保留更多块将提高性能

  3. 您需要后台线程来执行异步擦除单元回收

  4. 您需要再次测试,测试测试.当我上次构建其中一个时,我们建立了两个闪存的模拟并在其上运行真实的文件系统,并对系统进行了数周的折磨.

  5. 有很多很多专利涉及磨损均衡方面.出于同样的原因,Linux内核中至少有两个损耗均衡层.

鉴于所有这些,许可第三方库可能具有成本效益,


Mar*_*mes 0

Atmel/Adesto 等公司生产了数十亿个小型串行闪存芯片。他们还有大量在线文档。我怀疑串行闪存甲虫由于成本原因而没有实现磨损均衡——它们通常使用的设备非常便宜,而且使用寿命往往有限。大容量 4 线 NAND 闪存(例如 SD 卡)预计会出现更频繁和更长时间的使用,它们具有复杂的(相对)内置控制器,可以以透明的方式实现磨损均衡。

我不再使用单针接口串行闪存,部分原因是磨损问题。一张 SD 卡对于我来说足够便宜,而且即使损坏了,现场技术人员(甚至客户)也可以轻松更换它。

实施磨损均衡算法。太昂贵了,无论是在开发时间方面(特别是测试设备是否必须支持在电源故障等情况下不得损坏的文件系统),还是在CPU/RAM方面都让我费心。

如果您的产品对成本非常敏感,以至于必须使用串行NOR闪存,我建议您忽略这个问题。