国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于VxWorks的NAND FLASH驅(qū)動(dòng)程序設(shè)計(jì)

發(fā)布時(shí)間:2010-8-12 13:55    發(fā)布者:lavida
0 引 言  

目前,隨著電子技術(shù)的不斷發(fā)展,計(jì)算機(jī)技術(shù)也得到飛速的發(fā)展,產(chǎn)生了很多新技術(shù)。但就計(jì)算機(jī)的基本結(jié)構(gòu)來(lái)說(shuō),還是基本采用了馮·諾依曼結(jié)構(gòu)。然而馮·諾依曼結(jié)構(gòu)的一個(gè)中心點(diǎn)就是存儲(chǔ)一控制,所以存儲(chǔ)器在計(jì)算機(jī)系統(tǒng)中的作用是非常重要的。嵌入式計(jì)算機(jī)作為計(jì)算機(jī)中的一個(gè)類(lèi)別,對(duì)執(zhí)行速度和系統(tǒng)可靠性都有較強(qiáng)的要求,這也決定了嵌入式系統(tǒng)不僅要有實(shí)時(shí)性很強(qiáng)的操作系統(tǒng),同時(shí)也需要一種安全、快速的存儲(chǔ)設(shè)備。同時(shí),嵌入式系統(tǒng)經(jīng)常會(huì)涉及到海量數(shù)據(jù)的存儲(chǔ),這就要求存儲(chǔ)設(shè)備必須具有可靠性高,功耗低,容量大,掉電數(shù)據(jù)不丟失等特點(diǎn),而NAND FLASH芯片正好具有這些優(yōu)點(diǎn)。  

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

目前,在VxWorks實(shí)現(xiàn)上,涉及文件系統(tǒng)的文章不少,但一般都是針對(duì)容量較小,操作相對(duì)簡(jiǎn)單的NORFlash實(shí)現(xiàn)的。本文討論了如何在以AMCC公司的Power PC芯片PPC440epx為核心的嵌入式平臺(tái)上,利用三星公司的大容量NAND FLAsH實(shí)現(xiàn)文件系統(tǒng)的具體辦法。  

1 三星NAND FLASH芯片K9F2G08QOM  

K9F2G08QOM芯片的容量為256 M×8 b=2 Gb的數(shù)據(jù)區(qū),再加上64 Mb的備用區(qū)。一塊這種芯片被分為2 048個(gè)塊,每個(gè)塊又分為64頁(yè),每頁(yè)由2 KB的數(shù)據(jù)區(qū)加上64 B的備用區(qū)組成。如圖1所示,列地址為12 b(A11~A0)。當(dāng)A12為0時(shí),A10~A0確定對(duì)每頁(yè)中2 KP;數(shù)據(jù)的訪問(wèn);當(dāng)A12為1時(shí),訪問(wèn)的是64 B的備用區(qū)。由于NANDFLASH芯片在出廠時(shí)就可能出現(xiàn)壞塊(塊中的某個(gè)或多個(gè)bit不能有效的進(jìn)行讀寫(xiě)),為了將其標(biāo)注出來(lái),三星公司保證每個(gè)壞塊的第一頁(yè)和第二頁(yè)備用區(qū)第一個(gè)byte的數(shù)據(jù)沒(méi)有被初始化為0xFF。設(shè)計(jì)人員要確保在對(duì)該芯片進(jìn)行擦除之前,先將這個(gè)信息保留起來(lái)(建一個(gè)壞塊表)。行地址為17 b(A28~A12)。它確定了對(duì)2 048塊×64頁(yè)=128 K個(gè)頁(yè)中的某一頁(yè)進(jìn)行訪問(wèn)。為了簡(jiǎn)化NAND FLASH芯片的管腳,其地址和數(shù)據(jù)信息共享8個(gè)I/O管腳,因此,其29 B的地址信息被設(shè)計(jì)為5個(gè)周期進(jìn)行傳輸。具體操作如表1所示。  



  


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

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

2 PPC440epx的NAND FLASH接口  

