《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于VxWorks的NAND FLASH驅(qū)動程序設(shè)計
基于VxWorks的NAND FLASH驅(qū)動程序設(shè)計
摘要: 目前,隨著電子技術(shù)的不斷發(fā)展,計算機技術(shù)也得到飛速的發(fā)展,產(chǎn)生了很多新技術(shù)。但就計算機的基本結(jié)構(gòu)來說,還是基本采用了馮·諾依曼結(jié)構(gòu)。然而馮·諾依曼結(jié)構(gòu)的一個中心點就是存儲一控制,所以存儲器在計算機系統(tǒng)中的作用是非常重要的。
Abstract:
Key words :

0 引 言

目前,隨著電子技術(shù)的不斷發(fā)展,計算機技術(shù)也得到飛速的發(fā)展,產(chǎn)生了很多新技術(shù)。但就計算機的基本結(jié)構(gòu)來說,還是基本采用了馮·諾依曼結(jié)構(gòu)。然而馮·諾依曼結(jié)構(gòu)的一個中心點就是存儲一控制,所以存儲器在計算機系統(tǒng)中的作用是非常重要的。

嵌入式計算機作為計算機中的一個類別,對執(zhí)行速度和系統(tǒng)可靠性都有較強的要求,這也決定了嵌入式系統(tǒng)不僅要有實時性很強的操作系統(tǒng),同時也需要一種安全、快速的存儲設(shè)備。同時,嵌入式系統(tǒng)經(jīng)常會涉及到海量數(shù)據(jù)的存儲,這就要求存儲設(shè)備必須具有可靠性高,功耗低,容量大,掉電數(shù)據(jù)不丟失等特點,而NAND FLASH" title="NAND FLASH">NAND FLASH芯片正好具有這些優(yōu)點。

VxWorks" title="VxWorks">VxWorks是嵌入式領(lǐng)域內(nèi)公認(rèn)的最有特色的高性能實時操作系統(tǒng)之一。它以其良好的可靠性和卓越的實時性,被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中,如衛(wèi)星通信、軍事演習(xí)、彈道制導(dǎo)、飛機導(dǎo)航等。

目前,在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)。當(dāng)A12為0時,A10~A0確定對每頁中2 KP;數(shù)據(jù)的訪問;當(dāng)A12為1時,訪問的是64 B的備用區(qū)。由于NANDFLASH芯片在出廠時就可能出現(xiàn)壞塊(塊中的某個或多個bit不能有效的進行讀寫),為了將其標(biāo)注出來,三星公司保證每個壞塊的第一頁和第二頁備用區(qū)第一個byte的數(shù)據(jù)沒有被初始化為0xFF。設(shè)計人員要確保在對該芯片進行擦除之前,先將這個信息保留起來(建一個壞塊表)。行地址為17 b(A28~A12)。它確定了對2 048塊×64頁=128 K個頁中的某一頁進行訪問。為了簡化NAND FLASH芯片的管腳,其地址和數(shù)據(jù)信息共享8個I/O管腳,因此,其29 B的地址信息被設(shè)計為5個周期進行傳輸。具體操作如表1所示。
 

注:起始地址是列地址;L表示必須置為低電平

對NAND FLASH的操作流程比較簡單,即在第一個周期里送操作相關(guān)的命令字,然后送地址,以及相應(yīng)的數(shù)據(jù),最后送確認(rèn)字。需要說明的是,由于地址、命令和數(shù)據(jù)都共用8個I/O管腳來進行傳輸,因此在硬件上必須要有專用的管腳來區(qū)分傳輸類型(在傳輸命令的時候,命令鎖存使能信號CLE有效;在傳輸?shù)刂返臅r候,地址鎖存使能信號ALE有效)。具體的命令字、時序和操作流程在K9F2G08Q0M的數(shù)據(jù)手冊上有較詳細(xì)的描述,在此不一一詳述。

2 PPC440epx的NAND FLASH接口

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

3 TrueFFS簡介

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

