Estou projetando um firmware STM32 bare-metal que deve detectar código travado/perdido e reinicializar. Minha abordagem é fazer com que cada um dos processos de base de interrupção (basicamente código orientado a interrupção) incremente sua própria variável global conforme é executado, então em uma tarefa de 'supervisor' de prioridade mais alta, verifique para garantir que cada variável global esteja mudando. Se alguma parou de mudar, então permita que o WDT reinicie a placa.
Isso parece uma abordagem sólida? Alguma ideia melhor?