嵌入式文件系統(tǒng)在工程機械監(jiān)控器移植

2013-08-28 10:51 來源:電子信息網 作者:鈴鐺

在基于嵌入式操作系統(tǒng)的工程機械智能監(jiān)控器的開發(fā)過程中,完成了文件系統(tǒng)的移植,將周立功公司的ZLG/FS文件系統(tǒng)經過一系列修改,嵌入到監(jiān)控器的系統(tǒng)程序里運行。文件系統(tǒng)的硬件平臺選用三星公司的Nand Flash芯片K9F2808,作為文件系統(tǒng)的硬件依托。文件系統(tǒng)移植完后該芯片就成為系統(tǒng)硬盤,用來存儲系統(tǒng)程序和字庫文件等。

文件系統(tǒng)是操作系統(tǒng)中組織、存取和保護數(shù)據(jù)的一個重要部分,文件系統(tǒng)的主要目標是提高存儲器的利用率,接受用戶的委托實施對文件的操作。在本工程機械智能監(jiān)控器項目開發(fā)之初,文件系統(tǒng)這部分設計是由合作方北京航空航天大學完成的,當時使用的嵌入式文件系統(tǒng)是μC/OS—II。我方接手以后,對該文件系統(tǒng)進行了分析研究,發(fā)現(xiàn)該文件系統(tǒng)雖然能用,但是有些地方不夠完善,存在一些問題和隱患:比如μC/OS-II內存占用比較大,且效率不高等。因此,又從網上下載了周立功文件系統(tǒng)(ZLG/FS),發(fā)現(xiàn)其非常適合監(jiān)控器項目的使用,并且具備如下特點:

①高度兼容FAT12、FAT16、FAT32;

②可移植;

③支持多任務操作系統(tǒng);

④兼容多種介質。

ZLG/FS采用模塊化層次結構設計,并使用底層驅動程序來兼容不同的硬件結構和不同的介質。共包括6個模塊:應用程序模塊、文件管理與目錄管理模塊、文件分配表管理與文件目錄表管理模塊、邏輯盤管理模塊、高速緩存(Cache)管理模塊、底層驅動程序模塊。最終決定將該文件系統(tǒng)移植到智能監(jiān)控器系統(tǒng)上面。

本系統(tǒng)采用目標機+宿主機的開發(fā)模式,目標平臺是ARM S3C44B0,宿主機是PC機+μC/OS-II操作系統(tǒng)。S3C44B0是基于ARM7TDMI內核的32位微控制器,它是三星公司專門為PDA、Internet設備和手持設備等開發(fā)的微處理器。該芯片還包含有8 KB的Cache,這一特性使開發(fā)人員能夠將μC/OS-II操作系統(tǒng)移植到基于該處理器的目標系統(tǒng)中。

2 文件系統(tǒng)在智能監(jiān)控器系統(tǒng)上面的移植過程

2.1 底層驅動程序的編寫

硬件上,將三星公司的Nand Flash芯片K9F2808開發(fā)為系統(tǒng)硬盤。需要編寫兩部分的驅動程序:一是關于該Flash芯片的驅動程序,也就是對該芯片最底層的最基本的操作,建立文件Flash.c,包括Flash復位、讀Flash ID號、擦除Flash的一塊、讀扇區(qū)、寫扇區(qū)等函數(shù),這部分函數(shù)代碼由芯片公司提供;二是關于文件系統(tǒng)的基礎操作,創(chuàng)建文件K9F2808.c,它調用flash.c里面的函數(shù),為上層的程序提供一個與底層無關的接口。

文件K9F2808.c主要包括以下函數(shù):創(chuàng)建FAT12、創(chuàng)建根目錄、格式化Flash盤、將MBR寫到盤里等。在格式化Flash盤這個函數(shù)里,首先要調用Flash復位的函數(shù),然后擦除Flash盤的第0個Block,擦除成功以后,將MBR的內容寫入該Block的第一個Page里,這是Flash盤的引導扇區(qū),寫入的MBR包含了該盤的一些基本信息。至此,完成了格式化盤的第一步,為后面繼續(xù)格式化打下基礎。

下一步就是要創(chuàng)建FAT12,用兩個扇區(qū)(即兩個Page)作FAT區(qū),并將其內部單元全部初始化為00H,相繼的2個扇區(qū)作FAT區(qū)的備份。接下來,把第1個Block擦除掉,然后在這個Block里創(chuàng)建該盤文件系統(tǒng)的根目錄,并將根目錄區(qū)初始化為00H。這樣就把一個Flash盤給格式化為FAT12文件系統(tǒng)格式。但是還不能往盤里存東兩,因為還需要一些文件系統(tǒng)上層的管理。

在K9F2808.c這個文件里,函數(shù)K9F2808(uint8 Cammand,vold*Parameter)是底層驅動程序與上層的接口函數(shù),第一個參數(shù)代表要對該盤進行操作的命令,比如磁盤初始化、關閉磁盤、讀扇區(qū)、寫扇區(qū)等;第二個參數(shù)是一個結構體,它包含了當前操作的磁盤的一些讀寫基本信息。在文件系統(tǒng)的上層程序里這個函數(shù)將被頻繁調用。

2.2 邏輯盤管理的程序移植

這是底層驅動程序上面一層的程序,文件名是disk.c,其中主要包含:磁盤初始化、讀取磁盤信息、獲取空盤信息、增加一個驅動程序。刪除一個驅動程序等函數(shù)。這部分程序勿需改變,可以原封不動地延用ZLG—FS里提供的程序,在此不再贅述。

2.3 高速緩存管理的程序移植

這是FAT文件系統(tǒng)關于Cache管理的部分,文件名是RWSec.c,主要包括:初始化磁盤Cache、解鎖指定Cache(允許切換出內存)、把指定扇區(qū)寫回邏輯盤、把指定Cache寫回邏輯盤、把所有已改變的扇區(qū)寫回邏輯盤、從內存獲取一個Cache、為邏輯盤上的一個扇區(qū)打開一個Cache并鎖定、從邏輯盤讀取一個扇區(qū)、指定邏輯盤的指定一個扇區(qū)被改寫等。除了極個別的地方需要稍做修改外,這部分函數(shù)基本上都延用ZLG—FS里提供的程序。

2.4 文件分配表管理(FAT)的移植

文件Fat.c主要是FAT文件系統(tǒng)的文件分配表基本操作函數(shù),包括:返回FAT表指定簇的下一個簇號、分配下一個簇、為指定簇鏈增加一個簇、刪除指定簇鏈。這些函數(shù)可以放心大膽地使用,不需要修改。

2.5 文件目錄表管理(FDT)的移植

文件Fdt.c是關于FAT文件系統(tǒng)的文件分配表基本操作程序。主要包括:將指定簇所有數(shù)據(jù)清零,讀取FDT信息,寫FDT信息,獲取根目錄指定文件(目錄)信息,獲取指定目錄指定文件(目錄)信息,設置根目錄指定文件(目錄)信息,設置指定目錄指定文件(目錄)信息,在指定目錄查找指定文件(目錄),在指定目錄處增加指定文件(目錄),在指定目錄刪除指定文件(目錄),改變指定目錄指定文件(目錄)的屬性,判斷目錄是否為空,在指定目錄查看指定文件(目錄)是否存在。除了對最后兩個函數(shù)作了很小的改動外,其他函數(shù)都沒用動。

1 2 > 
嵌入式 監(jiān)控器 移植

相關閱讀

暫無數(shù)據(jù)

一周熱門