我正在为我的嵌入式应用程序使用串行NOR闪存(基于SPI),我还必须在其上实现文件系统。这使得我的NOR闪存更容易出现频繁的擦除和写入周期,其中具有磨损等级算法。我想问几个关于同样的问题:
首先,是否可以为Nor flash实现磨损等级算法,如果是,那么为什么我大部分时间都会找到NAND闪存而非NOR闪存的解决方案?
其次,基于串行SPI的低成本NAND闪存可用,如果是,请分享相同的部件号。
第三,实施我们自己的磨损等级算法有多难?
第四,我也读过/听说工业级NOR闪存具有更高的擦除/写入周期(以百万计!!),这种理解是否正确?如果是,那么请让我知道这样的SPI NOR闪存的细节,这也可能导致避免磨损等级算法的实施,如果不完全那么因为我打算实施我自己的磨损等级算法,它可能会给我一点点在某些区域可以轻松实现磨损等级算法。
对所有这些点的约束是成本,我希望对这些问题采用低成本解决方案。
先谢谢
此致
Aditya Mittal
(mittal.aditya12@gmail.com)
答案 0 :(得分:5)
实施耗损均衡算法并非易事,但也不是不可能的:
您的耗损均衡驱动程序需要知道文件系统何时不再使用磁盘块(这在现代SSD上称为TRIM支持)。实际上,这意味着您需要修改其上方的块驱动程序API和归档系统,或让磨损均衡驱动程序了解归档系统的可用空间映射。第二个选项很容易用于FAT,但可能已获得专利。
您需要至少保留一个擦除单元+几个分配单元,以便擦除单元回收。保留更多块将提高性能
您需要后台线程来执行异步擦除单元回收
您需要再次测试测试。当我上次构建其中一个时,我们建立了两个闪存的模拟并在其上运行真实的文件系统,并对系统进行了数周的折磨。
有许多专利涉及磨损平衡方面。出于同样的原因,Linux内核中至少有两个损耗均衡层。
鉴于所有这些,许可第三方库可能具有成本效益,
答案 1 :(得分:0)
Atmel / Adesto等将这些小型串行闪存芯片制作成十亿。他们还有大量的在线文档。我怀疑串行闪光甲虫由于成本原因而没有实现损耗均衡 - 它们通常使用的设备非常便宜并且无论如何往往具有有限的寿命。预计会出现更长和更长时间使用的大容量4线NAND闪存(例如SD卡)具有复杂的(相对)内置控制器,可以透明方式实现损耗均衡。
我不再使用单引脚接口串行闪存,部分原因是由于磨损问题。 SD卡很便宜,我可以使用,即使有人破坏,现场技术人员(甚至是客户)也可以轻松地将其换掉。
实施磨损平衡算法。在开发时间方面太昂贵了(特别是测试设备是否必须支持一个不能在电源故障时损坏的文件系统等),以及CPU / RAM让我烦恼。
如果您的产品对成本非常敏感,您必须使用串行NOR闪存,我建议您忽略该问题。