Actualités trimestrielles Bootlin: septembre 2014

Bootlin a le plaisir de partager avec vous des nouvelles des activités de formation et de contribution de la société.

Contributions au noyau Linux

Depuis notre dernier bulletin d’informations, nos ingénieurs ont continué à faire d’importantes contributions au noyau Linux, en particulier dans le domaine du support des processeurs ARM et des plateformes utilisant ceux-ci.

  • 218 patches de Bootlin ont été intégrés à Linux 3.15, ce qui place Bootlin au 12ème rang des sociétés qui ont contribué à cette version, en nombre de patches. Voir notre billet de blog.
  • 388 patches ont été acceptés dans Linux 3.16, ce qui fait de Bootlin la 7ème société contributrice à cette version. Voir notre billet de blog.
  • Pour la version 3.17 à venir, nous avons déjà intégré 146 patches, et nous avons beaucoup de travail en cours pour les versions suivantes.

Voici nos principales contributions :

  • L’ajout d’un pilote ubiblk, qui permet d’utiliser des systèmes de fichiers traditionnels au dessus de devices UBI, et donc sur du stockage flash de type NAND. Il n’y a que le mode en lecture seule qui est pris en charge, mais cela permet déjà d’utiliser SquashFS, un système de fichiers très performant, de manière sécurisée sur de la flash de type NAND.
  • Un autre ajout est celui des nouveaux processeurs Marvell Armada 375 et Armada 38x. En seulement deux versions (sorties des versions 3.15 et 3.16), nous avons pratiquement poussé le support complet de ces nouveaux processeurs. Le pilote réseau pour l’Armada 375 est une pièce manquante, qui apparaîtra dans la version 3.17.
  • Notre travail de maintenance sur les processeurs AT91 et SAMA5 d’Atmel s’est poursuivi, avec davantage de conversions au Device Tree, au Common Clock Framework, et à d’autres mécanismes modernes du noyau. Nous avons également développé le pilote graphique DRM/KMS pour le SoC SAMA5D3, qui a déjà été publié et qui devrait être intégré prochainement si tout va bien.
  • Notre travail pour prendre en charge le processeur Marvell Berlin a commencé à être intégré à Linux 3.16. Ce processeur est utilisé dans divers téléviseurs, lecteurs multimédia ou dans des petits appareils comme la Google Chromecast. Un support de base a été intégré, comprenant les Device Trees, les pilotes d’horloges, le pilote pinmux, ainsi que la prise en charge des GPIO et de SDHCI. Le support d’AHCI devrait arriver en 3.17, et le support USB et réseau est attendu pour 3.18.
  • Le travail sur la prise en charge des SoCs d’Allwinner s’est poursuivi, en particulier sur le processeur A31 : prise en charge de SPI et I2C, pilotes pour le bus bus et pour le contrôleur PRCM, et le support de l’USB.

Nous disposons maintenant d’une expérience assez complète en écriture de pilotes pour le noyau et intégration de code dans les sources officielles du noyau. N’hésitez pas à nous contacter si vous avez besoin d’aide pour développer des pilotes pour le noyau Linux, ou pour prendre en charge une nouvelle carte ou un nouveau processeur.

Contributions à Buildroot

Notre implication dans le projet Buildroot, un des plus populaires outils de compilation de systèmes de fichiers pour l’embarqué, s’est poursuivie. Nous avons intégré 159 patches à la version 2014.05 du projet (sur un total de 1293 patches), et 129 patches à la version 2014.08 (sur un total de 1353 patches). De surcroît, notre ingénieur Thomas Petazzoni joue souvent le rôle de mainteneur par intérim, quand Peter Korsgaard, le mainteneur, n’est pas disponible. Voici les fonctionnalités principales que nous avons ajoutées : améliorations majeures de la prise en charge de Python 3, ajout de chargeurs de démarrage EFI, support de la bibliothèque C Musl.

Projets Linux embarqué

