www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于FLASH介質(zhì)嵌入式存儲方案的設(shè)計與實現(xiàn)

摘要  作為一種新型的存儲介質(zhì),FLASH以其優(yōu)良的特性,在嵌入式領(lǐng)域中得到了廣泛的應(yīng)用。本文通過分析FLASH介質(zhì)的自身特性,并結(jié)合嵌入式系統(tǒng)的特點,設(shè)計實現(xiàn)于兼容性、可靠性以及開銷等方面都得到充分優(yōu)化的FLASH存儲系統(tǒng)。
關(guān)鍵字  嵌入式系統(tǒng) 文件系統(tǒng) FLASH

1
引言
    FLASH(閃速存儲器)作為一種安全、快速的存儲體,具有體積小、容量大、成本低、掉電數(shù)據(jù)不丟失等一系列優(yōu)點,已成為嵌入式系統(tǒng)中數(shù)據(jù)和程序最主要的載體。由于FLASH在結(jié)構(gòu)和操作方式上與硬盤、E2ROM等其他存儲介質(zhì)有較大區(qū)別,使用FLASH時必須根據(jù)其自身特性,對存儲系統(tǒng)進行特殊設(shè)計,以保證系統(tǒng)的性能達到最優(yōu)。

2 FLASH
的特點
    FLASH是一種非易失性存儲器NVM(Non-Volatile Memory),根據(jù)結(jié)構(gòu)的不同可以將其分成NOR FLASH和NAND FLASH兩種。但不管哪一種都具有如下特點:

1.  區(qū)塊結(jié)構(gòu)
    FLASH在物理結(jié)構(gòu)上分成若干個區(qū)塊,區(qū)塊之間相互獨立。比如NOR FLASH把整個Memory分成若干個Sector,而NAND FLASH把整個Memory分成若干個Block;

2.  先擦后寫
     由于FLASH的寫操作只能將數(shù)據(jù)位從1寫成0,不能從0寫成1,所以在對存儲器進行寫入之前必須先執(zhí)行擦操作,將預(yù)寫入的數(shù)據(jù)位初始化為1。擦操作的最小單位是一個區(qū)塊,而不是單個字節(jié)。

3.  操作指令
    除了NOR FLASH的讀,F(xiàn)LASH的其它操作不能像RAM那樣,直接對目標(biāo)地址進行總線操作。比如執(zhí)行一次寫操作,它必須輸入一串特殊的指令(NOR FLASH),或者完成一段時序(NAND FLASH)才能將數(shù)據(jù)寫入到FLASH中。

4.  位反轉(zhuǎn)
     由于FLASH固有的電器特性,在讀寫數(shù)據(jù)過程中,偶然會產(chǎn)生一位或幾位數(shù)據(jù)錯誤。這就是位反轉(zhuǎn)。位反轉(zhuǎn)無法避免,只能通過其他手段對結(jié)果進行事后處理。

5.  壞塊
    FLASH在使用過程中,可能導(dǎo)致某些區(qū)塊的損壞。區(qū)塊一旦損壞,將無法進行修復(fù)。如果對已損壞的區(qū)塊進行操作,可能會帶來不可預(yù)測的錯誤。尤其是NAND FLASH在出廠時就可能存在這樣的壞塊(已經(jīng)被標(biāo)識出)。

3
關(guān)鍵設(shè)計
3.1  FLASH通用設(shè)計
    對于一個嵌入式系統(tǒng),設(shè)備的兼容性越好,系統(tǒng)可行性就越好,產(chǎn)品也就越有競爭力。所以,為了兼容不同類型的FLASH設(shè)備,對FLASH進行通用設(shè)計至關(guān)重要。
對于NOR FLASH,數(shù)據(jù)的讀操作可以通過獨立的數(shù)據(jù)總線和地址總線快速完成,然而NOR FLASH的其他操作需要通過特殊的指令來完成,更糟糕的是不同廠商生產(chǎn)的芯片這些指令互不相同。這就導(dǎo)致了設(shè)備的不兼容。

    對于NAND FLASH,也存在這樣的問題。NAND FLASH可以根據(jù)相同的指令讀取芯片的廠商號和設(shè)備號,從而通過識別設(shè)備號調(diào)用對應(yīng)的時序流程實現(xiàn)操作。但是,系統(tǒng)中太多的判斷,會使得程序的結(jié)構(gòu)變得非常復(fù)雜。所以,在一定的條件下,NAND FLASH設(shè)備還是不兼容的。

    為了解決這一問題,一個較好的方法是將FLASH的各個操作指令以及結(jié)構(gòu)特性按照統(tǒng)一的格式存放到FLASH中固定位置。系統(tǒng)初始化時,將這個結(jié)構(gòu)讀入系統(tǒng),通過分析這個結(jié)構(gòu),可以獲得關(guān)于芯片所有相關(guān)信息,包括操作指令,區(qū)塊分布等等。這樣,系統(tǒng)可以輕松實現(xiàn)對不同型號FLASH的所有操作,極大地提高了設(shè)備的擴展性。

