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

Embedded 嵌入式系统和串行闪存磨损问题,embedded,Embedded,我正在为我的嵌入式应用程序使用串行NOR闪存(基于SPI),并且我必须在其上实现一个文件系统。这使得我的NOR闪存更容易频繁地进行擦除和写入循环,而在这种情况下,需要使用磨损级别算法。我想就同样的问题问几个问题: 首先,是否有可能为Nor闪存实现磨损级算法,如果有,那么为什么大多数时候我都能找到NAND闪存和not Nor闪存的解决方案 第二,是否有基于串行SPI的低成本NAND闪存,如果有,请共享相同的零件号 第三,实现我们自己的磨损级别算法有多困难 第四,我还听说工业级NOR闪存具有更高的擦

我正在为我的嵌入式应用程序使用串行NOR闪存(基于SPI),并且我必须在其上实现一个文件系统。这使得我的NOR闪存更容易频繁地进行擦除和写入循环,而在这种情况下,需要使用磨损级别算法。我想就同样的问题问几个问题:

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

第二,是否有基于串行SPI的低成本NAND闪存,如果有,请共享相同的零件号

第三,实现我们自己的磨损级别算法有多困难

第四,我还听说工业级NOR闪存具有更高的擦除/写入周期(以百万计),这种理解正确吗?如果是,那么请告诉我此类SPI NOR Flash的详细信息,这也可能导致避免实现磨损级别算法,如果不是完全的话,因为我计划实现自己的磨损级别算法,这可能会给我在某些领域实现磨损级别算法提供一点空间和便利

所有这些问题的制约因素是成本,我希望以低成本解决这些问题

提前谢谢

问候

米塔尔再见


(米塔尔。aditya12@gmail.com)Atmel/Adesto等公司将这些小型串行闪存芯片的产量提高了10亿美元。他们也有大量的在线文档。我怀疑串行闪存甲虫由于成本原因没有实现磨损均衡——它们通常使用的设备非常便宜,而且寿命有限。大容量4线NAND闪存(如SD卡)具有复杂的(相对而言的)内置控制器,可以透明方式实现磨损均衡,预计使用量更大、时间更长

我不再使用单针接口串行闪存,部分原因是磨损问题。SD卡对我来说很便宜,即使有一张坏了,现场技术人员(甚至客户)也可以很容易地把它换掉


实现磨损均衡算法。无论是在开发时间方面(特别是在设备必须支持文件系统且不能在断电等情况下损坏的情况下进行测试),还是在CPU/RAM方面,都太贵了


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

实现磨损均衡算法并非微不足道,但也并非不可能:

  • 您的磨损均衡驱动程序需要知道归档系统何时不再使用磁盘块(这称为现代SSD上的支持)。在实践中,这意味着您需要修改块驱动程序API和上面的归档系统,或者让驱动程序知道归档系统的可用空间图。第二种选择对肥胖者来说很容易,但可能获得了专利

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

  • 您需要一个后台线程来执行异步擦除单元循环

  • 你需要测试,再测试一次。当我上一次构建其中一个时,我们构建了一个flash的模拟,并在上面运行了真正的文件系统,并且折磨了系统好几个星期

  • 有很多很多专利涉及磨损均衡的各个方面。同样,Linux内核中至少有两层


  • 考虑到所有这些,授权第三方库可能是经济高效的,

    +1,特别是对于3)。如果存在任何可能损坏文件系统的bug或场景,那么磨损均衡将带来比它解决的问题更多的问题。@MartinJames噢,是的!;)此外,找到整个事情本身的关键点是非常困难的——除非你在每次写下的时候检查整个文件系统的完整性。模拟需要一段时间才能执行+1成本效益:购买第三方解决方案可能会省钱。实施您自己的低成本解决方案几乎肯定会导致极其昂贵的调试。或者更糟糕的是,在已交付的产品中出现昂贵的故障。是一个更好的网站发布这个问题,因为它不是真正的编程相关。还要注意的是,询问购物建议和这里一样离题。你误解了设备的用途。并不是成本问题导致芯片级产品的磨损趋于平衡,而是它们是芯片级产品。SD卡等封装模块除了存储设备外,还有一个独特的控制器-这增加了磨损均衡,但限制了灵活性并引入了开销。与集成控制器所做的使用假设不匹配的应用程序的性能相对较差。与任何事情一样,通过自己做,你可以更好地控制如何做的细节。芯片和模块都有各自的应用。