Ainda estou procurando uma resposta para esta pergunta:
Por que enquanto os MCUs do stm32 têm um cão de guarda perfeito (quero dizer, cão de guarda da janela (WWDG)), existe um cão de guarda simples (cão de guarda independente (IWDG))?
Encontrei esta página que dizia:
A ST Microelectronics possui uma linha de dispositivos Cortex-M3. O M3 se tornou extremamente popular para dispositivos embarcados de gama baixa, e o STM32F da ST é representativo dessas peças (embora o WDT seja um complemento da ST e não espelha necessariamente as implementações de outros fornecedores). O STM32F possui dois mecanismos de proteção diferentes. Um "cão de guarda independente" é um belo design de baunilha que tem pouco a oferecer além da facilidade de uso. Mas o Window Watchdog oferece proteção mais robusta. Quando um cronômetro de contagem regressiva expira, uma redefinição é gerada, o que pode ser impedido recarregando o cronômetro. Nada de especial lá. Mas se a recarga acontecer muito rapidamente, o sistema também será redefinido. Nesse caso, "muito rapidamente" é determinado por um valor que um programa em um registro de controle.
Outro recurso interessante: ele pode gerar uma interrupção antes de redefinir. Escreva um pouco de código para capturar a interrupção e você pode executar alguma ação para, por exemplo, colocar o sistema em um estado seguro ou capturar instantâneos de dados para fins de depuração. A ST sugere usar o ISR para recarregar o cão de guarda - ou seja, chutar o cão para que não ocorra uma redefinição. Não siga os conselhos deles. Se o programa falhar, os manipuladores de interrupção poderão muito bem continuar funcionando normalmente. E usar um ISR para recarregar o WDT invalida todo o motivo de um cão de guarda de janela.
e isso :
A nova série de CPUs STM32F4 Cortex ™ -M4 da STMicroelectronics possui dois cães de guarda independentes. Um é executado a partir de seu próprio oscilador RC interno. Isso significa que todos os tipos de coisas podem entrar em colapso na CPU e o WDT ainda será acionado. Há também um "observador de janelas" (WWDT) que requer que o código faça cócegas com frequência, mas não com muita frequência. Essa é uma maneira muito eficaz de garantir que o código travado que grava aleatoriamente no mecanismo de proteção não cause cócegas no WDT e o WWDT possa gerar uma interrupção logo antes da redefinição ser confirmada.
ok, vamos dar uma olhada no manual de referência :
O STM32F10xxx possui dois periféricos de vigilância incorporados que oferecem uma combinação de alto nível de segurança, precisão de temporização e flexibilidade de uso. Os dois periféricos de vigilância (Independente e Janela) servem para detectar e solucionar problemas de funcionamento devido a falha do software e para acionar a redefinição do sistema ou uma interrupção (somente vigilância da janela) quando o contador atingir um determinado valor de tempo limite. O watchdog independente (IWDG) é controlado por seu próprio relógio dedicado de baixa velocidade (LSI) e, portanto, permanece ativo mesmo se o relógio principal falhar. O relógio do watchdog da janela (WWDG) é pré-calculado a partir do relógio do APB1 e possui uma janela de tempo configurável que pode ser programada para detectar um comportamento anormal da aplicação tardia ou precoce. O IWDG é mais adequado para aplicativos que exigem que o cão de guarda seja executado como um processo totalmente independente fora do aplicativo principal, mas têm restrições de precisão de tempo mais baixas. O WWDG é mais adequado para aplicativos que exigem que o cão de guarda reaja dentro de uma janela de tempo precisa.
O watchdog da janela é usado para detectar a ocorrência de uma falha de software, geralmente gerada por interferência externa ou por condições lógicas imprevistas, o que faz com que o programa aplicativo abandone sua sequência normal. O circuito watchdog gera uma redefinição do MCU após o término de um período de tempo programado, a menos que o programa atualize o conteúdo do contador de contagem regressiva antes que o bit T6 seja apagado. Uma redefinição de MCU também é gerada se o valor de 7 bits do contador descendente (no registro de controle) for atualizado antes que o contador descendente atinja o valor do registro da janela. Isso implica que o contador deve ser atualizado em uma janela limitada.
Como você pode ver, nenhum deles disse que Por que há dois cães de guarda. se eu perguntar: Quais são as diferenças entre os dois cães de guarda, você contará todos os recursos que pode ver acima e, se quiser comparar os dois, obviamente o cão de guarda de janelas (WWDG) será o vencedor! então Por que existem dois cães de guarda?
Quero saber que quando devo usar o IWDG e quando o WWDG?
e existe algum motivo para nos dizer Por que eles chamam o segundo vigia com esse nome -> "vigia de janelas"?