,, , ,
(1.中國(guó)人民解放軍32184部隊(duì),北京 100072;2.北京北方車(chē)輛集團(tuán)有限公司,北京 100072;3.北京航天測(cè)控技術(shù)有限公司,北京 100041)
在數(shù)據(jù)采集、狀態(tài)監(jiān)測(cè)以及故障診斷等應(yīng)用領(lǐng)域,隨著目標(biāo)對(duì)象的技術(shù)含量越來(lái)越高、結(jié)構(gòu)組成越來(lái)越復(fù)雜,所需要的技術(shù)參數(shù)越來(lái)越多,對(duì)嵌入式系統(tǒng)存儲(chǔ)容量的要求也越來(lái)越高。大容量NAND Flash存儲(chǔ)器的出現(xiàn)和應(yīng)用,意味著可以存儲(chǔ)更大量的數(shù)據(jù)或者說(shuō)更長(zhǎng)的數(shù)據(jù)覆蓋周期,為更深層次的數(shù)據(jù)挖掘奠定了數(shù)據(jù)基礎(chǔ)。
通常,對(duì)大容量NAND Flash存儲(chǔ)器的使用主要采用直接使用和移植FATS文件系統(tǒng)兩種方法。直接使用法是最基本和直接的方法,每次的下載或刪除總是從存儲(chǔ)器零地址開(kāi)始,無(wú)法控制所需數(shù)據(jù)的大小,同時(shí),刪除后再次寫(xiě)入也是再次從原起始地址開(kāi)始,造成存儲(chǔ)器的不均衡使用,影響使用壽命;移植FATS文件系統(tǒng)法是在嵌入式系統(tǒng)中軟件移植了FATS文件系統(tǒng),其優(yōu)點(diǎn)不用贅述,但這種方法對(duì)硬件性能和資源的要求相對(duì)較高,而且軟件設(shè)計(jì)相對(duì)復(fù)雜,因此在應(yīng)用于諸如成本限制嚴(yán)格、硬件系統(tǒng)資源相對(duì)不足的場(chǎng)景中時(shí),為實(shí)現(xiàn)分區(qū)管理而占用過(guò)多的系統(tǒng)資源或?yàn)榇硕枰岣咔度胧较到y(tǒng)性能不是一個(gè)最佳選擇。
實(shí)際經(jīng)驗(yàn)表明,離線(xiàn)分析中所需要的關(guān)鍵數(shù)據(jù)通常只是全部存儲(chǔ)數(shù)據(jù)的某一個(gè)或幾個(gè)片段,并不需要把所有的數(shù)據(jù)全部下載。因此設(shè)計(jì)一種分區(qū)管理策略,盡量減少數(shù)據(jù)下載數(shù)量,使用戶(hù)可以根據(jù)故障時(shí)機(jī)等相關(guān)信息僅下載關(guān)鍵數(shù)據(jù),同時(shí),實(shí)現(xiàn)存儲(chǔ)器存儲(chǔ)區(qū)間的均衡使用,是提高嵌入式系統(tǒng)大容量存儲(chǔ)器使用性?xún)r(jià)比的最佳選擇。
鑒于上述分析,本文提出通過(guò)建立NAND Flash存儲(chǔ)器分區(qū)屬性的方法,描述數(shù)據(jù)分區(qū),控制數(shù)據(jù)存儲(chǔ),形成多個(gè)數(shù)據(jù)文件。用戶(hù)通過(guò)分區(qū)屬性獲得數(shù)據(jù)文件中的數(shù)據(jù)起始時(shí)間、結(jié)束時(shí)間以及進(jìn)行數(shù)據(jù)寫(xiě)入、導(dǎo)出、刪除等操作所需要的相關(guān)信息,使用戶(hù)對(duì)數(shù)據(jù)文件的操作類(lèi)似于常規(guī)文件管理系統(tǒng)下對(duì)標(biāo)準(zhǔn)文件的操作。該方法無(wú)需升級(jí)硬件系統(tǒng)、無(wú)須移植文件管理系統(tǒng)、無(wú)須編寫(xiě)復(fù)雜的驅(qū)動(dòng)模塊,在非易失性鐵電存儲(chǔ)器(FRAM,如FM25640-S)的輔助下,實(shí)現(xiàn)了分區(qū)管理,解決了對(duì)大容量NAND Flash存儲(chǔ)器的分區(qū)管理問(wèn)題。
NAND Flash分區(qū)設(shè)計(jì)的總體思想是將其全部可用空間劃分為多個(gè)由指定個(gè)數(shù)的連續(xù)塊(Block)構(gòu)成的分區(qū),每個(gè)分區(qū)作為一個(gè)獨(dú)立的“文件”來(lái)看待,并以文件屬性的方式表征分區(qū)屬性,描述分區(qū)在NAND Flash存儲(chǔ)器中的位置、相關(guān)操作狀態(tài)以及該屬性在FRAM中的存儲(chǔ)地址等。套用我們熟悉的硬盤(pán)及FAT文件系統(tǒng)的概念,本思想可以形象地描述為將一個(gè)大硬盤(pán)劃分為多個(gè)具有唯一編號(hào)的微硬盤(pán),每個(gè)微硬盤(pán)上只存儲(chǔ)一個(gè)文件名固定的文件。這里文件名以編號(hào)的形式出現(xiàn),文件屬性被定義為除指明文件狀態(tài)、寫(xiě)位置等屬性外,還包含微硬盤(pán)起始地址、空間大小等一些有別于標(biāo)準(zhǔn)文件屬性的屬性,即包含了分區(qū)和分區(qū)內(nèi)數(shù)據(jù)的屬性。分區(qū)屬性包括分區(qū)標(biāo)號(hào)(文件號(hào))、起始地址以及文件屬性在FRAM中的存儲(chǔ)位置等;分區(qū)內(nèi)數(shù)據(jù)的屬性對(duì)應(yīng)文件屬性中動(dòng)態(tài)變化的部分,包括數(shù)據(jù)結(jié)束日期時(shí)間、寫(xiě)位置等。文件屬性中的分區(qū)屬性在Flash格式化時(shí)設(shè)定,分區(qū)內(nèi)數(shù)據(jù)的屬性隨文件的大小動(dòng)態(tài)維護(hù)。
上述設(shè)計(jì)思想的數(shù)據(jù)結(jié)構(gòu)描述如下:
define MAX_FLASH_FILE_NUM 20 //定義分區(qū)總數(shù)
define MAX_FILE_LENGTH_PAGE 12800//分區(qū)空間(文件)大小,以Flash頁(yè)為單位
typedef struct
{
byte unFOM;//文件標(biāo)志:bit0-空/bit1-滿(mǎn)/bit2-正在寫(xiě)/bit3-被導(dǎo)出/bit4-被覆蓋
byte bFileNo;//文件號(hào)
byte bPhyFileNo;//物理文件號(hào),決定文件屬性在FRAM中的實(shí)際地址
unsigned long ulStartPage;//文件起始Flash頁(yè)
DWORDTIME stCreateDate;//數(shù)據(jù)起始日期時(shí)間
DWORDTIME stEndDate;//數(shù)據(jù)結(jié)束日期時(shí)間
unsigned long ulPageWtr; //當(dāng)前寫(xiě)位置
}FLASH_FILE_PREP;
FLASH_FILE_PREP結(jié)構(gòu)所定義的文件屬性保存在FRAM中,并在數(shù)據(jù)操作過(guò)程中被動(dòng)態(tài)維護(hù)。其中,unFOM定義了當(dāng)前文件的操作狀態(tài),包括空、滿(mǎn)、正在寫(xiě)、被導(dǎo)出、被覆蓋等,對(duì)應(yīng)位置1表示有效,0表示無(wú)效;bFileNo定義了當(dāng)前文件的文件號(hào),對(duì)應(yīng)Flash中的一個(gè)唯一分區(qū),是該分區(qū)的識(shí)別標(biāo)識(shí);bPhyFileNo這里稱(chēng)為物理文件號(hào),它實(shí)際表明了對(duì)應(yīng)文件的文件屬性保存在FRAM中的實(shí)際地址序號(hào),在操作中可通過(guò)該編號(hào)獲得文件屬性在FRAM中的實(shí)際保存地址;stCreateDate和stEndDate分別表示了保存在該文件中的數(shù)據(jù)的起始時(shí)間和結(jié)束時(shí)間,表示為“年、月、日、時(shí)、分、秒”,為索引定位數(shù)據(jù)提供時(shí)間標(biāo)識(shí);ulStartPage指定了該文件在Flash中的起始頁(yè)地址,也可以形象地稱(chēng)為是“文件首地址”;ulPageWtr表示當(dāng)前寫(xiě)位置,是相對(duì)于文件首地址的偏移量(偏移頁(yè)數(shù)),以用于計(jì)算當(dāng)前數(shù)據(jù)將要寫(xiě)入到NAND Flash存儲(chǔ)器哪一頁(yè),同時(shí)該元素也表征了文件中有效數(shù)據(jù)的大小。
上述代碼中做了兩個(gè)宏定義,MAX_FLASH_FILE_NUM表示整個(gè)Flash存儲(chǔ)器被劃分為多少個(gè)分區(qū),即文件個(gè)數(shù);MAX_FILE_LENGTH_PAGE表示每個(gè)分區(qū)分配的總頁(yè)數(shù),即文件最大容量。這兩個(gè)宏定義由用戶(hù)根據(jù)實(shí)際工程的需要,結(jié)合所選用的Flash存儲(chǔ)器指標(biāo)和具體存儲(chǔ)管理需求設(shè)定。
在首次(或后續(xù)必要時(shí))使用時(shí),需要對(duì)Flash存儲(chǔ)器進(jìn)行格式化,即完成分區(qū)和分區(qū)內(nèi)數(shù)據(jù)屬性的初始化,其操作過(guò)程描述如下:
1)分配文件號(hào),并初始化文件屬性,除文件空狀態(tài)位置1外,其它屬性位均為0;
2)分配物理文件號(hào),確定當(dāng)前文件屬性在FRAM中的存儲(chǔ)地址序號(hào)(=文件號(hào));
3)設(shè)置文件的起始頁(yè)碼(=文件號(hào)×MAX_FILE_LENGTH_PAGE);
4)文件寫(xiě)位置初始化(=文件的起始頁(yè)碼)。
4)保存文件屬性至FRAM。
5)選定0號(hào)文件作為當(dāng)前文件,并設(shè)置數(shù)據(jù)起始日期時(shí)間。
上述結(jié)構(gòu)中用到了自定義的數(shù)據(jù)類(lèi)型DWORDTIME,用于表示日期時(shí)間,其定義如下:
typedef struct
{
byte year:5;//年
byte mon:5;//月
byte sec:6;//秒
byte day:5;//日
byte hour:5;//小時(shí)
byte min:6;//分鐘
} DWORDTIME ;
為實(shí)現(xiàn)上述設(shè)計(jì)思想,F(xiàn)RAM需要存儲(chǔ)每個(gè)文件的文件屬性,并在NAND Flash的讀寫(xiě)等操作過(guò)程中實(shí)時(shí)維護(hù)。由于文件屬性直接決定了整個(gè)NAND Flash存儲(chǔ)器以及當(dāng)前文件的使用情況,其正確性與否直接影響數(shù)據(jù)的讀寫(xiě)位置以及相關(guān)操作,所以保證文件屬性的正確性具有極其關(guān)鍵和重要的作用。由于嵌入式系統(tǒng)本身的特性,任何情況下的掉電都是“正?!钡?,所以必須考慮采取措施保證對(duì)文件屬性保存的正確性。
對(duì)于使用FRAM的嵌入式系統(tǒng)來(lái)講,影響文件屬性正確性的因素主要包括FRAM的可靠性程度和軟件策略的設(shè)計(jì)。對(duì)于FRAM的可靠性程度可以由硬件本身來(lái)保證。對(duì)于軟件策略來(lái)講,主要是對(duì)數(shù)據(jù)保存策略和完整性判讀的處理,這里采用了“三取二”的保存與判讀策略,即對(duì)要保存的數(shù)據(jù)在不同的存儲(chǔ)空間連續(xù)保存三次,取其中兩次相一致的數(shù)據(jù)作為最終結(jié)果。其原理是通過(guò)軟件設(shè)計(jì)強(qiáng)制這種存儲(chǔ)操作是連續(xù)的,若第i次存儲(chǔ)未完成,則另外兩次的存儲(chǔ)將不會(huì)進(jìn)行,也就是說(shuō),每次的存儲(chǔ)操作僅針對(duì)當(dāng)前存儲(chǔ)區(qū),其他的兩個(gè)存儲(chǔ)區(qū)均不會(huì)被更新,因此,必然
圖1 文件寫(xiě)入流程圖
存在兩次完全一致的存儲(chǔ)結(jié)果,而且這兩次完全一致的存儲(chǔ)結(jié)果必然是完整且有效的。
根據(jù)用戶(hù)對(duì)整個(gè)NAND Flash空間的分區(qū)定義,將對(duì)FRAM劃分為MAX_FLASH_FILE_NUM個(gè)連續(xù)存儲(chǔ)空間,每個(gè)空間的大小為3×sizeof(FLASH_FILE_PREP)字節(jié),這樣,每個(gè)文件號(hào)對(duì)應(yīng)的FRAM存儲(chǔ)起始地址的為:bPhyFileNo×3×sizeof(FLASH_FILE_PREP)。由此,根據(jù)“三取二”的判讀策略,無(wú)論在任何情況下,在連續(xù)保存的3次文件屬性中,總存在至少兩次是相同的,取這兩次結(jié)果中的一個(gè)作為最終結(jié)果使用
在對(duì)NAND Flash存儲(chǔ)器進(jìn)行格式化時(shí),一方面分配了文件號(hào),同時(shí)也確定了物理文件號(hào),分配了每個(gè)文件的文件屬性在FRAM中的存儲(chǔ)地址和空間,初始化了文件屬性中的相關(guān)參數(shù),而且,在格式化時(shí),對(duì)于每個(gè)文件的文件屬性都進(jìn)行了3次存儲(chǔ),為后續(xù)的利用奠定了基礎(chǔ)。
在系統(tǒng)上電后,若是首次操作,則必須進(jìn)行格式化操作,以獲得分區(qū)和分區(qū)內(nèi)數(shù)據(jù)屬性的初始參數(shù),并選定首個(gè)操作文件;否則,則從FRAM中讀取當(dāng)前操作的文件號(hào),計(jì)算對(duì)應(yīng)的文件屬性在FRAM中的地址以讀取相應(yīng)的文件屬性,至此存儲(chǔ)器即可進(jìn)入正常的工作狀態(tài)。根據(jù)NAND Flash存儲(chǔ)器的操作特性,數(shù)據(jù)的讀寫(xiě)是按頁(yè)進(jìn)行,因此需要在緩存中的數(shù)據(jù)達(dá)到一頁(yè)的容量時(shí),先將數(shù)據(jù)寫(xiě)入NAND Flash存儲(chǔ)器,即寫(xiě)入當(dāng)前文件的ulPageWtr頁(yè),之后再更新文件結(jié)束時(shí)間和文件狀態(tài)標(biāo)志。這樣的操作順序保證了文件中數(shù)據(jù)的完整性,但不足之處是可能造成部分?jǐn)?shù)據(jù)(因未達(dá)到一頁(yè)的數(shù)據(jù)量)的丟失,但由于丟失的這部分?jǐn)?shù)據(jù)是整個(gè)嵌入式系統(tǒng)掉電前瞬間的部分,這部分?jǐn)?shù)據(jù)對(duì)目標(biāo)對(duì)象來(lái)講是可以舍棄的。實(shí)際驗(yàn)證表明其對(duì)后續(xù)的數(shù)據(jù)分析基本沒(méi)有影響。
在每次寫(xiě)入數(shù)據(jù)時(shí),軟件將判讀當(dāng)前文件的存儲(chǔ)情況。若當(dāng)前文件未達(dá)到設(shè)定的大小(分區(qū)被賦予的最大值),則在數(shù)據(jù)寫(xiě)入后,文件寫(xiě)位置(頁(yè)碼)ulPageWtr遞增并更新文件結(jié)束時(shí)間,然后保存文件屬性指FRAM;若文件達(dá)到設(shè)定的大小,即文件滿(mǎn),則需要在更新文件標(biāo)識(shí)、文件結(jié)束時(shí)間,并保存文件屬性指FRAM,之后通過(guò)“文件號(hào)=(文件號(hào)+1)% MAX_FLASH_FILE_NUM”的算法,計(jì)算新的文件號(hào),并從FRAM中讀出新文件號(hào)的文件屬性,根據(jù)文件標(biāo)志確定下一個(gè)文件的文件號(hào),并進(jìn)行初始化工作(包括文件標(biāo)識(shí)設(shè)置、更新文件創(chuàng)建時(shí)間、文件頁(yè)碼置零等),之后保存文件屬性至FRAM,至此形成了一個(gè)新的文件,并可以開(kāi)始保存數(shù)據(jù)。文件號(hào)采用“文件號(hào)=(文件號(hào)+1)% MAX_FLASH_FILE_NUM”的算法,保證了存儲(chǔ)過(guò)程中的文件號(hào)在0~MAX_FLASH_FILE_NUM-1之間輪回,實(shí)現(xiàn)多區(qū)循環(huán)覆蓋使用。其軟件設(shè)計(jì)流程如圖1所示。
根據(jù)上述設(shè)計(jì),所需保存的數(shù)據(jù)將不斷地被寫(xiě)入緩存然后轉(zhuǎn)存至Flash中,因此文件屬性的更新維護(hù)每寫(xiě)一頁(yè)便要進(jìn)行一次,而且必須在寫(xiě)頁(yè)數(shù)據(jù)操作周期間隔內(nèi)完成,同時(shí)需要采用保證數(shù)據(jù)完整性的存儲(chǔ)措施(如每次更新時(shí),F(xiàn)RAM連續(xù)保存三次文件屬性,讀出時(shí),內(nèi)容完全相同的兩次認(rèn)為是正確的),這就要求對(duì)于文件屬性的存儲(chǔ)是經(jīng)常的且不能耗費(fèi)過(guò)多的時(shí)間,這也是設(shè)計(jì)中采取FRAM的一個(gè)重要原因。
由此,嵌入式系統(tǒng)采集到的數(shù)據(jù)可自動(dòng)輪回使用NAND Flash存儲(chǔ)器的存儲(chǔ)空間,達(dá)到存儲(chǔ)器空間均衡使用的目的,同時(shí),數(shù)據(jù)寫(xiě)入過(guò)程中,文件屬性中的數(shù)據(jù)結(jié)束時(shí)間、文件寫(xiě)位置以及文件狀態(tài)標(biāo)識(shí)等不斷更新維護(hù),并保存在FRAM中,實(shí)現(xiàn)了掉電后存儲(chǔ)狀態(tài)的恢復(fù),保證了存儲(chǔ)空間使用的連續(xù)性。
該分區(qū)設(shè)計(jì)思想在某型裝備傳動(dòng)系統(tǒng)的測(cè)試控制、狀態(tài)監(jiān)測(cè)及故障診斷節(jié)點(diǎn)的設(shè)計(jì)中得到了應(yīng)用。該節(jié)點(diǎn)作為整車(chē)CAN總線(xiàn)網(wǎng)絡(luò)的組成部分,通過(guò)CAN總線(xiàn)網(wǎng)絡(luò)進(jìn)行信息交互,實(shí)現(xiàn)傳動(dòng)系統(tǒng)的測(cè)試控制、狀態(tài)監(jiān)測(cè)及診斷,包括故障數(shù)據(jù)下載和離線(xiàn)分析等。整個(gè)節(jié)點(diǎn)主要由數(shù)據(jù)存儲(chǔ)單元、溫度采集單元、頻率采集單元、壓力采集單元等組成,要求保存采集控制數(shù)據(jù)以及故障診斷結(jié)果計(jì)60個(gè)通道,存儲(chǔ)頻率20Hz,數(shù)據(jù)保存時(shí)間不少于24小時(shí)。
這里主要討論數(shù)據(jù)存儲(chǔ)單元,根據(jù)要求,僅就數(shù)據(jù)存儲(chǔ)功能來(lái)講,該節(jié)點(diǎn)每秒需要保存20組數(shù)據(jù)計(jì)2400字節(jié)(每個(gè)通道2個(gè)字節(jié)),其硬件原理如圖2所示。
圖2 數(shù)據(jù)存儲(chǔ)單元硬件原理框圖
圖2中,主控制器采用了MC9S12XF512MLM單片機(jī),它是Freescale公司研發(fā)的性?xún)r(jià)比極高的一款單片機(jī),總線(xiàn)速度可達(dá)50Mhz,價(jià)格低、可靠性高;日歷芯片采用DS12C887+,它可計(jì)算到2100年前的秒、分、小時(shí)、星期、日期、月、秒,其中日歷信息并帶閏年補(bǔ)償,自帶晶振和鋰電池,在沒(méi)有外部電源的情況下可工作10年;非易失性隨機(jī)鐵電存儲(chǔ)器采用FM25640-S,它是一款64K位非易失性鐵電存儲(chǔ)器,可以向RAM一樣快速讀寫(xiě),支持SOPI模式0&3,結(jié)構(gòu)簡(jiǎn)單,操作方便;大容量NAND Flash存儲(chǔ)器選用了MT29F4G08AAA存儲(chǔ)芯片,該芯片共4096塊,每塊64 Pages,每頁(yè)2,048+64 bytes。
應(yīng)用NAND Flash分區(qū)設(shè)計(jì)思想,結(jié)合大容量NAND Flash存儲(chǔ)器的指標(biāo),對(duì)存儲(chǔ)器劃分為20個(gè)區(qū),每個(gè)分區(qū)由200個(gè)塊組成,共計(jì)占用存儲(chǔ)器4000個(gè)塊空間,剩余空間作為壞塊處理機(jī)制使用。這樣,每個(gè)分區(qū)由12800頁(yè)組成,存儲(chǔ)空間約26M字節(jié),由此計(jì)算出每個(gè)分區(qū)可以保存約3小時(shí)的數(shù)據(jù),20個(gè)分區(qū)可以保存累計(jì)60小時(shí)的數(shù)據(jù),滿(mǎn)足了該節(jié)點(diǎn)的設(shè)計(jì)要求,并在實(shí)際裝車(chē)應(yīng)用中得到了證明。
在嵌入式系統(tǒng)軟件設(shè)計(jì)中,按照NAND Flash分區(qū)設(shè)計(jì)思想,定義了文件屬性讀寫(xiě)函數(shù)、NAND Flash存儲(chǔ)器的格式化函數(shù)和讀寫(xiě)函數(shù)、數(shù)據(jù)存儲(chǔ)函數(shù)、定時(shí)中斷服務(wù)等。NAND Flash存儲(chǔ)器的格式化操作是建立文件分區(qū)的最初操作,分配了文件號(hào)及其對(duì)應(yīng)的存儲(chǔ)起始地址、文件屬性等內(nèi)容。NAND Flash存儲(chǔ)器的讀寫(xiě)函數(shù)用于實(shí)現(xiàn)對(duì)指定頁(yè)的讀寫(xiě);數(shù)據(jù)存儲(chǔ)函數(shù)是對(duì)圖1所示的數(shù)據(jù)寫(xiě)入流程的實(shí)現(xiàn);定時(shí)中斷服務(wù)用于對(duì)通過(guò)CAN總線(xiàn)接收以及系統(tǒng)自身產(chǎn)生的心跳數(shù)據(jù)進(jìn)行定時(shí)采集和緩存。
數(shù)據(jù)的緩存通過(guò)一個(gè)環(huán)形緩沖區(qū)的設(shè)計(jì)實(shí)現(xiàn),在定時(shí)中斷中將所有要保存的數(shù)據(jù)進(jìn)行整理后存入環(huán)形緩沖區(qū)。數(shù)據(jù)存儲(chǔ)函數(shù)根據(jù)緩存中的數(shù)據(jù)量和頁(yè)碼值,計(jì)算文件號(hào)和頁(yè)碼值,調(diào)用NAND Flash存儲(chǔ)器的寫(xiě)函數(shù)將緩存中的數(shù)據(jù)寫(xiě)入NAND Flash存儲(chǔ)器的對(duì)應(yīng)頁(yè),更新文件屬性并通過(guò)文件屬性寫(xiě)函數(shù)保存,完成數(shù)據(jù)的存儲(chǔ)操作。
在上位機(jī)軟件的配合下,通過(guò)USB接口實(shí)現(xiàn)與嵌入式系統(tǒng)的交互,完成對(duì)NAND Flash存儲(chǔ)器的初始化、數(shù)據(jù)寫(xiě)入、狀態(tài)維護(hù)、數(shù)據(jù)下載、數(shù)據(jù)刪除等功能。為方便用戶(hù)定位數(shù)據(jù),上位機(jī)軟件可以通過(guò)文件屬性翻譯相關(guān)信息,以數(shù)據(jù)起始時(shí)間和結(jié)束時(shí)間來(lái)表示具體數(shù)據(jù)段,方便用戶(hù)定位具體的關(guān)鍵數(shù)據(jù),進(jìn)行刪除、下載等操作,其實(shí)際的應(yīng)用界面如圖3所示。在實(shí)際的應(yīng)用中,還必須考慮壞塊管理以及文件導(dǎo)出和刪除等的設(shè)計(jì),具體的實(shí)現(xiàn)這里不再詳述。
圖3 數(shù)據(jù)導(dǎo)出與數(shù)據(jù)編輯界面
為了驗(yàn)證該分區(qū)設(shè)計(jì)思想,按照某型裝備傳動(dòng)系統(tǒng)的測(cè)試控制、狀態(tài)監(jiān)測(cè)及故障診斷節(jié)點(diǎn)的設(shè)計(jì)要求,采用同樣的硬件系統(tǒng)(如圖2所示)設(shè)計(jì)了車(chē)載數(shù)據(jù)存儲(chǔ)記錄裝置進(jìn)行實(shí)驗(yàn)驗(yàn)證。主要包括以下幾個(gè)方面:1)數(shù)據(jù)可選性,主要驗(yàn)證是否可以通過(guò)文件屬性的元素表征不同的文件,選取指定的文件進(jìn)行導(dǎo)出、刪除等;2)數(shù)據(jù)使用效率比較;主要目的是看使用該思想后,對(duì)于目標(biāo)數(shù)據(jù)導(dǎo)出所用的時(shí)間,以及后續(xù)數(shù)據(jù)處理時(shí)數(shù)據(jù)檢索和處理的效率;3)嵌入式系統(tǒng)執(zhí)行效率比較,主要目的是驗(yàn)證嵌入式系統(tǒng)對(duì)數(shù)據(jù)存儲(chǔ)的完整性、實(shí)時(shí)性、正確性;4)NAND Flash存儲(chǔ)器使用的均衡性,主要目的是看是否達(dá)到NAND Flash存儲(chǔ)器空間的均衡使用,進(jìn)而達(dá)到延長(zhǎng)其壽命的目的;5)軟件設(shè)計(jì)的方便性,主要是驗(yàn)證軟件實(shí)現(xiàn)的復(fù)雜程度。
在同樣的硬件系統(tǒng)平臺(tái)上,在CodeWarrior5.0開(kāi)發(fā)環(huán)境下設(shè)計(jì)開(kāi)發(fā)了FAT文件管理系統(tǒng)、不分區(qū)數(shù)據(jù)直接存儲(chǔ)以及采用本文所述的分區(qū)管理思想等三種數(shù)據(jù)存儲(chǔ)管理模式,經(jīng)多次的實(shí)驗(yàn)室驗(yàn)證和實(shí)際的裝車(chē)使用,采用本文所述的分區(qū)管理思想設(shè)計(jì)的車(chē)載數(shù)據(jù)存儲(chǔ)記錄裝置能夠通過(guò)
對(duì)文件屬性翻譯,直觀(guān)地表征出不同時(shí)間段的數(shù)據(jù),并可任意選擇不同的文件進(jìn)行導(dǎo)出、刪除等操作,其數(shù)據(jù)使用效率明顯優(yōu)于直接存儲(chǔ)的方式,并能夠?qū)崿F(xiàn)存儲(chǔ)空間的均衡使用個(gè),所存儲(chǔ)的數(shù)據(jù)在完整性、實(shí)時(shí)性、正確性等方面完全滿(mǎn)足實(shí)際使用要求,更值得一提的是軟件設(shè)計(jì)容易實(shí)現(xiàn),占用系統(tǒng)資源少。實(shí)驗(yàn)結(jié)果表明,該分區(qū)設(shè)計(jì)思想實(shí)現(xiàn)簡(jiǎn)單,用戶(hù)使用方便,滿(mǎn)足實(shí)際工程使用的需要。
本文提出的大容量NAND Flash存儲(chǔ)器分區(qū)設(shè)計(jì)思想,其關(guān)鍵技術(shù)特點(diǎn)在于通過(guò)文件屬性數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和動(dòng)態(tài)維護(hù)的算法,模擬了文件管理系統(tǒng),實(shí)現(xiàn)了對(duì)大容量NAND Flash存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)管理和均衡使用。該設(shè)計(jì)思想對(duì)嵌入式系統(tǒng)性能資源要求低、軟件編程簡(jiǎn)單、實(shí)現(xiàn)效率高,提供一條解決大容量存儲(chǔ)器在嵌入式系統(tǒng)中應(yīng)用的簡(jiǎn)捷途徑,在實(shí)際的應(yīng)用中取得了良好的效果,具有廣泛的推廣應(yīng)用價(jià)值。