<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    基于TFFS的成像聲吶文件系統設計

    發布時間:2015-10-30 15:34    發布者:designapp
    關鍵詞: VxWorks , 嵌入式 , TFFS , Flash , MTD
      1 VxWorks系統的啟動流程
      嵌入式VxWorks操作系統的啟動包括兩個階段,一是BootRom引導,二是VxWorks操作系統映像的啟動。BootRom映像也叫做啟動映像,它主要是初始化串口、網口等很少的硬件系統來下載VxWorks映像。VxWorks映像包含完整的VxWorks OS,是真正在目標板上運行的操作系統。它啟動后會重新初始化幾乎所有的硬件系統,這樣操作系統才可以在目標板上正常運行。兩種映像的區別如表 1所示。


      VxWorks內核有多種啟動流程。本文基于的聲吶原型機采用了最常見的一種啟動方法,將BootRom映像存放在Flash中,負責初始化一些簡單的硬件如網口、串口等,然后下載VxWorks映像到RAM中并將控制權交由操作系統開始執行。VxWorks映像存放在干端主機上,通過網絡加載到目標機中,啟動時還需要打開FTP進行配置。圖 1所示為基于網絡加載的VxWorks啟動方式。此種啟動方法比較繁瑣,而且需要網絡的支持,啟動速度也比較慢。


      產品定型之后,BootRom映像和VxWorks映像不再需要進行修改,本文建立基于Flash的文件系統,將VxWorks映像拷貝到文件系統中,通過Flash文件系統加載VxWorks映像,不需要網絡和FTP軟件的支持,提高了啟動速度;贔lash文件系統的加載的VxWorks啟動方式如圖 2所示。


      2 Flash文件系統
      2.1 文件系統比較與選擇
      文件系統的選擇與存儲設備的物理特性和系統的要求密切相關。I/O系統、文件系統和塊設備之間的聯系如圖 3所示。


      dosFs文件系統是一種與MS_DOS文件系統相兼容的文件系統,具有能夠滿足實時應用的多種要求;支持可擴展的目錄結構;支持使用連續文件;支持存儲盤緩存,提高數據讀寫效率的特點。
      TrueFFS(簡稱TFFS)旨在提高閃存的使用效率。它具有線程安全、可重入的特點,忽略了底層存儲介質的不同,使得用戶可以像操作磁質設備一樣操作存儲介質。通過wear-leveling技術、磨損均衡及碎片回收等機制平衡所有存儲單元的使用頻率,以此來達到延長存儲介質使用壽命的目的。但是TrueFFS不能單獨使用,需要DOS文件系統的支持。
      因此本文選擇在嵌入式VxWorks操作系統下基于Flash建立TFFS系統,在TFFS上掛載dosFs文件系統來進行I/O操作。如此一來,對Flash設備中文件和數據的讀取就像對磁盤操作一樣,方便快捷。
      2.2 TrueFFS系統分析
      VxWorks下的TFFS位于dosFs文件系統和底層硬件之間,由一個核心層和翻譯層、MTD層、Socket層三個功能層組成。要在VxWorks下包含TFFS系統,每一層至少有一個軟件模塊與之對應。圖4為TFFS結構圖。


      核心層(Core Layer)的主要作用是將其它三層有機結合起來,同時還控制著碎片回收、定時器和其他一些系統資源。翻譯層(Translation Layer)是TrueFFS系統的核心,主要實現TrueFFS和DOS文件系統(dosFs)之間的高級交互功能。MTD(Memory Technology Drivers)層針對具體Flash存儲器件,提供讀、寫、擦除、ID識別、映射等基本操作。Socket層(Socket Layer),又稱套接層,提供TrueFFS和硬件系統之間的接口,用來向系統注冊socket設備、檢測設備插拔、硬件寫保護等。
                                   
                      3 TrueFFS系統設計
      3.1 功能層的實現
      為了使生成的VxWorks映像支持TrueFFS系統,需要對如下文件進行配置:
      config.h用來定義系統包含的配置,這使得VxWorks的初始化代碼調用tffsDrv()來創建管理TrueFFS所需的結構和全局變量,并在運行MTD確認程序之前為所有掛接了的Flash設備注冊socket組件驅動。在鏈接時,通過解析與tffsDrv()相關聯的符號可以將TrueFFS所必須的軟件模塊鏈接到VxWorks映像中。
      xxxMtd.c是MTD驅動文件,主要包含了針對所使用的具體Flash設備所編寫的底層驅動函數,由于我們使用的Flash是SPANSION公司的S29GL512P10TFIR20芯片,Tornado或者Workbench并未提供相應的MTD驅動,需要自己編寫,具體在3.2節中進行了闡述。
      sysTffs.c文件將TrueFFS三個功能層鏈接到一起,并與VxWorks關聯并決定應該包含哪個翻譯層和MTD模塊,本文Flash芯片采用的是NOR-based技術,包含INCLUDE_TL_FTL組件即可。
      tffsConfig.c文件在mtdTable[]表中注冊自己的MTD。如果你新寫了一個MTD并希望TrueFFS可以識別它,就需要在此表中添加它的注冊信息。
      Makefile文件用來添加TrueFFS的目標文件。
      3.2 MTD驅動的編寫
      MTD和具體的Flash存儲器相關,實現讀、寫、擦除、映射等操作,這里我們針對S29GL512P10TFIR20芯片編寫了驅動文件的入口函數、Flash映射函數、Flash擦除函數、Flash寫函數。擦除和寫函數是編寫MTD驅動時最關鍵的兩個函數。
      MTD入口函數主要用來探測設備并識別設備ID。若返回的設備ID是其支持的設備ID,則對FLFlash結構成員進行初始化;否則返回失敗。
      Flash地址映射函數將系統傳遞給map函數的Flash片內地址轉換為系統地址。一般直接在片內地址的基礎上加上Flash的基地址即可。
      Flash擦除函數主要用于擦除TrueFFS管理的Flash區域。Flash的擦除操作是成塊進行的,擦除前先要對扇區進行解鎖,然后寫入擦除建立和擦除扇區命令,擦除成功后,內容應該均為1,以此來判斷是否擦除成功。
      Flash寫函數主要實現寫Flash操作。寫入前首先要對扇區解鎖,然后判斷是否是改寫操作,若是則需要進行擦除操作,否則直接寫命令、寫數據。最后需要判斷數據是否寫完。
      MTD驅動文件的編寫需要注意幾個方面:(1)Flash芯片的數據手冊中給出指令地址是按字而言的,在本文中不能直接使用,需要左移一位。(2)擦除和寫操作是需要屏蔽中斷的,可以用intLock()函數來屏蔽中斷,用intUnlock()函數來使能中斷。(3)可以在各個操作函數中添加打印信息以方便調試。
      4 嵌入式文件系統的創建
      一旦VxWorks包含了TrueFFS系統,啟動時usrRoot()會調用tffsDev()進行設備初始化,通過xxxRegister()函數注冊socket驅動。此過程如圖 5所示。


      4.1 Flash設備的識別
      在TrueFFS中包含了INCLUDE_TFFS_SHOW 和INCLUDE_SHOW_ROUTINES后,就可以在shell中使用tffsShow()和tffsShowAll()任意一個顯示程序來識別Flash設備。
      4.2 格式化TrueFFS
      在實際加載使用TrueFFS之前,需要格式化TrueFFS。格式化是否成功,在于你的MTD驅動代碼是否正確。因此可以用格式化操作來調試MTD層。在shell中輸入tffsDevFormat命令來格式化TrueFFS,tffsDevFormat最終會調用s29gl512MTDErase()和s29gl512MTDWrite()函數。這兩個函數是MTD層的主要的兩個函數。格式化成功則返回0,否則返回-1。
      4.3 掛載DOS設備名
      格式化TrueFFS成功之后,就可以給Flash設備掛接DOS設備名了。在usrTffs.c文件中提供了一個標準的初始化函數usrTffsConfig(),可用來在TrueFFS塊設備上建立dosFs文件系統。加載完成后,就可以使用加載點來訪問文件系統了。
      5 文件系統測試
      一般為了調試MTD驅動的方便,在VxWorks映像中建立文件系統而非在BootRom中建立文件系統。先通過網絡加載VxWorks映像。在shell中調試MTD驅動,創建TrueFFS系統。然后使用dosFs文件系統的相關命令如copy等將VxWorks映像拷貝到TrueFFS文件系統中,改變config.h中的啟動引導行,從文件系統加載。修改完后,重新編譯生成bootrom_uncmp.bin,并把它燒寫到Flash中然后重新啟動,在超級終端中即可看到如圖 6和圖 7所示的啟動畫面。


      6 結束語
      本文首先介紹了VxWorks系統的啟動流程和加載方式,分析了網絡加載的缺點和建立Flash文件系統的必要性;接著介紹了VxWorks下支持的文件系統,選擇了適用于硬件平臺和系統需求的TrueFFS文件系統;然后分析了TrueFFS文件系統需要配置的文件以及驅動層的編寫;最后在文件配置好的基礎上創建TrueFFS文件系統并對文件系統進行了測試,成功基于文件系統加載了VxWorks映像,將系統的啟動時間縮短到了20s,提高了產品的用戶體驗。
                                   
                   
    本文地址:http://www.portaltwn.com/thread-155201-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • 我們是Microchip
    • 更佳設計的解決方案——Microchip模擬開發生態系統
    • 利用模擬開發工具生態系統進行安全電路設計
    • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