2

我想在我的应用程序中使用看门狗定时器。

我在 msm8953 平台上使用 yocto 构建系统。

根据文件中的兼容字段,在文件(即).dtsi中配置相应的驱动程序,我得到以下 dmesg:.defconfigCONFIG_MSM_WATCHDOG_V2 = y

[ 0.270444] msm_watchdog b017000.qcom,wdt: wdog absent resource not present
[ 0.270845] msm_watchdog b017000.qcom,wdt: MSM Watchdog Initialized

但是,/dev目录中没有创建看门狗节点。

我还在 Kconfig 文件中将 WATCHDOG 和 WATCHDOG_CORE 驱动程序配置为默认值,但/dev目录中仍然不存在看门狗节点。

编辑 1:在 /drivers/watchdog/Kconfig 中添加默认值为 Y

menuconfig 看门狗

bool "看门狗定时器支持"

默认 Y

如果看门狗

配置看门狗核心

bool "看门狗定时器驱动核心"

默认 Y

4

1 回答 1

0

我从这里找到了代码。我的答案基于此代码。

设备驱动程序可以生成一个节点 on/dev和 on /sys。所以我们必须同时检查/sys/dev

关于 /sys 上的节点

有很多函数可以在/sys. 功能之一是device_create_file()。在这段代码中,如果init_watchdog_work()被调用和device_create_file()被调用,看门狗的节点,disable将由这段代码创建。

error = device_create_file(wdog_dd->dev, &dev_attr_disable);

您可以在 msm watchdog 目录中找到该disable节点。您可以使用find.

find /sys -name '*watchdog*'

即使您的代码与this不同,也许您可​​以看到device_create_file()在看门狗驱动程序中调用了它。因此,您可以像我所说的那样找到一个节点。

关于 /dev 上的节点

通常,您可以使用device_create()/dev. 如果device_create()被调用,则在 上创建一个节点/dev,否则不创建。

msm_rotator驱动程序msm_rotator/dev.

#define DRIVER_NAME "msm_rotator"
...
msm_rotator_dev->device = device_create(msm_rotator_dev->class, NULL,
                    msm_rotator_dev->dev_num, NULL,
                    DRIVER_NAME);

如果device_create()在您的代码中调用,您可以在/dev. 如果未调用该函数,则 上没有节点/dev

于 2018-07-06T05:51:39.010 回答