<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yoann Sculo</title>
	<atom:link href="http://www.yoannsculo.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yoannsculo.fr</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Fri, 26 Aug 2011 22:31:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Raspberry Pi &#8211; Premières images de la version alpha</title>
		<link>http://www.yoannsculo.fr/raspberry-pi-premieres-images-de-la-version-alpha/</link>
		<comments>http://www.yoannsculo.fr/raspberry-pi-premieres-images-de-la-version-alpha/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 22:31:22 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[board]]></category>
		<category><![CDATA[Eben Upton]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Raspberry Pi Foundation]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1838</guid>
		<description><![CDATA[Et voici quelques news de la Raspberry Pi dont j’avais parlé en mai dernier. Un blog a été ouvert il y a un mois. Et depuis,  quelques informations arrivent au compte goûte. Après le schéma du PCB, voici les premiers modèles alpha de la Raspberry Pi. &#160; 20 % plus grands que les modèles finaux, qui [...]]]></description>
			<content:encoded><![CDATA[
<p>Et voici quelques news de la Raspberry Pi dont j’<a href="http://www.yoannsculo.fr/raspberry-pi-revolution-du-do-it-yourself/">avais parlé</a> en mai dernier.</p>
<div><a href="http://www.raspberrypi.org">Un blog</a> a été ouvert il y a un mois. Et depuis,  quelques informations arrivent au compte goûte. Après le schéma du PCB,</div>
<p><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/08/raspberry1.png"><img class="aligncenter size-medium wp-image-1839" title="raspberry1" src="http://www.yoannsculo.fr/wp-content/uploads/2011/08/raspberry1-300x292.png" alt="" width="300" height="292" /></a>voici les premiers modèles alpha de la Raspberry Pi.</p>
<p style="text-align: center;">&nbsp;</p>
<div id="attachment_1843" class="wp-caption aligncenter" style="width: 665px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/08/DSCF1808.jpg"><img class="size-large wp-image-1843  " title="DSCF1808" src="http://www.yoannsculo.fr/wp-content/uploads/2011/08/DSCF1808-1024x768.jpg" alt="" width="655" height="491" /></a><p class="wp-caption-text">Raspberry Pi Alpha</p></div>
<p>20 % plus grands que les modèles finaux, qui seront de la taille d’une carte de crédit.</p>
<p>Eben Upton, le président de la Raspberry Pi foundation, nous présente la carte <a href="http://www.youtube.com/watch?v=Or1-kN2z1iM">en vidéo</a>, qui tourne dès à présent sous Debian.</p>
<p><object width="560" height="345"><param name="movie" value="http://www.youtube.com/v/Or1-kN2z1iM?version=3&amp;hl=fr_FR" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="560" height="345" src="http://www.youtube.com/v/Or1-kN2z1iM?version=3&amp;hl=fr_FR" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Pour ceux que ça intéresse, un concours de <a href="http://www.raspberrypi.org/?p=55">création de logo</a> a également été ouvert.</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fraspberry-pi-premieres-images-de-la-version-alpha%2F&amp;title=Raspberry%20Pi%20%26%238211%3B%20Premi%C3%A8res%20images%20de%20la%20version%20alpha" id="wpa2a_2"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/raspberry-pi-premieres-images-de-la-version-alpha/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Au revoir Mindscape</title>
		<link>http://www.yoannsculo.fr/au-revoir-mindscape/</link>
		<comments>http://www.yoannsculo.fr/au-revoir-mindscape/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 19:34:08 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[Emploi]]></category>
		<category><![CDATA[Karotz]]></category>
		<category><![CDATA[Mindscape]]></category>
		<category><![CDATA[nabaztag]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1821</guid>
		<description><![CDATA[Comme certains le savent déjà, Mindscape, est en redressement judiciaire depuis fin juin. Une des conséquences concrètes de cette situation aura été l&#8217;arrêt du Nabaztag et la libération de ses sources. Une autre, moins visible pour la communauté, n&#8217;est autre qu&#8217;un plan social de licenciement économique de 32 personnes, dont j&#8217;ai fait partie. J&#8217;aurai donc [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Comme certains le savent déjà, Mindscape, est en redressement judiciaire depuis fin juin. Une des conséquences concrètes de cette situation aura été l&#8217;arrêt du Nabaztag et la libération de ses sources. Une autre, moins visible pour la communauté, n&#8217;est autre qu&#8217;un plan social de licenciement économique de 32 personnes, dont j&#8217;ai fait partie.</p>
<p style="text-align: justify;">
J&#8217;aurai donc participé à l&#8217;aventure Karotz sur toutes les étapes de sa vie (jusqu&#8217;à aujourd&#8217;hui en tout cas !). Une super expérience que de développer un produit de A à Z, de sa conception début 2010 à sa sortie en avril 2011, en passant par sa promo au CES à Las Vegas. Chouette sentiment que de retrouver à la Fnac et Virgin un produit sur lequel on a travaillé ! Aujourd&#8217;hui, je vois plus ce départ comme un tremplin pour moi, car je n&#8217;aurai jamais autant appris en si peu de temps qu&#8217;avec ce projet.</p>
<p style="text-align: justify;">
Je vais mettre un peu de côté le développement user space et me rapprocher beaucoup plus du kernel pour mettre un peu plus les mains dans le cambouis (et faire encore plus le geek \o/). Pas trop de répit après avoir quitté Mindscape le 1er août, car j&#8217;ai repris une semaine après chez Archos, où je travaille maintenant <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">
Ce billet est surtout l&#8217;occasion de remercier tous les gens qui me proposent du travail. Malheureusement pour vous, je pense avoir trouvé chez Archos exactement ce que je cherchais et ne suis donc plus disponible. En tout cas, Merci !</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fau-revoir-mindscape%2F&amp;title=Au%20revoir%20Mindscape" id="wpa2a_4"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/au-revoir-mindscape/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Concours de création de système Linux embarqué sur carte Mini2440</title>
		<link>http://www.yoannsculo.fr/concours-de-creation-de-systeme-linux-embarque-sur-carte-mini2440/</link>
		<comments>http://www.yoannsculo.fr/concours-de-creation-de-systeme-linux-embarque-sur-carte-mini2440/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 22:46:01 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[concours]]></category>
		<category><![CDATA[linux embarqué]]></category>
		<category><![CDATA[Mini2440]]></category>
		<category><![CDATA[Open Wide Ingénierie]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1798</guid>
		<description><![CDATA[Open Wide Ingénierie, par l&#8217;intermédiaire de son blog Linux Embedded dédié à l&#8217;embarqué, vient de lancer un truc vraiment sympa ! Un concours de création de système Linux embarqué. Les participants doivent réussir à booter sous Linux, se connecter au net, afficher une interface graphique, et tout ça le plus vite possible ! La plateforme choisie [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/08/ow.png"><img class="size-full wp-image-1804 alignleft" title="ow" src="http://www.yoannsculo.fr/wp-content/uploads/2011/08/ow.png" alt="" width="96" height="92" /></a><a href="http://ingenierie.openwide.fr/">Open Wide Ingénierie</a>, par l&#8217;intermédiaire de son blog <a href="http://www.linuxembedded.fr">Linux Embedded</a> dédié à l&#8217;embarqué, vient de lancer un truc vraiment sympa ! <a href="http://www.linuxembedded.fr/concours/">Un concours</a> de création de système Linux embarqué. Les participants doivent réussir à booter sous Linux, se connecter au net, afficher une interface graphique, et tout ça le plus vite possible ! La plateforme choisie pour le concours est la<a href="http://friendlyarm.net/products/mini2440"> carte Mini2440 de FriendlyARM</a>.</p>
<p style="text-align: justify;">A la <a href="http://www.linuxembedded.fr/concours/recompenses.php">clef</a>, des cartes Mini2440, des tablettes Archos et du fun !</p>
<p style="text-align: justify;">Ouvert aux étudiants et aux individuels, le concours se divise en deux parties.</p>
<ul>
<li style="text-align: justify;">Dans un premier temps, le but est de faire fonctionner le système en le simulant sous qemu. Ce qui permet de gagner une carte Mini2440 et de passer à l&#8217;étape suivante. Les participants ont jusqu&#8217;à fin octobre pour gagner une carte.</li>
<li style="text-align: justify;">La finale se passe ensuite sur les cartes Mini2440. Où le but est cette fois d&#8217;optimiser au maximum le boot du système sur la plateforme choisie. Cette seconde phase se terminera fin décembre.</li>
</ul>
<p>Les contraintes techniques se résument en quelques lignes :</p>
<blockquote>
<p style="text-align: justify;">Le système devra fonctionner avec un noyau Linux sur une carte Mini2440, obtenir une adresse IP par DHCP et l&#8217;afficher en grand dans une application graphique. Un bouton tactile devra également permettre de déclencher l&#8217;affichage du nom du ou des auteurs, ainsi que le nom d&#8217;équipe s&#8217;il y a lieu.</p>
<p style="text-align: justify;">Le temps sera compté à partir du démarrage électrique (à froid) jusqu&#8217;à l&#8217;affichage graphique.</p>
<p style="text-align: justify;">Il est possible d&#8217;optimiser le bootloader, le noyau et l&#8217;espace utilisateur (également appelé applicatif ou rootfs).</p>
</blockquote>
<p style="text-align: justify;">Donc, seule contrainte, utiliser Linux. En dehors de ça, libre aux participants de bidouiller/hacker à mort leur système pour arriver à leurs fins <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Le but est de se faire plaisir !</p>
<p style="text-align: justify;">Juste besoin d&#8217;envoyer un email <a href="http://www.linuxembedded.fr/concours/">pour s&#8217;inscrire</a>. <a href="http://www.linuxembedded.fr/concours/wiki/">Un Wiki</a> a été mis en place, ainsi qu&#8217;un <a href="https://groups.google.com/group/concours-linuxembedded">Forum</a> et un channel IRC.</p>
<p style="text-align: justify;">Je n&#8217;ai pas pu résister au défi, je me suis inscrit, en espérant que je trouverai le temps nécessaire pour faire tout ça !</p>
<p style="text-align: justify;">Sur ce ! Au boulot ! <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fconcours-de-creation-de-systeme-linux-embarque-sur-carte-mini2440%2F&amp;title=Concours%20de%20cr%C3%A9ation%20de%20syst%C3%A8me%20Linux%20embarqu%C3%A9%20sur%20carte%20Mini2440" id="wpa2a_6"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/concours-de-creation-de-systeme-linux-embarque-sur-carte-mini2440/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Juillet 2011 &#8211; Quelques news en vrac sur l&#8217;actualité de l&#8217;embarqué</title>
		<link>http://www.yoannsculo.fr/juillet-2011-quelques-news-en-vrac-sur-lactualite-de-lembarque/</link>
		<comments>http://www.yoannsculo.fr/juillet-2011-quelques-news-en-vrac-sur-lactualite-de-lembarque/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 15:06:28 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[actualité]]></category>
		<category><![CDATA[Armadeus]]></category>
		<category><![CDATA[Armadeus Project]]></category>
		<category><![CDATA[embarqué]]></category>
		<category><![CDATA[Freedom Box]]></category>
		<category><![CDATA[Freedom Box Foundation]]></category>
		<category><![CDATA[Open Silicium]]></category>
		<category><![CDATA[Shoutcast]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1787</guid>
		<description><![CDATA[Délaissé depuis juin, mon blog était très bien triste de ne plus parler d’embarqué. Voici donc quelques informations intéressantes dont je voulais parler. Je suis pas mal en retard ! Mais ce n’est pas grave ! Donc en vrac ! Open Silicium sort son numéro 3, toujours aussi intéressant Buildroot a sorti sa version 2011.05. [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Délaissé depuis juin, mon blog était très bien triste de ne plus parler d’embarqué. Voici donc quelques informations intéressantes dont je voulais parler. Je suis pas mal en retard ! Mais ce n’est pas grave ! <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Donc en vrac !</p>
<ul>
<li style="text-align: justify;">Open Silicium sort son <a href="http://www.editions-diamond.com/opensilicium/index.php/opensilicium-magazine-n%C2%B03-juilletaoutseptembre-2011">numéro 3</a>, toujours aussi intéressant</li>
<li>Buildroot a sorti sa version <a href="http://old.nabble.com/Buildroot-2011.05-released-td31716992.html">2011.05</a>. J’ai oublié il y a quelques mois de traiter mon dossier de mails de listes de diffusion. L’annonce de sortie s’est perdue dans mes plusieurs milliers de mails que j’ai aujourd’hui en attente. Dès que l’on arrête de consulter au fur et à mesure ces listes un peu trop prolifiques &#8230; c’est le début la fin !</li>
<li style="text-align: justify;">Le <a href="http://www.armadeus.com/wiki/index.php?title=Main_Page">projet Armadeus</a> a sorti la <a href="http://sourceforge.net/projects/armadeus/files/armadeus/armadeus-4.0/">V4</a> de son système (voir <a href="http://linuxfr.org/news/sortie-de-la-version-40-du-projet-armadeus">LinuxFr</a> à ce propos)</li>
<li>La Freedom Box Foundation, dont je parlais <a href="http://www.yoannsculo.fr/freedom-box-%E2%80%93-reparons-internet-pour-plus-de-libertes/">il y a 6 mois</a> donne <a href="http://www.freedomboxfoundation.org/news/Update_12_July_2011/index.en.html">des nouvelles de son projet</a>. On voit que ça bouge, c’est chouette <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li style="text-align: justify;">Oh, et puis <a href="http://www.embedded-bits.co.uk/2011/writeanmlo/">un article intéressant</a> sur les fichiers MLO pour les bootloaders de type X-loader</li>
</ul>
<p style="text-align: justify;">Sinon, je me suis lancé dans le développement d’un <a href="https://github.com/yoannsculo/SHOUTcast-Recorder">petit projet open source</a> , dont je devrais parler bientôt ici. Je me cherche une licence en ce moment. J’ai repris un de mes anciens projets, sur l&#8217;enregistrement de flux SHOUTcast, que j’ai recommencé from scratch. C’est fou ce que ça va plus vite après quelques années d’expérience supplémentaires <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fjuillet-2011-quelques-news-en-vrac-sur-lactualite-de-lembarque%2F&amp;title=Juillet%202011%20%26%238211%3B%20Quelques%20news%20en%20vrac%20sur%20l%26%238217%3Bactualit%C3%A9%20de%20l%26%238217%3Bembarqu%C3%A9" id="wpa2a_8"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/juillet-2011-quelques-news-en-vrac-sur-lactualite-de-lembarque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mass Storage USB sur tous les OS grâce au File-backed Storage Gadget (g_file_storage)</title>
		<link>http://www.yoannsculo.fr/mass-storage-usb-sur-tous-les-os-grace-au-file-backed-storage-gadget-g_file_storage/</link>
		<comments>http://www.yoannsculo.fr/mass-storage-usb-sur-tous-les-os-grace-au-file-backed-storage-gadget-g_file_storage/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 09:09:19 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[g_file_storage]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mass storage]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[storage gadget]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1761</guid>
		<description><![CDATA[Je me suis attelé récemment à la mise en place d’un mass storage (FAT32) sur un device Linux grâce au gadget file storage (g_file_storage), compatible avec Windows, Mac et Linux ! Hé bien, c’est un peu de la tambouille magique pour rendre ça compatible entre OS. Hélas, la documentation que l’on retrouve sur Internet ne [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Je me suis attelé récemment à la mise en place d’un mass storage (FAT32) sur un device Linux grâce au gadget file storage (g_file_storage), compatible avec Windows, Mac et Linux ! Hé bien, c’est un peu de la tambouille magique pour rendre ça compatible entre OS. Hélas, la <a href="http://www.linux-usb.org/gadget/file_storage.html">documentation</a> que l’on retrouve sur Internet ne précise pas forcément les étapes pour faire fonctionner le mass storage sous tous les OS. En fouinant bien j’ai fini par trouver les étapes à suivre pour mettre ça en place ! C’est plus une question du bon argument à spécifier à la création de la partition, mais au final on gagne du temps quand on le sait dès le départ ! Parce qu’aller fouiner dans le code source du driver pour voir comment ça marche c’est cool, mais un poil prise de tête. (encore que mine de rien c’est plutôt bien documenté)</p>
<p>Voici les étapes :</p>
<h3>Préparation du kernel</h3>
<ul>
<li>Prendre un kernel bien frais !</li>
<li>Activer le “File-backed Storage Gadget” (USB_FILE_STORAGE) dans la catégorie USB support. Dans mon cas j’ai choisi de le mettre en module externe.</li>
<li>recompiler la bête</li>
<li>Et en attendant, préparons la partition de mass_storage.</li>
</ul>
<h3>Préparation de la partition</h3>
<p>Jusque là, je n’ai réussi qu’à générer des partitions puissances de 2 au niveau de la taille. Avec des unités d’allocation de 4 Ko (par défaut), il suffit de changer le nombre de têtes (1, 2, 4, &#8230;) pour avoir respectivement des mass storage de (4, 8, 16Mo, &#8230;) Je n’ai pas encore complètement compris entièrement le fonctionnement pour tenter de sortir des clous avec des partitions exotiques (genre 7Mo si c’est envisageable). Si quelqu’un a l’information, je suis preneur <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Parce que je me perds un peu avec cette ratatouille de Linux / Windows qui n’ont pas les mêmes unités&#8230;</p>
<p>Bref, dans cet exemple je me base sur un mass storage de 4 Mo. Mais pour augmenter la taille de celle-ci, il suffit de changer la valeur du count dans la commande dd qui va suivre, puis le nombre de têtes dans le fdisk. Le max était 255 têtes, soit les 1020 Mo max du FAT32 pour des unités d’allocation de 4 Ko</p>
<p>Créons donc notre périphérique à partir du néant !</p>
<pre class="brush: plain; light: true; title: ; notranslate">
dd bs=1M count=4 if=/dev/zero of=mass_storage.img
</pre>
<p>Puis lançons fdisk.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
$ fdisk mass_storage.img
Le périphérique ne contient pas une table de partitions DOS ou Sun, SGI, OSF valide
Création d'une nouvelle étiquette DOS avec id de disque 0x3a4a9ca1.
Les modifications restent en mémoire jusqu'à ce que vous les écriviez.
Après quoi, bien sûr, le contenu précédent sera irrécupérable.

AVERTISSEMENT: fanion 0x0000 non valide dans la table de partitions 4, sera corrigé par w(écriture)
Vous devez initialiser cylindres.
Vous pouvez faire cela depuis le menu des fonctions avancées.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Commande (m pour l'aide): x

Commande pour experts (m pour de l'aide): s
Nombre de secteurs (1-63, par défaut 63): 8
AVERTISSEMENT: initialisation du décalage de secteur pour compatibilité DOS

Commande pour experts (m pour de l'aide): h
Nombre de têtes (1-256, par défaut 255): 1

Commande pour experts (m pour de l'aide): c
Nombre de cylindres (1-1048576): 1024

Commande pour experts (m pour de l'aide): r

Commande (m pour l'aide): n
Commande d'action
e   étendue
p   partition primaire (1-4)
p
Numéro de partition (1-4): 1
Premier cylindre (2-1024, par défaut 2):
Utilisation de la valeur par défaut 2
Dernier cylindre, +cylindres or +taille{K,M,G} (2-1024, par défaut 1024):
Utilisation de la valeur par défaut 1024

Commande (m pour l'aide): t
Partition sélectionnée 1
Code Hexa (taper L pour lister les codes): b
Type système de partition modifié de 1 à b (W95 FAT32)

Commande (m pour l'aide): p

Disque mass_storage.img: 0 Mo, 0 octets
1 têtes, 8 secteurs/piste, 1024 cylindres
Unités = cylindres de 8 * 512 = 4096 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x3a4a9ca1

Périphérique Amorce  Début        Fin      Blocs     Id  Système
mass_storage.img1               2        1024        4092    b  W95 FAT32

Commande (m pour l'aide): w
La table de partitions a été altérée!

AVERTISSEMENT: si vous avez créé ou modifié une partition DOS 6.x,
svp consulter les pages du manuel de fdisk pour des informations
complémentaires.
Synchronisation des disques.
</pre>
<p>Et si l’on souhaite consulter les informations de notre partition :</p>
<pre class="brush: plain; light: true; title: ; notranslate">
$ fdisk -l mass_storage.img
Vous devez initialiser cylindres.
Vous pouvez faire cela depuis le menu des fonctions avancées.

Disque mass_storage.img: 0 Mo, 0 octets
1 têtes, 8 secteurs/piste, 0 cylindres
Unités = cylindres de 8 * 512 = 4096 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x3a4a9ca1

Périphérique Amorce  Début        Fin      Blocs     Id  Système
mass_storage.img1               2        1024        4092    b  W95 FAT32
</pre>
<p>Pour accéder au device, on doit alors préciser à quel offset se placer pour travailler avec. Pour ça nous devons calculer la taille du premier cylindre. Soit :<br />
offset = cylindres de 8 * 512 = 4096 octets (indiqué par la commande p du fdisk ou fdisk -l)</p>
<pre class="brush: plain; light: true; title: ; notranslate">
losetup -o 4096 /dev/loop0 mass_storage.img
</pre>
<p>Et on créé un magnifique système de fichiers FAT32 appelé “storage” :</p>
<pre class="brush: plain; light: true; title: ; notranslate">
mkdosfs /dev/loop0 -n storage
</pre>
<p>Si vous voulez vous pouvez monter votre mass storage et bidouiller dedans :</p>
<pre class="brush: plain; light: true; title: ; notranslate">
mount -t vfat /dev/loop0
...
umount /dev/loop0
</pre>
<p>puis on démonte le périphérique virtuel.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
losetup -d /dev/loop0
</pre>
<h3>Chargement du mass_storage</h3>
<p>Une fois que votre kernel est en place sur votre système, il n’y a plus qu’à placer le fichier mass_storage.img sur le système embarqué et de charger la partition :</p>
<pre class="brush: plain; light: true; title: ; notranslate">
insmod g_file_storage.ko file=/tmp/mass_storage.img stall=0
</pre>
<p>stall=0 est l’option magique qui fait que le mass_storage fonctionne sous Windows sans mouliner à l’infini en attendant une détection du filesystem. (boolean to permit the driver to halt bulk endpoints)<br />
On peut également jouer avec l’option ro pour mettre le mass storage en read only ou non. De façon générale on peut retrouver de la doc sur le driver dans le kernel : drivers/usb/gadget/file_storage.c</p>
<p>Et voilà, en branchant votre device sur n’importe quel OS, il sera reconnu comme disque de mass storage appelé “storage” <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Héhé !</p>
<p>Et pour la route, voici les partitions FAT32 finales (vides) :</p>
<ul>
<li><a href="http://yoannsculo.fr/docs/mass_storage/mass_storage_4mb.img" target="_blank">version 4Mo</a></li>
<li><a href="http://yoannsculo.fr/docs/mass_storage/mass_storage_8mb.img" target="_blank">version 8Mo</a></li>
</ul>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fmass-storage-usb-sur-tous-les-os-grace-au-file-backed-storage-gadget-g_file_storage%2F&amp;title=Mass%20Storage%20USB%20sur%20tous%20les%20OS%20gr%C3%A2ce%20au%20File-backed%20Storage%20Gadget%20%28g_file_storage%29" id="wpa2a_10"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/mass-storage-usb-sur-tous-les-os-grace-au-file-backed-storage-gadget-g_file_storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vidéos des conférences récentes sur l&#8217;embarqué</title>
		<link>http://www.yoannsculo.fr/videos-des-conferences-recentes-sur-lembarque/</link>
		<comments>http://www.yoannsculo.fr/videos-des-conferences-recentes-sur-lembarque/#comments</comments>
		<pubDate>Fri, 27 May 2011 06:00:48 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Android Builders Summit 2011]]></category>
		<category><![CDATA[conférence]]></category>
		<category><![CDATA[ELC]]></category>
		<category><![CDATA[ELC 2011]]></category>
		<category><![CDATA[embarqué]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[FOSDEM 2011]]></category>
		<category><![CDATA[Free Electrons]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1753</guid>
		<description><![CDATA[Du nouveau pour nos amis d&#8217;outre-quévin qui aiment la batavia les vidéos de Free Electrons. Depuis la semaine dernière, nous avons eu le droit à un sacré paquet de vidéos des événements récents relatifs à l&#8217;embarqué. l&#8217;ELC 2011 à San Francisco l&#8217;Android Builders Summit 2011 à San Francisco toujours le FOSDEM 2011 à Bruxelles Tout plein [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Du nouveau pour nos amis d&#8217;outre-quévin qui aiment <del>la batavia</del> les vidéos de <a href="http://free-electrons.com/">Free Electrons</a>. Depuis la semaine dernière, nous avons eu le droit à un sacré paquet de vidéos des événements récents relatifs à l&#8217;embarqué.</p>
<ul>
<li>l&#8217;<a href="http://free-electrons.com/blog/elc-2011-videos/">ELC 2011</a> à San Francisco</li>
<li>l&#8217;<a href="http://free-electrons.com/blog/abs-2011-videos/">Android Builders Summit 2011</a> à San Francisco toujours</li>
<li>le <a href="http://free-electrons.com/blog/fosdem-2011-videos/">FOSDEM 2011</a> à Bruxelles</li>
</ul>
<p>Tout plein de vidéos super intéressantes.</p>
<p>Encore une fois, merci à eux <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Je peux continuer à me former sans prendre l&#8217;avion <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fvideos-des-conferences-recentes-sur-lembarque%2F&amp;title=Vid%C3%A9os%20des%20conf%C3%A9rences%20r%C3%A9centes%20sur%20l%26%238217%3Bembarqu%C3%A9" id="wpa2a_12"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/videos-des-conferences-recentes-sur-lembarque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction au système de communication inter-processus D-Bus</title>
		<link>http://www.yoannsculo.fr/introduction-au-systeme-de-communication-inter-processus-d-bus/</link>
		<comments>http://www.yoannsculo.fr/introduction-au-systeme-de-communication-inter-processus-d-bus/#comments</comments>
		<pubDate>Thu, 26 May 2011 12:31:35 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Bus]]></category>
		<category><![CDATA[D-Bus]]></category>
		<category><![CDATA[dbus-daemon]]></category>
		<category><![CDATA[IPC]]></category>
		<category><![CDATA[libdbus]]></category>
		<category><![CDATA[processus]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1719</guid>
		<description><![CDATA[Cela faisait quelques temps que je souhaitais rédiger une documentation sur D-Bus et ses concepts (en français). Je n&#8217;ai pas trouvé énormément d&#8217;informations sur lefonctionnement détaillé de ce Bus quand j&#8217;en avais besoin. Du coup, je me suis lancé dans la rédaction d&#8217;un tutoriel pour les personnes qui se retrouveront tôt ou tard dans le [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-1.png"><img class="size-thumbnail wp-image-1736 alignleft" title="dbus-schema-1" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-1-150x150.png" alt="" width="150" height="150" /></a></p>
<p id="LI" style="text-align: justify;">Cela faisait quelques temps que je souhaitais rédiger une documentation sur D-Bus et ses concepts (en français). Je n&#8217;ai pas trouvé énormément d&#8217;informations sur lefonctionnement détaillé de ce Bus quand j&#8217;en avais besoin. Du coup, je me suis lancé dans la rédaction d&#8217;un tutoriel pour les personnes qui se retrouveront tôt ou tard dans le même cas que moi. Et puis ça me sert aussi de gros aide mémoire <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Vous pouvez consulter l&#8217;article <a href="http://yoannsculo.developpez.com/tutoriels/linux/introduction-dbus/">sur developpez.com</a>, mais également <a href="ftp://ftp-developpez.com/yoannsculo/tutoriels/linux/introduction-dbus/introduction-dbus.pdf">au format pdf</a>.</p>
<blockquote><p>D-Bus est un système de communication inter-processus initié en 2002 offrant un moyen simple de dialoguer entre applications. Aujourd&#8217;hui il est présent sur de très nombreux projets. Il fait partie intégrante d&#8217;Ubuntu, et sait être assez obscur pour les personnes souhaitant l&#8217;utiliser ou le comprendre. Cet article s&#8217;adresse aux personnes souhaitant comprendre le fonctionnement de D-Bus et éventuellement mettre en place une architecture logicielle basée sur ce bus.</p></blockquote>
<p><span id="more-1719"></span></p>
<h3>Introduction</h3>
<h4 id="LI-A">I-A. Qu&#8217;est-ce que D-Bus ?</h4>
<div>D-Bus est un système de communication inter-processus (IPC : interprocess communication) offrant un moyen simple de dialoguer entre applications. D-Bus permet aux processus qui se sont enregistrés sur le bus d&#8217;exposer des services sur un ou plusieurs bus (système ou session) afin de communiquer entre eux. En outre, D-Bus est en mesure de démarrer des applications et daemons à la demande, lorsque leurs services exposés sur le bus sont demandés.</div>
<div>Démarré en 2002, D-Bus fait partie du projet freedesktop.org, et est maintenu principalement par RedHat. Il est <a href="http://dbus.freedesktop.org/doc/COPYING">distribué</a> sous <a href="http://dbus.freedesktop.org/doc/dbus-faq.html#id562905">double licence</a> <a href="http://www.opensource.org/licenses/gpl-2.0">GPL V2</a> / <a href="http://www.opensource.org/licenses/afl-3.0.php">AFL</a>.</div>
<div>Vous pouvez retrouver les spécifications détaillées du protocole sur <a href="http://dbus.freedesktop.org/doc/dbus-specification.html">le site de freedesktop</a>.</div>
<div>Le but de cet article est avant tout de présenter le fonctionnement de D-Bus sans rentrer dans le détail de ses différentes implémentations. L&#8217;article ne requiert pas de prérequis particuliers si ce n&#8217;est quelques connaissances basique de fonctionnement d&#8217;un système Linux. A l&#8217;issue de cet article, l&#8217;idée est d&#8217;être en mesure de comprendre les particularités de D-Bus et d&#8217;avoir les bases pour mettre en place une architecture logicielle construite sur D-Bus.</div>
<div>Il existe différents &laquo;&nbsp;<em>bindings</em>&nbsp;&raquo; pour D-Bus. C&#8217;est à dire des bibliothèques développées dans d&#8217;autres langages plus haut niveau que celui de D-Bus, en l&#8217;occurrence le C. Ces bindings s&#8217;avèrent très utiles et d&#8217;adaptent aux besoins des développeurs selon les langages des logiciels à lier à D-Bus. Toutefois, les bindings D-Bus ne seront abordés que dans de futurs articles.</div>
<div>J&#8217;ai récemment mis en place une architecture logicielle basée sur D-Bus. Et j&#8217;ai vraiment manqué de documentation claire lors de la mise en place de D-Bus. Par conséquent j&#8217;ai souhaité partager mon expérience acquise sur le sujet, dans l&#8217;espoir d&#8217;aider un &laquo;&nbsp;<em>futur moi</em>&nbsp;&raquo; dans le besoin. D-Bus est partout, dans nos desktops, nos smartphones et appareils communicants sous Linux. Et nous allons voir en quoi D-Bus est vraiment utile pour le développement de systèmes multi processus.</div>
<div>Je n&#8217;ai pas la prétention de prêcher la parole ultime. On trouve un certain nombre de documentations sur cette carte, et bien souvent en anglais. Ce tutoriel permet de faire un tour des fonctionnalités de base, rassemblant tout ce que j&#8217;ai pu trouver sur Internet mais aussi découvrir à travers mes différents projets.</div>
<h4 id="LI-B">I-B. Projets utilisant D-Bus</h4>
<div>Les projets utilisant D-Bus sont relativement nombreux, on peut lister :</div>
<ul>
<li>Gnome</li>
<li>MeeGo, anciennement Maemo / Moblin</li>
<li>Android</li>
<li>Skype</li>
<li>Telepathy</li>
<li>Evolution</li>
<li>Pidgin</li>
<li>Nautilus</li>
<li>Connman</li>
<li>network-manager</li>
<li>HAL</li>
<li>&#8230;</li>
</ul>
<div>Pour prendre un exemple concret, au sein d&#8217;Ubuntu, D-Bus permet, entre autres :</div>
<ul>
<li>à Nautilus de lancer un fichier multimedia via Rhythmbox au passage de la souris sur l&#8217;icone du fichier.</li>
<li>à Pidgin d&#8217;afficher des popups de notification via Gnome à la réception de messages.</li>
<li>à Evolution d&#8217;afficher des popups de notification via Gnome en cas de réception d&#8217;email.</li>
<li>à Network-manager de gérer dans Gnome l&#8217;icone de gestion du réseau en haut à droite de l&#8217;écran</li>
</ul>
<h3 id="LII">II. D-Bus : Les concepts</h3>
<div>L&#8217;implémentation du protocole D-Bus offre différents outils :</div>
<ul>
<li>Une bibliothèque, <strong>libdbus</strong>, permettant aux applications de communiquer entre elles.</li>
<li>Un exécutable <strong>dbus-daemon</strong> basé sur libdbus, dont le rôle est de créer le support de communication entre les processus. Le daemon va s&#8217;occuper de router et acheminer les messages vers un ou plusieurs processus connectées au bus.</li>
<li>Des wrappers et bindings permettant de travailler avec certains langages ou framework particuliers. Il existe des bindings pour le C et la glib, le C++ et le framework QT, Python, etc. A cela s&#8217;ajoute une API low-level en C permettant de créer ses propres bindings.</li>
</ul>
<div>D-Bus peut être vu comme une sorte de routeur auquel chacun des processus est connecté par une connexion bidirectionnelle.</div>
<div>
<div id="attachment_1736" class="wp-caption aligncenter" style="width: 413px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-1.png"><img class="size-full wp-image-1736" title="dbus-schema-1" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-1.png" alt="" width="403" height="398" /></a></dt>
</dl>
</div>
<div>La connexion (sockets sur le schéma) peut prendre différentes formes :</div>
<ul>
<li>Unix Domain Sockets (IPC Sockets)</li>
<li>launchd sous Mac OS X</li>
<li>TCP/IP sockets</li>
</ul>
<div>Il s&#8217;agit d&#8217;un protocole binaire, non textuel, qui s&#8217;affranchit donc des problèmes de sérialisation et de parsing de données formatées tel que le XML. On gagne donc en vitesse. (Hélas je n&#8217;ai pas eu l&#8217;occasion de tester et mesure cet aspect). Si vous êtes courageux, vous pouvez retrouver les spécifications de D-Bus sur <a href="http://dbus.freedesktop.org/doc/dbus-specification.html">le site de freedesktop</a>.</div>
<div>D-Bus offre deux types de bus :</div>
<ul>
<li>Le bus <strong>session</strong>, il est utilisé pour la communication au sein d&#8217;une session utilisateur. Plus particulièrement au sein d&#8217;une session graphique de X. Il est créé à l&#8217;ouverture de session de l&#8217;utilisateur et perdure tant qu&#8217;elle est ouverte.</li>
<li>Le bus <strong>système</strong>, comme son nom l&#8217;indique est dédié au transport d&#8217;information système bas niveau telles que les events kernel sous Linux, les notifications de connexion à un réseau, le (dé)branchement d&#8217;un périphérique USB, le statut de la batterie, etc. Des messages qui concernent donc tous les utilisateurs connectés au système. N&#8217;importe quel processus est en mesure de se connecter au bus système. Cependant, cette instance de bus possède une couche de sécurité autorisant ou refusant les messages qu&#8217;on lui demande de transmettre. A noter, que seul un seul bus système peut fonctionner à la fois. Le bus système est créé au démarrage du système dans une distribution de type Ubuntu.</li>
</ul>
<div>Rien ne nous empêche de connecter une application à plusieurs bus. Par exemple à plusieurs bus session et au bus système. On peut par exemple séparer plusieurs bus de session pour des questions de sécurité. Mais nous aborderons la notion de sécurité un peu plus loin.</div>
<div>
<div class="mceTemp mceIEcenter">
<dl id="attachment_1738" class="wp-caption aligncenter" style="width: 329px;">
<dt class="wp-caption-dt"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-2.png"><img class="size-full wp-image-1738" title="dbus-schema-2" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-2.png" alt="" width="319" height="345" /></a><p class="wp-caption-text">Connexions multiples d&#39;un processus</p></div>
</div>
<div>Pour information, je déconseille fortement de tenter un /etc/init.d/dbus restart dans une session Ubuntu. Le résultat est juste catastrophique pour votre session. Vous n&#8217;avez plus qu&#8217;à redémarrer votre session ! <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div>Il existe aujourd&#8217;hui de nombreux systèmes de bus. D-Bus se démarque par sa conception orientée communication entre applications d&#8217;une session de type &laquo;&nbsp;Desktop&nbsp;&raquo;, mais aussi pour la communication entre le Desktop et le système d&#8217;exploitation. D-Bus peut très bien être utilisé pour des systèmes n&#8217;ayant pas forcément de partie graphique, ni d&#8217;aspect &laquo;&nbsp;Desktop&nbsp;&raquo;. C&#8217;est à dire qu&#8217;il est parfaitement envisageable d&#8217;utiliser D-Bus en embarqué pour faire dialoguer ses applications entre elles.</div>
<div>Les mécanismes de D-Bus ne se résument pas qu&#8217;à une simple ouverture de socket entre le processus et le daemon. D-Bus permet d&#8217;identifier de façon unique les services qu&#8217;expose une application sur le bus. Rentrons dans les détails !</div>
<h4 id="LII-A">II-A. Messages</h4>
<div>Il existe différents types de messages :</div>
<ul>
<li>les signaux</li>
<li>les méthodes</li>
<li>les messages d&#8217;erreur</li>
</ul>
<div>Les <strong>signaux</strong> sont des notifications d&#8217;événements. Le signal est à sens unique et n&#8217;attend pas de retour. Son expéditeur ne précise pas le destinataire du message. Plusieurs processus peuvent s&#8217;abonner à ce signal. De plus, il peut contenir des paramètres.</div>
<div>Les <strong>méthodes</strong> permettent à des applications d&#8217;invoquer les méthodes d&#8217;objets distants. Les méthodes peuvent êtres invoquées avec des paramètres. Ces dernières peuvent être synchrones ou asynchrones et surtout en mesure de remonter de l&#8217;information à l&#8217;appelant en renvoyant un ou plusieurs paramètres (qui restent optionnels).</div>
<div>Les <strong>messages d&#8217;erreur</strong> offrent des exceptions dans le cas d&#8217;invocations de méthodes.</div>
<div>Du fait que D-Bus est un mécanisme de communication inter-processus, ce dernier supporte nativement plusieurs types pour les données échangés sur le bus (boolean, int32, string, &#8230;). D-Bus gère également des containers pour ces types : tableau, structure, dictionnaire et variant. Pour une liste exhaustive, se référer <a href="http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol">aux spécifications</a> de D-Bus. Toutefois l&#8217;utilisation du typage de données est intimement liée au &laquo;&nbsp;binding&nbsp;&raquo; choisi lors du développement de l&#8217;application. Ces points seront abordés plus en détail dans de futurs articles.</div>
<h4 id="LII-B">II-B. Services</h4>
<div>Un processus enregistre un service auprès du daemon D-Bus. Tous les clients souhaitant utiliser ce service vont pour cella créer un proxy (voir après). Lorsque des clients vont appeler des méthodes de l&#8217;objet du proxy, ce dernier va convertir ces méthodes en appels D-Bus qui sont reçus et exécutés par le processus qui a enregistré le service.</div>
<div>De plus, D-Bus fournit un mécanisme capable de démarrer automatiquement des applications à partir d&#8217;un simple appel. Une application peut exposer des services sur un bus. Si un des services est demandé par un autre processus, alors D-Bus est en mesure de démarrer l&#8217;application pour avoir accès au service en question.</div>
<div>Prenons l&#8217;exemple du service org.gnome.Rhythmbox sous Linux (lecteur multimédia d&#8217;Ubuntu). Il est possible de lui demander de lire une musique, voir de lire la suivante dans une liste de lecture, la stopper, etc. Tout cela par D-Bus. Si un appel D-Bus demande de lire une musique, et que le service Rythmbox n&#8217;est pas enregistré sur le Bus, alors, il va être automatiquement lancé et le message en question sera transmis à Rythmbox une fois que ce dernier sera opérationnel. Toutes ces étapes sont transparentes pour le processus à l&#8217;initiative de l&#8217;appel.</div>
<div>Nous pourrons voir un peu plus loin un exemple d&#8217;utilisation de Rythmbox par Dbus en ligne de commande.</div>
<div>Généralement, la plupart des applications utilisant D-Bus sont définies commes services. Sous Linux, la liste des services est située dans le dossier <em>/usr/share/dbus-1/services</em>. On y retrouve notamment à l&#8217;intérieur le nom du service et le binaire à démarrer à l&#8217;appel du service.</div>
<h4 id="LII-C">II-C. Objets</h4>
<div>Chaque message D-Bus possède une source et une destination. Ces adresses sont définies par des &laquo;&nbsp;object paths&nbsp;&raquo;. Chaque processus connecté à un bus peut avoir enregistré un ou plusieurs objets. Les messages sont alors envoyés entre objets, mais pas directement par les applications.</div>
<div>
<div id="attachment_1739" class="wp-caption aligncenter" style="width: 585px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-3.png"><img class="size-full wp-image-1739" title="dbus-schema-3" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/dbus-schema-3.png" alt="" width="575" height="173" /></a><p class="wp-caption-text">Discussion entre deux applications sur D-Bus</p></div>
</div>
<div>Le PATH d&#8217;un objet est similaire à celui d&#8217;un filesystem UNIX, par exemple un objet pourrait être nommé /com/developpez/exemple/objetDBus. Il s&#8217;agit là d&#8217;une convention de nommage, nous sommes libres de créer des PATH de notre choix.</div>
<div>D-Bus permet ainsi aux applications d&#8217;exporter leurs objets et leurs fonctionnalités en tant que méthodes, que les applications peuvent utiliser pour communiquer entre elles. Elles utilisent pour cela les messages D-Bus.</div>
<div>Si l&#8217;on fait une comparaison avec un programme écrit en C++ qui implémente un service réseau, alors le nom du bus est l&#8217;hostname de la machine exécutant le programme. L&#8217;object path peut alors être vu comme un pointeur d&#8217;objet C++</div>
<h4 id="LII-D">II-D. Interfaces</h4>
<div>D-Bus utilise également le principe d&#8217;interfaces, ce qui autorise l&#8217;utilisation d&#8217;un même nom de méthode plusieurs fois au sein d&#8217;un objet pour différents contextes. C&#8217;est une sorte de “namespace” pour les noms de méthodes, un groupe de méthodes et de signaux.</div>
<div>Si l&#8217;on reprend notre analogie au C++, l&#8217;interface peut être vue comme une classe C++</div>
<div>On peut prendre l&#8217;exemple de l&#8217;interface <strong>org.freedesktop.Introspectable</strong> qui permet aux instances d&#8217;objets de récupérer la description d&#8217;un objet (interfaces, signaux, méthodes et mêmes propriétés) et donc de faire ce que l&#8217;on appelle de l&#8217;introspection sur le bus. Très pratique ! (je ne vais pas plus loin, c&#8217;est juste un exemple. Vous avez <a href="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-introspectable">plus d&#8217;informations à ce sujet</a> dans les spécifications.)</div>
<h4 id="LII-E">II-E. Proxies</h4>
<div>Les proxies sont des éléments haut niveau dans D-Bus, utilisés par les bindings pour simplifier l&#8217;utilisation du protocole. Ils permettent d&#8217;accéder aux objets à distance tout en travaillant au sein de notre programme. L&#8217;utilisation sera plus ou moins transparente pour le développeurs suivant les bindings. Le binding Glib n&#8217;est pas le plus simple hélas, mais permet de comprendre eu peu plus en détail le fonctionnement de D-Bus. Le binding Java, par exemple ne fait pas de différence entre les objets et les proxies. On a alors l&#8217;impression de travailler directement avec un objet. Nous pourrons aborder cette petite différence dans les prochains tutoriaux relatifs aux différents bindings.</div>
<div>Il est intéressant de noter qu&#8217;un proxy (pour certains bindings comme la Glib) permet de travailler avec un objet distant même en cas de &laquo;&nbsp;déconnexion&nbsp;&raquo; de celui-ci. Les proxies se comportant de cette façon, gèrent une sorte de &laquo;&nbsp;failover&nbsp;&raquo;. La reconnexion à l&#8217;objet distant est alors transparente, ce qui est relativement pratique. Prenons l&#8217;exemple du fichier <strong>org.gnome.Rhythmbox.service</strong> :</div>
<div>
<pre class="brush: bash; gutter: false; title: ; notranslate">
[D-BUS Service]
Name=org.gnome.Rhythmbox
Exec=/usr/bin/rhythmbox
</pre>
</div>
<h3 id="LIII">III. Fonctionnement et utilisation de D-Bus</h3>
<div>Avec une installation clé en main classique, D-Bus se créé un script de démarrage dans /etc/init.d qui permet de démarrer et stopper le daemon. Tout est démarré de façon automatique et presque transparente pour l&#8217;utilisateur. Nous allons toutefois décortiquer les étapes de lancement de D-Bus.</div>
<div>Avant toute chose D-Bus ne nécessite pas beaucoup de dépendances, on peut librement choisir la dépendance à libexpat ou libxml2. Le package sous Ubuntu utilise expat par défaut, mais la recompilation nécessaire pour passer à libxml2 n&#8217;est pas bien méchante.</div>
<div>D-Bus arrive avec un lot d&#8217;exécutables :</div>
<ul>
<li><strong>dbus-launch</strong> : permet de démarrer un bus session depuis un script shell</li>
<li><strong>dbus-cleanup-sockets</strong> : fait le ménage dans les sockets ouverts par des bus et qui ne sont plus utilisés.</li>
<li><strong>dbus-send</strong> : permet d&#8217;envoyer un message sur le bus depuis un script shell</li>
<li><strong>dbus-daemon</strong> : Le plus important, le daemon D-Bus</li>
<li><strong>dbus-monitor</strong> : Permet d&#8217;observer ce qui transite sur un ou plusieurs bus</li>
<li><strong>dbus-uuidgen</strong> : génère des uuids pour les sessions de D-Bus</li>
</ul>
<div>et de fichiers de configuration par défaut (/etc/dbus-1/ sous Linux)</div>
<h4 id="LIII-A">III-A. Lancement de D-Bus</h4>
<div>Pour lancer D-Bus lorsqu&#8217;il n&#8217;est pas déjà lancé (attention, les distributions récentes le lancent au démarrage), la première chose à faire est de lancer :</div>
<div>
<table id="codeTabled0e516">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e516">
<div id="codeOverflowd0e516">
<pre><code id="contenuCoded0e516">dbus-uuidgen --ensure
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>qui va aller vérifier l&#8217;existence du fichier /var/lib/dbus/machine-id. S&#8217;il n&#8217;existe pas il va générer un nouvel <a href="http://fr.wikipedia.org/wiki/Universal_Unique_Identifier">uuid</a> (un identifiant unique). Le comportement est similaire à la commande uuidgen. Attention toutefois, l&#8217;uuid généré n&#8217;est pas un uuid standard.</div>
<div>L&#8217;étape suivante est le démarrage du bus system :</div>
<div>
<table id="codeTabled0e528">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e528">
<div id="codeOverflowd0e528">
<pre><code id="contenuCoded0e528">/usr/bin/dbus-daemon --system
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>Il existe tout un lot d&#8217;options avancées à <em>dbus-daemon</em> que vous pouvez retrouver sur le man de celui-ci. A noter cependant, qu&#8217;écrire <em>dbus-daemon &#8211;system</em> revient à écrire l&#8217;option &laquo;&nbsp;<em>&#8211;config-file=/etc/dbus-1/system.conf</em>&laquo;&nbsp;, même chose pour <em>&#8211;session</em> avec &laquo;&nbsp;<em>/etc/dbus-1/session.conf</em>&laquo;&nbsp;</div>
<div>Cela me permet alors d&#8217;introduire la notion de configuration de D-Bus. En effet, ce dernier est paramétrable grâce aux fichiers de configuration suivants</div>
<ul>
<li>/etc/dbus-1/system.conf</li>
<li>/etc/dbus-1/session.conf</li>
</ul>
<div>Ils permettent de préciser des limites de ressources, paramètres de sécurité, tailles de messages, timeout, &#8230; Je vous invite à consulter le man de dbus-daemon pour en savoir plus.</div>
<div>Le lancement d&#8217;une session est &laquo;&nbsp;légèrement&nbsp;&raquo; plus compliqué. Comme il peut y avoir plusieurs bus session, il faut être en mesure de distinguer sur quel bus nous allons discuter. Nous utilisons pour cela la commande <em>dbus-launch</em>. Celle-ci va alors lancer une instance de bus de session en définissant les variables d&#8217;environnement nécessaires pour que les futurs programmes soient en mesure de trouver le bus.</div>
<div>Il suffit alors de lancer la commande suivante</div>
<div>
<table id="codeTabled0e573">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e573">
<div id="codeOverflowd0e573">
<pre><code id="contenuCoded0e573">dbus-launch --sh-syntax
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>qui nous retourne ces quelques lignes sur la sortie standard</div>
<div>
<table id="codeTabled0e579">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e579">
<div id="codeOverflowd0e579">
<pre><code id="contenuCoded0e579">DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-pV37oOMDlR,guid=90f13303a628db51a40b63454d14b6e7';
export DBUS_SESSION_BUS_ADDRESS;
DBUS_SESSION_BUS_PID=10440;
DBUS_SESSION_BUS_WINDOWID=62914561;
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div><em>dbus-launch</em> fait tout simplement appel à <em>dbus-daemon &#8211;session</em> et se charge de définir les variables de session que nous avons là. DBUS_SESSION_BUS_ADDRESS nous permet alors d&#8217;identifier le bus que nous venons de créer (on y retrouve les information sur le socket ouvert ainsi que l&#8217;uuid du bus). Sans la variable DBUS_SESSION_BUS_ADDRESS de définie dans votre environnement, vous aurez le droit à une erreur.</div>
<div>J&#8217;utilise ici l&#8217;option <em>&#8211;sh-syntax</em> qui permet d&#8217;afficher les informations du bus sur la sortie standard à destination d&#8217;un shell de type sh. Il existe d&#8217;autres options de formatage : <em>&#8211;csh-syntax</em>, <em>&#8211;binary-syntax</em>, ou <em>&#8211;auto-syntax</em>. Car par défaut, dbus-launch écrit de simples clés/valeurs sur la sortie standard et ne les exporte pas.</div>
<div>Je vous invite à regarder les man de chacune de ces commande si vous souhaitez avoir accès aux options avancées. A noter que la commande dbus-cleanup-sockets permet de faire du ménage dans les sockets ouverts par les bus et qui n&#8217;auraient pas été fermés correctement (en cas de fermeture intempestive par exemple.)</div>
<div>Sur un système clé en main de type Ubuntu, tout est lancé automatiquement et le bus est intimement lié à la session de Gnome. Donc avec un Ubuntu fraichement démarré, nous avons les bus system et session qui tournent. Par conséquent, nous n&#8217;avons pas à nous soucier des variables d&#8217;environnement déjà définies au démarrage de la session.</div>
<h4 id="LIII-B">III-B. Utilisation de D-Bus par l&#8217;exemple</h4>
<div>Nous pouvons à présent nous intéresser à d&#8217;autres commandes déjà plus concrètes.</div>
<ul>
<li><em><strong>dbus-monitor</strong></em>, comme son nom l&#8217;indique, permet à la façon “wireshark” d&#8217;observer ce qui transite sur le bus.</li>
<li><em><strong>dbus-monitor &#8211;system</strong></em> permet d&#8217;observer le bus system</li>
<li><em><strong>dbus-monitor &#8211;session</strong></em> permet d&#8217;observer le bus session</li>
</ul>
<div>Sans paramètre donné, dbus-monitor observera le bus session.</div>
<div>Vous pouvez alors voir qu&#8217;au sein d&#8217;une session Ubuntu énormément d&#8217;information transite sur le bus. En observant le bus system, on peut remarquer que des informations transitent lorsque l&#8217;on branche ou débranche une souris par exemple.</div>
<div>Il est possible filtrer les messages en spécifiant le type, l&#8217;émetteur, l&#8217;interface, &#8230; Par exemple observer les signaux envoyés par l&#8217;objet org.gnome.TypingMonitor:</div>
<div>
<table id="codeTabled0e651">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e651">
<div id="codeOverflowd0e651">
<pre><code id="contenuCoded0e651">dbus-monitor <code>type</code>=signal <code>sender</code>=org.gnome.TypingMonitor <code>interface</code>=org.gnome.TypingMonitor
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>Ou pour espionner les signaux de Pidgins, nous pouvons utiliser la syntaxe suivante :</div>
<div>
<table id="codeTabled0e666">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e666">
<div id="codeOverflowd0e666">
<pre><code id="contenuCoded0e666">dbus-monitor <code>type</code>=signal <code>interface</code>=im.pidgin.purple.PurpleInterface
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>Les outils graphiques :</div>
<ul>
<li><a href="http://live.gnome.org/DFeet">d-feet</a></li>
<li><a href="http://willthompson.co.uk/bustle/">bustle</a></li>
<li><a href="http://www.ndesk.org/DBusExplorer">DBusExplorer</a></li>
<li><a href="http://www.vitavonni.de/projekte/dbus-inspector.html.de">dbus-inspector</a></li>
<li><a href="http://doc.qt.nokia.com/4.5/qdbusviewer.html">QDBusViewer</a></li>
</ul>
<div>permettent également d&#8217;observer ce qui transite sur D-Bus et de communiquer avec les processus. Mais d&#8217;autres applications existent, comme <a href="http://alban.apinc.org/blog/2010/04/01/d-bus-debugging-how-to-use-d-feet-on-n900/">dbus-daemon-proxy</a> développée par Alban Créquy qui redirige tout le trafic D-Bus par TCP. Outil initialement prévu pour teléphone nokia N900, pratique pour débugger à distance.</div>
<div>Pour terminer, le plus intéressant, l&#8217;outil dbus-send. Cette commande permet tout simplement d&#8217;envoyer un message depuis un script shell, et va me permettre d&#8217;illustrer concrètement mes précédentes explications.</div>
<div><em>dbus-send</em> attend au minimum les arguments suivants :</div>
<ul>
<li>le nom du destinataire</li>
<li>l&#8217;object path</li>
<li>le nom du message</li>
<li>et dans certains cas le type de message est requis</li>
</ul>
<div>Prenons quelques exemples sous Ubuntu</div>
<div>
<table id="codeTabled0e734">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e734">
<div id="codeOverflowd0e734">
<pre><code id="contenuCoded0e734">dbus-send --<code>dest</code>=<code>'</code><code>org.gnome.Rhythmbox</code><code>'</code> /org/gnome/Rhythmbox/Player org.gnome.Rhythmbox.Player.next
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>envoie le message next au logiciel Rythmbox ce qui fait passer à la musique suivante</div>
<div>
<table id="codeTabled0e750">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e750">
<div id="codeOverflowd0e750">
<pre><code id="contenuCoded0e750">dbus-send --<code>dest</code>=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Backlight org.freedesktop.PowerManagement.Backlight.SetBrightness uint32:<code>25</code>
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>réduit à 25% la luminosité de votre écran</div>
<div>
<table id="codeTabled0e762">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e762">
<div id="codeOverflowd0e762">
<pre><code id="contenuCoded0e762">dbus-send --print-reply --<code>dest</code>=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Backlight org.freedesktop.PowerManagement.Backlight.GetBrightness
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>retourne la valeur de la luminosité de votre écran</div>
<div>
<table id="codeTabled0e771">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e771">
<div id="codeOverflowd0e771">
<pre><code id="contenuCoded0e771">dbus-send --<code>type</code>=method_call --<code>dest</code>=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>verrouille votre écran</div>
<div>
<table id="codeTabled0e783">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e783">
<div id="codeOverflowd0e783">
<pre><code id="contenuCoded0e783">dbus-send --<code>type</code>=method_call --<code>dest</code>=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Shutdown
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>éteint votre ordinateur</div>
<div>
<table id="codeTabled0e795">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e795">
<div id="codeOverflowd0e795">
<pre><code id="contenuCoded0e795">dbus-send --system --print-reply --<code>dest</code>=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.GetAllProperties
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>retourne toutes les propriétés de HAL (hardware abstraction layer), c&#8217;est à dire de votre matériel.</div>
<div>Etc.</div>
<h3 id="LIV">IV. Gestion de la sécurité avec D-Bus</h3>
<div>D-Bus a également été développé dans un soucis de sécurité lors de l&#8217;échanges de messages. Les politiques de sécurité de D-Bus permettent de spécifier qui a le droit de parler à qui, ce qui est réellement pratique.</div>
<div>La politique de sécurité de D-Bus se précise dans les dossiers :</div>
<ul>
<li>le dossier /etc/dbus-1/system.d pour le bus système</li>
<li>le dossier /etc/dbus-1/session.d pour le bus session</li>
</ul>
<div>Elle se présente sous la force de fichiers XML à placer directement dans les dossier cités précédemment. Peu importe le nom des fichiers, seul le contenu va jouer ici.</div>
<div>Voici un exemple très simple qui autorise l&#8217;utilisateur root à</div>
<ul>
<li>posséder l&#8217;objet com.developpez.exemple.ObjetA</li>
<li>envoyer des messages à l&#8217;object com.developpez.exemple.ObjetA</li>
<li>appeler l&#8217;interface com.developpez.exemple.ObjectInterface</li>
</ul>
<div>
<table id="codeTabled0e847">
<tbody>
<tr>
<td>
<div id="codeWrapperd0e847">
<div id="codeOverflowd0e847">
<pre><code id="contenuCoded0e847">
<code>&lt;!</code><code>DOCTYPE</code><code> </code><code>busconfig</code><code> </code><code>PUBLIC</code>
<code> </code><code>"</code><code>-//freedesktop//DTD</code><code> </code><code>D-BUS</code><code> </code><code>Bus</code><code> </code><code>Configuration</code><code> </code><code>1.0//EN</code><code>"</code>
<code> </code><code>"</code><code>http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd</code><code>"</code><code>&gt;</code>
<code>&lt;</code><code>busconfig</code><code>&gt;</code>
    <code>&lt;</code><code>policy</code><code> </code><code>user</code><code>=</code><code>"</code><code>root</code><code>"</code><code>&gt;</code>
        <code>&lt;</code><code>allow</code><code> </code><code>own</code><code>=</code><code>"</code><code>com.developpez.exemple.ObjetA</code><code>"</code><code>/</code><code>&gt;</code>
        <code>&lt;</code><code>allow</code><code> </code><code>send_destination</code><code>=</code><code>"</code><code>com.developpez.exemple.ObjetA</code><code>"</code><code>/</code><code>&gt;</code>
        <code>&lt;</code><code>allow</code><code> </code><code>send_interface</code><code>=</code><code>"</code><code>com.developpez.exemple.ObjectInterface</code><code>"</code><code>/</code><code>&gt;</code>
    <code>&lt;</code><code>/</code><code>policy</code><code>&gt;</code>
<code>&lt;</code><code>/</code><code>busconfig</code><code>&gt;</code>
</code></pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>Il est alors possible de restreindre les accès suivant les utilisateurs, mais surtout de dire qui a droit de parler avec qui et sur quelles interfaces. Pour des explications détaillées sur la configuration des politiques de sécurité, se référer au man de dbus-daemon.</div>
<div>Dans certains cas, la sécurité de D-Bus n&#8217;est pas suffisante, et peut être couplée à SELinux. SELinux apporte la possibilité de restreindre l&#8217;accès d&#8217;applications spéficiques à des services donnés. Je n&#8217;ai jamais eu l&#8217;occasion d&#8217;aller jusque là, mais sa configuration se fait grâce à la balise &lt;selinux&gt;. Pour plus d&#8217;information, se référer également au man ou à <a href="http://www.redhat.com/magazine/003jan05/features/dbus">la documentation de Redhat</a>.</div>
<h3 id="LV">V. Les avantages et inconvénients de D-Bus</h3>
<h4 id="LV-A">V-A. Les avantages</h4>
<ul>
<li>D-Bus est léger</li>
<li>D-Bus est un simple bus partagé par tout le système. Ce qui offre la possibilité de faire communiquer énormément d&#8217;applications entre elles, qu&#8217;elles soient au niveau de la session X ou du noyau.</li>
<li>D-Bus permet une communication synchrone/asynchrone.</li>
<li>Dans certains cas (comme Telepathy), D-Bus peut-être utile pour faire cohabiter des programmes dont les licences seraient contaminantes si elles ne passaient pas par un bus intermédiaire.</li>
<li>D-Bus est multiplateforme et présent sur les 3 OS principaux (Windows, Mac, Linux)</li>
<li>D-Bus peut être détourné de son utilisation &laquo;&nbsp;desktop&nbsp;&raquo; classique et adaptée aux besoins des systèmes embarqués.</li>
<li>D-Bus permet de travailler de façon modulaire et développer des applications découpées en briques communicantes. Une brique peut planter sans impacter les autres et se reconnecter au bus d&#8217;elle même sans que tout le système s&#8217;écroule.</li>
</ul>
<h4 id="LV-B">V-B. Les inconvénients</h4>
<ul>
<li>Suivant le binding choisi D-Bus peut-être contaminant du fait de sa license. Prenons l&#8217;exemple du binding glib, sous license <a href="http://www.opensource.org/licenses/gpl-2.0">GPL V2</a>. Il peut être &laquo;&nbsp;embêtant&nbsp;&raquo; de lier un projet dont on ne souhaite pas publier le code métier sous license open source. Ce genre de désagrément sera abordé dans un futur article dédié au binding glib. Cependant il faut néanmoins bien prendre en compte la question des licenses lorsque l&#8217;on part sur des projets industriels avec D-Bus. Les très mauvaises surprises sont très vite arrivées.</li>
<li>Selon le binding, l&#8217;apport de bibliothèques partagées assez lourdes peut-être assez problématique selon les projets. Pour des cibles de type embarqué par exemple, embarquer le binding glib et ses libdbus.so* n&#8217;est pas un choix à prendre à la légère et peut être même rédhibitoire selon les contraintes de ressources et de place.</li>
<li>Je n&#8217;en trouve pas d&#8217;autres ! <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<h3 id="LVI">VI. Les différents bindings D-Bus</h3>
<div>Il existe <a href="http://www.freedesktop.org/wiki/Software/DBusBindings">différents bindings</a> D-Bus pour utiliser le protocole avec différents langages :</div>
<div>L&#8217;API C &laquo;&nbsp;low-level&nbsp;&raquo; de D-Bus existe pour créer de nouveaux bindings. La librairie permet de travailler de façon très bas niveau sur le protocole. Mais comme la documentation le précise &laquo;&nbsp;<em>If you use this low-level API directly, you&#8217;re signing up for some pain.</em>&nbsp;&raquo; &laquo;&nbsp;<em>Si vous utilisez directement l&#8217;API bas niveau, vous vous engagez à souffrir</em>&nbsp;&raquo; <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div>Mais pour travailler avec des langages un peu plus haut niveau, des bindings existent pour les langages suivants. En C avec Glib et Vala, en Python avec <a href="http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html">dbus-python</a> , en C++ avec <a href="http://dbus-cxx.sourceforge.net/">dbus-cxx</a> ou le module <a href="http://doc.trolltech.com/4.7/qtdbus.html">QtDBus de QT</a>, mais aussi en <a href="http://dbus.freedesktop.org/doc/dbus-java/">Java</a>, <a href="http://cgit.freedesktop.org/dbus/dbus-mono/">C#</a>,<a href="http://download.enlightenment.org/snapshots/LATEST/">enlightenment</a>, <a href="http://search.cpan.org/~danberr/Net-DBus-0.33.3/lib/Net/DBus.pm">Perl</a>, <a href="http://pecl.php.net/package/DBus">PHP</a>, Pascal, <a href="https://trac.luon.net/ruby-dbus/">Ruby</a>, <a href="http://hackage.haskell.org/package/dbus-core">Haskell</a>, <a href="http://obus.forge.ocamlcore.org/">OCaml</a>, Objective-C, &#8230;</div>
<h3 id="LVII">VII. Conclusion</h3>
<div>Aujourd&#8217;hui, une très grande part des applications GNOME et KDE utilise D-Bus comme support de communication. Les possibilités d&#8217;interfaçage sur de nombreux langages offre de de belles possibilités de développement multiprocessus. Si j&#8217;arrive à trouver le temps, je rédigerai un prochain article sur des bindings D-Bus en particulier, histoire d&#8217;illustrer encore plus mes propos. En attendant, si vous avez des questions, ou remarques, n&#8217;hésitez pas !</div>
<h3 id="LVIII">VIII. Remerciements</h3>
<div>Je remercie beaucoup <a href="http://www.developpez.net/forums/u54119/bizulk/">bizulk</a> pour sa relecture méticuleuse et ses remarques constructives qui m&#8217;ont été très utiles.</div>
<h3 id="LIX">IX. Bibliographie</h3>
<ul>
<li><a href="http://library.gnome.org/devel/platform-overview/stable/dbus.html.en">http://library.gnome.org/devel/platform-overview/stable/dbus.html.en</a></li>
<li><a href="http://www.ibm.com/developerworks/linux/library/l-dbus.html">http://www.ibm.com/developerworks/linux/library/l-dbus.html</a></li>
<li><a href="http://freedesktop.org/wiki/IntroductionToDBus">http://freedesktop.org/wiki/IntroductionToDBus</a></li>
<li><a href="http://dbus.freedesktop.org/doc/dbus-tutorial.html">http://dbus.freedesktop.org/doc/dbus-tutorial.html</a></li>
<li><a href="http://dbus.freedesktop.org/doc/dbus-specification.html">http://dbus.freedesktop.org/doc/dbus-specification.html</a></li>
<li><a href="http://www.redhat.com/magazine/003jan05/features/dbus">http://www.redhat.com/magazine/003jan05/features/dbus</a></li>
<li><a href="http://www.unixgarden.com/index.php/programmation/decouvertes-et-experimentation-avec-d-bus">http://www.unixgarden.com/index.php/programmation/decouvertes-et-experimentation-avec-d-bus</a></li>
<li><a href="http://www.linuxjournal.com/article/7744">http://www.linuxjournal.com/article/7744</a></li>
<li><a href="http://doc.ubuntu-fr.org/dbus">http://doc.ubuntu-fr.org/dbus</a></li>
<li><a href="http://www.linuxforu.com/teach-me/d-bus-the-smart-simple-powerful-ipc">http://www.linuxforu.com/teach-me/d-bus-the-smart-simple-powerful-ipc</a></li>
<li>Sans compter la mailing-list de D-Bus <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
</div>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fintroduction-au-systeme-de-communication-inter-processus-d-bus%2F&amp;title=Introduction%20au%20syst%C3%A8me%20de%20communication%20inter-processus%20D-Bus" id="wpa2a_14"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/introduction-au-systeme-de-communication-inter-processus-d-bus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Faire un hash md5 d&#8217;un string en C</title>
		<link>http://www.yoannsculo.fr/faire-un-hash-md5-dun-string-en-c/</link>
		<comments>http://www.yoannsculo.fr/faire-un-hash-md5-dun-string-en-c/#comments</comments>
		<pubDate>Sat, 14 May 2011 23:17:41 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[fonction]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[md5sum]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1656</guid>
		<description><![CDATA[Petit aide mémoire à moi même, et pour les gens qui en auraient besoin un jour. Voici une fonction C bien pratique pour générer le hash md5 d&#8217;une chaîne de caractères en C. Il y a juste besoin de linker openssl (-lssl) lors de la compilation.]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Petit aide mémoire à moi même, et pour les gens qui en auraient besoin un jour. Voici une fonction C bien pratique pour générer le hash md5 d&#8217;une chaîne de caractères en C. Il y a juste besoin de linker openssl (-lssl) lors de la compilation.</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;stdio.h&gt;
#include &lt;openssl/md5.h&gt;
#include &lt;string.h&gt;

int md5_hash_from_string (char *string, char *hash)
{
    int i;
    char unsigned md5[MD5_DIGEST_LENGTH] = {0};

    MD5((const unsigned char *)string, strlen(string), md5);

    for (i=0; i &lt; MD5_DIGEST_LENGTH; i++) {
        sprintf(hash + 2*i, &quot;%02x&quot;, md5[i]);
    }
    return 0;
}

int main()
{
    char string[255] = &quot;Hello World&quot;;
    char md5_hash[2*MD5_DIGEST_LENGTH+1] = &quot;&quot;;
    md5_hash_from_string(string, md5_hash);
    printf(&quot;%s\n&quot;, md5_hash);
    return 0;
}
</pre>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Ffaire-un-hash-md5-dun-string-en-c%2F&amp;title=Faire%20un%20hash%20md5%20d%26%238217%3Bun%20string%20en%20C" id="wpa2a_16"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/faire-un-hash-md5-dun-string-en-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Salon Solutions Linux / Open Source 2011 &#8211; Petit bilan du 11 Mai</title>
		<link>http://www.yoannsculo.fr/salon-solutions-linux-open-source-2011-petit-bilan-du-11-mai/</link>
		<comments>http://www.yoannsculo.fr/salon-solutions-linux-open-source-2011-petit-bilan-du-11-mai/#comments</comments>
		<pubDate>Fri, 13 May 2011 23:11:50 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[CNIT]]></category>
		<category><![CDATA[compte rendu]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Paris]]></category>
		<category><![CDATA[projet]]></category>
		<category><![CDATA[Salon]]></category>
		<category><![CDATA[Salon Solutions Linux / Open Source]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1677</guid>
		<description><![CDATA[Je me suis rendu mercredi dernier au salon Solutions Linux / Open Source 2011. Depuis quelques temps, je mets mon nez dans les salons Linux, il y a plein de choses intéressantes à y apprendre ! Seul problème, trouver le temps de s&#8217;y rendre, ce qui n&#8217;est pas forcément simple quand ça se passe en [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/SolutionsLinux2011.png"><img class="alignleft size-full wp-image-1685" title="SolutionsLinux2011" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/SolutionsLinux2011.png" alt="" width="166" height="88" /></a>Je me suis rendu mercredi dernier au salon Solutions Linux / Open Source 2011. Depuis quelques temps, je mets mon nez dans les salons Linux, il y a plein de choses intéressantes à y apprendre <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ! Seul problème, trouver le temps de s&#8217;y rendre, ce qui n&#8217;est pas forcément simple quand ça se passe en semaine. Bref ! J&#8217;ai choisi mercredi car j&#8217;avais repéré des conférences sur l&#8217;embarqué.</p>
<p style="text-align: justify;">Il y a eu donc une première table ronde sur Android avec des messieurs SSII, dont le monsieur embarqué Pierre Ficheux. Bon, au final rien de bien transcendant. Les points suivants ont été abordés :</p>
<ul>
<li>le marché d&#8217;Android et son émergence depuis quelques années/mois</li>
<li>l&#8217;intégration d&#8217;Android sur de nouveaux devices</li>
<li>l&#8217;utilisation (ou pas) d&#8217;Android par les industriels.</li>
<li>l&#8217;ergonomie d&#8217;Android et sa comparaison avec les produits Apple. (soit dit en passant, ça taillait pas mal sur Apple, niark)</li>
<li>la dépendance vis à vis de Google et la question de sécurité et de vie privée</li>
</ul>
<p style="text-align: justify;">Sinon je ne sais plus qui a dit ça dans les intervenants, mais j&#8217;ai bien rigolé lors de la comparaison d&#8217;Android et du HTML. Genre Android c&#8217;est l&#8217;équivalent du HTML pour les téléphones. Ahahah &#8230; !</p>
<p style="text-align: justify;">Bref ce qui en sort c&#8217;est surtout qu&#8217;Android est un OS Mass Market pour le multimedia pour produits avec écrans. Dans le lot des intervenants, il n&#8217;y avait que 2 personnes avec un esprit un plus critique sur Android. Dommage que la discussion n&#8217;ait pas été plus loin sur les &laquo;&nbsp;inconvénients&nbsp;&raquo; d&#8217;Android, ça aurait été plus intéressant. Car le discours était plus de l&#8217;ordre &laquo;&nbsp;Android il est bien, Android il est gentil, Android c&#8217;est la solution universelle !&nbsp;&raquo;. J&#8217;aurais bien aimé pousser la discussion sur ces inconvénients et avoir une table ronde plus objective. Mais bon d&#8217;un autre côté ils n&#8217;allaient pas inviter un intervenant MeeGo et un intervenant Apple dans le lot pour parler d&#8217;Android <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align: justify;">
<div id="attachment_1688" class="wp-caption aligncenter" style="width: 665px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0201.jpg"><img class="size-large wp-image-1688  " title="IMAG0201" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0201-1024x612.jpg" alt="" width="655" height="392" /></a><p class="wp-caption-text">Table ronde sur Android</p></div>
<p style="text-align: justify;">Tiens, d&#8217;ailleurs ça devait être <a href="http://twitter.com/#!/yoannsculo/status/68309024566812672">le moment</a> où Pierre Ficheux a dit qu&#8217;Eclipse ça faisait pitié (quand on venait du vrai monde des gens qui utilisent QT) <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Je dis respect ! Dire ça à une table ronde sur Android entouré de fanboys Android :) Ahah !</p>
<p style="text-align: justify;">Sinon en passant, vous pouvez retrouver la vidéo de la table ronde sur le site du <a href="http://www.paug.fr/2011/05/table-ronde-android-au-salon-solutions.html">Paris Android User Group</a>. Bon bah il s&#8217;avère que je suis en plein dans le champ à plusieurs reprises (1min50). J&#8217;étais sur le siège d&#8217;à côté&#8230;</p>
<p style="text-align: justify;">
<div id="attachment_1696" class="wp-caption aligncenter" style="width: 665px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0203.jpg"><img class="size-large wp-image-1696  " title="IMAG0203" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0203-1024x612.jpg" alt="" width="655" height="392" /></a><p class="wp-caption-text">Seconde conférence</p></div>
<p style="text-align: justify;">Seconde conférence intitulée &laquo;&nbsp;Terminaux mobiles et fuite de d&#8217;information&nbsp;&raquo;, qui s&#8217;est transformée en &laquo;&nbsp;Architecture Android, les spécificités de l&#8217;OS&nbsp;&raquo; au dernier moment. Philippe Prados, a qui on doit <a href="http://www.frandroid.com/55775/gnulinux-magazine-hors-serie-entierement-consacre-au-developpement-android/">le numéro hors série de Linux Magazine sur Android</a>, nous a expliqué le fonctionnement d&#8217;Android. 30 min pour la présentation, dommage car pas facile de rentrer dans les détails. J&#8217;ai pu réapprendre le fonctionnement des Activities and co d&#8217;Android <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Mais bon ça restait intéressant, bien que très court. Enfin j&#8217;aurais bien aimé avoir la présentation &laquo;&nbsp;Terminaux mobiles et fuite de d&#8217;information&nbsp;&raquo;. Mais apparemment l&#8217;intervenant qui devait venir a eu un imprévu. Donc bah ça sera pour un prochain salon !</p>
<p style="text-align: justify;">
<div id="attachment_1699" class="wp-caption aligncenter" style="width: 402px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0204.jpg"><img class="size-large wp-image-1699  " title="IMAG0204" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0204-612x1024.jpg" alt="" width="392" height="655" /></a><p class="wp-caption-text">Troisième conférence sur OpenEmbedded</p></div>
<p style="text-align: justify;">La troisième conférence était  intitulée &laquo;&nbsp;Linux sur ARM : ça ne date pas de 2010 OpenEmbedded, un framework pour des applications embarquées riches&nbsp;&raquo;. Pendant la conférence d&#8217;avant j&#8217;ai repéré un visage qui me disait quelque chose. J&#8217;ai fini par réaliser qu&#8217;il s&#8217;agissait de Christian Charreyre que j&#8217;avais vu 2 mois plus tôt au salon <a href="http://www.yoannsculo.fr/petit-retour-sur-le-salon-rts-embedded-systems-2011-a-paris/">RTS Embedded Systems</a>. FAIL pour le coup, le nom de la présentation n&#8217;était pas le même, mais le contenu l&#8217;était. Du coup, je me suis assuré que la présentation était identique, et j&#8217;ai plutôt opté pour un retour sur le salon.</p>
<p style="text-align: justify;">Etonnemment je m&#8217;attendais à quelque chose de différent, plus orienté projets open source. Au lieu de ça, il y avait énormément de SSII/SSLL/SSLLL/and co. Il y avait bien sûr pas mal de stands d&#8217;associations relatives à toutes les distribs possibles et imaginables de Linux, un stand Gnome et un stand KDE côte à côte (fight !), l&#8217;April, de l&#8217;hébergeur et encore de l&#8217;hébergeur, pas mal d&#8217;associations d&#8217;utilisateurs et de développeurs, le stand du <a href="http://www.paug.fr">PAUG</a>, et tout plein de stands de SSII <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p style="text-align: justify;">Il y avait Intel également qui présentait MeeGo et ses tablettes atom. J&#8217;ai attendu un moment avant de pouvoir discuter avec une des personnes du stand. J&#8217;ai été un peu violent avec la personne avec mes questions (pardooooon !), je lui ait demandé quels étaient les arguments que je pourrais utiliser pour choisir MeeGo au profit d&#8217;Android. Aie ! Question très méchante ! J&#8217;étais très intéressé par la réponse à cette question à vrai dire. Il m&#8217;a avancé les avantages de l&#8217;open source, de leur store multi-plateformes,  mais je suis déçu, je n&#8217;ai pas eu réellement d&#8217;argument béton pour choisir Meego plutôt qu&#8217;Android. Ce qui m&#8217;a fait un peu peur (enfin j&#8217;étais sur le stand Intel&#8230;) c&#8217;est que MeeGo n&#8217;a pas (plus?) réellement vocation à tourner sur ARM. Enfin il m&#8217;a annoncé clairement qu&#8217;avec le départ de Nokia le support des processeurs ARM était pas franchement leur priorité. Bon Intel prêche aussi pour sa paroisse ! Mais bon&#8230; Donc au final j&#8217;en tire une conclusion simple :</p>
<ul>
<li>Android = arm</li>
<li>MeeGo = x86</li>
</ul>
<p style="text-align: justify;">Aussi simple que cela ? Hum, ça m&#8217;embête ! Je vais continuer à mener mon enquête pour déterminer si je dois choisir MeeGo ou Android pour les prochains produits sur lesquels je vais travailler.</p>
<p>Ah et puis marrant, j&#8217;ai croisé un professeur de lycée qui m&#8217;a reconnu à mon nom sur mon badge car il avait travaillé sur la carte fox et qu&#8217;il connaissait mon blog <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Huhu</p>
<div id="attachment_1702" class="wp-caption aligncenter" style="width: 665px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0206.jpg"><img class="size-large wp-image-1702  " title="IMAG0206" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0206-1024x612.jpg" alt="" width="655" height="392" /></a><p class="wp-caption-text">Un éléphant PHP géant ! Cooool !</p></div>
<p style="text-align: justify;">Ah oui ! Aussi, un truc qui m&#8217;a bien fait marrer ! Un stand Microsoft ! (désolé pour la photo crade)</p>
<div id="attachment_1705" class="wp-caption aligncenter" style="width: 402px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0207.jpg"><img class="size-large wp-image-1705  " title="IMAG0207" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/IMAG0207-612x1024.jpg" alt="" width="392" height="655" /></a><p class="wp-caption-text">Des guerriers courageux de chez Microsoft !</p></div>
<p style="text-align: justify;">Pour conclure, je suis bien content de ce salon. Ne serait-ce que par simple curiosité, j&#8217;avais envie d&#8217;y aller. J&#8217;imaginais l&#8217;évènement un peu plus geek, au lieu de cela je suis tombé plus sur un salon très axé service. Les projets open source étaient représentés par des associations, et les sociétés qui les mettent en oeuvre placées à part. Je comprends le fonctionnement, mais je  ne m&#8217;attendais pas à ça.</p>
<p style="text-align: justify;">Sinon j&#8217;ai pu grapiller bien du Linux Mag et de la revue en tout genre <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Ah et puis &#8230; merci pour les autocollants Linux, ils ont fini collés sur le mac d&#8217;un de mes collègues <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Prochain salon, les RMLL en juillet !</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fsalon-solutions-linux-open-source-2011-petit-bilan-du-11-mai%2F&amp;title=Salon%20Solutions%20Linux%20%2F%20Open%20Source%202011%20%26%238211%3B%20Petit%20bilan%20du%2011%20Mai" id="wpa2a_18"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/salon-solutions-linux-open-source-2011-petit-bilan-du-11-mai/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Raspberry Pi &#8211; Révolution du Do It Yourself ?</title>
		<link>http://www.yoannsculo.fr/raspberry-pi-revolution-du-do-it-yourself/</link>
		<comments>http://www.yoannsculo.fr/raspberry-pi-revolution-du-do-it-yourself/#comments</comments>
		<pubDate>Tue, 10 May 2011 17:23:30 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[ARM 11]]></category>
		<category><![CDATA[embarqué]]></category>
		<category><![CDATA[low-cost]]></category>
		<category><![CDATA[Pi]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Raspberry Pi Foundation]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=1641</guid>
		<description><![CDATA[Avec un peu de retard, je viens de tomber sur la carte Raspberry Pi, annoncée par The Raspberry Pi Foundation, une fondation britannique. Cette dernière, dont le but est de promouvoir l&#8217;apprentissage de l&#8217;informatique, plus particulièrement dans les écoles, vient de lancer un gros pavé dans la mare. Elle propose de développer et produire un [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Avec un peu de retard, je viens de tomber sur la carte Raspberry Pi, annoncée par <a href="http://www.raspberrypi.org/">The Raspberry Pi Foundation</a>, une fondation britannique. Cette dernière, dont le but est de promouvoir l&#8217;apprentissage de l&#8217;informatique, plus particulièrement dans les écoles, vient de lancer un gros pavé dans la mare. Elle propose  de développer et produire un ordinateur ultra ultra low cost d&#8217;ici un an.</p>
<p style="text-align: justify;">Il s&#8217;agit d&#8217;un système basé sur un processeur ARM11 à 700MHz et 128Mo de RAM. De la taille d&#8217;une clé USB, ils l&#8217;annoncent à un prix de £10 à £15 (soit 17€). Oui 17€ ! Même s&#8217;il ne s&#8217;agit peut-être là que du prix des composants cela reste réellement intéressant.</p>
<p>En voici les specs détaillées :</p>
<ul>
<li>700MHz ARM11</li>
<li>128MB of SDRAM</li>
<li>OpenGL ES 2.0</li>
<li>1080p30 H.264 high-profile decode</li>
<li>Composite and HDMI video output</li>
<li>USB 2.0</li>
<li>SD/MMC/SDIO memory card slot</li>
<li>General-purpose I/O</li>
<li>Open software (Ubuntu, Iceweasel, KOffice, Python)</li>
</ul>
<div id="attachment_1649" class="wp-caption aligncenter" style="width: 658px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2011/05/pcb.jpg"><img class="size-full wp-image-1649" title="pcb" src="http://www.yoannsculo.fr/wp-content/uploads/2011/05/pcb.jpg" alt="" width="648" height="486" /></a><p class="wp-caption-text">Le système Raspberry Pi avec un module caméra</p></div>
<p style="text-align: justify;">Sachant ce que l&#8217;on peut faire avec un tel matériel, cela pourrait bien devenir un produit révolutionnaire pour la communauté de la bidouille et du DIY. Le prix est tellement bas que je me demande *vraiment* si ce communiqué est vrai et si le projet est économiquement viable. Si tel était le cas, on se retrouverait avec un Linux embarqué pour moins cher, voir le même prix qu&#8217;une Arduino&#8230; Oh ! j&#8217;en achète une caisse tout de suite !</p>
<p style="text-align: justify;">Même si l&#8217;approche et beaucoup plus axée éducation, apprentissage de l&#8217;informatique en générale, et comme ordinateur low-cost du genre <a href="http://fr.wikipedia.org/wiki/OLPC">OPLC</a>, je ne peux que voir l&#8217;avantage d&#8217;une telle carte de dev de type ARM à seulement 17€ pour le monde de la bidouille. A ce prix, il n&#8217;y a plus de limite aux possibilités d&#8217;une telle carte ! Imaginez le système Raspberry Pi couplé à une carte Arduino ! Pour moins de 50€ nous avons le système rêvé de tout hacker qui se respecte.</p>
<p style="text-align: justify;">J&#8217;ai hâte !</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fraspberry-pi-revolution-du-do-it-yourself%2F&amp;title=Raspberry%20Pi%20%26%238211%3B%20R%C3%A9volution%20du%20Do%20It%20Yourself%20%3F" id="wpa2a_20"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/raspberry-pi-revolution-du-do-it-yourself/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

