《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > uClinux下Nor Flash的JFFS2文件系統構建
uClinux下Nor Flash的JFFS2文件系統構建
國外電子元器件
廣州新太科技股份公司 賈東耀
摘要: uClinux下Nor Flash的JFFS2文件系統構建,文章以SST39VF160芯片為例,討論了在Nor Flash上建立uClinux的JFFS2文件系統的一般步驟,從而為FLASH上的數據管理提供了理想的選擇方式。
關鍵詞: 軟件 JFFS2 uClinux
Abstract:
Key words :

摘要:目前的嵌入式系統多使用FLASH作為主存,因此,如何有效管理FLASH上的數據非常重要。文章以SST39VF160芯片為例,討論了在Nor Flash上建立uClinux的JFFS2文件系統的一般步驟,從而為FLASH上的數據管理提供了理想的選擇方式。

    關鍵詞:uClinux;Nor Flash;MTD;JFFS2;文件系統

嵌入式系統正隨著Internet的發展而在各個領域得到廣泛的應用,作為嵌入式應用的核心,嵌入式Linux以其自由軟件特性正日益被人們看好。Linux具有內核小、效率高、源代碼開放等優點,還內涵了完整的TCP/IP網絡協議,因此非常適于嵌入式系統的應用。而作為專門運行于沒有MMU的微處理器的嵌入式操作系統,uClinux更是得到廣泛應用。

當前的嵌入式系統開發,需要方便靈活的使用Flash。NOR和NAND是現在市場上兩種主要的非易失閃存技術。Intel于1988年首先開發出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。NOR的特點是芯片內執行?XIP? eXe-cute In Place?,這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中。NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,因此在嵌入式系統得到廣泛的應用。

1 JFFS2文件系統簡介

uClinux通常默認ROMFS作為根文件系統,它相對于一般的EXT2文件系統具有節約空間的優點。但是ROMFS是一種只讀的文件系統,不支持動態擦寫保存。雖然對于需要動態保存的數據可以采用虛擬ram盤的方法來保存,但當系統掉電后,ram盤的內容將全部丟失,而不能永久保存,因此需要實現一個可讀寫的文件系統。JFFS2文件系統便是一個很好的選擇。

JFFS文件系統是瑞典Axis通信公司開發的一種基于Flash的日志文件系統,它在設計時充分考慮了Flash的讀寫特性和用電池供電的嵌入式系統的特點,在這類系統中必需確保在讀取文件時,如果系統突然掉電,其文件的可靠性不受到影響。對Red Hat的David Woodhouse進行改進后,形成了JFFS2。主要改善了存取策略以提高FLASH的抗疲勞性,同時也優化了碎片整理性能,增加了數據壓縮功能。需要注意的是,當文件系統已滿或接近滿時,JFFS2會大大放慢運行速度。這是因為垃圾收集的問題。

JFFS2的底層驅動主要完成文件系統對Flash芯片的訪問控制,如讀、寫、擦除操作。在Linux中這部分功能是通過調用MTD(memory technology device內存技術設備)驅動實現的。相對于常規塊設備驅動程序,使用 MTD 驅動程序的主要優點在于 MTD 驅動程序是專門為基于閃存的設備所設計的,所以它們通常有更好的支持、更好的管理和更好的基于扇區的擦除和讀寫操作的接口。MTD相當于在硬件和上層之間提供了一個抽象的接口,可以把它理解為FLASH的設備驅動程序,它主要向上提供兩個接口:MTD字符設備和MTD塊設備。通過這兩個接口,就可以象讀寫普通文件一樣對FLASH設備進行讀寫操作。經過簡單的配置后,MTD在系統啟動以后可以自動識別支持CFI或JEDEC接口的FLASH芯片,并自動采用適當的命令參數對FLASH進行讀寫或擦除。

JFFS2在uClinux中有兩種使用方式,一種是作為根文件系統,另一種是作為普通文件系統在系統啟動后被掛載??紤]到實際應用中需要動態保存的數據并不多,且在Linux系統目錄樹中,根目錄和/usr等目錄主要是讀操作,只有少量的寫操作,但是大量的讀寫操作又發生在/var和/tmp目錄(這是因為在系統運行過程中產生大量log文件和臨時文件都放在這兩個目錄中),因此,通常選用后一種方式。根文件指的是Romfs、var和/tmp,目錄采用Ramfs,當系統斷電后,該目錄所有的數據都會丟失。

