Filesystems 嵌入式文件系统与关机
我正在开发一个嵌入式应用程序,没有任何需要使用文件系统的操作系统。我已经与项目中的人员讨论过很多次了,有些人同意我的观点,即每当出现电源故障时,系统必须正确关闭系统,否则文件系统可能会发疯 有些人说,如果你简单地关闭系统,让自然运行,这并不重要,但我认为这是最糟糕的事情之一,特别是如果你知道这会给你带来问题,并可能缩短你的产品寿命 在最后一段中,我只是假设这是一个问题,但我的问题仍然是:Filesystems 嵌入式文件系统与关机,filesystems,embedded,power-off,Filesystems,Embedded,Power Off,我正在开发一个嵌入式应用程序,没有任何需要使用文件系统的操作系统。我已经与项目中的人员讨论过很多次了,有些人同意我的观点,即每当出现电源故障时,系统必须正确关闭系统,否则文件系统可能会发疯 有些人说,如果你简单地关闭系统,让自然运行,这并不重要,但我认为这是最糟糕的事情之一,特别是如果你知道这会给你带来问题,并可能缩短你的产品寿命 在最后一段中,我只是假设这是一个问题,但我的问题仍然是: 断电对文件系统有影响吗?这完全取决于您使用的文件系统,以及是否可以根据您的项目要求在断电时丢失一些数据 可以
断电对文件系统有影响吗?这完全取决于您使用的文件系统,以及是否可以根据您的项目要求在断电时丢失一些数据 可以想象使用一个文件系统,该系统可以防止无人值守的断电,并且能够从部分写入序列中恢复。因此,在应用程序方面,如果您没有绝对需要在关机前写入的批评数据,则不需要特定的断电检测程序 现在,如果您想为您的项目提供更具体的答案,您必须提供有关您正在使用的文件系统和项目需求的更多信息
编辑:由于您需要在关机前保存关键的应用程序数据,我认为您自己已经回答了这个问题。确保无人值守电源关闭的唯一方法是使用褐化检测,该检测会提醒您的嵌入式设备以及一些硬件电路,这些硬件电路允许持续向设备提供足够的电源以执行关闭过程。对于非日志文件系统,意外关闭可能意味着某些数据损坏,包括目录结构。如果缓存中有未保存的数据,或者FS正在写入多块更新,并且仅写入某些块时会发生中断,则会发生这种情况
日记主要解决这个问题——如果中间有中断,恢复程序或FS(通常隐含地)检查和修复操作将文件系统带到一致的状态。但是,这种状态并不总是最新的-即,如果内存缓存中有一些数据,即使使用日志记录,这些数据也可能丢失。这是因为日志记录可以避免文件系统的损坏,但并没有发挥神奇的作用
直写模式(无写缓存)降低了数据丢失的可能性,但并不能完全解决问题,因为日志记录将作为缓存工作(在很短的时间内)因此,不幸的是,备份或数据复制是防止数据丢失的主要方法。如果写入正在进行,或者文件在关闭时打开,特别是如果存在未刷新的缓冲操作,FAT文件系统特别容易损坏。在我参与的一个项目中,解决方案是在启动时运行文件系统完整性检查和修复(基本上是chkdsk/scandsk)。这种策略并没有防止数据丢失,但确实防止了文件系统变得不可用 许多供应商为FAT提供日志附加组件,以准确地解决这个问题。这些包括,例如
无论哪种方式,您的系统通常都应该采用开放-写-关闭方法来访问文件,或者如果您认为需要保持文件打开,则应采用开放-写-刷新方法 这里列出了帮助嵌入式系统容忍电源故障的各种技术。这些可能不适用于您的特定应用。