Bien-sûr, nous avons également conduit des projets de développement Linux embarqué et de réduction du temps de démarrage pour divers fabricants de systèmes embarqués, avec un impact moins visible sur les projets de la communauté. Cependant, nous essaierons de partager l’expérience générique que nous avons pu acquérir via de futurs billets de blog.

Nouvelle formation : Yocto Project et OpenEmbedded

Un grand nombre de projets Linux embarqué utilisent des systèmes de compilation automatique qui intègrent les divers composants d’un système dans une image de systèms de fichiers prête à l’emploi. Parmi les solutions existantes, Yocto Project et OpenEmbedded sont très en vogue.

Nous avons ainsi développé une nouvelle formation de 3 jours, Yocto Project et OpenEmbedded, pour aider les ingénieurs et les sociétés qui utilisent, ou sont intéressés par utiliser ces solutions pour leur projets Linux embarqué. En commençant par la compréhension des principes de base de Yocto, la formation rentre dans les détails de l’écriture de recettes de paquetages, de la prise en charge d’une carte par Yocto, de la création d’images sur mesure, etc.

Le programme détaillé de la formation est disponible. Vous pouvez commander une session sur site, ou bien participer à notre première session inter-entreprises organisée à Toulouse du 18 au 20 novembre.

Mise à jour de la formation Linux embarqué

L’écosystème de Linux embarqué évolue très rapidement, et donc nous mettons constamment à jour nos formations vis à vis des derniers développements. Dans le cadre de cet effort, nous avons récemment procédé à une mise à jour majeure de notre formation Linux embarqué : le matériel utilisé dans les travaux pratiques est passé à la populaire et intéressante carte Atmel Xplained SAMA5D3, et de nombreux travaux pratiques ont été améliorés pour un apprentissage plus facile. Voir notre billet de blog pour plus de détails.

Liste de discussion pour les participants à nos formations

Nous avons mis en place un nouveau service pour les participants à nos sessions de formation : une liste discussion qui leur est dédiée, et sur laquelle ils peuvent poser toutes questions supplémentaires après la formation, partager leur expérience, et se mettre en contact avec d’autres participants et avec les ingénieurs de Bootlin. Bien-sûr, tous les ingénieurs de Bootlin sont sur la liste et participent aux discussions. Encore un service utile offert par nos sessions de formation !

Note: cette liste de discussion n’est plus en service. Les questions des anciens participants à nos formations sont toujours les bienvenues par e-mail.

Conférences : ELC, ELCE, Kernel Recipes

L’équipe d’ingénierie de Bootlin participera aux conférences Embedded Linux Conference Europe et Linux Plumbers, le mois prochain à Düsseldorf en Allemagne. Plusieurs ingénieurs de Bootlin donneront également des présentations à ELCE :

De surcroît, Thomas participera aussi au Buildroot Developers Day, qui se tiendra à Düsseldorf juste avant l’Embedded Linux Conference Europe.

Voir aussi notre billet de blog sur ELCE pour plus de détails.

Maxime Ripard et Michael Opdenacker participeront également à la conférence Kernel Recipes 2014 à Paris, du 25 au 26 septembre. Maxime donnera sa présentation noyau Allwinner à la conférence. Voir notre billet de blog pour plus de détails.

Enfin, nous avons récemment publié les vidéos d’un certain nombre de présentations à l’Embedded Linux Conference, qui s’est tenue en avril à San Jose. Cela représente une bonne quantité d’informations intéressantes sur Linux embarqué ! Voyez vous-même sur notre billet de blog.

Prochaines sessions de formation

Nous proposons un certain nombre de sessions de formation en inter-entreprises, dans lesquelles nous avons encore des places disponibles :

Sessions et dates

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.

Présentation sur Linaro à SophiaConf 2011

J’aurai bientôt le plaisir de donner une présentation sur Linaro à SophiaConf 2011, lors de la soirée sur le thème Open Source, Mobile et Embarqué, le 4 juillet 2011 à Sophia Antipolis.