綜上所述,通常在uClinux下采用的文件系統構成如圖1所示。對于本文來說,圖中Romfs和Ramfs兩個文件系統的實現是很方便的,主要需要實現的是Nor Flash的底層MTD驅動,下面就以SST39VF160芯片為例來介紹MTD的驅動設計方法。

2?。剩疲疲樱驳讓樱停裕尿寗釉O計

本文采用的系統以三星公司的SND-100為母板,CPU為ARM7TDMI芯片S3C4510B,16M的SDRAM,Nor Flash為SST39VF160,容量為1M×16bit,速度為70ns,通過16位數據總線與CPU交換數據,擦寫次數典型值為10萬次。

在\linux-2.4.x\drivers\mtd\maps目錄下,每一個文件都是一個具體的MTD原始設備的相關信息,包括該MTD原始設備的起始物理地址、大小、分區情況、讀寫函數、初始化和清除程序。設計時,需要對SST39VF160編寫相關的程序,假設為S3C4510B.C。則需要進行以下幾點操作:

(1) 定義SST39VF160在系統中的起始地址、大小、總線寬度

#define WINDO DDR 0x1000000|0x04000000 //注意FLASH分區地址必須是non-cacheble

#define WINDOW SIZE 0x200000

#define BUSWIDTH 2

(2) 定義SST39VF160分區

典型的內存分區應包括:內核引導區、Linux內核區、應用區。其中內核引導區用來保存內核加載程序,Linux內核區存放的是經過壓縮的uClinux內核,應用區則用來保存用戶的數據和應用程序,該區設為我們要采用的JFFS2文件系統。具體如下:

static struct mtd_partition s3c4510_partitions[]={

{

name: ″bootloader(128K)″,

size: 0x20000,

offset: 0x0000,

mask_flags:MTD_WRITEABLE //設置成只讀區域

},

{

name: ″uClinux_kernel(832K)″,

size: 0xd0000,

offset: 0x20000,

},?

{

name: ″jffs2 (1088K)?″,

size: 0x110000,

offset: 0xf0000

}

};?

(3) 定義SST39VF160字節、半字、字的讀寫操作函數。

(4) 初始化SST39VF160函數int_init init_s3c4510b()。

該操作主要包括兩個方面:第一是調用do map probe()檢測搜索MTD設備。通常檢測方式有兩種:cfi probe和jedec probe,這里采用后一種,該方法在jedec_probe.c文件中定義。另外,jedec probe.c中定義了各種jedec probe類型芯片的信息,有些linux版本沒有包含SST39VF160,需要手動添加;而操作的第二方面則是調用add_mtd_partitions()以將your_partiton的各個分區加入mtd_table。

3 內核相關配置的設定

3.1 內核配置文件設置

為使內核支持JFFS2,需在內核配置選項菜單里選擇相關選項。首先把SST39VF160的MTD驅動加入配置菜單。并在mtd/maps/Config.in文件中加入如下程序:

if[″$CONFIG ARM″= ″y″]; then

dep_tristate′CFI Flash device mapped on Samsung S3C4510B′CONFIG_MTD_S3C4510B $CONFIG_MTD_CFI

相應\mtd\maps\Makefile文件加入

obj_$(CONFIG_MTD_S3C4510B)+=s3c4510b.o

其次選擇Menuconfig下的配置選項。

在linux Kernel v2.4.20-uc0 Configuration下

Memory Technology Devices?MTD?下

CONFIG_MTD=Y

CONFIG_MTD_DEBUG=Y

CONFIG_MTD_DEBUG_VERBOSE=3

CONFIG_MTD_PARTITIONS=Y

CONFIG_MTD_CHAR=Y

CONFIG_MTD_BLOCK=Y

RAM/ROM/Flash chip drivers下

CONFIG_MTD_CFI=Y

CONFIG_MTD_JEDECPROBE=Y

CONFIG_MTD_CFI_AMDSTD=Y

Mapping drivers for chip access下

CONFIG_S3C4510B=Y

File systems下

CONFIG_JFFS2_FS=Y

CONFIG_JFFS2_FS_DEBUG=2

在uClinux v1.3.4 Configuration下

Flash Tools下

CONFIG_USER_MTDUTILS=Y

CONFIG_USER_MTDUTILS_ERASE=Y

CONFIG_USER_MTDUTILS_ERASEALL=Y

CONFIG_USER MTDUTILS_MKFSJFFS2=Y

BusyBox下選中cat,cp,dd, mount,umount,mkdir工具。

