Avatar ·

Compilation d'une application C++ pour fonctionner dans des conditions de forte radiation : protection contre les pannes

Bonjour à tous. J'écris un logiciel embarqué en C++ pour un dispositif qui fonctionnera à l'intérieur d'un réacteur nucléaire (système de surveillance de la température). Le niveau de radiation y est extrême. J'ai déjà rencontré des problèmes : après quelques semaines de fonctionnement, le programme commence à se comporter étrangement : les calculs donnent des résultats incorrects, parfois des segmentation fault se produisent, et à quelques reprises le contrôleur a simplement planté. Je soupçonne que cela est dû à des erreurs de bits dans la RAM et la mémoire flash causées par les radiations. Mon code actuel ressemble à ceci : ```cpp int main() { int sensor_value = read_sensor(); // fonction qui lit l'ADC int threshold = 100; if (sensor_value > threshold) { activate_alarm(); } return 0; } ``` Je compile avec GCC pour ARM Cortex-M4 avec les flags `-O2 -std=c++17`. Question : comment modifier mon approche de compilation et le code lui-même pour minimiser l'impact des erreurs de radiation ? Existe-t-il des flags GCC spéciaux ou des pratiques de programmation ? C'est spécifiquement pour C++ et GCC, de préférence sans