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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于INTEL StrataFlash在VxWorks上構(gòu)建TrueFFS文件系統(tǒng)

          基于INTEL StrataFlash在VxWorks上構(gòu)建TrueFFS文件系統(tǒng)

          作者: 時(shí)間:2012-05-21 來(lái)源:網(wǎng)絡(luò) 收藏

          修改tffsConfig.c文件,此文件一般存放在srcdrvtffs文件夾中,可以拷貝到BSP文件夾中,在 MTDidentifyRoutine mtdTable[]中把定義的宏INCLUDE_MTD_I28FJ3A和MTD識(shí)別函數(shù)關(guān)聯(lián)起來(lái):

          #ifdef INCLUDE_MTD_I28FJ3A

          i28fj3aMtdIdentify,

          #endif

          系統(tǒng)在調(diào)用tffsdev()函數(shù)安裝flash的MTD驅(qū)動(dòng)時(shí)會(huì)調(diào)用這個(gè)表項(xiàng)來(lái)查找并識(shí)別flash設(shè)備。

          2 MTD驅(qū)動(dòng)程序組成

          在MTD驅(qū)動(dòng)中,最重要的函數(shù)是i28fj3aMtdIdentify()函數(shù),可以把它看作是MTD的初始化函數(shù)。它負(fù)責(zé)讀取芯片制造商和設(shè)備的ID 號(hào),INTEL公司的代碼是0x0089,28F320J3A的設(shè)備代碼是0x0016。然后對(duì)FLFlash結(jié)構(gòu)的成員進(jìn)行初始化。FLFlash結(jié)構(gòu)定義在targethtffsFLFlash.h中:

          typedef struct tFlash FLFlash;

          struct tFlash {

          FlashType type;

          long erasableBlockSize;

              long chipSize;

          int noOfChips;

          int interleaving;

          int flags;

          void *mtdVars;

          FLSocket *socket;

          void FAR0 *(*map)(FLFlash *, CardAddress, int);

          FLStatus (*read)(FLFlash *, CardAddress, void FAR1 *, int, int);

          FLStatus (*write)(FLFlash *, CardAddress, const void FAR1 *, int, int);

          FLStatus (*erase)(FLFlash *, int, int);

          void (*setPowerOnCallback)(FLFlash *);

          };

          其中,type指flash的設(shè)備類型;erasableBlockSize指flash可擦除塊的大小,單位為字節(jié);chipsize指flash存儲(chǔ)容量,單位為字節(jié);noOfChips指構(gòu)成flash存儲(chǔ)陣列的存儲(chǔ)器的片數(shù);interleaving指存儲(chǔ)陣列的交叉存取參數(shù),必須為2的整數(shù)冪,用于定義在一個(gè)存儲(chǔ)芯片上,兩個(gè)字節(jié)連續(xù)媒體的地址差異;socket是指向FLSocket結(jié)構(gòu)的指針,這個(gè)FLSocket結(jié)構(gòu)含有指向socket 層函數(shù)的指針和數(shù)據(jù)。當(dāng)注冊(cè)socket驅(qū)動(dòng)時(shí),該FLSocket結(jié)構(gòu)中涉及的函數(shù)將被安裝。

          map是指向flash映射函數(shù)的指針,該函數(shù)將flash映射到內(nèi)存的一個(gè)區(qū)域。read是指向flash讀函數(shù)的指針。write是指向 flash寫函數(shù)的指針。erase是指向flash擦除函數(shù)的指針。setPowerOnCallback是指在flash設(shè)備上電后應(yīng)當(dāng)執(zhí)行一個(gè)函數(shù)以便掛接該設(shè)備,setPowerOnCallback成員就是指向這個(gè)函數(shù)的指針,許多flash存儲(chǔ)設(shè)備不需要此函數(shù)。

          在MTD驅(qū)動(dòng)中最重要的兩個(gè)函數(shù)是write和erase。write的過(guò)程一般是這樣的,寫入前首先要對(duì)扇區(qū)解鎖,如果是進(jìn)行改寫,需要把待改寫扇區(qū)的數(shù)據(jù)讀出來(lái),修改相應(yīng)的部分,然后擦除扇區(qū),接著再寫入寫命令,寫入數(shù)據(jù);如果是寫入空扇區(qū),直接寫命令、寫數(shù)據(jù)就可以了,最后判斷數(shù)據(jù)是否寫完。為了確保寫入成功,寫完數(shù)據(jù)后要進(jìn)行數(shù)據(jù)的比較。對(duì)flash的erase操作是按照扇區(qū)進(jìn)行的,擦除前首先要對(duì)扇區(qū)解鎖,然后寫入擦除建立和扇區(qū)擦除命令,擦除成功后,內(nèi)容應(yīng)為0xFFFF。為了確保擦除成功,擦完后也要進(jìn)行數(shù)據(jù)比較。

          當(dāng)內(nèi)核支持,在啟動(dòng)時(shí),usrRoot()函數(shù)將會(huì)調(diào)用tffsdev()進(jìn)行設(shè)備初始化,調(diào)用tffsdev()的目的是注冊(cè)套接組件驅(qū)動(dòng)程序。

          在使用TFFS之前首先要調(diào)用tffsdevcreate()創(chuàng)建此設(shè)備,經(jīng)過(guò)一系列的調(diào)用,最后運(yùn)行flidentifyflash(),這個(gè)函數(shù)按照 sysTffs.c中宏所指定的flash,調(diào)用識(shí)別函數(shù)i28fj3aMtdIdentify()進(jìn)行識(shí)別,來(lái)確認(rèn)究竟是那種flash接入了系統(tǒng),并向FLFLash數(shù)據(jù)結(jié)構(gòu)注冊(cè)MTD驅(qū)動(dòng)中的讀、寫、擦除、映射等f(wàn)lash操作函數(shù)。

          3 TFFS操作方法

          在使用TFFS前,要用shell命令tffsDevFormat對(duì)flash設(shè)備進(jìn)行格式化,并用usrTffsConfig命令把flash設(shè)備掛接上DOS設(shè)備名,接著就可以用此設(shè)備名對(duì)flash設(shè)備進(jìn)行操作了。支持的命令包括:ls,copy,remove等常用命令。

          還可以通過(guò)修改DEFAULT_BOOT_LINE中的參數(shù),將TFFS作為一個(gè)啟動(dòng)設(shè)備。將boot device改為tffs=0,0 ,將file name 改為/tffs0/VxWroks,就可以把系統(tǒng)啟動(dòng)起來(lái)了。

          四 結(jié)論

          在基于的嵌入式系統(tǒng)中支持TrueFFS,可以將操作系統(tǒng)映像、應(yīng)用程序、系統(tǒng)配置等以文件的形式存放到flash 上,與系統(tǒng)的引導(dǎo)程序bootrom分開。這樣可以支持用戶的在線升級(jí),當(dāng)應(yīng)用程序和系統(tǒng)配置需要更新時(shí),直接以文件的形式拷貝到flash中就可以了,非常方便。當(dāng)然,支持TrueFFS是有少量存儲(chǔ)空間的開銷,但這和使用TrueFFS文件系統(tǒng)所獲得的好處相比是微乎其微的。本文作者的創(chuàng)新點(diǎn)是為新推出的Intel StrataFlash系列flash編寫了驅(qū)動(dòng)程序,并在其上構(gòu)建了TrueFFS文件系統(tǒng)。

          參考文獻(xiàn)

          [1] VxWorks5.5Programmer’sGuide. WindRiver Systems,Inc

          [2] Intel StrataFlash Memory(J3) Datasheet. Intel Corporation

          [3] 王明飛,張效義,李鷗,邢明. VxWorks下MPC860的中斷處理機(jī)制及其應(yīng)用. 微計(jì)算機(jī)信息,2005,3:1~2頁(yè)

          [4] 李方敏. 《VxWorks高級(jí)程序設(shè)計(jì)》. 清華大學(xué)出版社. 2004.5

          [5] 陳智育,溫彥軍,陳琪. 《VxWorks程序開發(fā)實(shí)踐》. 人民郵電出版社. 2004.5


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();