【问题标题】:Writing a compatible watchdog kernel module编写兼容的看门狗内核模块
【发布时间】:2019-01-07 11:24:11
【问题描述】:

我正在为 Beaglebone black SBC 开发自定义看门狗驱动程序。有一个外部实体连接到 BBB。如果在一定时间内没有收到来自 BBB 的 GPIO 状态更改,它将重置板,可通过 I2C 设置。到目前为止,我所了解的是,从 Linux 软件的角度来看,应该写入 /dev/watchdog 设备以刷新看门狗外围设备,这很清楚。这样的事情可以由看门狗守护进程完成:https://www.systutorials.com/docs/linux/man/8-watchdog/

这里的问题是刷新间隔似乎被硬编码为 60 秒。对于我的应用程序,间隔要短得多(通常约为 5 秒)并且是可设置的(从 1 到 10 秒)。在这种情况下,我认为我无法为自定义 wdg 驱动程序使用看门狗守护进程。

有没有办法解决这个问题?还是我对这个案子的看法不正确?

【问题讨论】:

  • 您可以编写自己的守护程序来使用看门狗 ioctl WDIOC_KEEPALIVE 为看门狗服务。见here

标签: linux linux-kernel driver watchdog


【解决方案1】:

通常,如果你想使用内核看门狗框架,你可以简单地编写一些 C 代码,用你自己的“看门狗频率”来抚摸 /dev/watchdog 文件。如果您有自己的理由,就没有理由使用看门狗守护程序。

而且,内核看门狗框架与真正的硬件看门狗挂钩,能够检测锁定,并根据到期生成事件,如果您的硬件看门狗“超时​​”或“到期”间隔可以调整,您可以更改时间并且您可以在 60 秒内不开火。

通常,没有人处理由busybox或其他一些linux pkg提供的看门狗进程。他们很可能正在使用它。另外,据我记得,间隔是 1 秒。

【讨论】:

  • 感谢您的回答。我不确定手动刷新是否可行,因为我还需要将其与关闭和重置功能集成。所以当复位时,看门狗刷新关闭。关机时,在看门狗打开的情况下停止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多