Компоненты встроенных систем 1 Таймер



Pdf көрінісі
бет5/13
Дата30.01.2023
өлшемі341,06 Kb.
#63759
1   2   3   4   5   6   7   8   9   ...   13
4.3 Сторожевой таймер
Допустим, в нашей системе есть некий процесс, выполняющий какую-либо
полезную задачу. Назовем его прикладным или наблюдаемым процессом. 
Если процесс выполняет важную целевую функцию, то прекращение его
деятельности может привести к остановке работы всей встроенной системы, 
то есть к сбою. Если не принять особых мер по обнаружению таких
ситуаций, встроенная система может работать некорректно в течении доста-


точно долгого времени. Для вывода систем из сбойного состояния и
приведения её в нормальный режим функционирования обычно используют 
сторожевой таймер. Таким образом, сторожевой таймер является механизмом 
защиты системы от сбоев.
Рассмотрим работу сторожевого таймера подробнее. В работе участвуют
три процесса: наблюдаемый прикладной процесс, процесс сторожевого тай-
мера и служебный процесс, реализующий механизм защиты системы от ава-
рийных ситуаций. Суть механизма сторожевого таймера состоит в проверке 
критерия, по которому можно определить, что наблюдаемый процесс ра-
ботает нормально. Если сторожевой таймер обнаруживает, что с наблю-
даемым процессом все в порядке, то ничего не происходит. Если сторо-
жевой таймер определил, что с наблюдаемым процессом что-то не так, про-
исходит передача информации системе разрешения аварийных ситуаций,
которая, в свою очередь, принимает решение о дальнейшей судьбе наблю-
даемого процесса.
В самом примитивном варианте в качестве сторожевого таймера выступа-
ет обычный вычитающий счетчик. Во время инициализации в счетчик
записывается какое-либо значение. Если в процессе работы в счетчик
эпизодически вносится новая константа, то ничего не происходит. Если
же прикладной процесс не успевает записать константу, и счетчик успе-
вает досчитать до нуля, вырабатывается сигнал аппаратного рестарта и
процессор перезапускается. Естественно, простой вариант реализации
сторожевого таймера не является 100% гарантией от выхода системы из 
сбойного состояния.
Рассмотрим типичную ошибку, допускаемую программистами при
использовании простого сторожевого таймера. Для того, чтобы контроли-
руемый процесс прекратил работу, достаточно вставить код обновления
счетчика сторожевого таймера внутрь цикла проверки, который будет
всегда давать ложное значение из-за какой-либо ошибки (в аппаратуре
или программе).


while( device_ready() == 0 ) reset_watchdog_timer();
Если функция device_ready всегда будет возвращать ноль, то мы
бесконечное время будем сбрасывать сторожевой таймер, и система бу-
дет всегда находиться в состоянии сбоя.
Нужно заметить, что в большинстве микроконтроллеров реализована
самая простая схема работы сторожевого таймера. Для её нормальной работы
нужна дополнительная, сложная программная обработка. Ещё одним не-
удобством простой схемы сторожевого таймера является выработка аппа-
ратного сигнала рестарта (RESET). В большинстве случаев гораздо кор-
ректнее производить повторную инициализацию или рестарт одной или не-
скольких взаимосвязанных частей системы, а полный горячий рестарт
осуществлять только при каких-либо фатальных сбоях. 


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   13




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет