Un petit tour avec Yocto

J’ai eu récemment l’occasion de mettre en œuvre Yocto. J’avais déjà pas mal pratiqué OpenEmbedded auparavant. On peut voir Yocto comme un projet dérivé d’OpenEmbedded même si c’est un peu plus que cela.

En effet Yocto c’est Poky (un système de build qui s’appuie sur OpenEmbedded), quelques outils de build recréés pour l’occasion (swabber, pseudo, etc..) ainsi qu’un ensemble de méta données permettant de créer des distributions embarquées pour un certain nombre de cibles.

La force mais aussi la faiblesse d’OpenEmbedded c’est que c’est un système de build qui peut tout faire: des images finales de rootfs, mais aussi une distribution complète avec son dépôt de paquets prêt à l’emploi, et cela sur plusieurs plateformes matérielles. Cela en fait un système complexe à mettre en œuvre et à prendre en main. Il y a encore 2 ans, la documentation d’OpenEmbedded participait à cette difficulté de prise en main. En effet OpenEmbedded fournissait bien une documentation mais qui ne prenait vraiment tout son sens seulement une fois que l’on avait commencé à maîtriser le sujet. Ce qui est assez paradoxal pour une documentation. Il manquait les éléments qui permettent aux développeurs de rentrer dans ce système de build.

Avec Yocto j’ai pu constater qu’il y a eu un réel progrès de ce côté
là. Le projet vient avec une documentation beaucoup plus complète et surtout beaucoup plus accessible. La prise en main n’est tout de même pas immédiate mais cette fois cela est plutôt dû à la complexité et à la richesse de l’outil.

En quelques heures je suis quand même parvenu à développer un BSP (Board Support Package) minimaliste pour une carte donnée (en l’occurrence une AT91SAM9G20-EK). Le concept de layer permet d’avoir une couche de configuration spécifique pour un matériel donné. On peut en fait même supporter plusieurs matériels différents et on peut aussi ajouter des paquets spécifiques. En fait un layer n’est rien de plus qu’un ensemble de paquets et de configurations ou de surcharges de configurations. Le BSP n’est qu’un layer spécifique à un matériel (ou à un ensemble de matériel). Comme on le voit même pour le support d’une simple carte électronique, il y a déjà beaucoup de concepts qui entrent en jeu. Il y a aussi déjà de nombreuses façon de faire qui arriveront à la même fin mais qui seront plus ou moins faciles à maintenir. Le concept de BSP se rapproche surtout d’un « guideline » pour permettre à la « communauté Yocto » d’avoir un référentiel commun. Je tâcherai d’illustrer la mise en œuvre d’un BSP sur la carte AT91SAMG20-EK dans mes prochains articles ici même et/ou sur ma page Google+.

Une autre avancée notable de Yocto est son optimisation pour le temps de la première compilation d’une cible « minimale », je suis passé de plus de 3 heures à une légèrement plus d’heure maintenant. Cela reste quand même très long notamment pour une cible qui se veut minimale.

Pour faire une image d’un système avec quelques composants seulement, Buildroot reste largement plus approprié. Pour des systèmes requérant un grand nombre de composants, alors il vient souvent le besoin de fonctions plus avancées comme la gestion d’un dépôt de paquet ou la prise en charge de plusieurs plateformes matérielles par exemple. Dans ce cas-là, Yocto reste la meilleure (la seule?) option d’autant plus que ce projet tend à améliorer les points faibles historiquse d’OpenEmbedded.

Nouvelle formation « Développement système Android »

Android RobotDepuis de nombreuses années, Bootlin a proposé deux sessions de formation pour les développeurs Linux embarqué : une session développement système Linux embarqué focalisée sur les bases pour le développement Linux embarqué (configuration, compilation et utilisation de bootloaders et du noyau, intégration du système et outils de vbuild, compilation croisée, systèmes de fichiers, développement et déboguage d’applications) et une session développement noyau Linux et pilotes de périphériques focalisée sur le développement noyau (APIs noyau pour les drivers, pilotes de périphériques caractère, device model, gestion d’énergie, portage du noyau, etc.). Au total, nous avons donné plusieurs dizaines d’éditions de ces deux sessions un peu partout dans le monde. Tous les supports de ces sessions de formation sont disponibles librement sous une licence libre (Creative Commons CC-BY-SA) et sont donc librement accessibles à l’adresse /docs/.