Ma présentation fera suite à la keynote de Philippe Garnier, de ST Ericsson, qui marquera le début de la distribution en France de la carte Snowball et le lancement de la Communauté Igloo. Linaro, que je vais présenter, s’est chargé du port de Linux sur cette nouvelle carte.

Voici la description de mon intervention:

Linaro – Ressources techniques pour la communauté ARM Linux

Linaro est une société d’ingénierie à but non lucratif créé en juin 2010 par ARM, Texas Instruments, Freescale, ST-Ericsson, Samsung et IBM. Il s’agit d’une initiative commune pour améliorer et unifier l’infrastructure bas niveau de Linux sur la plateforme ARM. Linaro emploie maintenant plus de 100 ingénieurs dans plusieurs groupes de travail: noyau, compilateurs et outils, graphiques, multimédia, gestion de l’énergie…

Linaro est tout le contraire d’un nième groupement d’industriels ne produisant que des spécifications à usage interne. Son unique vocation est de développer de nouvelles fonctionalités tirant partie des processeurs ARM les plus récents, et de faire intégrer ces contributions dans les versions officielles de la communauté (noyau Linux, compilateurs, QEMU…). Linaro a un fonctionnement complètement ouvert, et n’importe quelle bonne volonté peut participer à ses projets et à ses discussions techniques.

Cette présentation mettra justement en évidence les contributions de Linaro qui ont été intégrées aux sources des projets de la communauté, ou qui le seront prochainement. Attendez-vous à rentrer chez vous avec de nombreuses idées et ressources pour améliorer vos produits à base d’ARM Linux, et pour réduire vos coûts et temps de développement. Nous vous recommandons juste de ne pas en parler à votre hiérarchie, et avec le temps que vous dégagerez, de rejoindre la communauté des développeurs de Linaro 😉

Intervenant: Michael Opdenacker

Michael est le « Community Manager » chez Linaro. Il fera de son mieux pour vous convaincre de rejoindre la commaunauté d’utilisateurs et de développeurs de Linaro, si vous n’en faites pas encore partie. N’hésitez pas à lui envoyer un signal SIGSTOP s’il parle trop longtemps. Michael est aussi le créateur de Bootlin, une société d’ingénierie en Linux embarqué qui est connue mondialement pour toutes les ressources techniques qu’elle publie sous une license de documentation libre.

Support du séminaire « Linux et le temps réel » du 5 mai 2010

Support du séminaire temps-réel à ToulouseAvec soixante participants pour la matinée théorique et vingt-quatre participants pour l’après-midi pratique (le seuil maximum que nous avions fixé), le séminaire « Linux et le temps réel » organisé le mercredi 5 mai 2010 à Toulouse fut un succès. Animé par Thomas Petazzoni de Bootlin et organisé par Captronic, ce séminaire avait pour objectif de donner les principaux éléments concernant l’utilisation du système Linux dans des contextes temps-réel.

La matinée a permis de couvrir les problématiques posées par les contraintes temps réel dans un système Linux embarqué puis deux des principales solutions permettant d’apporter des caractéristiques temps réel au système Linux : le patch PREEMPT_RT et la solution de type co-kernel Xenomai. Les travaux pratiques ont permis aux participants de mettre en œuvre ces deux solutions sur la carte USB-A9263 de notre partenaire Calao Systems, de développer de petites applications simples et de tester la latence des deux solutions.

Suite à ce séminaire, nous mettons en ligne le support de présentation ainsi que les instructions utilisées pour les travaux pratiques de l’après-midi. Vous pouvez télécharger ce document à l’adresse /doc/training/rt/bootlin-seminaire-temps-reel-5-mai-2010-toulouse.pdf.

Bootlin reste disponible pour vous conseiller et vous assister dans le développement de projets embarqués mettant en œuvre Linux embarqué, en particulier avec des aspects temps réel. N’hésitez pas à nous contacter.