Πλεονεκτήματα του ενσωματωμένου συστήματος δοκιμών (BIT)

Επισκόπηση

Το σύστημα Built-In Test (BIT) είναι ένα ολοκληρωμένο, αρθρωτό και επεκτάσιμο πλαίσιο δοκιμών σχεδιασμένο για ενσωματωμένα συστήματα που βασίζονται σε Linux. Παρέχει αυτοματοποιημένη διάγνωση υλικού και λογισμικού μέσω μιας αρχιτεκτονικής που βασίζεται σε πρόσθετα (plugins), διασφαλίζοντας την αξιοπιστία, την ακεραιότητα και την ετοιμότητα λειτουργίας του συστήματος.


Βασικά οφέλη

🛡️ Βελτιωμένη αξιοπιστία συστήματος

  • Προληπτική ανίχνευση σφαλμάτων πριν οι βλάβες επηρεάσουν τις λειτουργίες
  • Συνεχής παρακολούθηση κρίσιμων πόρων συστήματος
  • Σύστημα έγκαιρης προειδοποίησης για πιθανή υποβάθμιση υλικού

⚡ Μειωμένος Χρόνος Διακοπής Λειτουργίας

  • Τα αυτοματοποιημένα διαγνωστικά εξαλείφουν την επιβάρυνση των χειροκίνητων δοκιμών
  • Η προγραμματισμένη εκτέλεση δοκιμών εκτελείται στο παρασκήνιο
  • Η άμεση ειδοποίηση σφάλματος επιτρέπει την ταχεία αντίδραση

📊 Ολοκληρωμένη Κάλυψη

  • Επικύρωση υλικού (PCI, USB, GPIO, Serial, CAN, Ethernet)
  • Παρακολούθηση πόρων συστήματος (CPU, μνήμη, δίσκος)
  • Επαλήθευση διαδρομής δεδομένων (TCP, δίαυλος CAN, σειριακές θύρες)

🔌 Αρχιτεκτονική plug-and-play

  • Δυναμική φόρτωση πρόσθετου κατά τον χρόνο εκτέλεσης
  • Παράμετροι δοκιμής που βασίζονται στη διαμόρφωση
  • Δεν απαιτούνται τροποποιήσεις στο βασικό σύστημα για την προσθήκη νέων δοκιμών

📋 Ενσωμάτωση Systemd

  • Εκτελείται ως εγγενής υπηρεσία Linux
  • Αυτόματη εκκίνηση κατά την εκκίνηση
  • Τυπική διαχείριση υπηρεσιών ( systemctl start/stop/status )

Τύποι δοκιμών και κάλυψη

Το σύστημα BIT εφαρμόζει τρεις κύριες κατηγορίες δοκιμών που ευθυγραμμίζονται με τις μεθοδολογίες ενσωματωμένων δοκιμών που αποτελούν πρότυπο του κλάδου:

BIT ενεργοποίησης (PBIT)

Δοκιμές που εκτελούνται μία φορά κατά την εκκίνηση του συστήματος για την επαλήθευση της ακεραιότητας του υλικού πριν από την έναρξη των κανονικών λειτουργιών.

Συνεχές BIT (CBIT)

Δοκιμές που εκτελούνται περιοδικά κατά τη διάρκεια των κανονικών λειτουργιών για την ανίχνευση σφαλμάτων κατά τον χρόνο εκτέλεσης και εξάντλησης πόρων.

Εργοστασιακό BIT (FBIT)

Ολοκληρωμένες δοκιμές υλικού που χρησιμοποιούνται κατά την κατασκευή και τη συντήρηση για την επικύρωση όλων των διεπαφών του συστήματος.


Πίνακας Σύνοψης Δοκιμών

Δοκιμές BIT ενεργοποίησης (PBIT)

