硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5584|回复: 3
收起左侧

[ThreadX全家桶] 高级特性,ThreadX FileX容错支持,即掉电保护功能

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-2-28 14:43:56 | 显示全部楼层 |阅读模式


        FileX容错旨在防止由于文件或目录更新期间的中断而导致文件系统损坏。例如,将数据附加到文件时,FileX需要更新文件,目录条目以及可能的FAT条目的内容。如果此更新过程被中断(例如电源故障或介质在更新过程中弹出),则文件系统处于不一致状态,这可能会影响整个文件系统的完整性,从而导致文件损坏。

        FileX容错功能通过记录在更新过程中更新文件或目录所需的所有步骤来工作。该日志条目存储在FileX可以找到和访问的专用扇区上。即使没有适当的文件系统,也可以访问日志数据的位置。因此,万一文件系统损坏,FileX仍然能够找到日志条目并将文件系统恢复到良好状态。
当FileX更新文件或目录时,将创建日志条目。成功完成更新操作后,将删除日志条目。如果在成功更新文件后未正确删除日志条目,则恢复过程确定日志条目中的内容与文件系统匹配,则无需执行任何操作,即可清除日志条目。

        如果文件系统更新操作被中断,则下次FileX装入媒介时,容错功能将分析日志条目。日志条目中的信息允许FileX撤消已经应用到文件系统的部分更改(以防在文件更新操作的早期阶段发生故障),或者如果日志条目包含重做信息,则FileX能够完成先前操作所需的更改。

        此容错功能可用于FileX支持的所有FAT文件系统,包括FAT12,FAT16,FAT32和exFAT。默认情况下,FileX中未启用容错功能。要启用容错功能,必须使用宏定义FX_ENABLE_FAULT_TOLERANT和FX_FAULT_TOLERANT来构建 FileX。在运行时,应用程序通过调用fx_fault_tolerant_enable来启动容错服务。服务启动后,所有文件和目录写操作都将通过容错模块进行。

        当容错服务启动时,它首先检测该媒介是否在容错模块下受到保护。如果不是,则FileX会假定文件系统是完整的,并通过从文件系统分配用于日志记录和缓存的空闲块来开始保护。如果在文件系统上找到了容错模块日志,它将分析日志条目。FileX将还原先前的操作或重做先前的操作,具体取决于日志条目的内容。在处理所有先前的日志条目之后,文件系统变得可用。这样可以确保FIleX从已知的良好状态开始。

        在FileX容错模块下保护了媒介之后,将不会使用其他文件系统来更新该介质。这样做会使文件系统上的日志条目与FAT表中的内容(目录条目)不一致。如果在使用容错功能将其移回到FileX之前,该媒介是由另一个文件系统更新的,则结果是不确定的。
回复

使用道具 举报

38

主题

291

回帖

405

积分

高级会员

积分
405
发表于 2021-2-28 15:22:18 | 显示全部楼层
该项特性的开启势必影响文件操作性能,而且在系统初始化时要进行恢复检查和操作,也影响系统启动时长
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2021-2-28 15:31:49 | 显示全部楼层
wanglehui_12 发表于 2021-2-28 15:22
该项特性的开启势必影响文件操作性能,而且在系统初始化时要进行恢复检查和操作,也影响系统启动时长

是的,适合安全关键的场合。
回复

使用道具 举报

14

主题

99

回帖

141

积分

初级会员

积分
141
发表于 2021-2-28 23:09:23 | 显示全部楼层
期待教程发布
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 11:55 , Processed in 0.299738 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表