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

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于FLASH的嵌入式存儲系統(tǒng)設計

1 引言

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

2 FLASH的特點

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

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

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

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

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

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

3 關鍵設計

3.1 FLASH通用設計

對于一個嵌入式系統(tǒng),設備的兼容性越好,系統(tǒng)可行性就越好,產品也就越有競爭力。所以,為了兼容不同類型的FLASH設備,對FLASH進行通用設計至關重要。

對于NOR FLASH,數(shù)據(jù)的讀操作可以通過獨立的數(shù)據(jù)總線和地址總線快速完成,然而NOR FLASH的其他操作需要通過特殊的指令來完成,更糟糕的是不同廠商生產的芯片這些指令互不相同。這就導致了設備的不兼容。

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

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

3.2 雙模式文件系統(tǒng)設計

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

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

3.3 壞塊處理

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

4 系統(tǒng)實現(xiàn)

4.1 結構定義

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

 

[!--empirenews.page--]


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

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

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

4.2 層次接口

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


 


(1)操作系統(tǒng)層

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

(2)文件系統(tǒng)層

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

(3)驅動層

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

5 結論

通過上面的設計,所實現(xiàn)的存儲系統(tǒng)具有以下的特點:

(1)使用通用模式設計,增強了系統(tǒng)對FLASH設備的兼容性;

(2)使用雙模式文件結構設計,使不同類型的數(shù)據(jù)處理效率同時達到最優(yōu);(3)使用地址映射表,屏蔽了壞塊帶來的隱患,增強了系統(tǒng)的健壯性;

(4)對重要數(shù)據(jù)采用備份保護,保證不會因為斷電等異常導致系統(tǒng)的崩潰,增強了系統(tǒng)穩(wěn)定性;

(5)采用塊交換技術,節(jié)約系統(tǒng)成本;

(6)進行分級差錯校驗,提高了系統(tǒng)的執(zhí)行效率。

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

我們知道 Flash 讀時序里有五大子序列 CMD + ADDR + MODE + DUMMY + READ,前面的文章中痞子衡講過《串行NOR Flash的Continuous read模式》,Continuous r...

關鍵字: CMD ADDR Flash

經過幾十年發(fā)展,嵌入式技術已經用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強的屬性,讓很多非嵌入式領域的同學望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來越多領域,包括了家居,商業(yè),工業(yè),農業(yè)等領域,不僅吸引...

關鍵字: 嵌入式 物聯(lián)網(wǎng) 技術

隨著IT技術飛速發(fā)展,互聯(lián)網(wǎng)已經進入了“物聯(lián)網(wǎng)”時代。物聯(lián)網(wǎng)中需要的大量設備不在依賴人與人之間的交互產生聯(lián)系,更多通過協(xié)議、通信、程序設計等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計算機的智能但并不以通...

關鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機

最近看到APP上,給我推送了很多類似的回答,借此機會,也想著重新審視一下自己的學習歷程,以及結合自身和大牛,分享一些學習經驗,希望對大家有所啟發(fā)和幫助。

關鍵字: APP 嵌入式 C語言

大家好,我是鲏。認識我的朋友都知道,我是一個實踐派,相比研究枯燥的理論知識,我更喜歡做自己想做的項目,用技術來實現(xiàn)自己的想法的感覺真的很棒。所以從大學期間一直到現(xiàn)在,除了工作中的項目外,我依然保持著自己做項目的習慣,有堅...

關鍵字: 系統(tǒng)設計 技術選型 需求分析

萬物智聯(lián)時代,嵌入式技術及其應用的形態(tài)將更加豐富和多元,同時也將日益呈現(xiàn)深度物理融合、混合架構共存、群體智能協(xié)同、網(wǎng)絡安全攸關等諸多新的計算特性。顯然,經典的嵌入式系統(tǒng)體系結構、軟硬件技術和開發(fā)方法都已很難應對新趨勢下的...

關鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機

物聯(lián)網(wǎng)是新一代信息技術的重要組成部分,是互聯(lián)網(wǎng)與嵌入式系統(tǒng)發(fā)展到高級階段的融合。通用計算機經歷了從智慧平臺到互聯(lián)網(wǎng)的獨立發(fā)展道路;嵌入式系統(tǒng)則經歷了智慧物聯(lián)到局域智慧物聯(lián)的獨立發(fā)展道路。

關鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機

Flash Memory 是一種非易失性的存儲器。在嵌入式系統(tǒng)中通常用于存放系統(tǒng)、應用和數(shù)據(jù)等。在 PC 系統(tǒng)中,則主要用在固態(tài)硬盤以及主板 BIOS 中。

關鍵字: Flash 存儲器 嵌入式系統(tǒng)

今天,小編將在這篇文章中為大家?guī)砉た刂靼宓挠嘘P報道,通過閱讀這篇文章,大家可以對工控主板具備清晰的認識,主要內容如下。

關鍵字: 工控主板 嵌入式 主板

隨著工業(yè)4.0、醫(yī)療電子、智能家居、物流管理和電力控制等快速的發(fā)展和推進,嵌入式系統(tǒng)利用自身的技術特點,逐漸成為眾多行業(yè)的標配產品。嵌入式系統(tǒng)具有可控制、可編程、成本低等,它在未來的工業(yè)和生活中有著廣闊的應用前景。在現(xiàn)在...

關鍵字: 嵌入式 物聯(lián)網(wǎng) 人工智能

嵌入式教程

6897 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