Όνομα δοκιμής Περιγραφή Συχνότητα
pbit_bsp_version Επικυρώνει την έκδοση BSP που ταιριάζει με την αναμενόμενη διαμόρφωση Μόλις ολοκληρωθεί η εκκίνηση
pbit_can Επικυρώνει τη διαθεσιμότητα της διεπαφής διαύλου CAN Μόλις ολοκληρωθεί η εκκίνηση
pbit_checksum Επαληθεύει την ακεραιότητα των αθροισμάτων ελέγχου αρχείων Μόλις ολοκληρωθεί η εκκίνηση
pbit_cpu_cores Επικυρώνει τον αναμενόμενο αριθμό πυρήνων CPU Μόλις ολοκληρωθεί η εκκίνηση
pbit_cpu_usage Ελέγχει αν η αρχική χρήση της CPU είναι εντός ορίων Μόλις ολοκληρωθεί η εκκίνηση
pbit_disk_health Επικυρώνει την κατάσταση εύρυθμης λειτουργίας του δίσκου SMART Μόλις ολοκληρωθεί η εκκίνηση
pbit_disk_usage Ελέγχει τη διαθεσιμότητα χώρου στο δίσκο κατά την εκκίνηση Μόλις ολοκληρωθεί η εκκίνηση
pbit_dmesg_check Σαρώνει το dmesg για κρίσιμα σφάλματα Μόλις ολοκληρωθεί η εκκίνηση
pbit_ethernet Επικυρώνει τη διαθεσιμότητα της διεπαφής Ethernet Μόλις ολοκληρωθεί η εκκίνηση
pbit_file_checksum Επαληθεύει την ακεραιότητα των κρίσιμων αρχείων συστήματος Μόλις ολοκληρωθεί η εκκίνηση
pbit_firewall_configuration Επιβεβαιώνει ότι οι κανόνες του τείχους προστασίας έχουν ρυθμιστεί σωστά Μόλις ολοκληρωθεί η εκκίνηση
pbit_gpio Επικυρώνει τη διαθεσιμότητα και την κατάσταση του pin GPIO Μόλις ολοκληρωθεί η εκκίνηση
pbit_gpu_loading Ελέγχει το πρόγραμμα οδήγησης GPU και την αρχική φόρτωση Μόλις ολοκληρωθεί η εκκίνηση
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 Παρακολουθεί τη διαθεσιμότητα του πυρήνα της CPU Διαμορφώσιμο
cbit_cpu_usage Παρακολουθεί την αξιοποίηση της CPU σε κυλιόμενο παράθυρο Κάθε 1 δευτερόλεπτο
cbit_disk_health Παρακολουθεί τα χαρακτηριστικά SMART του δίσκου Διαμορφώσιμο
cbit_disk_usage Παρακολουθεί τη χρήση του δίσκου σε σχέση με τα όρια Κάθε 30 δευτερόλεπτα
cbit_dmesg Παρακολουθεί την προσωρινή μνήμη μηνυμάτων πυρήνα Διαμορφώσιμο
cbit_dmesg_check Συνεχής ανίχνευση σφάλματος dmesg Διαμορφώσιμο
cbit_ethernet Παρακολουθεί την κατάσταση και τα σφάλματα σύνδεσης Ethernet Διαμορφώσιμο
cbit_ethernet_status Παρακολουθεί την κατάσταση σύνδεσης Ethernet Διαμορφώσιμο
cbit_firewall_configuration Παρακολουθεί την ακεραιότητα των κανόνων του τείχους προστασίας Διαμορφώσιμο
cbit_gpio Παρακολουθεί τις αλλαγές στην κατάσταση του GPIO Διαμορφώσιμο
cbit_gpu_loading Παρακολουθεί την αξιοποίηση της GPU Διαμορφώσιμο
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 Συνεχής παρακολούθηση σφαλμάτων syslog Διαμορφώσιμο
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 Δοκιμάζει διαδρομές δεδομένων Ethernet χρησιμοποιώντας το iPerf Διαμορφώσιμο
fbit_usb Επαλήθευση ανάγνωσης/εγγραφής συσκευής USB Διαμορφώσιμο
fbit_video Επαλήθευση εξόδου βίντεο Διαμορφώσιμο

Σύνολο: 57 Ενσωματωμένες δοκιμές που καλύπτουν την επικύρωση υλικού, την παρακολούθηση συστήματος και την επαλήθευση ασφάλειας.


Αρχιτεκτονική πρόσθετων (plugin)

Το σύστημα BIT βασίζεται σε μια ισχυρή αρχιτεκτονική plugin που επιτρέπει την απρόσκοπτη επεκτασιμότητα χωρίς τροποποίηση του βασικού κώδικα του συστήματος.

Πώς λειτουργεί

Το σύστημα 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

Λεπτομέρειες Γέφυρας Πρωτοκόλλου

Συστατικό Πρωτόκολλο σε Έξοδος πρωτοκόλλου Σκοπός
Διευθυντής BIT Εσωτερικός Ζηνώ Δημοσιεύει τα αποτελέσματα των δοκιμών
Γραφικό περιβάλλον χρήστη BIT Ζηνώ Εμφανίζει αποτελέσματα σε πραγματικό χρόνο
BIT CLI Ζηνώ Παρακολούθηση γραμμής εντολών
Πύλη BIT Ζηνώ DDS (ΑΠΑ) Γέφυρες προς συστήματα οχημάτων
Ακαθάριστης Αξίας Βουητά DDS Παρακολούθηση εύρυθμης λειτουργίας και χρήσης

