Что такое watchdog и для чего он нужен

WatchDog — автозапуск для фермы

WatchDog — автозапуск для фермы

WatchDog (Сторожевой таймер) — устройство для слежения над зависанием и отключением компьютера. Подключается данное устройство к материнской плате через разъем USB Type A или USB PBD10.

Особенности данного устройства

✓ Относительно низкая стоимость при заказе из Китая

✓ Автоматическая перезагрузка при зависании системы

✓ Автоматический запуск при появлении электричества

✗ Сроки доставки если заказывать из Китая

✗При покупке в России — высокая цена на устройство и доставку.

WatchDog для фермы можно заказать по ссылке: Aliexpress.com/watchdog

Описание устройства:

Данное устройство может иметь порт подключения двух видов: Type A и PBD 10.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Принцип работы

Источником сигнала является программа, запущенная на компьютере. Если компьютер зависает или выключается, то программа перестает исполняться, соответственно пропадает сигнал подающийся на сторожевой таймер. Watchdog постоянно принимает сигнал от ПК, и если по какой либо причине он его не получил, то автоматически WatchDog посылает сигнал на контакты «reset» для перезагрузки компьютера. По истечении некоторого времени если не появился сигнал от ПК, то отправляется сигнал на контакты «Power» с определенной периодичностью времени, пока не появится сигнал от ПК.

Принцип действия всех версий и моделей WatchDog это слежение над зависанием и отключением компьютера. Ниже приведено описание и настройка WatchDog Pro2

Установка устройства:

С разъемом Type A все просто и беспроблемно: вставляете его в USB выход материнской платы и все готово. При установке WatchDog с разъемом PBD 10 важно не перепутать коннектор подключения, иначе это приведет к порче устройства.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

На WatchDog с разъемом PBD 10 специально обозначена точка. Ее необходимо совместить с отсутствующем контактом в порте.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Подключаем WatchDog к плате. Если все правильно сделали, то на устройстве заморгает красный индикатор.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Настройка WatchDog

Так как майнинг фермы собираются на ОС Windows, ниже будет продемонстрирован процесс настройки ПО для ОС Windows.

Заходим в диспетчер устройств на компьютере. WotchDog должен определиться как «USB WatchDog Monitor».

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Заходим на сайт http://open-dev.ru/download выбираем тип нашего устройства, версию операционной системы, и жмем скачать. Установка очень быстрая и простая: несколько раз нажимаем кнопку «Далее» и затем «Готово». После выполненных действий устройство определится как Com порт.

Далее необходимо скачать и установить программу WatchDog монитор. Ссылка на скачивание : http://software.open-dev.ru/software/wdtmon3/windows/. Процесс установки прост, рассматривать не будем.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Далее подключаем наше устройство проводами к контактам Power и Reset. На рисунках ниже показано к каким контактам нужно подключить провода. Внимание! Соблюдайте полярность.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Тестирование WatchDog для фермы

Для проверки корректности взаимодействия устройства с компьютером необходимо провести тест на запуск и перезагрузку. Для этого правой кнопкой мыши нажимаем на иконку в программы в трее. И при нажатии «Тест перезагрузки» компьютер должен выключиться и включиться, аналогично с режимом «Тест жесткой перезагрузки». Если перезагрузка не произошла, проверьте полярность подключения.Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Добавить комментарий Отменить ответ

Промокод на скидку в интернет магазине для читателей моего сайта

Доброго дня, любимый читатель! Я являюсь менеджером сайта OZON.ru и хочу поделиться с вами промокодом на скидку 300 руб. для первого заказа: OZON0NB71A (Условия акции). Если вы уже совершали покупки на сайте озон, то активировав указанный выше промокод, вы получите дополнительные скидки на товары. На озоне вы сможете приобрести электронику и комплектующие к ним по приятным ценам и удобной доставкой.

Cрок действия приветственных баллов — 5 дней. Баллами можно оплатить 25% от стоимости покупок.

Источник

Аппаратный «watchdog» или незаменимый помощник в борьбе с зависанием

В одной компании было много терминалов, и одна из неблагодарных задач для техподдержки — ездить по точкам и перезапускать операционную систему внутри терминалов. Было решено бросить вызов этой проблеме в виде разработки аппаратного сторожевого таймера.

В итоге мы получили устройство, которое подключается к расширительному спаренному USB-разъему на материнской плате.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Данное устройство имеет следующие возможности:

