Avatar ·

Compilación de una aplicación para trabajar en condiciones de radiación intensa: protección contra fallos

Hola a todos. Estoy desarrollando un sistema embebido en C++ para un satélite espacial que operará en órbita terrestre baja. Allí el nivel de radiación es muy alto y, según entiendo, esto puede causar fallos en la memoria (bit flips) e incluso en los registros del procesador. Mi código en C++ se compila con GCC para ARM Cortex-M4. El problema es que los métodos estándar de manejo de errores (try-catch, assert) no protegen contra fallos de hardware. Por ejemplo, si la radiación "invierte" un bit en una variable que almacena una bandera de estado importante, o en el propio código (en Flash), el programa puede comenzar a comportarse de manera impredecible. Ya me he encontrado con que a veces los cálculos dan resultados incorrectos, y otras veces el programa simplemente se congela o entra en HardFault. Aquí hay un ejemplo simplificado de mi código, donde calculo la suma de verificación de la telemetría: ```cpp #include uint32_t calculate_checksum(const uint8_t* data, size_t len) { uint32_t sum = 0; for (size_t i = 0; i < len; ++i) { sum += data[i]; / ```