“写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擦除次数达到上限。
审核编辑:刘清
- 控制器
+关注
关注
112文章
15798浏览量
174774 - Nand flash
+关注
关注
6文章
239浏览量
39612 - emmc
+关注
关注
7文章
193浏览量
52269
原文标题:写flash,要不要加个判断?
文章出处:【微信号:玩点嵌入式,微信公众号:玩点嵌入式】欢迎添加关注!文章转载请注明出处。
发布评论请先登录
相关推荐
评论