Алгоритм работы прост: внутри находятся два настраиваемых таймера, которые постоянно отсчитывают заданное время, по истечению которого имитируется нажатие соответствующих кнопок (POWER и RESET). Чтобы предотвратить случайную перезагрузку, необходимо периодически послать команду сброса таймера.

Лучше, чтобы за процедуру сброса таймеров отвечало целевое приложение, а не стороннее или системное (Cron, служба расписаний) по причине того, что вероятность сбоя в системе меньше, чем в приложении (хотя, у кого как).
Обмен информацией аналогичен консольному.

командаОписаниеПример
helpКраткая справка по командамhelp
LED1Управление светодиодом, по умолчанию выключенLED1 ON
LED1 OFF
RELAYУправление реле, по умолчанию включеноRELAY ON
RELAY OFF
KEY1Имитация нажатия кнопки 1, по умолчанию не нажатаKEY1 ON
KEY1 OFF
KEY2Имитация нажатия кнопки 2, по умолчанию не нажатаKEY2 ON
KEY2 OFF
C1Управление таймером 1, связанным с кнопкой 1.
Установка времени в секундах, максимальное значение 32767.
Для отключения функции таймера, необходимо задать время равное 0.
C1 RES
C1 SET 60
C1 SET 0
C2Управление таймером 2, связанным с кнопкой 2.
Установка времени в секундах, максимальное значение 32767.
Для отключения функции таймера, необходимо задать время равное 0.
C2 RES
C2 SET 60
C2 SET 0
USBУправление питанием USB, по умолчанию включеноUSB ON
USB OFF

В случае удачного выполнения команды возвращает «OK».
В случае некорректных данных возвращает «ERROR».
Признаком конца строки служит символ возврата каретки «\r». Также поддерживается режим «\r\n».

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Устройство выполнено на базе контроллера STM32F103CA с аппаратной поддержкой USB. Библиотека работы с USB версии V4.0.0. Напряжение работы 3.3В получаем с помощью линейного стабилизатора из 5В на USB. Во всех управляющих цепях используются транзисторы в ключевом режиме. Также не забываем про защитный диод от токов самоиндукции в катушки реле (в моем случае он оказался встроенным).

Источник

Что такое WatchDog и для чего он нужен

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Не секрет, что высокие технологии в настоящее время охватывают все новые и новые сферы жизни человека. Еще в середине прошлого века трудно было себе представить тот рывок, который техника совершила за последние 20 лет.
Сегодня никого не удивить электронными терминалами по приему платежей, банкоматами, комплексами бытовой автоматики («Умный дом»), сложными автономными системами видеонаблюдения и т.п.
Список можно продолжать бесконечно долго, и все равно невозможно охватить сразу все области интеграции сложной электронно-вычислительной техники в современном обществе. Эти технологии делают нашу жизнь проще, комфортнее и, несомненно, гораздо интереснее.
К сожалению, несмотря на стремление к технологическому совершенству, создать что-либо совершенно надежное невозможно в силу объективных причин. Человек по природе своей несовершенен, следовательно, и созданные им приспособления не всегда действуют так, как хотелось бы. Это касается абсолютно любой сферы деятельности, включая сложнейшие стратегические комплексы и космическую отрасль.
Ведь не секрет, что чем сложнее устройство, чем больше элементов оно в себе содержит, тем выше риск возникновения непредвиденного сбоя. И дело здесь вовсе не в нежелании инженеров и программистов получить безупречный результат – просто невозможно предусмотреть абсолютно все ситуации.
Да и, кроме того, есть целый ряд причин, защиты от которых просто может не быть, либо она будет неэффективна. Никто не застрахован от внезапных перепадов напряжения питания, даже, несмотря на целый комплекс защитных устройств на этот случай, от случайных статических разрядов, от умышленных вредоносных действий недоброжелателей (например, хакерские атаки на сервера в интернете). Последствия таких событий, наверное, известны всем.

