看门狗是一种设备,用于保护系统免受可能导致系统停止响应的特定软件或硬件故障的影响。

ConnectCore平台有几个看门狗设备。你可以在硬件参考手册MCA监督Linux BSP部分。

Digi为Linux添加了一个API,允许管理这些看门狗设备。要使用这个API,需要包含以下头文件:

# include< libdigiapix / watchdog.h >

请求看门狗

您可以请求具有以下功能的看门狗:

函数 描述

Wd_t *ldx_watchdog_request(char const * const wd_device_file)

通过其绝对设备节点路径请求看门狗。

返回一个指针wd_t成功,在错误。

一旦不再需要被请求的看门狗,就必须释放它。看到放出一只看门狗

此函数可能失败并返回原因如下:

  • 提供的设备节点路径在系统上不可用。

  • API在分配内存初始化看门狗时遇到问题。您的系统可能已经耗尽了资源。2022世界杯G组

请求看门狗
[…]/*请求看门狗*/Wd_t wd = ldx_watchdog_request(“/ dev /监督”);printf (“已请求看门狗%s\ nwd - >节点);[…]

读取并设置看门狗超时时间

您可以读取和设置看门狗定时器来配置不同的超时:

函数 描述

Int ldx_watchdog_get_timeout(wd_t *wd)

获取看门狗超时时间。

如果函数遇到错误,则返回-1。

Int ldx_watchdog_set_timeout(wd_t *wd, Int timeout)

为给定的看门狗定时器配置一个以秒为单位的新超时。

它返回EXIT_SUCCESS成功,EXIT_FAILURE否则。

有关更多信息,请参见MCA监督请参阅Linux BSP部分。

读取并设置看门狗值
[…]wd_t*wd = ...;inttimeout =10;intCurrent_timeout = -1;[…]/*读取看门狗超时时间*/Current_timeout = ldx_watchdog_get_timeout(wd);printf ("当前看门狗超时:%d", current_timeout);/*配置自定义超时时间*/ldx_watchdog_set_timeout (wd,超时);printf (看门狗超时设置为%d、超时);[…]

刷新看门狗超时

一旦请求,看门狗计时器开始计数,因此您必须在配置的超时过期之前刷新看门狗,以避免系统复位。要做到这一点,使用ldx_watchdog_refresh ()函数。

intldx_watchdog_refresh (wd_t * wd)
刷新看门狗
[…]wd_t*wd = ...; [...]真正的){[…]/*刷新看门狗,防止看门狗复位*/ldx_watchdog_refresh (wd);}[…]

停止看门狗

如果看门狗可以在启用后停止(大多数驱动程序都无法退出),则可以使用ldx_watchdog_stop ()函数来停止它。

intldx_watchdog_stop (wd_t * wd)
刷新看门狗
[…]wd_t*wd = ...; [...]/*不需要看门狗时停止看门狗*/ldx_watchdog_stop (wd);[…]

放出一只看门狗

当请求的看门狗不再需要时,您必须释放它。要做到这一点,使用ldx_watchdog_free ()函数。

释放看门狗并不能阻止它。
intldx_watchdog_free (wd_t * wd)
释放请求的看门狗
[…]wd_t*wd = ...; [...]/*释放不需要的看门狗*/ldx_watchdog_free (wd);[…]

监管机构的例子

本例介绍如何在ConnectCore板上使能看门狗。一旦启用了看门狗,应用程序就会刷新看门狗定时器,直到测试时间用完。超时后,设备将自动重启。

要查看看门狗API的示例,请使用Digi Embedded Yocto插件在Eclipse中导入看门狗示例。有关更多信息,请参见创建一个新的DEY样例项目.这个例子包含在Digi Embedded Yocto中。去GitHub查看应用程序源代码。