Avantages du système de test intégré (BIT)
Aperçu
Le système Built-In Test (BIT) est un framework de test complet, modulaire et extensible, conçu pour les systèmes embarqués Linux. Il assure un diagnostic automatisé du matériel et des logiciels grâce à une architecture basée sur des plugins, garantissant ainsi la fiabilité, l'intégrité et la disponibilité opérationnelle du système.
Principaux avantages
🛡️ Fiabilité système améliorée
- Détection proactive des pannes avant qu'elles n'impactent les opérations
- Surveillance continue des ressources système critiques
- Système d'alerte précoce pour la dégradation potentielle du matériel
⚡ Temps d'arrêt réduit
- Les diagnostics automatisés éliminent les coûts liés aux tests manuels.
- L'exécution des tests planifiés s'effectue en arrière-plan.
- La notification immédiate des pannes permet une réponse rapide
📊 Couverture complète
- Validation matérielle (PCI, USB, GPIO, série, CAN, Ethernet)
- Surveillance des ressources système (processeur, mémoire, disque)
- Vérification du chemin de données (TCP, bus CAN, ports série)
🔌 Architecture Plug-and-Play
- Chargement dynamique des plugins à l'exécution
- Paramètres de test pilotés par la configuration
- Aucune modification du système de base n'est requise pour ajouter de nouveaux tests
📋 Intégration Systemd
- Fonctionne comme un service Linux natif
- Démarrage automatique au démarrage
- Gestion standard des services (
systemctl start/stop/status)
Types de tests et couverture
Le système BIT met en œuvre trois catégories de tests principales alignées sur les méthodologies de tests intégrés standard de l'industrie :
BIT de mise sous tension (PBIT)
Tests exécutés une seule fois au démarrage du système pour vérifier l'intégrité du matériel avant le début des opérations normales.
BIT continu (CBIT)
Des tests exécutés périodiquement pendant le fonctionnement normal afin de détecter les erreurs d'exécution et l'épuisement des ressources.
BIT d'usine (FBIT)
Des tests matériels complets sont utilisés lors de la fabrication et de la maintenance pour valider toutes les interfaces du système.
Tableau récapitulatif des tests
Tests BIT à la mise sous tension (PBIT)
| Nom du test | Description | Fréquence |
|---|---|---|
pbit_bsp_version | Vérifie que la version BSP correspond à la configuration attendue | Une fois au démarrage |
pbit_can | Vérifie la disponibilité de l'interface CAN bus | Une fois au démarrage |
pbit_checksum | Vérifie l'intégrité des sommes de contrôle des fichiers | Une fois au démarrage |
pbit_cpu_cores | Valide le nombre de cœurs du processeur attendu | Une fois au démarrage |
pbit_cpu_usage | Vérifie que l'utilisation initiale du processeur est dans les limites. | Une fois au démarrage |
pbit_disk_health | Valide l'état SMART du disque | Une fois au démarrage |
pbit_disk_usage | Vérifie la disponibilité de l'espace disque au démarrage | Une fois au démarrage |
pbit_dmesg_check | Analyse le dmesg à la recherche d'erreurs critiques | Une fois au démarrage |
pbit_ethernet | Vérifie la disponibilité de l'interface Ethernet | Une fois au démarrage |
pbit_file_checksum | Vérifie l'intégrité des fichiers système critiques | Une fois au démarrage |
pbit_firewall_configuration | Vérifie que les règles du pare-feu sont correctement configurées. | Une fois au démarrage |
pbit_gpio | Valide la disponibilité et l'état des broches GPIO | Une fois au démarrage |
pbit_gpu_loading | Vérifie le pilote GPU et le chargement initial | Une fois au démarrage |
pbit_memory_usage | Valide la mémoire disponible au démarrage | Une fois au démarrage |
pbit_pci_whitelist | Valide les périphériques PCI par rapport à la liste blanche approuvée | Une fois au démarrage |
pbit_permissions_verification | Valide les permissions des fichiers/répertoires | Une fois au démarrage |
pbit_power_test | Vérifie l'état de l'alimentation électrique et les tensions | Une fois au démarrage |
pbit_selinux_apparmor_status | Valide l'état du module de sécurité | Une fois au démarrage |
pbit_serial_ports | Vérifie la disponibilité du port série | Une fois au démarrage |
pbit_ssh_configuration | Valide la configuration de sécurité SSH | Une fois au démarrage |
pbit_syslog_analysis | Analyse les journaux système à la recherche d'erreurs critiques au démarrage | Une fois au démarrage |
pbit_temperature | Vérifie les relevés thermiques initiaux | Une fois au démarrage |
pbit_usb_whitelist | Valide les périphériques USB par rapport à la liste blanche approuvée. | Une fois au démarrage |
Tests BIT continus (CBIT)
| Nom du test | Description | Fréquence |
|---|---|---|
cbit_bsp_version | Surveille la cohérence de la version BSP | Configurable |
cbit_can | Surveille l'état du bus CAN et les compteurs d'erreurs | Configurable |
cbit_checksum | Vérification périodique de l'intégrité des fichiers | Configurable |
cbit_cpu_cores | Surveille la disponibilité des cœurs du processeur | Configurable |
cbit_cpu_usage | Surveille l'utilisation du processeur sur une fenêtre glissante | Toutes les 1s |
cbit_disk_health | Surveille les attributs SMART du disque | Configurable |
cbit_disk_usage | Surveille l'utilisation du disque par rapport aux seuils définis. | Toutes les 30 secondes |
cbit_dmesg | Surveille le tampon de messages du noyau | Configurable |
cbit_dmesg_check | Détection continue des erreurs dmesg | Configurable |
cbit_ethernet | Surveille l'état et les erreurs de la liaison Ethernet | Configurable |
cbit_ethernet_status | Surveille l'état de la connexion Ethernet | Configurable |
cbit_firewall_configuration | Surveille l'intégrité des règles du pare-feu | Configurable |
cbit_gpio | Surveille les changements d'état des GPIO | Configurable |
cbit_gpu_loading | Surveille l'utilisation du GPU | Configurable |
cbit_memory_usage | Suivi des tendances de consommation de mémoire | Configurable |
cbit_pci_whitelist | Surveille les modifications des périphériques PCI | Configurable |
cbit_permissions | Surveille les modifications des permissions de fichiers | Configurable |
cbit_permissions_verification | validation continue des autorisations | Configurable |
cbit_power_consumption | Surveille la consommation d'énergie et l'efficacité | Configurable |
cbit_selinux_apparmor_status | Surveille l'état du module de sécurité | Configurable |
cbit_serial_ports | Surveille la disponibilité des ports série | Configurable |
cbit_ssh_configuration | Surveille les modifications de configuration SSH | Configurable |
cbit_syslog_analysis | Surveillance continue des erreurs syslog | Configurable |
cbit_temperature | Surveille les relevés et les tendances thermiques | Configurable |
cbit_usb_whitelist | Surveille les modifications apportées aux périphériques USB | Configurable |
Tests BIT d'usine (FBIT)
| Nom du test | Description | Fréquence |
|---|---|---|
fbit_can_data | Tests de fonctionnalité d'émission/réception du bus CAN | Configurable |
fbit_gpio_data | Valide les fonctionnalités d'entrée/sortie GPIO | Configurable |
fbit_pci | Énumération et vérification des périphériques PCI | Configurable |
fbit_serial_data | Valide la communication de bouclage du port série | Configurable |
fbit_ssd | validation des performances de lecture/écriture du SSD | Configurable |
fbit_system_data | collecte d'informations système | Configurable |
fbit_tcp_data | Teste les chemins de données Ethernet à l'aide d'iPerf | Configurable |
fbit_usb | vérification de lecture/écriture du périphérique USB | Configurable |
fbit_video | Vérification de la sortie vidéo | Configurable |
Total : 57 tests intégrés couvrant la validation matérielle, la surveillance du système et la vérification de la sécurité.
Architecture des plugins
Le système BIT repose sur une architecture de plugins puissante qui permet une extensibilité transparente sans modifier le code du système principal.
Comment ça marche
Le système BIT utilise Zenoh comme intergiciel de messagerie, permettant la distribution en temps réel des résultats de test aux clients de surveillance et une intégration transparente avec les systèmes GVA (Generic Vehicle Architecture) via un pontage de protocole.
Architecture du flux de messages
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
Séquence de messages détaillée
Détails du pont de protocole
| Composant | Protocole dans | Protocole Out | But |
|---|---|---|---|
| Gestionnaire BIT | Interne | Zénoh | Publie les résultats des tests |
| Interface graphique BIT | Zénoh | — | Affiche les résultats en temps réel |
| CLI BIT | Zénoh | — | Surveillance en ligne de commande |
| Passerelle BIT | Zénoh | DDS (GVA) | Ponts vers les systèmes de véhicules |
| GVA HUMS | DDS | — | Surveillance de la santé et de l'utilisation |
Fonctionnalités du plugin
| Fonctionnalité | Description |
|---|---|
| Chargement dynamique | Les plugins sont chargés en tant que bibliothèques partagées ( .so ) lors de l'exécution. |
| Interface basée sur les caractéristiques | Caractéristiques TestRun et TestDetails cohérentes pour tous les plugins |
| Fichiers de configuration | Configuration TOML par test ( /etc/bit/*.toml ) |
| Suivi des versions | Chaque plugin indique sa version et la date de compilation. |
| Journalisation des rappels | Infrastructure de journalisation unifiée pour tous les tests |
| Compteurs de course | Suivi automatique des statistiques de réussite/échec |
Création d'un nouveau plugin
Créer un plugin BIT personnalisé est simple :
- Implémentez le trait
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Exporter l'interface du plugin :
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Créer un fichier de configuration (facultatif) :
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- Compilez et déployez la bibliothèque partagée dans
/usr/local/lib/bit_manager/
Fonctionnalités de sécurité du langage Rust
Le système BIT est implémenté en Rust , offrant des garanties de sécurité inégalées, essentielles pour les systèmes embarqués et critiques pour la sécurité.
Sécurité de la mémoire
| Fonctionnalité | Avantage |
|---|---|
| Pas de pointeurs nuls | Option Les types empêchent le déréférencement de pointeurs nuls |
| Aucun débordement de tampon | Vérification des limites sur tous les accès aux tableaux/vecteurs |
| Aucune utilisation après la gratuité | Le système de propriété garantit la validité de la mémoire |
| Pas de concurrence de données | Prévention des bogues d'accès concurrents lors de la compilation |
Pourquoi Rust pour BIT ?
🔒 Sécurité au moment de la compilation
Rust détecte des catégories entières de bogues lors de la compilation, bogues qui provoqueraient des erreurs d'exécution en C/C++ :
- fuites de mémoire
- Débordements de tampon
- Conditions de course
- Déréférencement de pointeur nul
⚡ Abstractions à coût nul
Les fonctions de sécurité de haut niveau sont compilées en code machine efficace sans surcharge d'exécution , égalant les performances du C/C++.
🔧 Concurrence sans peur
Le modèle de propriété permet une exécution de tests multithread sécurisée sans conflits d'accès aux données :
// Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new())); 📦 Gestion moderne des dépendances
- Le gestionnaire de paquets Cargo garantit des constructions reproductibles
- Résolution automatisée des dépendances
- Cadre de test intégré
🛡️ Configuration de type sécurisé
L'analyse de la configuration tire parti du système de types de Rust pour détecter les erreurs au plus tôt :
let threshold: f32 = config.get("threshold")?; // Type-checked at compile timeStatistiques de sécurité
| Métrique | Rust contre C/C++ |
|---|---|
| bugs de sécurité de la mémoire | Éliminé lors de la compilation |
| Les classes de vulnérabilités CVE ont été empêchées | ~70% des vulnérabilités courantes |
| plantages dus à un pointeur nul à l'exécution | Impossible |
| Infractions aux règles de sécurité des fils | Détecté lors de la compilation |
Intégration et déploiement
Service Systemd
# Enable automatic startup
sudo systemctl enable bit_manager
# Start the service
sudo systemctl start bit_manager
# Check status
sudo systemctl status bit_managerInstallation de paquets Debian
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.debChemins de configuration
| Chemin | But |
|---|---|
/etc/bit/ | Fichiers de configuration de test (TOML) |
/usr/local/lib/bit_manager/ | Bibliothèques partagées de plugins |
/var/log/bit_manager/ | Fichiers journaux |
Inspection et surveillance
L'utilitaire bit_inspect fournit des informations détaillées sur les tests chargés :
# List all available tests
bit_inspect
# Get detailed information about a specific test
bit_inspect cbit_disk_usageExemple de sortie :
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) Résumé
Le système BIT offre :
✅ Diagnostic complet du matériel et des logiciels
✅ Architecture de plugins extensible pour les tests personnalisés
✅ Implémentation sécurisée en mémoire en Rust
✅ Méthodologie PBIT/CBIT/FBIT conforme aux normes de l'industrie
✅ Intégration native Linux/systemd
✅ Paramètres de test pilotés par la configuration
✅ Surveillance et enregistrement en temps réel