Por lo tanto, estoy involucrado principalmente en la escritura de firmware para sensores industriales que se espera que sean muy robustos.
Una de las cosas a las que debe enfrentarse son los errores aleatorios en todas partes, especialmente en circuitos integrados fuera del microcontrolador. Lo que normalmente hacemos es la inicialización cíclica, por lo que estamos seguros de que los registros volátiles se escriben dentro de un cierto tiempo, si es posible con cada ciclo. De esa manera estamos bastante seguros contra errores blandos que nos dañan mucho tiempo.
Algunos circuitos integrados tienen un poco de problema con ese método, así que para aquellos que cambiamos a un método de lectura, verificación y corrección. Leemos los registros, los comparamos con lo que se espera y si no coincide, corregimos los registros.
Probar este método resulta ser un poco difícil. Claro que podemos modificar el valor que leemos en el firmware y comprobar si las medidas de corrección se realizan correctamente, pero me gustaría ver que realmente capturamos errores de software en el dispositivo.
TL; DR A veces tenemos la "suerte" de que durante nuestras pruebas de EMI ocurra un error de software en el IC que nos gustaría probar, pero ¿existe una manera relativamente fácil de provocar errores de software en un IC específico en un PCB?