ARM7系統中CF卡存儲的文件系統設計實(shí)現
為了達到這些目的,我們針對不同CPU的不同處理方法,對硬件操作程序進(jìn)行分離,將設備有關(guān)的底層程序變成與設備無(wú)關(guān)的上層操作。這樣,當系統新增功能之后,不必更改每個(gè)子程序,只需要在某些接口文件的數據結構中添加或者更改數據項即可;又考慮到用戶(hù)對上層操作的透明性,我們采用面向對象的方法,上層結構中存取操作的Driver結構(含Read、Write數據項)是虛擬的,在底層才將它具體化為CF卡的讀寫(xiě)扇區命令(操作碼為:20h、30h)。
軟件程序的主要流程如圖3所示。
2 系統設計實(shí)現
根據上述原理,可完成軟件設計,其基本框架如圖4所示,分為六個(gè)主要部分。
其中,CF卡驅動(dòng)程序設計的關(guān)鍵是CF卡的存取操作函數所采用的命令碼有些不同。另外,我們使用驅動(dòng)程序對象來(lái)代表CF卡設備驅動(dòng)程序。該驅動(dòng)程序對象對于用戶(hù)是部分不透明的,數據項包括讀寫(xiě)函數的指針,這些函數由文件系統程序輸出(包括兩部分函數,用戶(hù)可見(jiàn)API函數調用和用戶(hù)不見(jiàn)驅動(dòng)存取函數)。此對象的數據結構聲明如下:
Typedef Struct CF_XFILE_DRIVER{
BYTE Driver_name; /*介質(zhì)標示;CF卡、IDE硬盤(pán)、Flash卡、RAMDISK等,刪除驅動(dòng)的話(huà),需要重新記錄DRIVER號*/
…… /*IRP處理函數*/
}CF_XFILE_DRIVER;
如果有多個(gè)CF卡,需要用另外一個(gè)特定的數據結構Next_Driver來(lái)把它們水平連接在一起。然后,用鏈表來(lái)管理這些數據結構,管理方式類(lèi)似于WDM(Windows Driver Model)。
3 測試分析
經(jīng)過(guò)調試運行,該文件系統性能良好。與我們之前已經(jīng)移植過(guò)的Nucleus、ΜC/OS- II、UNIX的操作系統的文件系統相比,本文介紹的文件系統可移植性更強;除了文中著(zhù)重介紹的CF卡,經(jīng)過(guò)對底層驅動(dòng)的簡(jiǎn)單修改就可以應用于其它存儲介質(zhì)如RAMdisk、IDE硬盤(pán)、Flash等(其中IDE硬盤(pán)和Flash也已經(jīng)調試成功)。另外,本文介紹的文件系統對硬件平臺的配置要求降低,并且對于文件操作的運行速度并未減慢。
評論