Avatar ·

تجميع تطبيق للعمل في ظروف الإشعاع العالي: الحماية من الأعطال

مرحبًا بالجميع. أقوم بتطوير نظام مضمن بلغة C++ لقمر صناعي فضائي سيعمل في مدار أرضي منخفض. هناك مستوى عالٍ جدًا من الإشعاع، وكما أفهم، يمكن أن يسبب أعطالًا في الذاكرة (bit flips) وحتى في مسجلات المعالج. يتم تجميع كود C++ الخاص بي باستخدام GCC لـ ARM Cortex-M4.\n\nالمشكلة هي أن طرق معالجة الأخطاء القياسية (try-catch, assert) لا تحمي من الأعطال المادية. على سبيل المثال، إذا "قلب" الإشعاع بتًا في متغير يخزن علامة حالة مهمة، أو في الكود نفسه (في Flash)، قد يبدأ البرنامج في التصرف بشكل غير متوقع. لقد واجهت بالفعل أن الحسابات تعطي أحيانًا نتائج غير صحيحة، وأحيانًا يتجمد البرنامج أو يدخل في HardFault.\n\nإليك مثال مبسط من كودي حيث أحسب المجموع الاختباري للقياس عن بُعد:\n\n```cpp\n#include \n\nuint32_t calculate_checksum(const uint8_t* data, size_t len) {\n uint32_t sum = 0;\n for (size_t i = 0; i < len; ++i) {\n sum += data[i];\n }\n```