日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于VDK的嵌入式文件系統(tǒng)實(shí)現(xiàn)

摘要 針對(duì)實(shí)驗(yàn)室開(kāi)發(fā)的基于Nand Flash的高速、大容量存儲(chǔ)系統(tǒng),闡述了利用BF537及其集成開(kāi)發(fā)環(huán)境Visual DSP++的內(nèi)核VDK,實(shí)現(xiàn)嵌入式文件系統(tǒng)的具體方案。同時(shí)簡(jiǎn)要介紹了通過(guò)虛擬地址映射和壞塊標(biāo)記的方法,來(lái)管理Nand Flash芯片中的壞塊,以此實(shí)現(xiàn)文件系統(tǒng)的地址傳輸。
關(guān)鍵詞 VDK;BF537;嵌入式文件系統(tǒng);Nand Flash

    Blackfin(BF)系列DSP是ADI公司和Intel公司共同開(kāi)發(fā)的DSP,采用了一種新型結(jié)構(gòu)MSA。BF系列中的BF537具有較塊的運(yùn)算速度和豐富的接口資源,長(zhǎng)于控制和視頻圖像處理,且其帶有符合IEEE 802.3規(guī)范的以太網(wǎng)控制器,如果在BF537中移植帶有LwIP協(xié)議棧的VDK工程,并利用網(wǎng)絡(luò)芯片對(duì)537進(jìn)行擴(kuò)展,就能便捷地實(shí)現(xiàn)嵌入式系統(tǒng)與因特網(wǎng)的通信。
    由于低功耗、數(shù)據(jù)非易失、存儲(chǔ)速度快、存儲(chǔ)密度大等優(yōu)點(diǎn),Nand Flash在閃存行列中脫穎而出,常被用作大容量數(shù)據(jù)的存儲(chǔ)媒質(zhì)。隨著存儲(chǔ)系統(tǒng)容量和存取速度的不斷提升,構(gòu)建嵌入式文件系統(tǒng)來(lái)實(shí)現(xiàn)存儲(chǔ)系統(tǒng)中數(shù)據(jù)的管理。

1 VDK與嵌入式文件系統(tǒng)
1.1 VDK簡(jiǎn)介
    VDK(Visual DSP Kernel)是ADI公司針對(duì)Blackfin系列DSP處理器特別開(kāi)發(fā)的“小而健壯”的輕量級(jí)內(nèi)核,特別適合編寫(xiě)需要精確控制的代碼,是一個(gè)提供了豐富的API函數(shù)庫(kù),同時(shí)支持輕量級(jí)IP協(xié)議棧(LwIP)的RTOS。
    VDK功能全面,具有線程、信號(hào)量、事件與事件位、消息、關(guān)鍵域與禁止調(diào)度域等特征。內(nèi)核通過(guò)協(xié)同多任務(wù)和時(shí)間片輪轉(zhuǎn)的方式來(lái)管理和協(xié)調(diào)線程,這種方式稱(chēng)為“調(diào)度”。VDK運(yùn)用程序可分為兩部分:線程域和中斷域。線程域中的調(diào)度稱(chēng)為“軟件調(diào)度”,由內(nèi)核完成;中斷域中的調(diào)度稱(chēng)為“硬件調(diào)度”,由中斷控制器完成。后者的優(yōu)先級(jí)高于前者,而設(shè)備驅(qū)動(dòng)是兩者溝通的橋梁。
    然而VDK只是一個(gè)“裸核”,不提供文件系統(tǒng)的支持,如果需要基于VDK實(shí)現(xiàn)文件系統(tǒng),用戶(hù)必須自己編寫(xiě)各種接口函數(shù)的代碼。
1.2 基于Nand Flash的嵌入式文件系統(tǒng)簡(jiǎn)介
    Flash文件系統(tǒng)主要有開(kāi)源的和商業(yè)的兩類(lèi)。開(kāi)源的Flash文件系統(tǒng),有JFFS、JFFS2、YAFS等。JFFS采用高效的日志文件系統(tǒng),具有掉電安全、臟塊回收、磨損均衡等特性,主要用于嵌入式Linux。Red Hat公司后來(lái)在JFFS基礎(chǔ)上進(jìn)行升級(jí),發(fā)展出JSSF2。JSSF2采用哈希表的日志節(jié)點(diǎn)結(jié)構(gòu),加快了節(jié)點(diǎn)的操作速度。YAFFS也是基于日志結(jié)構(gòu)的文件系統(tǒng),相比JFFS,YAFFS減少了一些功能,但降低了內(nèi)存占用率,提高了訪問(wèn)速度。
    商業(yè)Flash文件系統(tǒng)主要有TrueFFS和TransactionFFS。前者用于仿真硬盤(pán)驅(qū)動(dòng),利用冗余數(shù)據(jù)結(jié)構(gòu)保證可靠的數(shù)據(jù)操作,并能均勻使用Flash。后者使用事務(wù)記錄方案,運(yùn)用程序可通過(guò)FAL訪問(wèn)文件系統(tǒng)。

2 嵌入式系統(tǒng)的硬件平臺(tái)
    基于BF537的嵌入式系統(tǒng)硬件平臺(tái)的框圖如圖1所示。


    LAN8187用于對(duì)BF537的以太網(wǎng)控制器進(jìn)行擴(kuò)展,使其能夠通過(guò)以太網(wǎng)絡(luò)與上位機(jī)進(jìn)行通信。
    BF537外掛了兩片Nor Flash芯片作為其異步外存。程序Nor Flash用于存儲(chǔ)運(yùn)行程序代碼,數(shù)據(jù)Flash主要用于存儲(chǔ)文件系統(tǒng)運(yùn)行所需的數(shù)據(jù),例如文件目錄表、地址映射表等。XC4VFX100用于處理數(shù)據(jù)流的速度、解析和轉(zhuǎn)發(fā)BF537的命令,配合BF537對(duì)存儲(chǔ)陣列進(jìn)行管理。

3 嵌入式文件系統(tǒng)設(shè)計(jì)
3.1 文件目錄表
    考慮到存儲(chǔ)系統(tǒng)的存儲(chǔ)速度較快,且文件數(shù)目較少的特點(diǎn),文件目錄表采用線性表的方式。格式如表1所示,其中的“更新次數(shù)”用于記錄存放文件目錄表數(shù)據(jù)Nor Flash的編程次數(shù)。


    文件系統(tǒng)采用Nor Flash中的一個(gè)64 kB的數(shù)據(jù)塊實(shí)時(shí)記錄文件目錄表。出于磨損均衡的考慮,如果數(shù)據(jù)塊的編程次數(shù)超過(guò)規(guī)定的閾值,文件系統(tǒng)將自動(dòng)跳到Nor Flash的下一個(gè)64 kB的數(shù)據(jù)塊記錄文件目錄表。[!--empirenews.page--]
    文件索引采用類(lèi)似日志記錄的方式,每個(gè)文件索引作為文件目錄表的一個(gè)節(jié)點(diǎn)。文件系統(tǒng)進(jìn)行文件操作時(shí),可以根據(jù)具體操作要求,實(shí)時(shí)搜索、增刪和標(biāo)記索引節(jié)點(diǎn),文件索引格式如表2所示。


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


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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶(hù)體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