{"id":1460,"date":"2012-04-04T22:18:37","date_gmt":"2012-04-04T21:18:37","guid":{"rendered":"http:\/\/free-electrons.com\/fr\/?p=1460"},"modified":"2018-07-27T16:24:42","modified_gmt":"2018-07-27T15:24:42","slug":"un-petit-tour-avec-yocto","status":"publish","type":"post","link":"https:\/\/bootlin.com\/fr\/blog\/un-petit-tour-avec-yocto\/","title":{"rendered":"Un petit tour avec Yocto"},"content":{"rendered":"<p>J&rsquo;ai eu r\u00e9cemment l&rsquo;occasion de mettre en \u0153uvre <a href=\"http:\/\/www.yoctoproject.org\">Yocto<\/a>. J&rsquo;avais d\u00e9j\u00e0 pas mal pratiqu\u00e9 OpenEmbedded auparavant. On peut voir Yocto comme un projet d\u00e9riv\u00e9 d&rsquo;OpenEmbedded m\u00eame si c&rsquo;est un peu plus que cela.<\/p>\n<p>En effet Yocto c&rsquo;est Poky (un syst\u00e8me de build qui s&rsquo;appuie sur OpenEmbedded), quelques outils de build recr\u00e9\u00e9s pour l&rsquo;occasion (swabber, pseudo, etc..) ainsi qu&rsquo;un ensemble de m\u00e9ta donn\u00e9es permettant de cr\u00e9er des distributions embarqu\u00e9es pour un certain nombre de cibles.<\/p>\n<p>La force mais aussi la faiblesse d&rsquo;OpenEmbedded c&rsquo;est que c&rsquo;est un syst\u00e8me de build qui peut tout faire: des images finales de rootfs, mais aussi une distribution compl\u00e8te avec son d\u00e9p\u00f4t de paquets pr\u00eat \u00e0 l&#8217;emploi, et cela sur plusieurs plateformes mat\u00e9rielles. Cela en fait un syst\u00e8me complexe \u00e0 mettre en \u0153uvre et \u00e0 prendre en main. Il y a encore 2 ans, la documentation d&rsquo;OpenEmbedded participait \u00e0 cette difficult\u00e9 de prise en main. En effet OpenEmbedded fournissait bien une documentation mais qui ne prenait vraiment tout son sens seulement une fois que l&rsquo;on avait commenc\u00e9 \u00e0 ma\u00eetriser le sujet. Ce qui est assez paradoxal pour une documentation. Il manquait les \u00e9l\u00e9ments qui permettent aux d\u00e9veloppeurs de rentrer dans ce syst\u00e8me de build.<\/p>\n<p>Avec Yocto j&rsquo;ai pu constater qu&rsquo;il y a eu un r\u00e9el progr\u00e8s de ce c\u00f4t\u00e9<br \/>\nl\u00e0. Le projet vient avec une documentation beaucoup plus compl\u00e8te et surtout beaucoup plus accessible. La prise en main n&rsquo;est tout de m\u00eame pas imm\u00e9diate mais cette fois cela est plut\u00f4t d\u00fb \u00e0 la complexit\u00e9 et \u00e0 la richesse de l&rsquo;outil.<\/p>\n<p>En quelques heures je suis quand m\u00eame parvenu \u00e0 d\u00e9velopper un BSP (Board Support Package) minimaliste pour une carte donn\u00e9e (en l&rsquo;occurrence une AT91SAM9G20-EK). Le concept de layer permet d&rsquo;avoir une couche de configuration sp\u00e9cifique pour un mat\u00e9riel donn\u00e9. On peut en fait m\u00eame supporter plusieurs mat\u00e9riels diff\u00e9rents et on peut aussi ajouter des paquets sp\u00e9cifiques. En fait un layer n&rsquo;est rien de plus qu&rsquo;un ensemble de paquets et de configurations ou de surcharges de configurations. Le BSP n&rsquo;est qu&rsquo;un layer sp\u00e9cifique \u00e0 un mat\u00e9riel (ou \u00e0 un ensemble de mat\u00e9riel). Comme on le voit m\u00eame pour le support d&rsquo;une simple carte \u00e9lectronique, il y a d\u00e9j\u00e0 beaucoup de concepts qui entrent en jeu. Il y a aussi d\u00e9j\u00e0 de nombreuses fa\u00e7on de faire qui arriveront \u00e0 la m\u00eame fin mais qui seront plus ou moins faciles \u00e0 maintenir. Le concept de BSP se rapproche surtout d&rsquo;un \u00ab\u00a0guideline\u00a0\u00bb pour permettre \u00e0 la \u00ab\u00a0communaut\u00e9 Yocto\u00a0\u00bb d&rsquo;avoir un r\u00e9f\u00e9rentiel commun. Je t\u00e2cherai d&rsquo;illustrer la mise en \u0153uvre d&rsquo;un BSP sur la carte AT91SAMG20-EK dans mes prochains articles ici m\u00eame et\/ou sur <a href=\"https:\/\/plus.google.com\/u\/0\/115533499592681008785\">ma page Google+<\/a>.<\/p>\n<p>Une autre avanc\u00e9e notable de Yocto est son optimisation pour le temps de la premi\u00e8re compilation d&rsquo;une cible \u00ab\u00a0minimale\u00a0\u00bb, je suis pass\u00e9 de plus de 3 heures \u00e0 une l\u00e9g\u00e8rement plus d&rsquo;heure maintenant. Cela reste quand m\u00eame tr\u00e8s long notamment pour une cible qui se veut minimale.<\/p>\n<p>Pour faire une image d&rsquo;un syst\u00e8me avec quelques composants seulement, <a href=\"http:\/\/buildroot.net\/\">Buildroot<\/a> reste largement plus appropri\u00e9. Pour des syst\u00e8mes requ\u00e9rant un grand nombre de composants, alors il vient souvent le besoin de fonctions plus avanc\u00e9es comme la gestion d&rsquo;un d\u00e9p\u00f4t de paquet ou la prise en charge de plusieurs plateformes mat\u00e9rielles par exemple. Dans ce cas-l\u00e0, Yocto reste la meilleure (la seule?) option d&rsquo;autant plus que ce projet tend \u00e0 am\u00e9liorer les points faibles historiquse d&rsquo;OpenEmbedded.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai eu r\u00e9cemment l&rsquo;occasion de mettre en \u0153uvre Yocto. J&rsquo;avais d\u00e9j\u00e0 pas mal pratiqu\u00e9 OpenEmbedded auparavant. On peut voir Yocto comme un projet d\u00e9riv\u00e9 d&rsquo;OpenEmbedded m\u00eame si c&rsquo;est un peu plus que cela. En effet Yocto c&rsquo;est Poky (un syst\u00e8me de build qui s&rsquo;appuie sur OpenEmbedded), quelques outils de build recr\u00e9\u00e9s pour l&rsquo;occasion (swabber, pseudo, &hellip; <a href=\"https:\/\/bootlin.com\/fr\/blog\/un-petit-tour-avec-yocto\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Un petit tour avec Yocto&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[12,34,33],"class_list":["post-1460","post","type-post","status-publish","format-standard","hentry","category-non-classe","tag-buildroot","tag-openembedded","tag-yocto"],"_links":{"self":[{"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/posts\/1460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/comments?post=1460"}],"version-history":[{"count":7,"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/posts\/1460\/revisions"}],"predecessor-version":[{"id":1472,"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/posts\/1460\/revisions\/1472"}],"wp:attachment":[{"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/media?parent=1460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/categories?post=1460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bootlin.com\/fr\/wp-json\/wp\/v2\/tags?post=1460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}