3.2 MTD塊設備配置

下面是修改系統塊設備的主設備號。默認情況下,MTDBLOCK主設備號為31,與BLKMEM的主設備號沖突,因此 修改\mtd\mtd.h中 MTD BLOCK MAJOR的值為30。

接著應添加MTD設備節點到/vender/--你所使用的目標機類型--/Makefile文件中。其中字符設備的主設備號為90,次設備號為0、2、4、6...(奇數次設備號為只讀設備),塊設備的主設備號為31,次設備號為0、1、2、3。可按以下方式增加DEVICES目標:

mtd0,c,90,0 mtd1,c,90,1 mtd2,c,90,2

mtdblock0,b,30,0 mtdblock1,b,30,1 mtd-block2,b,30,2

做完以上步驟,可以運行內核編譯命令make dep, make 以對內核進行編譯。

當系統啟動時,可以看到以下信息:

s3c4510b flash device: 200000 at 5000000

Found: SST SST39VF160

number of JEDEC chips: 1

Creating 3 MTD partitions on ″S3C4510B flash de-vice″:

0x00000000-0x00020000: ″bootloader(128K)″

mtd:Giving out device 0 to bootloader(128K)

0x00020000-0x00f0000:″uClinux_kernel(832K)″

mtd: Giving out device 1 to uClinux_kernel(832K)

0x00f0000-0x00200000:″jffs2_usr(1088K)″

mtd: Giving out device 2 to jffs2_usr(1088K)

init_mtdchar: allocated major number 90.

init_mtdblock: allocated major number 31.

……

3.3 創建文件系統鏡像文件

系統會編譯生成JFFS2的輔助工具:mkfs.jffs2、eraseall、erase。其中mkfs.jffs2會產生JFFS2文件系統鏡像的工具,eraseall和erase用來對FLASH芯片的擦除。mkfs.jffs的使用方法如下:mkfs.jffs -d根目錄?-b| l??-e 擦除塊大小??-o 輸出文件??-v ?0-9???-q?。

另外,為了使系統在啟動時自動掛載建好的JFFS2文件系統,在啟動腳本里應加入:

mount -t jffs2 /dev/mtdblock2 /mnt4 結束語

