فوائد نظام الاختبار المدمج (BIT)

ملخص

نظام الاختبار المدمج (BIT) هو إطار اختبار شامل، معياري، وقابل للتوسيع، مصمم للأنظمة المدمجة القائمة على نظام لينكس. يوفر النظام تشخيصًا آليًا للأجهزة والبرامج من خلال بنية قائمة على المكونات الإضافية، مما يضمن موثوقية النظام وسلامته وجاهزيته للتشغيل.


الفوائد الرئيسية

🛡️ موثوقية محسّنة للنظام

  • الكشف الاستباقي عن الأعطال قبل أن تؤثر على العمليات
  • المراقبة المستمرة لموارد النظام الحيوية
  • نظام إنذار مبكر لتدهور الأجهزة المحتمل

⚡ تقليل وقت التوقف

  • تساهم التشخيصات الآلية في التخلص من تكاليف الاختبار اليدوي
  • يتم تنفيذ الاختبارات المجدولة في الخلفية
  • يُمكّن الإبلاغ الفوري عن الأعطال من الاستجابة السريعة

📊 تغطية شاملة

  • التحقق من صحة الأجهزة (PCI، USB، GPIO، Serial، CAN، Ethernet)
  • مراقبة موارد النظام (وحدة المعالجة المركزية، الذاكرة، القرص)
  • التحقق من مسار البيانات (TCP، ناقل CAN، المنافذ التسلسلية)

🔌 بنية التوصيل والتشغيل

  • تحميل المكونات الإضافية الديناميكي أثناء التشغيل
  • معايير الاختبار المعتمدة على التكوين
  • لا يلزم إجراء أي تعديلات على النظام الأساسي لإضافة اختبارات جديدة

📋 تكامل Systemd

  • يعمل كخدمة لينكس أصلية
  • بدء التشغيل التلقائي عند بدء التشغيل
  • إدارة الخدمة القياسية ( systemctl start/stop/status )

أنواع الاختبارات وتغطيتها

يطبق نظام BIT ثلاث فئات اختبار أساسية تتماشى مع منهجيات الاختبار المدمج القياسية في الصناعة:

بت التشغيل (PBIT)

يتم إجراء الاختبارات مرة واحدة عند بدء تشغيل النظام للتحقق من سلامة الأجهزة قبل بدء العمليات العادية.

BIT المستمر (CBIT)

اختبارات تُجرى بشكل دوري أثناء العمليات العادية للكشف عن أخطاء وقت التشغيل واستنزاف الموارد.

مصنع بت (FBIT)

تُستخدم اختبارات شاملة للأجهزة أثناء التصنيع والصيانة للتحقق من صحة جميع واجهات النظام.


جدول ملخص الاختبار

اختبارات تشغيل الطاقة (PBIT)

اسم الاختبار وصف تكرار
pbit_bsp_version يتحقق من أن إصدار BSP يطابق التكوين المتوقع بمجرد بدء التشغيل
pbit_can يتحقق من توافر واجهة ناقل CAN بمجرد بدء التشغيل
pbit_checksum يتحقق من سلامة ملفات التحقق من المجموع الاختباري بمجرد بدء التشغيل
pbit_cpu_cores يتحقق من عدد أنوية وحدة المعالجة المركزية المتوقعة بمجرد بدء التشغيل
pbit_cpu_usage يتحقق من أن استخدام وحدة المعالجة المركزية الأولي ضمن الحدود المسموح بها بمجرد بدء التشغيل
pbit_disk_health يتحقق من حالة صحة القرص بتقنية SMART بمجرد بدء التشغيل
pbit_disk_usage يتحقق من توفر مساحة القرص عند بدء التشغيل بمجرد بدء التشغيل
pbit_dmesg_check يفحص سجل النظام (dmesg) بحثًا عن الأخطاء الحرجة بمجرد بدء التشغيل
pbit_ethernet يتحقق من توافر واجهة إيثرنت بمجرد بدء التشغيل
pbit_file_checksum يتحقق من سلامة ملفات النظام الأساسية بمجرد بدء التشغيل
pbit_firewall_configuration يتحقق من صحة تكوين قواعد جدار الحماية بمجرد بدء التشغيل
pbit_gpio يتحقق من توفر حالة دبابيس GPIO بمجرد بدء التشغيل
pbit_gpu_loading يفحص برنامج تشغيل وحدة معالجة الرسومات والتحميل الأولي بمجرد بدء التشغيل
pbit_memory_usage التحقق من الذاكرة المتاحة عند بدء التشغيل بمجرد بدء التشغيل
pbit_pci_whitelist يتحقق من صحة أجهزة PCI مقابل القائمة البيضاء المعتمدة بمجرد بدء التشغيل
pbit_permissions_verification يتحقق من أذونات الملفات/المجلدات بمجرد بدء التشغيل
pbit_power_test يتحقق من حالة مصدر الطاقة والفولتية بمجرد بدء التشغيل
pbit_selinux_apparmor_status يتحقق من حالة وحدة الأمان بمجرد بدء التشغيل
pbit_serial_ports يتحقق من توافر منفذ التسلسل بمجرد بدء التشغيل
pbit_ssh_configuration يتحقق من صحة إعدادات أمان SSH بمجرد بدء التشغيل
pbit_syslog_analysis يقوم بفحص سجل النظام بحثًا عن أخطاء بدء التشغيل الحرجة بمجرد بدء التشغيل
pbit_temperature يفحص القراءات الحرارية الأولية بمجرد بدء التشغيل
pbit_usb_whitelist يتحقق من صحة أجهزة USB مقابل القائمة البيضاء المعتمدة بمجرد بدء التشغيل

