文件系統(tǒng)的工作原理:
文件系統(tǒng)組件提供創(chuàng)建、保存、讀取和修改文件的功能。ARM C/ C++編譯器運(yùn)行庫的重定向接口允許使用ANSI C標(biāo)準(zhǔn)文件I/O函數(shù)。文件系統(tǒng)組件是為基于Cortex-M處理器的設(shè)備設(shè)計(jì)的,需要一個符合CMSIS-RTOS的實(shí)時(shí)操作系統(tǒng)來實(shí)現(xiàn)線程安全的操作。
文件系統(tǒng)組件由兩個不同的文件系統(tǒng)組成,根據(jù)媒體類型,它們位于不同的層之上:
FAT文件系統(tǒng)(使用FAT12、FAT16或FAT32)用于內(nèi)存卡設(shè)備、USB記憶棒、NAND Flash設(shè)備和RAM磁盤。FAT是許多計(jì)算機(jī)上使用的標(biāo)準(zhǔn)文件系統(tǒng)。
嵌入式文件系統(tǒng)(EFS)為NOR閃存設(shè)備進(jìn)行了優(yōu)化。
FAT文件系統(tǒng)的日志記錄是FAT文件系統(tǒng)的擴(kuò)展,它有助于在嵌入式系統(tǒng)中保持文件系統(tǒng)的一致性。
存儲卡控制層用于控制SDxC/MMC/eMMC存儲設(shè)備。
NAND Flash Translation Layer提供了對NAND Flash設(shè)備進(jìn)行磨損均衡、壞塊管理和錯誤糾正的方法。
使用文件系統(tǒng)
文件系統(tǒng)組件與ARM標(biāo)準(zhǔn)實(shí)時(shí)運(yùn)行庫集成,需要一個與CMSIS-RTOS兼容的實(shí)時(shí)操作系統(tǒng)。它不能與ARM MicroLIB庫一起使用,因?yàn)檫@個庫沒有提供用于I/O文件處理的鉤子.
下圖從開發(fā)人員的角度展示了文件系統(tǒng)的結(jié)構(gòu)。
系統(tǒng)、文件管理: 管理文件系統(tǒng)的功能,提供格式化驅(qū)動器、管理文件和目錄的操作。
標(biāo)準(zhǔn)文件I/O:對文件進(jìn)行讀、寫、尋道等輸入輸出操作的函數(shù)。
ARM標(biāo)準(zhǔn)實(shí)時(shí)運(yùn)行庫:是ARM編譯器的標(biāo)準(zhǔn)C庫,含有管理文件的函數(shù)。
FS_Config.c:文件系統(tǒng)一般特征的配置文件。
定義可以同時(shí)打開的文件數(shù)量。
設(shè)置當(dāng)前驅(qū)動器的初始設(shè)置。 當(dāng)前驅(qū)動器用于文件系統(tǒng)功能 。
FS_Config_xxx_n.h:每個驅(qū)動器或媒體(MC、NAND、NOR、RAM或USB記憶棒)的特性配置文件。
文件系統(tǒng)核心:處理低級的輸入和輸出文件操作(有些被重新定位為使用ARM標(biāo)準(zhǔn)實(shí)時(shí)運(yùn)行庫)。根據(jù)配置設(shè)置,它使用適當(dāng)?shù)奈募到y(tǒng)(FAT或EFS)并實(shí)現(xiàn)NAND Flash轉(zhuǎn)換層。
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設(shè)備。
驅(qū)動文件系統(tǒng)核心通過cmsis驅(qū)動程序訪問驅(qū)動器,這些驅(qū)動程序通常是設(shè)備家族包的一部分。每個驅(qū)動器都使用專用驅(qū)動器。