Nous annonçons maintenant une nouvelle session de formation, appelée Développement Système Android. Il s’agit d’une formation de quatre jours destinée aux ingénieurs qui doivent développer des systèmes embarqués avec le système Android de Google.

Au travers de cours théoriques et de travaux pratiques, cette formation permet de se familiariser avec la compilation et le démarrage d’Android, à l’adaptation d’Android à une nouvelle plateforme matérielle (en supposant que celle-ci est déjà supportée par le noyau Linux), à la construction d’un système réel nécessitant l’accès à des périphériques matériels spécifiques, à la personnalisation du système de fichiers et aux techniques de déboguage. Le programme complet (en version anglaise) est disponible. À nouveau, les supports de formations seront mis à disposition librement au travers de la licence Creative Commons CC-BY-SA.

Si vous êtes intéressé par cette session de formation, vous pouvez:

  • Participer à la session de formation inter-entreprises organisée à Toulouse, France, du 11 au 14 juin 2012.
  • Commander une session sur site qui sera animée dans vos locaux. Voir les détails d’organisation et de coût.

Cette session de formation sera donnée par notre ingénieur Maxime Ripard qui a acquis son expérience Android en travaillant chez Archos sur les tablettes Android, en faisant marcher Android et les travaux pratiques de cette formation sur plusieurs cartes à base de processeur OMAP3, ainsi qu’en assistant aux multiples conférences d’Android Builders Summit.

N’hésitez pas à nous contacter pour de plus amples informations sur cette nouvelle session de formation.

Actus trimestrielles: bilan 2011, voeux et projets pour 2012

Toute l’équipe de Bootlin vous souhaite une Bonne Année 2012 avec tout le succès dans vos projets professionnels et personnels. Nous profitons de cette occasion pour vous donner des nouvelles de Bootlin.

Cette année, Bootlin :

A travaillé sur de multiples projets pour différents clients.

En voici les plus importants :

  • Développement d’un système Linux embarqué et d’une application à base de Qt pour un équipement RFID/GSM à base de processeur ARM AT91.
  • Réduction du temps de démarrage sur un terminal de paiement sur plateforme MIPS, en améliorant l’intégration du système Linux embarqué.
  • Développement d’un système Linux embarqué pour un équipement à base d’ARM AT91 pour le secteur médical (adaptation du noyau et du chargeur de démarrage, intégration du système, portage d’application)
  • Portage du jeu de patches PREEMPT_RT vers le noyau 2.6.32 fourni par Texas Instruments
  • Développement de driver pour les convertisseurs Analogique vers Numérique inclus dans les processeurs AT91.
  • Conduite d’une analyse de performance temps-réel des solutions PREEMPT_RT et Xenomai sur des processeurs AT91.
  • Développement d’un dérivé d’Ubuntu pour la BeagleBoard, pour un système embarqué d’acquisition et d’analyse d’image avec OpenCV.
  • Réduction du temps de démarrage sur plateforme i.MX, avec des modifications majeures apportées au chargeur de démarrage.
  • Développement d’un démonstrateur pour le tableau de contrôle d’une voiture de course, sur plateforme AT91, avec une application graphique utilisant la bibliothèque Qt.

A aidé ses clients à résoudre leurs problèmes en rapport avec Linux embarqué, à travers l’assistance technique apportée par les ingénieurs de Bootlin.

A contribué à plusieurs projets open-source :

  • 167 patches pour l’outil de compilation Buildroot
  • 6 patches pour le noyau Linux. De nombreux autres sont à attendre quand notre driver ADC pour AT91 sera intégré à la version officielle.
  • 6 patches pour le chargeur de démarrage Barebox
  • 4 patches pour le chargeur de démarrage U-Boot
  • 3 patches pour le projet LTT-ng

A animé de nombreuses sessions de nos formations Développement de systèmes Linux embarqué et Noyau Linux et développement de pilotes de périphériques. Les supports de ces formations sont mis à jour en permanence et sont toujours disponibles sous une licence Creative Commons.

