2012-11-14 67 views
0

我们正在开发一个新的嵌入式Linux板。我希望的一个功能是当电力丢失并能够安全关机时能够得到通知。 Linux中是否有标准的机制来表示电源故障事件?宁愿不要捆绑完整的串行线来处理这个问题。Linux:电源故障输入?

我们正在开发定制电源板,因此可以选择使用小型UPS构建电路。问题是该电路如何告诉Linux电源已经失效?

+2

不可能,除非你有UPS或其他类似的外部存储系统。根据定义,如果权力消失了,你不能回应,因为董事会已经死了。所以你需要一些外部的电源来提供短暂的时间间隔,再加上通知信号。 –

+0

请[不要在您的帖子中使用签名或标语](http://stackoverflow.com/faq#signatures)。 – meagar

+1

在许多情况下,“安全关闭”是一个简单的“/ bin/init 0”命令,或者是新手或系统等效的命令。这将是特定于您的发行版,并且相对容易完成。但连接到你的电源故障信号是一个**硬件问题,“Linux”中没有任何东西可以帮助你。你的电路板提供什么样的电源管理? –

回答

2

查找到NUT,网络UPS工具。它可能已经打包用于作为基本操作系统使用的Linux发行版。

您可能能够使用NUT,不被开箱,如果外部电路板可以跟现有的contact closure driver

联系人关闭界面仅适用于少量的信息位;标志,如果你愿意。 “电源丢失”,“电池充电故障”等。如果您需要从电源板获取更多信息,则可以使用现有的智能UPS协议clone。如果由于某种原因,您只需重新发明轮子,则可以使用write a NUT driver作为自定义协议。

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

我希望这是你清楚为什么这是一个好主意,因为你已经在Linux上构建:NUT好,稳定,可用的,免费的基础设施,就像Linux操作系统。

1

我做了逃跑的电池一次的Linux机器类似的东西:

简而言之:两个数字电表,一个电池和Linux机器之间,以及电池和外部电源之间的一个。这些通过两个串行端口再次连接到机器上。当外部电流表的读数比内部电流表低得多(超过可能是充满电的电池的结果)时,机器上的cron作业将执行关闭。是的,这很可能已经在一个更简单的方法做,好像它是根据各地的旧笔记本电脑或一些与包括电池,但这种方式是丢弃的笔记本电脑都容易获得:)

在我目前的工作我们有Linux系统运行在一个预计会频繁出现电源故障的环境中。安全关机并不是真的需要,因为CF卡包含文件系统,然后以只读模式启动。然后所有的东西都被读入RAM磁盘,所以CF卡上没有发生任何写入。但是,这样你显然失去了在引导之间持久存储的能力。