Linux:电源故障输入?

Linux:电源故障输入?,linux,interface,embedded-linux,Linux,Interface,Embedded Linux,我们正在开发一个新的嵌入式Linux板。我想要的一个功能是在断电时收到通知并安全关机。Linux中是否有任何标准机制来指示电源故障事件?不希望占用完整的串行线来处理此问题 我们正在开发一个定制的电源板,所以我们可以选择在小型UPS电路中构建。问题是该电路如何告诉Linux电源出现故障?我曾经为一台电池耗尽的Linux机器做过类似的事情: 简单地说:两个数字电流表,一个在电池和Linux机箱之间,一个在电池和外部电源之间。它们再次通过两个串行端口连接到机器。当外部安培计的读数比内部安培计的读数低得

我们正在开发一个新的嵌入式Linux板。我想要的一个功能是在断电时收到通知并安全关机。Linux中是否有任何标准机制来指示电源故障事件?不希望占用完整的串行线来处理此问题


我们正在开发一个定制的电源板,所以我们可以选择在小型UPS电路中构建。问题是该电路如何告诉Linux电源出现故障?

我曾经为一台电池耗尽的Linux机器做过类似的事情:

简单地说:两个数字电流表,一个在电池和Linux机箱之间,一个在电池和外部电源之间。它们再次通过两个串行端口连接到机器。当外部安培计的读数比内部安培计的读数低得多(比电池充满电的结果要低得多)时,机器上的cron作业将执行关机。是的,如果它是基于一台旧的笔记本电脑或包含电池的东西,这可能会以一种更容易的方式实现,但这是一种废弃笔记本电脑很容易获得的方式:)


在我目前的工作中,我们的Linux系统运行在一个可能经常发生电源故障的环境中。实际上并不需要安全关闭,因为CF卡包含文件系统,然后以只读模式从启动。然后,所有的内容都被读取到RAM磁盘中,因此CF卡不会发生写操作。但是,这样做显然会失去在引导之间保持持久存储的能力。

我曾经为一台电池耗尽的Linux机器做过类似的事情:

简单地说:两个数字电流表,一个在电池和Linux机箱之间,一个在电池和外部电源之间。它们再次通过两个串行端口连接到机器。当外部安培计的读数比内部安培计的读数低得多(比电池充满电的结果要低得多)时,机器上的cron作业将执行关机。是的,如果它是基于一台旧的笔记本电脑或包含电池的东西,这可能会以一种更容易的方式实现,但这是一种废弃笔记本电脑很容易获得的方式:)

在我目前的工作中,我们的Linux系统运行在一个可能经常发生电源故障的环境中。实际上并不需要安全关闭,因为CF卡包含文件系统,然后以只读模式从启动。然后,所有的内容都被读取到RAM磁盘中,因此CF卡不会发生写操作。但是,这样显然会失去在引导之间拥有持久存储的能力。

查看网络UPS工具。它可能已经为您正在用作基本操作系统的Linux发行版打包

如果您的外部电路板可以与现有电路板对话,则您可能可以按原样开箱即用

触点闭合接口仅适用于少量信息位;旗帜,如果你愿意的话。“断电”、“电池充电故障”等。如果您需要从电源板返回更多信息,您可以使用现有的智能UPS协议。如果出于某种原因,你不得不重新发明轮子,你可以为你的自定义协议

你会发现大多数智能UPS协议使用RS-232串行或USB,但我从你的问题中得到了一种定制的嵌入式Linux氛围。您可能想改用I²C或SPI,因为您的微控制器可能已经有了I/O引脚

我希望您清楚这是一个好主意的原因,因为您已经在Linux上构建了:NUT是一个很好、稳定、可用、免费的基础架构,就像Linux一样。

看看网络UPS工具。它可能已经为您正在用作基本操作系统的Linux发行版打包

如果您的外部电路板可以与现有电路板对话,则您可能可以按原样开箱即用

触点闭合接口仅适用于少量信息位;旗帜,如果你愿意的话。“断电”、“电池充电故障”等。如果您需要从电源板返回更多信息,您可以使用现有的智能UPS协议。如果出于某种原因,你不得不重新发明轮子,你可以为你的自定义协议

你会发现大多数智能UPS协议使用RS-232串行或USB,但我从你的问题中得到了一种定制的嵌入式Linux氛围。您可能想改用I²C或SPI,因为您的微控制器可能已经有了I/O引脚


我希望您很清楚为什么这是一个好主意,因为您已经在Linux上构建了:NUT是一个好的、稳定的、可用的、免费的基础架构,就像Linux一样。

不太可能,除非您有UPS或其他类似的外部存储系统。根据定义,如果电源断了,你就无法响应,因为电路板已经死了。因此,您需要一些外部设备在短时间内提供电源,以及通知信号。请注意,“安全关机”在许多情况下是一个简单的“/bin/init 0”命令,或者是upstart或systemd等效命令。这将是特定于您的发行版的,并且相对容易实现。但将其连接到电源故障信号是一个硬件问题,“Linux”中的任何内容都无法帮助您。你的电路板提供什么样的电源管理?我假设你已经检查过是否有某种硬件支持用于电源故障检测,并且你已经实现了某种类型的备用电源。(Linux很整洁,但它不能神奇地给你的CPU更多的电子。)关于你想要与之交互的硬件的详细信息会有所帮助。绝大多数嵌入式Linux系统可能对成本过于敏感,无法集成任何复杂的掉电电路。脏关机的典型问题是文件系统完整性。通常,嵌入式系统具有最小的非易失性存储容量,通常使用f