4 TrueFFS的實現(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)層實現(xiàn)具體的FLASH芯片底層程序設(shè)計,包括讀、寫、擦、ID識別、映射等功能,以及一些與FLASH芯片相關(guān)的參數(shù)設(shè)置。

(3)Socket層提供了TrueFFS和硬件之間的接口服務(wù),負(fù)責(zé)電源管理、檢測設(shè)備插拔、硬件寫保護、窗口管理和向系統(tǒng)注冊Socket等;

(4)核心層將其他3層有機結(jié)合起來,另外還處理全局問題,如信號量、碎片回收、計時器和其他系統(tǒng)資源等。
在VxWorks中,由于翻譯層和核心層以二進制形式提供給設(shè)計人員的,因此實現(xiàn)TFFS的主要工作集中在對MTD層和Socket層的設(shè)計上。

4.2 Socket層的實現(xiàn)

如果VxWorks中包含TFFS,在系統(tǒng)啟動后,先完成內(nèi)核的初始化,之后開始進行I/O的初始化操作。系統(tǒng)調(diào)用UsrRoot()函數(shù),該函數(shù)再調(diào)用 tffsDrv()函數(shù),這樣就產(chǎn)生如圖3所示的調(diào)用流程。調(diào)用這些函數(shù)的目的之一就是注冊socket驅(qū)動函數(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。其他地方一般不需要改動。

4.3 MTD層驅(qū)動程序" title="驅(qū)動程序">驅(qū)動程序的實現(xiàn)

要創(chuàng)建一個TFFS塊設(shè)備,首先應(yīng)該調(diào)用函數(shù)tffsDevCreate(),這樣就產(chǎn)生了如圖4所示的一系列的調(diào)用函數(shù)。系統(tǒng)通過這一系列的調(diào)用函數(shù)來確認(rèn)具體的MTD層程序。確認(rèn)過程在flIdentifyFlash()函數(shù)中完成。flIdentifyFlash()通過逐個執(zhí)行 xxxIdentify()表中的程序來確定合適的MTD。如果系統(tǒng)只有一種FLASH,則只需寫一個Identify()函數(shù)可。與Socket層類似,MTD層的核心工作也是針對一個數(shù)據(jù)結(jié)構(gòu)(FLFLASH)而進行的初始化操作。通過初始化操作來注冊FLASH芯片的處理函數(shù),具體的實現(xiàn)是在函數(shù) xxxldentify()中完成的。

根據(jù)前面的介紹知道,MTD層的主要功能是實現(xiàn)對FLASH芯片的讀、寫、擦、ID識別、映射等操作。而對不同F(xiàn)LASH芯片的相應(yīng)操作是有一定差別的,所以使用不同的FLASH芯片時,MTD層的程序設(shè)計也是不一樣的。開發(fā)人員的工作是根據(jù)系統(tǒng)使用的具體FLASH芯片來完成相應(yīng)的程序設(shè)計。
 

Tornado提供了幾種FLASH的TrueFFS MTD層驅(qū)動的參考設(shè)計。在installDir\target\src\drv\tffs中,主要包括Intel,AMD等公司的幾種FLASH的 TrueFFS MTD層驅(qū)動。雖然沒有需要的K9F2G08驅(qū)動程序,但可以根據(jù)其結(jié)構(gòu)來設(shè)計自己的MTD程序。具體做法是在BSP目錄下建立一個MTD層驅(qū)動文件,將其取名為K9F2G08Mtd.C。在該文件中首先編寫函數(shù)nandMTDIdentify(),如下所示為程序片段:
 

完成上述代碼后,剩下的工作就是完成在函數(shù)nandMTDIdentify()中引用的readFlashID(),nand-MTDRead()。

nandMTDWrite(),nandMTDErase(),nandMTDMap()這幾個函數(shù)的代碼編寫。由于不同的FLASH芯片,時序不同,因此這幾個函數(shù)的實現(xiàn)也不同。必須根據(jù)芯片K9F2G08的數(shù)據(jù)手冊上時序的要求,對PPC440epx的相應(yīng)寄存器進行讀/寫操作,以完成這些功能。由于篇幅原因,這幾個函數(shù)的具體代碼就不再贅述。建議在Boot Loader工作正常后,先在應(yīng)用程序中對這些函數(shù)進行調(diào)試。這樣就可以利用單步和斷點等工具進行調(diào)試,并且在修改后可立即通過網(wǎng)絡(luò)下載程序。

4.4 TrueFFS的配置

在完成上述代碼的編寫后,還要做如下工作:在配置文件config.h中增加定義INCLUDE_TFFS和IN-CLUDE_DOSFS,使得 TrueFFS組件和DOS文件系統(tǒng)被包含進來。并且要在MakeFile文件MACH_EXTRA一項中添加K9F2G08Mtd.o,這樣可將 TureFFS文件驅(qū)動程序加入系統(tǒng)。另外,還要在tffsConfig.c文件中的mtdTable[]表中添加上述的函數(shù)nandMTDI- dentify。

5 結(jié) 語

在此介紹如何在由AMCC公司的CPU芯片PPC440epx、三星公司的NAND FLASH構(gòu)成的硬件平臺上和VxWorks軟件平臺上,實現(xiàn)TrueFFS。按照上述設(shè)計流程,實現(xiàn)了NAND FLASH的驅(qū)動程序設(shè)計。能夠?qū)9F2G08進行正常的讀、寫、擦、ID識別、映射等操作。同時,在VxWorks操作系統(tǒng)上,實現(xiàn)了 TrueFFS。這樣就提高FLASH使用壽命,確保數(shù)據(jù)完整,優(yōu)化了FLAsH的性能。以此為基礎(chǔ)的系統(tǒng)在某機載設(shè)備上得到成功運用。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩亚洲视频| 国产欧美日韩一区二区三区| 亚洲欧美在线一区| 日韩视频中文字幕| 亚洲片国产一区一级在线观看| 欧美伊人久久久久久午夜久久久久 | 91久久精品美女| 精品动漫3d一区二区三区免费版 | 韩国美女久久| 国产综合久久久久久鬼色| 欧美一区二区私人影院日本| 亚洲性xxxx| 亚洲一区二区三区免费视频| 一区二区三区日韩| 一区二区三区久久久| 99热精品在线观看| 宅男噜噜噜66一区二区66| 在线一区二区日韩| 这里只有视频精品| 亚洲一区二区三区777| 亚洲一级在线观看| 亚洲免费在线精品一区| 午夜精品一区二区三区在线| 午夜精品成人在线| 欧美在线国产精品| 亚洲国产精品久久久久婷婷老年 | 裸体丰满少妇做受久久99精品| 久久夜色精品国产噜噜av| 久久夜色精品国产噜噜av| 免费视频一区| 欧美日韩dvd在线观看| 欧美日韩一区免费| 国产精品女主播| 国产香蕉97碰碰久久人人| 亚洲国产日韩在线一区模特| 国自产拍偷拍福利精品免费一| 国内精品99| 亚洲国产精品福利| 99pao成人国产永久免费视频| 亚洲色图自拍| 欧美一区二区三区精品| 亚洲国内自拍| 在线综合亚洲| 久久精品国产久精国产一老狼| 久久久人人人| 欧美精品久久久久久久久老牛影院| 欧美日韩精品一区二区在线播放| 国产精品萝li| 好吊妞**欧美| 日韩午夜av| 亚洲综合色在线| 91久久精品国产91性色| 中文网丁香综合网| 欧美专区日韩视频| 欧美电影在线观看| 国产精品第一页第二页第三页| 国产亚洲精品久久飘花| 亚洲欧洲一区二区三区在线观看| 亚洲系列中文字幕| 亚洲激情在线观看| 亚洲欧美日韩另类| 蜜臀99久久精品久久久久久软件| 欧美日韩在线观看一区二区三区| 国产欧美一区视频| 亚洲日本电影| 性做久久久久久免费观看欧美| 亚洲精品看片| 久久成人久久爱| 欧美激情中文字幕乱码免费| 国产精品永久免费视频| 亚洲国产精品一区制服丝袜| 亚洲综合二区| 99re66热这里只有精品3直播| 午夜在线不卡| 欧美国产日韩一区| 国产亚洲永久域名| 一本久久综合亚洲鲁鲁五月天| 久久精品视频亚洲| 亚洲一区二区视频在线观看| 久久九九久久九九| 国产精品久久国产三级国电话系列| 精品成人免费| 亚洲摸下面视频| av成人免费在线| 久久伊人精品天天| 国产精品免费观看视频| 亚洲人屁股眼子交8| 亚洲电影观看| 欧美一区二区三区的| 欧美日韩高清在线观看| 伊人久久久大香线蕉综合直播 | 久久精品国产一区二区电影 | 久久综合伊人77777蜜臀| 欧美性淫爽ww久久久久无| 亚洲第一狼人社区| 亚洲成人资源| 久久精品人人做人人综合 | 国产美女精品视频| 99在线精品观看| 亚洲精选91| 另类av一区二区| 国产精品女人久久久久久| 亚洲最黄网站| 一本大道久久a久久精二百| 欧美高清视频| 亚洲成人在线网站| 久久精品视频在线看| 欧美一区二区性| 国产精品美女www爽爽爽| 一区二区三区四区五区精品| 9国产精品视频| 欧美不卡视频| 亚洲二区免费| 亚洲人成绝费网站色www| 六月婷婷一区| 在线看片欧美| 亚洲国产一区视频| 久久综合久久综合这里只有精品| 国产香蕉97碰碰久久人人| 午夜一区不卡| 久久九九精品99国产精品| 国产亚洲精久久久久久| 亚欧成人在线| 久久精品视频亚洲| 国产综合色产在线精品| 亚久久调教视频| 久久国产精品久久久| 国产日韩欧美另类| 欧美一区二区三区四区在线| 久久久久国内| 一色屋精品视频在线观看网站| 亚洲二区视频在线| 能在线观看的日韩av| 亚洲国产精品一区二区www| 99热在线精品观看| 欧美日韩在线观看视频| 亚洲私拍自拍| 欧美一区综合| 黄色小说综合网站| 亚洲国产精品一区二区久| 欧美高清在线精品一区| 亚洲乱亚洲高清| 亚洲欧美在线磁力| 国产欧美大片| 亚洲第一二三四五区| 欧美电影免费观看高清完整版 | 日韩视频在线你懂得| 亚洲综合视频一区| 国产日韩精品在线| 亚洲大胆av| 欧美日韩国产限制| 亚洲专区一二三| 久久久久网址| 最新中文字幕亚洲| 亚洲欧美一区二区激情| 国内精品模特av私拍在线观看| 亚洲国产一区二区三区青草影视| 欧美精选午夜久久久乱码6080| 亚洲视频高清| 久久久久久久久伊人| 亚洲国产一二三| 亚洲欧美国产视频| 合欧美一区二区三区| 日韩手机在线导航| 国产精品视频久久一区| 亚洲电影免费在线| 欧美日韩精品一二三区| 亚洲欧美视频| 欧美gay视频激情| 中文av一区特黄| 久久99伊人| 亚洲片国产一区一级在线观看| 亚洲欧美日韩综合| 在线观看成人小视频| 中日韩视频在线观看| 国产欧美一区二区精品性色| 亚洲经典自拍| 国产精品剧情在线亚洲| 亚洲国产视频直播| 国产精品久久久久久久久久久久久 | 国产乱码精品一区二区三区av| 亚洲国产一二三| 国产精品美女久久久久久2018| 亚洲风情亚aⅴ在线发布| 欧美三级日韩三级国产三级| 久久av老司机精品网站导航| 欧美日韩一区自拍| 亚洲电影观看| 国产精品三级久久久久久电影| 最近中文字幕日韩精品| 国产精品乱码一区二区三区| 亚洲激情视频| 国产亚洲成av人片在线观看桃| 一区二区三区四区国产精品| 国自产拍偷拍福利精品免费一| 亚洲自啪免费| 亚洲欧洲精品成人久久奇米网| 久久精品青青大伊人av| 亚洲午夜国产成人av电影男同| 欧美不卡在线|