اختبارات BIT المستمرة (CBIT)

اسم الاختبار وصف تكرار
cbit_bsp_version يراقب اتساق إصدار BSP قابل للتكوين
cbit_can يراقب حالة ناقل CAN وعدادات الأخطاء قابل للتكوين
cbit_checksum التحقق الدوري من سلامة الملفات قابل للتكوين
cbit_cpu_cores يراقب مدى توافر أنوية وحدة المعالجة المركزية قابل للتكوين
cbit_cpu_usage يراقب استخدام وحدة المعالجة المركزية خلال نافذة متغيرة كل ثانية
cbit_disk_health يراقب خصائص SMART للقرص قابل للتكوين
cbit_disk_usage يراقب استخدام القرص وفقًا للحدود المحددة كل 30 ثانية
cbit_dmesg يراقب مخزن رسائل النواة قابل للتكوين
cbit_dmesg_check الكشف المستمر عن أخطاء dmesg قابل للتكوين
cbit_ethernet يراقب حالة وصلة الإيثرنت والأخطاء قابل للتكوين
cbit_ethernet_status يراقب حالة اتصال الإيثرنت قابل للتكوين
cbit_firewall_configuration يراقب سلامة قواعد جدار الحماية قابل للتكوين
cbit_gpio يراقب تغييرات حالة منافذ الإدخال/الإخراج العامة (GPIO) قابل للتكوين
cbit_gpu_loading يراقب استخدام وحدة معالجة الرسومات قابل للتكوين
cbit_memory_usage يتتبع أنماط استهلاك الذاكرة قابل للتكوين
cbit_pci_whitelist يراقب تغييرات أجهزة PCI قابل للتكوين
cbit_permissions يراقب تغييرات أذونات الملفات قابل للتكوين
cbit_permissions_verification التحقق المستمر من الأذونات قابل للتكوين
cbit_power_consumption يراقب استهلاك الطاقة والكفاءة قابل للتكوين
cbit_selinux_apparmor_status يراقب حالة وحدة الأمان قابل للتكوين
cbit_serial_ports يراقب مدى توافر منفذ التسلسل قابل للتكوين
cbit_ssh_configuration يراقب تغييرات إعدادات SSH قابل للتكوين
cbit_syslog_analysis مراقبة مستمرة لأخطاء سجل النظام قابل للتكوين
cbit_temperature يراقب قراءات واتجاهات درجات الحرارة قابل للتكوين
cbit_usb_whitelist يراقب تغييرات أجهزة USB قابل للتكوين

اختبارات المصنع BIT (FBIT)

