<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于VDK的嵌入式文件系統實(shí)現

基于VDK的嵌入式文件系統實(shí)現

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

索引采用類(lèi)似日志記錄的方式,每個(gè)索引作為目錄表的一個(gè)節點(diǎn)。文件進(jìn)行文件操作時(shí),可以根據具體操作要求,實(shí)時(shí)搜索、增刪和標記索引節點(diǎn),文件索引格式如表2所示。

本文引用地址:http://dyxdggzs.com/article/149570.htm

c.jpg


文件存儲時(shí),主線(xiàn)程遍歷文件目錄表的節點(diǎn)信息,計算出當前存儲的起始塊地址,然后向存儲陣列發(fā)出開(kāi)始存儲的命令,隨后將控制權交給中斷域。一旦接收到存儲陣列的地址請求信號,運用程序進(jìn)入中斷,在中斷域中向文件存儲子線(xiàn)程發(fā)出信號,以發(fā)送當前地址信息,如此反復。如果主線(xiàn)程接收到用戶(hù)停止存儲的命令,將立即關(guān)閉中斷,取得控制權,接著(zhù)將最新的文件信息更新到文件目錄表的最后位置,作為最新的節點(diǎn)。
文件下載時(shí),主線(xiàn)程遍歷文件目錄表,找到相應的文件索引信息,然后發(fā)送消息給文件下載子線(xiàn)程,開(kāi)始對指定文件進(jìn)行下載。如果需要刪除某個(gè)文件,在遍歷目錄表找到指定文件的信息后,先發(fā)送地址將存儲陣列相應數據塊的信息擦除,然后將該文件索引信息的“文件標記”置為“刪除”標記。
3.2 地址映射表
地址映射是文件的核心。文件將整個(gè)存儲陣列作為一個(gè)獨立的地址空間,統一編址。通過(guò)定義一個(gè)地址緩沖區,將其相應的偏移地址作為Nand Flash的物理地址,并根據壞塊信息對緩沖區相應偏移地址的單元做壞塊或有效塊的標記。文件系統在實(shí)際操作中,可“查詢(xún)”地址緩沖區,如果地址緩沖區某偏移地址為壞塊標記,則拋棄,繼續查詢(xún)下一個(gè)偏移地址的標記,如為有效塊標記,則將此偏移地址作為存儲陣列的有效物理塊地址。
為提高存儲效率和方便管理,地址緩沖區的內容會(huì )被記錄在數據Nor Flash中,作為一個(gè)“地址映射表”。地址映射表體積不大,燒寫(xiě)到Nor Flash時(shí),可將燒寫(xiě)代碼推入到的“關(guān)鍵域”中,因為燒寫(xiě)時(shí)間小于兩次中斷間隔,這樣既不會(huì )照成中斷延時(shí),又能保證燒寫(xiě)工作一次完成。
硬件平臺上電后,系統啟動(dòng)線(xiàn)程首先讀取Nor Flash中的地址映射表到地址緩沖區,隨后地址緩沖區進(jìn)行文件管理;如需更新壞塊信息,首先更新地址緩沖區,然后將地址緩沖區內容記錄到Nor Flash中。故而名為“映射”,實(shí)質(zhì)是一種“標記”的方法。地址映射機制如圖2所示。

d.jpg


