<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于TFFS的成像聲吶文件系統(tǒng)設計

          基于TFFS的成像聲吶文件系統(tǒng)設計

          作者:董琎琎 金雪 夏偉杰 蔣鵬飛 時間:2015-04-29 來源:電子產(chǎn)品世界 收藏

            3 TrueFFS系統(tǒng)設計

          本文引用地址:http://www.ex-cimer.com/article/273339.htm

            3.1 功能層的實現(xiàn)

            為了使生成的映像支持TrueFFS系統(tǒng),需要對如下文件進行配置:

            config.h用來定義系統(tǒng)包含的配置,這使得的初始化代碼調(diào)用tffsDrv()來創(chuàng)建管理TrueFFS所需的結(jié)構和全局變量,并在運行確認程序之前為所有掛接了的設備注冊socket組件驅(qū)動。在鏈接時,通過解析與tffsDrv()相關聯(lián)的符號可以將TrueFFS所必須的軟件模塊鏈接到映像中。

            xxxMtd.c是驅(qū)動文件,主要包含了針對所使用的具體設備所編寫的底層驅(qū)動函數(shù),由于我們使用的是SPANSION公司的S29GL512P10TFIR20芯片,Tornado或者Workbench并未提供相應的驅(qū)動,需要自己編寫,具體在3.2節(jié)中進行了闡述。

            sysTffs.c文件將TrueFFS三個功能層鏈接到一起,并與VxWorks關聯(lián)并決定應該包含哪個翻譯層和MTD模塊,本文Flash芯片采用的是NOR-based技術,包含INCLUDE_TL_FTL組件即可。

            tffsConfig.c文件在mtdTable[]表中注冊自己的MTD。如果你新寫了一個MTD并希望TrueFFS可以識別它,就需要在此表中添加它的注冊信息。

            Makefile文件用來添加TrueFFS的目標文件。

            3.2 MTD驅(qū)動的編寫

            MTD和具體的Flash存儲器相關,實現(xiàn)讀、寫、擦除、映射等操作,這里我們針對S29GL512P10TFIR20芯片編寫了驅(qū)動文件的入口函數(shù)、Flash映射函數(shù)、Flash擦除函數(shù)、Flash寫函數(shù)。擦除和寫函數(shù)是編寫MTD驅(qū)動時最關鍵的兩個函數(shù)。

            MTD入口函數(shù)主要用來探測設備并識別設備ID。若返回的設備ID是其支持的設備ID,則對FLFlash結(jié)構成員進行初始化;否則返回失敗。

            Flash地址映射函數(shù)將系統(tǒng)傳遞給map函數(shù)的Flash片內(nèi)地址轉(zhuǎn)換為系統(tǒng)地址。一般直接在片內(nèi)地址的基礎上加上Flash的基地址即可。

            Flash擦除函數(shù)主要用于擦除TrueFFS管理的Flash區(qū)域。Flash的擦除操作是成塊進行的,擦除前先要對扇區(qū)進行解鎖,然后寫入擦除建立和擦除扇區(qū)命令,擦除成功后,內(nèi)容應該均為1,以此來判斷是否擦除成功。

            Flash寫函數(shù)主要實現(xiàn)寫Flash操作。寫入前首先要對扇區(qū)解鎖,然后判斷是否是改寫操作,若是則需要進行擦除操作,否則直接寫命令、寫數(shù)據(jù)。最后需要判斷數(shù)據(jù)是否寫完。

            MTD驅(qū)動文件的編寫需要注意幾個方面:(1)Flash芯片的數(shù)據(jù)手冊中給出指令地址是按字而言的,在本文中不能直接使用,需要左移一位。(2)擦除和寫操作是需要屏蔽中斷的,可以用intLock()函數(shù)來屏蔽中斷,用intUnlock()函數(shù)來使能中斷。(3)可以在各個操作函數(shù)中添加打印信息以方便調(diào)試。

            4 文件系統(tǒng)的創(chuàng)建

            一旦VxWorks包含了TrueFFS系統(tǒng),啟動時usrRoot()會調(diào)用tffsDev()進行設備初始化,通過xxxRegister()函數(shù)注冊socket驅(qū)動。此過程如圖 5所示。

            4.1 Flash設備的識別

            在TrueFFS中包含了INCLUDE__SHOW 和INCLUDE_SHOW_ROUTINES后,就可以在shell中使用tffsShow()和tffsShowAll()任意一個顯示程序來識別Flash設備。

            4.2 格式化TrueFFS

            在實際加載使用TrueFFS之前,需要格式化TrueFFS。格式化是否成功,在于你的MTD驅(qū)動代碼是否正確。因此可以用格式化操作來調(diào)試MTD層。在shell中輸入tffsDevFormat命令來格式化TrueFFS,tffsDevFormat最終會調(diào)用s29gl512MTDErase()和s29gl512MTDWrite()函數(shù)。這兩個函數(shù)是MTD層的主要的兩個函數(shù)。格式化成功則返回0,否則返回-1。

            4.3 掛載DOS設備名

            格式化TrueFFS成功之后,就可以給Flash設備掛接DOS設備名了。在usrTffs.c文件中提供了一個標準的初始化函數(shù)usrTffsConfig(),可用來在TrueFFS塊設備上建立dosFs文件系統(tǒng)。加載完成后,就可以使用加載點來訪問文件系統(tǒng)了。

            5 文件系統(tǒng)測試

            一般為了調(diào)試MTD驅(qū)動的方便,在VxWorks映像中建立文件系統(tǒng)而非在BootRom中建立文件系統(tǒng)。先通過網(wǎng)絡加載VxWorks映像。在shell中調(diào)試MTD驅(qū)動,創(chuàng)建TrueFFS系統(tǒng)。然后使用dosFs文件系統(tǒng)的相關命令如copy等將VxWorks映像拷貝到TrueFFS文件系統(tǒng)中,改變config.h中的啟動引導行,從文件系統(tǒng)加載。修改完后,重新編譯生成bootrom_uncmp.bin,并把它燒寫到Flash中然后重新啟動,在超級終端中即可看到如圖 6和圖 7所示的啟動畫面。

            6 結(jié)束語

            本文首先介紹了VxWorks系統(tǒng)的啟動流程和加載方式,分析了網(wǎng)絡加載的缺點和建立Flash文件系統(tǒng)的必要性;接著介紹了VxWorks下支持的文件系統(tǒng),選擇了適用于硬件平臺和系統(tǒng)需求的TrueFFS文件系統(tǒng);然后分析了TrueFFS文件系統(tǒng)需要配置的文件以及驅(qū)動層的編寫;最后在文件配置好的基礎上創(chuàng)建TrueFFS文件系統(tǒng)并對文件系統(tǒng)進行了測試,成功基于文件系統(tǒng)加載了VxWorks映像,將系統(tǒng)的啟動時間縮短到了20s,提高了產(chǎn)品的用戶體驗。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關文章:linux教程


          熱成像儀相關文章:熱成像儀原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();