Сторожевой таймер (контрольный таймер, англ. Watchdog timer ) — аппаратно реализованная схема контроля за зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы. В некоторых случаях сторожевой таймер может посылать системе сигнал на перезагрузку («мягкая» перезагрузка), в других же — перезагрузка происходит аппаратно (например, замыканием контактов кнопки встроенные системы различного назначения.
Wikimedia Foundation . 2010 .
Смотреть что такое «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 — /woch dawg , dog /, n., adj., v., watchdogged, watchdogging. n. 1. a dog kept to guard property. 2. a watchful guardian: a self appointed watchdog of the public morals. adj. 3. of, pertaining to, or characteristic of a watchdog. 4. organized or… … Universalium
- 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
Источник: dic.academic.ru
КАК РАБОТАЮТ ВИДЕОКОДЕКИ? | РАЗБОР
ПОЧЕМУ ВСЕ НЕНАВИДЯТ WATCH DOGS? 3 ОШИБКИ: ФИЗИКА, СЮЖЕТ, МУЛЬТИПЛЕЕР
Что такое WatchDog и для чего он нужен
WatchDog в переводе с английского — сторожевой пес. Сегодня так называют сторожевые таймеры, основная задача которых — своевременный перезапуск «зависшего» оборудования с целью восстановления его работоспособности. Отлично зарекомендовало себя устройство под названием IP WatchDog из линейки продуктов компании HW group (Чешская Республика). Поставляется оно в двух вариантах исполнения — промышленная версия в корпусе для монтажа на стандартную DIN-рейку IP WatchDog HWg-WR02a и облегченный вариант IP WatchDog Lite. Подробнее об этих устройствах, а также о том, каким должен быть оптимальный WatchDog и методы определения работоспособности оборудования, рассказывает эта статья.
Не секрет, что высокие технологии в настоящее время охватывают все новые и новые сферы жизни человека. Еще в середине прошлого века трудно было себе представить тот рывок, который техника совершила за последние 20 лет.
Сегодня никого не удивить электронными терминалами по приему платежей, банкоматами, комплексами бытовой автоматики («Умный дом»), сложными автономными системами видеонаблюдения и т.п.
Список можно продолжать бесконечно долго, и все равно невозможно охватить сразу все области интеграции сложной электронно-вычислительной техники в современном обществе. Эти технологии делают нашу жизнь проще, комфортнее и, несомненно, гораздо интереснее.
К сожалению, несмотря на стремление к технологическому совершенству, создать что-либо совершенно надежное невозможно в силу объективных причин. Человек по природе своей несовершенен, следовательно, и созданные им приспособления не всегда действуют так, как хотелось бы. Это касается абсолютно любой сферы деятельности, включая сложнейшие стратегические комплексы и космическую отрасль.
Ведь не секрет, что чем сложнее устройство, чем больше элементов оно в себе содержит, тем выше риск возникновения непредвиденного сбоя. И дело здесь вовсе не в нежелании инженеров и программистов получить безупречный результат – просто невозможно предусмотреть абсолютно все ситуации.
Да и, кроме того, есть целый ряд причин, защиты от которых просто может не быть, либо она будет неэффективна. Никто не застрахован от внезапных перепадов напряжения питания, даже, несмотря на целый комплекс защитных устройств на этот случай, от случайных статических разрядов, от умышленных вредоносных действий недоброжелателей (например, хакерские атаки на сервера в интернете). Последствия таких событий, наверное, известны всем.
На практике, попав во внештатную ситуацию, оборудование ведет себя малопредсказуемо – происходят различные сбои, устройство «зависает», начинает «глючить», одним словом перестает корректно выполнять свои функции. Инженеры и программисты постоянно борются с подобными явлениями, регулярно обновляя программное обеспечение своих продуктов и совершенствуя их аппаратную часть. Но одно дело, когда «завис» или показал «синий экран смерти» домашний компьютер или ноутбук, и совсем другое дело – когда перестал функционировать тот же банкомат, подстанция сотовой связи, мощный сервер в центре обработки данных или сетевая камера видеонаблюдения.
В первом случае все решается простым нажатием кнопки «Сброс» или кратковременным выключением прибора из сети, а со вторым случаем все сложнее. А что, если тот самый банкомат или видеокамера находятся за многие сотни или даже тысячи километров от администратора системы?
Выход напрашивается сам собой – приставить к каждому устройству персонального смотрителя, который будет неустанно следить за его работоспособностью и вовремя нажимать нужные кнопки в случае сбоя. Но не все так просто.
Во-первых, не стоит забывать о пресловутом «человеческом факторе», как мы уже говорили человек – существо несовершенное, может и отлучиться куда-нибудь, отвлечься или просто заснуть на посту.
Во-вторых, порой, финансовые затраты на персонального сторожа для каждого устройства будут обходиться гораздо дороже самого этого устройства, что весьма расточительно, а в комплексе с первым утверждением вообще малоэффективно.
Есть еще способ. Практически во все современные устройства, работающие под управлением контроллера (процессора) и содержащие управляющую микропрограмму или операционную систему, встраиваются т.н. «Сторожевые таймеры» (англ. WatchDog – Сторожевой Пёс).
По своей сути они могут быть как программными, так и аппаратными, встроенными в микроконтроллер или иную микросхему внутри устройства.
Основная задача таких таймеров – своевременный перезапуск «зависшего» оборудования с целью восстановления его работоспособности.
Если в течение определенного времени или определенного в программе числа циклов операционная система устройства или порт микроконтроллера не отвечают на запросы таймера, устройству посылается команда сброса и перезагрузки.
Есть еще одно условие – иногда подачи только сигнала «Сброс» оказывается недостаточно, и для полного восстановления работоспособности устройства его необходимо на некоторое время полностью обесточить. Например, если по какой-то причине сработала защита встроенного в сетевую видеокамеру преобразователя питания? Устройство просто выключится, и сторожевой таймер тоже, следовательно, выходом из положения будет только кратковременное прекращение подачи напряжения питания на камеру с дальнейшим его восстановлением.
Итак, каким же должен быть оптимальный WatchDog?
Он должен быть независимым от контролируемого устройства, автономным, надежным, гибко программируемым и, самое главное, с возможностью дистанционного управления для того, чтобы оператор или администратор имели возможность при малейшем подозрении на неправильную работу контролируемого оборудования принять меры по исправлению ситуации. Так есть ли оптимальное решение? Конечно же, есть.
В линейке продуктов компании HW group (Чешская Республика) есть интересное устройство под названием IP WatchDog.
Поставляется оно в двух вариантах исполнения — прибор промышленного применения в корпусе, предназначенном для монтажа на стандартную DIN-рейку IP WatchDog HWg-WR02a и облегченный вариант IP WatchDog Lite.
Как следует из названия, оба устройства позволяют контролировать работоспособность различного сетевого оборудования, такого как IP-видеокамеры, видеорегистраторы, маршрутизаторы, точки доступа WiFi, персональные компьютеры и ноутбуки, серверы, телекоммуникационные стойки и т.п.
IP WatchDog HWg-WR02a так же дополнительно оснащен разъемом последовательного порта RS-232, что позволяет использовать его для контроля оборудования, не оснащенного Ethernet-портами — запрограммированное должным образом устройство будет ожидать периодической передачи от подконтрольного оборудования определенной последовательности символов (ASCII, HEX, DEC), передающихся через порт RS-232.
Устройства полностью автономны и не требуют какого-либо дополнительного программного обеспечения для управления. Достаточно один раз сделать все необходимые настройки через Web-интерфейс в любом удобном интернет-браузере — поддерживаются как Internet Explorer, так и Mozilla Firefox, Google Chrome, Safari, Opera.
Как IP WatchDog HWg-WR02a, так и IP WatchDog Lite имеют два независимых канала для мониторинга состояния подключенного к ним оборудования и два независимых выхода контактов реле, способных коммутировать любую нагрузку с напряжением питания до 230В при токе до 16А. Это означает, что данные устройства могут использоваться не только для сброса контролируемого оборудования, но и для управления питанием различных приборов — например, подключить резервный сервер или маршрутизатор в случае отказа основного.
Сторожевые таймеры производства HW group используют 5 различных механизмов для определения работоспособности оборудования, что делает эти устройства очень гибкими и дает широкие возможности по внедрению их в различные системы, такие как сетевое видеонаблюдение, серверные стойки, телекоммуникации, медицинские приборы, охранно-пожарное оборудование, Web-сервера.
И даже оборудование, не оснащенное сетевым интерфейсом, но имеющее стандартный последовательный порт RS-232 (COM-порт) может быть с легкостью использовано совместно с IP WatchDog Hwg-WR02a. Кроме того, оператор или администратор всегда могут оперативно вмешаться в работу устройства посредством локальной сети или удаленно, через интернет.
Помимо мониторинга оборудования IP 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.
- Замки и доводчики Abloy
- Видеонаблюдение
- Дистанционный мониторинг
- Системы охраны периметра
- Охранно-пожарная сигнализация
- Системы контроля доступа
- Системы оповещения, музыкальной трансляции и конференцсистемы
- Автоматические ворота и шлагбаумы
- Охрана акваторий
- Управление умным домом
- Технологии анализа голоса
- Сетевое оборудование Cisco
- Заметки специалиста
Источник: www.akvilona.ru
Руководство для разработчика по сторожевым таймерам. Часть 2 — Встроенные в микроконтроллеры и внешние сторожевые таймеры
Сторожевые таймеры можно разделить на две основные группы: встроенные в процессор и внешние, добавляемые разработчиком аппаратной части. В большинстве микроконтроллеров имеется встроенные сторожевые таймеры, но их эффективность варьируется в широких пределах.
В качестве примера можно привести микроконтроллеры компании Maxim (ранее Dallas) DS80C320/DS80C323 – варианты микроконтроллера 8031, существующего уже достаточно давно. Сторожевой таймер этих микроконтроллеров имеет две особенности. Во-первых, его можно запрограммировать таким образом, чтобы он генерировал прерывания, но спустя 512 циклов сбрасывал микроконтроллер.
Эта возможность очень упрощает сохранение отладочной информации. Во-вторых, можно ограничить доступ к регистрам сторожевого таймера, для чего достаточно выполнить две специфические парные инструкции перемещения, после чего открывается окно в три цикла, когда доступ к сторожевому таймеру становится возможным.
Благодаря этому существенно снижается риск случайного отключения защитного механизма. Однако возникает вопрос, что произойдет, если между этими инструкциями произойдет прерывание. По-видимому, доступ к регистрам сторожевого таймера останется закрытым, и его включение станет невозможным. Очевидно, что программист должен запрещать прерывания на время выполнения инструкций, разрешающих доступ к сторожевому таймеру.
32-разрядные микроконтроллеры Freescale серии MCF520x существенно отличаются от DS80C320/DS80C323. Для обращения к сторожевому таймеру нужно выполнить две записи в его служебный регистр, но в промежутке между обращениями к регистру может выполниться любое количество инструкций.
Это может стать причиной неработоспособности защитного механизма, если процессор работает неверно и выполняет случайный код. С другой стороны, регистр состояния сброса указывает, откуда поступил сигнала сброса: извне или от сторожевого таймера, а это хороший способ регистрации ошибок после перезагрузки. Можно запрограммировать сторожевой таймер на формирование либо только сигнала сброса, либо прерывания, но последний вариант очень плох. Если указатель стека станет нечетным, – в связи со сбоем или выполнением случайного кода, – система войдет в состояние Double-Bus Fault. Тогда прерывание от сторожевого таймера станет бесполезным, и для восстановления работы потребуется аппаратный сброс.
Новая серия микроконтроллеров STMicroelectronics STM32F4 с ядром ARM Cortex-M4 имеет два независимых сторожевых таймера. Один работает от собственного встроенного RC генератора, и, следовательно, никак не зависит от того, что происходит в процессоре. Существует также «оконный» сторожевой таймер (window watchdog – WWDT), к которому разрешено обращаться программно, но не слишком часто. Это очень эффективный способ застраховаться от аварийного кода, посредством которого может выполняться случайная запись в механизм защиты и остановка сторожевого таймера, так как WWDT может генерировать прерывание незадолго до сигнала сброса.
Интересно, что некоторые из микроконтроллеров имеют своего рода аналоговый сторожевой таймер, который срабатывает при превышении запрограммированного порога на входе АЦП. Благодаря такой функции можно контролировать напряжение питания и кратковременные провалы напряжения. Для систем, управляющих опасными механизмами, это особенно важно, и такой сторожевой таймер может использоваться для перевода устройства в безопасное состояние до того, как питание выйдет за установленные пределы.
Многие микроконтроллеры Microchip серии PIC24F, а также микроконтроллеров LPC18XX и LPC43XX компании NXP имеют оконные сторожевые таймеры. Они могут быть сконфигурированы так, что однократно включенные, в дальнейшем не смогут быть выключены программным способом, что обеспечивает более надежную защиту от исполнения случайного кода.
Однако ни один из представленных микроконтроллеров не сообщает внешнему миру о произошедшей перезагрузке. Разработчику, вероятно, придется закрепить бит параллельного порта ввода/вывода для сброса внешних устройств, если программное обеспечение не может гарантировать надлежащую повторную инициализацию.
Внешние сторожевые таймеры
В отличие от микроконтроллеров, лишь несколько микропроцессоров имеют встроенные сторожевые таймеры, которые, к тому же, зачастую не обеспечивают достаточную надежность, необходимую для конкретного приложения. В этих случаях проект должен быть дополнен внешним сторожевым таймером, который контролирует работу системы и, при необходимости, генерирует сигнал сброса.
В системе, использующей более одного процессора, целесообразно, чтобы каждый процессор контролировал работу остальных.
На рынке представлено множество микросхем сторожевых таймеров. В целом их работа программным обеспечением не контролируется, поэтому сбой микропроцессора повлиять на работу внешнего сторожевого таймера никак не может. Обычно эти микросхемы имеют дополнительную функцию сброса при подаче питания, что позволяет сократить количество внешних компонентов.
Одно из таких устройств выпускается компанией Maxim (Рисунок 1). Времена тайм-аута оконного сторожевого таймера MAX6751 задаются с помощью двух конденсаторов.
Рисунок 1. | Время тайм-аута оконного сторожевого таймера MAX6751 устанавливается двумя конденсаторами. |
Микросхема TPS3126 компании Texas Instruments, если не принимать во внимание незначительные отличия, похожа на оконный сторожевой таймер. Недорогой прибор в корпусе SOT-23 предлагается во множестве вариантов, различающихся диапазонами напряжений и времени задержки (Рисунок 2).
Рисунок 2. | Микросхема Texas Instruments TPS3126 одновременно выполняет функции монитора напряжения питания и сторожевого таймера. |
Кроме того, у Texas Instruments есть целое семейство устройств, включая TPS386000, которые могут контролировать четыре шины питания и содержат сторожевой таймер с фиксированной задержкой. Причем один из каналов микросхемы рассчитан на отрицательное входное напряжение. Если на входе любого канала фиксируется недопустимое напряжение, активируется индивидуальный сигнал сброса. Весьма удобно, что выходы сброса имеют открытый сток и допускают соединение друг с другом. Эти выходы также можно подключить к входам микропроцессора, что позволит определить, в каком из источников возникли неполадки и принять соответствующие меры.
Функции сторожевого таймера и контроля напряжения одного источника питания выполняет простая микросхема ADM699 производства компании Analog Devices (Рисунок 3).
Рисунок 3. | Микросхема Analog Devices ADM699 имеет очень простую и понятную архитектуру. |
Входы сброса некоторых современных микропроцессоров не допускают подачу сигналов с медленно нарастающими фронтами. Открытый сток транзистора отвечает этим требованиям только в случае использования подтягивающего резистора с малым сопротивлением, что значительно увеличивает энергопотребление. Для таких случаев Analog Devices выпускает несколько устройств, в частности, микросхему ADM6316 (Рисунок 4), имеющих двухтактный выход.
Рисунок 4. | Микросхема сторожевого таймера Analog Devices ADM6316 имеет двухтактный выход. |
Рекомендации по разработке программ
Даже самая хорошая схема сторожевого таймера будет плохим механизмом безопасности, если программный код приложения построен некорректно. Увы, при создании многих систем разработчики контролируют работу сторожевого таймера чуть ли не в каждой строке программного кода, но не продумывают весь проект в целом.
Самое важное – гарантировать, что правильно работает весь код, а не только его часть. Поэтому никогда не помещайте процедуру обращения к сторожевому таймеру в обработчик прерывания, и никогда не доверяйте управление сторожевым таймером операционной системе реального времени (RTOS). Если программный код вызовет сбой прерываний, или даже планировщика RTOS, может получиться так, что их выполнение продолжится, и счетчик сторожевого таймера будет постоянно сбрасываться.
В однопоточных приложениях необходимо использовать архитектуру подобную конечному автомату. Примеры кода приведены в Листинге 1.
Листинг 1. Код обращения к сторожевому таймеру в однопоточном приложении.
main() wdt_a() wdt_b()
В начале основного цикла программы переменной state присваивается значение 0x5555 . Затем вызывается функция wdt_a() , в которой проверяется, является ли это значение правильным. Если нет, то происходит остановка и сторожевой таймер сбрасывает систему. В противном случае значение переменной state изменяется путем добавления смещения. Отметим, что в этом случае обращения к сторожевому таймеру нет.
В конце основного цикла (выполнен весь программный код) переменной state присваивается новое значение, и вызывается функция wdt_b() . Теперь, если значение переменной не соответствует ожидаемому (а это означает, что не весь основной цикл был пройден), выполнение кода останавливается и происходит сброс микропроцессора. Если же основной цикл был пройден полностью, и значение state корректно, сторожевой таймер сбрасывается и переменной state присваивается значение 0. Заметьте, что если произойдет программный сбой и произойдет вызов функции wdt_b() , значение переменной state будет неверным, и произойдет сброс.
В многозадачных приложениях каждая задача при каждом запуске инкрементирует значение ассоциированной с ней переменной в структуре данных. Низкоприоритетные задачи периодически проверяют эти переменные, чтобы убедиться, что данные корректны. Значения переменных, связанных с часто выполняемыми задачами, будут большими, а у самых неактивных задач, наоборот, малыми. Если выполнение кода проходит успешно, задача сбрасывает сторожевой таймер, обнуляет значения и возвращается. В противном случае исполнение задачи останавливается и происходит сброс по сигналу сторожевого таймера.
Если возможны исключительные ситуации, при которых невозможно восстановление или продолжение выполнения кода, что может произойти вследствие деления на ноль или ошибки функции malloc(), необходимо написать обработчик, который будет запрещать прерывания и остановы. Сторожевой таймер в таком случае сможет вернуть систему к жизни.
Выводы
Сторожевой таймер является последней линией обороны от программных сбоев, и поэтому должен быть разработан и реализован очень тщательно. Многие современные микроконтроллеры имеют встроенные сторожевые таймеры, которые очень сложны и устойчивы к программным сбоям. Альтернативно возможно использование внешних сторожевых таймеров, и, вероятно, лучшим выбором будет таймер, поддерживающий «оконный» режим. Также следует уделить пристальное внимание структуре программы, чтобы неправильно выполняющийся код не влиял на обращения к сторожевому таймеру, и не препятствовал выполнению его основной функции – сбросу процессора.
Перевод: Vadim по заказу РадиоЛоцман
Источник: www.rlocman.ru