На практике, попав во внештатную ситуацию, оборудование ведет себя малопредсказуемо – происходят различные сбои, устройство «зависает», начинает «глючить», одним словом перестает корректно выполнять свои функции. Инженеры и программисты постоянно борются с подобными явлениями, регулярно обновляя программное обеспечение своих продуктов и совершенствуя их аппаратную часть. Но одно дело, когда «завис» или показал «синий экран смерти» домашний компьютер или ноутбук, и совсем другое дело – когда перестал функционировать тот же банкомат, подстанция сотовой связи, мощный сервер в центре обработки данных или сетевая камера видеонаблюдения.
В первом случае все решается простым нажатием кнопки «Сброс» или кратковременным выключением прибора из сети, а со вторым случаем все сложнее. А что, если тот самый банкомат или видеокамера находятся за многие сотни или даже тысячи километров от администратора системы?
Выход напрашивается сам собой – приставить к каждому устройству персонального смотрителя, который будет неустанно следить за его работоспособностью и вовремя нажимать нужные кнопки в случае сбоя. Но не все так просто.
Во-первых, не стоит забывать о пресловутом «человеческом факторе», как мы уже говорили человек – существо несовершенное, может и отлучиться куда-нибудь, отвлечься или просто заснуть на посту.
Во-вторых, порой, финансовые затраты на персонального сторожа для каждого устройства будут обходиться гораздо дороже самого этого устройства, что весьма расточительно, а в комплексе с первым утверждением вообще малоэффективно.

Есть еще способ. Практически во все современные устройства, работающие под управлением контроллера (процессора) и содержащие управляющую микропрограмму или операционную систему, встраиваются т.н. «Сторожевые таймеры» (англ. WatchDog – Сторожевой Пёс).
По своей сути они могут быть как программными, так и аппаратными, встроенными в микроконтроллер или иную микросхему внутри устройства.
Основная задача таких таймеров – своевременный перезапуск «зависшего» оборудования с целью восстановления его работоспособности.
Если в течение определенного времени или определенного в программе числа циклов операционная система устройства или порт микроконтроллера не отвечают на запросы таймера, устройству посылается команда сброса и перезагрузки.

Несомненно, это весьма удобно и не требует таких больших затрат, как содержание штата сотрудников, следящих за каждым прибором, но и тут есть большой минус. Те сторожевые таймеры, про которые велась речь выше – встроены непосредственно в логику контролируемого прибора. И в этом их основной недостаток. При определенных условиях эти таймеры, независимо от того, аппаратно они реализованы или программно, могут «зависнуть» вместе со всем устройством. И тогда польза такого электронного сторожа будет нулевой – его самого придется сбрасывать вместе со всей начинкой подконтрольного прибора.

Есть еще одно условие – иногда подачи только сигнала «Сброс» оказывается недостаточно, и для полного восстановления работоспособности устройства его необходимо на некоторое время полностью обесточить. Например, если по какой-то причине сработала защита встроенного в сетевую видеокамеру преобразователя питания? Устройство просто выключится, и сторожевой таймер тоже, следовательно, выходом из положения будет только кратковременное прекращение подачи напряжения питания на камеру с дальнейшим его восстановлением.

Итак, каким же должен быть оптимальный WatchDog?
Он должен быть независимым от контролируемого устройства, автономным, надежным, гибко программируемым и, самое главное, с возможностью дистанционного управления для того, чтобы оператор или администратор имели возможность при малейшем подозрении на неправильную работу контролируемого оборудования принять меры по исправлению ситуации. Так есть ли оптимальное решение? Конечно же, есть.

Вот список всех методов определения работоспособности оборудования, используемых в сторожевых таймерах HW group:

Ping Push: В этом режиме IP WatchDog через определенные интервалы времени отправляет на заданный IP-адрес запросы PING, тем самым определяя, откликается ли на них контролируемое устройство. В случае, если отклик от устройства не был получен, сработают контакты реле и, к примеру, будет произведена его перезагрузка. Данный метод очень удобен для мониторинга состояния сетевых видеокамер, маршрутизаторов, сетевых коммутаторов и т.п.

Ping Request: В отличии от предыдущего режима, IP WatchDog не посылает запросы PING, а ожидает таковых от контролируемого устройства. Хорошо подходит для использования в серверных и телекоммуникационных стойках, на вышках сотовой связи.

Web Push: Эта функция доступна только для IP WatchDog HWg-WR02a. Ее суть заключается в том, что сторожевой таймер периодически запрашивает определенную Web-страницу с указанного пользователем адреса. Это очень удобный метод контроля работоспособности Web-серверов – при отсутствии или недоступности запрашиваемой страницы (известная всем «Ошибка 404») сервер будет своевременно перезапущен.

Web Request: В данном режиме IP WatchDog ожидает от контролируемого устройства запроса своей внутренней Web-страницы. Если страница не будет запрошена в течение определяемого пользователем интервала времени – устройство будет перезапущено. Метод так же удобен для контроля состояния Web-серверов. Доступна эта функция только в обновленном IP WatchDog HWg-WR02a.
RS232 Rx: Как уже упоминалось выше, в этом режиме сторожевой таймер будет ожидать от подключенного к нему устройства определенную последовательность символов, переданную посредством стандартного порта RS-232.

