基于VxWorks的NAND FLASH驅動程序設計
0 引 言
目前,隨著電子技術的不斷發(fā)展,計算機技術也得到飛速的發(fā)展,產生了很多新技術。但就計算機的基本結構來說,還是基本采用了馮?諾依曼結構。然而馮?諾依曼結構的一個中心點就是存儲一控制,所以存儲器在計算機系統(tǒng)中的作用是非常重要的。嵌入式計算機作為計算機中的一個類別,對執(zhí)行速度和系統(tǒng)可靠性都有較強的要求,這也決定了嵌入式系統(tǒng)不僅要有實時性很強的操作系統(tǒng),同時也需要一種安全、快速的存儲設備。同時,嵌入式系統(tǒng)經常會涉及到海量數(shù)據(jù)的存儲,這就要求存儲設備必須具有可靠性高,功耗低,容量大,掉電數(shù)據(jù)不丟失等特點,而NAND FLASH芯片正好具有這些優(yōu)點。
VxWorks是嵌入式領域內公認的最有特色的高性能實時操作系統(tǒng)之一。它以其良好的可靠性和卓越的實時性,被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛(wèi)星通信、軍事演習、彈道制導、飛機導航等。
目前,在VxWorks實現(xiàn)上,涉及文件系統(tǒng)的文章不少,但一般都是針對容量較小,操作相對簡單的NORFLASH實現(xiàn)的。本文討論了如何在以AMCC公司的Power PC芯片PPC440epx為核心的嵌入式平臺上,利用三星公司的大容量NAND FLASH實現(xiàn)文件系統(tǒng)的具體辦法。
1 三星NAND FLASH芯片K9F2G08QOM
K9F2G08QOM芯片的容量為256 M×8 b=2 Gb的數(shù)據(jù)區(qū),再加上64 Mb的備用區(qū)。一塊這種芯片被分為2 048個塊,每個塊又分為64頁,每頁由2 KB的數(shù)據(jù)區(qū)加上64 B的備用區(qū)組成。如圖1所示,列地址為12 b(A11~A0)。當A12為0時,A10~A0確定對每頁中2 KP;數(shù)據(jù)的訪問;當A12為1時,訪問的是64 B的備用區(qū)。由于NANDFLASH芯片在出廠時就可能出現(xiàn)壞塊(塊中的某個或多個bit不能有效的進行讀寫),為了將其標注出來,三星公司保證每個壞塊的第一頁和第二頁備用區(qū)第一個byte的數(shù)據(jù)沒有被初始化為0xFF。設計人員要確保在對該芯片進行擦除之前,先將這個信息保留起來(建一個壞塊表)。行地址為17 b(A28~A12)。它確定了對2 048塊×64頁=128 K個頁中的某一頁進行訪問。為了簡化NAND FLASH芯片的管腳,其地址和數(shù)據(jù)信息共享8個I/O管腳,因此,其29 B的地址信息被設計為5個周期進行傳輸。具體操作如表1所示。
注:起始地址是列地址;L表示必須置為低電平
對NAND FLASH的操作流程比較簡單,即在第一個周期里送操作相關的命令字,然后送地址,以及相應的數(shù)據(jù),最后送確認字。需要說明的是,由于地址、命令和數(shù)據(jù)都共用8個I/O管腳來進行傳輸,因此在硬件上必須要有專用的管腳來區(qū)分傳輸類型(在傳輸命令的時候,命令鎖存使能信號CLE有效;在傳輸?shù)刂返臅r候,地址鎖存使能信號ALE有效)。具體的命令字、時序和操作流程在K9F2G08Q0M的數(shù)據(jù)手冊上有較詳細的描述,在此不一一詳述。
評論