3.2  
雙模式文件系統(tǒng)設(shè)計
    嵌入式系統(tǒng)中文件數(shù)據(jù)的存放一般有兩種結(jié)構(gòu),一種是索引格式的線性結(jié)構(gòu),一種是非線性的鏈表式結(jié)構(gòu)。這兩種結(jié)構(gòu)各有優(yōu)缺點。比如對于系統(tǒng)配置、點陣字庫等一些具有固定結(jié)構(gòu)的系統(tǒng)數(shù)據(jù),索引結(jié)構(gòu)比鏈表式結(jié)構(gòu)更有效率。但對于經(jīng)常更新的用戶數(shù)據(jù),鏈表式結(jié)構(gòu)要比索引結(jié)構(gòu)更靈活。如果系統(tǒng)能將兩種結(jié)構(gòu)集成,勢必能將性能發(fā)揮到最優(yōu)。

    實現(xiàn)這種集成的方法是將設(shè)備定義成若干個分區(qū),每個分區(qū)相互獨立,不同分區(qū)可以使用不同的文件模式。這樣,不同類型的數(shù)據(jù)就可以根據(jù)自己的屬性選擇存放的分區(qū)。比如系統(tǒng)數(shù)據(jù)存放在使用索引線性結(jié)構(gòu)的分區(qū),用戶數(shù)據(jù)存放在使用鏈?zhǔn)椒蔷€性結(jié)構(gòu)的分區(qū)。

3.3
壞塊處理
     FLASH中的壞塊處理是一件很棘手的問題,如果沒有有效的管理,對系統(tǒng)的穩(wěn)定性會造成嚴(yán)重影響。一個可行的解決方法是生成一張壞塊表,壞塊表中記錄所有壞塊的塊號,并且按塊號從小到大排序,壞塊表在讀寫過程中動態(tài)更新。當(dāng)讀寫數(shù)據(jù)時,遍歷壞塊表中的塊號,將文件的邏輯地址轉(zhuǎn)換成對應(yīng)FLASH 物理地址,以保證所用的FLASH地址空間不存在壞塊。

4
系統(tǒng)實現(xiàn)
4.1 結(jié)構(gòu)定義

圖1 - 存儲結(jié)構(gòu)
     系統(tǒng)的存儲結(jié)構(gòu)如圖1所示,在FLASH的Block0位置存放整個系統(tǒng)最重要的數(shù)據(jù)——系統(tǒng)記錄SR(System Record)。選擇Block0的原因是一般FLASH出廠時,都能保證Block0是完好的,因此可以避免壞塊問題帶來的不便。SR其實就是一個定義好的數(shù)據(jù)結(jié)構(gòu),它包括媒質(zhì)信息和文件系統(tǒng)信息兩部分。媒質(zhì)信息包括FLASH存儲器的類型、容量、塊類型的大小和數(shù)量(BlockInfo)、FLASH 操作命令(CommandInfo)等。文件系統(tǒng)信息包括版本信息、各邏輯分區(qū)的起始地址(物理地址)和結(jié)束地址。FLASH設(shè)備可以被分成一個或多個邏輯分區(qū),每個邏輯分區(qū)采用的操作方式可以互不相同,如圖1中Device0分區(qū)采用的是線性文件系統(tǒng),Device1分區(qū)采用的是鏈?zhǔn)轿募到y(tǒng)。如果采用的是線性文件系統(tǒng),在分區(qū)信息后面加入文件索引表INDEX起始地址、大小等信息;如果采用的是鏈?zhǔn)轿募到y(tǒng),則加入文件系統(tǒng)頁大小、文件分配表FAT和文件登記表FRT所在的位置等信息。

    文件登記表FRT位于FAT后的頁中,存放著邏輯分區(qū)中文件的信息,如文件總數(shù)、每個文件的文件代號、位置、長度以及校驗?zāi)J健F渲?,校驗?zāi)J接脕順?biāo)識文件讀寫時采用差錯校驗的級別。不同類型的文件采用不同級別的校驗方式。0級不進行校驗,1級ECC校驗,2級逐個字節(jié)比較。

    對于線性文件系統(tǒng)分區(qū),所有文件順序存儲,讀取數(shù)據(jù)時,直接通過INDEX索引得到某個文件的邏輯起始地址,然后從這個地址開始順序搜索,獲取某個偏移位置下的n個連續(xù)Byte。鏈?zhǔn)轿募到y(tǒng)是將地址空間分成若干個等分,即Sector,它是操作的最小單位;一個大文件可以分布在不連續(xù)的多個 Sector中,然后通過FAT表將它們連接起來;在FLASH介質(zhì)上實現(xiàn)鏈?zhǔn)轿募到y(tǒng),Sector大小的選擇是一個關(guān)鍵,由于FLASH的寫操作,擦操作是以Page,Block為單位的,設(shè)小了使大塊結(jié)構(gòu)的FLASH寫操作復(fù)雜,設(shè)多了又浪費空間,因此最好的選擇是將Sector大小設(shè)為擦操作的最小單位16K。

    整個邏輯分區(qū)中,INDEX,FAT,FRT表中的內(nèi)容非常重要,一旦因為異常產(chǎn)生錯誤,可能會影響到所有文件;所以,這三個文件都做了備份處理,備份存放于不同的Block中。同時,在對他們處理時,改寫表中的更新狀態(tài)。0xff表示開始更新,0x00表示更新結(jié)束。在文件系統(tǒng)初始化時,讀取它們的更新狀態(tài),如果表中的更新狀態(tài)為0xff,說明該表存在操作異常,可用備份表更正。

