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裡面...