فوائد نظام الاختبار المدمج (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) عبر ربط البروتوكولات.
بنية تدفق الرسائل
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
تسلسل الرسائل المفصل
تفاصيل جسر البروتوكول
| عنصر | البروتوكول في | بروتوكول الخروج | غاية |
|---|---|---|---|
| مدير تكنولوجيا المعلومات | داخلي | زينوه | ينشر نتائج الاختبارات |
| واجهة المستخدم الرسومية | زينوه | — | يعرض النتائج في الوقت الفعلي |
| واجهة سطر الأوامر | زينوه | — | مراقبة سطر الأوامر |
| بوابة بت | زينوه | طبيب أسنان (GVA) | الجسور إلى أنظمة المركبات |
| GVA HUMS | طبيب أسنان | — | مراقبة الصحة والاستخدام |
ميزات الإضافة
| ميزة | وصف |
|---|---|
| التحميل الديناميكي | يتم تحميل المكونات الإضافية كمكتبات مشتركة ( .so ) في وقت التشغيل |
| واجهة قائمة على السمات | سمات TestRun و TestDetails متسقة لجميع المكونات الإضافية |
| ملفات التكوين | تكوين قائم على TOML لكل اختبار ( /etc/bit/*.toml ) |
| تتبع الإصدارات | يُبلغ كل مكون إضافي عن الإصدار والطابع الزمني للبناء |
| استدعاءات تسجيل الأحداث | بنية تسجيل موحدة عبر جميع الاختبارات |
| عدادات الجري | التتبع التلقائي لإحصائيات النجاح/الرسوب |
إنشاء إضافة جديدة
إنشاء إضافة BIT مخصصة أمر بسيط:
- قم بتنفيذ سمة
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- تصدير واجهة البرنامج المساعد:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - إنشاء ملف تكوين (اختياري):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- قم ببناء ونشر المكتبة المشتركة إلى
/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
✅ معلمات الاختبار المعتمدة على التكوين
✅ المراقبة والتسجيل في الوقت الفعلي