nandflash操作詳解

2022-08-10 06:09:13 字數 1826 閱讀 8386

1.nandflash就是嵌入式系統的硬碟

2.分類

(1)mlc:儲存單元格儲存兩位,慢,偏移,壽命短,容量大

(2)slc:儲存一位。快,壽命長,容量小,昂貴

3訪問;

(1)獨立編址,有專用的控制器,控制器裡有相應的暫存器,先送位址,然後命令,最後資料

(2)位址組成:行位址(頁編號),列位址(在頁中的偏移),乙個nand可以有很多塊,每一塊可以很多頁,每一頁的兩個部分可以不同規格

(3)訊號引腳:

4.初始化nand控制器,(搜尋關鍵字operation)

(1)初始化nfconf,配置三個重要的與hclk有關的時間引數

(2)初始化ngcont,一開始要disable chip select 以及使能控制器

(3)復位:選中nandflash,清除rb標誌,傳送0xff命令,等待rb訊號,取消選中rb訊號

5.按頁讀

(1)選中nandflash

(2)清除rb標誌

(3)寫入0x00命令

(4)傳送列位址,兩次(但是由於是頁讀的方式,所以列位址,即頁中的偏移量就是0)

(5)傳送頁編號,即行位址,分三次完成

(6)傳送0x30命令

(7)等待rb訊號變為ready

(8)讀出資料,每次都取出資料暫存器的值,他會自動更新自己的值

(9)取消選中nandflash

6.修改之前的**拷貝啟動**(之前只從iram複製到記憶體)

(1)時鐘初始化有問題,錯把upll當mpll

(2)彙編和c語言的引數傳遞,不超過4個的時候,直接用r0--r3傳遞,且順序和從函式的形參一致

(3)注意儲存lr,否則連續兩次跳轉,會破壞lr,導致在執行完複製函式以後,不能返回到應執行的初始化後續**部分

(4)注意在呼叫c函式之前進行棧的初始化

7.拷貝函式的三個引數,頁的起始位址r0,(ulong,但是由於是頁讀方式,所以要去掉低11位,低11位是列位址,這裡我們要去頁編號,即行位址),記憶體起始位址r1(目標起始位址,uchar*),資料大小r3,每一頁對應2048個位元組(2k,視具體nandflash而言,每乙個迴圈,大小減小2048)

8.一旦要去讀取(等待)rb訊號,之前就要對其進行清除;

一旦有選中操作,在結束之後要取消選中。

9.寫入之前要擦除,引數是要擦除的頁位址,擦除的是指定的頁所在的塊:

(1)選中nandflash

(2)清除rb標誌

(3)寫入0x60命令

(4)傳送頁編號,即行位址,分三次完成

(5)傳送0xd0命令

(6)等待rb訊號變為ready

(7)傳送命令0x70

(8)讀取擦出結果

(9)取消選中nandflash

(10)返回擦除結果

10.按頁寫

(1)選中nandflash

(2)清除rb標誌

(3)寫入0x80命令

(4)傳送列位址,兩次(但是由於是頁讀的方式,所以列位址,即頁中的偏移量就是0)

(5)傳送頁編號,即行位址,分三次完成

(6)寫入資料,用迴圈

(7)傳送0x10命令

(8)等待rb訊號變為ready

(9)傳送命令0x70,

(10)讀取寫入結果,從資料暫存器讀

(11)取消選中nandflash

(12)返回寫入結果

nand flash 讀寫操作

1 頁讀 如下所示,先輸入讀命令 0x00 然後輸入5個位址,分為2個列位址 頁內位址 和3個行位址 頁和block位址 再輸入讀確認位址0x30,nand硬體會自動從指定的頁的主儲存區讀資料到頁快取 頁暫存器 此時r b 為低電平,當內部讀完成後,r b 恢復為高電平,此時便可以通過nfc的資料暫...

nandflash詳細操作

下面介紹讀操作,讀操作是以頁為單位進行的。如果在讀取資料的過程中不進行ecc校驗判斷,則讀操作比較簡單,在寫入讀命令的兩個週期之間寫入要讀取的頁位址,然後讀取資料即可。如果為了更準確地讀取資料,則在讀取完資料之後還要進行ecc校驗判斷,以確定所讀取的資料是否正確。在上文中我們已經介紹過,nandfl...

nand flash操作原理

1.nand flash原理圖 訊號線只有ldata 0 7 既傳送命令,傳送位址,還能讀寫資料。nand flash引腳定義 rnb 狀態訊號 nfce 片選訊號 cle 為高表示當前 ldata上的資料是命令 nfwe 寫 nfre 讀 2.辨別nand flash 每個nand flash裡面...