Источник

Китайские сторожевые таймеры для майнинга

При слишком большом разгоне или использовании плохо обкатанного майнера даже linux-подобная система может зависнуть. В этом случае хорошую помощь для майнеров может оказать сторожевой таймер (watchdog timer), иначе говоря сторожевая собака.

Что такое Watchdog и как он работает?

Watchdog — это реализованная на аппаратном уровне схема постоянного контроля над состоянием системы, которая перезагружает или выключает, а затем включает компьютер при зависании.

Аппаратный watchdog можно сделать самому на основе Ардуино/Raspberry, но проще воспользоваться готовым решением, самым дешевым из которых будет китайский вариант.

Китайские внешние сторожевые таймеры создают виртуальный последовательный порт (или serial port, COM-port), на котором слушают контрольный сигнал (heartbeat) от управляющего программного обеспечения. Если сигнал контроля не получен во время установленного временного интервала, то watchdog включает реле для выключения/включения или перезагрузки компьютера.

В китайских сторожевых таймерах время прослушивания контрольного сигнала heartbeat обычно кратно 10 секундам, а диапазон изменения времени срабатывания варьируется от 10 до 1270 секунд.

Нужно не увлекаться выставлением слишком маленьких значений временного интервала для вотчдога, потому что впоследствии, при появлении проблем, этого времени может не хватить для загрузки системы и устранения ошибки в батнике/программе, вызывающей зависание/ресет. Это приведет к циклической перезагрузке компьютера, которую можно будет устранить только отключением вотчдога.

Наиболее распространены мониторинговые таймеры с одним/двумя механическими реле и на оптронах.

Разница между китайскими сторожевыми таймерами начиная с первого однорелейного вотчдога до на оптронах хорошо проиллюстрирована на следующей картинке:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Однорелейный watchdog может мониторить майнер, пинговать заданный сайт, ребутить систему по расписанию или включать/выключать компьютер по расписанию, отслеживать количество «живых» карт в системе, вести логи. При отсутствии питания на USB-разъемах на выключенном компьютере (на старых моделях) такой вотчдог превращается в бесполезную железяку (после пропадания питания). Версия с одним реле официально поддерживается только в Windows. Однорелейные таймеры несовершенны, лучше удержаться от их использования.

Есть варианты улучшенных однорелейных сторожей, но они также несовершенны:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нуженДля управления программируемым однорелейным вотчдогом можно применять программу USB Watchdog второй версии:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Двухрелейный сторожевой таймер в дополнение к вышеперечисленным опциям может ребутить систему по расписанию и включать/выключать ее по расписанию. Он имеет на борту конденсатор, что увеличивает его надежность и обеспечивает работоспособность при кратковременном пропадании питания. Версия с 2-я реле официально поддерживается только в Windows. Это уже довольно хорошо работающие таймеры.

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

Версия для 9-пинового разъема FUSB материнской платы

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нуженЭто довольно неплохой watchdog со светодиодной индикацией на оптронах с кнопкой вкл/выкл. (ON/OFF), который ставится через разъем PBS-4 непосредственно на материнскую плату в одно из 9-пиновых гнезд FUSB для подключения USB-колодок.

Китайский USB watchdog версии 5.0 с разъемом USB TypeA:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Управление вотчдогами с реле и на оптронах осуществляется программой USB Watchdog (есть версия только под Windows, последняя — 6.1.9).

Управление watchdog-ом на оптронах в linux осуществляется программой PCWatchdog0201.

Управляющая программа (версия 6.1.9) для дешевых Chinese watchdogs с 1 и 2 реле, а также на оптронах под Windows:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Апофеозом развития китайских сторожевых мониторов является сторожевой пес версии 9.0:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Подключение китайских Watchdogов к материнской плате

USB watchdog-и (укомплектованные USB-A разъемами) включаются в любой свободный порт USB, желательно в такой, который постоянно запитан от платы напряжением 5 вольт.

Подключение проводов управления однорелейного сторожевого таймера может осуществляться либо на контакты перезагрузки, либо на контакты включения/выключения компьютера (полярность неважна).

Двухрелейный таймер коммутируют и с контактами on/off, и с reset (полярность не важна):

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Вотчдог на оптронах с разъемом PBS-4 вставляется в материнскую плату в часть одного из 9-пиновых гнезд FUSB (либо в контакты 1,3,5,7, либо 2,4,6,8):

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Провода управления и контроля таймера 5.0 подключаются к следующим контактам передней панели материнки: +restart, +pwr on и к pwr light. Здесь уже нужно соблюдать полярность, иначе вотчдог не заработает. На материнской плате плюсовые контакты всегда подписаны, что облегчает процесс подключения.

