Alguns produtos devem atender aos requisitos de segurança, determinados pelo fabricante ou para atender aos padrões internacionais de segurança, como IEC 60730-1, ou o UL1998 mais antigo, ainda em uso nos EUA. A funcionalidade de watchdog interno em qualquer microcontrolador pode ou não ser adequada para ser usada. Um WDT externo pode ser usado em combinação com o WDT interno em alguns casos.
Certos microcontroladores, como a série Hercules da TI, levam muito a sério as aplicações críticas do sistema de segurança e são mais propensas a atender a requisitos rigorosos; no entanto, podem não ser apropriadas para aplicações sensíveis aos custos.
Normalmente, o WDT é uma das várias maneiras de reduzir a probabilidade de uma falha causar danos catastróficos à propriedade ou ferimentos à vida. Outras coisas, como proteção de memória para detectar acesso inesperado à memória do MCU ou busca de programas a partir da memória não utilizada, geralmente são usadas em conjunto com um WDT.
Exemplos de produtos baratos que desempenham funções críticas de segurança são subsistemas automotivos, controladores de portas de garagem e controladores de ignição a gás (gás natural ou propano) usados em fornos, secadores e aquecedores de água. É claro que muitos produtos médicos e aeroespaciais também são críticos para a segurança, mas pode haver espaço suficiente para redundância e outras abordagens. Em alguns casos, pode não haver um estado seguro facilmente alcançável - por exemplo, em uma aeronave.
Idealmente, o timer do watchdog é muito simples, independente do MCU (por exemplo, ele deve ter sua própria fonte de relógio e talvez um monitor de relógio), não pode ser definido (por software) por um tempo maior do que causaria danos por qualquer erro de software, e tornará o sistema em um estado seguro se não for "acariciado" a tempo, com um tempo limite ou em uma janela, para que redefinições muito frequentes possam ser detectadas. Por exemplo, um WDT em um aplicativo de controle térmico pode ser definido para alguns segundos, porque nenhum dano é possível se o microcontrolador travar por esse período de tempo.
O WDT é mais útil como parte de uma abordagem em nível de sistema para confiabilidade e segurança.
É difícil argumentar que o relógio interno do cão de guarda interno é realmente independente de todos os outros relógios e está sempre funcionando como deveria.
Portanto, para a certificação, geralmente é muito mais fácil colocar um cão de guarda externo na placa e dizer: olha, existe o nosso cão de guarda, ele deve ser acionado pelo MCU nesse intervalo, que é menor do que o tempo de falha, portanto nosso dispositivo está seguro como o definimos.
Para abordar alguns dos comentários:
Isso geralmente é comprovado por um teste de inserção de falha, que você apresenta a um organismo de certificação. Então, você mostra o código onde sua inicialização ocorre e onde o acionamento do watchdog acontece. Eles geralmente solicitam que você modifique o código de forma que o acionamento do watchdog seja interrompido após um certo tempo e verifique se o controlador foi redefinido corretamente.
Pelo menos em alguns controladores, o watchdog é chamado de independente e tem sua própria fonte de clock e não pode ser desativado por meios de software, apenas uma redefinição do controlador desativará o watchdog. Pelo menos em teoria - é fácil mostrar que você não pode pará-lo por software, mas é difícil provar que o relógio é verdadeiramente independente e não para sob EMI.
Nesse caso, você usa um watchdog de janela que deve ser acionado em determinados intervalos e, se não o fizer (acioná-lo com muita frequência ou menos), redefinirá o circuito. O STM32 com o qual estou trabalhando possui um watchdog de janela interno, mas ele é executado a partir do PCLK1, que é derivado do clock principal, portanto, não acho que seja tão útil quanto um watchdog externo com sua própria fonte de clock.
Isso certamente é verdade, mas espero que uma revisão coloque esse gênio de volta em sua cadeira - mas ei, quando eu comecei, essa foi minha primeira ideia também: D. Durante os processos de certificação em que participei, eles sempre deram uma olhada na parte de vigilância do software.
fonte
Os cães de guarda incorporados aos microcontroladores têm propriedades particulares que significam que eles próprios podem falhar de maneiras que um cão de guarda externo diferente pode não ter.
Por exemplo, um design comum é usar um cronômetro de vigilância executando um oscilador RC de baixa potência. Esse oscilador pode falhar. Um cão de guarda externo baseado na descarga do capacitor em vez de um oscilador ainda pode reiniciar o microcontrolador em muitos casos.
Outro motivo é que o cão de guarda externo pode ser mais robusto. Um microcontrolador pode operar apenas de forma confiável em uma certa faixa de tensão, e ser um dispositivo complexo pode estar sujeito a travamento de uma maneira que torna seu próprio cão de guarda interno ineficaz. Um cão de guarda externo pode ter uma faixa de fornecimento aceitável mais ampla e menos propenso a problemas quando sujeito a ruído elétrico.
Watchdogs externos também oferecem uma faixa muito maior de valores de tempo limite. Um microcontrolador que uso com freqüência, o XMEGA, tem um tempo limite máximo de cerca de 7 segundos. Para um produto, adicionei um watchdog externo adicional com tempo limite de 2 horas. Isso me permitiu acordar o microcontrolador uma vez por hora e não a cada poucos segundos, reduzindo o consumo de energia em um dispositivo alimentado por bateria.
Cães de guarda externos às vezes têm várias funções, como um temporizador e um monitor de tensão / controle de redefinição. Novamente, eles também podem ter uma potência menor do que o sistema embutido de um microcontrolador.
Uma outra vantagem interessante de um cão de guarda externo é que ele pode ser usado para redefinir outros dispositivos além do microcontrolador. Por exemplo, ele pode controlar o pino de habilitação de um regulador de tensão, desligando um circuito inteiro para redefinir vários dispositivos ao mesmo tempo. Usando uma lógica simples, o sinal de redefinição do watchdog de várias fontes pode ser combinado, permitindo que o watchdog exija que vários dispositivos o redefinam continuamente.
fonte
Certas certificações, como a UL , podem exigir proteção contra dois pontos de falha. Um cronômetro externo de vigilância seria considerado proteção contra um primeiro ponto de falha, o microcontrolador.
fonte
Um cão de guarda não é realmente diferente nesse aspecto de qualquer outro periférico interno encontrado em um MCU. Os MCUs vêm com temporizadores, RTCs, ADCs, EEPROM e redefinir controladores, mas todas essas funções também existem como ICs separados. Se os blocos internos disponíveis não atenderem aos seus requisitos, você deverá usar os externos. Ou você pode tentar encontrar um MCU com todos os blocos certos, que podem não existir ou ser muito caros ou difíceis de transportar seu código.
fonte
Um watchdog é um timer e ativa sua saída quando o IC perde um pulso de entrada por um período.
É um componente básico e pode ser usado para qualquer aplicação.
Portanto, eles podem ser usados em qualquer aplicativo, por exemplo, alterar o roteamento de dados no modo à prova de falhas . Quando o relógio do microcontrolador falha, não podemos desativar algumas saídas críticas.
Um watchdog externo não está relacionado ao domínio complexo do clock do microcontrolador, e alguns deles têm seu tempo de carga RC analógico ou clock interno.
Os circuitos digitais na radiação podem acionar as saídas quando a carga atinge seus flip-flops. Mas alguns circuitos analógicos são mais seguros porque integram carga em um capacitor e é seguro quando o integramos.
fonte