C Linux中的Brown out实现?

C Linux中的Brown out实现?,c,linux,linux-device-driver,interrupt-handling,C,Linux,Linux Device Driver,Interrupt Handling,我有一个嵌入式数据记录器,其中的数据来自外部传感器,这些传感器临时存储在一个文件(tmpfs)中,并通过闪存备份到另一个文件中。如何实现一个brownout处理程序来保存丢失的数据?在系统中拥有一个brownout处理程序仅仅是拥有Linux内核设备驱动程序实现的问题。对于这样的任务,最好是查阅这本书 但如果你问我,更重要的问题是它是否真的能帮助你保存数据?因为brownout只是:一个brownout:)我敢打赌你不会有足够的时间来保存所有的数据(取决于数据大小、RAM/flash R/W速度

我有一个嵌入式数据记录器,其中的数据来自外部传感器,这些传感器临时存储在一个文件(
tmpfs
)中,并通过闪存备份到另一个文件中。如何实现一个brownout处理程序来保存丢失的数据?

在系统中拥有一个brownout处理程序仅仅是拥有Linux内核设备驱动程序实现的问题。对于这样的任务,最好是查阅这本书

但如果你问我,更重要的问题是它是否真的能帮助你保存数据?因为brownout只是:一个brownout:)我敢打赌你不会有足够的时间来保存所有的数据(取决于数据大小、RAM/flash R/W速度、内核的内部优先级处理,可能还有其他一些计时,等等)


通常,通过使用日志文件系统可以解决此问题,日志文件系统可以防止系统中的数据被破坏(但无法防止数据丢失)。有关此类系统的更多信息:

我不明白。您是否希望安全地防止突然断电(硬件关闭而没有时间作出反应)?当然,您每次都需要写入永久存储,并确保刷新所有缓冲区。或者你想要别的东西吗?谢谢阿尔夫:)永久存储是基于闪存的,所以每次写入都有问题。有一个外部PMIC通过I2C与主SOC相连,在断电时提供中断,电容器组在断电前提供几毫秒。我想用这个中断将数据从基于ram的文件备份到永久存储器。然后也许你可以在超级用户上这样做,而不是stackoverflow。这似乎更像是一个管理问题,而不是一个编程问题,因为您主要想知道如何对硬件提供的断电信号做出反应。您是在询问接收到该信号时该怎么做,还是如何接收该信号?我想在接收到该信号后保存数据。我想知道在嵌入式Linux系统中实现这一点的最佳方法。