Поддержка Watchdog

В MCom-03R единственным способом программной перезагрузки является срабатывание WDT0. При срабатывании WDT0 происходит сброс микросхемы (WDT0 останавливается).

В MCom-03R Buildroot настройка WDT0 выполняется:

  • SBL включает и устанавливает таймаут WDT0 в максимальное значение (2^31 тактовых циклов опорной частоты WDT0; WDT0 тактируется на частоте APB 99 МГц, таймаут составляет ~21 с).

  • U-Boot и Linux загружают драйвер WDT0 mcom03-wdt для настройки и периодического сброса WDT0 с помощью SiP-запросов в TF-A.

  • При выполнении команды reboot в Linux выполняется:

    • Linux отправляет SMC-вызов system-reset через Arm PSCI (Power State Coordination Interface) в TF-A, TF-A устанавливает таймаут WDT0 на ~2 с.

    • Linux-драйвер mcom03-wdt прекращает сбрасывать счётчик WDT0 и выполняется сброс микросхемы.

Примечание

ddrinit не сбрасывают счетчик сторожевого таймера.

Примечание

Отладка компонентов загрузки при включенном WDT0 может быть затруднена, в случае если отладчик приостанавливает работу MIPS RISC0, ARM CPU.

Примечание

Команда halt приводит к перезагрузке при включенном сторожевом таймере, после достижения установленного таймаута WDT0.

Примечание

Для отключения WDT0 в SBL использовать соответствующую опцию CMake. Для отключения таймера в U-Boot, Linux использовать опцию соответствующих файлов конфигурации defconfig компонентов.