|
0 引 言
目前,隨著電子技術的不斷發展,計算機技術也得到飛速的發展,產生了很多新技術。但就計算機的基本結構來說,還是基本采用了馮・諾依曼結構。然而馮・nuoyimanjiegoudeyigezhongxindianjiushicunchuyikongzhi,suoyicunchuqizaijisuanjixitongzhongdezuoyongshifeichangzhongyaode。qianrushijisuanjizuoweijisuanjizhongdeyigeleibie,duizhixingsuduhexitongkekaoxingdouyoujiaoqiangdeyaoqiu,zheyejuedingleqianrushixitongbujinyaoyoushishixinghenqiangdecaozuoxitong,tongshiyexuyaoyizhonganquan、快速的存儲設備。同時,嵌入式係統經常會涉及到海量數據的存儲,這就要求存儲設備必須具有可靠性高,功耗低,容量大,掉電數據不丟失等特點,而NADN FLASH芯片正好具有這些優點。
VxWorks是嵌入式領域內公認的最有特色的高性能實時操作係統之一。它以其良好的可靠性和卓越的實時性,被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通信、軍事演習、彈道製導、飛機導航等。
目前,在VxWorks實現上,涉及文件係統的文章不少,但一般都是針對容量較小,操作相對簡單的NORFLASH實現的。本文討論了如何在以AMCC公司的Power PC芯片PPC440epx為核心的嵌入式平台上,利用三星公司的大容量NAND FLASH實現文件係統的具體辦法。
1 三星NAND FLASH芯片K9F2G08QOM
K9F2G08QOM芯片的容量為256 M×8 b="2" Gb的數據區,再加上64 Mb的備用區。一塊這種芯片被分為2 048個塊,每個塊又分為64頁,每頁由2 KB的數據區加上64 B的備用區組成。如圖1所示,列地址為12 b(A11~A0)。當A12為0時,A10~A0確定對每頁中2 KP;數據的訪問;當A12為1時,訪問的是64 B的備用區。由於NANDFLASH芯片在出廠時就可能出現壞塊(塊中的某個或多個bit不能有效的進行讀寫),為了將其標注出來,三星公司保證每個壞塊的第一頁和第二頁備用區第一個byte的數據沒有被初始化為0xFF。設計人員要確保在對該芯片進行擦除之前,先將這個信息保留起來(建一個壞塊表)。行地址為17 b(A28~A12)。它確定了對2 048塊×64頁=128 K個頁中的某一頁進行訪問。為了簡化NAND FLASH芯片的管腳,其地址和數據信息共享8個I/O管腳,因此,其29 B的地址信息被設計為5個周期進行傳輸。具體操作如表1所示。


注:起始地址是列地址;L表示必須置為低電平
對NAND FLASH的de操cao作zuo流liu程cheng比bi較jiao簡jian單dan,即ji在zai第di一yi個ge周zhou期qi裏li送song操cao作zuo相xiang關guan的de命ming令ling字zi,然ran後hou送song地di址zhi,以yi及ji相xiang應ying的de數shu據ju,最zui後hou送song確que認ren字zi。需xu要yao說shuo明ming的de是shi,由you於yu地di址zhi、命令和數據都共用8個I/O管腳來進行傳輸,因此在硬件上必須要有專用的管腳來區分傳輸類型(在傳輸命令的時候,命令鎖存使能信號CLE有效;在傳輸地址的時候,地址鎖存使能信號ALE有效)。具體的命令字、時序和操作流程在K9F2G08Q0M的數據手冊上有較詳細的描述,在此不一一詳述。
2 PPC440epx的NAND FLASH接口
AMCC公司的PPC440epx芯片是一款性能指標較高的嵌入式CPU芯片,其主頻可以達到667 MHz,擁有DDR2接口,可支持千兆以太網,USB 2.0接口,支持浮點運算,同時還支持NAND FLASH芯片。
PPC440epx使用一個NAND FLASH Controller作為外部NAND FLASH與其外部總線通信的接口電路,該控製器最多可以支持4個NAND FLASH芯片,每個芯片的容量可以為4~256 MB,每頁的大小可以為512 B+16 B或者2 KB+64 B。NDFC(NANDFLASH Controller)的存在使得對NAND FLASH的操作變的非常簡單。根據前麵對K9F2G08Q0M的介紹可知,對NAND FLASH的操作需要在硬件上產生ALE,CLE信號來區分傳輸類型。NDFC給程序設計人員提供兩種實現時序的方法:硬件實現,軟件實現。如果是前者, NDFC提供了幾個寄存器:命令寄存器、地址寄存器、數據寄存器、配置寄存器和狀態寄存器。通過對這幾個寄存器執行相應的讀/寫操作就可以產生相應的時序。例如,如果需要對NAND FLASH寫命令字80H,則隻需將80H寫人命令寄存器即可。NDFC自動將80H送到I/O7~I/O0上,同時置CLE為有效狀態。而軟件實現方法是根據K9F2G08Q0M的時序要求,通過對硬件控製寄存器中相應的bit寫1或者0,使shi得de對dui應ying的de控kong製zhi信xin號hao為wei高gao電dian平ping或huo者zhe低di電dian平ping。設she計ji人ren員yuan可ke以yi根gen據ju自zi己ji的de情qing況kuang,選xuan擇ze實shi現xian方fang法fa。這zhe裏li推tui薦jian采cai用yong硬ying件jian實shi現xian的de方fang法fa。不bu過guo,在zai有you問wen題ti時shi,可ke采cai用yong軟ruan件jian實shi現xian的de方fang法fa來lai進jin行xing調tiao試shi。
3 TrueFFS簡介
TureFFS(Ture Flash File System)是M-Systems公司為VxWorks操作係統定製的實現FLASH塊設備的接口。通過使用TFFS,應用程序對FLASH的讀寫就像對擁有MS-DOS文件係統的磁盤設備操作一樣。對於上層設計人員,TFFS屏蔽了底層多種多樣FLASH設備的具體細節。同時,由於FLASH存儲芯片自身的一些特性(如擦除、編程次數有限並且操作時間較長;容易進入過度編程狀態等),TFFS采用虛擬塊、
|