AMCC公司的PPC440epx芯片是一款性能指標(biāo)較高的嵌入式CPU芯片,其主頻可以達(dá)到667 MHz,擁有DDR2接口,可支持千兆以太網(wǎng),USB 2.0接口,支持浮點(diǎn)運(yùn)算,同時(shí)還支持NAND FLASH芯片。  

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



  


3 TrueFFS簡(jiǎn)介  

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

4 TrueFFS的實(shí)現(xiàn)  

4.1 TrueFFS的基本結(jié)構(gòu)  

TrueFFS由1個(gè)核心層和3個(gè)功能層組成,它們是翻譯層(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è)計(jì),包括讀、寫(xiě)、擦、ID識(shí)別、映射等功能,以及一些與FLASH芯片相關(guān)的參數(shù)設(shè)置。  

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

(4)核心層將其他3層有機(jī)結(jié)合起來(lái),另外還處理全局問(wèn)題,如信號(hào)量、碎片回收、計(jì)時(shí)器和其他系統(tǒng)資源等。  

在VxWorks中,由于翻譯層和核心層以二進(jìn)制形式提供給設(shè)計(jì)人員的,因此實(shí)現(xiàn)TFFS的主要工作集中在對(duì)MTD層和Socket層的設(shè)計(jì)上。  

4.2 Socket層的實(shí)現(xiàn)  

如果VxWorks中包含TFFS,在系統(tǒng)啟動(dòng)后,先完成內(nèi)核的初始化,之后開(kāi)始進(jìn)行I/O的初始化操作。系統(tǒng)調(diào)用UsrRoot()函數(shù),該函數(shù)再調(diào)用 tffsDrv()函數(shù),這樣就產(chǎn)生如圖3所示的調(diào)用流程。調(diào)用這些函數(shù)的目的之一就是注冊(cè)socket驅(qū)動(dòng)函數(shù)。最后的注冊(cè)操作都是由 xxxRegister()函數(shù)完成(這個(gè)函數(shù)和sysTff-sInit()函數(shù)的定義都在sysTffs.c中)的。該函數(shù)是通過(guò)更新 FLSocket結(jié)構(gòu)體來(lái)完成注冊(cè)操作的。該結(jié)構(gòu)體的定義以及相關(guān)細(xì)節(jié)可以通過(guò)閱讀VxWorks的幫助文件獲得,在此不詳述。  



  


  

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

4.3 MTD層驅(qū)動(dòng)程序的實(shí)現(xiàn)  

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



  


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

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



  


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

4.4 TrueFFS的配置  

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

5 結(jié) 語(yǔ)  

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

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專(zhuān)區(qū)
  • 使用SAM-IoT Wx v2開(kāi)發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開(kāi)發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專(zhuān)區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品美女久久久aaa | 欧美在线视频一区二区三区 | 99国产高清久久久久久网站 | 欧美夜色 | 久久久久99精品成人片三人毛片 | 日韩精品一区二区三区视频 | 精品欧美成人bd高清在线观看 | 久草网站 | tom影院亚洲国产日本一区 | 天天干天天草天天 | 欧美影视一区二区三区 | 国产精品一区二区久久精品 | 黄页网站在线观看免费 | 一本到卡二卡三卡视频 | 女奥特曼苍月战士未删减在线 | 亚洲精品一二区 | 日本韩一级二级三级 | 暖暖 免费 中国 高清 在线 | 精品国产日韩亚洲一区二区 | 欧美国产日韩1区俺去了 | 啪啪一级视频 | 一级毛片视频 | 日本午夜网站 | 国产精品综合视频 | 国产精品资源网站在线观看 | 久久这里只有精品99 | 欧美啄木乌成人系列影片 | 韩国一级在线 | 在线观看91精品国产hd | 91在线视频在线 | 精品国产欧美一区二区最新 | 另类五月天 | 国产精品自在在线香蕉 | 日本网站免费 | 欧美午夜视频在线观看 | 女老师在线观看 | 女老师在线播放 | 精品一区二区三区在线观看l | 久久大陆 | 国产粉嫩 | 日本护士在线视频xxxx免费 |