¿Firma de vigilancia en memoria Flash o RAM?

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?

Respuestas (2)

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.

Gracias por tu elaborada respuesta. Tengo una duda con respecto a su última oración "En los casos en que el perro guardián se implemente fuera del controlador, busque agregar un circuito externo simple que pueda proporcionar el" motivo de reinicio "al procesador a través de un pin de E / S. Si hago esto, Obtendré una indicación de estado, pero como el procesador se ha reiniciado todavía no tendré la indicación, ¿no?
@badz: mucho depende de cómo se implemente actualmente su hardware. Mi última oración se basó en un sistema en el que el reinicio de encendido (POR) y el temporizador de vigilancia (WDT) se implementan fuera del procesador. En este caso, tendría los circuitos POR y WDT implementados de manera que el POR borre el flip-flop agregado y el WDT lo establezca (ya sea preestablecido o cronometrándolo). Para que esto funcione correctamente, es necesario que POR y WDT sean señales distintas antes de combinarse para reiniciar el procesador. Tenga en cuenta que es mucho más fácil en estos días encontrar un procesador con este integrado.

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.

Gracias por la respuesta. Tengo una duda particular al escribir a RAM. Según la definición de RAM, cuando se corta la energía, se pierde la información. Pero cómo la ubicación no inicializada (que se define para la firma del perro guardián) aún mantiene el valor almacenado. ¿Me estoy perdiendo algo básico aquí?
Una falla de energía que es lo suficientemente breve retendrá el contenido de la RAM, como se señala en otra respuesta. Además, no estoy seguro de en qué parte de la pregunta se da a entender que la firma debe reescribirse con frecuencia.