اسم الاختبار وصف تكرار
fbit_can_data يختبر وظائف الإرسال/الاستقبال لحافلة CAN قابل للتكوين
fbit_gpio_data يتحقق من وظائف الإدخال/الإخراج GPIO قابل للتكوين
fbit_pci تعداد أجهزة PCI والتحقق منها قابل للتكوين
fbit_serial_data يتحقق من صحة اتصال حلقة المنفذ التسلسلي قابل للتكوين
fbit_ssd التحقق من أداء القراءة/الكتابة لمحركات الأقراص الصلبة SSD قابل للتكوين
fbit_system_data معلومات النظام قابل للتكوين
fbit_tcp_data يختبر مسارات بيانات الإيثرنت باستخدام iPerf قابل للتكوين
fbit_usb التحقق من قراءة/كتابة جهاز USB قابل للتكوين
fbit_video التحقق من مخرجات الفيديو قابل للتكوين

المجموع: 57 اختبارًا مدمجًا تغطي التحقق من صحة الأجهزة، ومراقبة النظام، والتحقق الأمني.


بنية المكونات الإضافية

تم بناء نظام BIT على بنية إضافية قوية تتيح التوسع السلس دون تعديل كود النظام الأساسي.

كيف يعمل

يستخدم نظام BIT برنامج Zenoh كوسيط للمراسلة، مما يتيح توزيع نتائج الاختبار في الوقت الفعلي على عملاء المراقبة والتكامل السلس مع أنظمة GVA (Generic Vehicle Architecture) عبر ربط البروتوكولات.

بنية تدفق الرسائل

