Настройка сторожевого таймера¶
Документация SiFli-SDK описывает сторожевые таймеры на двух уровнях: аппаратные блоки, доступные через HAL, и драйвер RT-Thread, используемый приложениями. Названия экземпляров, область сброса и варианты тактирования зависят от семейства; сверьтесь с таблицей и подтвердите поведение по конфигурации и документации целевой версии SDK.
Таблица: документированные возможности сторожевых таймеров по семействам
| Семейство | Возможности watchdog по HAL | Тактирование по руководству HAL | |---|---| | SF32LB52x | Руководство HAL описывает отдельные watchdog для HCPU и LCPU, которые могут вызвать прерывание или сбросить свою подсистему, а также системный IWDT, сбрасывающий весь чип. | В описании счётчика используется тактирование 32K; отдельная опция выбора тактового источника для 52x не указана. | | SF32LB55x | WDT1 для HCPU и WDT2 для LCPU могут вызывать прерывания; аппаратный сброс ограничен соответствующей подсистемой. Системный IWDT не вызывает прерываний, но может сбросить весь чип. | Можно выбрать RC10K или 32K LXT. | | SF32LB56x / SF32LB58x | Согласно руководству HAL, WDT1/WDT2 дополнительно могут сбросить весь чип. | Используется RC10K, а не низкочастотный тактовый источник 32K. |
Область применения руководства по watchdog для RT-Thread
Руководство по использованию watchdog опубликовано по пути sf32lb52x, однако в тексте явно указано SF32LB55X. Приведённые ниже таймаут по умолчанию 30 секунд, обслуживание из потока IDLE, поведение в режимах сна и последовательность сброса на уровне приложения относятся к описанной там конфигурации 55x, а не являются общей гарантией для всех семейств SF32. Сверяйте их с документацией целевого семейства и сформированной конфигурацией.
Включение и настройка сторожевого таймера¶
В каталоге проекта запустите sdk.py menuconfig и включите сторожевой таймер в настройках драйверов устройств RT-Thread. Название пункта меню может различаться в разных версиях SDK; сверьтесь с документацией для целевого семейства и перед сборкой проверьте созданный файл rtconfig.h.
В указанном руководстве по использованию watchdog показаны две отдельные настройки:
RTOS → On-chip Peripheral Drivers → Enable Watchdog Timerвключает аппаратный сторожевой таймер микросхемы.RTOS → RT-Thread Components → Device Drivers → Using Watch Dog device driversвключает драйвер RT-Thread.
Для конфигурации 55x, описанной в указанном руководстве, задокументирован таймаут по умолчанию 30 секунд. В меню драйвера параметр (30) Watch Dog timeout (NEW) позволяет выбрать другое значение. Проверьте значение по умолчанию для целевого семейства в menuconfig и сохраните сформированную конфигурацию вместе с образом прошивки.
На рисунках показаны расположение пункта меню и поле таймаута из указанного руководства. Путь URL и семейство, названное в тексте, не совпадают, поэтому используйте рисунки только как иллюстрацию; фактические путь к меню и значение по умолчанию проверьте по выводу menuconfig своего проекта.


Правила обслуживания сторожевого таймера¶
Система обслуживает сторожевой таймер из потока IDLE RT-Thread. Если ни один поток приложения не выполняется непрерывно дольше заданного таймаута, дополнительный код в приложении не требуется.
Если высокоприоритетный поток должен работать непрерывно дольше таймаута, обслуживайте сторожевой таймер из этого потока с помощью:
Не добавляйте безусловный цикл обслуживания сторожевого таймера, который маскирует зависание планировщика или взаимную блокировку. Точка обслуживания должна подтверждать, что контролируемая задача выполняет свою работу без зависания.
Работа в режимах сна и поведение при сбросе¶
- При переходе в
StandbyилиHibernateсторожевой таймер отключается и снова включается после выхода из режима сна. - В остальных режимах сна сторожевой таймер продолжает работать: систему нужно вывести из сна и обслужить таймер до истечения таймаута.
- HCPU использует системный сторожевой таймер. При истечении таймаута перезапускается весь чип.
- LCPU использует сторожевой таймер подсистемы LCPU. При истечении таймаута сначала возникает прерывание, а обработчик прерывания инициирует программный перезапуск всего чипа.
Порядок проверки¶
- Запишите семейство чипа, ревизию SDK, таймаут, компонент, отвечающий за обслуживание сторожевого таймера, и режим сна.
- Убедитесь, что при штатной нагрузке выполнение доходит до предусмотренной точки обслуживания сторожевого таймера.
- Намеренно остановите обслуживание и проверьте, какие части системы сбрасываются и как проходит последующая загрузка.
- Повторите проверку во всех поддерживаемых режимах сна, особенно в
StandbyиHibernate. - Сохраните наблюдения после сброса и диагностические данные при загрузке вместе с результатами проверки восстановления продукта.
Официальные источники¶
- Руководство по использованию watchdog (английская версия; опубликовано по пути SF32LB52x, в тексте указано SF32LB55X)
- Руководство по использованию watchdog (китайская версия; тот же путь SF32LB52x, в тексте указано SF32LB55X)
- Руководство HAL WDT для SF32LB52x (английская версия)
- Руководство HAL WDT для SF32LB55x (китайская версия, содержит сравнение с 56x/58x)
Следующие отдельные руководства по watchdog для конкретных семейств проверить не удалось: sf32lb55x/app_note/watchdog.html, sf32lb56x/app_note/watchdog.html и sf32lb58x/app_note/watchdog.html. Поиск и прямые попытки открыть эти страницы не дали однозначного результата; это не доказывает, что эти пути возвращают ошибку 404.
Последнее обновление: