Accueil Articles Comment surmonter les obstacles au développement Linux sur des systèmes aux ressources limitées...

Comment surmonter les obstacles au développement Linux sur des systèmes aux ressources limitées

Figure 1. La carte BeagleV-Fire de BeagleBoard.org est une plateforme SBC compacte permettant d'intégrer des technologies open source dans des systèmes embarqués. (Source de l'image : BeagleBoard.org)
Figure 1. La carte BeagleV-Fire de BeagleBoard.org est une plateforme SBC compacte permettant d'intégrer des technologies open source dans des systèmes embarqués. (Source de l'image : BeagleBoard.org)

Auteur : Rolf Horn – Ingénieur d'applications, DigiKey Electronics

Les technologies open source offrent aux développeurs de produits électroniques la possibilité de réduire les coûts, d'accélérer la mise sur le marché et d'allonger le cycle de vie des produits en supprimant les barrières liées à la propriété intellectuelle et en favorisant la collaboration. Aujourd'hui, les opportunités offertes par l'open source couvrent l'ensemble de la pile système, des systèmes d'exploitation aux ordinateurs monocartes (SBC) en passant par la propriété intellectuelle des semi-conducteurs.

Cependant, les exigences de calcul élevées, les risques de sécurité et les défis liés à la latence déterministe restent un problème pour l'exécution de Linux sur des appareils aux ressources limitées, tels que les systèmes IoT industriels (IIoT) et les systèmes robotiques.

Cet article passe brièvement en revue les défis rencontrés par les concepteurs lors de l'implémentation de Linux sur des systèmes aux ressources limitées. Il présente ensuite l'ordinateur monocarte BeagleV-Fire de BeagleBoard.org, associé à Linux, et explique comment il permet d'optimiser la flexibilité des conceptions futures. Une démonstration de l'utilisation des BSP (Board Support Packages) open source de Microchip Technology pour créer une configuration Linux initiale est également fournie.

Les défis du développement open source dans les systèmes embarqués

L'adoption des technologies open source dans le développement embarqué est désormais bien établie. La conception matérielle et l'intégration logicielle sont accélérées par les ressources prêtes à l'emploi proposées par un vaste écosystème de fabricants et d'ingénieurs. En particulier, la flexibilité de Linux en a fait une solution logicielle de référence pour les systèmes nécessitant des fonctionnalités réseau, des frameworks applicatifs de haut niveau et l'intégration de l'intelligence artificielle (IA).

Cependant, le déploiement de Linux sur des appareils disposant de plus de ressources soulève des considérations supplémentaires :

  • Besoins en ressources de calcul : Les microcontrôleurs traditionnels peinent à répondre aux besoins en mémoire et en stockage, même des distributions Linux minimales. L’ajout de services en arrière-plan pour les applications, sous-systèmes et frameworks (USF) en espace utilisateur accroît la consommation de ressources, rendant les piles logicielles volumineuses impraticables.
  • Latence : Les applications de haute précision, telles que la robotique et l’automatisation industrielle, exigent une synchronisation prévisible pour la coordination du système et la sécurité opérationnelle. Si la fonctionnalité PREEMPT_RT du noyau Linux améliore le déterminisme, les systèmes d’exploitation temps réel (RTOS) dédiés offrent une latence et une surcharge moindres pour les matériels aux ressources limitées.
  • Sécurité : Les systèmes embarqués déployés dans des environnements publics sont exposés à des risques d’accès non autorisé. Par conséquent, des mesures de sécurité standard telles que le démarrage sécurisé, la protection contre la falsification et une racine de confiance matérielle (RoT) sont essentielles. De plus, des réglementations comme le règlement européen sur la cyber-résilience (CRA) exigent que les produits comportant des composants numériques soient sécurisés dès leur conception.
  • Énergie : Les dispositifs périphériques fonctionnent généralement dans des environnements isolés aux ressources énergétiques limitées. Une meilleure efficacité énergétique permet d’allonger l’autonomie de la batterie ou de fonctionner grâce à l’alimentation électrique ambiante. De même, une meilleure efficacité énergétique simplifie la gestion thermique et améliore le rendement par watt, favorisant ainsi le traitement avancé en périphérie de réseau.
  • Gestion du cycle de vie : La CRA exige que les appareils numériques bénéficient d’un support pendant au moins cinq ans, alors que de nombreux déploiements industriels nécessitent une disponibilité produit de 10 à 15 ans. Par conséquent, pour garantir une compatibilité continue avec le noyau Linux, les développeurs doivent prévoir la possibilité de mises à niveau et la disponibilité du matériel.

