關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于VxWorks的NAND FLASH驅(qū)動程序設(shè)計

基于VxWorks的NAND FLASH驅(qū)動程序設(shè)計

作者: 時間:2009-08-25 來源:網(wǎng)絡(luò) 收藏

2 PPC440epx的 接口
AMCC公司的PPC440epx芯片是一款性能指標(biāo)較高的嵌入式CPU芯片,其主頻可以達(dá)到667 MHz,擁有DDR2接口,可支持千兆以太網(wǎng),USB 2.0接口,支持浮點(diǎn)運(yùn)算,同時還支持 芯片。
PPC440epx使用一個 Controller作為外部NAND FLASH與其外部總線通信的接口電路,該控制器最多可以支持4個NAND FLASH芯片,每個芯片的容量可以為4~256 MB,每頁的大小可以為512 B+16 B或者2 KB+64 B。NDFC(NANDFLASH Controller)的存在使得對NAND FLASH的操作變的非常簡單。根據(jù)前面對K9F2G08Q0M的介紹可知,對NAND FLASH的操作需要在硬件上產(chǎn)生ALE,CLE信號來區(qū)分傳輸類型。NDFC給程序設(shè)計人員提供兩種實(shí)現(xiàn)時序的方法:硬件實(shí)現(xiàn),軟件實(shí)現(xiàn)。如果是前者, NDFC提供了幾個寄存器:命令寄存器、地址寄存器、數(shù)據(jù)寄存器、配置寄存器和狀態(tài)寄存器。通過對這幾個寄存器執(zhí)行相應(yīng)的讀/寫操作就可以產(chǎn)生相應(yīng)的時序。例如,如果需要對NAND FLASH寫命令字80H,則只需將80H寫人命令寄存器即可。NDFC自動將80H送到I/O7~I(xiàn)/O0上,同時置CLE為有效狀態(tài)。而軟件實(shí)現(xiàn)方法是根據(jù)K9F2G08Q0M的時序要求,通過對硬件控制寄存器中相應(yīng)的bit寫1或者0,使得對應(yīng)的控制信號為高電平或者低電平。設(shè)計人員可以根據(jù)自己的情況,選擇實(shí)現(xiàn)方法。這里推薦采用硬件實(shí)現(xiàn)的方法。不過,在有問題時,可采用軟件實(shí)現(xiàn)的方法來進(jìn)行調(diào)試。

3 TrueFFS簡介
TureFFS(Ture Flash File System)是M-Systems公司為操作系統(tǒng)定制的實(shí)現(xiàn)FLASH塊設(shè)備的接口。通過使用TFFS,應(yīng)用程序?qū)LASH的讀寫就像對擁有MS-DOS文件系統(tǒng)的磁盤設(shè)備操作一樣。對于上層設(shè)計人員,TFFS屏蔽了底層多種多樣FLASH設(shè)備的具體細(xì)節(jié)。同時,由于FLASH存儲芯片自身的一些特性(如擦除、編程次數(shù)有限并且操作時間較長;容易進(jìn)入過度編程狀態(tài)等),TFFS采用虛擬塊、損耗均衡、碎片回收、錯誤恢復(fù)等機(jī)制來提高 FLASH的使用壽命,確保數(shù)據(jù)完整,優(yōu)化性能。

4 TrueFFS的實(shí)現(xiàn)
4.1 TrueFFS的基本結(jié)構(gòu)
TrueFFS由1個核心層和3個功能層組成,它們是翻譯層(Translation Layer)、MTD(Memory Tech-nology Drivers Layer)層和Socket層,其結(jié)構(gòu)框圖如圖2所示。

交互功能。它包含了控制FLASH映射到塊、wear-lev-eling、碎片回收和數(shù)據(jù)完整性所需的智能化處理功能。目前,有三種不同的翻譯層模塊可供選擇。選擇哪一種層需要看所用的FLASH介質(zhì)是采用NOR-based,還是NAND-based,或者SSFDC-based技術(shù)而定。
(2)MTD(Memory Technology Driver)層實(shí)現(xiàn)具體的FLASH芯片底層程序設(shè)計,包括讀、寫、擦、ID識別、映射等功能,以及一些與FLASH芯片相關(guān)的參數(shù)設(shè)置。
(3)Socket層提供了TrueFFS和硬件之間的接口服務(wù),負(fù)責(zé)電源管理、檢測設(shè)備插拔、硬件寫保護(hù)、窗口管理和向系統(tǒng)注冊Socket等;
(4)核心層將其他3層有機(jī)結(jié)合起來,另外還處理全局問題,如信號量、碎片回收、計時器和其他系統(tǒng)資源等。
中,由于翻譯層和核心層以二進(jìn)制形式提供給設(shè)計人員的,因此實(shí)現(xiàn)TFFS的主要工作集中在對MTD層和Socket層的設(shè)計上。
4.2 Socket層的實(shí)現(xiàn)
如果中包含TFFS,在系統(tǒng)啟動后,先完成內(nèi)核的初始化,之后開始進(jìn)行I/O的初始化操作。系統(tǒng)調(diào)用UsrRoot()函數(shù),該函數(shù)再調(diào)用 tffsDrv()函數(shù),這樣就產(chǎn)生如圖3所示的調(diào)用流程。調(diào)用這些函數(shù)的目的之一就是注冊socket函數(shù)。最后的注冊操作都是由 xxxRegister()函數(shù)完成(這個函數(shù)和sysTff-sInit()函數(shù)的定義都在sysTffs.c中)的。該函數(shù)是通過更新 FLSocket結(jié)構(gòu)體來完成注冊操作的。該結(jié)構(gòu)體的定義以及相關(guān)細(xì)節(jié)可以通過閱讀VxWorks的幫助文件獲得,在此不詳述。

sysTffs.C文件的編寫,可以參考其他的BSP來完成。config目錄下的任何一個BSP都有該文件,設(shè)計人員可以復(fù)制其中一個到自己的BSP目錄下。例如:復(fù)制wrPpmc440gp目錄下的sysTffs.c文件,再根據(jù)自己的硬件電路修改FLASH BASE ADRS以及FLASHSIZE的宏定義,同時添加宏定義:#define INCLUDE_MTD_NAND。其他地方一般不需要改動。



關(guān)鍵詞: VxWorks FLASH NAND 驅(qū)動

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