FAT¶
Solution中 NAND Flash/eMMC 方案使用FAT + DHARA的方案。
1. 介绍¶
FAT(File Allocation Table ,文件分配表)是 Windows NT 等系统早期广泛支持的一种较为简单的文件系统 ,在嵌入式场景中也常因兼容性等被选用。 该 文件系统的特点是文件分配表(FAT),它实际上是一个驻留在卷顶部的表。 为了保护卷,将保留 FAT 的两个副本,以防一个副本损坏。 此外,FAT 表和根目录必须存储在固定位置,以便系统启动文件可以正确定位。
使用 FAT 格式化的磁盘在群集中分配,其大小由卷的大小确定。 创建文件时,在目录中创建一个条目,并建立包含数据的第一个群集编号。 FAT 表中的此项指示这是文件的最后一个群集,或指向下一个群集。
更新 FAT 表非常重要且耗时。 如果未定期更新 FAT 表,可能会导致数据丢失。 这是耗时的,因为每次更新 FAT 表时,磁盘读取头都必须重新定位到驱动器的逻辑轨道零。
FAT 目录结构没有组织,并且为驱动器上的第一个打开位置提供文件。 此外,FAT 仅支持只读、隐藏、系统和存档文件属性。
2. FAT文件系统配置¶
3. 创建文件系统代码¶
3.1 NAND Flash/NOR Flash¶
NAND Flash/NOR Flash 芯片mount root分区代码如下
增加多个分区代码如下;需要注意的是:
增加多个分区之前必须要先mount root分区并且成功。
在增加下一个分区之前需要先在root根目录下创建这个分区的目录。
下一个分区起始地址不能与上一个分区重叠。
步骤如下:
创建第二个分区的相关信息
mount文件系统
3.2 eMMC Flash¶
由于eMMC的初始化需要一定的时间,因此要在eMMC上面mount文件系统需要等待eMMC初始化完成。
eMMC 与 NAND Flash/NOR Flash 的文件系统不同点
eMMC的sector大小是512
注册分区device的接口不一致 eMMC采用的接口如下
其他流程都与上述的 NAND Flash 流程一致。
3.3 直接下载文件系统.bin文件¶
此操作适用于需要加载另一个有文件的文件系统分区,步骤如下:
先准备好一个已经制作好的xxx.bin文件
找一片空闲没用的flash空间按照软件上的地址使用jink直接loadbin 下载进去,jink指令如下
loadbin ../../../xxx.bin 0x00000000
这样在mount时读取分区信息的LBR是有对应信息,就能识别到当前下载的分区文件系统
4. FAT文件系统使用¶
可直接通过 finsh 指令(RT-Thread 命令行环境 )操作文件系统,常用指令:
命令 |
功能说明 |
补充说明 |
|---|---|---|
|
列出目录下文件与文件夹 |
|
|
查看文件系统磁盘空间使用情况 |
|
|
查看文件内容 |
|
|
创建目录 |
|
|
删除文件或目录 |
需注意权限与递归删除逻辑 |
5. FAT文件系统注意事项¶
存储介质擦写寿命
NAND Flash 有有限擦写次数,FAT 表更新频繁会加速对应块损耗。
启用系统磨损均衡算法(若支持 ),均衡块擦写次数 。
合理规划文件存储,减少小文件频繁创建 / 删除(小文件易导致 FAT 表频繁变更 ) 。
断电保护
嵌入式设备易遇意外断电,未及时更新 FAT 表可能致文件系统损坏。
在关键文件操作后(如写入重要配置 ),主动调用 dfs_sync 接口,强制同步文件系统缓存到存储介质 。
配置合适写回策略(如牺牲部分性能,缩短缓存写入延迟 ),平衡性能与数据安全 。
长文件名支持
传统 FAT 对长文件名支持有限(早期 8.3 格式 )。若应用需长文件名:
确认所使用 FAT 实现(如 ELMFAT )对长文件名的兼容方式(通常通过 Unicode 编码扩展 ) 。
注意与其他设备(如电脑 )交互时的兼容性,避免因文件名解析差异导致文件无法访问 。
6. DHARA 磨损均衡模块¶
DHARA 是嵌入式场景中针对 Flash 存储的 专用磨损均衡与掉电异常保护能力,通过原子操作保障断电下的数据一致性,为 FAT 等文件系统提供可靠底层支撑,其核心功能围绕“延长 Flash 寿命、保障数据安全、简化开发适配”设计,具体如下:
6.1 DHARA 核心功能详解¶
功能模块 |
作用说明 |
嵌入式场景价值 |
|---|---|---|
动态磨损均衡管理 |
|
NAND Flash 擦写寿命通常为 1 万-10 万次,通过均衡擦写可将整体 Flash 寿命提升 3-5 倍,适配嵌入式设备“长期稳定运行”需求(如工业控制器、智能手表)。 |
坏块自动检测与标记 |
|
避免 FAT 文件系统将数据写入坏块导致“数据丢失”“分区损坏”,减少嵌入式设备因 Flash 硬件缺陷引发的故障(如配置文件损坏、日志丢失)。 |
逻辑地址映射 |
|
屏蔽不同 Flash 芯片的硬件差异(如块大小、地址分布、坏块位置),FAT 文件系统可“跨 Flash 型号复用”,降低嵌入式产品的硬件适配成本(如从 NOR Flash 切换到 NAND Flash 无需修改文件系统代码)。 |
数据完整性保障 |
|
应对嵌入式场景中“Flash 位翻转”问题(高温、电压波动易引发),保障 FAT 表、用户数据的完整性,降低因硬件干扰导致的文件系统崩溃风险。 |
磨损状态监控 |
|
便于嵌入式设备进行“健康管理”,如工业设备可通过磨损状态判断 Flash 更换时机,避免突发硬件失效;也可用于优化 FAT 文件系统读写策略(如磨损严重时减少非必要写操作)。 |
6.2 核心功能关联逻辑(FAT + DHARA 协同)¶
DHARA 的核心功能与 FAT 文件系统形成“分层支撑”关系,具体流程如下:
底层支撑:DHARA 管理 Flash 物理层,完成“磨损均衡→坏块处理→地址映射”,输出“虚拟逻辑存储层”;
中层适配:FAT 文件系统通过 DHARA 提供的“逻辑块接口”读写数据,无需关注物理层细节;
上层应用:用户通过 FAT 接口(如
open/write)操作文件,数据经 FAT 表调度后,由 DHARA 负责安全写入 Flash。