A préparé des supports pour notre nouvelle formation sur le développement de systèmes embarqués avec Android. Il s’agit d’une formation de quatre jours pour comprendre l’architecture du système Android, comment compiler et personnaliser Android pour une plateforme matérielle spécifique, et comment étendre la plateforme d’Android pour prendre en charge de nouveaux périphériques. Une première session inter-entreprises sera organisée en Juin à Toulouse.

A remplacé la carte CALAO USB-A9263 (à base d’AT91) utilisée dans notre formation « Développement de systèmes Linux embarqué » par la carte IGEPv2 d’ISEE (à base d’OMAP3), bien plus puissante et offrant plus de possibilités de développement pour notre formation.

A engagé un nouvel ingénieur, Maxime Ripard, ayant de l’expérience avec Android et en Linux embarqué, et créé un nouvel établissement à Toulouse.

A déplacé son siège à Orange dans le Vaucluse. Tout en restant assez proches de la Côte d’Azur, notre région d’origine, nous nous rapprochons des autres régions de France.

A donné deux présentations à l’Embedded Linux Conference Europe à Prague (Utilisation de Buildroot dans de vrais projets et Qt pour applications non graphiques), a donné une présentation sur la réduction du temps de démarrage à la conférence de GENIVI à Dublin, et à donné cinq éditions d’un séminaire d’introduction à Linux embarqué dans différentes régions de France.

A participé à plusieurs conférences, pour lesquelles l’équipe de Bootlin a aussi enregistré et publié des vidéos des présentations :

A participé au développement de la communauté de Linaro, une organisation d’ingénierie travaillant à l’amélioration de Linux sur la plateforme ARM. En plus de s’assurer que Linaro se dote de l’infrastructure nécessaire pour cultiver une communauté de développeurs et d’utilisateurs, nous avons aussi assisté les utilisateurs des releases de Linaro sur Ask Linaro.

En 2012, nous avons pour projets :

De travailler sur de nouveaux projets de portage de noyau Linux, de réduction du temps de démarrage, de gestion de l’énergie et d’intégration de systèmes Linux embarqué.

D’annoncer de nouvelles sessions de formation :

  • Une formation sur Git. Une session de deux jours pour bien comprendre comment utiliser le système distribué de gestion de versions Git, à la fois pour des projets internes et pour contribuer à des projets open-source.
  • Une formation avancée sur Buildroot. Une session de trois jours pour avoir une compréhension claire et détaillée du système de compilation Buildroot : comment rajouter de nouveaux composants, comment le personnaliser pour produire un système de fichiers complet pour une plateforme matérielle donnée.

Comme nous sommes en train de préparer ces formations, nous sommes particulièrement intéressés par vos retours. N’hésitez pas à nous faire part de vos idées et de vos besoins sur ces sujets.

De passer notre formation Noyau Linux et développement de pilotes de périphériques sur une plateforme à base d’OMAP3, et l’étendre couvrir le développement d’un pilote pour un périphérique I2C connecté à la carte.

De migrer nos supports de formation vers une format source textuel (LaTeX), et les développer depuis un arbre Git public. Il deviendra ainsi plus facile de contribuer à ces support et de suivre les changements entre les versions.

De participer à plusieurs conférences. Bootlin sera présent au FOSDEM à Bruxelles en février, à l’Android Builders Summit et l’Embedded Linux Conference à San Francisco en février, et aussi à L’Embedded Linux Conference Europe à Barcelone en Octobre. Cette participation aux conférences permet aux ingénieurs de Bootlin de bien connaître les derniers développements dans le domaine de Linux embarqué, et de créer de précieux contacts dans la communauté.

Vous pouvez suivre les actualités de Bootlin en lisant notre blog (24 articles en 2011), nos actualités francophones (12 billets en 2011) and en suivant nos nouvelles brèves sur Twitter.

Bootlin reste à votre disposition pour vous accompagner dans vos projets sur Linux embarqué, via nos services de développement et d’assistance technique, et via nos sessions de formation. N’hésitez pas à nous contacter !

Bien cordialement, et une nouvelle fois : bonne année 2012 !

Grégory, Maria, Maxime, Michael et Thomas – Bootlin

Séminaire gratuit « Introduction à Linux embarqué » près de Lyon, jeudi 15 décembre

