写flash,要不要加个判断?

嵌入式Linux

共 1261字,需浏览 3分钟

 ·

2022-01-14 16:01

相关文章


既生Flash,又何生EEPROM?

存储器Flash页、扇区、块的区别


这是我一个知识星球朋友的提问



刚开始我没有认真去思考这个问题,之后我仔细查了下资料,里面的内容还挺多。


先看看EMMC的结构


EMMC 是在nand flash的基础上增加了一个控制器,cpu和emmc交流实际上是和它的控制器进行交流。相当于emmc多了一个管家。



NAND FLASH的特点


1)  初始存储为1

2)写0只要操作一个page

3)写1需要操作整个block,1个block包含多个page



---



假装解释下为什么写 FLASH前,要先判断里面的内容



从读写速度上解释



上面是我从一个EMMC的规格书上截图出来的资料,EMMC的读写速度是不同的,不同的读写速度肯定是存在不同的读写时序,既然读写时序不同,那当然应该让代码越快越好。


所以,从这点上看,先读判断数值是应该的。



EMMC 可以无限次读写吗?


刚开始在微信群里面讨论的时候,得到的信息是,EMMC可以无限次读,但是不能无限次写。


因为写会意味着需要对存储区进行擦擦操作,这个我是可以理解的。


但是实际上是怎样的,我还是一知半解


然后,得到一个小姐姐指导之后,大概的理解是这样的。


EMMC完全写满后擦除算一次,普通的EMMC可以擦除3000次,所以容量*3000 就是EMMC可以写入的内容大小。「计算寿命这点我还是持怀疑态度




后面查资料了解到,不同的flash颗粒,它的擦除次数和速度是不同的,这就是不能无限写的关键原因。




我们平时使用的EMMC是TLC种类,这样的EMMC一个cell有3个bit位,可以表示 2^3 = 8中电平状态。


状态越少,需要表示的电平就约不精细,计算也就会越快,当然了,价格越贵,体积会越大,这样反而不利于消费电子。



如上图,SLC的速度很快,只需要两个电压级别。

TLC的速度会比较慢,需要8个电压级别来表示。


为什么EMMC的规格书上面都不写上最大擦除或者写入的次数?「也就是emmc的寿命」


到目前我也没有得到特别准确的答案,有了解的同学可以在评论区回答。我猜测是,因为EMMC有控制器,如果你不断的擦除一个位置,即使的超过最大次数,但是因为EMMC的控制器存在,它可以改变实际存储的EMMC地址,让你做不到在同一个区域不断的擦除。再加上容量的不确定,就不好确定EMMC的寿命了。


特斯拉召回是怎么回事?



我猜测,可能这个系统上的EMMC配置很小,可能就真的存在某个程序在不断的写入,导致EMMC擦除次数达到上限。


参考:

https://blog.csdn.net/weixin_42151788/article/details/114577735

https://szlin.me/2017/08/23/kernel_seccomp/


浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报