檔案系統是一個實作了資料的存儲、組織、處理和擷取等操作的抽象資料類型。一般分為磁盤檔案系統,網絡檔案系統和特定功能的檔案系統。
磁盤檔案系統主要包括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一下,有時間再來求證。