Avatar ·

Compilação de aplicação para operar em condições de radiação intensa: proteção contra falhas

Olá a todos. Estou desenvolvendo um sistema embarcado em C++ para um satélite espacial que operará em órbita baixa da Terra. Lá, o nível de radiação é muito alto e, pelo que entendi, isso pode causar falhas na memória (bit flips) e até nos registradores da CPU. Meu código em C++ é compilado com GCC para ARM Cortex-M4. O problema é que os métodos padrão de tratamento de erros (try-catch, assert) não protegem contra falhas de hardware. Por exemplo, se a radiação "inverter" um bit em uma variável que armazena uma flag de estado importante, ou no próprio código (na Flash), o programa pode começar a se comportar de forma imprevisível. Já enfrentei situações em que os cálculos produzem resultados incorretos, e outras em que o programa simplesmente trava ou entra em HardFault. Aqui está um exemplo simplificado do meu código, onde calculo a soma de verificação da telemetria: ```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]; ```