文件系統(tǒng)的工作原理:
文件系統(tǒng)組件提供創(chuàng)建、保存、讀取和修改文件的功能。ARM C/ C++編譯器運行庫的重定向接口允許使用ANSI C標準文件I/O函數(shù)。文件系統(tǒng)組件是為基于Cortex-M處理器的設備設計的,需要一個符合CMSIS-RTOS的實時操作系統(tǒng)來實現(xiàn)線程安全的操作。
文件系統(tǒng)組件由兩個不同的文件系統(tǒng)組成,根據(jù)媒體類型,它們位于不同的層之上:
FAT文件系統(tǒng)(使用FAT12、FAT16或FAT32)用于內存卡設備、USB記憶棒、NAND Flash設備和RAM磁盤。FAT是許多計算機上使用的標準文件系統(tǒng)。
嵌入式文件系統(tǒng)(EFS)為NOR閃存設備進行了優(yōu)化。
FAT文件系統(tǒng)的日志記錄是FAT文件系統(tǒng)的擴展,它有助于在嵌入式系統(tǒng)中保持文件系統(tǒng)的一致性。
存儲卡控制層用于控制SDxC/MMC/eMMC存儲設備。
NAND Flash Translation Layer提供了對NAND Flash設備進行磨損均衡、壞塊管理和錯誤糾正的方法。
使用文件系統(tǒng)
文件系統(tǒng)組件與ARM標準實時運行庫集成,需要一個與CMSIS-RTOS兼容的實時操作系統(tǒng)。它不能與ARM MicroLIB庫一起使用,因為這個庫沒有提供用于I/O文件處理的鉤子.
下圖從開發(fā)人員的角度展示了文件系統(tǒng)的結構。

系統(tǒng)、文件管理: 管理文件系統(tǒng)的功能,提供格式化驅動器、管理文件和目錄的操作。
標準文件I/O:對文件進行讀、寫、尋道等輸入輸出操作的函數(shù)。
ARM標準實時運行庫:是ARM編譯器的標準C庫,含有管理文件的函數(shù)。
FS_Config.c:文件系統(tǒng)一般特征的配置文件。
定義可以同時打開的文件數(shù)量。
設置當前驅動器的初始設置。 當前驅動器用于文件系統(tǒng)功能 。

FS_Config_xxx_n.h:每個驅動器或媒體(MC、NAND、NOR、RAM或USB記憶棒)的特性配置文件。

文件系統(tǒng)核心:處理低級的輸入和輸出文件操作(有些被重新定位為使用ARM標準實時運行庫)。根據(jù)配置設置,它使用適當?shù)奈募到y(tǒng)(FAT或EFS)并實現(xiàn)NAND Flash轉換層。
FAT媒體API:用于FAT文件系統(tǒng)訪問物理扇區(qū)的I/O控制接口例程。
FAT、EFS Media: FAT文件系統(tǒng)支持MC (Memory card)、NAND Flash、u盤和RAM盤。嵌入式文件系統(tǒng)(EFS)支持NOR Flash設備。
驅動文件系統(tǒng)核心通過cmsis驅動程序訪問驅動器,這些驅動程序通常是設備家族包的一部分。每個驅動器都使用專用驅動器。