S3C2440 NandFlash 讀寫操作

2021-06-07 19:51:30 字數 1097 閱讀 2328

nand flash 就是乙個flash快閃儲存器 ,儲存資料

而s3c2440a 又為nand flash 配有相應的控制暫存器,可以直接將flash 接上處理器

整個**:

整個資料中,關鍵是要看s3c2440a的晶元手冊,和nand flash 的手冊,我的nand flash是k9f2g08u0b ,整個flash的

commad sets ,其實整個資料的讀取,還是對其他裝置程式設計一樣,主要是開始對什麼是nand flash根本不知道,還是以為nanaflash 和ram是不是差不多,但是到現在才感覺到,nandflash就是乙個i資料儲存裝置,而且塊裝置,是用來做為資料儲存用的,只是s3c2440a裡面整合了對應nandflash的介面晶元,這樣就可以直接就將這外部儲存裝置直接硬連線到匯流排上。

既然和一般的通過介面晶元控制的裝置一樣,那麼控制方式也是一樣,軟體控制硬體,軟體改變控制器中暫存器的資料,修改電平,控制硬體工作。

在看nandflash的過程中,主要是command sets需要知道,然後就是nandflash ic 的資料手冊,確實自己看得太少這種介紹硬體ic的手冊,根本不懂怎麼去看,憑著學數位電路的記憶,靠著感覺來把整個資料手冊給看了,而且還是英語,看起來的速度還是慢。

要點:1,位址空間,我這是共有2048個block,每個block有64個page ,每頁 是 2k+64bytes ,2k是主資料儲存區域,儲存使用者資料,而64所在的spare區域,前4bytes和2bytes是用來儲存mecc和secc的,64-4-2=58 bytes的空間,其實是可以用來自定義使用的 ,在定義模組為壞塊的時候,就可以在這個區域裡,加上乙個標誌,標識其為壞塊。

2,位址,在讀取和寫入資料的時候,因為儲存空間的原因,所以位址需要29位,而這29是分5次來傳輸的,column值頁內位址,而row值是頁位址;還有就是,因為每頁的位址空間是2k+64,所以位址長度是12位,而不是11位。

3,鎖ecc和解鎖ecc,其是要鎖的目標是nandflash控制中的ecc糾錯碼產生器,而不是nandflash中的ecc儲存區;鎖,就是硬體計算ecc的功能關閉

4,往nandflash寫入資料前,需要將該block erase ,然後在寫入資料,否則,寫零可以直接寫入,但是想在對應的bit上面寫1的話,就就是不可能的。

求教 s3c2440問題

趙老師您好,我把您的程式新增到我的程式中去了,下面是主要 1 main函式 int main void a a b rgpbdat liushui delay 20 liushui liushui 0xffe 2 pwm初始化 void pwm init void 3 定時器中斷 static vo...

s3c2440系統時鐘

1 flck hclk和pclk的關係 一般來說,mcu的主時鐘源主要是外部晶振或外部時鐘,而用的最多的是外部晶振。在正確情況下,系統內所使用的時鐘都是外部時鐘源經過一定的處理得到的。由於外部時鐘源的頻率一般不能滿足系統所需要的高頻條件,所以往往需要pll 鎖相環 進行倍頻處理。在s3c2440中,...

s3c2440儲存控制

nandflash和norflash都是flash的一種,都是散存,都是磁碟儲存介子,但是nandflash一般比較大,而norflash都比較小,並且norflash比較貴,並且norflash寫的速度比較慢,但讀的速度比較快 而nandflash讀的速度比較慢,寫的速度比較快。nor flash...