Apprendre Linux pour les systèmes embarqués
On m’a récemment demandé comment une personne expérimentée dans la programmation de systèmes embarqués avec des processeurs 8 bits, tels que PIC, ainsi que des processeurs 32 bits, tels que PowerPC, mais sans expérience Linux, peut apprendre à utiliser Linux embarqué.
Ce que je recommande toujours à un tel programmeur de systèmes embarqués, c’est ceci: Considérez Linux embarqué comme deux parties, la partie embarquée et la partie Linux. Considérons d’abord la partie Linux.
Côté Linux
Les systèmes d’exploitation abondent et les choix sont nombreux pour un système embarqué, à la fois propriétaire et open source. Linux est l’un de ces choix. Peu importe ce que vous utilisez pour votre hôte de développement, que ce soit Linux, Windows ou Mac, vous devez apprendre à programmer à l’aide du système d’exploitation cible. À cet égard, l’utilisation de Linux embarqué n’est pas très différente de l’utilisation de VxWorks, WindowCE ou d’un autre système d’exploitation. Vous devez comprendre comment le système d’exploitation est conçu, comment le configurer et comment programmer à l’aide de son interface de programmation d’application (API).
Quelques facteurs facilitent l’apprentissage de la programmation Linux par rapport aux autres systèmes d’exploitation embarqués. Vous trouverez de nombreux livres et tutoriels sur Linux, ainsi que sur Unix dont il est dérivé — beaucoup plus que pour les autres systèmes d’exploitation. Les ressources en ligne pour Linux sont nombreuses, tandis que d’autres systèmes d’exploitation ont une présence beaucoup plus petite, ou pilotée par le fabricant du système d’exploitation. Linux est open source, et vous pouvez lire le code pour comprendre exactement ce que fait le système d’exploitation, ce qui est souvent impossible avec un système d’exploitation propriétaire distribué sous forme de binaires. (Je ne recommande certainement pas de lire Linux source pour essayer d’apprendre à programmer Linux. C’est comme essayer d’apprendre à conduire en étudiant le fonctionnement de la transmission d’une voiture.)
Le facteur le plus important qui distingue Linux des autres systèmes d’exploitation est que le même noyau est utilisé pour tous les systèmes, des plus petites cartes intégrées aux systèmes de bureau, en passant par les grandes fermes de serveurs. Cela signifie que vous pouvez apprendre une grande quantité de programmation Linux sur votre bureau dans un environnement beaucoup plus flexible que l’utilisation d’une carte cible avec toutes les complexités de la connexion à la cible, du téléchargement d’une programmation de test et de l’exécution du test. Tous les concepts de base et la plupart des API sont les mêmes pour votre Linux de bureau et votre Linux embarqué.
Installation de Linux
Vous pouvez installer une distribution Linux de bureau sur votre système de développement, en remplacement de votre système Windows ou Mac, mais cela peut être un morceau assez important à mordre à la fois, car vous devrez probablement configurer le courrier électronique, apprendre de nouveaux outils et vous familiariser avec une interface de bureau différente. Vous pouvez installer Linux dans un environnement à double démarrage, où vous utilisez l’ancien environnement pour le courrier électronique, etc., et utiliser le système Linux pour l’apprentissage. Cela peut être assez gênant, car vous devez fermer un environnement pour faire apparaître l’autre. De plus, faire dans un environnement d’entreprise peut être peu pratique ou impossible. Les informaticiens préfèrent prendre en charge un environnement connu, pas celui que vous avez choisi.
Un moyen plus simple consiste à créer un environnement de machine virtuelle sur votre système de développement actuel. Pour les hôtes Windows, vous pouvez installer VMware Player ou VirtualBox, et sur Mac, vous pouvez installer Parallels ou VMware Fusion. L’utilisation d’une machine virtuelle vous offre beaucoup plus de flexibilité. Vous pouvez installer une distribution Linux de bureau, comme Ubuntu ou Fedora. Vous pouvez utiliser cette distribution pour vous familiariser avec les concepts de base de Linux, apprendre le shell de commande et apprendre à créer et exécuter des programmes. Vous pouvez reconfigurer le noyau ou charger les pilotes, sans craindre de planter votre système de bureau. Vous pouvez créer l’ensemble de l’environnement du noyau et de l’application, comme vous pouvez le faire avec un environnement de développement croisé pour une cible Linux embarquée.
Si votre machine virtuelle exécutant Linux se bloque, il vous suffit de redémarrer la machine virtuelle. Le crash n’affecte pas d’autres choses que vous pourriez faire sur votre système de développement, comme la lecture d’une page Web sur la façon de créer et d’installer un pilote, ou l’écriture d’un e-mail sur l’une des nombreuses listes de diffusion du support.
Certains produits de machine virtuelle ont des fonctionnalités d’instantané qui vous permettent de prendre un point de contrôle d’une configuration de travail connue, auquel vous pouvez revenir en arrière si vous ne pouvez pas corriger facilement un plantage. Cet instantané est beaucoup plus facile que d’essayer de sauver un système de bureau en panne ou une carte cible qui ne répond pas.
Une machine virtuelle Linux s’exécutant sur votre bureau n’est pas un modèle parfait pour un environnement Linux embarqué. La machine virtuelle émule le matériel d’un système de bureau, avec un ensemble limité de périphériques peu susceptibles de correspondre à une cible intégrée réelle. Mais notre objectif à ce stade n’est pas de modéliser une cible réelle (quelque chose que nous discuterons plus tard) mais de créer un environnement où vous pouvez apprendre les concepts et la programmation Linux facilement.
C’est la première étape : Créez une machine virtuelle et installez une distribution Linux de bureau sur la machine virtuelle. Nous choisirons d’ici dans notre prochain épisode.
Michael Eager est consultant principal chez Eager Consulting à Palo Alto, en Californie. Il a plus de quatre décennies d’expérience dans le développement de compilateurs, de débogueurs et de simulateurs pour une large gamme d’architectures de processeurs utilisées dans les systèmes embarqués. Ses clients actuels et anciens comprennent de grandes entreprises de semi-conducteurs et des développeurs de systèmes. Michael a été membre du Comité de la norme ISO C++ et des comités ABI pour plusieurs architectures de processeurs. Il est président du Comité des normes de débogage pour DWARF, un format de données de débogage largement utilisé. Il est actif dans les communautés open-source et Linux.
Liens connexes:
- Apprentissage de Linux pour les systèmes embarqués
- Mise en route avec Linux embarqué: Deuxième Partie
- Mise en route avec Linux embarqué: Troisième Partie
- Mise en route avec Linux Embarqué: Quatrième Partie
- Mise en route avec Linux Embarqué: Cinquième Partie
- Mise en route avec Linux Embarqué: Sixième Partie
- Mise en route avec Linux Embarqué: Septième partie