<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

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

基于VxWorks的NAND FLASH驅動(dòng)程序設計

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

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

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

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

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

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



關(guān)鍵詞: VxWorks FLASH NAND 驅動(dòng)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>