
我們設(shè)計(jì)的閃存I/O軟件自下而上被劃分為四個層次,分別為硬件驅(qū)動層、原始設(shè)備層、設(shè)備層以及設(shè)備節(jié)點(diǎn)。其中硬件驅(qū)動層代碼主要負(fù)責(zé)在系統(tǒng)啟動時驅(qū)動閃存硬件。從抽象層次上看,它是通過使用底層的硬件機(jī)制,建立了若干基本的使用閃存硬件的策略代碼。具體過程由芯片探測模塊和操作方法模塊來實(shí)現(xiàn)的。其中芯片探測模塊主要負(fù)責(zé)探測CFI接口閃存芯片的器件數(shù)信息[5],包括芯片大小、芯片編程電壓、編程時間、擦除時間、擦除區(qū)域分布情況等,并利用這些信息創(chuàng)建出描述芯片物理特性的數(shù)據(jù)結(jié)構(gòu)。而操作方法模塊則負(fù)責(zé)實(shí)現(xiàn)最基本的閃存讀、寫及擦除例程。該模塊在芯片探測模塊的基礎(chǔ)上,利用硬件的物理信息就能夠?qū)崿F(xiàn)特定閃存芯片的管理和訪問方法。
接下來原始設(shè)備層代碼就把閃存存儲區(qū)從軟件上劃分為幾個不同的區(qū)域,并用設(shè)備的概念對各分區(qū)進(jìn)行軟件上的封裝,使每個分區(qū)設(shè)備都擁有包含自身信息的數(shù)據(jù)結(jié)構(gòu)及設(shè)備操作例程。這樣設(shè)計(jì)的原因,一方面是為了模擬硬盤的物理分區(qū),方便系統(tǒng)對閃存的管理和使用;另一方面又為上層軟件以字符方式和塊方式訪問閃存提供了基礎(chǔ)。具體過程需要通過原始設(shè)備實(shí)現(xiàn)模塊、設(shè)備分區(qū)實(shí)現(xiàn)模塊來實(shí)現(xiàn),而閃存配置管理模塊則為開發(fā)人員根據(jù)自身需要任意劃分閃存分區(qū)提供了配置接口,提高了系統(tǒng)的靈活性。需要說明的是這三個模塊的實(shí)現(xiàn)具有一定的依賴關(guān)系,其中箭頭的起始端模塊要依賴于該箭頭指向的模塊。
接著閃存設(shè)備層代碼在低層軟件分區(qū)的基礎(chǔ)上,用字符設(shè)備和塊設(shè)備兩種方式來使用閃存原始設(shè)備。具體說,該層主要實(shí)現(xiàn)字符設(shè)備與塊設(shè)備的通用接口例程,即文件操作的通用方法,如打開、關(guān)閉、定位、讀、寫等。
最后,閃存設(shè)備節(jié)點(diǎn)層是為了方便應(yīng)用程序以文件形式訪問閃存設(shè)備而創(chuàng)建的設(shè)備節(jié)點(diǎn)。它的實(shí)現(xiàn)并不
(1)閃存I/O軟件可移植性的驗(yàn)證
從理論上講,只有硬件設(shè)備驅(qū)動層的一部分代碼是與設(shè)備相關(guān)的,而原始設(shè)備層和設(shè)備層代碼都是設(shè)備無關(guān)的。于是,我們得出如下(表1)的統(tǒng)計(jì)結(jié)果。在新的I/O軟件實(shí)現(xiàn)方案下,閃存設(shè)備相關(guān)代碼為35KB,占總代碼量的24.1%;設(shè)備無關(guān)代碼為110KB,占總代碼量的75.9%。由此可見,我們的實(shí)現(xiàn)方案具有很好的移植性,能夠有效地提高嵌入式產(chǎn)品的開發(fā)速度和質(zhì)量。

(2)閃存I/O軟件有效性的驗(yàn)證
I/O軟件的一個重要性能指標(biāo)是設(shè)備的數(shù)據(jù)吞吐率。當(dāng)應(yīng)用程序訪問閃存設(shè)備文件時,由于每次讀/寫請求的數(shù)據(jù)度不同,使得設(shè)備的瞬時吞吐率也不同。由于我們的I/O系統(tǒng)實(shí)現(xiàn)了閃存設(shè)備的兩種管理方式:字符設(shè)備和塊設(shè)備,因此下面我們首先針對字符設(shè)備方式測試它的讀/寫吞吐率(見圖2 和圖3)。


通過分析圖2、圖3的數(shù)據(jù)我們發(fā)現(xiàn),當(dāng)系統(tǒng)從閃存設(shè)備中讀取或?qū)懭胄K數(shù)據(jù)時,吞吐率會隨著請求數(shù)據(jù)長度的增加而增大;但是當(dāng)請求數(shù)據(jù)長度超過某一臨界值時,讀/寫吞吐率近似都穩(wěn)定在一個固定值上。
為了進(jìn)一步驗(yàn)證上述規(guī)律,我們又按照33%的寫請求和67%的讀請求比例,對各種請求數(shù)據(jù)長度進(jìn)行了10次讀/寫混合操作測試,其結(jié)果如圖4所示。由此可看出,在請求數(shù)據(jù)長度大于512KB之后,讀寫混合的數(shù)據(jù)吞吐率穩(wěn)定在3.59MB/S上,這一結(jié)果與圖2和圖3所示結(jié)果完全一致。并且該吞吐率變化規(guī)律符合常見嵌入式應(yīng)用中閃存的讀、寫特性,其指標(biāo)也基本上能夠達(dá)到應(yīng)用需求。

對于塊設(shè)備方式,我們主要測試基于閃存文件系統(tǒng)的一些典型文件操作性能。其結(jié)果如表2所示。該表的第一列代表了執(zhí)行的文件操作,其中create和wirte代表創(chuàng)建文件并向該文件寫入X個字節(jié)數(shù)據(jù)的操作;open和read則代表打開文件并從該文件讀出X個字節(jié)數(shù)據(jù)的操作。X的大小按照表中第一行數(shù)值的變化而變化。測試數(shù)據(jù)表明閃存I/O軟件塊設(shè)備功能是正確和有效的。

6、結(jié)束語
本文在分析了嵌入式系統(tǒng)現(xiàn)有的各種閃存管理技術(shù)缺點(diǎn)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一種分層合理、模塊劃分清晰且移植性好的閃存I/O軟件。系統(tǒng)的測試數(shù)據(jù)表明,該I/O軟件能夠?qū)崿F(xiàn)對閃存設(shè)備的基本管理和訪問,可以滿足一般嵌入式系統(tǒng)對數(shù)據(jù)存儲器的應(yīng)用需要。另一方面,由于硬件平臺的資源所限,我們只實(shí)現(xiàn)了對NOR型閃存的管理;隨著性能更優(yōu)的NAND型閃存的廣泛使用,我們下一步的工作就是要將上述軟件代碼移植到NAND型閃存器件上,進(jìn)一步檢驗(yàn)該軟件的性能。
北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...
關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心東京2022年10月18日 /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國際物流有限公司(Nipp...
關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSPLua RTOS 是一個實(shí)時操作系統(tǒng),設(shè)計(jì)在嵌入式系統(tǒng)上運(yùn)行,對 FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺,并可以輕松移植到其他32位...
關(guān)鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時雙向通信,是嵌入式系統(tǒng)必不可少的d...
關(guān)鍵字: 異步收發(fā) 傳輸器 嵌入式系統(tǒng)