flowchart LR subgraph Server["🖥️ BIT Server"] BM["BIT Manager"] PBIT["PBIT Plugins"] CBIT["CBIT Plugins"] FBIT["FBIT Plugins"] end subgraph Zenoh["🌐 Zenoh Network"] ZS["Zenoh Session"] end subgraph Clients["📱 BIT Clients"] GUI["BIT GUI"] CLI["BIT CLI"] end subgraph Gateway["🔗 BIT Gateway"] ZDG["Zenoh-DDS Bridge"] end subgraph GVA["🎖️ GVA Domain (DDS)"] HUMS["Health & Usage
Monitoring Service"] end PBIT -->|TestResult| BM CBIT -->|TestResult| BM FBIT -->|TestResult| BM BM -->|"Zenoh Publish
bit/{hostname}/PBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/CBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/FBIT"| ZS ZS -->|"Subscribe
bit/+/+"| GUI ZS -->|"Subscribe
bit/+/+"| CLI ZS -->|"Subscribe
bit/+/+"| ZDG ZDG -->|"DDS Publish
GVA::HealthStatus"| HUMS

تسلسل الرسائل المفصل

sequenceDiagram participant Plugin as Test Plugin participant BM as BIT Manager participant Zenoh as Zenoh Router participant GUI as BIT GUI participant Gateway as BIT Gateway participant HUMS as GVA HUMS (DDS) Note over Plugin,HUMS: Test Execution & Result Distribution Plugin->>BM: Execute Test BM->>BM: Encode BuiltInTestResult (Protobuf) BM->>Zenoh: Publish to bit/{hostname}/CBIT par Parallel Distribution Zenoh-->>GUI: Forward Result GUI->>GUI: Display in Dashboard and Zenoh-->>Gateway: Forward Result Gateway->>Gateway: Zenoh → DDS Transform Gateway->>HUMS: Publish GVA::HealthStatus HUMS->>HUMS: Update Vehicle Health Record end Note over GUI,HUMS: Real-time monitoring on both systems

تفاصيل جسر البروتوكول

عنصر البروتوكول في بروتوكول الخروج غاية
مدير تكنولوجيا المعلومات داخلي زينوه ينشر نتائج الاختبارات
واجهة المستخدم الرسومية زينوه يعرض النتائج في الوقت الفعلي
واجهة سطر الأوامر زينوه مراقبة سطر الأوامر
بوابة بت زينوه طبيب أسنان (GVA) الجسور إلى أنظمة المركبات
GVA HUMS طبيب أسنان مراقبة الصحة والاستخدام

ميزات الإضافة

ميزة وصف
التحميل الديناميكي يتم تحميل المكونات الإضافية كمكتبات مشتركة ( .so ) في وقت التشغيل
واجهة قائمة على السمات سمات TestRun و TestDetails متسقة لجميع المكونات الإضافية
ملفات التكوين تكوين قائم على TOML لكل اختبار ( /etc/bit/*.toml )
تتبع الإصدارات يُبلغ كل مكون إضافي عن الإصدار والطابع الزمني للبناء
استدعاءات تسجيل الأحداث بنية تسجيل موحدة عبر جميع الاختبارات
عدادات الجري التتبع التلقائي لإحصائيات النجاح/الرسوب

إنشاء إضافة جديدة

إنشاء إضافة BIT مخصصة أمر بسيط:

  1. قم بتنفيذ سمة TestRun :
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. تصدير واجهة البرنامج المساعد:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. إنشاء ملف تكوين (اختياري):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. قم ببناء ونشر المكتبة المشتركة إلى /usr/local/lib/bit_manager/

ميزات الأمان في لغة Rust

تم تنفيذ نظام BIT بلغة Rust ، مما يوفر ضمانات أمان لا مثيل لها، وهي أمر بالغ الأهمية للأنظمة المدمجة والأنظمة الحساسة للسلامة.

سلامة الذاكرة

ميزة فائدة
لا توجد مؤشرات فارغة Option تمنع الأنواع عمليات فك المراجع للمؤشرات الفارغة
لا توجد حالات تجاوز سعة المخزن المؤقت التحقق من حدود الوصول إلى جميع المصفوفات/المتجهات
لا يُقبل الاستخدام بعد انتهاء الفترة المجانية يضمن نظام الملكية صلاحية الذاكرة
سباقات بدون بيانات منع أخطاء الوصول المتزامن أثناء وقت الترجمة

لماذا لغة Rust مناسبة لتقنية BIT؟

🔒 أمان وقت الترجمة

يكتشف Rust فئات كاملة من الأخطاء في وقت الترجمة والتي قد تتسبب في فشل وقت التشغيل في C/C++:

  • تسريبات الذاكرة
  • تجاوز سعة المخزن المؤقت
  • شروط السباق
  • محاولات فك مرجع المؤشر الفارغ

⚡ تجريدات بدون تكلفة

ميزات الأمان عالية المستوى تُترجم إلى كود آلة فعال بدون أي تكلفة إضافية لوقت التشغيل ، مما يضاهي أداء C/C++.

🔧 التنافس الجريء

يُمكّن نموذج الملكية من تنفيذ الاختبارات متعددة الخيوط بشكل آمن دون حدوث تضارب في البيانات:

 // Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new()));

📦 إدارة التبعيات الحديثة

  • يضمن مدير حزم الشحن إمكانية إعادة بناء الملفات بشكل متكرر.
  • حل التبعيات تلقائيًا
  • إطار اختبار مدمج

🛡️ تكوين آمن من حيث النوع

يستفيد تحليل التكوين من نظام أنواع Rust لاكتشاف الأخطاء مبكراً:

 let threshold: f32 = config.get("threshold")?;  // Type-checked at compile time

إحصائيات السلامة

متري Rust مقابل C/C++
أخطاء أمان الذاكرة تم حذفها في وقت الترجمة
تم منع فئات الثغرات الأمنية CVE حوالي 70% من الثغرات الأمنية الشائعة
أعطال مؤشر فارغ أثناء التشغيل مستحيل
انتهاكات سلامة الخيوط تم اكتشاف ذلك أثناء وقت الترجمة

التكامل والنشر

خدمة Systemd

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

تثبيت حزمة دبيان

 cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.deb

مسارات التكوين

طريق غاية
/etc/bit/ ملفات تكوين الاختبار (TOML)
/usr/local/lib/bit_manager/ مكتبات مشتركة للملحقات
/var/log/bit_manager/ ملفات السجل

التفتيش والمراقبة

توفر أداة bit_inspect معلومات مفصلة حول الاختبارات المحملة:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

مثال على المخرجات:

 Details:
  Long-Name              Disk utilization test
  Author                 Ross Newman 
  Description            Check the disk is not nearing full
  Status                 NotRun

Plugin Details:
  Plugin Name            cbit_disk_usage
  Version                1.0.0
  Date Built             2025-03-09 01:42:11
  Run Frequency          Periodic(30s)

ملخص

يقدم نظام BIT ما يلي:

تشخيص شامل للأجهزة والبرامج
بنية إضافات قابلة للتوسيع لإجراء اختبارات مخصصة
تطبيق آمن للذاكرة في لغة Rust
منهجية PBIT/CBIT/FBIT المتوافقة مع معايير الصناعة
تكامل أصلي مع Linux/systemd
معلمات الاختبار المعتمدة على التكوين
المراقبة والتسجيل في الوقت الفعلي