Sobol card watchdog timer was triggered system halted что делать
AVR Урок 53. Watchdog Timer (WDT). Часть 1
Уже более года мною не публиковалось уроков по контроллерам AVR. На это были различного рода причины.
Во-первых, я считал, что основные виды периферии и прочих составляющих данного контроллера нами уже изучены.
Во-вторых, у меня не было и нет нормального программатора, который бы виделся в среде разработки полноправно. Уроки без этого снимать можно, но готовить проекты для них, поверьте, очень тяжело.
В-третьих, с выходом более современных контроллеров интерес к данным контроллерам упал, хоть и незначительно, но всё же это есть.
Несмотря на это, я всё же, взвесив все «за» и «против», всё же решил ещё раз попытать счастья и выложить пару уроков (пока пару, а там посмотрим, как дело пойдёт) по данным микроконтроллерам.
Что же всё-таки сподвигло меня на данный шаг?
Во-первых, многочисленные просьбы посетителей моего ресурса, а также просьбы в личных сообщениях.
Во-вторых, новый хозяин данного семейства контроллеров Microchip, включил эти контроллеры в свою среду разработки MPLAB X, что позволит нам теперь обойтись сразу на два семейства одной средой разработки.
В-третьих, также выявились определённые темы, которые не были освещены в моем предыдущем, как я считал до этого, вполне исчерпывающем курсе занятий по контроллерам AVR.
И вот одним из неизведанных ещё нами модулей оказался модуль Watchdog Timer (WDT), который, как оказалось, много где используется и выполняет очень важные роли в работе программ. Тем более, меня ранее многие просили сделать по нему урок, но я либо недопонимал ценность данной периферии, либо был увлечён чем-то другим.
Вот и настало время наконец-то восполнить данный пробел.
Watchdog Timer (WDT) – это сторожевой таймер (а если перевести дословно, «сторожевой пёс»), который представляет собой аппаратно-реализованную схему контроля над зависанием системы. Это таймер, который периодически сбрасывается контролируемой системой. Если вдруг сброса не произошло за определённый интервал времени после предыдущего сброса данного таймера, то происходит принудительная перезагрузка системы (в нашем случае микроконтроллера).
В каких конкретных случаях мы можем применить данный таймер?
Например, мы ждём ответа от какой-нибудь шины (например I2C или ещё какой-то) в виде отслеживания состояния определённого бита регистра. И вдруг произойдёт кратковременное отсоединение провода этой шины. После этого скорей всего произойдёт зависание программы, так как в шине будет сбой, и даже если что-то после и придёт от присоединённого узла, то мы вряд ли уже это отследим изменением состояния бита. Желательно, чтобы после какого-то таймаута система перезагрузилась. Тут-то и приходит нам на помощь WDT, который установлен на определённый интервал. Команду на перезагрузку сторожевого таймера мы расположим в нашем коде после того, как мы дождёмся отклика от шины. А если мы так его и не дождёмся, то мы не дойдём до команды перезагрузки WDT и через заветный интервал времени система будет перезагружена. После этого произойдёт заново инициализация шины и всё будет опять работать нормально.
Понятно, что данная ситуация подходит только для случая, когда нам приходится не слишком долго ждать отклика от устройств, то есть именно тогда, когда у нас существует какой-то непрерывный процесс, в котором есть возможность ситуации сбоя. Таких примеров можно придумать много, поэтому Watchdog Timer очень много где применяется.
При работе с таймером в нашем коде мы не будем напрямую работать с его регистрами, так как там ещё надо проделывать очень много различных подготовительных мероприятий. Для этого существует отличная библиотека wdt.h, которая находится в стандартном комплекте для AVR и не требует дополнительного подключения откуда-то. Но тем не менее о том, как именно устроен сторожевой таймер в контроллере ATMega328, которым мы и будем сегодня пользоваться, мы всё же поговорим.
Таймер питается от отдельного генератора, который вместе с ним входит в логику перезагрузки контроллера
А вот это диаграмма сброса контроллера по истечении интервала времени
Кроме того, что мы можем сбросить сторожевой таймер где-то в коде, мы можем также и отследить окончание интервала времени по прерыванию, которое надо включить отдельно.
WDT, как и было указано выше, работает от отдельного генератора.
Также следует отметить, что диапазон интервалов данного таймера не бесконечен.
Давайте посмотрим блок-схему WDT
На рисунке мы видим, что после генератора на 128 килогерц, сигнал проходит на предделитель, который содержит 10 различных выходов с различным коэффициентом деления. Предделитель настраивается с помощью битов WDP3:WDP0 регистра WDTCSR. Таким образом, интервал времени работы WDT лежит в диапазоне от 15 милисекунд до 8 секунд.
Также мы видим, что с помощью бита WDIE мы можем разрешить прерывания от сторожевого таймера и затем попасть в обработчик, отслеживая состояние бита WDIF. Включается таймер с помощью бита WDE.
Вот он – управляющий регистр сторожевого таймера
Хоть мы уже и говорили о битах данного регистра выше, но всё же давайте все их рассмотрим подробно, их не так и много, так как у таймера всего один регистр
WDIF (Watchdog Interrupt Flag): флаг прерывания. Устанавливается в 1 в случае истечения интервала времени таймера. Сбрасывается аппаратно.
WDIE (Watchdog Interrupt Enable): бит разрешения прерываний от таймера. если установлен в 1, то прерывания разрешены, если в 0 – запрещены.
Существует таблица зависимости от состояния бетов WDE, WDIE, а также фьюза WDTON
Из данной таблицы очень интересно то, что для того, чтобы работать с прерываниями от сторожевого таймера, его не обязательно включать. Достаточно лишь разрешить от него прерывания. Только если не включать, то прерывания работать будут, но таймер при этом не будет перезагружать систему.
WDP2:WDP0 (Watchdog Timer Prescaler): биты, устанавливающие коэффициент деления предделителя сторожевого таймера.
Вот таблица возможных комбинаций данных битов
Здесь также даны сами интервалы в единицах времени.
WDCE (Watchdog Change Enable): бит изменения, который должен быть предварительно включен перед тем, как мы соберёмся внести изменения в предделитель с целью изменения коэффициента деления либо для отключения таймера путём занесения в бит WDE значения 0. Сбрасывается аппаратно после четырех тактов.
WDE (Watchdog System Reset Enable): бит включения таймера, а вернее бит включения режима перезагрузки системы по истечению интервала времени таймера WDT.
Ну вот, я думаю и всё насчёт теории по сторожевому таймеру. Если что-то пропустил, то исправим это в процессе сочинения кода.
Код наш выполнять будет следующие задачи.
У нас, помимо WDT, будет также работать ещё таймер TIM1, данный таймер будет работать по совпадению, следовательно в обработчик прерываний от него мы будем попадать через определённое время периодично. В обработчике таймера мы будем периодично включать 10 ножек различных портов, а состояние их на какой-то момент мы будем определять по светодиодам, которые мы к ним подключим. Вернее, мы подключим светодиодную планку с 10-ю светодиодами, не забывая конечно о токоограничивающих резисторах, которые я на всякий случай подключил на 680 Ом, при этом светодиоды светятся вполне ярко. В начале программы мы запустим наш сторожевой таймер WDT и зададим ему определённый интервал времени срабатывания. В процедуре обработки прерываний от таймера 1 мы будем своевременно сбрасывать сторожевой таймер, поэтому, если всё у нас будет нормально с ходом программы, то система у нас будет работать и не перезагрузится.
А для того, чтобы проверить, перезагрузится ли наш WDT по истечению интервала, мы сэмулируем ситуацию, что наш таймер перестанет работать. Для этого мы подключим кнопку к контакту INT0 и обработаем от неё внешнее прерывание, в обработчике которого мы запретим прерывания от нашего таймера. Светодиоды, соответственно перестанут бежать, тем самым сигнализируя нам о том, что наш таймер 1 «сломался». Поэтому сторожевой таймер не перезагрузится, тем самым перезагрузит нашу систему и весь процесс у нас начнётся заново.
В качестве контроллера для урока мы возьмём контролер ATMega328P, расположенный на плате Arduino Nano, к которой подключим обычный USB-программатор через разъём ISP. Вставим нашу плату в макетную плату, подведём к ножке PD2 (INT0) кнопку, а также от ножек D3-D12 (ножки портов PD3:PD7, PB0:PB4) подключим аноды светодиодов планки, а катоды через токоограничивающие резисторы подключим к общему проводу
Проект мы создадим в среде программирования MPLAB X, с которой мы постоянно работаем с микроконтроллерами PIC, так как у данных контроллеров владелец один и тот же, то нет смысла использовать несколько сред для разработки. Как установить данную среду разработки, показано здесь.
Создание проекта по ссылке можно не смотреть, мы его все равно сейчас будем создавать заново.
Запустим среду программирования MPLAB X и запустим создание проекта с помощью следующей кнопки
Выберем «Standalone Project» и идём далее
На следующем шаге выберем наш контроллер, перед этим отфильтровав контроллеры по семейству для удобства выбора, и движемся далее
На следующем шаге в качестве программатора выберем Simulator и идём далее
На следующем шаге выберем компилятор и идём дальше
Дадим имя нашему проекту и жмём «Finish»
В дереве проекта в ветке Source Files добавим новый файл main.c с помощью контекстного меню на данной ветке
Исправим имя файла и нажмём «Finish»
Файл main.c создан, чуть позже мы его исправим немного.
А пока создадим ещё заголовочный файл main.h аналогичным образом, только выбрав в контекстном меню на ветке «Header Files» и затем выбрав соответствующий пункт
Для нормального функционирования функции задержки зайдём в свойства проекта и откроем там настройки компилятора, в которых выберем настройку оптимизации
Оставим уровень оптимизации 0 и установим чекбокс на пункте Debug
Ошибка истечения времени сторожевого таймера в Windows 10 [FULL GUIDE]
Ошибки «Синего экрана смерти» – одна из самых серьезных ошибок, с которыми вы сталкиваетесь в Windows 10. Эти ошибки встречаются редко, но они могут быть довольно проблематичными, поэтому важно знать, как исправить ошибку CLOCK_WATCHDOG_TIMEOUT.
Как я могу исправить ошибку CLOCK_WATCHDOG_TIMEOUT BSOD в Windows 10?
Clock_watchdog_timeout – довольно распространенная ошибка BSOD, и, говоря об ошибках, пользователи сообщают о некоторых типичных проблемах:
Решение 1. Обновите драйверы
Ошибки Blue Screen of Death часто бывают вызваны устаревшими или неисправными драйверами, и вы можете легко решить эту проблему, загрузив и установив последние версии драйверов.
Обновление драйверов довольно просто, и вы можете сделать это, посетив веб-сайт производителя оборудования и загрузив последние версии драйверов для вашего устройства. Имейте в виду, что вам, возможно, придется обновить все драйверы на вашем компьютере, чтобы исправить эту ошибку.
Если вы хотите, чтобы ваш ПК с Windows 10 был стабильным, важно обновить все ваши драйверы. Загрузка драйверов вручную – не лучший способ обновления драйверов, но вы можете использовать это программное обеспечение для обновления драйверов, чтобы обновить все драйверы одним щелчком мыши.
Знаете ли вы, что большинство пользователей Windows 10 имеют устаревшие драйверы? Будьте на шаг впереди, используя это руководство.
Решение 2 – Удалить проблемные приложения
Сторонние приложения часто могут вызывать ошибки такого типа, и для того, чтобы исправить ошибку CLOCK_WATCHDOG_TIMEOUT, вам придется найти и удалить проблемное приложение с вашего ПК.
Эти ошибки часто бывают вызваны антивирусом, поэтому рекомендуется временно удалить антивирусное программное обеспечение.
Удаление антивирусного программного обеспечения является простым, но мы должны упомянуть, что вам следует использовать специальный инструмент для удаления, чтобы полностью удалить все файлы и записи реестра, связанные с вашим антивирусным программным обеспечением.
У большинства антивирусных компаний эти инструменты доступны для скачивания на их веб-сайте, и вы можете скачать их бесплатно.
Для пользователей Norton у нас есть специальное руководство о том, как полностью удалить его с вашего ПК. Существует также аналогичное руководство для пользователей McAffe.
Если вы используете какое-либо антивирусное решение и хотите полностью удалить его с ПК, обязательно ознакомьтесь с этим удивительным списком лучших программ для удаления, которые вы можете использовать прямо сейчас.
Помимо антивируса, многие пользователи сообщали, что Asus AI Suite может вызвать появление этой ошибки, поэтому мы советуем вам удалить это средство с вашего ПК.
Все эти инструменты полностью совместимы с Windows 10, и они не вызовут никаких новых проблем.
Хотите заменить свой антивирус на лучший? Вот список с нашими лучшими выборами.
Решение 3 – Обновите свой BIOS
Обновление BIOS – это сложная процедура, которая устанавливает новую прошивку для вашей материнской платы, открывая новые функции.
Пользователи сообщили, что вы можете исправить ошибку CLOCK_WATCHDOG_TIMEOUT Blue Screen of Death, обновив BIOS, но прежде чем вы решите обновить BIOS, обязательно ознакомьтесь с руководством по материнской плате для получения подробных инструкций.
Обновление BIOS может быть потенциально опасным, если вы делаете это неправильно, поэтому будьте особенно внимательны в процессе обновления BIOS.
Обновление BIOS кажется пугающим? С помощью этого удобного руководства упростите задачу.
Решение 4 – Отключить C1-6 в BIOS
Немногие пользователи сообщили, что им удалось исправить эту ошибку, отключив определенные настройки в BIOS. По их словам, отключение C1-6 в BIOS исправило ошибку BSOD, поэтому обязательно попробуйте это.
Чтобы узнать, как получить доступ к BIOS, а также как найти и отключить эти настройки, мы настоятельно рекомендуем вам проверить руководство по материнской плате.
Решение 5 – Сброс BIOS
Как мы уже упоминали ранее, некоторые настройки BIOS могут вызвать ошибку CLOCK_WATCHDOG_TIMEOUT Blue Screen of Death, и самый простой способ исправить эти проблемы – сбросить настройки BIOS.
Сброс BIOS установит все настройки на значение по умолчанию, тем самым исправляя эту ошибку.
Доступ к BIOS кажется слишком сложной задачей? Давайте поможем вам с помощью этого удивительного руководства!
Решение 6 – Удалить настройки разгона
Разгон вашего оборудования может дать вам лучшую производительность, но разгон также сопряжен с определенными рисками. Иногда ваш компьютер не может обработать определенные настройки разгона, и вы получите ошибку BSOD, такую как CLOCK_WATCHDOG_TIMEOUT.
В худшем случае разгон может привести к сбою и необратимому повреждению компонентов оборудования, если вы не будете осторожны, поэтому мы настоятельно рекомендуем вам быть особенно осторожными при разгоне компьютера.
Если ваш компьютер разогнан, мы советуем вам удалить настройки разгона и проверить, исправляет ли это ошибку.
Решение 7. Обновите прошивку SSD и отключите LPM
Ошибка CLOCK_WATCHDOG_TIMEOUT может быть вызвана устаревшей микропрограммой SSD, поэтому, если вы используете SSD, мы рекомендуем вам обновить микропрограмму.
Обновление прошивки на вашем SSD может быть рискованным, поэтому вы должны быть очень осторожны и делать резервные копии ваших файлов. В дополнение к обновлению вашей прошивки, немногие пользователи предлагают отключить LPM, так что вы можете сделать это.
Вы не знаете, как сделать резервную копию своих данных? Прочитайте это простое руководство и узнайте, как вы можете сделать это как профессионал.
Решение 8 – Отключить C1E и Intel SpeedStep в BIOS
Немногие пользователи сообщили, что ошибка CLOCK_WATCHDOG_TIMEOUT вызвана определенными настройками в BIOS, поэтому мы советуем вам их отключить.
По словам пользователей, C1E и Intel Speedstep вызвали появление этой ошибки, поэтому, если у вас включены эти настройки в BIOS, мы советуем отключить их и проверить, устраняет ли это проблему.
Решение 9. Установите скорость своей оперативной памяти вручную и отключите функцию Asus Turbo в BIOS.
Иногда эта ошибка может быть вызвана тем, что вы не устанавливаете вручную скорость вашей оперативной памяти в BIOS. Чтобы узнать, как это сделать, обратитесь к инструкции к вашей материнской плате.
В дополнение к настройке скорости ОЗУ, пользователи также предлагают отключить функцию Asus Turbo, так что вы можете сделать это.
Решение 10. Отключите DVD-привод во время установки Windows 10
Несколько пользователей жаловались, что не могут установить Windows 10 из-за ошибки BSOD CLOCK_WATCHDOG_TIMEOUT. По-видимому, вы можете решить эту проблему, отключив дисковод SATA DVD во время процесса установки Windows 10.
После того, как вы отключите DVD-привод, вы сможете нормально установить Windows 10.
Если ваш DVD-привод отсутствует в Windows 10, ознакомьтесь с этим полезным руководством, которое поможет вам вернуть его.
Решение 11. Очистите корпус компьютера и проверьте его на наличие неисправного оборудования.
Многие ошибки BSOD могут быть вызваны сбоем оборудования, и чтобы исправить эту ошибку, вам нужно проверить, правильно ли работает ваше оборудование.
Немногие пользователи сообщили, что неисправная материнская плата может вызвать эту ошибку, но немногие пользователи сообщили, что неисправный процессор или видеокарта могут также вызвать эту ошибку, поэтому обязательно проверьте их в первую очередь.
Если ваше оборудование работает правильно, обязательно очистите корпус компьютера от пыли. Иногда пыль может засорить ваши вентиляторы или даже слоты, поэтому рекомендуется очищать ваш компьютер сжатым воздухом.
Решение 12. Установите последние обновления
Если на вашем компьютере появляется ошибка CLOCK_WATCHDOG_TIMEOUT, возможно, проблема в отсутствующих обновлениях. Иногда ваша версия Windows 10 может иметь определенные ошибки, которые мешают вашей системе и вызывают эту ошибку.
Однако вы можете легко решить эту проблему, обновив компьютер и установив последние обновления. Этот процесс автоматизирован в Windows 10, и Windows обычно автоматически загружает необходимые обновления в фоновом режиме.
Иногда определенные ошибки могут появляться время от времени, что может привести к пропуску определенных обновлений.Чтобы устранить эту проблему, рекомендуется проверять обновления вручную, выполнив следующие действия:
Теперь Windows проверит наличие обновлений и загрузит их в фоновом режиме. После загрузки обновлений они будут установлены, как только вы перезагрузите компьютер. После установки обновлений проверьте, сохраняется ли проблема.
Если вы не можете запустить приложение «Настройка», обратитесь к этой статье, чтобы решить эту проблему.
Не можете обновить Windows? Ознакомьтесь с этим руководством, которое поможет вам быстро их решить.
Решение 13 – Удалить проблемные обновления
Многие владельцы Ryzen сообщили об ошибке CLOCK_WATCHDOG_TIMEOUT на своем ПК. Похоже, что эта проблема вызвана проблемным обновлением, и для устранения проблемы необходимо найти и удалить проблемное обновление.
Это довольно просто, и вы можете сделать это, выполнив следующие действия:
Если удаление обновления решает проблему, необходимо предотвратить повторную установку этого обновления. Windows 10 автоматически установит отсутствующие обновления, что, скорее всего, приведет к повторному появлению проблемы.
Чтобы предотвратить повторную установку этого обновления, обязательно ознакомьтесь с нашим руководством по блокировке автоматических обновлений Windows.
CLOCK_WATCHDOG_TIMEOUT – это одна проблемная ошибка, которая в основном вызвана устаревшей микропрограммой или настройками BIOS, но вы можете легко исправить эту ошибку с помощью одного из наших решений.
Если у вас есть другие предложения или вопросы, не стесняйтесь оставлять их в разделе комментариев ниже, и мы обязательно их рассмотрим.
ЧИТАЙТЕ ТАКЖЕ
ПАК Соболь 3 — описание и установка
ПАК Соболь 3 — это электронный замок. Представляет собой плату, которая вставляется в сервер или рабочую станцию. Безопасность — нашё всё. Ставится сей продукт не по желанию админа, а если есть такие требования. Производитель: ООО «Код Безопасности».
Поставим на сервер HPE Proliant DL360 Gen10.
Ссылки
Зачем нужен
Преимущества
Тут я списал с листовки, добавив свои комментарии.
Возможности
Принцип работы
Модельный ряд
Размышления админа
Обратил внимание на фразу «Простота администрирования». Просто? Да, не сложно. Удобно? Нифига не удобно. Перезагрузился сервер — езжай в ЦОД. Нет нормальных средств удалённой двухфакторной аутентификации.
Контроль целостности реестра — сомнительная штука. Да, контролирует. Винда обновилась — поездка в ЦОД. Винду вообще небезопасно оставлять без обновлений, а Соболь этим обновлениям мешает.
Случайная перезагрузка в результате сбоя ПО — поездка в ЦОД. Да, есть способы не ездить в ЦОД, но тогда смысл двухфакторки теряется. Ну, или сервер под столом держать.
Комплектация
Внешний вид
Установка
Устанавливаем в сервер.
Подключаем внешний считыватель для iButton.
Включаем сервер. Входим в BIOS и переключаем режим загрузки на Legacy.
Сохраняемся — перезагружаем сервер.
Обнаружено новое устройство. Рекомендую ребутнуться второй раз.
Для того чтобы Соболь сработал, система должна попытаться загрузиться. У меня сейчас на диске ничего нет, тогда монтирую ISO образ с инсталлятором ОС.
Соболь перехватывает управление.
И не разрешает загрузку.
Потому что он раньше на другом сервере стоял. Работает защита. Выключаем всё. Разбираем всё. Добираемся до джамперов на Соболе.
Снимаем джампер J0. Собираем всё.
Соболь перехватывает управление.
Соболь без джампера J0 переходит в режим инициализации. Выбираем «Инициализация платы».
Открывается окно «Общие параметры системы». Можно установить необходимые параметры. Нажимаем Esc.
Открывается окно «Контроль целостности». Можно установить необходимые параметры. Нажимаем Esc.
Ждём. Соболь любит тестировать датчик случайных чисел.
Производится первичная регистрация администратора. Да.
Указываем пароль. Enter.
Повторяем пароль. Enter.
Нас просят воткнуть ключ. Втыкаем первый из того что был в комплекте.
Предупреждение, что ключ отформатируется. Да.
Вы уверены? Винду напоминает. Да.
Создать резервную копию идентификатора администратора? Конечно, у нас же два ключа. Вынимаем первый ключ. Выбираем Да.
Втыкаем второй ключ.
Нам говорят, чтобы мы перемычку вернули обратно. Ок. Сервер выключается.
Добираемся до платы соболя и ставим обратно джампер на J0.
Грузимся в Legacy. Соболь перехватывает управление.
Нас просят воткнуть ключ. Втыкаем.
Нажимаем любую клавишу.
Выбираем «Загрузка операционной системы». Enter.
И вот теперь загрузка ОС началась. И так будет каждый раз при перезагрузке сервера.