我们正在开发一种新的嵌入式Linux主板。我希望的一个功能是能够在断电并安全关机时收到通知。 Linux中是否有任何标准机制来指示电源故障事件?宁愿不用完整的串行来处理这个问题。
我们正在开发一种定制电源板,因此可以选择在类似电路的小型UPS中构建。问题是该电路如何告诉Linux电源出现故障?
答案 0 :(得分:2)
查看网络UPS工具NUT。它可能已经打包用于您作为基本操作系统使用的Linux发行版。
如果您的外部电路板可以与现有的contact closure driver通信,您可以直接使用NUT。
接触闭合接口仅适用于少量信息;旗帜,如果你愿意的话。 “断电”,“电池充电失败”等。如果您需要更多来自电源板的信息,您可以clone现有的智能UPS协议。如果出于某种原因你只需重新发明轮子,你可以write a NUT driver获得自定义协议。
您会发现大多数智能UPS协议都使用RS-232串口或USB,但我从您的问题中获得了自定义嵌入式Linux氛围。您可能希望使用I²C或SPI,因为您的微控制器可能已经有I / O引脚。
我希望你清楚为什么这是一个好主意,因为你已经在Linux之上构建了:NUT是一个优秀,稳定,可用,免费的基础架构,就像Linux一样。
答案 1 :(得分:1)
我为使用电池的Linux机器做了类似的事情:
简单地说:两个数字电流表,一个在电池和Linux盒之间,一个在电池和外部电源之间。它们再次通过两个串行端口连接到机器。当外部电流表的读数远低于内部电流表(超过完全充电电池的结果),机器上的cron作业将执行关机。是的,这可能是以一种更简单的方式完成的,如果它是基于旧笔记本电脑或包含电池的东西,但这是废弃的笔记本电脑很容易获得:)
在我目前的工作中,我们让Linux系统在一个频繁出现电源故障的环境中运行。由于CF卡包含文件系统,然后以只读模式启动,因此不需要安全关闭。然后将所有内容读入RAM磁盘,因此CF卡不会发生任何写操作。但是,这样你很明显失去了在靴子之间拥有持久存储的能力。