Pour surmonter ces difficultés, les développeurs peuvent s'appuyer sur des ressources supplémentaires issues des écosystèmes open source et Linux embarqué et tirer parti des combinaisons matérielles et logicielles simplifiées de Linux pour des applications périphériques en évolution rapide.

Implémentation Linux utilisant des SBC ouverts et RISC-V

Bien que les distributions Linux généralistes facilitent le développement d'applications, elles incluent souvent des paquets et des services superflus. À l'inverse, le projet Yocto, basé sur OpenEmbedded, permet aux développeurs de créer des images Linux personnalisées, adaptées à des cas d'utilisation spécifiques. Ceci élimine les fonctionnalités inutiles et permet à des distributions légères de fonctionner sur du matériel aux ressources limitées, tout en conservant des capacités avancées telles que la vision par ordinateur basée sur l'IA ou la maintenance prédictive à l'aide d'outils standard.

De plus, le projet Yocto offre aux développeurs :

  • Constructions reproductibles pour une maintenance à long terme
  • Configuration de base personnalisée pour améliorer les performances, la sécurité et la réactivité
  • Intégration de couches spécifiques sur la carte pour garantir la compatibilité matériel-logiciel et réduire le temps de développement

L'intégration aisée avec les mécanismes de mise à jour OTA (Over-The-Air) tels que SWUpdate, RAUC et Mender permet également aux développeurs d'améliorer régulièrement les performances et la sécurité des appareils tout au long de leur cycle de vie. De ce fait, le projet Yocto est devenu une norme pour les systèmes Linux embarqués.

De même, les cartes SBC open source sont utilisées depuis longtemps pour accélérer le développement d'applications Linux, car elles offrent une plateforme de référence prête à l'emploi qui combine ressources de traitement, de mémoire, de stockage et d'E/S dans un format compact. Grâce aux cartes SBC open source, les développeurs peuvent rapidement prototyper un système, valider leur pile logicielle, puis migrer vers un matériel personnalisé avec un minimum de modifications.

L'architecture de jeu d'instructions RISC-V, basée sur un standard ouvert, va encore plus loin en permettant aux concepteurs de systèmes de créer des plateformes de traitement personnalisées sans frais de licence onéreux. Avec RISC-V, les concepteurs peuvent choisir les parties du jeu d'instructions à inclure et même les étendre pour répondre à leurs cas d'utilisation spécifiques. Les conceptions originales ayant été créées sous licence Berkeley Software Distribution (BSD), les œuvres dérivées peuvent être libres et gratuites ou propriétaires.

Pour les développeurs et les architectes, le projet Yocto, les cartes SBC ouvertes et RISC-V réduisent la dépendance aux feuilles de route des fournisseurs uniques, ce qui accroît la flexibilité de conception à long terme. De plus, le soutien croissant apporté à RISC-V par le noyau Linux et l'adhésion du projet Yocto au programme RISC-V Platinum témoignent de l'intérêt de la communauté Linux embarqué.

Une carte mère RISC-V haute performance pour une intégration Linux compacte

La carte BeagleV-Fire (SBC) open source de BeagleBoard.org (Figure 1) offre une plateforme compacte et riche en E/S pour relever ces défis. Intégrant un système sur puce (SoC) FPGA PolarFire de Microchip, elle garantit un fonctionnement basse consommation, des fonctionnalités de sécurité matérielles et un cluster de processeurs RISC-V cohérent prenant en charge les applications Linux exécutant des charges de travail en temps réel. Les développeurs peuvent utiliser cette carte pour prototyper des contrôleurs robotiques, des passerelles industrielles, des accélérateurs d'IA embarquée et des plateformes d'E/S personnalisées sous Linux embarqué.

