Написание совместимого сторожевого модуля ядра - PullRequest
0 голосов
/ 07 января 2019

Я разрабатываю специальный сторожевой драйвер для черного SBC Beaglebone. Существует внешняя сущность, подключенная к BBB. Он сбросит плату, если не получит изменения состояния GPIO от BBB в течение определенного времени, которое устанавливается через I2C. Из того, что я понял до сих пор, является то, что с точки зрения программного обеспечения linux, устройство /dev/watchdog должно быть записано для обновления периферийного устройства сторожевого таймера, это ясно. Это мог сделать сторожевой пес Деймон: https://www.systutorials.com/docs/linux/man/8-watchdog/

Проблема здесь в том, что кажется, что интервал обновления жестко задан до 60 секунд. Для моего приложения интервал намного короче (обычно около 5 секунд) и устанавливается (от 1 до 10 секунд). В этом случае я думаю, что я не смог бы использовать сторожевой таймер для пользовательского драйвера wdg.

Есть ли способ обойти это? Или мой взгляд на это дело даже не верен?

1 Ответ

0 голосов
/ 09 января 2019

Обычно, если вы хотите использовать сторожевой механизм ядра, вы можете просто написать некоторый код C, который представляет собой файл / dev / watchdog с вашей собственной "частотой сторожевого таймера". Нет причин использовать демон watchdog, если у вас есть свои причины.

И, сторожевой механизм ядра подключен к реальному аппаратному сторожевому протоколу, который способен обнаруживать блокировку и генерировать событие на основе истечения срока, и если ваш аппаратный сторожевой таймер "timeout" или интервал "expiration" может быть настраиваемым, вы можете изменить время и вы можете заставить не стрелять в течение 60 секунд.

Обычно никто не имеет дело с сторожевым процессом, который предоставляется busybox или каким-либо другим linux pkg. Скорее всего, они используют его как есть. Также, насколько я помню, это интервал в 1 секунду.

...