сторожевой таймер это watchdog что
WatchDog — автозапуск для фермы
WatchDog — автозапуск для фермы
WatchDog (Сторожевой таймер) — устройство для слежения над зависанием и отключением компьютера. Подключается данное устройство к материнской плате через разъем USB Type A или USB PBD10.
Особенности данного устройства
✓ Относительно низкая стоимость при заказе из Китая
✓ Автоматическая перезагрузка при зависании системы
✓ Автоматический запуск при появлении электричества
✗ Сроки доставки если заказывать из Китая
✗При покупке в России — высокая цена на устройство и доставку.
WatchDog для фермы можно заказать по ссылке: Aliexpress.com/watchdog
Описание устройства:
Данное устройство может иметь порт подключения двух видов: Type A и PBD 10.
Принцип работы
Источником сигнала является программа, запущенная на компьютере. Если компьютер зависает или выключается, то программа перестает исполняться, соответственно пропадает сигнал подающийся на сторожевой таймер. Watchdog постоянно принимает сигнал от ПК, и если по какой либо причине он его не получил, то автоматически WatchDog посылает сигнал на контакты «reset» для перезагрузки компьютера. По истечении некоторого времени если не появился сигнал от ПК, то отправляется сигнал на контакты «Power» с определенной периодичностью времени, пока не появится сигнал от ПК.
Принцип действия всех версий и моделей WatchDog это слежение над зависанием и отключением компьютера. Ниже приведено описание и настройка WatchDog Pro2
Установка устройства:
С разъемом Type A все просто и беспроблемно: вставляете его в USB выход материнской платы и все готово. При установке WatchDog с разъемом PBD 10 важно не перепутать коннектор подключения, иначе это приведет к порче устройства.
На WatchDog с разъемом PBD 10 специально обозначена точка. Ее необходимо совместить с отсутствующем контактом в порте.
Подключаем WatchDog к плате. Если все правильно сделали, то на устройстве заморгает красный индикатор.
Настройка WatchDog
Так как майнинг фермы собираются на ОС Windows, ниже будет продемонстрирован процесс настройки ПО для ОС Windows.
Заходим в диспетчер устройств на компьютере. WotchDog должен определиться как «USB WatchDog Monitor».
Заходим на сайт http://open-dev.ru/download выбираем тип нашего устройства, версию операционной системы, и жмем скачать. Установка очень быстрая и простая: несколько раз нажимаем кнопку «Далее» и затем «Готово». После выполненных действий устройство определится как Com порт.
Далее необходимо скачать и установить программу WatchDog монитор. Ссылка на скачивание : http://software.open-dev.ru/software/wdtmon3/windows/. Процесс установки прост, рассматривать не будем.
Далее подключаем наше устройство проводами к контактам Power и Reset. На рисунках ниже показано к каким контактам нужно подключить провода. Внимание! Соблюдайте полярность.
Тестирование WatchDog для фермы
Для проверки корректности взаимодействия устройства с компьютером необходимо провести тест на запуск и перезагрузку. Для этого правой кнопкой мыши нажимаем на иконку в программы в трее. И при нажатии «Тест перезагрузки» компьютер должен выключиться и включиться, аналогично с режимом «Тест жесткой перезагрузки». Если перезагрузка не произошла, проверьте полярность подключения.
Добавить комментарий Отменить ответ
Промокод на скидку в интернет магазине для читателей моего сайта
Доброго дня, любимый читатель! Я являюсь менеджером сайта OZON.ru и хочу поделиться с вами промокодом на скидку 300 руб. для первого заказа: OZON0NB71A (Условия акции). Если вы уже совершали покупки на сайте озон, то активировав указанный выше промокод, вы получите дополнительные скидки на товары. На озоне вы сможете приобрести электронику и комплектующие к ним по приятным ценам и удобной доставкой.
Cрок действия приветственных баллов — 5 дней. Баллами можно оплатить 25% от стоимости покупок.
Что такое 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 может мониторить майнер, пинговать заданный сайт, ребутить систему по расписанию или включать/выключать компьютер по расписанию, отслеживать количество «живых» карт в системе, вести логи. При отсутствии питания на USB-разъемах на выключенном компьютере (на старых моделях) такой вотчдог превращается в бесполезную железяку (после пропадания питания). Версия с одним реле официально поддерживается только в Windows. Однорелейные таймеры несовершенны, лучше удержаться от их использования.
Есть варианты улучшенных однорелейных сторожей, но они также несовершенны:
Для управления программируемым однорелейным вотчдогом можно применять программу USB Watchdog второй версии:
Двухрелейный сторожевой таймер в дополнение к вышеперечисленным опциям может ребутить систему по расписанию и включать/выключать ее по расписанию. Он имеет на борту конденсатор, что увеличивает его надежность и обеспечивает работоспособность при кратковременном пропадании питания. Версия с 2-я реле официально поддерживается только в Windows. Это уже довольно хорошо работающие таймеры.
При их эксплуатации нужно отключать опцию автоматического обновления, так как она часто приводит к сбоям.
Версия для 9-пинового разъема FUSB материнской платы
Это довольно неплохой watchdog со светодиодной индикацией на оптронах с кнопкой вкл/выкл. (ON/OFF), который ставится через разъем PBS-4 непосредственно на материнскую плату в одно из 9-пиновых гнезд FUSB для подключения USB-колодок.
Китайский USB watchdog версии 5.0 с разъемом USB TypeA:
Управление вотчдогами с реле и на оптронах осуществляется программой USB Watchdog (есть версия только под Windows, последняя — 6.1.9).
Управление watchdog-ом на оптронах в linux осуществляется программой PCWatchdog0201.
Управляющая программа (версия 6.1.9) для дешевых Chinese watchdogs с 1 и 2 реле, а также на оптронах под Windows:
Апофеозом развития китайских сторожевых мониторов является сторожевой пес версии 9.0:
Подключение китайских Watchdogов к материнской плате
USB watchdog-и (укомплектованные USB-A разъемами) включаются в любой свободный порт USB, желательно в такой, который постоянно запитан от платы напряжением 5 вольт.
Подключение проводов управления однорелейного сторожевого таймера может осуществляться либо на контакты перезагрузки, либо на контакты включения/выключения компьютера (полярность неважна).
Двухрелейный таймер коммутируют и с контактами on/off, и с reset (полярность не важна):
Вотчдог на оптронах с разъемом PBS-4 вставляется в материнскую плату в часть одного из 9-пиновых гнезд FUSB (либо в контакты 1,3,5,7, либо 2,4,6,8):
Провода управления и контроля таймера 5.0 подключаются к следующим контактам передней панели материнки: +restart, +pwr on и к pwr light. Здесь уже нужно соблюдать полярность, иначе вотчдог не заработает. На материнской плате плюсовые контакты всегда подписаны, что облегчает процесс подключения.
Электрическая схема подключения watchdog версии 5.0 (на оптронах):
Подключение проводов управления к сторожевому таймеру и подсоединение к материнской плате (для варианта с разъемом 4пиновым таймером):
Еще одно фото подключения такого таймера:
Коммутация проводов управления к сторожевому таймеру и подсоединение к материнской плате (для варианта с разъемом USB-A):
Подключение проводов управления от таймера 5.0 к колодке материнской платы FPANEL:
Несмотря на дешевую цену китайских вотчдогов, они обычно прекрасно справляются с перезагрузкой зависших компьютеров. Их невысокая стоимость очень быстро окупается за счет увеличения времени работы майнинг ригов.
Китайских сторожевых собак довольно сложно приручить в linux, но это тоже возможно и описано в отдельной статье.
Watchdog
Сторожевой таймер (контрольный таймер, англ. Watchdog timer ) — аппаратно реализованная схема контроля за зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы. В некоторых случаях сторожевой таймер может посылать системе сигнал на перезагрузку («мягкая» перезагрузка), в других же — перезагрузка происходит аппаратно (например, замыканием контактов кнопки встроенные системы различного назначения.
Смотреть что такое «Watchdog» в других словарях:
watchdog — watch‧dog [ˈwɒtʆdɒg ǁ ˈwɑːtʆdɒːg, ˈwɒːtʆ ] noun [countable] LAW ORGANIZATIONS an independent organization responsible for making sure that companies in a particular industry or business do not do anything illegal: • France s stock market watchdog … Financial and business terms
watchdog — [wächdôg΄, wôchdôg΄] n. 1. a dog kept to guard property, as by barking 2. a person or group that keeps watch in order to prevent waste, unethical practices, etc. vt. to act as a watchdog over … English World dictionary
Watchdog — Watch dog (w[o^]ch d[o^]g ), n. A dog kept to watch and guard premises or property, and to give notice of the approach of intruders. [1913 Webster] … The Collaborative International Dictionary of English
watchdog — c.1600, from WATCH (Cf. watch) (v.) + DOG (Cf. dog). Figurative sense is attested from 1845 … Etymology dictionary
watchdog — ► NOUN 1) a dog kept to guard private property. 2) a person or group that monitors the practices of companies providing a particular service or utility … English terms dictionary
Watchdog — Der Begriff Watchdog (englisch; Wachhund, auch WDC für Watchdog Counter) wird verallgemeinert für eine Komponente eines Systems verwendet, die die Funktion anderer Komponenten überwacht. Wird dabei eine mögliche Fehlfunktion erkannt, so wird… … Deutsch Wikipedia
Watchdog — A watchdog is a dog who provides protection by watching for or guarding against intruders. ;In computing * Watchdog timer, a device in computer systems * Event Log Watchdog, a freeware software program * Watchdog Event Log, created by Windows… … Wikipedia
watchdog — noun ADJECTIVE ▪ consumer ▪ environmental, financial, health (BrE), industry, media (esp. AmE), nuclear, safety ▪ … Collocations dictionary
watchdog — UK [ˈwɒtʃˌdɒɡ] / US [ˈwɑtʃˌdɔɡ] noun [countable] Word forms watchdog : singular watchdog plural watchdogs 1) a person or organization that works to stop people from doing illegal things in a particular area of business or society a… … English dictionary
watchdog — watch|dog [ watʃ,dɔg ] noun count 1. ) a person or organization that works to stop people from doing illegal things in a particular area of business or society: a consumer/congressional/government watchdog watchdog agency/body/group: a watchdog… … Usage of the words and phrases in modern English
Сторожевой таймер в надежных встраиваемых системах
Как правило, WTD состоит из счетчика и тактирующего устройства. Значение счетчика по сигналам тактового устройства постоянно уменьшается. Когда оно достигает нуля, генерируется короткий импульс, который сбрасывает и перезапускает систему.
Приложению необходимо периодически, до срабатывания таймера, обновлять значение счетчика, иначе WTD вызовет перезагрузку системы. После обновления счетчика его значение вновь продолжит уменьшаться. Проще говоря, WDT постоянно «следит» за выполнением кода и перезагружает систему, если программное обеспечение зависает или больше не выполняет правильную последовательность кода. Перезагрузка значения WDT с помощью программного обеспечения называется “kicking the watchdog” (перезапуск сторожевого таймера).
Особенности разработки с применением сторожевых таймеров
Типы сторожевых таймеров
WDT могут быть разделены на две больших категории – внешние сторожевые таймеры (рисунок 1) и внутренние, или встроенные (рисунок 2). Подавляющее большинство современных микроконтроллеров имеют встроенные сторожевые таймеры. Производители также предлагают специализированные микросхемы сторожевых таймеров.
Выход внешнего WDT подключается к выводу сброса контроллера. Один или несколько выводов контроллера используются для перезапуска сторожевого таймера.
Рис. 1. Внешний сторожевой таймер | Рис. 2. Внутренний сторожевой таймер |
Проблемы, возникающие при отсутствии сторожевого таймера
В 1994 году для наблюдения за Луной и астероидом 1620 Geo был запущен зонд «Клементина». После нескольких месяцев работы программный сбой привел к включению контрольного двигателя на 11 минут, что привело к большому расходу топлива и вращению аппарата со скоростью 80 об/мин. Управление было в конечном итоге восстановлено, но слишком поздно для успешного завершения миссии.
Даже если код был тщательно спроектирован и реализован, ошибка всегда возможна. Если устройство тестируется на устойчивость к электромагнитным помехам, высоковольтный импульс может привести к модификации программного счетчика или указателя стека. Космические лучи также опасны для цифровой техники и могут привести к искажению содержимого регистров процессора.
В результате переполнения буфера или взаимной блокировки процессов работа программного обеспечения может привести к зависанию системы в бесконечном цикле. В небольших системах достаточно легко обнаружить источник ошибки, но в больших встроенных системах сделать это не так просто. Как правило, используя сторожевой таймер, мы можем быть уверены, что система не зависнет навсегда.
Системное программное обеспечение также не должно зацикливаться на длительный период. Общим решением является сброс системы, и в этом поможет сторожевой таймер.
Структура систем, использующих сторожевой таймер
Программа в ходе своего выполнения постоянно должна обновлять сторожевой таймер. В некоторых случаях для обновления значения сторожевого таймера необходимо передать ему специальную последовательность байтов. Это снижает вероятность появления ошибки, способной обновить сторожевой таймер.
После переполнения WDT активирует линию сброса процессора. В некоторых процессорах и контроллерах перед сбросом системы генерируется отдельное прерывание, своеобразное предупреждение от сторожевого таймера о предстоящем сбросе. Благодаря этому мы можем сохранить полезную информацию наподобие значения регистра статуса в энергонезависимой памяти для последующего анализа после рестарта системы. Путем анализа журналов сброса можно выявить основную причину сброса, и, возможно, причину сбоя.
Сторожевой таймер также может быть использован для вывода устройства из спящего режима или режима ожидания. В спящем режиме срабатывание сторожевого таймера не сбрасывает систему, а просто переводит ее в активный режим.
Для надежной разработки внедрение сторожевого таймера является обязательным.
Период срабатывания сторожевого таймера
Для корректного выбора интервала срабатывания сторожевого таймера необходимо четкое понимание о возможных длительностях программных циклов. Вариации количества возникающих прерываний или дополнительное время, необходимое обработчику прерывания, могут изменять типичную длительность программного цикла. Программные временные задержки также могут увеличивать длительность программного цикла. В приложении с длительными задержками в различных местах между участками кода управление сторожевым таймером может столкнуться с проблемами.
В некоторых критичных задачах важна длительность времени восстановления после сброса, инициированного сторожевым таймером. В таких системах интервал срабатывания сторожевого таймера должен быть выбран очень тщательно. После сброса от сторожевого таймера система должна восстановиться как можно быстрее. К примеру, в случае кардиостимулятора работа должна быть восстановлена за интервал, меньший, чем длительность интервала между ударами сердца. Инициализация после сброса от сторожевого таймера должна быть короче, чем инициализация при включении.
Очень короткие временные интервалы сторожевого таймера могут приводить к лишним перезапускам системы. Если система не критична по времени, интервал сброса лучше выбирать в пределах нескольких секунд.
Сторожевой таймер в однопоточном приложении
Обычно обновление/ перезапуск сторожевого таймера происходит в конце основного цикла, перед уходом на новый круг (рисунок 3).
Рис. 3. Типовая схема обновления сторожевого таймера в основном программном цикле приложения
В однопоточном приложении мы можем использовать, к примеру, автомато-теоретический подход, как показано в кодовой вставке ниже. В основном цикле в каждом из состояний проверяется переменная состояния и, в случае совпадения, ее значение изменяется на значение следующего состояния. В том случае, если значение переменной состояния равно трем, происходит обновление сторожевого таймера и возврат к начальному состоянию. Если до истечения интервала сторожевого таймера переменная состояния не равна трем, это значит, что последовательность выполнения кода нарушена и система будет перезагружена по срабатыванию таймера.
К примеру, если длительность основного цикла составляет 500 мс, а максимальный интервал сторожевого таймера – 100 мс, то нет возможности перезапускать его в основном цикле. В данном случае можно настроить один из основных таймеров процессора/ микроконтроллера на срабатывание, к примеру, каждые 50 мс и определить флаг, показывающий, что выполнение программы идет штатно, который будет проверен в конце основного цикла.
Каждые 50 мс по срабатыванию основного таймера проверяется флаг состояния, инкрементируется счетчик. Обновление таймера происходит только в том случае, если система находится в известном состоянии. Если значение счетчика превысило десять (прошло более 500 мс), обработчик при следующем прерывании проверяет флаг состояния, и если он соответствует нормальному исполнению кода, то считается, что программа выполняется корректно. В противном случае выставляется состояние «неизвестное», обновления сторожевого таймера при следующем вызове не будет и система будет перезапущена по истечению интервала сторожевого таймера.
—————-CODE——————
ISR() //50ms free running
<
Count++;
If(Count > 10) //10x50ms
<
Count = 0;
If(State == ALIVE)
<
State = RESET;
>
else
<
State = UNKNOWN;
>
>
Не стоит доверять обновление сторожевого таймера, без проверки каких-либо условий, обработчику прерываний или отдельной задаче ОСРВ, так как в случае ошибки в основной ветке кода обработка прерываний или выполнение других задач ОСРВ может продолжиться, и условия срабатывания сторожевого таймера никогда не наступят. Такой подход не рекомендуется, так как нет гарантии, что работает основной код.
Сторожевой таймер в приложениях на базе ОСРВ
В многозадачной среде наблюдается множество независимых программных циклов, называемых задачами. Планировщик управляет выполнением задач с учетом их приоритета. Для того чтобы убедиться, что задачи работают штатно, каждая из них должна вносить свой вклад в принятие решения о перезапуске сторожевого таймера.
Рассмотрим подход, в котором существует слово статуса, и каждый бит этого слова ассоциируется с отдельной задачей. К примеру, в нашей системе запущены три задачи, и каждая из задач будет устанавливать отведенный ей бит в слове статуса в конце своего программного цикла.
Подход, представленный на рисунке 4, будет работать в том случае, если длительности циклов всех задач будут меньше и длительности периода сторожевого таймера, и периодичности срабатывания задачи сторожевого таймера. Однако в случае, если хотя бы одна из задач не укладывается в этот период по каким-либо причинам (переход в спящее состояние, ожидание события, обработка прерываний), даже при штатном исполнении сторожевая задача, обнаружив неустановленный бит, не обновит таймер, и произойдет перезапуск всей системы.
Более предпочтительным решением является использование метода передачи сообщений, когда каждая задача блокируется в очереди сообщений (рисунок 5). Задача сторожевого таймера будет отправлять сообщения всем задачам и переходить в спящий режим на определенный промежуток времени (меньший, чем период тайм-аута таймера).
Рис. 4. Реализация сторожевого таймера в ОСРВ, вариант 1
Рис. 5. Реализация сторожевого таймера в ОСРВ, вариант 2
После поступления сообщения в очередь прикладная задача, в соответствии со своим приоритетом, получит управление. Задача считывает сообщение, и, если она была разбужена задачей сторожевого таймера, выставит соответствующий бит в слове статуса. При пробуждении задачи сторожевого таймера происходит проверка активных битов слова статуса задач. Если все они в наличии, сторожевой таймер сбрасывается и слово статуса обнуляется. При таком подходе задача сторожевого таймера должна иметь больший приоритет по сравнению с прикладными задачами. Выбор приоритета сторожевой задачи весьма важен и зависит от общей архитектуры системы.