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