本文討論了在uClinux下建立基于Nor Flash的JFFS2的文件系統的一般步驟。Nor Flash的特性決定了它在對數據存儲要求不高的嵌入式系統中有著廣泛的應用,因此JFFS2文件系統對Flash上的數據管理非常方便。對于一些高端的掌上設備來說,Nand Flash更為適合,其單元存儲密度比較高,成本較低,這樣系統可以在不增加成本的情況下擴大存儲容量。目前有一種新型的文件系統YAFFS更適于Nand Flash,本文不再予以討論。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品一卡| 欧美日韩一区二区免费在线观看| 夜夜嗨av一区二区三区四区| 在线欧美不卡| 老司机免费视频一区二区| 欧美午夜一区二区三区免费大片| 久久久久久久一区二区| 国产精品久久久久久久9999| 9人人澡人人爽人人精品| 国产日韩精品一区观看| av成人毛片| 欧美人成在线| 久久精品视频在线看| 国产亚洲欧美日韩一区二区| 国产一区再线| 久久黄色影院| 久久国内精品自在自线400部| 亚洲欧美制服另类日韩| 午夜一区二区三区不卡视频| 欧美精品在线观看播放| 欧美午夜精品| 一本色道久久综合亚洲二区三区| 亚洲精品一二三区| 国产精品久久久久9999| 亚洲美女精品久久| 欧美一区二区黄色| 亚洲一品av免费观看| 久久欧美肥婆一二区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲高清在线精品| 久久精品亚洲精品国产欧美kt∨| 欧美日本韩国| 欧美成人一二三| 亚洲伦理在线观看| 久久电影一区| 正在播放欧美视频| 日韩视频精品在线观看| 亚洲电影有码| 国产亚洲欧美一区| 夜夜爽av福利精品导航| 国产女主播一区二区| 国产美女诱惑一区二区| 欧美日韩国产美| 欧美激情综合亚洲一二区| 影音先锋亚洲视频| 99精品视频免费全部在线| 欧美精品三级日韩久久| 欧美三级视频在线播放| 一区二区三区自拍| 一本大道久久a久久精品综合| 欧美精品少妇一区二区三区| 亚洲深夜激情| 亚洲二区视频| 欧美日韩国产免费观看| 99国产精品自拍| 亚洲欧美精品伊人久久| 亚洲在线播放| 国产日韩欧美中文| 欧美激情欧美激情在线五月| 精品9999| 国产精品一区二区久久国产| 裸体丰满少妇做受久久99精品| 日韩视频在线免费| 狠狠色狠色综合曰曰| 一本色道久久88精品综合| 99香蕉国产精品偷在线观看| 久久亚洲国产精品一区二区| 欧美色欧美亚洲另类七区| 午夜亚洲视频| 狠狠色伊人亚洲综合成人| av成人免费在线观看| 欧美大片免费久久精品三p| 黄色影院成人| 国产欧美日韩免费| 蜜桃av一区二区三区| 亚洲综合视频一区| 欧美亚洲在线播放| 先锋影音国产一区| 老司机精品导航| 久久精品视频在线观看| 国产一区二区三区四区五区美女| 一区在线电影| 久久精品成人一区二区三区| 亚洲影院高清在线| 香蕉乱码成人久久天堂爱免费| 99精品久久| 国产日韩一区二区| 中国女人久久久| 欧美在线免费观看亚洲| 国产精品久久久爽爽爽麻豆色哟哟| 久久夜色精品国产亚洲aⅴ| 免费成人高清视频| 久久亚洲精品网站| 亚洲国产精品久久久久婷婷884| 欧美午夜不卡视频| 国产精品日韩专区| 妖精视频成人观看www| 久久免费精品日本久久中文字幕| 亚洲影院高清在线| 蜜桃久久精品乱码一区二区| 欧美在线免费观看亚洲| 韩国亚洲精品| 一区二区欧美视频| 性做久久久久久久免费看| 影音先锋久久资源网| 在线亚洲激情| 国产亚洲综合性久久久影院| 亚洲国产成人av在线| 日韩视频不卡中文| 亚洲私人影院在线观看| 在线观看日韩国产| 欧美一二三区在线观看| 亚洲国产精品悠悠久久琪琪| 久久人人爽人人爽| 国产日韩亚洲欧美综合| 亚洲自拍高清| 亚洲欧美日韩精品| 国产日韩av一区二区| 欧美亚洲综合在线| 亚洲三级观看| 欧美1级日本1级| 久久久人成影片一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 免费一级欧美在线大片| 国产精品亚洲片夜色在线| 亚洲品质自拍| 久久激情网站| 国产午夜亚洲精品不卡| 久久久综合视频| 久久精品网址| 在线亚洲精品| 午夜精品福利在线| 亚洲第一福利视频| 国产精品亚洲产品| 久久精品在线视频| 久久精品一区二区三区不卡牛牛| 日韩亚洲国产精品| 久久久久国产精品麻豆ai换脸| 欧美精品日韩一本| 99国产精品国产精品久久| 国产精品日韩欧美| 日韩亚洲不卡在线| 久久影视三级福利片| 欧美激情国产日韩精品一区18| 欧美大片第1页| 欧美性做爰猛烈叫床潮| 久久综合狠狠综合久久综青草| 亚洲乱码视频| 国产手机视频一区二区| 欧美一级片久久久久久久| 美女网站久久| 亚洲一区亚洲二区| 久久手机精品视频| 日韩亚洲欧美中文三级| 亚洲专区欧美专区| 日韩视频免费在线| 久久久久综合| 一区二区三区四区五区在线| 欧美一区二区三区另类| 欧美综合第一页| 揄拍成人国产精品视频| 欧美大片第1页| 久久久国产精彩视频美女艺术照福利| 中文欧美在线视频| 国产精品免费视频xxxx| 久久精品国产久精国产思思| 亚洲欧美综合一区| 欧美视频官网| 蜜臀91精品一区二区三区| 欧美激情一区二区三区在线视频| 欧美久久久久久蜜桃| 亚洲看片免费| 在线精品国精品国产尤物884a| 一区二区在线视频观看| 亚洲欧美三级在线| 久久久久久婷| 欧美另类变人与禽xxxxx| 日韩视频精品在线观看| 久久婷婷国产综合国色天香| 欧美久久一区| 欧美黄色一区二区| 亚洲国产精品一区二区第四页av| 亚洲一区观看| 亚洲综合色自拍一区| 欧美在线观看视频一区二区| 欧美激情第8页| 国产区精品视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲黄色天堂| 久久久伊人欧美| 精品999在线观看| 久久青草久久| 国产精品高清在线观看| aⅴ色国产欧美| 国产亚洲一区二区在线观看| 国语自产精品视频在线看| 国产精品国产三级欧美二区| 欧美日韩xxxxx| 欧美一区2区三区4区公司二百| 欧美日韩精品| 国产精品毛片一区二区三区| 亚洲成人在线视频播放| 永久555www成人免费| 欧美日韩成人在线观看| 麻豆国产va免费精品高清在线| 亚洲一区免费视频| 欧美日韩黄视频| 欧美高清不卡| 狠狠v欧美v日韩v亚洲ⅴ| 国产亚洲一本大道中文在线| 欧美日韩国内自拍| 亚洲美女性视频| 国产欧美日韩一区| 欧美大片免费观看| 一区二区三区产品免费精品久久75| 久久阴道视频| 亚洲精品日韩一| 欧美一区二区日韩一区二区| 欧美日韩综合一区| 欧美日韩三级一区二区| 狠狠狠色丁香婷婷综合久久五月| 一区二区三区我不卡| 欧美日韩国产欧美日美国产精品| 黄色成人精品网站| 国内自拍亚洲| 欧美日韩视频在线观看一区二区三区| 国产精品免费久久久久久| 欧美日韩国产一中文字不卡| 国产精品日韩精品欧美精品| 欧美一区免费视频| 欧美日本一区二区高清播放视频| 久久久久久久一区二区三区| 国产精品福利影院| 亚洲欧洲精品一区二区三区波多野1战4| 欧美视频久久| 国产一区二区三区四区hd| 91久久久久久| 久久国产黑丝| 香蕉av777xxx色综合一区| 欧美日本不卡视频| 亚洲国产高清在线| 国产精品视频免费一区| 午夜免费电影一区在线观看| 久久高清免费观看| 欧美大片免费| 伊甸园精品99久久久久久| 国产精品老牛| 国产欧美日韩精品a在线观看| 裸体歌舞表演一区二区| 国产精品国产福利国产秒拍| 亚洲一区二区在线看| 欧美激情bt| 激情久久久久久久| 西西裸体人体做爰大胆久久久| 国产精品你懂得| 每日更新成人在线视频| 国产日韩一区| 亚洲精品视频一区二区三区| 欧美色欧美亚洲高清在线视频| 99精品国产在热久久下载| 亚洲一区二区成人| 国产精品视频一二三| 欧美极品欧美精品欧美视频| 欧美一区二区免费| 欧美好吊妞视频| 美日韩精品视频| 国产欧美精品日韩精品| 美日韩精品免费| 国内精品国产成人| 欧美成人第一页| 欧美日韩一区自拍| 久久精品在线免费观看| 亚洲免费av观看| 欧美一区二区三区在线| 国产精自产拍久久久久久蜜| 国产精品日韩在线| 狠色狠色综合久久| 精品51国产黑色丝袜高跟鞋| 一区二区欧美在线观看| 久久本道综合色狠狠五月| 国产一区二区剧情av在线| 在线视频国内自拍亚洲视频| 国产欧美一区视频| 在线不卡视频| 久久久女女女女999久久| 麻豆免费精品视频| 久久国内精品自在自线400部| 亚洲精品视频免费观看| 国产精品蜜臀在线观看| 亚洲国产精品高清久久久| 欧美成人精品一区二区| 在线观看日韩精品| 久久麻豆一区二区| 欧美第一黄网免费网站| 久久精品最新地址| 久久国产一二区| 1204国产成人精品视频| 国产精品高潮粉嫩av| 国产日韩欧美夫妻视频在线观看| 一区二区三区在线高清| 欲香欲色天天天综合和网| 国内成+人亚洲| 亚洲第一页中文字幕| 久久精品99久久香蕉国产色戒| 欧美在线一二三| 国产精品自拍网站| 欧美巨乳波霸| 黑丝一区二区| 免费国产自线拍一欧美视频| 亚洲欧美日韩另类精品一区二区三区| 欧美一区永久视频免费观看| 伊人久久大香线| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲国产精品视频一区| 伊人激情综合| 久久久999精品视频| 欧美日本成人| 亚洲精品乱码久久久久| 欧美国产免费| 亚洲国产精品va在看黑人| 国产精品一区二区你懂得| 国产日韩亚洲| 国产精品国产三级国产普通话三级| 一本一本久久a久久精品综合妖精| 一本色道婷婷久久欧美| 久久香蕉国产线看观看网| 亚洲免费视频中文字幕| 亚洲欧美日韩天堂一区二区|