Cette plateforme compacte mesure 86.38 mm × 54.61 mm × 18.8 mm et repose sur le SoC basse consommation PolarFire MPFS025T-FCVG484E. Elle intègre une architecture multicœur cohérente avec quatre cœurs d'application RV64GC pour l'exécution de Linux et un cœur de surveillance RV64IMAC pour la gestion des fonctions de bas niveau.

Pour optimiser les performances et garantir la précision des données sur tous les cœurs, le SoC PolarFire intègre un cache L2 partagé, un sous-système mémoire cohérent et un contrôleur mémoire DDR pour prendre en charge 2 gigaoctets (Go) de mémoire LPDDR4 embarquée. Les applications complexes bénéficient également d'une mémoire eMMC de 16 Go et d'une mémoire flash SPI de 128 mégabits (Mbit) sur la BeagleV-Fire.

Outre le sous-système de processeur RISC-V, le SoC PolarFire intègre une matrice FPGA (Figure 2) permettant aux développeurs de concevoir des chemins de traitement déterministes pour les applications temps réel à faible latence et d'implémenter une accélération matérielle personnalisée pour les inférences d'IA. Intégrée au système complet, cette matrice comprend 23 000 éléments logiques et ses propres ressources supplémentaires, lui permettant de fonctionner indépendamment des cœurs de traitement principaux.

