日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nand flash 扇区的管理以及初始化

發布時間:2025/4/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nand flash 扇区的管理以及初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)首先需要了解NAND FLASH的結構。如圖:

?????

?????? 以鎂光MT29F4G08BxB Nand Flash為例,這款Flash(如上圖)以4個扇區(sector)組成1個頁(page),64個頁(page)組成1個塊(block),4096個塊(block)構成整個Flash存儲器;由于每個扇區的容量是512 字節(bytes),整個Flash容量為4224M Bit(相當于528M字節),去掉備用區域用于存放ECC數據校驗16M(虛線部分),就是這個片子的容量512M字節。其他型號的Flash也是同樣由扇區組成頁、由頁組成塊、塊組成整個存儲設備,只是扇區、頁、塊的數量多少有區別而已。

????? 在Flash的生產制造過程中,由于生產工藝的缺陷,很容易在Flash中產生不能使用的壞區域,如果在U盤中要使用這樣的Flash,就必須使用所謂的“量產工具”;U盤量產工具其實就是一種集壞區域掃描和Flash管理系統裝載于一身的工具。常規U盤主控的掃描是以塊為單位,掃描即往每一個塊里寫入數據,然后將讀出的數據與寫入的數據比較,如果數據有誤則把該塊標為“壞塊”。掃描完成后就是將Flash管理系統裝載到Flash里面,Flash管理系統就會利用掃描產生的壞塊表對整個Flash進行讀寫管理,這樣就完成了整個量產動作,U盤也就可以正常使用了。所以U盤顯示的容量與實際所用的Flash容量差異來源于不能存儲信息的壞塊和Flash管理系統的占用塊。壞塊越多,做出的U盤容量越低;而Flash管理系統占用的塊是沒有辦法避免,就像我們的電腦安裝操作系統要占用硬盤空間一樣。

????? 當然這里還涉及到一個ECC糾錯能力的問題,假設對這個Flash進行掃描的定義的ECC糾錯能力為1bit,只有數據出現超過1bit錯誤的塊才會被標記為壞塊。這個時候需要區分塊糾錯和扇區糾錯的差別,假設任何一個塊里有任何一個扇區(512bytes)存在超出1bit的錯誤,常規主控在掃描的時候就會判斷整個塊為壞區域,這樣將損失整個塊128Kbytes的容量;但是當使用扇區糾錯的主控時,同樣1bit ECC糾錯,他會直接去判斷這個塊里哪些是超出1bit錯誤的扇區,從而將其剔除,損失的只是每個真正有錯誤扇區的512bytes容量,從而保留了其余沒有錯誤的扇區,這樣Flash的利用率可以得到極大的提高。

(2)?初始化用的命令序列

(3)NAND的驅動程序

??????? 所謂Nand flash的驅動也就是對Nand flash controller編程(發送命令/寫寄存器都是同樣的意思)。驅動程序的結構大同小異,區別在于每家芯片的Nand flash controller的設計不同,所以對controller的編程的部分是不同的。對于硬件ecc來說,基本的驅動包括下述功能:擦除block、讀寫page、ecc判斷、壞塊標識、讀取Nand狀態、等待Nand、復位Nand、初始化等;初始化中要開辟驅動程序需要的memory,設置工作模式(page大小、block大小、時鐘頻率、ecc模式等),和對函數指針賦值。

驅動是分層的,以上是最底層的chip的驅動,是為了上層MTD服務的。以讀page為例:
chip->cmdfunc(MTD, NAND_CMD_READ0, 0x00, page);//先發讀命令,由controller將讀命令發給nand flash
chip->ecc.read_page(MTD, chip, buf);//然后讀取數據?

總結

以上是生活随笔為你收集整理的nand flash 扇区的管理以及初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。