Watchdog

Материал из Wiren Board
Другие языки:

Сторожевой таймер (англ. 'watchdog') — аппаратно реализованная схема контроля за зависанием системы.

Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора. Этот GPIO контролируется специальным сервисом Linux.

В Linux интерфейс сторожевого таймера /dev/watchdog1, конфигурация сервиса хранится в файле /etc/watchdog.conf.


Отключение сторожевого таймера

При неправильной настройке некоторых служб, контроллер может уйти в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие, и перезапускать контроллер. Чтобы остановить этот процесс, нужно:

  • отключить таймер,
  • исправить конфигурацию проблемной службы,
  • включить таймер обратно.


Отключение сторожевого таймера аппаратным способом

Аппаратный Watchdog иногда требуется отключить: например, если необходимо полное выключение контроллера (например по событию от источника бесперебойного питания); если аппаратный сторожевой таймер будет функционировать, то контроллер через некоторое время возобновит работу даже после команды halt. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при сбросе питания контроллера.

Для отключения требуется разобрать корпус контроллера и соединить один из выводов разъема ON/OFF с GND.

Wiren Board 5
Wiren Board 6

На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения.