日本不卡视频网站,99精品视频在线观看re,奇米色在线视频,欧美不卡在线,草草影院欧美三级日本,九九久久久2,午夜综合

uClinux下Nor Flash的JFFS2文件系統(tǒng)構建

時間:2024-10-28 15:50:07 理工畢業(yè)論文 我要投稿
  • 相關推薦

uClinux下Nor Flash的JFFS2文件系統(tǒng)構建

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

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

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

1 JFFS2文件系統(tǒng)簡介

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

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

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

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

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

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

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

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

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

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

#define WINDOW SIZE 0x200000

#define BUSWIDTH 2

(2) 定義SST39VF160分區(qū)

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

static struct mtd_partition s3c4510_partitions[]={

{

name: ″bootloader(128K)″,

size: 0x20000,

offset: 0x0000,

mask_flags:MTD_WRITEABLE //設置成只讀區(qū)域

},

{

name: ″uClinux_kernel(832K)″,

【uClinux下Nor Flash的JFFS2文件系統(tǒng)構建】相關文章:

嵌入式系統(tǒng)中的線性Flash文件系統(tǒng)設計03-21

在uClinux環(huán)境下實現(xiàn)虛擬局域網03-18

大容量內存文件系統(tǒng)設計及μC/OS下的實現(xiàn)03-18

電子商務環(huán)境下審計理論的構建12-09

ObjectARX環(huán)境下的結構建模系統(tǒng)的開發(fā)03-18

文化戰(zhàn)略下的校園文化構建探析11-25

I2C總線在uClinux操作系統(tǒng)下的驅動程序設計11-22

試論新課改背景下德育管理體系的構建03-18

網絡環(huán)境下創(chuàng)新教學模式的構建與應用03-02

生命哲學下瑜伽課程評價體系的構建論文11-14