Электрическая схема подключения watchdog версии 5.0 (на оптронах):

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Подключение проводов управления к сторожевому таймеру и подсоединение к материнской плате (для варианта с разъемом 4пиновым таймером):

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Еще одно фото подключения такого таймера:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Коммутация проводов управления к сторожевому таймеру и подсоединение к материнской плате (для варианта с разъемом USB-A):

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нуженПодключение проводов управления от таймера 5.0 к колодке материнской платы FPANEL:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

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

Китайских сторожевых собак довольно сложно приручить в linux, но это тоже возможно и описано в отдельной статье.

Источник

Arduino watchdog или автоматический RESET в случае зависания

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен
Речь пойдет о том, как держать Arduino всегда в работоспособном состоянии. Механизм watchdog встроен в контроллеры Atmega, но, к сожалению, не всякий загрузчик (bootloader) Arduino правильно обрабатывает эту функцию. Попробуем разобраться с этой проблемой.

Итак, что такое watchdog? Простыми словами — это встроенный таймер на определенное время (до 8 сек в зависимости от чипа), который можно запустить программно. Как только таймер «дотикает» до нуля, контроллер подает правильный сигнал сброса (RESET) и всё устройство уходит в hard перезагрузку. Самое главное, что этот таймер можно сбрасывать в начальное состояние также программным способом.

Функции Watchdog

Чтобы использовать функции Watchdog нужно подключить к проекту стандартную библиотеку:

Теперь нам доступны следующие три функции:

1. Запуск таймера watchdog:

Таймер будет считать ровно столько, сколько указано в константе. По истечении этого времени произойдет перезагрузка.

2. Сброс таймера watchdog:

Думаю, понятно для чего нужна эта функция — пока вы вызываете ее, контроллер не сбросится. Как только система зависнет и эта функция вызываться перестанет, то по истечении заданного периода произойдет перезагрузка.

3. Отключение watchdog:

Отключение таймера watchdog.

Собственно, на этом можно было бы и закончить наше повествование о watchdog… но дело в том, что все это работает только в Arduino Uno, а на Arduino Mega, Mini и Nano все это работает ровно наоборот, т.е. не работает совсем 🙂

Почему watchdog не работает на большинстве современных плат Arduino

Дело в том, что после перезагрузки, которая была вызвана watchdog, контроллеры последних выпусков оставляют включенным watchdog на минимальный период, т.е. 15ms. Это нужно для того, чтобы программа как-то узнавала, что предыдущая перезагрузка была по watchdog. Поэтому первоочередная задача загрузчика (или вашей программы, если она запускается первой) — сохранить информацию о том, что перезагрузка была «неожиданной» и сразу же выключить watchdog. Если этого не сделать, то система уйдет в bootloop, т.е. будет вечно перегружаться.

Как известно, в Arduino есть специальный загрузчик, который выполняется в первую очередь после перезагрузки системы. И, к огромному сожалению, стандартный загрузчик не сбрасывает watchdog! Таким образом, система заходит в жестокий bootloop (состояние «crazy led», при котором светодиод на 13-м пине мигает как сумасшедший).

Пути решения проблемы

Если посмотреть на исходники стандартного загрузчика (они есть в поставке платформы), то код отключения watchdog есть (!), но этот код вынесен под условную компиляцию и, по всей видимости, стандартный загрузчик скомпилирован без поддержки watchdog. По крайней мере в пакете платформы версии 1.5.2 (последней на момент написание статьи) дело обстоит именно так.

Для решения проблемы я даже прочитал man-ы самой платформы (:) и вроде бы там описана эта проблема и даже приведен код, который должен сделать всех счастливыми:

Здесь описывается функция get_mcusr(), которая должна вызываться сразу после сброса. Это достигается макросом «__attribute__((section(«.init3″)))». Я пробовал прописывать эту функцию во все секции, которые только возможно — да, она действительно запускается до функции setup() из скетча, но, к сожалению, гораздо позже 15ms (минимальная константа watchdog) после сброса…

Короче говоря, как я ни рыл интернет в поисках легкого решения проблемы, так ничего найдено не было. Я нашел только один способ заставить watchdog работать — перепрошить загрузчик… чем мы сейчас и займемся.

Проверка работоспособности watchdog

