Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Mises à jour OTA Linux embarqué – Partie 1 : Fondamentaux et implémentation

Le besoin de mises à jour

Une fois qu'un produit Linux embarqué quitte le laboratoire pour le terrain, déterminer comment il recevra les mises à jour devient une décision de conception critique.

Même une application en apparence sans faille n'est pas à l'abri du changement : la réalité est que le logiciel accumule inévitablement des bogues et, pour les appareils connectés au réseau ou à Internet, les correctifs de sécurité sont souvent inévitables. Même un firmware théoriquement parfait doit accommoder les vulnérabilités dans les bibliothèques tierces.

Considérez la vulnérabilité Heartbleed (CVE-2014-0160) qui a exposé la bibliothèque cryptographique OpenSSL. La faille a affecté environ deux tiers de tous les sites web et, à ce jour, d'innombrables appareils Linux embarqués embarquent encore une version OpenSSL non corrigée, les laissant exposés à l'exploitation.

Mises à jour basées blocs vs basées fichiers

Les mécanismes de mise à jour pour Linux peuvent être classés en approches basées blocs et basées fichiers. Les mises à jour blocs écrasent une partition ou un périphérique bloc entier en une opération atomique, tandis que les mises à jour fichiers remplacent des fichiers ou paquets individuels — similaire à « apt-get upgrade » sur distributions desktop ou serveur.

Pour Linux embarqué, les mises à jour basées blocs sont préférées car le système de fichiers entier est typiquement produit par un unique pipeline de build et l'empreinte de stockage d'un produit est fixe. Mettre à jour une partition entière en une seule étape simplifie aussi le rollback : une copie de l'image précédente peut être conservée jusqu'à ce que la nouvelle soit vérifiée.

Assurer la récupération après une mise à jour échouée

Aucun appareil ne doit être laissé dans un état inutilisable, surtout si une perte de puissance ou une défaillance d'écriture survient en plein flash. L'atténuation habituelle est de maintenir une partition secondaire qui peut prendre le relais si l'image primaire échoue à démarrer.

Mises à jour OTA Linux embarqué – Partie 1 : Fondamentaux et implémentation
Figure 1. Récupération en cas d'échec – options de repli (Source : ByteSnap)

Deux patterns courants existent :

Si le stockage est abondant, la méthode dual-rootfs est généralement recommandée pour sa simplicité et sa performance. L'approche secours est utile quand l'image principale est grande et l'espace de rechange pour un rootfs dupliqué est limité.

Notez que les chargeurs de démarrage sont typiquement immuables dans cette configuration. Pour mettre à jour un chargeur de démarrage, il faudrait une partition de chargeur additionnelle et un contrôleur de gestion de carte (BMC) capable d'orchestrer la bascule — une solution qui augmente la complexité matérielle et le coût.

Mises à jour OTA Linux embarqué – Partie 1 : Fondamentaux et implémentation
Figure 2. Récupération en cas d'échec – Board Management Controller (Source : ByteSnap)

Puisque le BMC ajoute matériel et firmware supplémentaires, la plupart des concepteurs préfèrent rendre le chargeur de démarrage aussi petit et fiable que possible pour qu'il n'ait jamais besoin de mise à jour OTA.

Exploiter les variables d'environnement U-Boot

U-Boot stocke un environnement non-volatile qui peut être interrogé depuis Linux et manipulé pendant le démarrage. Ces variables sont idéales pour encoder la partition active, suivre les succès de démarrage, et orchestrer la logique de bascule.

Patterns typiques incluent :

En stockant cet état dans U-Boot, le chargeur de démarrage peut automatiquement revenir à l'image précédente si la nouvelle échoue à démarrer un nombre configurable de fois.

Mises à jour OTA Linux embarqué – Partie 1 : Fondamentaux et implémentation
Figure 3. Variables d'environnement U-Boot (Source : ByteSnap)

Embarqué

  1. Fondamentaux des Systèmes Embarqués et Applications Réelles
  2. Systèmes Embarqués : Définition, Architecture et Applications Réelles
  3. Pixus lance des faceplates 6U OpenVPX robustes avec intégrité structurelle renforcée
  4. congatec dévoile écosystème 100 W pour serveurs edge et micro embarqués haute performance
  5. Axiomtek CAPA310 : SBC embarqué 3,5 pouces pour applications critiques
  6. Top 10 des IDE C# pour Windows, macOS et Linux – Revue 2021
  7. Série VL d'Emag : centres de tournage verticaux polyvalents pour petites et grandes séries
  8. Directives DFMA essentielles pour une conception et production PCB efficaces – Partie I
  9. Directives de conception essentielles pour la fabrication et l'assemblage PCB – Partie II