我們?cè)O(shè)計(jì)的閃存I/O軟件自下而上被劃分為四個(gè)層次,分別為硬件驅(qū)動(dòng)層、原始設(shè)備層、設(shè)備層以及設(shè)備節(jié)點(diǎn)。其中硬件驅(qū)動(dòng)層代碼主要負(fù)責(zé)在系統(tǒng)啟動(dòng)時(shí)驅(qū)動(dòng)閃存硬件。從抽象層次上看,它是通過(guò)使用底層的硬件機(jī)制,建立了若干基本的使用閃存硬件的策略代碼。具體過(guò)程由芯片探測(cè)模塊和操作方法模塊來(lái)實(shí)現(xiàn)的。其中芯片探測(cè)模塊主要負(fù)責(zé)探測(cè)CFI接口閃存芯片的器件數(shù)信息[5],包括芯片大小、芯片編程電壓、編程時(shí)間、擦除時(shí)間、擦除區(qū)域分布情況等,并利用這些信息創(chuàng)建出描述芯片物理特性的數(shù)據(jù)結(jié)構(gòu)。而操作方法模塊則負(fù)責(zé)實(shí)現(xiàn)最基本的閃存讀、寫及擦除例程。該模塊在芯片探測(cè)模塊的基礎(chǔ)上,利用硬件的物理信息就能夠?qū)崿F(xiàn)特定閃存芯片的管理和訪問(wèn)方法。
接下來(lái)原始設(shè)備層代碼就把閃存存儲(chǔ)區(qū)從軟件上劃分為幾個(gè)不同的區(qū)域,并用設(shè)備的概念對(duì)各分區(qū)進(jìn)行軟件上的封裝,使每個(gè)分區(qū)設(shè)備都擁有包含自身信息的數(shù)據(jù)結(jié)構(gòu)及設(shè)備操作例程。這樣設(shè)計(jì)的原因,一方面是為了模擬硬盤的物理分區(qū),方便系統(tǒng)對(duì)閃存的管理和使用;另一方面又為上層軟件以字符方式和塊方式訪問(wèn)閃存提供了基礎(chǔ)。具體過(guò)程需要通過(guò)原始設(shè)備實(shí)現(xiàn)模塊、設(shè)備分區(qū)實(shí)現(xiàn)模塊來(lái)實(shí)現(xiàn),而閃存配置管理模塊則為開(kāi)發(fā)人員根據(jù)自身需要任意劃分閃存分區(qū)提供了配置接口,提高了系統(tǒng)的靈活性。需要說(shuō)明的是這三個(gè)模塊的實(shí)現(xiàn)具有一定的依賴關(guān)系,其中箭頭的起始端模塊要依賴于該箭頭指向的模塊。
接著閃存設(shè)備層代碼在低層軟件分區(qū)的基礎(chǔ)上,用字符設(shè)備和塊設(shè)備兩種方式來(lái)使用閃存原始設(shè)備。具體說(shuō),該層主要實(shí)現(xiàn)字符設(shè)備與塊設(shè)備的通用接口例程,即文件操作的通用方法,如打開(kāi)、關(guān)閉、定位、讀、寫等。
最后,閃存設(shè)備節(jié)點(diǎn)層是為了方便應(yīng)用程序以文件形式訪問(wèn)閃存設(shè)備而創(chuàng)建的設(shè)備節(jié)點(diǎn)。它的實(shí)現(xiàn)并不
(1)閃存I/O軟件可移植性的驗(yàn)證
從理論上講,只有硬件設(shè)備驅(qū)動(dòng)層的一部分代碼是與設(shè)備相關(guān)的,而原始設(shè)備層和設(shè)備層代碼都是設(shè)備無(wú)關(guān)的。于是,我們得出如下(表1)的統(tǒng)計(jì)結(jié)果。在新的I/O軟件實(shí)現(xiàn)方案下,閃存設(shè)備相關(guān)代碼為35KB,占總代碼量的24.1%;設(shè)備無(wú)關(guān)代碼為110KB,占總代碼量的75.9%。由此可見(jiàn),我們的實(shí)現(xiàn)方案具有很好的移植性,能夠有效地提高嵌入式產(chǎn)品的開(kāi)發(fā)速度和質(zhì)量。
(2)閃存I/O軟件有效性的驗(yàn)證
I/O軟件的一個(gè)重要性能指標(biāo)是設(shè)備的數(shù)據(jù)吞吐率。當(dāng)應(yīng)用程序訪問(wèn)閃存設(shè)備文件時(shí),由于每次讀/寫請(qǐng)求的數(shù)據(jù)度不同,使得設(shè)備的瞬時(shí)吞吐率也不同。由于我們的I/O系統(tǒng)實(shí)現(xiàn)了閃存設(shè)備的兩種管理方式:字符設(shè)備和塊設(shè)備,因此下面我們首先針對(duì)字符設(shè)備方式測(cè)試它的讀/寫吞吐率(見(jiàn)圖2 和圖3)。
通過(guò)分析圖2、圖3的數(shù)據(jù)我們發(fā)現(xiàn),當(dāng)系統(tǒng)從閃存設(shè)備中讀取或?qū)懭胄K數(shù)據(jù)時(shí),吞吐率會(huì)隨著請(qǐng)求數(shù)據(jù)長(zhǎng)度的增加而增大;但是當(dāng)請(qǐng)求數(shù)據(jù)長(zhǎng)度超過(guò)某一臨界值時(shí),讀/寫吞吐率近似都穩(wěn)定在一個(gè)固定值上。
為了進(jìn)一步驗(yàn)證上述規(guī)律,我們又按照33%的寫請(qǐng)求和67%的讀請(qǐng)求比例,對(duì)各種請(qǐng)求數(shù)據(jù)長(zhǎng)度進(jìn)行了10次讀/寫混合操作測(cè)試,其結(jié)果如圖4所示。由此可看出,在請(qǐng)求數(shù)據(jù)長(zhǎng)度大于512KB之后,讀寫混合的數(shù)據(jù)吞吐率穩(wěn)定在3.59MB/S上,這一結(jié)果與圖2和圖3所示結(jié)果完全一致。并且該吞吐率變化規(guī)律符合常見(jiàn)嵌入式應(yīng)用中閃存的讀、寫特性,其指標(biāo)也基本上能夠達(dá)到應(yīng)用需求。
對(duì)于塊設(shè)備方式,我們主要測(cè)試基于閃存文件系統(tǒng)的一些典型文件操作性能。其結(jié)果如表2所示。該表的第一列代表了執(zhí)行的文件操作,其中create和wirte代表創(chuàng)建文件并向該文件寫入X個(gè)字節(jié)數(shù)據(jù)的操作;open和read則代表打開(kāi)文件并從該文件讀出X個(gè)字節(jié)數(shù)據(jù)的操作。X的大小按照表中第一行數(shù)值的變化而變化。測(cè)試數(shù)據(jù)表明閃存I/O軟件塊設(shè)備功能是正確和有效的。
6、結(jié)束語(yǔ)
本文在分析了嵌入式系統(tǒng)現(xiàn)有的各種閃存管理技術(shù)缺點(diǎn)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一種分層合理、模塊劃分清晰且移植性好的閃存I/O軟件。系統(tǒng)的測(cè)試數(shù)據(jù)表明,該I/O軟件能夠?qū)崿F(xiàn)對(duì)閃存設(shè)備的基本管理和訪問(wèn),可以滿足一般嵌入式系統(tǒng)對(duì)數(shù)據(jù)存儲(chǔ)器的應(yīng)用需要。另一方面,由于硬件平臺(tái)的資源所限,我們只實(shí)現(xiàn)了對(duì)NOR型閃存的管理;隨著性能更優(yōu)的NAND型閃存的廣泛使用,我們下一步的工作就是要將上述軟件代碼移植到NAND型閃存器件上,進(jìn)一步檢驗(yàn)該軟件的性能。
北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷售額同比增長(zhǎng)59.4%,近5倍于...
關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心東京2022年10月18日 /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...
關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSPLua RTOS 是一個(gè)實(shí)時(shí)操作系統(tǒng),設(shè)計(jì)在嵌入式系統(tǒng)上運(yùn)行,對(duì) FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺(tái),并可以輕松移植到其他32位...
關(guān)鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時(shí)雙向通信,是嵌入式系統(tǒng)必不可少的d...
關(guān)鍵字: 異步收發(fā) 傳輸器 嵌入式系統(tǒng)