衛(wèi) 兵,郭玉堂*,張 磊,李 斌
(1.合肥師范學(xué)院 計(jì)算機(jī)學(xué)院 ,安徽 合肥 2300601;2.安徽大學(xué) 計(jì)算教學(xué)部,安徽 合肥 230009;3.安徽廣播電視大學(xué),安徽 合肥 230022)
嵌入式系統(tǒng)中UBI設(shè)備分區(qū)快速加載方案的設(shè)計(jì)與研究
衛(wèi) 兵1,郭玉堂1*,張 磊2,李 斌3
(1.合肥師范學(xué)院 計(jì)算機(jī)學(xué)院 ,安徽 合肥 2300601;2.安徽大學(xué) 計(jì)算教學(xué)部,安徽 合肥 230009;3.安徽廣播電視大學(xué),安徽 合肥 230022)
針對(duì)當(dāng)前嵌入式系統(tǒng)啟動(dòng)時(shí)間過長的問題,提出了一種新UBI設(shè)備架構(gòu)方案。該方案在分區(qū)中劃分出物理預(yù)留區(qū)域,UBI設(shè)備卸載時(shí)使用新線程預(yù)先將UBI管理信息進(jìn)行壓縮,存入預(yù)留區(qū)域,UBI設(shè)備重新加載時(shí)再次調(diào)用線程直接讀取預(yù)存儲(chǔ)的壓縮包實(shí)現(xiàn)快速加載,節(jié)省大量DMA讀外設(shè)的時(shí)間。采用Block循環(huán)隊(duì)列設(shè)計(jì)以及標(biāo)志鎖機(jī)制確保系統(tǒng)工作穩(wěn)定性。實(shí)驗(yàn)測(cè)試結(jié)果表明,采用新UBI方案,系統(tǒng)分區(qū)加載時(shí)間縮短約50%左右。該方案可以有效解決系統(tǒng)升級(jí)時(shí)分區(qū)容量不斷擴(kuò)大導(dǎo)致開機(jī)速度變慢問題,在使用大容量閃存的嵌入式系統(tǒng)中有很好的應(yīng)用優(yōu)勢(shì)。
嵌入式系統(tǒng);UBI;NAND;DMA;快速加載
當(dāng)前以智能設(shè)備為代表的嵌入式產(chǎn)品廣泛普及,所依賴的嵌入式平臺(tái)幾乎都使用支持內(nèi)存管理單元(MemoryManagementUnit,MMU)的操作系統(tǒng)。例如,嵌入式Linux系統(tǒng)、基于Linux內(nèi)核的Andriod系統(tǒng),以及在Andriod基礎(chǔ)上深度開發(fā)的各種變本等。多數(shù)嵌入式平臺(tái)都會(huì)使用NANDFLASH閃存設(shè)備,基于NAND的文件系統(tǒng)也被廣泛使用,主要有YAFFS、JEFFS2、無排序區(qū)塊鏡像文件系統(tǒng)(UnsortedBlockImageFileSystem,UBIFS)[1]等。UBIFS是針對(duì)NAND開發(fā)的一種專業(yè)閃存日志文件系統(tǒng),相比較傳統(tǒng)的文件系統(tǒng)具備很多優(yōu)點(diǎn)[2]。UBIFS文件系統(tǒng)是基于無排序區(qū)塊鏡像 (UnsortedBlockImage,UBI)設(shè)備層基礎(chǔ)上使用,UBI設(shè)備是為管理NAND存儲(chǔ)塊而設(shè)計(jì)的一種設(shè)備管理接口層[4]。系統(tǒng)啟動(dòng)時(shí)UBI需要掃描分區(qū)中所有物理存儲(chǔ)塊(Block)的頭信息,進(jìn)而在內(nèi)存中建立起管理設(shè)備分區(qū)的數(shù)據(jù)結(jié)構(gòu)信息,完成UBI設(shè)備加載,為上層UBIFS提供文件操作接口[3-4]。
嵌入式平臺(tái)不斷發(fā)展的同時(shí),NAND制程也越來越先進(jìn),從43nm發(fā)展到28nm工藝,從小容量的單層單元NAND(SingleLayerCellNAND,SLCNAND)到大容量的多層單元NAND(Multi-LayerCellNAND,MLCNAND)逐漸在智能平臺(tái)中普及[5-6]。系統(tǒng)UBI設(shè)備分區(qū)也不斷擴(kuò)展,以容納更多的應(yīng)用程序和數(shù)據(jù),但存在的問題也逐漸顯現(xiàn)出來。UBI設(shè)備是依靠掃描分區(qū)所有Block的頭信息完成加載的,設(shè)備分區(qū)的不斷擴(kuò)展導(dǎo)致需要掃描的Block越來越多。由于系統(tǒng)讀取外設(shè)數(shù)據(jù)通常是耗時(shí)較大的操作,因此會(huì)出現(xiàn)設(shè)備開機(jī)時(shí)間變長。這種情況對(duì)于實(shí)時(shí)便捷性要求較高的嵌入式產(chǎn)品往往比較棘手,會(huì)直接影響用戶對(duì)設(shè)備的使用體驗(yàn)。課題在該背景下對(duì)UBI設(shè)備架構(gòu)進(jìn)行研究并重新設(shè)計(jì)了其架構(gòu),提高系統(tǒng)開機(jī)速度,以適應(yīng)大容量閃存的嵌入式系統(tǒng)發(fā)展。
UBI是一種設(shè)計(jì)用于NAND塊設(shè)備的管理接口層,架設(shè)于mtd設(shè)備之上。UBI對(duì)mtd層的物理擦寫塊(PhysicalEraseBlock,PEB)進(jìn)行統(tǒng)一管理,將其打包成邏輯擦寫塊(LogicalErase,LEB),內(nèi)部封裝壞塊管理、損益均衡管理以及卷管理等功能,提供給上層文件系統(tǒng)以統(tǒng)一的設(shè)備讀寫接口。UBIFS文件系統(tǒng)層只需要關(guān)注于日志文件管理層的設(shè)計(jì),結(jié)構(gòu)上相互獨(dú)立。
UBI設(shè)備分區(qū)格式化過程中會(huì)對(duì)所屬存儲(chǔ)分區(qū)的mtd層物理PEB塊進(jìn)行格式化操作。UBI向PEB中寫入頭信息:VIDheader和ECCheader,大小為64字節(jié)(Byte),占用PEB前兩個(gè)頁面(Page),同時(shí)在內(nèi)存中建立起邏輯管理結(jié)構(gòu)。格式化后PEB塊被UBI作為邏輯LEB接口統(tǒng)一使用。系統(tǒng)啟動(dòng)時(shí),UBI設(shè)備的加載過程其實(shí)就是建立起UBI邏輯管理結(jié)構(gòu),UBI會(huì)依次掃描分區(qū)中的所有物理PEB,讀取LEB頭信息結(jié)構(gòu)和壞塊(BadBlock)標(biāo)志。UBI設(shè)備卸載相對(duì)簡單,只需要釋放相關(guān)內(nèi)存資源即可。
UBI設(shè)備占用PEB塊的前兩個(gè)頁面,每個(gè)頁面只使用64Bytes用于存儲(chǔ)頭信息,在大頁面NAND(如4KB、8KB型)中只使用到頁面的一小部分存儲(chǔ)空間。由于NAND設(shè)備的隨機(jī)讀取(Randomread)效率很低,一般驅(qū)動(dòng)程序都會(huì)以整頁為單位進(jìn)行DMA讀操作。讀取PEB的前兩個(gè)Page屬于DMA讀外設(shè)數(shù)據(jù)的過程,DMA控制器發(fā)送讀數(shù)據(jù)命令后需要等待NAND內(nèi)部wait/busy(R/B)信號(hào)結(jié)束才會(huì)觸發(fā)對(duì)應(yīng)端口開始數(shù)據(jù)采樣[7-8]。NAND內(nèi)部R/B信號(hào)等待時(shí)間遠(yuǎn)大于通常CPU指令的工作時(shí)間,不同制程和款型NAND的內(nèi)部取數(shù)據(jù)的R/B信號(hào)等待時(shí)間約為20μs到100μs不等[9]。另外,DMA完成從I/O端口采樣整個(gè)Page的2 112Bytes數(shù)據(jù)操作也會(huì)耗費(fèi)較長時(shí)間。圖1為系統(tǒng)控制器以DMA方式讀取NANDPage數(shù)據(jù)的耗時(shí)分析。
(1)
圖1 DMA讀NAND頁面耗時(shí)分析
由公式(1)分析可知,讀取單位NAND頁面數(shù)據(jù)周期達(dá)72.984μs,相對(duì)于CPU指令周期耗時(shí)很大,尤其對(duì)于高性能嵌入式處理器平臺(tái)。因此,讀外設(shè)數(shù)據(jù)對(duì)于系統(tǒng)啟動(dòng)時(shí)間來說是一種較大的負(fù)擔(dān)。UBI加載時(shí)需要掃描的PEB越多,意味著加載時(shí)間越長。隨著嵌入式平臺(tái)的升級(jí),NAND容量在不斷擴(kuò)大,UBI設(shè)備分區(qū)也不斷擴(kuò)大。這種情況下,UBI加載所需耗時(shí)也會(huì)相應(yīng)增加,進(jìn)而影響到系統(tǒng)啟動(dòng)時(shí)間。
2. 新UBI設(shè)備的架構(gòu)設(shè)計(jì)
由以上分析可知,UBI讀取64Bytes頭信息需要讀整個(gè)頁面,頁面大部分?jǐn)?shù)據(jù)為0xFF,大量的啟動(dòng)時(shí)間被耗費(fèi)在DMA讀外設(shè)操作。因此,有必要對(duì)UBI進(jìn)行改進(jìn),以適應(yīng)系統(tǒng)平臺(tái)不斷升級(jí)帶來的問題。文中在先前課題的研究基礎(chǔ)上針對(duì)UBI設(shè)備工作原理和特點(diǎn),對(duì)其架構(gòu)改進(jìn)設(shè)計(jì)。新方案中UBI設(shè)備卸載時(shí)調(diào)用相關(guān)線程對(duì)UBI管理信息進(jìn)行壓縮處理,更新至分區(qū)中指定的物理存儲(chǔ)區(qū)域,UBI再次啟動(dòng)加載時(shí)調(diào)用線程從該區(qū)域直接讀取壓縮信息即可完成加載,從而節(jié)約大量系統(tǒng)開機(jī)讀外設(shè)時(shí)間。圖2為新架構(gòu)UBI設(shè)備原理圖。方案設(shè)計(jì)中充分考慮系統(tǒng)運(yùn)行的健壯性,下面對(duì)各環(huán)節(jié)模塊進(jìn)行分析介紹。
圖2 新型UBI設(shè)備運(yùn)行原理圖
在新UBI設(shè)備中,系統(tǒng)分區(qū)格式化中在固定物理位置劃分出若干PEB塊的預(yù)留區(qū)域。UBI設(shè)備卸載時(shí),調(diào)用所設(shè)計(jì)線程對(duì)內(nèi)存中UBI設(shè)備管理信息進(jìn)行壓縮,然后將壓縮包信息存儲(chǔ)進(jìn)預(yù)留區(qū)域。系統(tǒng)再次啟動(dòng),UBI設(shè)備加載時(shí),調(diào)用相關(guān)線程從預(yù)留區(qū)域讀出壓縮包,直接解壓即可建立起UBI管理信息,完成加載。該方法和傳統(tǒng)UBI加載掃描所有PEB的頭信息一樣,均可得到前一次設(shè)備卸載時(shí)的最后信息記錄。由于壓縮包存儲(chǔ)的頁面數(shù)遠(yuǎn)小于常規(guī)掃描需要讀取的頁面數(shù),可以減少大量系統(tǒng)讀外設(shè)的DMA中斷耗時(shí),進(jìn)而大幅節(jié)約系統(tǒng)啟動(dòng)時(shí)間。圖3為新UBI設(shè)備卸載設(shè)計(jì)流程。
圖3 新UBI設(shè)備卸載流程圖
如圖3所示,設(shè)備卸載時(shí)先啟動(dòng)線程對(duì)UBI管理信息進(jìn)行打包壓縮處理,具體做法為申請(qǐng)一塊連續(xù)內(nèi)存緩沖區(qū),將UBI管理信息依次拷入緩沖區(qū),然后使用壓縮算法對(duì)緩沖區(qū)數(shù)據(jù)進(jìn)行壓縮處理,得到UBI信息壓縮包,存儲(chǔ)關(guān)機(jī)時(shí)UBI的最后信息。目前很多高端IC平臺(tái)都自帶有支持高效壓縮算法的硬件控制器,基于該類平臺(tái)時(shí)可以使用硬件數(shù)據(jù)壓縮方式將UBI信息盡可能地壓縮到較小格式。UBI分區(qū)中邏輯塊LEB的頭信息VIDheader和ECCheader均為64Bytes,通常只占用頁面的一小部分,在方案測(cè)試實(shí)驗(yàn)中,整個(gè)分區(qū)的管理信息經(jīng)過壓縮處理后通常可以存儲(chǔ)在一個(gè)PEB塊中。
UBI壓縮包制作好后,需要將其更新到預(yù)留物理存儲(chǔ)區(qū)域供下次啟動(dòng)使用。以UBI壓縮包格式大小為一個(gè)PEB以內(nèi)為例,存儲(chǔ)區(qū)域的設(shè)計(jì)需要考慮諸多因素。NANDFLASH存儲(chǔ)塊Block有使用擦寫壽命(Program/Erasecycle,P/ECycles)問題,常規(guī)制程的SLCNAND的P/ECycles約60K~100K,MLCNAND約為3K~5K不等[10]。Block隨著擦寫次數(shù)增加會(huì)產(chǎn)生位反轉(zhuǎn)(bit-flip)并逐漸增多導(dǎo)致ECC無法糾正,同時(shí)NANDFLASH本身會(huì)存在BadBlock問題,以及操作中也可能意外產(chǎn)生BadBlock。這些因素都會(huì)影響系統(tǒng)穩(wěn)定性[11-12]。因此,不能簡單地將UBI壓縮包固定在某物理Block。新UBI中使用Block循環(huán)隊(duì)列設(shè)計(jì),將劃分的預(yù)留區(qū)域Block統(tǒng)一管理起來,按照隊(duì)列的方式循環(huán)供數(shù)據(jù)存儲(chǔ)線程使用,確保數(shù)據(jù)信息安全性和穩(wěn)定性。如圖3中Block循環(huán)隊(duì)列工作流程設(shè)計(jì),預(yù)留區(qū)域使用Block循環(huán)隊(duì)列管理,每個(gè)預(yù)留Block的Page的前四個(gè)4Bytes作為索引標(biāo)志位,用于隊(duì)列的循環(huán)累加計(jì)數(shù)。UBI定位存儲(chǔ)位置時(shí),遍歷隊(duì)列,讀出預(yù)留標(biāo)志位,標(biāo)志值最大的BlockX即為上一次壓縮數(shù)據(jù)的存儲(chǔ)位置,則隊(duì)列中的下一個(gè)BlockX+1即為本次存儲(chǔ)位置,將標(biāo)志位的計(jì)數(shù)器加1和UBI壓縮包一起存入隊(duì)列,完成UBI壓縮包更新。在遍歷隊(duì)列和更新壓縮包的過程中遇到BadBlock就跳過使用下一個(gè)。通過一系列操作流程,使新UBI設(shè)備最大程度地克服NAND固有的BadBlock和P/ECycles問題,確保系統(tǒng)工作穩(wěn)定性。
系統(tǒng)啟動(dòng)后,UBI設(shè)備分區(qū)開始執(zhí)行加載流程。如圖2中所示,UBI設(shè)備會(huì)首先啟動(dòng)線程嘗試從預(yù)留區(qū)域?qū)ふ易钚耈BI壓縮包以實(shí)現(xiàn)快速加載(Fastattach)。UBI設(shè)備的前一次卸載操作中,如果預(yù)留區(qū)域出現(xiàn)大量BadBlock,則會(huì)導(dǎo)致定位儲(chǔ)存位置出錯(cuò)以及更新壓縮包出錯(cuò)等問題,卸載流程失敗。另外,若出現(xiàn)嵌入式系統(tǒng)常見的意外斷電情況,也無法執(zhí)行UBI卸載流程。這類情況下預(yù)留區(qū)域均無最新UBI壓縮包供加載讀取,新UBI架構(gòu)中使用標(biāo)志鎖設(shè)計(jì)以避免加載流程出錯(cuò)。圖4為新UBI設(shè)備加載工作流程設(shè)計(jì)。
圖4中流程所示,新UBI加載操作中首先啟動(dòng)新線程嘗試Fastattach。系統(tǒng)從物理預(yù)留區(qū)域?qū)ふ夷繕?biāo)UBI壓縮包,對(duì)Block循環(huán)隊(duì)列進(jìn)行遍歷,依次讀出Block中第一個(gè)Page的前4Bytes存儲(chǔ)的壓縮包編號(hào)信息(UBIindex)。若隊(duì)列中均為BadBlock,則預(yù)留區(qū)存儲(chǔ)塊無法使用,視為極端情況,退出Fastattach。遍歷完成后定位隊(duì)列中UBIindex最大的BlockX,接著檢查緊鄰下一個(gè)無故障BlockX+1作進(jìn)一步判斷:若BlockX+1中存儲(chǔ)最小UBIindex,表示UBI壓縮包隊(duì)列處于開鎖(LockOpen)狀態(tài),BlockX中數(shù)據(jù)為最新壓縮包;若BlockX+1中第一個(gè)Page信息為預(yù)定義標(biāo)志鎖(Lockmark),則表示UBI壓縮包隊(duì)列處于鎖定(Locked)狀態(tài),意味著當(dāng)前隊(duì)列中沒有前一次卸載所更新的UBI壓縮包可供讀取。推斷系統(tǒng)前一次UBI卸載更新壓縮包出錯(cuò),或者發(fā)生意外掉電狀況,此時(shí)退出Fastattach。針對(duì)UBI隊(duì)列LockOpen狀態(tài),直接讀取BlockX中UBI壓縮包,解壓數(shù)據(jù)包建立起UBI信息結(jié)構(gòu),實(shí)現(xiàn)Fastattach。然后在退出前LockUBI隊(duì)列:向BlockX+1中第一個(gè)Page寫入Lockmark。同時(shí),圖3分析中,新UBI卸載時(shí)會(huì)將最新UBI壓縮包和UBIindex更新到BlockX+1中,即覆蓋Fastattach后的Lockmark,將UBI隊(duì)列打開(Unlock),為系統(tǒng)下次啟動(dòng)UBI加載進(jìn)行狀態(tài)設(shè)置。采用這種標(biāo)志鎖機(jī)制防止系統(tǒng)工作異常。
圖4 新UBI設(shè)備加載流程圖
新UBI加載流程中出現(xiàn)退出Fastattach時(shí),則快速加載失敗,關(guān)閉新線程重新走常規(guī)UBI掃描加載流程(Commonattach)。UBI分區(qū)格式化中,對(duì)Block循環(huán)隊(duì)列進(jìn)行格式化處理,在隊(duì)列N個(gè)Block中依次遞增寫入U(xiǎn)BIindex,取值為從0到N-2,BlockN-1寫入Lockmark。分區(qū)格式化后,新UBI壓縮包隊(duì)列初始化為Locked狀態(tài),第一次開機(jī)會(huì)執(zhí)行Commonattach,通過卸載流程建立起第一個(gè)UBI壓縮包,為后續(xù)運(yùn)行提供可用信息。圖5為設(shè)備初始化工作流程圖。
圖5 新UBI設(shè)備初始化流程
實(shí)驗(yàn)設(shè)計(jì)針對(duì)新UBI設(shè)備進(jìn)行性能測(cè)試。實(shí)驗(yàn)測(cè)試平臺(tái)選擇SAMSUNGCortex-A9 4210開發(fā)板,該平臺(tái)為ARMCortex-A9 雙核架構(gòu)處理器,主頻為1GHz,具有64/32位的內(nèi)部總線結(jié)構(gòu)。NAND使用SAMSUNGK9K8G08U0M,該款型NAND容量為1GB,頁面為2KB,塊為128KB。
實(shí)驗(yàn)中系統(tǒng)固件內(nèi)核版本選用Linux-2.6.35。在系統(tǒng)分中設(shè)計(jì)三個(gè)UBIFS分區(qū),每個(gè)UBIFS分區(qū)設(shè)計(jì)一個(gè)UBI設(shè)備。依照新UBI設(shè)備設(shè)計(jì)方案重新編寫UBI源程序中attachdevice和detachdevice模塊,預(yù)留存儲(chǔ)區(qū)域Block數(shù)目初始化為5,經(jīng)交叉編譯得到基于新UBI的內(nèi)核鏡像文件,再更新至系統(tǒng)平臺(tái)。重啟系統(tǒng)后依次測(cè)試UBIFS分區(qū)的掛載速度(第二次掛載),并與基于原始UBI內(nèi)核鏡像文件的平臺(tái)進(jìn)行對(duì)比,分析新UBI設(shè)備性能(Performance),如表1所示。
表1 UBI設(shè)備掛載時(shí)間統(tǒng)計(jì)
從表1測(cè)試數(shù)據(jù)看,基于新UBI設(shè)備的分區(qū)加載時(shí)間普遍縮短約50%左右。設(shè)計(jì)中采用UBI隊(duì)列標(biāo)志鎖機(jī)制,測(cè)試中加入意外斷電操作,重啟系統(tǒng)可以按照原始開機(jī)速率正常啟動(dòng)。針對(duì)BadBlock問題,測(cè)試中使用指令操作人為將Block循環(huán)隊(duì)列中Block全部標(biāo)記為Bad,重啟系統(tǒng)后同樣按照原始開機(jī)速率正常啟動(dòng)。系統(tǒng)健壯性表現(xiàn)較好。新UBI設(shè)備分區(qū)加載Fastattach流程時(shí),相對(duì)于原始UBI設(shè)備分區(qū)加載操作只需要讀取1個(gè)Block數(shù)據(jù),節(jié)省很多UBI掃描分區(qū)Block步驟,即DMA讀外設(shè)耗時(shí)。當(dāng)系統(tǒng)平臺(tái)中大容量分區(qū)較多時(shí),新UBI設(shè)備可以節(jié)省大量系統(tǒng)啟動(dòng)時(shí)間,Performance十分可觀。
采用盡可能減少系統(tǒng)讀外設(shè)工作量的設(shè)計(jì)思想,新UBI設(shè)計(jì)方案在設(shè)備分區(qū)加載速度上相對(duì)原始UBI設(shè)備具備很大優(yōu)勢(shì)。通過一系列設(shè)計(jì)方法使方案的在測(cè)試性能和穩(wěn)定性處于較好的狀態(tài)。系統(tǒng)整體健壯性的再提高以及UBI與上下層接口的磨合情況還有進(jìn)一步研究改進(jìn)的空間。
[1]MuhammadN,JamshidD.SoftwareBasedNANDFlashManagementTechniques[C].IEEEComputing,EngineeringandInformation.Washington,DC,2009:168-171.
[2] 韋 斯,丁志剛,張偉宏.LINUX下UBI子系統(tǒng)的研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(10):68-71.
[3] 韓春曉,陳香蘭,李 曦,等.UBIFS損耗均衡對(duì)系統(tǒng)I/O性能的影響[J].計(jì)算機(jī)工程,2009,35(6):260-262.
[4]UBIFSDocumentation,Nokia&UniversityofSzeged[EB/OL]. 2008.http://www.linux-mtd.infradead.org/doc/ubifs.html.
[5]YooB,WonY,ChoS,etal.Ssdcharacterization:Fromenergyconsumption’sperspective.InProceedingsofHotStorage’2011[C].USENIXAssociationBerkeley,CA,USA,2011:3-3.
[6]ChenF,LuoT,ZhangX.Caftl:Acontent-awareflashtranslationlayerenhancingthelifespanofflashmemorybasedsolidstatedrives,Proceedingsof9thUSENIXConferenceonFileandStorageTechnologies[C].USENIXAssociationBerkeley,CA,USA,2011: 6-20.
[7] 史 斌,丁志剛,張偉宏.基于PXA3xx處理器的NAND閃存DMA方案[J].計(jì)算機(jī)應(yīng)用,2009,29(8):2136-2138, 2142.
[8]WildaniA,MillerEL,ANDWardL.Efficientlyidentifyingworkingsetsinblocki/ostreams,Proceedingsofthe4thAnnualInternationalSystemsandStorageConference[C].ArticleNo. 5,ACMNewYork,NY,USA,2011.
[9]SAMSUNG.K9K8G08U0MFLASHMEMORYdatasheet,Rev.2.6[EB/OL][2015-11-02].http://www.dzsc.com.
[10]曹 璐.基于NANDFLASH的文件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].上海:華東師范大學(xué),2012:5-6.
[11]MuhammadN,JamshidD.SoftwareBasedNANDFlashManagementTechniques[C].IEEE.Computing,EngineeringandInformation.Washington,DC:IEEEPress,2009: 168-171.
[12]ChangLP.OnefficientwearlevelingforLarge-ScaleFlash-Memorystoragesystems[C]//APPLIEDCOMPUTING2007,VOL1AND2,seoul:acmpress, 2007: 1126-1130.
AdesignandresearchofimprovedUBIwhichcouldbefastattachedinembeddedsystem
WEIBing1,GUOYu-tang1*,ZHANGLei2,LIBin3
(1.DepartmentofComputerScienceandTechnology,HefeiNormalCollege,Hefei230601; 2.DepartmentofComputerScienceandTechnology,AnhuiUniversity,Hefei230039;3.AnhuiOpenUniversity,Hefei230022)
Inthispaper,anewUBIdeviceframeworkwasproposed,whichfocusedonproblemsofboottimeinEmbeddedsystemcurrently.Inthesolution,afixedphysicalareawasdividedinsystempartition,whichisreservedforstoringUBImanagementinformationpackagecompressedbyanewthreadafterUBIdetachaccomplished,then,anothernewthreadwouldbecreatedtoreadoutthepreviousUBIpackagefromreservedareatorealizefastUBIattachment,whichcouldsavealotoftimeconsumingduringDMAperipheralreading.Furthermore,ablockcircularqueueandlogolockingmechanismweredesignedtoensurethestabilityofthesystem.Experimentalresultsshowedthatthepartitionloadtimewasreducedabout50%byusingthenewUBI.Thesolutioncouldsolvetheproblemsofslowlybootingcausedbycontinuouslyexpandingthepartitioncapacitywhenupgradethesystems,whichhasgoodapplicationadvantagesinEmbeddedsystemswithlarge-capacityflashmemory.
embeddedsystem;UBI;NAND;DMA;fastattach
魂芯DSP產(chǎn)業(yè)化研究院開放課題(2014dspkfb03);安徽省高等學(xué)校省級(jí)優(yōu)秀青年人才基金重點(diǎn)項(xiàng)目(2013SQRL097ZD);合肥師范學(xué)院青年基金項(xiàng)目(2015QN16)資助。
衛(wèi) 兵 (1984-),男,碩士,講師,研究方向:嵌入式系統(tǒng)、模式識(shí)別與智能數(shù)據(jù)處理。
郭玉堂 (1962-),男,博士,教授,研究方向:圖像處理與模式識(shí)別。Email:28297852@qq.com。
TP302.1,TP302.7
A
1004-4329(2015)04-074-06
10.14096/j.cnki.cn34-1069/n/1004-4329(2015)04-074-06
投稿日期:2015-04-23