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

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于M25P32 SPI Flash的TFFS設(shè)計(jì)與實(shí)現(xiàn)

          基于M25P32 SPI Flash的TFFS設(shè)計(jì)與實(shí)現(xiàn)

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


          為了實(shí)現(xiàn)DOS層從邏輯上看扇區(qū)是連續(xù)的,可隨時(shí)對(duì)任意bit讀寫操作,F(xiàn)TL必須提供對(duì)芯片的管理,包括向上層(DOS層)提供可以任意讀寫的操作接口,向下對(duì)的擦除、寫入、讀取統(tǒng)一管理,同時(shí)還必須提供磨損均衡,以防止一個(gè)擦除塊提前損壞。

          3.1 FTL的啟動(dòng)過(guò)程分析

          在我們調(diào)用函數(shù)tffsDevCreate創(chuàng)建文件系統(tǒng)時(shí),會(huì)以參數(shù)FL_MOUNT_VOLUME調(diào)用函數(shù)flcall→mountvolume→flmount→mountFTL,函數(shù)mountFTL是FTL層的加載函數(shù)人口,處理過(guò)程首先是初始化FTL,然后就可按下列步驟進(jìn)行:

          (1)查找第一個(gè)合法的unit頭信息

          合法性的判斷依據(jù)是unit header頭上的標(biāo)志CISF..FTL100和部分頭部的flag信息,由于bsp已把FS的相關(guān)信息注冊(cè)到FTL的數(shù)據(jù)結(jié)構(gòu)中,所以,F(xiàn)TL層可以找到第一塊unit,并可以向后查,直到找到合法的unit為止。

          (2)檢驗(yàn)信息合法性

          將所有有用的信息都讀出到內(nèi)部數(shù)據(jù)結(jié)構(gòu)中后,即可檢驗(yàn)信息合法性。由于unit header中的Unit ID和擦除次數(shù)都相同,所以整個(gè)文件系統(tǒng)的共用信息都可以從首先找到的頭中讀出來(lái)。

          (3)給Mount每一個(gè)unit建立page表

          這是mount最重要的過(guò)程,對(duì)每個(gè)unit調(diào)用mountunit()函數(shù),并在mountunit()函數(shù)中首先判斷,如果是非法unit,則作為交換unit,然后對(duì)每個(gè)BAM選項(xiàng)進(jìn)行處理,并對(duì)垃圾BAM、空閑BAM進(jìn)行統(tǒng)計(jì),如果是緩沖的BAM數(shù)據(jù)和交換page的VBM,則將此page的邏輯扇區(qū)信息記錄到內(nèi)存的page表中,以便后續(xù)映射訪問(wèn)查詢使用,而對(duì)于非緩沖的BAM數(shù)據(jù),則不作處理,另外,對(duì)于交換page的VBM,則進(jìn)行記錄。考慮到上述過(guò)程,可見其系統(tǒng)中的page VBM和緩沖的數(shù)據(jù)BAM分布在各個(gè)unit的各個(gè)角落,需要將所有的VBM和緩沖數(shù)據(jù)BAM收集起來(lái)建立整個(gè)交換page表,這是FTL標(biāo)準(zhǔn)層設(shè)計(jì)時(shí)就要決定的。

          (4)檢驗(yàn)邏輯unit的完整性

          當(dāng)所有的unit都mount完成后,每個(gè)邏輯unit都應(yīng)存在,否則mount失敗。

          (5)判斷并關(guān)閉交換page

          如果系統(tǒng)中已存在交換page,則對(duì)系統(tǒng)中存在的交換page進(jìn)行關(guān)閉操作,以便后面檢查page的完整性。

          (6)檢查page的完整性

          系統(tǒng)中的page表必須是完整的,這個(gè)表中包含有緩沖的數(shù)據(jù)BAM映射信息和更重要的page映射信息,因此,缺少任何一個(gè),都將導(dǎo)致DOS的虛擬扇區(qū)無(wú)法映射到相應(yīng)的邏輯扇區(qū)。

          從上述過(guò)程可見,整個(gè)mount過(guò)程是將文件系統(tǒng)信息讀入內(nèi)存數(shù)據(jù)結(jié)構(gòu)并檢驗(yàn)的過(guò)程,這個(gè)Mount PTL過(guò)程完成后,mountvolume ()函數(shù)即將隱蔽的0扇區(qū)和DOS的啟動(dòng)扇區(qū)信息讀入內(nèi)存數(shù)據(jù)結(jié)構(gòu),這樣,DOS就可以訪問(wèn)FTL底層扇區(qū)了。

          3.2 的塊映射

          圖3中,F(xiàn)TL層將DOS上連續(xù)的扇區(qū)映射到上某個(gè)R/W block塊中,同時(shí)在某個(gè)位置記錄一個(gè)映射表(稱為MAP表),該表中記錄了DOS的扇區(qū)映射到Flash中的哪個(gè)block,當(dāng)DOS要進(jìn)行讀操作時(shí),F(xiàn)TL首先查詢這個(gè)MAP,以獲得映射信息,然后讀取相應(yīng)的block信息并返回給DOS,從而實(shí)現(xiàn)讀映射。當(dāng)DOS需要寫入操作時(shí),可能存在將bit0修改為1的情況,于是FTL層將申請(qǐng)一個(gè)新的block塊,并將新信息寫入,然后修改map信息,記錄這個(gè)DOS扇區(qū)已經(jīng)重新映射了,從而實(shí)現(xiàn)寫映射。所以,從邏輯上看,F(xiàn)TL層就實(shí)現(xiàn)了DOS扇區(qū)的映射和FLASH的寫入管理。



          3.3 垃圾收集過(guò)程

          FTL格式化后,可用扇區(qū)將被不斷申請(qǐng)使用,原有扇區(qū)被不斷的廢棄,系統(tǒng)中可用的free扇區(qū)越來(lái)越少,但這并不是由于上層DOS真的使用了這么多扇區(qū),而是FTL為了方便管理、為了不需要每次擦除一塊而付出的管理代價(jià)。所以,當(dāng)系統(tǒng)中的可用扇區(qū)少于用戶要申請(qǐng)寫入的扇區(qū)時(shí),F(xiàn)TL層就必須解決這些垃圾問(wèn)題,這個(gè)過(guò)程在FTL中稱為垃圾回收(garbage collect)。

          當(dāng)FTL中的可用sector小于用戶要申請(qǐng)的扇區(qū)時(shí),系統(tǒng)將啟動(dòng)垃圾收集,但系統(tǒng)中有很多個(gè)unit,到底收集哪個(gè)unit呢?FTL會(huì)考慮磨損均衡,它將采用一個(gè)偽隨機(jī)的算法來(lái)決定收集策略:即用4/256的幾率選擇磨損情況少的塊來(lái)收集;252/256的幾率則根據(jù)垃圾最多為第一條件,當(dāng)垃圾一樣時(shí),判斷磨損次數(shù)小的優(yōu)先選擇。

          3.4 FFL創(chuàng)建的DOS

          的格式化函數(shù)需要調(diào)用tffsDevFormat來(lái)格式化,而不需要調(diào)用dosFsVolFormat來(lái)格式化;另外,在tffsDevFormat格式化參數(shù)中,需要傳人的參數(shù)含有FAT個(gè)數(shù)參數(shù),其原因是DOS是FTL層創(chuàng)建的,而不是在FTL基礎(chǔ)上創(chuàng)建的,下面是TFFS的整個(gè)格式化過(guò)程:

          tffsDevFormat→flcall(FL_FORMAT_VOLUME)→formatVolume→Format→formatFTL;

          其中,函數(shù)formatFTL是執(zhí)行FTL層格式化的操作函數(shù),操作時(shí),首先根據(jù)格式化參數(shù)和BSP參數(shù)對(duì)內(nèi)部數(shù)據(jù)結(jié)構(gòu)初始化;然后再對(duì)每個(gè)unit進(jìn)行格式化,在擦除后,即可寫入unitheader信息和控制BAM值;之后寫入unit No;最后申請(qǐng)每個(gè)page的空間;

          上述formatFTL函數(shù)執(zhí)行完以后,F(xiàn)TL就已經(jīng)準(zhǔn)備好,可以接受上層的扇區(qū)讀寫函數(shù)了(當(dāng)然還沒有內(nèi)容可以讀寫)。


          關(guān)鍵詞: M25P32 Flash TFFS SPI

          評(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); })();