Solíamos usar firmas Watchdog en nuestras aplicaciones de control.
Básicamente, solíamos asignar una memoria reservada en RAM (sin inicializar) y solíamos almacenar las firmas de vigilancia.
Al encenderse, el sistema verifica la firma del perro guardián y, en base a eso, solíamos averiguar si se trata de un reinicio del perro guardián o un reinicio normal.
Mi pregunta es, ¿qué memoria es mejor para almacenar las firmas de vigilancia, ya sea RAM o Flash?
El uso de firmas de almacenamiento de memoria para determinar si un temporizador de vigilancia es lo que ha causado su último reinicio es un esquema que debe evitarse a toda costa. Ese esquema está plagado de problemas y no proporciona un esquema infalible.
Aquí hay algunos factores clave a considerar aquí que conducen a que este sea un enfoque problemático. (Hay otros también, así que analice cuidadosamente).
1) Las firmas almacenadas en la RAM pueden o no ser legítimas después de un reinicio del ciclo de energía porque la RAM puede mantener su contenido durante un período de tiempo después de un ciclo de energía.
2) Es probable que un reinicio del perro guardián se deba a un error falso en algún lugar de la electrónica del hardware. ¿Cómo puede estar seguro de que esto no ha comprometido el almacenamiento de las firmas?
3) El almacenamiento de firmas en FLASH u otra memoria no volátil es problemático debido al hecho de que el tiempo de espera/restablecimiento del perro guardián podría ocurrir durante el tiempo en que se almacenan dichas firmas.
Es muy superior configurar el hardware de su sistema con una lógica que capture el "motivo de reinicio" en flop-flops especiales o bits de registro que el software puede sondear en su secuencia de inicio para determinar si el reinicio se debió a un tiempo de espera del perro guardián. Si el procesador de su sistema no tiene esto integrado en el chip, considere sustituirlo por otro procesador que sí incluya esta capacidad. En los casos en que el perro guardián se implemente fuera del controlador, considere agregar un circuito externo simple que pueda proporcionar el "motivo de reinicio" al procesador a través de un pin de E/S.
Si no necesita retener la información durante un ciclo de encendido, la memoria RAM es mejor, especialmente si su firma es algo que se reescribe con frecuencia y puede crear problemas de desgaste de Flash. La única otra preocupación que podría tener es si la estabilidad de la fuente de alimentación es una preocupación y luego un transitorio de energía podría borrar su firma.
badz
miguel karas