linux: сторожевой узел не создан в каталоге / dev - PullRequest
0 голосов
/ 05 июля 2018

Я хочу использовать сторожевой таймер в своем приложении.

Я использую систему сборки yocto на платформе msm8953.

Согласно совместимому полю в файле .dtsi соответствующий драйвер настроен в файле .defconfig (т.е. CONFIG_MSM_WATCHDOG_V2 = y), и я получаю следующее dmesg:

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

Но сторожевой узел не создан в каталоге /dev.

Я также настроил драйвер WATCHDOG и WATCHDOG_CORE по умолчанию в файле Kconfig, но все же узел сторожевого таймера отсутствует в каталоге /dev.

Редактировать 1: добавлено значение по умолчанию как Y в / drivers / watchdog / Kconfig

menuconfig WATCHDOG

bool "Поддержка сторожевого таймера"

по умолчанию Y

если WATCHDOG

config WATCHDOG_CORE

bool "Ядро драйвера сторожевого таймера"

по умолчанию Y

1 Ответ

0 голосов
/ 06 июля 2018

Я нашел код от здесь . Мой ответ основан на этом коде.

Драйвер устройства может генерировать узел на /dev, а также на /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);

Вы можете найти узел disable в директории msm watchdog. И вы можете найти каталог msm watchdog, используя find.

find /sys -name '*watchdog*'

Даже если ваш код отличается от этим , возможно, вы видите, что 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.

нет узла.
...