РадиоЛоцман - Все об электронике

Руководство для разработчика по сторожевым таймерам. Часть 1 - Общие сведения и назначение

Журнал РАДИОЛОЦМАН, июль 2012

Jack Ganssle

Digi-Key

Сторожевой таймер (WatchDog Timer, WDT) – это аппаратный модуль, который следит за выполнением программного кода и выполняет сброс процессора при зависании программы. На протяжении многих лет в мире встраиваемых систем продолжались яростные дискуссии относительно их важности. Многие инженеры считали, что сторожевые таймеры не нужны, что самым лучшим решением было бы написать надежную программу. Что тут скажешь, совершенство – благородная и заманчивая цель.

Однако немногие продукты когда-либо достигают такого уровня качества. При существующей скорости разрастания объемов программного обеспечения, даже бескомпромиссный акцент на качестве вряд ли приведет к совершенству. Миллион строк программного кода, даже если код корректен на 99.9% (причем это число гораздо выше, чем реально достигнуто подавляющим числом компаний), содержат 100 скрытых ошибок. Любая из них может вызвать сбой в системе, или еще хуже, ввести ее в опасный режим работы. Увы, среднее количество встраиваемых систем поставляется лишь с 95% устраненных ошибок.

Ошибки в программе не единственная проблема. Отлично спроектированное и построенное оборудование, на котором выполняется безупречный код, все равно может работать со сбоями.
Все чаще причиной проблем в цифровых системах становятся космические лучи. Состоящие в основном из протонов высокой энергии, они могут взаимодействовать с транзисторами микросхем и вызывать изменение состояния ячеек памяти. Для самых первых микропроцессоров это представляло меньшую угрозу, чем для современных, так как сегодня геометрические размеры 28 нм уже не редкость, а 45 нм стали нормой.

В 1990 году компания IBM подсчитала, что в типовом компьютере за счет космических лучей возникает одна ошибка в месяц на каждые 256 Мбайт ОЗУ. С тех пор топологические нормы значительно уменьшились и, предположительно, проблема обострилась.

Intel считает, что в будущем космические лучи могут стать источником еще более серьезных компьютерных ошибок. Компания запатентовала технологию (патент 7309866), по которой для обнаружения космических лучей и формирования корректирующих сигналов используется MEMS датчик.

Х. Кабаяши (H. Kobayashi) и др. обнаружили, что ошибок из-за космических лучей и других частиц в два с лишним раза больше в устройствах, выполненных по 180-нм технологии, чем в устройствах с проектными нормами 250 нм.

В 2004 году компания Tezzaron Semiconductor опубликовала результаты исследований, из которых следовало, что наиболее подвержены влиянию космических лучей модули SRAM и логика [5]. По утверждению авторов работы, в системе с 1 Гбайт SRAM ошибки могут возникать каждые две недели, а в Денвере, расположенном на уровне моря, проблема усугубляется в 10 раз.
Удивительно, что частица с ничтожным зарядом 10 фКл (фемтокулон) обладает достаточной энергией для переключения ячейки памяти SRAM. Еще десять лет назад, когда элементы микросхем были крупнее, для этого требовалась энергия в пять раз больше.

Вывод: даже идеально написанный код не в состоянии защитить от сбоя. Только сторожевой таймер может помочь восстановить работу системы.

Основные характеристики сторожевого таймера

Поскольку сторожевой таймер – это последняя «линия обороны», его архитектура должна предвидеть любые сбойные ситуации. Вы спросите, каковы же характеристики сторожевого таймера?

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

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

Некоторые сторожевые таймеры вместо сигнала сброса выдают немаскируемое прерывание. Идея состоит в том, что процедура обслуживания немаскируемых прерываний может сохранить содержимое стека и отладочную информацию. Увы, нет оснований полагать, что неправильно функционирующий процессор будет отвечать на любое прерывание. Имеется довольно много задач, которые должны быть выполнены прежде, чем будет вызван обработчик прерывания. На многих процессорах, например, процедура обработки прерывания не запустится, если указатель стека будет нечетным, или будет иметь не выровненные адреса. Более того, процессор может уйти в режим Double-Bus Fault, в котором он отключается, и восстановить работу может только аппаратный сброс.

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

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

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

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

Часть 2 - Встроенные в микроконтроллеры и внешние сторожевые таймеры

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: A Designer's Guide to Watchdog Timers. Part 1 - Overview and features

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • ...Чудны дела Твои, Господи... Опять х-лучи виноваты во всём...А когда г-н Kobayashi топологию уменьшал, он об этом не задумывался? Кстати, а это не он, случайно, на бонсайных сайтах сенсэем присутствует, а что принцип тот же... Раз 10 фКл могут переключать ячейку, где гарантия, что после перезагрузки, загрузится то что нужно? А то пятна, вспышки, лучи, дыры... а Глонасы и Фобосы всё падают и падают...Может поменять что-то в системе?
  • .....процессор завис?......програмиста в Сибирь!......
  • Когда в космос летали на "золотых" сериях, косяков меньше было... Просто начинает складываться впечатление что от нас ( в глоб. см. - землян) мало что зависит и этот эксперимент над нами проводится не случайно, типа зарвались, и терпите...Всё выстраивается в чёткую логическую цепь, сидите дома и не лезьте куда не положено... Я не стану про америкосов и прочих ниппонцев утверждать, у них свои традиции, и к ним свой подход, но кое-что общее есть -всеобщее отупление на волне научного прорыва, для примера тот же пресловутый ЕГЭ, или канал РЕН ТВ, который создан как страшилка, что бы говорить полуправду, что бы люди, считающие себя нормальными, стали считать реал - бредом, и наоборот, далее, соцсети, ЧИПовые паспорта, кредитки, рост "белых воротничков" (ну да - прогресс! - пусть роботы вЪ...) или например Пиво (теперь все скажут -ну понятно..;) раньше хранилось пару дней, а теперь бактерии его кушать не хотят пол-года....Была одна хорошая книжка, социальная фантастика с примесью инопланетного разума, Януш Зайдель "Предел", в сети есть, написана давно, почитайте и сравните, правда там ХэпиЭндом закончилось, но я не уверен что прокатит... ЗЫ. Я не настаиваю конкретно, на прямом вмешательстве всяких инопланетных сущностей, у нас и своих Вольных Каменщиков на любой забор или стенку хватит, хуже если они объединились...
  • И давно это энергию в кулонах стали мерять?:eek:
  • Заряд Частицы Бога, видимо... ...в расширенных моделях спонтанного нарушения симметрии может возникнуть несколько хиггсовских бозонов различной массы, в том числе и заряженные...