Logo CaptronicAprès Montpellier au mois de mars, puis Clermont-Ferrand et Limoges au mois de juin et Marseille au mois d’octobre, nous animerons une nouvelle édition de notre séminaire d’une demi-journée « Introduction à Linux embarqué », le jeudi 15 décembre de 14h à 18h à Villefontaine dans la région de Lyon. Comme chaque séminaire, il est organisé par Captronic et accessible gratuitement après inscription. Toutes les informations pratiques (lieu, modalités d’inscription) sont disponibles sur le site de Captronic.

Ce séminaire d’introduction a pour objectif de présenter les possibilités offertes par le système Linux et par les composants open-source dans le cadre du développement d’un projet embarqué :

  • Introduction
  • Bref historique de Linux et du monde open-source
  • Les avantages de Linux et de l’open-source dans l’embarqué
  • Matériel nécessaire pour utiliser Linux embarqué, quelques exemples de plateformes répandues.
  • L’offre du monde open-source pour les systèmes embarqués
    • La chaîne de compilation
    • Les chargeurs de démarrage
    • Le noyau Linux et les pilotes de périphériques
    • Les bases du système
    • Les bibliothèques graphiques et multimédia
    • Les composants orientés réseau
    • Les extensions temps-réel
  • Le système Android, comparaison avec Linux embarqué
  • Le processus de développement d’un système Linux embarqué
    • Les licences open-source
    • Construction du système Linux
    • Développement et mise au point des applications
  • Le support commercial et le support communautaire. Comment s’appuyer sur la communauté open-source pour accélérer le développement de son système embarqué.
  • Conclusion – Débat – Questions/réponses

Des démonstrations illustrant l’utilisation pratique de Linux embarqué sur une carte ARM seront réalisées au fil de la présentation. En complément du séminaire en lui-même, cet événement est également une occasion pour rencontrer Bootlin sur la région lyonnaise.

Le séminaire sera animé par Thomas Petazzoni, ingénieur Linux embarqué chez Bootlin. Il est également un des principaux développeurs de Buildroot, un outil de construction de systèmes Linux embarqué, et utilisateur/développeur sous système Linux depuis plus de dix ans.

Stage sur Linux embarqué à Toulouse (2012)

  • Penguin worksIntitulé du stage: Participation à des projets Linux embarqué
  • Période: printemps-été 2012
  • Type de stage: École d’ingénieurs – Stage de fin d’études
  • Lieu: Toulouse, France

Bootlin est une société proposant des services et des formations dans le domaine Linux embarqué. Fortement impliquée dans la communauté du Logiciel Libre, Bootlin est amené dans le cadre de projets de développement pour ses clients ou de la préparation de formations, à explorer et contribuer à l’amélioration de nombreuses briques logicielles du monde Linux embarqué.

L’objectif de ce stage est de participer, avec les ingénieurs Bootlin, à différents projets Linux embarqué de la société. Le stagiaire pourra notamment être amené à :

  • Développer des améliorations pour des briques logicielles Linux embarqué (chargeurs de démarrage, noyau Linux, outils de construction de systèmes Linux embarqué, etc.) et contribuer directement ces améliorations à la communauté open-source.
  • Expérimenter et explorer certaines technologies Linux embarqué (exemples de thématiques possibles: Android sur ARM, support multimédia et 3D sur processeur ARM, outils de tracing, développement de pilotes noyau Linux pour des besoins de formation, etc.), réalisation de démonstrations de ces technologies.
  • Rédiger et publier, sous licence libre, des articles techniques sur les différentes technologies explorées et des démonstrations de ces technologies.

L’intégralité des travaux réalisés pendant le stage sera diffusé sous une licence libre, aussi bien pour le code que la documentation technique.

Qualités et compétences requises ou souhaitées :

  • Autonomie, recherche d’informations et de ressources sur le Web, connaissance du fonctionnement des communautés Logiciel Libre / Open Source et des outils correspondants (gestion de version, Wiki, IRC, etc.)
  • Développement en C sous Linux
  • Connaissance générale du fonctionnement d’un système Linux
  • De préférence, un intérêt pour le bas niveau, le support du matériel et une connaissance minimale des systèmes Linux embarqué.
  • Bonne maîtrise de l’anglais à l’oral comme à l’écrit
  • Adhésion aux valeurs du Logiciel Libre, au cœur de la culture de notre société.

Le stage se déroule dans les locaux de Bootlin dans la région toulousaine, sous l’encadrement d’un ingénieur de la société.