Прежде чем что-то прошивать, нужно проверить — вдруг ваша Arduino поддерживает watchdog. Для этого я написал небольшой скетч для теста. Просто залейте его, откройте монитор порта и смотрите, что будет происходить.

После перезагрузки (или подключения монитора к порту) встроенный светодиод мигнет, сигнализируя о том, что запустился загрузчик. Далее в секции setup происходит включение watchdog с таймером на 8 сек. После этого светодиод отсчитает нам это время и должна произойти перезагрузка.

Далее начинается самое интересное — если перезагрузка произошла и все повторяется в такой же последовательности, то вы имеете на руках Arduino, в которой загрузчик правильно обрабатывает watchdog. Если же после перезагрузки светодиод на 13-м пине начинает бесконечно мигать, то значит загрузчик не поддерживает watchdog. Здесь даже кнопка сброса не поможет. Для последующей прошивки нужно плату отключать от питания и после включения успеть прошить до первой перезагрузки.

Я протестировал 4 вида плат и только загрузчик в Arduino Uno сработал так как надо:

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Watchdog не поддерживается загрузчиком:
Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен
Watchdog поддерживается загрузчиком:
Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Как легче всего прошить новый загрузчик?

Прошивать загрузчик в Arduino можно с помощью отдельных программаторов, а можно собрать свой программатор с помощью той же самой Arduino. Т.е. любую плату Arduino можно превратить в программатор, залив туда специальный скетч.

Я не буду в этой статье описывать все премудрости создания программатора на основе Arduino, т.к. эта тема довольно подробно описана в интернете. В качестве программатора я использовал Arduino Uno. Как известно, прошивка производится через отдельный разъем ICSP, который есть почти на всех платах. В случае прошивки Arduino Pro Mini, у которого нет IСSP, подключение производится непосредственно к выводам.

Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен
Что такое watchdog и для чего он нужен. Смотреть фото Что такое watchdog и для чего он нужен. Смотреть картинку Что такое watchdog и для чего он нужен. Картинка про Что такое watchdog и для чего он нужен. Фото Что такое watchdog и для чего он нужен

Где взять загрузчик, который поддерживает watchdog?

Эта глава напоминает танцы с бубном и скорее всего можно сделать все как-то проще, но, увы, у меня по-другому не получилось.

Рекомендуется использовать загрузчики из пакета optiboot. В принципе, эти загрузчики идут в инсталляции самой платформы Arduino, но лучше скачать и установить последнюю версию optiboot отсюда. Установка заключается в двух шагах (возможно, это можно сделать как-то по-другому):

Далее перегружается среда разработки и в меню Сервис/Плата можно наблюдать новые платы с пометкой [optiboot]. К сожалению, при выборе этих плат происходят какие-то непонятные ошибки компиляции и появляются всякие другие странности… поэтому делаем еще проще. Открываем в любом текстовом редакторе файл C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt и меняем следующие строчки:

Для Arduino Nano:
menu.cpu.nano.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

Для Arduino Mini:
menu.cpu.mini.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

Следующая проблема в том, что загрузчика optiboot для платы Arduino Mega не существует в природе, т.к. в Mega больше памяти и используется другой протокол. Поэтому мы используем стандартный, но модифицированный загрузчик, который качаем отсюда. Файл переименовываем в stk500boot_v2_mega2560_2.hex и записываем в папку C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\stk500v2.

Далее меняем в уже знакомом файле boards.txt следующую строчку:
mega2560.bootloader.file=stk500v2/stk500boot_v2_mega2560_2.hex

Не пугайтесь, что файл модифицированной прошивки для Mega в 2 раза меньше стандартного — так вроде бы должно быть.

Процесс прошивки

После всех изменений можно прошивать загрузчики, выбирая в меню плат обычные платы (не [optiboot]!). В этом случае прошиваться будут именно те файлы hex, которые мы указали в файле board.txt.
Процесс прошивки может не стартовать и выдаваться ошибка:

Для решения этой проблемы откройте скетч программатора и в секции setup выберите другую скорость последовательного порта.
Во время заливки в Arduino Mega может появляться ошибка, которую следует игнорировать:

Заключительные манипуляции

Загрузчики optiboot имеют еще одну особенность — они увеличивают скорость загрузки скетчей, поэтому при использовании плат с optiboot нужно внести соответствующие изменения в boards.txt:

Для Arduino Nano:
menu.cpu.nano.atmega328.upload.speed=115200
Для Arduino Mini:
menu.cpu.mini.atmega328.upload.speed=115200

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *