Linux内核中的硬件GPIO监视程序...自动运行

时间:2015-10-14 14:34:05

标签: linux linux-kernel watchdog

只是面对使用硬件GPIO看门狗的有趣案例。我使用gpio看门狗为外部系统控制产生 5Hz 信号(曲折)。为了使其保持运行,我将一些数据写入/ dev / watchdog1文件每30秒。对于看门狗,我们的配置 60秒,之后信号将停止。所以,一切都很好,但系统很慢,用户应用程序只在启动后约40秒后就绪。但是看门狗驱动程序在5秒后就已经准备好了。对于整个系统,此信号必须在启动后尽快出现。

所以,我希望看门狗驱动程序在调用probe func时立即运行gpio信号,然后我们有~60秒来控制用户应用程序(开始写smth到/dev/watchdog1)。

问题是:更改看门狗驱动程序直接从probe func运行它是否是个好主意?或者也许有任何技巧可以直接从驱动程序运行gpio看门狗至少一次?或者也许还有另一个解决这个问题的方法......

P.S。我使用CONFIG_GPIO_WATCHDOG

1 个答案:

答案 0 :(得分:0)

我过去通过在启动加载程序中为看门狗提供服务来解决类似的问题。

我们使用的是U-Boot,它的源代码中有监视程序挂钩(特别是它的内核uImage解压缩源)。这意味着当内核映像解压缩时,我们可以挂钩一些额外的代码来为看门狗提供服务,当内核和驱动程序都没有被加载时。

它与你提出的问题有点不同。我们没有尽可能早地使用内核驱动程序来为看门狗提供服务,而是选择尽早使用引导加载程序来为看门狗提供服务。这弥补了时间差距,足以让看门狗驱动程序加载并接管并保持正常运行。