Πλεονεκτήματα του ενσωματωμένου συστήματος δοκιμών (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) μέσω γεφύρωσης πρωτοκόλλου.
Αρχιτεκτονική ροής μηνυμάτων
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
Λεπτομερής Ακολουθία Μηνυμάτων
Λεπτομέρειες Γέφυρας Πρωτοκόλλου
| Συστατικό | Πρωτόκολλο σε | Έξοδος πρωτοκόλλου | Σκοπός |
|---|---|---|---|
| Διευθυντής BIT | Εσωτερικός | Ζηνώ | Δημοσιεύει τα αποτελέσματα των δοκιμών |
| Γραφικό περιβάλλον χρήστη BIT | Ζηνώ | — | Εμφανίζει αποτελέσματα σε πραγματικό χρόνο |
| BIT CLI | Ζηνώ | — | Παρακολούθηση γραμμής εντολών |
| Πύλη BIT | Ζηνώ | DDS (ΑΠΑ) | Γέφυρες προς συστήματα οχημάτων |
| Ακαθάριστης Αξίας Βουητά | DDS | — | Παρακολούθηση εύρυθμης λειτουργίας και χρήσης |
Χαρακτηριστικά πρόσθετου
| Χαρακτηριστικό | Περιγραφή |
|---|---|
| Δυναμική φόρτωση | Τα πρόσθετα φορτώνονται ως κοινόχρηστες βιβλιοθήκες ( .so ) κατά τον χρόνο εκτέλεσης. |
| Διεπαφή βασισμένη σε χαρακτηριστικά | Συνεπή χαρακτηριστικά TestRun και TestDetails για όλα τα πρόσθετα |
| Αρχεία διαμόρφωσης | Ρύθμιση παραμέτρων που βασίζεται σε TOML ανά δοκιμή ( /etc/bit/*.toml ) |
| Παρακολούθηση έκδοσης | Κάθε πρόσθετο αναφέρει την έκδοση και τη χρονική σήμανση κατασκευής |
| Καταγραφή επανακλήσεων | Ενοποιημένη υποδομή καταγραφής σε όλες τις δοκιμές |
| Μετρητές εκτέλεσης | Αυτόματη παρακολούθηση στατιστικών επιτυχίας/αποτυχίας |
Δημιουργία νέου πρόσθετου (plugin)
Η δημιουργία ενός προσαρμοσμένου πρόσθετου 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/
Χαρακτηριστικά ασφαλείας για τη γλώσσα σκουριάς
Το σύστημα 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
✅ Παράμετροι δοκιμής που βασίζονται στη διαμόρφωση
✅ Παρακολούθηση και καταγραφή σε πραγματικό χρόνο