Сторожевые таймеры USB WatchDog
Автоматическая удаленная перезагрузка
Забудьте о проблеме “зависших” устройств.
Watchdog перезагрузит их сам.
Когда нужен USB WatchDog
- Обеспечение бесперебойной работы терминала.
- Автономный компьютер выполняет работу без присмотра персонала.
- Нужно увеличить надёжность промышленного ПК.
- GPU-майнер работает нестабильно, а программные средства не помогают.
Сторожевой таймер подключается через USB интерфейс к ПК. Проводом он напрямую соединяется с контактами Reset или Power материнской платы.
Программа-монитор переодически передает сигнал устройству. Если watchdog не получает сигнал, значит компьютер завис.Через заданное время USB WatchDog автоматически подает сигнал на контакт Reset материнской платы, чтобы перезагрузить систему.
Если Reset не сработал, в сериях Pro активируется канал Power, который выключает и снова включает компьютер.
Мы разработали для вас
Целая линейка сторожевых таймеров для контроля за работоспособностью ваших устройств
Дополнительно
Вспомогательные устройства для большего удобства
Как подключить
Краткая инструкция
Установить программу wdtmon3-mini
Скачать её можно для Win/Lin/OSX
Внимание: если вы используете HiveOS, то устанавливать ПО не требуется.
Поддержка USB WatchDog уже реализована разработчиками Hive OS.Подключить сторожевой таймер
USB WatchDog необходимо установить в USB порт, а провода Reset и Power (для Pro) подключить вместо кнопок от системного блока. Сами кнопки можно подключить к сторожевому таймеру, чтобы ими тоже можно было пользоваться.
Запустить пк и проверить в работе
При запуске программы сторожевой таймер начинает мигать зелёным – это значит, он видит программу. Теперь можно протестировать работу USB WatchDog, нажав на кнопки “Reset” и “Power”. Возможно, потребуется поменять полярность подключения проводов “Reset” и “Power”.
Большая инструкция: Множество других примеров всегда можно посмотреть в учебнике по ссылке
FAQ
Часто задаваемые вопросы
Чем сторожевые таймеры лучше Wi-Fi розетки?
Wi-Fi розетка не перезагрузит машину автоматически. Между тем, как машина перестала работать, пользователь узнал об этом и среагировал, может пройти достаточно много времени.
Чем отличается внутреннее подключение от внешнего?
Внешнее подключение проиходит через USB TypeA (стандартный вход, как для флешки). Внутреннее подключение – через вход PBD-10 на материнской плате.
Чем отличается Pro версия от Lite?
1. Иногда достаточно подать сигнал на кнопку Reset, чтобы спастись от всех зависаний машины, то достаточно версии Lite.
2. Pro версия имеет два управляемых канала на случай, когда Reset недостаточен и перегрузиться можно только нажатием на Power. Также, Pro имеет больее развитый функционал.
Дополнительные ресурсы
- Большая online инструкция,
- wdtmon3-mini инструкция,
- wdtmon3 инструкция,
- Подключение к облаку инструкция,
- Поддержка USB Watchdog в HiveOs,
- Техническая документация USB WatchDog Pro2,
- Техническая документация USB WatchDog Lite,
- Техподдержка.
Сторожевой таймер для отказоустойчивых систем
В статье обсуждается необходимость повышения надежности системного монитора в критичных с точки зрения безопасности приложениях, и содержатся рекомендации по проектированию отказоустойчивого сторожевого таймера. Описаны новые методы восстановления сторожевого таймера, механизм защиты от случайной записи, методы раннего обнаружения сбоя программы и быстрого тестирования сторожевого таймера. Статья представляет собой сокращенный перевод работы [1].
Потребность в отказоустойчивых системах
Электронные блоки управления (ЭБУ) находят все большее применение в таких критичных с точки зрения безопасности приложениях, которые должны надежно работать при любых условиях внешней среды. В реальных условиях эксплуатации в программном обеспечении ЭБУ происходят сбои, что может приводить к частичному или полному отказу системы. Использование сторожевого таймера — это наилучший способ вывода системы из неопределенного состояния в безопасный режим.
Введение стандарта IEC 60730 требует обеспечения безопасности и надежности блоков управления и других компонентов даже для таких распространенных устройств как бытовые приборы.
Причины системных сбоев
В различных приложениях при эксплуатации встраиваемых систем наблюдаются два вида отказов: систематические и случайные ошибки. Систематические ошибки означают необратимые повреждения в системе, например, разрушение корпуса микросхемы в результате воздействия повышенной вибрации.
В результате действия случайных ошибок, которые приводят к нарушению данных в системе, она способна восстанавливаться. Причины появления таких сбоев могут быть самыми разными: от воздействия космических излучений, электромагнитных помех (ЭМП) до использования несовершенного программного обеспечения.С увеличением системной тактовой частоты, применением все более высокоскоростных последовательных интерфейсов и уменьшением шага выводов корпусов микросхем влияние ЭМП становится все более заметным. Космическое излучение может вызывать случайные переключения состояния ячеек памяти, а ЭМП и помехи ИП могут приводить к считыванию и записи в память или регистры неправильных данных.
Когда происходит такая потеря данных, выполнение программы нарушается, т.к. состояние, например, программного счетчика может быть изменено. Модификация памяти программ или чтение некорректных данных из их памяти может привести к выполнению совершенно непредсказуемых команд. Подобный сбой может быть также результатом разработки некорректной программы.
Вместе с проведением повторных измерений для восстановления потерянных данных в системе необходимо применять системный монитор, который может детектировать сбои и предпринимать необходимые действия для перевода в безопасное/известное состояние с минимальной задержкой. Монитор должен быть устойчив к программным сбоям.
Системный монитор — сторожевой таймер
В настоящее время роль системного монитора во встраиваемых системах выполняет специальная логическая схема, называемая сторожевой схемой или сторожевым таймером. Таймер регулярно принимает некоторый системный сигнал «все хорошо». Этот сигнал выполняет функцию восстановления (сброса) сторожевого таймера и может быть реализован в разных формах: например, в виде записи центральным процессором (ЦП) определенного кода в регистр сторожевого таймера или в виде выполнения ЦП специальной команды. Если по истечении определенного времени такой сигнал не поступал, сторожевой таймер генерирует сигнал системного сброса. Минимальная частота, с которой происходит восстановление сторожевого таймера, определяется установленной величиной интервала ожидания.
На рисунке 1 представлена базовая концепция сторожевого таймера.Рис. 1. Концепция сторожевого таймера |
Работа системы организована таким образом, что сначала встроенная программа сортируется для определения последовательности и времени выполнения команд. Затем процедуры восстановления сторожевого таймера вводятся в код программы таким образом, чтобы интервал между выполнением двух последовательных процедур восстановления не превышал периода ожидания сторожевого таймера. Если происходит сбой программы и ее выполнение нарушается, то процедуры восстановления таймера либо не выполняются вовсе, либо они запускаются через интервал времени, превышающий период ожидания таймера. В этом случае через определенное время сторожевой таймер сгенерирует сигнал системного сброса и вернет систему в известное состояние. Важное требование к сторожевому таймеру — невосприимчивость к программным сбоям.
Проектирование отказоустойчивого сторожевого таймера
При разработке надежной схемы сторожевого таймера следует учитывать следующие рекомендации.
– Разрядность сторожевого таймера должна обеспечивать полный диапазон интервалов ожидания для всех источников тактового сигнала в системе.
– Сторожевой таймер должен работать от отдельного источника тактовой частоты. Желательно, чтобы был использован специальный источник тактовой частоты для сторожевого таймера, например RC-генератор. Это означает, что если даже по каким-либо причинам источник системной тактовой частоты выйдет из строя и система зависнет, сторожевой таймер сможет продолжить работу и выполнить сброс.
– Критически важные биты регистров управления и конфигурации сторожевого таймера должны быть защищены от случайной перезаписи.
– Метод восстановления сторожевого таймера должен быть таким, чтобы вероятность случайного восстановления при сбое программы была минимальной.
– Реакция сторожевого таймера на обнаружение сбоя программы должна быть быстрой. Если сторожевой таймер потратит слишком много времени на восстановление системы, то возможны серьезные последствия, особенно в критичных с точки зрения безопасности приложениях.
– Работоспособность сторожевого таймера должна быть доступна для проверки, а тестирование не должно занимать много времени.
На основе указанных выше принципов была спроектирована схема сторожевого таймера повышенной надежности (СТПН), которая отличается от существующих схем следующими усовершенствованиями:
– улучшенный механизм восстановления;
– синхронизированный по времени доступ к регистрам управления и конфигурации с помощью паролей;
– обнаружение «следов» сбоя программы до запуска интервала ожидания;
– более быстрая и в то же время надежная реакция таймера;
– быстрая проверка сторожевого таймера.
Разрядность сторожевого таймера
При проектировании схемы сторожевого таймера необходимо корректно выбрать его разрядность.
Например, для формирования интервалов задержки в диапазоне 1 мс…1 с необходимо учитывать то обстоятельство, что частота источника тактового сигнала для сторожевого таймера может изменяться в широком диапазоне от нескольких кГц (например, RTC-генератор) до сотен МГц (системная тактовая частота).
Рис. 2. Возможные значения времени ожидания таймера (логарифмическая шкала) |
Независимый источник тактовой частоты
В СТПН имеются два входа тактового сигнала, один из которых подключен к специальному источнику тактовой частоты, например, к встроенному в микросхему RC-генератору. Другим источником тактового сигнала может быть системная тактовая частота. Для приложений, некритичных с точки зрения безопасности, разработчик системы может вместо специального источника тактового сигнала использовать системную тактовую частоту.
Защита от случайной записи
В общем случае в сторожевом таймере предусмотрено несколько битов в регистре управления и конфигурирования, которые используются для настройки, например для разрешения его работы. Так как эти биты непосредственно управляют работой сторожевого таймера, очень важно быть уверенным, что они не будут изменены. Для этого применяют специальную схему защиты от случайной записи. Одним из лучших способов защиты является использование паролей при записи управляющих битов. При этом пароль представляет собой последовательность двух специальных кодов. Обычно между записью двух кодов допускается любой промежуток времени, что означает высокую вероятность повтора пароля в случае сбоя программы.
В схеме СТПН предусмотрено ограничение по интервалу времени между операциями записи двух кодов, что при сбое программы уменьшает вероятность модификации содержимого регистров и отключения сторожевого таймера. Когда время записи ограничено (оно равно времени вызова и выполнения центральным процессором команды записи второго кода пароля), пользователь должен размещать команды записи двух кодов пароля сразу одну за другой. В этом случае при сбое программы после записи первого кода пароля не останется времени для повтора команды записи. Это позволяет выполнить запись второго кода пароля и минимизирует вероятность того, что в результате сбоя последовательность двух кодов будет повторена.
Если интервал между двумя словами пароля превышает несколько циклов тактовой частоты системной шины, сторожевой таймер решает, что произошел сбой и выполняет сброс системы. Время нахождения регистров в разблокированном состоянии также ограничено и приблизительно равно времени однократного конфигурирования регистров, после чего они блокируются снова.
Уникальная схема восстановления
Существуют различные типы механизмов восстановления — простая запись определенного кода (скажем, 0x35), выполнение специальной команды восстановления из набора команд процессора или запись последовательности двух кодов в определенном порядке (например, 0xAA после 0x55). Схема восстановления, использованная для СТПН, представляет собой последовательность двух кодов, но в отличие от существующих схем, в ней установлено предельное время между записью двух чисел. Если записано первое число последовательности и за ним в течение определенного количества циклов системной тактовой частоты не следует записи второго числа, то сторожевой таймер делает заключение о наличии сбоя и производит сброс системы.
Такой подход аналогичен тому, который применяется для описанной выше схемы защиты от случайной записи с помощью паролей. Ограничение интервала времени между записью двух кодов позволяет предотвратить ситуацию, при которой происходит сбой программы и случайное восстановление сторожевого таймера, что затрудняет сброс системы. Кроме того, специальные меры были предприняты для исключения вероятности выбора в качестве кодов последовательности чисел 0x55 и 0xAA, которые обычно используются в тестах записи-чтения памяти. Такие тесты иногда являются частью загрузочного кода, что означает многократное повторение этих чисел в программе.
Оконный режим восстановления
Схема СТПН имеет режим оконного восстановления, что является стандартным для большинства существующих систем.
Рис. 3. Оконный режим восстановления |
Быстрая реакция на программный сбой
Как уже было сказано выше, необходимо, чтобы реакция сторожевого таймера на сбой программы была быстрой. Программный сбой — это состояние, когда действия системы не детерминированы, поэтому из него необходимо выйти как можно быстрее. В схеме СТПН для уменьшения времени реакции сторожевого таймера применен упреждающий метод.
Если сбой программы в обычных системах произошел в начале периода ожидания сторожевого таймера, то до того, как будут предприняты соответствующие действия по сбросу системы, может пройти слишком много времени.
– Наличие неизвестных кодов в регистрах сторожевого таймера. Программный код пользователя содержит только команды записи определенных чисел в эти регистры, поэтому наличие других кодов в регистрах говорит о возможном сбое.
– Сбой команды записи в регистр конфигурации в короткий фиксированный промежуток времени после разблокирования регистра.
– Сбой команды записи, по крайней мере, в один регистр конфигурации в короткий фиксированный промежуток времени после восстановления системы. После системного сброса пользователь должен как можно скорее сконфигурировать регистры сторожевого таймера.
Рис. 4. Логика формирования сигнала сброса |
Быстрая проверка сторожевого таймера
Стандарты по безопасности, такие как IEC 60730, требуют, чтобы все системы, управляющие функциями, связанными с обеспечением безопасности, были протестированы, причем эти тесты должны быть устойчивы к отказам. Для большинства существующих сторожевых таймеров проводится простой тест на переполнение. Для 32-разрядного таймера, работающего на частоте 1 кГц, тест на переполнение занимает примерно 4 · 106 с, что недопустимо много. При тестировании СТПН производится его разделение на звенья длиной один байт, проверка которых осуществляется независимо друг от друга. На рисунке 5 показана блок-схема, поясняющая концепцию «разделения». На этом рисунке изображен процесс тестирования 3-го звена (байта) таймера.
Рис. 5. Блок-схема тестирования сторожевого таймера с разделением на звенья |
Каждое звено таймера представляет собой 8-разрядный синхронный счетчик и комбинационную логику, которая формирует сигнал переполнения. Сигнал переполнения действует как сигнал разрешения для N + 1-го звена. В тестовом режиме выбирается отдельный байт, например байт N, затем в байты с 0-го по N – 1-й загружается число 0xFF. Звено N – 1 сразу же формирует сигнал переполнения, который разрешает работу звена N. В процессе работы звена N происходит сравнение с байтом N регистра значения времени ожидания. Таким путем тестируется звено N, а также все связи между звеньями таймера. При тестировании байта N все другие звенья — N – 2, N – 3, N + 1 и N + 2 — заблокированы. Эти заблокированные звенья (за исключением самого старшего звена счетчика) загружены кодом 0xFF. При тактовой частоте 1 кГц последовательное тестирование каждого звена заняло бы 4 × 256 мс (~103 мс) для 32-разрядного значения интервала ожидания, установленного на 1 с, т.е. 0xFFFFFFFF. Фактическое время тестирования будет зависеть от установленного значения времени ожидания.
Подсчет числа сбросов сторожевого таймера
СТПН хранит также количество сгенерированных системных сбросов. Это число доступно программе из специального регистра, который сбрасывается только при включении питания. Когда это число достигает определенного порогового значения, система выполняет некоторые действия помимо обычной реакции на сброс сторожевого таймера.
Заключение
В разработанной схеме сторожевого таймера повышенной надежности введен ряд усовершенствований по сравнению с обычными таймерами. Они касаются схемы восстановления, защиты от случайной записи в регистры управления и контроля, а также тестирования сторожевого таймера. Эта схема сторожевого таймера способна также заблаговременно обнаруживать сбой в программе и обеспечивать быструю реакцию. В целом, СТПН более устойчив к программным сбоям по сравнению с существующими схемами.
Литература
1. Need a watchdog for improved system fault tolerance?//commsdesign.com/showArticle.jhtml?articleID=211600055&pgno=1
Использование сторожевого таймера безопасного микроконтроллера
Скачать PDF
Abstract
Семейство безопасных микроконтроллеров (DS5000FP, DS5001FP, DS5002FP и связанные модули) включает внутренний сторожевой таймер для предотвращения ошибок выполнения кода. Сторожевой таймер использует высокоточный кварцевый генератор, который также используется микроконтроллером. Это устраняет необходимость в RC-генераторе, обеспечивая при этом большую точность.
Обзор
Микроконтроллеры часто используются в суровых условиях, где преобладают переходные процессы питания, электромагнитные помехи (EMI) и электростатические разряды (ESD). Повреждение программы, вызванное повреждением шины и электромагнитными разрядами, может привести к тому, что микропроцессор выполнит ошибочные инструкции. В этих средах сторожевой таймер является полезным периферийным устройством, которое может помочь поймать и сбросить микроконтроллер, вышедший из-под контроля.
Сторожевой таймер — это простой таймер обратного отсчета, который используется для сброса микропроцессора через определенный интервал времени. В правильно работающей системе программное обеспечение будет периодически «приручать» или перезапускать сторожевой таймер. После перезапуска сторожевой таймер начнет отсчитывать еще один заданный интервал. Если программное обеспечение или устройство не работают должным образом, программное обеспечение не перезапустит сторожевой таймер до истечения времени ожидания. Когда сторожевой таймер истечет, это вызовет сброс микроконтроллера. Если системное программное обеспечение было разработано правильно и аппаратный сбой не произошел, сброс приведет к тому, что система снова будет работать правильно. Состояние сброса должно быть «безопасным». Например, было бы неразумно иметь состояние сброса считывателя карт с магнитной полосой, включающее записывающую головку.
Многие системы были разработаны с использованием внешнего сторожевого таймера. Семейство безопасных микроконтроллеров устраняет необходимость во внешних компонентах благодаря встроенному сторожевому таймеру. Перемещая сторожевой таймер внутрь микроконтроллера, количество устройств в системе уменьшается, что повышает общую надежность системы. Сторожевой таймер может использовать преимущества высокоточного кварцевого генератора, используемого микроконтроллером, а не неточного RC-генератора, используемого в большинстве независимых сторожевых таймеров. Работа сторожевого таймера не зависит от микроконтроллера, если только это специально не указано в процедуре Timed Access. Вероятность того, что вышедший из-под контроля микроконтроллер случайно отключит сторожевой таймер, составляет менее 1 из 7,2 × 10 9 .0016 16 . В этом примечании по применению описываются функции и использование сторожевого таймера защищенного микроконтроллера.
Общее использование сторожевого таймера
Основное применение сторожевого таймера – это системный монитор для обнаружения и сброса «вышедшего из-под контроля» микропроцессора. Когда выполнение программы идет наперекосяк, она не будет должным образом выполнять код, который перезапускает сторожевой таймер. В таком случае сторожевой таймер истечет по таймауту и вызовет сброс микроконтроллера. В правильно спроектированной системе сброс исправит ошибку.
Независимо от того, насколько эффективным может быть сторожевой таймер, есть определенные сбои, которые нельзя исправить с помощью сброса. Например, сторожевой таймер не может предотвратить или обнаружить повреждение памяти данных. Если повреждение данных не повлияет на выполнение программы или не будут предприняты какие-либо дополнительные меры, повреждение данных не приведет к тайм-ауту сторожевого таймера. Конечно, программа самодиагностики может быть написана таким образом, чтобы перезапуск сторожевого таймера зависел от проверки памяти данных. Хотя многие приложения реализуют такую схему проверки данных, она выходит за рамки этого документа.
Следует помнить, что сторожевой таймер не может мгновенно обнаружить неисправность. По определению сторожевой таймер должен достичь конца своего интервала ожидания, прежде чем он перезагрузит процессор. Разработчик системы должен знать максимальный интервал времени между выполнением ошибочной команды и сбросом сторожевого таймера.
Размещение инструкций по перезапуску
В семействе безопасных микроконтроллеров сторожевой таймер управляется основными системными часами. Интервал тайм-аута составляет 122 800 машинных циклов (1 473 600 внешних тактовых циклов). По истечении времени ожидания произойдет сброс. В таблице 1 показаны временные интервалы сброса, связанные с различными частотами кристалла.
Тактовая частота | Интервал ожидания |
16,0000 МГц | 92 мс |
14,7456 МГц | 100 мс |
11,0592 МГц | 133 мс |
7,73280 МГц | 191 мс |
5,52960 МГц | 266 мс |
1,84320 МГц | 800 мс |
Основной проблемой является расположение команды сброса сторожевого таймера (установка бита RWT) в программном обеспечении. Наиболее желательным подходом является наличие одного места в основном цикле системного программного обеспечения, которое периодически перезапускает сторожевой таймер. Время, необходимое для прохождения основного цикла программы, должно быть меньше интервала тайм-аута, иначе устройство перезагрузится во время нормальной работы. В некоторых системах, однако, поток программы недостаточно линеен, чтобы можно было разместить одну функцию сброса сторожевого таймера. В код следует поместить несколько функций сброса, соответствующих самым длинным программным путям.
Часто системе необходимо знать, произошел ли сброс сторожевого таймера. Бит WTR (PCON.4) будет установлен каждый раз, когда это происходит, и программное обеспечение может проверить это на ранней стадии последовательности сброса, если произошла системная ошибка. Если это так, система может решить перейти в «безопасный» режим и предупредить пользователя об ошибке.
Пример сброса сторожевого таймера
Ниже показана короткая программа, иллюстрирующая инициализацию и основные функции сторожевого таймера. Он иллюстрирует функцию Timed Access, которая предотвращает случайное изменение битов управления сторожевым устройством. Операция Timed Access — это последовательность шагов, которые должны выполняться последовательно последовательно; в противном случае доступ невозможен. В программе-примере показан доступ по времени, используемый для перезапуска сторожевого таймера и включения его сброса. Дополнительные сведения об операции Timed Access можно найти в Руководстве пользователя защищенного микроконтроллера. Биты сторожевого таймера, защищенные процедурой Timed Access, — это биты включения сброса сторожевого таймера (EWT;PCON.2) и перезапуска сторожевого таймера (RWT;IP.7).
; Программа WD_RST.ASM ; ; Эта программа демонстрирует использование сторожевого таймера. ; Во время работы программа рассчитывает на порт 1, чтобы указать, что устройство ; запуск и периодический сброс сторожевого таймера. После подсчета ; до 16, он прекращает сбрасывать сторожевой таймер, имитируя системную ошибку. ; ; Программа начинает с проверки того, установлен ли бит WTR. Если да, то ; сброс был вызван сторожевым таймером, и программа выполнится ; подпрограмма НЕИСПРАВНОСТЬ. Порт 1 установлен на F0h, чтобы указать это условие. ; Если бит WTR не установлен, сброс был вызван другим источником и ; выполнение должно продолжаться нормально. ;****************************************** RWT EQU 0BFh ;Сброс бита сторожевого таймера TA EQU 0C7h ;Регистр временного доступа PCON EQU 87h ;Регистр управления питанием ACC EQU 0E0h ;аккумулятор Р1 ЭКВ 090h ;Порт 1 ORG 00h ;сбросить вектор SJMP СТАРТ ;****************************************** ORG 080h ;В этом примере программа начинается в 80 часов. START: MOV A, PCON ;Если сброс был вызван тайм-аутом сторожевого таймера, JB ACC.4, НЕИСПРАВНОСТЬ ; (бит WTR = 1) выполнить подпрограмму отказа. ;*************************************** ;Произошла нормальная перезагрузка при включении питания. Запустите последовательность инициализации. MOV P1, #00h ;Очистите P1, чтобы сигнализировать о начале программы. ;Последовательность инициализации сторожевого таймера MOV TA, #0AAh ;Сначала перезапустить сторожевой таймер МОВ ТА, #055h ; используя таймер СЭТБ РВТ ; доступ. MOV TA, #0AAh ;Далее включите сброс сторожевого таймера МОВ ТА, #055h ; функция с использованием таймера ОРЛ ПКОН, #04h ; доступ. ;*************************************** ;Основной цикл программы. Это имитирует программу, которая работает ; правильно, а затем идет наперекосяк. После того, как программа досчитала до 16 ; на порту 1 функция сброса сторожевого таймера будет пропущена. Этот ; имитирует отказ и позволяет установить сброс сторожевого таймера. ;*************************************** MAIN: MOV R1, #0FFh ;Создать петлю задержки. Это имитирует LOOP1: MOV R2, #0FFh ; устройство на самом деле «что-то делает». LOOP2: JB P1.4, SKIP_WD_RST ;Мы прошли цикл 16 раз? MOV TA, #0AAh ;Сброс сторожевого таймера. В пользовательском приложении это МОВ ТА, #055h ; должны быть размещены в стратегически важных местах СЭТБ РВТ ; где он будет выполняться периодически. SKIP_WD_RST: DJNZ R2, LOOP2 JNZ R1, LOOP1 INC P1 ;Приращение счетчика. SJMP MAIN ;возврат к основному циклу программы. ;****************************************** ;Сбой тайм-аута сторожевого таймера. Эта подпрограмма обычно имеет специальный ; процедуры, которые должны выполняться в случае сбоя системы. В этом примере ; он отключает сброс сторожевого таймера и устанавливает для порта 1 значение F0h, чтобы указать на неисправность. ; В реальном приложении эта процедура может либо сбросить ошибку, либо ; перезапустите программу или сообщите об ошибке и прекратите дальнейшую работу. ;****************************************** НЕИСПРАВНОСТЬ: MOV P1, #0F0h ;Сигнал неисправности MOV TA, #0AAh ;отключить сброс сторожевого таймера МОВ ТА, #55h ; используя таймер ANL PCON, #0FBh ; доступ. SJMP $ ;Остановить дальнейшую операцию.
Резюме
При разработке любой схемы, использующей сторожевой таймер в качестве монитора, необходимо учитывать ряд соображений. После определения периода тайм-аута необходимо проанализировать системное программное обеспечение, чтобы определить, где найти инструкции по перезапуску сторожевого таймера. Для эффективного проектирования количество перезапусков сторожевого таймера должно быть сведено к минимуму, и следует учитывать вероятность неправильного выполнения перезапуска. Как упоминалось ранее, некоторое системное программное обеспечение слишком запутано или зависит от данных, чтобы гарантировать, что все пути потока программного обеспечения будут покрыты перезапуском сторожевого таймера. Это может привести к тому, что может потребоваться программный подход к самодиагностике. Если существует ожидаемый механизм отказа, такой как периодический всплеск электромагнитных помех или сбой питания, время ожидания сторожевого устройства должно учитывать этот период.
Что такое сторожевой таймер (WDT)? – ABLIC Inc.
1. Что такое сторожевой таймер(WDT: сторожевой таймер)
Сторожевой таймер (WDT) — это таймер, который отслеживает программы микроконтроллера (MCU), чтобы определить, не вышли ли они из-под контроля или перестали работать. Он действует как «сторожевой таймер», следящий за работой MCU.
Микроконтроллер (MCU) представляет собой компактный процессор для управления электронными устройствами. Интегрированные в широкий спектр электронных устройств микроконтроллеры поставляются с предварительно загруженным программным обеспечением, команды которого используются для управления электронными устройствами.
Это делает необходимым обеспечение нормальной работы MCU. Если программа MCU по какой-либо причине выйдет из-под контроля или вообще перестанет работать, электронное устройство может вести себя неустойчиво, что в худшем случае может привести к повреждению или аварии.
Чтобы заранее предотвратить такие инциденты, роль сторожевого таймера ложится на роль сторожевого таймера, который постоянно следит за MCU, чтобы убедиться, что он работает нормально.
Функция сторожевого таймера может быть внутри MCU, но здесь мы вводим «внешние» сторожевые таймеры, более безопасный вид.
≫Нужен ли «внешний» WDT?
2. Работа WDT: Обнаружение неисправностей MCU
Сторожевой таймер обменивается данными с MCU с заданным интервалом. Если MCU не выдает сигнал, выдает слишком много сигналов или выдает сигналы, которые отличаются от заданного шаблона, таймер определяет, что MCU неисправен, и отправляет сигнал сброса в MCU.
WDT использует несколько методов (режимов) для обнаружения сбоев MCU, и тип обнаруживаемых им сбоев зависит от режима. Ниже приводится описание работы WDT и функций в зависимости от режима.
Режим ожиданияВ этом режиме сторожевой таймер определяет неисправность MCU и выдает сигнал сброса , если не получает сигнал от MCU в течение установленного интервала.
Режим тайм-аута является основным режимом или методом мониторинга WDT, но иногда он не может обнаружить сбои MCU.
В режиме тайм-аута WDT не обнаружит неисправность MCU, если MCU вводит несколько сигналов (= двойной импульс) в течение установленного периода.
Оконный режим обеспечивает более точное обнаружение неисправностей, чем режим тайм-аута.
В оконном режиме сторожевой таймер определяет неисправность MCU и выдает сигнал сброса , если он не получает сигнал или получает несколько сигналов (= двойной импульс) от MCU в течение установленного интервала.
Сторожевой таймер оконного режима может быть более подходящим для таких приложений, как автомобильные устройства, которые требуют большей безопасности.
Режим вопросов и ответов (вопросы и ответы)Режим вопросов и ответов обеспечивает более точное обнаружение неисправностей, чем два предыдущих режима.
В режиме вопросов и ответов MCU отправляет заранее определенные данные на WDT. WDT определяет, нормально ли работает MCU, в зависимости от того, соответствует ли сигнал, отправленный MCU, предварительно определенным данным.
Для устройств, требующих высокой степени безопасности, может потребоваться WDT в режиме вопросов и ответов. Однако, в отличие от режимов окна и тайм-аута, этот режим основан на обмене данными между MCU и WDT, что усложняет работу.
3. Выбор WDTДалее мы рассмотрим моменты, которые следует учитывать, прежде чем решить, какой WDT выбрать.
Нужен ли «внешний» WDT? Функция WDT для обнаружения неисправности MCU также включена в сам MCU.
Есть ли необходимость в предоставлении внешнего WDT в дополнение к функциям WDT, уже встроенным в MCU?
Причина в том, что внешний WDT добавляет дополнительный уровень безопасности критически важным системам.
Как было сказано ранее, WDT контролирует MCU для обнаружения неисправностей. Когда MCU контролируется только WDT, встроенным в MCU, нет гарантии, что неисправный MCU сможет контролировать себя, а также обнаруживать неисправности.
Независимо работающий WDT — единственный способ решить такие проблемы.
Резервирование считается жизненно важным для обеспечения безопасности системы. И внешний WDT может обеспечить необходимую избыточность.
MCU используются во всех видах электронных устройств, но требуется ли WDT или нет, зависит от «уровня безопасности, требуемого или считающегося необходимым для конкретного приложения».
Автомобильные устройства — это устройства, отказ или неисправность MCU которых может привести к опасным для жизни авариям. В водонагревателях и кухонных плитах отказ или неисправность MCU представляет опасность возгорания.
В системах, влияющих на жизнь человека, или в приложениях, где неисправность электронного управления может привести к серьезным авариям, для обеспечения достаточного резервирования требуется внешний WDT.
Международные стандарты, такие как ISO 26262, подчеркивают, что концепция «функциональной безопасности» необходима для «обеспечения безопасности системы в случае отказа функций и частей, связанных с безопасностью». Функциональная безопасность требует установки механизмов (предохранительных устройств) для обнаружения таких проблем, как неисправность детали, чтобы снизить риск до уровня приемлемого риска.
Использование WDT позволяет обнаруживать программы MCU и другие ошибки, а также обеспечивать безопасность всей системы.
Опять же, как и в приложениях, требующих WDT, в некоторых ситуациях может потребоваться WDT для обеспечения уровня безопасности, который требуется или считается необходимым для реализации.
Требования безопасности к электронным устройствам становятся все более строгими, особенно в автомобильной сфере. Например, новые модели устройств, для которых WDT в режиме ожидания были стандартными, теперь заменяются WDT в оконном режиме.