當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]UBI文件系統(tǒng)簡介

在linux-2。6。27以前,談到Flash文件系統(tǒng),大家很多時候多會想到cramfs、jffs2、yaffs2等文件系統(tǒng)。它們也都是基于文件系統(tǒng)+mtd+flash設(shè)備的架構(gòu)。linux-2。6。27后,內(nèi)核加入了一種新型的FLASH文件系統(tǒng)UBI(UnsortedBlockImages)。這里簡單介紹下UBI文件系統(tǒng)加入的原因,及使用方法。我也是剛接觸到這個文件系統(tǒng),可能有理解不對的地方,也請指正。

一、產(chǎn)生的背景

FLASH具有的“先擦除再寫入”、壞塊、“有限的讀寫次數(shù)”等特性,目前管理FLASH的方法主要有:

1、采用MTD+FTL/NFTL(flash轉(zhuǎn)換層/nandflash轉(zhuǎn)換層)+傳統(tǒng)文件系統(tǒng),如:FAT、ext2等。FTL/NFTL的使用就是針對FLASH的特有屬性,通過軟件的方式來實現(xiàn)日志管理、壞塊管理、損益均衡等技術(shù)。但實踐證明,由于知識產(chǎn)權(quán)、效率等各方面因素導(dǎo)致本方案有一定的局限性。

2、采用硬件翻譯層+傳統(tǒng)文件系統(tǒng)的方案。這種方法被很多存儲卡產(chǎn)品采用,如:SD卡、U盤等。這種方案對于一些產(chǎn)品來說,成本較高。

3、采用MTD+FLASH專用文件系統(tǒng),如JFFS1/2,YAFFS1/2等。它們大大提高了FLASH的管理能力,并被廣泛應(yīng)用。

JFFS2、YAFFS2等專用文件系統(tǒng)也存在著一些技術(shù)瓶頸,如:內(nèi)存消耗大,對FLASH容量、文件系統(tǒng)大小、內(nèi)容、訪問模式等的線性依賴,損益均衡能力差或過渡損益等。在此背景下內(nèi)核加入了UBI文件系統(tǒng)的支持。

二、用法

環(huán)境:omap3530處理器、(128MByte16位NANDFlash)、linnux-2。6。28內(nèi)核

1、配置內(nèi)核支持UBIFS

DeviceDrivers--->MemoryTechnologydevice(MTD)support--->UBI-Unsortedblockimages--->EnableUBI

配置mtd支持UBI接口

Filesystems--->MiscellaneousfileSystems--->UBIFSfilesystemsupport

配置內(nèi)核支持UBIFS文件系統(tǒng)

2、將一個MTD分區(qū)4掛載為UBIFS格式

●flash_eraseall/dev/mtd4//擦除mtd4

●ubiattach/dev/ubi_ctrl-m4//和mtd4關(guān)聯(lián)

●ubimkvol/dev/ubi0-Nrootfs-s100MiB//設(shè)定volume大?。ú皇枪潭ㄖ担梢杂霉ぞ吒淖儯┘懊Q

●mount-tubifsubi0_0/mnt/ubi或mount-tubifsubi0:rootfs/mnt/ubi

3、制作UBIFS文件系統(tǒng)

在制作UBI鏡像時,需要首先確定以下幾個參數(shù):

MTDpartitionsize;//對應(yīng)的FLASH分區(qū)大小

flashphysicaleraseblocksize;//FLASH物理擦除塊大小

minimumflashinput/outputunitsize;//最小的FLASH輸入輸出單元大小

forNANDflashes-sub-pagesize;//對于nandflash來說,子頁大小

logicaleraseblocksize。//邏輯擦除塊大小

參數(shù)可以由幾種方式得到

1)如果使用的是2。6。30以后的內(nèi)核,這些信息可以通過工具從內(nèi)核獲得,如:mtdinfo–u。

2)之前的內(nèi)核可以通過以下方法:

●MTDpartitionsize:從內(nèi)核的分區(qū)表或cat/proc/mtd獲得

●flashphysicaleraseblocksize:從flash芯片手冊中可以得到FLASH物理擦除塊大小,或cat/proc/mtd

●minimumflashinput/outputunitsize:

1)norflash:通常是1個字節(jié)

2)nandfalsh:一個頁面

●sub-pagesize:通過flash手冊獲得

●logicaleraseblocksize:對于有子頁的NANDFLASH來說,等于“物理擦除塊大小-1頁的大小”

3)也可以通過ubi和mtd連接時的產(chǎn)生的信息獲取,如:

#modprobeubimtd=4//ubi作為模塊加載

#ubiattach/dev/ubi_ctrl-m4//通過ubiattach關(guān)聯(lián)MTD

UBI:attachingmtd4toubi0

UBI:physicaleraseblocksize:131072bytes(128KiB)

UBI:logicaleraseblocksize:129024bytes

UBI:smallestflashI/Ounit:2048

UBI:sub-pagesize:512

UBI:VIDheaderoffset:512(aligned512)

UBI:dataoffset:2048

UBI:attachedmtd4toubi0

更詳細的解釋參見http://www。linux-mtd。infradead。org/doc/ubi。html#L_overhead

#mkfs。ubifs-rrootfs-m2048-e129024-c812-oubifs。img

#ubinize-oubi。img-m2048-p128KiB-s512/home/lht/omap3530/tools/ubinize。cfg

-r:制定文件內(nèi)容的位置

-m:頁面大小

-e:邏輯擦除塊大小

-p:物理擦除塊大小

-c:最大的邏輯擦除塊數(shù)量

對我們這種情況,文件系統(tǒng)最多可以訪問卷上的129024812=100M空間

-s:最小的硬件輸入輸出頁面大小,如:k9f1208為256(上下半頁訪問)

其中,ubinize。cfg的內(nèi)容為:

[ubifs]

mode=ubi

image=ubifs。img

vol_id=0

vol_size=100MiB

vol_type=dynamic

vol_name=rootfs

vol_flags=autoresize

4、利用uboot燒寫、啟動UBIFS鏡像

1)燒寫UBIFS鏡像

OMAP3DevKit8000#mmcinit

OMAP3DevKit8000#fatloadmmc0:181000000ubi。img

readingubi。img

12845056bytesread

OMAP3DevKit8000#nandunlock

device0wholechip

nand_unlock:start:00000000,length:235456!

NANDflashsuccessfullyunlocked

OMAP3DevKit8000#nandeccsw

OMAP3DevKit8000#nanderase6800007980000

NANDerase:device0offset0x680000,size0x7980000

Erasingat0x7fe0000--100%complete。

OK

OMAP3DevKit8000#nandwrite。i81000000680000$(filesize)

NANDwrite:device0offset0x680000,size0xc40000

Writingdataat0x12bf800--100%complete。

12845056byteswritten:OK

燒寫過程和燒寫內(nèi)核鏡像的過程一致,所以UBI文件系統(tǒng)應(yīng)該不像yaffs文件系統(tǒng)那樣用到了nand的OOB區(qū)域。

2)設(shè)置UBIFS文件系統(tǒng)作為根文件系統(tǒng)啟動的參數(shù)

OMAP3DevKit8000#setenvbootargsconsole=ttyS2,115200n8ubi。mtd=4root=ubi0:rootfs

rootfstype=ubifsvideo=omapfb:mode:4。3inch_LCD

OMAP3DevKit8000#setenvbootcmdnandread。i80300000280000200000;bootm80300000

根文件系統(tǒng)的位置在MTD4上

系統(tǒng)啟動時會打印出如下和UBI相關(guān)的信息:

Creating5MTDpartitionsnumbergoodPEBs:970

UBI:numberofbadPEBs:2

UBI:max。allowedvolumes:128

UBI:wear-levelingthreshold:4096

UBI:numberofinternalvolumes:1

UBI:numberofuservolumes:1

UBI:availablePEBs:0

UBI:totalnumberofreservedPEBs:970

UBI:numberofPEBsreservedforbadPEBhandling:9

UBI:max/meanerasecounter:2/0

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