ESP12F работает неопределенно долго, а затем застревает в неустранимом аппаратном "загрузочном цикле"WDT?

У меня есть скетч, работающий на нескольких модулях ESP12F (AiThinker). Они могут работать в течение нескольких месяцев подряд, могут быть циклически включены, могут перемещаться и т. Д. Это сложный скетч с несколькими частями и все еще использует ядро 2.4.2.

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

При сбросе неисправного устройства в отладочный порт на 74880 выводится следующее:

ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
~ld

Я думаю, что это приравнивается к:

  • Сброс внешнего пина или пробуждение от глубокого сна
  • Загрузка с флэш-памяти
  • SDIO High Speed V2 IO / UART1 (я так и не смог найти никакого объяснения тому, что это на самом деле означает, и многие посты рекомендуют по существу игнорировать!)

Примерно через 1,5 секунды на дисплее 74880 печатается следующее:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
~ld

Единственная разница здесь, как мне кажется, заключается в том, что (3,7) изменилось на (3,6), что приравнивается к:

  • SDIO Low Speed V1 IO / UART1 (опять же, понятия не имею, что это значит)

После этого каждые 5,5 секунды (примерно) печатается следующее, на этот раз на 115200:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
~ld

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

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

Никакого последовательного вывода из моего настоящего скетча никогда не видно. Это, наряду с 5,5-секундным циклом, заставляет меня думать, что аппаратный сторожевой пес запускает и даже не позволяет моему скетчу работать. Это звучит правильно?

В настоящее время это, по-видимому, затрагивает около 5 из 50 устройств. Большинство счастливо бегут без оглядки. Пораженные устройства могут быть перепрошиты, на первый взгляд успешно, и будут работать так, как они должны, но примерно через 5-10 циклов питания они снова попадают в этот цикл. Это похоже на то, что оборудование было постоянно повреждено и никогда не может быть положено снова!

Кто-нибудь видел такое поведение раньше? Каковы мнения людей о том, что могло стать причиной этого? Может ли плохой код навсегда испортить аппаратное обеспечение так, как я думаю, что вижу?

, 👍1