《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于VxWorks的NANDFLASH驅動程序設計
基于VxWorks的NANDFLASH驅動程序設計
摘要: 在此介紹如何在由AMCC公司的CPU芯片PPC440epx、三星公司的NAND FLASH構成的硬件平臺上和VxWorks軟件平臺上,實現TrueFFS。按照上述設計流程,實現了NAND FLASH的驅動程序設計。能夠對K9F2G08進行正常的讀、寫、擦、ID識別、映射等操作。同時,在VxWorks操作系統上,實現了 TrueFFS。這樣就提高FLASH使用壽命,確保數據完整,優化了FLAsH的性能。以此為基礎的系統在某機載設備上得到成功運用。
Abstract:
Key words :

  0 引 言

  目前,隨著電子技術的不斷發展,計算機技術也得到飛速的發展,產生了很多新技術。但就計算機的基本結構來說,還是基本采用了馮·諾依曼結構。然而馮·諾依曼結構的一個中心點就是存儲一控制,所以存儲器在計算機系統中的作用是非常重要的。嵌入式計算機作為計算機中的一個類別,對執行速度和系統可靠性都有較強的要求,這也決定了嵌入式系統不僅要有實時性很強的操作系統,同時也需要一種安全、快速的存儲設備。同時,嵌入式系統經常會涉及到海量數據的存儲,這就要求存儲設備必須具有可靠性高,功耗低,容量大,掉電數據不丟失等特點,而NAND 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所示。

K9F2G08的結構

具體操作表

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

  對NAND FLASH的操作流程比較簡單,即在第一個周期里送操作相關的命令字,然后送地址,以及相應的數據,最后送確認字。需要說明的是,由于地址、命令和數據都共用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,使得對應的控制信號為高電平或者低電平。設計人員可以根據自己的情況,選擇實現方法。這里推薦采用硬件實現的方法。不過,在有問題時,可采用軟件實現的方法來進行調試。

  3 TrueFFS簡介

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

 

 

 

  4 TrueFFS的實現

  4.1 TrueFFS的基本結構

  TrueFFS由1個核心層和3個功能層組成,它們是翻譯層(Translation Layer)、MTD(Memory Tech-nology Drivers Layer)層和Socket層,其結構框圖如圖2所示。

TrueFFS的基本結構

  (1)交互功能。它包含了控制FLASH映射到塊、wear-lev-eling、碎片回收和數據完整性所需的智能化處理功能。目前,有三種不同的翻譯層模塊可供選擇。選擇哪一種層需要看所用的FLASH介質是采用NOR-based,還是NAND-based,或者SSFDC-based技術而定。

  (2)MTD(Memory Technology Driver)層實現具體的FLASH芯片底層程序設計,包括讀、寫、擦、ID識別、映射等功能,以及一些與FLASH芯片相關的參數設置。

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

  (4)核心層將其他3層有機結合起來,另外還處理全局問題,如信號量、碎片回收、計時器和其他系統資源等。

  在VxWorks中,由于翻譯層和核心層以二進制形式提供給設計人員的,因此實現TFFS的主要工作集中在對MTD層和Socket層的設計上。

  4.2 Socket層的實現

  如果VxWorks中包含TFFS,在系統啟動后,先完成內核的初始化,之后開始進行I/O的初始化操作。系統調用UsrRoot()函數,該函數再調用 tffsDrv()函數,這樣就產生如圖3所示的調用流程。調用這些函數的目的之一就是注冊socket驅動函數。最后的注冊操作都是由 xxxRegister()函數完成(這個函數和sysTff-sInit()函數的定義都在sysTffs.c中)的。該函數是通過更新 FLSocket結構體來完成注冊操作的。該結構體的定義以及相關細節可以通過閱讀VxWorks的幫助文件獲得,在此不詳述。

Register函數調用流程

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

  4.3 MTD層驅動程序的實現

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

Identify函數調用流程

  根據前面的介紹知道,MTD層的主要功能是實現對FLASH芯片的讀、寫、擦、ID識別、映射等操作。而對不同FLASH芯片的相應操作是有一定差別的,所以使用不同的FLASH芯片時,MTD層的程序設計也是不一樣的。開發人員的工作是根據系統使用的具體FLASH芯片來完成相應的程序設計。

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

 

程序

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

  4.4 TrueFFS的配置

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

  5 結 語

  在此介紹如何在由AMCC公司的CPU芯片PPC440epx、三星公司的NAND FLASH構成的硬件平臺上和VxWorks軟件平臺上,實現TrueFFS。按照上述設計流程,實現了NAND FLASH的驅動程序設計。能夠對K9F2G08進行正常的讀、寫、擦、ID識別、映射等操作。同時,在VxWorks操作系統上,實現了 TrueFFS。這樣就提高FLASH使用壽命,確保數據完整,優化了FLAsH的性能。以此為基礎的系統在某機載設備上得到成功運用。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美影片第一页| 国产精品女主播一区二区三区| 欧美一区二区三区四区在线| 欧美日韩天天操| 久久成人18免费观看| 香蕉久久夜色精品| 一区二区三区导航| 亚洲欧美日韩精品久久| 麻豆精品视频在线观看| 欧美日韩综合在线免费观看| 久久精品在线视频| 伊人伊人伊人久久| 亚洲一区自拍| 在线精品观看| 久久精品电影| 亚洲欧美国产高清| 免费在线观看日韩欧美| 亚洲精品欧美| 国产精品专区h在线观看| 国产欧美在线视频| 亚洲欧美久久| 好吊一区二区三区| 久久久久久亚洲精品不卡4k岛国| 久久九九电影| 欧美成人影音| 欧美日本一区二区三区| 日韩亚洲视频在线| 欧美日韩一区精品| 亚洲国产一区二区a毛片| 99re6这里只有精品视频在线观看| 亚洲男人的天堂在线aⅴ视频| 久久精品国产精品| 香蕉久久a毛片| 欧美一区二区网站| 另类春色校园亚洲| 国产乱码精品一区二区三区不卡| 久久激情中文| 亚洲欧美另类在线观看| 午夜亚洲影视| 欧美午夜电影网| 久久精品亚洲| 欧美二区不卡| 欧美日产国产成人免费图片| 欧美私人啪啪vps| 午夜精品福利一区二区蜜股av| 国产精品亚洲一区| 在线视频国内自拍亚洲视频| 欧美成人免费全部观看天天性色| 欧美激情一区二区三区成人| 国产亚洲视频在线| 国产日韩亚洲| 欧美国产一区视频在线观看| 亚洲一区免费在线观看| 欧美日韩免费观看一区二区三区| 欧美日本在线看| 久久综合色婷婷| 国内精品美女在线观看| 亚洲自拍偷拍一区| 久久综合九色综合欧美就去吻| 韩国亚洲精品| 亚洲第一毛片| 99av国产精品欲麻豆| 99热在线精品观看| 欧美国产一区视频在线观看| 午夜精品久久久久久久| 影音先锋久久精品| 亚洲国产小视频在线观看| 国产日韩精品视频一区| 久久精品系列| 亚洲激情亚洲| 亚洲性感激情| 亚洲第一在线综合网站| 欧美特黄a级高清免费大片a级| 国产欧美一区二区精品仙草咪| 欧美在线免费一级片| 久久国产精品99国产| 欧美一区亚洲二区| 亚洲视频国产视频| 亚洲国产精品一区二区第四页av| 亚洲国产精品尤物yw在线观看| 欧美日韩亚洲高清| 久久午夜精品一区二区| 91久久国产综合久久蜜月精品| 国内一区二区三区在线视频| 国产亚洲精品资源在线26u| 欧美风情在线观看| 国产亚洲人成a一在线v站| 国产精品久久中文| 亚洲国产精品成人久久综合一区| 日韩视频久久| 亚洲国产婷婷| 亚洲欧美日韩国产综合在线| 亚洲福利视频三区| 一区免费观看视频| 一本久久综合亚洲鲁鲁| 午夜久久电影网| 免费不卡在线视频| 久久一区亚洲| 亚洲精品黄网在线观看| 亚洲视频碰碰| 中文在线不卡| 欧美精品一区二区三区一线天视频| 牛牛精品成人免费视频| 在线视频观看日韩| 亚洲精品亚洲人成人网| 久久久久在线观看| 久久综合给合久久狠狠色| 久久久青草青青国产亚洲免观| 亚洲精品在线看| 亚洲国产综合在线| 国产精品素人视频| 国产精品嫩草99a| 国内一区二区三区在线视频| 国产精品一区二区你懂得| 欧美国产一区视频在线观看| 亚洲欧美久久| 久久久人成影片一区二区三区观看| 亚洲一区美女视频在线观看免费| 国产精品久久婷婷六月丁香| 欧美日韩精品综合| 国产丝袜一区二区| 亚洲电影av| 一区二区在线免费观看| 在线看片日韩| 国内精品伊人久久久久av影院| 韩曰欧美视频免费观看| 玖玖精品视频| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美日韩国产一区二区三区| 国产美女搞久久| 欧美日韩一区二区视频在线观看| 国产主播一区二区| 国产精品久久久久久久久久尿| 亚洲激情成人网| 激情婷婷欧美| 欧美www视频在线观看| 欧美日韩一区在线观看视频| 欧美日韩精品综合在线| 欧美成人精品在线观看| 在线观看免费视频综合| 亚洲无限乱码一二三四麻| 狠狠色丁香婷婷综合久久片| 免费在线国产精品| 欧美日韩亚洲国产精品| 欧美国产高潮xxxx1819| 在线日韩欧美| 欧美午夜精品| 国产麻豆9l精品三级站| 亚洲一区二区三区在线播放| 在线综合欧美| 久久一区二区视频| 国产精品www.| 宅男噜噜噜66一区二区| 亚洲精品美女久久久久| 中文网丁香综合网| 欧美三级电影网| 亚洲美女福利视频网站| 国产欧美视频一区二区| 性欧美精品高清| 国产乱理伦片在线观看夜一区| 亚洲国产综合视频在线观看| 精品999在线观看| 老**午夜毛片一区二区三区| 久久久久88色偷偷免费| 欧美性理论片在线观看片免费| 久久九九久精品国产免费直播| 在线视频精品一区| 久久婷婷人人澡人人喊人人爽| 香港成人在线视频| 欧美日韩四区| 国产精品揄拍一区二区| 国产嫩草影院久久久久| 亚洲专区免费| 亚洲国产小视频在线观看| 亚洲国产欧美日韩另类综合| 久久久国产精品一区| 欧美成人性网| 亚洲成人在线免费| 欧美理论大片| 国产精品蜜臀在线观看| 亚洲精选成人| 欧美不卡三区| 亚洲免费观看视频| 久久久久免费视频| 国产精品欧美日韩| 国产精品大片免费观看| 一区二区三区视频在线观看| 激情六月婷婷久久| 韩日午夜在线资源一区二区| 亚洲精品免费一区二区三区| 国产综合色产在线精品| 欧美三级资源在线| 日韩一二三区视频| 一区二区三区欧美视频| 国内精品美女在线观看| 午夜精品久久久久久久久久久久久| 国产精品一区久久久| 欧美一区二区三区视频在线| 国产九九视频一区二区三区| 欧美顶级艳妇交换群宴| 欧美日韩调教| 国产精品电影在线观看| 欧美欧美天天天天操| 伊人精品成人久久综合软件| 午夜日韩电影| 蜜臀久久99精品久久久画质超高清| 国产日韩欧美综合精品| 欧美三级韩国三级日本三斤| 国产精品看片你懂得| 一区二区三区欧美在线观看| 亚洲精品一区二区三区在线观看| 国产精品二区三区四区| 国产欧美日韩在线| 国产精品久久国产精品99gif| 六十路精品视频| 欧美—级在线免费片| 国产精品国产| 欧美精品18+| 亚洲国产福利在线| 亚洲视频一区| 老司机凹凸av亚洲导航| 亚洲精品综合| 欧美日本韩国一区| 国产精品视频自拍| 国产精品二区影院| 一区二区在线视频播放| 欧美大尺度在线观看| 国产精品黄页免费高清在线观看| 久久精品动漫| 尤物网精品视频| 久久久免费av| 欧美亚洲成人精品| 亚洲经典一区| 欧美精品亚洲二区| 欧美亚州韩日在线看免费版国语版| 欧美一级艳片视频免费观看| 亚洲视频国产视频| 国产精品黄页免费高清在线观看| 国产欧美日韩综合一区在线观看| 欧美香蕉大胸在线视频观看| 国产日韩精品一区二区| 国产精品视频xxx| 国产精品腿扒开做爽爽爽挤奶网站| 国产在线拍揄自揄视频不卡99| 黄色日韩在线| 亚洲免费福利视频| 欧美日韩国产在线播放| 亚洲影视中文字幕| 欧美一区二区三区四区在线| 国产日韩欧美精品一区| 欧美日韩国产丝袜另类| 久久综合一区二区| 亚洲在线观看免费视频| 国产精品蜜臀在线观看| 牛牛精品成人免费视频| 国产一区二区无遮挡| 久久都是精品| 亚洲欧美日韩国产一区二区三区| 久久国产精品久久久久久久久久| 欧美色播在线播放| 国产一区日韩一区| 夜夜躁日日躁狠狠久久88av| 99国产精品久久久| 国产中文一区二区| 欧美精品久久久久久| 激情自拍一区| 亚洲丝袜av一区| 性8sex亚洲区入口| 午夜精品久久久久久久蜜桃app| 国产精品福利在线观看| 亚洲网站在线播放| 亚洲无吗在线| 国产精品chinese| 激情成人在线视频| 亚洲人成网站在线观看播放| 国产在线拍揄自揄视频不卡99| 国产视频在线一区二区| 亚洲精品视频一区| 永久91嫩草亚洲精品人人| 亚洲第一精品在线| 今天的高清视频免费播放成人| 亚洲天堂av在线免费观看| 亚洲在线视频免费观看| 亚洲欧美综合一区| 亚洲已满18点击进入久久| 亚洲午夜一二三区视频| 久久亚洲精品欧美| 亚洲一区二区三区欧美| 久久av在线| 在线观看欧美激情| 欧美资源在线观看| 欧美大尺度在线| 一区二区在线视频| 国产精品igao视频网网址不卡日韩| 欧美三区免费完整视频在线观看| 可以看av的网站久久看| 亚洲国产高清在线观看视频| 欧美日韩午夜视频在线观看| 国内视频一区| 久久欧美肥婆一二区| 国产精品高清在线观看| 国产一区二区毛片| 亚洲电影免费观看高清完整版在线观看| 99精品国产热久久91蜜凸| 韩国在线视频一区| 日韩一级免费| 中文无字幕一区二区三区| 欧美激情亚洲综合一区| 最新精品在线| 国产精品一区一区| 国产精品99久久久久久有的能看| 欧美午夜寂寞影院| 亚洲国产一区二区三区高清| 在线亚洲精品| 在线观看一区二区视频| 久久夜色精品国产亚洲aⅴ| 国产精品免费看| 久久久久久久综合狠狠综合| 国产欧美日韩免费| 久久久精品国产免大香伊| 国产婷婷成人久久av免费高清| 亚洲精品中文在线| 欧美91福利在线观看| 国产欧美日韩精品一区| 国产伦理精品不卡| 国产在线视频不卡二| 国产综合色产在线精品| 欧美激情视频给我|