4.2  
層次接口
      整個存儲系統(tǒng)分成三層,如圖2所示。

圖2 – 層次結(jié)構(gòu)


1.     操作系統(tǒng)層
    在整個存儲系統(tǒng)中,操作系統(tǒng)扮演的是使用者的角色。當(dāng)需要數(shù)據(jù)時,它通過調(diào)用文件系統(tǒng)層提供的接口函數(shù)獲取數(shù)據(jù),它不關(guān)心數(shù)據(jù)的來源和正確性。

2.     文件系統(tǒng)層
     文件系統(tǒng)層的任務(wù)是實現(xiàn)它和操作系統(tǒng)層的函數(shù)接口。在實現(xiàn)方式上,線性文件系統(tǒng)和鏈?zhǔn)轿募到y(tǒng)有較大區(qū)別。比如文件讀取mfread,線性文件系統(tǒng)直接讀取所要的字節(jié),而鏈?zhǔn)轿募到y(tǒng)是每次先把對應(yīng)的整個頁讀到文件緩沖區(qū),然后再把所需數(shù)據(jù)拷貝到讀到指定內(nèi)存。文件刪除mfdelete,線性文件系統(tǒng)需要重新整理,不然就會因為大量的數(shù)據(jù)空洞(由于空間太小,無法放入新文件的小塊區(qū)域)使得系統(tǒng)很快沒有可用空間。鏈?zhǔn)轿募到y(tǒng)只需修改文件系統(tǒng)的 FAT和FRT,而不用做其他任何處理,當(dāng)下次寫入操作用到該塊時,自動完成擦除。

3.     驅(qū)動層
     驅(qū)動層的任務(wù)是完成與FLASH之間的通訊協(xié)議,實現(xiàn)它和文件系統(tǒng)層的函數(shù)接口。接口函數(shù)包括頁面讀mPageRead,頁面寫 mPageWrite, 塊擦除mBlockErase, 隨機讀取mRnRead, 隨機寫入mRnWrite。mPageRead,mPageWrite,mBlockErase對整頁或塊進行操作,在鏈?zhǔn)轿募到y(tǒng)中調(diào)用; mRnRead, mRnWrite對字節(jié)單位進行操作,在線性文件系統(tǒng)中調(diào)用。其中mRnWrite比較麻煩,以寫一個Byte為例,它的操作分三步,首先將目標(biāo)塊中的所有數(shù)據(jù)讀到內(nèi)存Buffer中,然后將要寫入的數(shù)據(jù)更新到Buffer,擦除目標(biāo)塊,最后將已更新的Buffer寫回到目標(biāo)塊,這里的Buffer大小是一個Block。由于嵌入式系統(tǒng)的內(nèi)存資源比較緊張,系統(tǒng)采用了塊交換技術(shù)以降低成本,方法是在FLASH中搜索一個空閑塊,用它充當(dāng)Buffer的角色。

5
結(jié)論
    通過上面的設(shè)計,所實現(xiàn)的存儲系統(tǒng)具有以下的特點:
1.  使用通用模式設(shè)計,增強了系統(tǒng)對FLASH設(shè)備的兼容性;
2.  使用雙模式文件結(jié)構(gòu)設(shè)計,使不同類型的數(shù)據(jù)處理效率同時達到最優(yōu);
3.  使用地址映射表,屏蔽了壞塊帶來的隱患,增強了系統(tǒng)的健壯性;
4.  對重要數(shù)據(jù)采用備份保護,保證不會因為斷電等異常導(dǎo)致系統(tǒng)的崩潰,增強了系統(tǒng)穩(wěn)定性;
5.  采用塊交換技術(shù),節(jié)約系統(tǒng)成本;
6.  進行分級差錯校驗,提高了系統(tǒng)的執(zhí)行效率;
因此,本文所設(shè)計的FLASH存儲系統(tǒng),非常適合于嵌入式系統(tǒng)的應(yīng)用。
參考文獻
[1]     Mike Ficco.《如何在嵌入式電子設(shè)備中建立多媒體文件系統(tǒng)》.電子工程專輯,2004.02
[2]     董明,劉加,劉潤生.《適宜于嵌入式多媒體應(yīng)用的Flash文件系統(tǒng)》.21IC,2003.3
[3]     賈東耀.《uClinux下Nor Flash的JFFS2文件系統(tǒng)構(gòu)建》.21IC,2004.12
[4]     吳雨俊.嵌入式系統(tǒng)中的線性Flash文件系統(tǒng)設(shè)計》.21IC,2004.12
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

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

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

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

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

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

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

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

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

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

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

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

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

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

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

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

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

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

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

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

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