Es difícil argumentar que el reloj interno del perro guardián interno es en realidad independiente de todos los otros relojes y siempre funciona como debería.
Por lo tanto, para la certificación, suele ser mucho más fácil colocar un perro guardián externo en la pizarra y decir: mire, ahí está nuestro perro guardián, debe ser activado por el MCU en ese intervalo, que es más corto que nuestro tiempo para fallar, por lo que nuestro El dispositivo es seguro como lo definimos.
Para abordar algunos de los comentarios:
"y siempre corriendo como debería" - Buen punto. Puede ser mas dificil
probar que tu software inicializa correctamente el watchdog interno
bajo todas las circunstancias que simplemente empleando un chip guardián y refiera
a su hoja de datos.
Esto generalmente se prueba mediante una prueba de inserción de fallas, que usted presenta a un cuerpo de la certificación. Así que les muestra el código donde ocurre su inicialización y dónde ocurre la activación del perro guardián. Por lo general, le piden que modifique el código de tal manera que se detenga la activación del perro guardián después de que haya transcurrido cierto tiempo y verifique si el controlador se reinició correctamente.
O para probar que su código no contiene un error que accidentalmente
desactiva el watchdog interno.
Al menos en algunos controladores, el watchdog se llama independiente y tiene su propia fuente de reloj y no puede ser desactivado por medios de software, solo un reinicio del controlador desactivará el watchdog. Al menos en teoría, es fácil demostrar que no puede detenerlo con software, pero es difícil demostrar que el reloj es verdaderamente independiente y no se detendrá bajo EMI.
O para demostrar que su código no se ejecuta de forma ininterrumpida, reinicie el
Perro guardián externo tan rápido como pueda. Problema resuelto. ;-)
En ese caso, utiliza un watchdog de ventana que debe activarse a ciertos intervalos y si no lo hace (activarlo con demasiada frecuencia o menos) reiniciará el circuito. El STM32 con el que estoy trabajando tiene un control interno de la ventana, pero se ejecuta desde PCLK1 derivado del reloj principal, por lo que no creo que sea tan útil como un control externo con su propia fuente de reloj.
O que algún genio no pone la rutina del servicio de vigilancia dentro de un
el temporizador ISR, por lo que el código principal puede fallar, pero la interrupción sigue activándose &
servicio al perro guardián perfectamente ...
Eso es cierto, pero espero que una revisión ponga a ese genio nuevamente en su silla, pero cuando empecé, esa fue mi primera idea también: D. Durante los procesos de certificación en los que he participado, siempre han echado un vistazo a la parte de vigilancia del software.