3.3 壞塊回收
Nand Flash芯片在出廠(chǎng)時(shí)就存在隨機壞塊,同時(shí)隨著(zhù)使用時(shí)間的推移,一些有效塊也會(huì )因為編程的原因成為新的壞塊,故而存儲陣列在使用一段時(shí)間后,應當更新壞塊信息??紤]到陣列中文件的安全性和完整性,系統設置為存儲陣列為空時(shí)方能更新壞塊信息。
格式化整個(gè)陣列后,存儲陣列中的FPGA芯片依次讀取每個(gè)數據塊的第一頁(yè)數據,如果發(fā)現非0xFF數據的個(gè)數超過(guò)設定閾值,就認為此數據塊為壞塊。之所以設定閾值而不是一有非0xFF數據就視為壞塊,是為了克服數據讀取的不穩定性。
BF537讀取存儲陣列傳送來(lái)最新壞塊信息后,按照圖2中地址映射表設置的辦法,首先更新地址映射緩沖區,隨即將地址映射緩沖區的內容實(shí)時(shí)更新到數據Nor Flash中,保持兩者的同步。
由于壞塊信息更新的時(shí)間可能較長(cháng),更新工作放在主線(xiàn)程中可能造成較大時(shí)延,影響主線(xiàn)程對用戶(hù)命令的響應,所以壞塊回收與標記可放在子線(xiàn)程中。
3.4 磨損均衡
Nand Flash芯片的編程次數有限,如果對某個(gè)數據塊操作過(guò)于頻繁,將迅速縮短其使用壽命,最終成為壞塊,乃至影響整個(gè)芯片的使用。如果均衡地使用Flash芯片的每個(gè)數據塊,對其操作的概率在較長(cháng)時(shí)間內大體相當,這樣不僅能減少芯片壞塊的比例,也能延長(cháng)存儲陣列的使用壽命。
開(kāi)源和商業(yè)的文件系統,都有較為完備的臟塊回收和磨損均衡的機制,但是其算法往往較復雜,同時(shí)需要將運行信息實(shí)時(shí)更新到Flash芯片中。在存儲速率要求很高的情況下,復雜的機制對存儲速率將不可避免地造成影響。
文件系統關(guān)于磨損均衡的解決方案主要是順序存儲和陣列整理。文件存儲時(shí),并不使用“鏈式存儲”,填充文件刪除所留下的“空洞”,而采用“連續存儲”的方式,將最新的文件存儲到當前所有文件的末尾。這樣不僅編程簡(jiǎn)單,而且存儲陣列在一段時(shí)間后可能會(huì )被耗盡,此時(shí)如果刪除尾部的某些文件,那么下個(gè)的文件可以存儲在這些空余出來(lái)的位置;如果利用陣列整理功能將當前文件“壓縮”為連續緊湊的文件序列,去除文件刪除時(shí)留下的空洞,這樣整理出來(lái)的空間也可以繼續用于下次存儲。
3.5 掉電保護
系統硬件平臺的工作環(huán)境一般較為惡劣,電源模塊隨時(shí)會(huì )有停止供電的可能。故而掉電保護是文件系統設計的重點(diǎn)和難點(diǎn)。
微軟的FNT文件系統的掉電保護主要針對FAT表,本文件系統也是這個(gè)理念。開(kāi)始文件存儲時(shí),子線(xiàn)程對發(fā)送的塊地址數目做一個(gè)計數,當計數量達到設定的閾值N后,將新文件的信息更新到文件目錄表緩沖區中,并立即將文件目錄表更新到Nor Flash中,兩個(gè)更新的操作不能被中斷,故而將這段代碼推入到關(guān)鍵域中。隨后將計數值清零,重新開(kāi)始前一過(guò)程。如果在存儲過(guò)程中掉電,重新上電啟動(dòng)后,開(kāi)始新的存儲,系統會(huì )自動(dòng)查詢(xún)存儲陣列最后一個(gè)文件的狀態(tài)標記,如果標記為暫存,則判定最后一個(gè)文件在存儲時(shí)遇到了掉電的情況,那么系統自動(dòng)擦除該文件接下來(lái)N個(gè)數據塊的信息,然后最后一個(gè)文件開(kāi)始新的存儲。
文件刪除操作是在刪除動(dòng)作完成后才更新文件目錄表,如果在刪除過(guò)程中掉電,那么上電后,用戶(hù)可以對該文件重新刪除。文件的拷貝和剪切是在操作前更新文件目錄表,如果在操作過(guò)程中出現斷電,重新上電后,用戶(hù)可先刪除拷貝后的新的文件,去除殘塊,然后開(kāi)始新的操作。

4 結束語(yǔ)
介紹的文件系統已在項目中成功投入使用,當然仍有許多方面需要改進(jìn)。例如文件目錄表如果較長(cháng),線(xiàn)性遍歷耗時(shí)也會(huì )相對較長(cháng);文件目錄表沒(méi)有備份,如果更新文件列表時(shí)存儲系統出現掉電,該如何應對等。是ADI公司為自己的集成開(kāi)發(fā)環(huán)境量身打造的內核,相對于Linux等開(kāi)源系統來(lái)說(shuō),使用范圍可能較窄,但ADI的DSP使用自然有其得天獨厚的優(yōu)勢。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>