Χαρακτηριστικά πρόσθετου

Χαρακτηριστικό Περιγραφή
Δυναμική φόρτωση Τα πρόσθετα φορτώνονται ως κοινόχρηστες βιβλιοθήκες ( .so ) κατά τον χρόνο εκτέλεσης.
Διεπαφή βασισμένη σε χαρακτηριστικά Συνεπή χαρακτηριστικά TestRun και TestDetails για όλα τα πρόσθετα
Αρχεία διαμόρφωσης Ρύθμιση παραμέτρων που βασίζεται σε TOML ανά δοκιμή ( /etc/bit/*.toml )
Παρακολούθηση έκδοσης Κάθε πρόσθετο αναφέρει την έκδοση και τη χρονική σήμανση κατασκευής
Καταγραφή επανακλήσεων Ενοποιημένη υποδομή καταγραφής σε όλες τις δοκιμές
Μετρητές εκτέλεσης Αυτόματη παρακολούθηση στατιστικών επιτυχίας/αποτυχίας

Δημιουργία νέου πρόσθετου (plugin)

Η δημιουργία ενός προσαρμοσμένου πρόσθετου 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/

Χαρακτηριστικά ασφαλείας για τη γλώσσα σκουριάς

Το σύστημα BIT υλοποιείται σε Rust , παρέχοντας απαράμιλλες εγγυήσεις ασφάλειας, κρίσιμες για ενσωματωμένα και κρίσιμα για την ασφάλεια συστήματα.

Ασφάλεια μνήμης

Χαρακτηριστικό Οφελος
Χωρίς κενούς δείκτες Option Οι τύποι αποτρέπουν την αποαναφορά μηδενικών δεικτών
Χωρίς υπερχείλιση buffer Έλεγχος ορίων σε όλες τις προσβάσεις σε πίνακες/διανύσματα
Χωρίς χρήση μετά την αγορά Το σύστημα ιδιοκτησίας εγγυάται την εγκυρότητα της μνήμης
Χωρίς αγώνες δεδομένων Πρόληψη σφαλμάτων ταυτόχρονης πρόσβασης κατά τη μεταγλώττιση

Γιατί Rust για BIT;

🔒 Ασφάλεια κατά τη μεταγλώττιση

Το Rust εντοπίζει ολόκληρες κατηγορίες σφαλμάτων κατά τη μεταγλώττιση που θα μπορούσαν να προκαλέσουν αποτυχίες χρόνου εκτέλεσης σε C/C++:

  • Διαρροές μνήμης
  • Υπερχείλιση buffer
  • Συνθήκες αγώνα
  • Αποαναφορές μηδενικού δείκτη

⚡ Αφηρήσεις μηδενικού κόστους

Τα χαρακτηριστικά ασφαλείας υψηλού επιπέδου μεταγλωττίζονται σε αποδοτικό κώδικα μηχανής χωρίς επιβάρυνση χρόνου εκτέλεσης , που αντιστοιχεί στην απόδοση 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

Στατιστικά στοιχεία ασφαλείας

Μετρικός Σκουριά εναντίον C/C++
Σφάλματα ασφαλείας μνήμης Καταργήθηκε κατά τη στιγμή της μεταγλώττισης
Αποτροπή κατηγοριών ευπάθειας CVE ~70% των κοινών ευπαθειών
Ο δείκτης null κατά την εκτέλεση παρουσιάζει σφάλμα Αδύνατος
Παραβιάσεις ασφάλειας νημάτων Πιάστηκε κατά τη διάρκεια της μεταγλώττισης

Ενσωμάτωση & Ανάπτυξη

Υπηρεσία Systemd

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

Εγκατάσταση πακέτου Debian

 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 παρέχει:

Ολοκληρωμένη διάγνωση υλικού και λογισμικού
Επεκτάσιμη αρχιτεκτονική plugin για προσαρμοσμένες δοκιμές
Υλοποίηση με ασφάλεια στη μνήμη στο Rust
Βιομηχανικά πρότυπα PBIT/CBIT/FBIT μεθοδολογία
Εγγενής ενσωμάτωση Linux/systemd
Παράμετροι δοκιμής που βασίζονται στη διαμόρφωση
Παρακολούθηση και καταγραφή σε πραγματικό χρόνο