大量的读/写会使闪存本身恶化吗?
Posted
技术标签:
【中文标题】大量的读/写会使闪存本身恶化吗?【英文标题】:Can a high number of read/write deteriorate the flash itself? 【发布时间】:2018-02-09 10:49:58 【问题描述】:在 STM32/ESP/ARM 等嵌入式微控制器上,一般情况下外部闪存上的高 I/O 是否存在劣化问题?
我说的是著名的 4Mb/8Mb/16Mb QSPI 闪存,通常代码也驻留于此。
例如,假设每 30 秒我要写一个 int 并且我整天都这样做,flash 迟早会死吗?
在这种情况下,能够承受高 IO 的嵌入式系统的最佳硬件是什么?有哪些解决方法?
【问题讨论】:
只需阅读设备上的规格。简短的回答是的,你会磨损它。几天或几周或几个月?必须阅读规格... 解决方法是使用 ram,它不会像那样磨损,在断电之前将状态保存到闪存。您的系统设计使得您有足够的备用电源(大容量电容、电池等)在您检测到设备断电以保存到闪存/eeprom/任何东西后生存。 另一种选择就是电池供电,就像我们的 PC 使用的那样。 您必须小心从外部 spi 闪存中运行代码(甚至不确定您是如何做到的,注意 arm 是核心/IP 而不是微控制器)您可能会遇到读取干扰问题。单片机中的内存没有这些问题(否则产品会出现故障并迅速从产品卡中删除)。 很简单,一个二极管和一个电容就可以了。上限是您的备用电源,二极管保护该电源不流向电源,因此它允许电流进入。您将感应线放在二极管的电源侧(将其连接到 gpio 引脚),当它去时盖帽使零件保持活动状态,但是 gpio 引脚会改变状态,中断所有这些设计,因此您知道最坏情况下的闪存写入时间,并有足够的电容来保持较长的加裕量。还有更复杂的方法。 【参考方案1】:是的,正如评论者所评论的那样,它最终会失败。在数据表中查找通常称为“耐力”的规范。常见的片上 NAND 闪存耐久性限制范围从 10,000 次写入到 100,000 次写入,有时甚至更高,但唯一重要的数字是特定部件数据表中的数字。一旦了解了耐用性,您就可以设计出一种根据写入大小、频率、可能的压缩、RAM 缓存等来预测合理寿命的设计。
【讨论】:
不要回答明显跑题的问题。这将禁止 roomba 并需要手动删除。投票关闭!【参考方案2】:例如,假设每 30 秒我要写一个 int 并且我这样做 > 整天,flash 迟早会死吗?
在数据表中查找写入周期数,然后计算。假设您的零件可以承受 1000000 次写入周期,那么每 30 秒执行一次写入将在 3000 万秒内开始磨损。一年大约是 3150 万秒...
在这种情况下,能够>承受高 IO 的嵌入式系统的最佳硬件是什么?
一些FRAM (Ferroelectric RAM) 最多可以支持1012 个读/写周期。即使你每秒都在访问它,它也会持续 31689 年。请注意,读取也很重要,但这不会成为问题,除非您的设备断电并且必须每秒启动一次。
有什么解决方法?
磨损均衡,这就是 SD 卡和 SSD 驱动器中的控制器所做的。但是你需要一个不成比例的大闪光灯才能为几个计数器做到这一点。
一些微控制器具有少量备用 RAM,可以通过单独的 Vbat 引脚使用电池或超级电容器供电。不要忘记每隔几年更换一次电池。不过,以电池和插座的价格,你会得到一个 FRAM。
【讨论】:
不要回答明显跑题的问题。这将禁止 roomba 并需要手动删除。投票关闭!以上是关于大量的读/写会使闪存本身恶化吗?的主要内容,如果未能解决你的问题,请参考以下文章