“寫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文章
16332瀏覽量
177812 -
Nand flash
+關注
關注
6文章
241瀏覽量
39802 -
emmc
+關注
關注
7文章
203瀏覽量
52724
原文標題:寫flash,要不要加個判斷?
文章出處:【微信號:玩點嵌入式,微信公眾號:玩點嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論