Una parte de tu código definitivamente ayudaría. Necesitas un manejador de fallas que te explique lo que sucedió.
Siga esta guía .
La mayoría de las veces, las fallas duras son causadas por:
- Acceder a una dirección incorrecta en la memoria (p. ej., escribir en flash o leer una dirección inexistente): técnicamente, esto es un fallo del bus y tiene un controlador independiente, pero se escala a un fallo grave cuando no se maneja. Esto puede ser causado por su código o su secuencia de comandos de vinculador
- Intentando ejecutar datos como código (punteros salvajes, punteros de funciones no válidas, desbordamiento de pila)
- Accediendo a un periférico que tiene su reloj deshabilitado
Un RTOS también puede causar algunos problemas de memoria funky.
Al mirar el controlador, la variable más importante es el contador de programas apilados (PC). Le indica la instrucción exacta que causó el problema en un Cortex-M0 (M4 puede necesitar deshabilitar el búfer de escritura de la memoria, de lo contrario la falla puede ser imprecisa).