天天看點

WinCE檔案系統概要

    檔案系統是一個實作了資料的存儲、組織、處理和擷取等操作的抽象資料類型。一般分為磁盤檔案系統,網絡檔案系統和特定功能的檔案系統。

      磁盤檔案系統主要包括FAT(FAT12、FAT16、FAT32),NTFS、HFS、ext2、ext3,現在ext4也出來了。

      FLASH檔案系統是針對FLASH存儲器設計的檔案系統。随着移動裝置的不斷普及,和FLASH存儲空間的不斷增長,FLASH檔案系統也流行起來。在嵌入式系統中,絕大多數都使用FLASH檔案系統。

      資料庫檔案系統是基于資料庫的檔案系統。與分層結構的管理不同,在資料庫檔案系統中,檔案由描述符來辨別,如檔案的類型、主題、作者或其他一些中繼資料。

      網絡檔案系統是用來通路伺服器中檔案的檔案系統,常見的協定有NFS、AFS和SMB。

      現代作業系統都內建了檔案系統,WinCE也不例外。與桌面Windows的檔案系統不同,WinCE的檔案系統中沒有分區的概念。所有的檔案系統,都被Mount到根目錄“\”下面。程式設計時需要注意,WinCE中也沒有目前目錄的概念,所有的目錄都以根目錄為參考。

      WinCE中支援的檔案系統有如下幾種:

檔案系統

概要

FAT或FATFS

标準的FAT檔案系統。單個檔案不能超過4G,分區大小也有限制。

exFAT

FAT的更新版,取消了檔案和分區大小的限制。

TFAT

基于exFAT的檔案系統,支援互動操作,需要驅動的支援。

BinFS

支援将bin檔案Mount成一個檔案系統,WinCE中的Multi-BIN需要用到該檔案系統。

CDFS/UDFS

用來支援CD和DVD的檔案系統。

RAM(對象存儲)

RAM檔案系統由FSD Manager管理。

RELFSD

在開發的過程中,将開發主機的release目錄mount到裝置上。

WinCE檔案系統的配置,由系統資料庫實作,一般在[HKLM\System\StorageManager]中。

    在定制WinCE作業系統時,我們可以選擇ROM-only 的檔案系統或RAM and ROM的檔案系統。當選擇RAM and ROM的檔案系統時,根目錄檔案系統在記憶體當中,掉電即丢失。為了實作根檔案系統和系統資料庫的儲存,即在冷啟動時不丢失,我們需要選擇ROM-only的檔案系統和HIVE BASED系統資料庫,以将存儲空間Mount成根目錄,并配置系統資料庫使其支援HIVE BASED系統資料庫。

      Linux的檔案系統有ext、XFS、JFS和ReiserFS。嵌入式Linux的檔案系統主要有rootfs、RAMDisk、Cramfs、JFFS2(基于日志的FLASH FS)、YAFFS2(Yet Another FLASH FS)等。

      是以,想要Linux和WinCE共用一個NAND FLASH有沒有可能呢?兩個想法,簡單而又友善的是讓Linux直接挂在WinCE下的FAT分區,第二個想法是WinCE中留一些BLOCK,給Linux處理。先MARK一下,有時間再來求證。