Schéma du FPGA Microchip PolarFire SoC (cliquer pour agrandir)Figure 2. La famille de SoC PolarFire de Microchip combine plusieurs cœurs de traitement RISC-V avec une architecture FPGA polyvalente pour les charges de travail déterministes. (Source de l'image : Microchip Technology)

Grâce à ses multiples options de démarrage sécurisé, le SoC PolarFire intègre des fonctionnalités de sécurité matérielle permettant aux développeurs de mettre en œuvre un modèle de sécurité avancé, ce qui en fait une plateforme idéale pour répondre aux exigences modernes en matière de cybersécurité. Ces fonctionnalités incluent :

  • Racine de confiance matérielle immuable grâce à une fonction physiquement non clonable (PUF)
  • Stockage sécurisé des clés avec programmation unique (OTP) ou stockage non volatil sécurisé utilisant des secrets de périphérique uniques (UDS) et un contrôle d'accès aux clés appliqué par le matériel.
  • Un module anti-sabotage

Par ailleurs, la BeagleV-Fire offre plusieurs ports physiques intégrés permettant de construire un système prêt à l'emploi pour la vérification et le test de distributions Linux personnalisées (Figure 3). Parmi ceux-ci figurent un port Ethernet Gigabit RJ45, un port USB Type-C pour l'alimentation et la connectivité, un connecteur M.2 Key E, deux connecteurs Cape 46 broches compatibles BeagleBone pour l'extension de l'écosystème, et une interface série caméra (CSI) pour une intégration directe. Un connecteur JTAG TAG-CONNECT est prévu pour le débogage, et la BeagleV-Fire prend également en charge l'extension compatible SYZYGY pour les périphériques orientés FPGA.

Image de la carte BeagleV-Fire provenant de BeagleBoard.org avec les ports étiquetésFigure 3. Malgré sa petite taille, la carte BeagleV-Fire de BeagleBoard.org offre plusieurs ports physiques pour une interconnexion immédiate des applications. (Source de l'image : BeagleBoard.org)

Comment configurer Linux initialement sur la carte BeagleV-Fire SBC

Pour créer une distribution Linux légère pour la BeagleV-Fire, les développeurs doivent d'abord se procurer une couche BSP adaptée auprès du projet Yocto. Celle-ci fournit la configuration U-Boot, la configuration par défaut du noyau Linux, les arbres de périphériques nécessaires à la prise en charge de la carte et les définitions de périphériques. Un dépôt GitHub propose toutes les couches BSP du kit d'évaluation PolarFire SoC, y compris celle de la BeagleV-Fire.

Après avoir installé toutes les dépendances nécessaires du projet Yocto, les couches suivantes constituent la base de la compilation et doivent être clonées :

  • bitbake
  • méta-noyau embarqué ouvert
  • méta-yocto (pour la distribution de référence Poky)
  • méta-mchp-commun
  • méta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-communauté
  • Couches supplémentaires selon les besoins du projet

Une fois cette étape terminée, une image minimale peut être créée à l'aide de la cible MACHINE = "beaglev-fire" et d'un fichier de configuration kas. La liste 1 présente un exemple de configuration :

Copier
header:
  version: 19
 
repos:
  openembedded-core:
    url: git://git.openembedded.org/openembedded-core.git
    # yocto-5.0.15
    commit: 6988157ad983978ffd6b12bcefedd4deaffdbbd1
    layers:
      meta:
 
  bitbake:
    url: git://git.openembedded.org/bitbake.git
    # yocto-5.0.15
    commit: 8dcf084522b9c66a6639b5f117f554fde9b6b45a
    layers:
      bitbake: disabled
 
  meta-yocto:
    url: git://git.yoctoproject.org/git/meta-yocto.git
    # yocto-5.0.15
    commit: 9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
    layers:
      meta-poky:
      meta-yocto-bsp:
 
  meta-mchp:
    url: https://github.com/linux4microchip/meta-mchp.git
    branch: scarthgap
    path: layers/third-party/meta-mchp
    layers:
      meta-mchp-common:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community:
 
machine: beaglev-fire
 
 
local_conf_header:
  Users: |
    EXTRA_IMAGE_FEATURES = "allow-empty-password empty-root-password \
allow-root-login"

Exemple de fichier de configuration (Liste 1) : ce fichier génère tous les éléments nécessaires au démarrage de la BeagleV-Fire dans un shell simple. (Source : Microchip Technology)

L'exécution de « kas build core-image-minimal » créera alors tous les artefacts de compilation nécessaires pour démarrer le BeagleV-Fire dans un shell simple, y compris les binaires U-Boot et une image FIT contenant le noyau Linux et ses modules, l'arbre de périphériques et le système de fichiers racine.

Une fois une image Linux minimale créée pour la BeagleV-Fire à l'aide du projet Yocto, il est possible de suivre les procédures standard pour créer une image personnalisée et l'adapter aux exigences spécifiques du projet. En robotique et dans les systèmes industriels, par exemple, Linux est souvent utilisé conjointement avec un système d'exploitation temps réel (RTOS) plus traditionnel, tel que FreeRTOS ou Zephyr, afin de permettre un traitement avancé tout en assurant des opérations critiques en termes de temps. Cette fonctionnalité est parfaitement prise en charge par le SoC PolarFire de la BeagleV-Fire, qui peut être configuré pour exécuter simultanément plusieurs systèmes d'exploitation ou applications bare-metal.

Étant donné que de nombreux systèmes embarqués ont une durée de vie de 10 ans ou plus, l'association de l'architecture RISC-V ouverte, de Linux et de la reproductibilité basée sur Yocto permet aux plateformes PolarFire SoC de s'adapter aux nouvelles menaces de sécurité et aux exigences applicatives grâce à des mises à jour locales ou OTA régulières. Ainsi, la carte BeagleV-Fire SBC constitue un excellent point de départ pour l'adoption de l'open source, renforçant la flexibilité et la longévité des systèmes intelligents en périphérie de réseau.

Conclusion

Les limitations de calcul, les exigences de latence déterministe, les vulnérabilités en matière de sécurité et les impératifs de cycle de vie long peuvent constituer des défis majeurs lors de l'exécution de Linux sur des systèmes embarqués aux ressources limitées. La carte BeagleV-Fire (SBC) de BeagleBoard.org offre une architecture hybride qui combine les capacités de RISC-V Linux avec la logique déterministe basée sur FPGA et des fonctionnalités de sécurité matérielles pour relever ces défis. Associée au projet Yocto et aux couches BSP open source de Microchip, cette plateforme permet aux développeurs de créer des distributions Linux personnalisées et traçables, optimisées pour la robotique à longue durée de vie, l'IIoT et les applications de calcul en périphérie.

source: DigiKey