Avatar ·

Kompilierung einer Anwendung für den Betrieb unter starker Strahlung: Schutz vor Ausfällen

Hallo zusammen. Ich entwickle ein eingebettetes System in C++ für einen Satelliten im niedrigen Erdorbit. Dort herrscht eine sehr hohe Strahlungsbelastung, die, wie ich verstehe, Speicherfehler (Bitflips) und sogar Fehler in Prozessorregistern verursachen kann. Mein C++-Code wird mit GCC für ARM Cortex-M4 kompiliert. Das Problem ist, dass Standardmethoden der Fehlerbehandlung (try-catch, assert) nicht vor Hardwarefehlern schützen. Wenn beispielsweise Strahlung ein Bit in einer Variablen "umdreht", die einen wichtigen Status-Flag speichert, oder im Code selbst (im Flash), kann das Programm unvorhersehbar reagieren. Ich bin bereits darauf gestoßen, dass Berechnungen manchmal falsche Ergebnisse liefern und das Programm manchmal einfach hängt oder in einen HardFault gerät. Hier ist ein vereinfachtes Beispiel meines Codes, in dem ich die Prüfsumme der Telemetrie berechne: ```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]; } return sum; } ```