<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.yomgui.fr/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Yomgui</title>
  <link>http://blog.yomgui.fr/</link>
  <atom:link href="http://blog.yomgui.fr:82/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Wed, 09 Nov 2011 09:40:10 +0100</pubDate>
  <copyright>Notes pour les photos publiees ici: Sauf indications contraires, toutes les photos publiees sont strictement reservees a l'utilisation restreinte a ce blog et son auteur, proprietaire de ce blog.</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>PyMUI v0.4</title>
    <link>http://blog.yomgui.fr/post/2010/04/30/PyMUI-v0.4</link>
    <guid isPermaLink="false">urn:md5:de0cdd6bf04627b0f51e843cb8eb7685</guid>
    <pubDate>Fri, 30 Apr 2010 11:13:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Python</category>
            
    <description>    &lt;p&gt;Je refais vivre un peu ce blog en vous annoncant que je travail sur la v0.4
de PyMUI, mon module Python pour concevoir des interfaces graphique avec
MUI.&lt;/p&gt;
&lt;p&gt;Cette version est une ré-écriture complète du code C du module, avec une
nouvelle façon de gérer l'interaction Python - BOOPSI. Elle laisse plus de
responsabilités à l'utilisateur: un objet PyMUI est maintenant lié faiblement
avec un objet BOOPSI, une classe doit-être écrite de façon à faire perdre cette
lisaison par l'appel à une méthode had-hoc ou bien automatiquement dès l'appel
à la méthode &lt;code&gt;AddChild()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Actuellement tout à l'air de fonctionner comme dans la v0.3, sauf les MCC
car j'ai un problème de design avec BOOPSI, mais je pense le solutionner
aujourd'hui.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; &lt;em&gt;Même si c'est une ré-écriture, globalement
l'utilisation (l'API et le design) est toujours la même à quelques exceptions
près.&lt;/em&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2010/04/30/PyMUI-v0.4#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2010/04/30/PyMUI-v0.4#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/512738</wfw:commentRss>
      </item>
    
  <item>
    <title>Altivec vs SSE</title>
    <link>http://blog.yomgui.fr/post/2010/01/29/Altivec-vs-SSE</link>
    <guid isPermaLink="false">urn:md5:6b48b6981c163cab9e17238bed3efe8d</guid>
    <pubDate>Fri, 29 Jan 2010 10:18:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Blender3D</category>
            
    <description>    &lt;p&gt;I've wanted to make same SIMD optimizations done in Blender render engine as
made with SSE (Intel).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The code (Blender 2.5alpha0) is the following one:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
inline int test_bb_group4(__m128 *bb_group, const Isect *isec)
{
        
        const __m128 tmin0 = _mm_setzero_ps();
        const __m128 tmax0 = _mm_load1_ps(&amp;amp;isec-&amp;gt;labda);

        const __m128 tmin1 = _mm_max_ps(tmin0, _mm_mul_ps( _mm_sub_ps( bb_group[isec-&amp;gt;bv_index[0]], _mm_load1_ps(&amp;amp;isec-&amp;gt;start[0]) ), _mm_load1_ps(&amp;amp;isec-&amp;gt;idot_axis[0])) );
        const __m128 tmax1 = _mm_min_ps(tmax0, _mm_mul_ps( _mm_sub_ps( bb_group[isec-&amp;gt;bv_index[1]], _mm_load1_ps(&amp;amp;isec-&amp;gt;start[0]) ), _mm_load1_ps(&amp;amp;isec-&amp;gt;idot_axis[0])) );
        const __m128 tmin2 = _mm_max_ps(tmin1, _mm_mul_ps( _mm_sub_ps( bb_group[isec-&amp;gt;bv_index[2]], _mm_load1_ps(&amp;amp;isec-&amp;gt;start[1]) ), _mm_load1_ps(&amp;amp;isec-&amp;gt;idot_axis[1])) );
        const __m128 tmax2 = _mm_min_ps(tmax1, _mm_mul_ps( _mm_sub_ps( bb_group[isec-&amp;gt;bv_index[3]], _mm_load1_ps(&amp;amp;isec-&amp;gt;start[1]) ), _mm_load1_ps(&amp;amp;isec-&amp;gt;idot_axis[1])) );
        const __m128 tmin3 = _mm_max_ps(tmin2, _mm_mul_ps( _mm_sub_ps( bb_group[isec-&amp;gt;bv_index[4]], _mm_load1_ps(&amp;amp;isec-&amp;gt;start[2]) ), _mm_load1_ps(&amp;amp;isec-&amp;gt;idot_axis[2])) );
        const __m128 tmax3 = _mm_min_ps(tmax2, _mm_mul_ps( _mm_sub_ps( bb_group[isec-&amp;gt;bv_index[5]], _mm_load1_ps(&amp;amp;isec-&amp;gt;start[2]) ), _mm_load1_ps(&amp;amp;isec-&amp;gt;idot_axis[2])) );
        
        return _mm_movemask_ps(_mm_cmpge_ps(tmax3, tmin3));
}
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;And this is my first working Altivec version:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
inline int test_bb_group4(vector float *bb_group, const Isect *isec)
{
        int res[4] ALIGNED_16;

        const vector float v0 = (vector float) vec_splat_u32(0);
    
        const vector float tmin0  = (vector float) vec_splat_u32(0);
    
        const vector float vstart = vec_ld(0, &amp;amp;isec-&amp;gt;start[0]);
        const vector float tmax0  = vec_splat(vstart, 3);
        const vector float vidot_axis = vec_ld(0, &amp;amp;isec-&amp;gt;idot_axis[0]);

        const vector float tmin1 = vec_max(tmin0, vec_madd( vec_sub( bb_group[isec-&amp;gt;bv_index[0]], vec_splat(vstart, 0) ), vec_splat(vidot_axis, 0), v0) );
        const vector float tmax1 = vec_min(tmax0, vec_madd( vec_sub( bb_group[isec-&amp;gt;bv_index[1]], vec_splat(vstart, 0) ), vec_splat(vidot_axis, 0), v0) );
        const vector float tmin2 = vec_max(tmin1, vec_madd( vec_sub( bb_group[isec-&amp;gt;bv_index[2]], vec_splat(vstart, 1) ), vec_splat(vidot_axis, 1), v0) );
        const vector float tmax2 = vec_min(tmax1, vec_madd( vec_sub( bb_group[isec-&amp;gt;bv_index[3]], vec_splat(vstart, 1) ), vec_splat(vidot_axis, 1), v0) );
        const vector float tmin3 = vec_max(tmin2, vec_madd( vec_sub( bb_group[isec-&amp;gt;bv_index[4]], vec_splat(vstart, 2) ), vec_splat(vidot_axis, 2), v0) );
        const vector float tmax3 = vec_min(tmax2, vec_madd( vec_sub( bb_group[isec-&amp;gt;bv_index[5]], vec_splat(vstart, 2) ), vec_splat(vidot_axis, 2), v0) );
        
       const vector unsigned int vmask   = (vector unsigned int){0x1, 0x2, 0x4, 0x8};
       const vector unsigned int vmasked = vec_and(vec_cmpge(tmax3, tmin3), vmask);
       const vector signed int   vres    = vec_sums((vector signed int)vmasked, vec_splat_s32(0));

        vec_st(vres, 0, (signed int *)&amp;amp;res[0]);
        return res[3];
}
&lt;/pre&gt;
&lt;p&gt;To use it we shall also take car to align on 16-bytes following
variables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;isec-&amp;gt;start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isect-&amp;gt;idot_axis&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isect-&amp;gt;labda&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunatly speed-up was not here &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;
I've got only a gain of 10% render time on the scene from &lt;a href=&quot;http://eofw.org/bench/test.blend&quot; hreflang=&quot;en&quot;&gt;the benchmark .blender file
here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Today I've tried to optimize again more, by changing how I've emulated the
SSE predicat &lt;code&gt;_mm_movemask_ps&lt;/code&gt; in Altivec... a bit complex. But I
need to change how this function is used also! Packing 4 unsigned int into 4
bits is a bit ... overkill.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;To be continued&lt;/em&gt;&lt;/strong&gt; &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2010/01/29/Altivec-vs-SSE#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2010/01/29/Altivec-vs-SSE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/480022</wfw:commentRss>
      </item>
    
  <item>
    <title>Wikions ensemble</title>
    <link>http://blog.yomgui.fr/post/2009/07/14/Wikions-ensemble</link>
    <guid isPermaLink="false">urn:md5:4b3567823a809d5af5f7ae70a5c9b008</guid>
    <pubDate>Tue, 14 Jul 2009 18:02:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;Pour ceux qui ne sont pas encores (quoi!) au courant, j'ai fait un &lt;a href=&quot;http://www.yomgui.fr/&quot; hreflang=&quot;fr&quot;&gt;Wiki&lt;/a&gt;! En même temps c'est facil on
tombe direct dessus avec la racine de mon domaine. Vous retrouverez dessu plus
amples infos sur mes développements par exemple.&lt;/p&gt;
&lt;p&gt;A propos, je reconstruis Helios pour être plus proche d'un model comme celui
de Poseidon (la couche USB). Vous pouvez d'ailleurs voir ce model sur ce
&lt;a href=&quot;http://yellowblue.free.fr/yiki/doku.php/dev:helios:dev_manual&quot; hreflang=&quot;fr&quot;&gt;fameux Wiki ici&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/07/14/Wikions-ensemble#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/07/14/Wikions-ensemble#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/418345</wfw:commentRss>
      </item>
    
  <item>
    <title>Bouge ton corps... (et tous le reste)</title>
    <link>http://blog.yomgui.fr/post/2009/06/08/Bouge-ton-corps-et-tous-le-reste2</link>
    <guid isPermaLink="false">urn:md5:f7a47f850e7eb0873a021d0be06b8876</guid>
    <pubDate>Mon, 08 Jun 2009 11:28:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>General</category>
            
    <description>    &lt;p&gt;Info un peu tardive mais je viens de déménager en ce début de mois de juin.
Pas d'ADSL donc non plus (vive le monde moderne!) pour encore qq temps et te
toute façon j'ai plus de bureau pour installer mon matos qui va rester dans les
cartons jusqu'à la fin du mois minimum!&lt;/p&gt;
&lt;p&gt;Résultats: nous vous attendez pas à un quelconque avancement sur mes
développements d'ici... on va dire Juillet-Août.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/06/08/Bouge-ton-corps-et-tous-le-reste2#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/06/08/Bouge-ton-corps-et-tous-le-reste2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/408584</wfw:commentRss>
      </item>
    
  <item>
    <title>Pour changer un peu</title>
    <link>http://blog.yomgui.fr/post/2009/04/09/Pour-changer-un-peu</link>
    <guid isPermaLink="false">urn:md5:734f0f9d48937a3c39f11b673bf3a0bb</guid>
    <pubDate>Thu, 09 Apr 2009 15:08:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Python</category>
            
    <description>    &lt;p&gt;6 mois que je travail sur Helios...&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;J'en ai un peu marre de voir sa tronche ;-).&lt;/p&gt;
&lt;p&gt;Je suis repassé sur Python, pour faire le port de la version 2.5.4.&lt;br /&gt;
C'est pas la dernière mais c'est celle supporté officiellement par les
dernières versions de Blender, donc...&lt;/p&gt;
&lt;p&gt;Sinon j'en profite aussi pour refaire le port:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nettoyage du code, nouveau Makefile plus simple.&lt;/li&gt;
&lt;li&gt;Virer les hacks stupides de la libc pour faire un truc propre pour le
support des threads.&lt;/li&gt;
&lt;li&gt;Nouveaux concepts pour l'utilisation de python.library dans les
programmes.&lt;/li&gt;
&lt;li&gt;Nouveaux concepts pour coder des modules dynamiques.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Évidement cela va impliquer que la prochaine version devient totalement
incompatible avec l'ancienne, donc que tous les codes basés dessus devront être
recompilés.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/04/09/Pour-changer-un-peu#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/04/09/Pour-changer-un-peu#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/392062</wfw:commentRss>
      </item>
    
  <item>
    <title>Test Python/PIL pour la vidéo</title>
    <link>http://blog.yomgui.fr/post/2009/03/30/Test-Python/PIL-pour-la-video</link>
    <guid isPermaLink="false">urn:md5:4cf96279b6c1d890843dcb6f3f7123bd</guid>
    <pubDate>Mon, 30 Mar 2009 19:16:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;Je me suis amusé avec Python et le module PIL (&lt;a href=&quot;http://www.yomgui.fr/python&quot;&gt;python et les ''thirdparty'' sont disponibles
pour MorphOS ici&lt;/a&gt;) à faire un script pour tester une moulinette qui me sort
le &lt;em&gt;waveform&lt;/em&gt; d'une image... c'est très utile en vidéo &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Voilà la sortie du script pour une image d'exemple: &lt;a href=&quot;http://blog.yomgui.fr/public/img/waveform_sample.jpg&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/img/.waveform_sample_s.jpg&quot; alt=&quot;waveform_sample.jpg&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;waveform_sample.jpg, mar 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PS: non c'est pas une échographie de ma femme!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/03/30/Test-Python/PIL-pour-la-video#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/03/30/Test-Python/PIL-pour-la-video#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/379502</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: Taaadaaa !!</title>
    <link>http://blog.yomgui.fr/post/2009/03/27/Helios%3A-Taaadaaa</link>
    <guid isPermaLink="false">urn:md5:a18468241859a50e564c8696110b8ec0</guid>
    <pubDate>Fri, 27 Mar 2009 10:16:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>&lt;p&gt;Outre le fais que j'ai trouvé un titre pourri, Helios en version 0.3.323 est
sortis depuis ce matin. Retrouver le &lt;del&gt;chez votre libraire habituel&lt;/del&gt;
sur Aminet: &lt;a href=&quot;http://aminet.net/driver/other/Helios_0.3.323.lha&quot;&gt;Helios_0.3.323.lha&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Quoi de neuf depuis la dernière fois?&lt;br /&gt;
...Presque tout! Effectivement j'ai:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fait une nouvelle API ;&lt;/li&gt;
&lt;li&gt;fixé 7236569754 bugs ;&lt;/li&gt;
&lt;li&gt;rajouté le mode isochrone en réception ;&lt;/li&gt;
&lt;li&gt;rajouté 2 exemples en C pour utiliser l'API ;&lt;/li&gt;
&lt;li&gt;rajouté quelques options à FWInspect ;&lt;/li&gt;
&lt;li&gt;modifié fondamentalement certaines partie pour plus de simplicité et de
vitesse ;&lt;/li&gt;
&lt;li&gt;et plus encore...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alors le plus intéressant est évidement ce petit bout de code
&lt;strong&gt;get61883.c&lt;/strong&gt; que vous retrouverez dans
&lt;code&gt;SDK/Examples/&lt;/code&gt;. Il vous permet de charger des flux DV ou MPEG2-TS
venant du premier noeud FW qui envoi ce type de données. Bien-sûr il vous
faudra le compiler avant pour l'utiliser. Mais j'ai pensé à tout, &lt;a href=&quot;http://www.yomgui.fr/projects/get61883&quot;&gt;voilà un binaire tout prêt&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;La syntaxe est très simple: &lt;code&gt;get61883 [-dv] output&lt;/code&gt;&lt;br /&gt;
Par défaut il ne prend que les paquets MPEG2-TS, mais avec l'option
&lt;em&gt;-dv&lt;/em&gt; il s'attend au format DV. &lt;em&gt;output&lt;/em&gt; étant évidement le nom
du fichier qui contiendra vos données.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ATTENTION&lt;/strong&gt;: Il faut lancer FWInspect avant, car le bus doit
être stable pour pouvoir trouver qui envois des données 61883!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ATTENTION&lt;/strong&gt;: comme vous allez le voir avec les compteurs de
taille et de vitesse qui s'afficheront, cela va très vite! 6 minutes de
MPEG2-TS c'est déjà plus d'1Go! Avec des flux à 3.2Mo/s c'est certain...&lt;br /&gt;
Par ailleurs, je gère les fichiers avec des tailles en 64bits, donc vous
inquiétez pas!&lt;/p&gt;
&lt;p&gt;Dernière chose: &lt;em&gt;mplayer&lt;/em&gt; arrive parfaitement à gérer ces formats
&lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/03/27/Helios%3A-Taaadaaa#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/03/27/Helios%3A-Taaadaaa#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/377037</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: et la lumière fut !</title>
    <link>http://blog.yomgui.fr/post/2009/03/26/Helios%3A-et-la-lumiere-fut</link>
    <guid isPermaLink="false">urn:md5:7c27225765805a3860283933cb22d237</guid>
    <pubDate>Thu, 26 Mar 2009 09:58:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;Bon alors je me suis couché tard (4h...) donc la lumière elle vient pas de
moi là... ... Mais de ma pile Firewire Helios.&lt;/p&gt;
&lt;p&gt;J'ai codé le mode isochrone, qui au passage n'aura pris que 2 jours, et fait
un petit code de test pour charger des vidéos depuis une caméra supportant le
protocole iec61883 et sortant en format HDV (MPEG2-TS) ou DV.&lt;/p&gt;
&lt;p&gt;Et ça fonctionne !!!&lt;/p&gt;
&lt;p&gt;Bon faut que je mette au propre un peu tout cela et je fais une
release...&lt;/p&gt;
&lt;p&gt;PS: ouai c'est pas très étoffé comme news, mais ZZZZzzzzzz&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/03/26/Helios%3A-et-la-lumiere-fut#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/03/26/Helios%3A-et-la-lumiere-fut#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/373765</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: 299 792 458 m/s</title>
    <link>http://blog.yomgui.fr/post/2009/03/02/Helios%3A-299-792-458-m/s</link>
    <guid isPermaLink="false">urn:md5:b169bfeab76082c8c19c8c3a11697452</guid>
    <pubDate>Mon, 02 Mar 2009 11:35:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>&lt;p&gt;Avant la petite gastro de ce w.e. (ouai... encore!) j'ai fais quelques tests
de vitesses avec le nouveau design d'Helios.&lt;br /&gt;
En voilà le récit...&lt;/p&gt;    &lt;p&gt;Décidément en ce moment j'arrête plus de poster sur mon blog... si cela
continue on va dire que je suis un &lt;em&gt;blogueur&lt;/em&gt; (et pas un
&lt;em&gt;blagueur&lt;/em&gt; comme me le propose le correcteur orthographique).&lt;/p&gt;
&lt;p&gt;Donc je disais que j'ai fais un petit essai de mesure de vitesse de lecture
avec Helios. Les conditions de tests étaient:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 Pegasos (I et II) reliés avec un câble IEEE-1394 (6-6) formant l'ensemble
du réseau.&lt;/li&gt;
&lt;li&gt;Helios tournant sur le Peg2, le Peg1 étant l'unité lue.&lt;/li&gt;
&lt;li&gt;Utilisation du module Python.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce dernier j'ai utilisé la propriété &lt;em&gt;timer&lt;/em&gt; d'un objet
&lt;em&gt;Device&lt;/em&gt; qui retourne le 3-tuple correspondant au temps du bus
(secondes, nombre de cycles (8000/s), offset du cycle (horloge de 24.576MHz
modulo 3072)).&lt;/p&gt;
&lt;p&gt;J'ai donc encadré par 2 appels à cette propriété la méthode &lt;em&gt;Read&lt;/em&gt; de
&lt;em&gt;Device&lt;/em&gt; pour lire un bloque de 10 Méga-Octets en mémoire du Peg1,
depuis le Peg2. Cette méthode provoque des transactions asynchrone de type
&lt;em&gt;lecture blocs&lt;/em&gt; sur le bus. Une boucle &lt;code&gt;for&lt;/code&gt; permettant de
découper la taille demandée en morceaux d'une taille limitée par la contenance
maximale d'un paquet asynchrone IEEE1394.&lt;br /&gt;
Tout ceci rajoute évidement un plus dans le temps par-rapport à un appel C
direct, mais les résultats montrerons que l'impacte est minime.&lt;/p&gt;
&lt;p&gt;Les 2 Pegs ont un mode vitesse maximal de S400 et en asynchrone à cette
vitesse un paquet peut transporter jusqu'à 2048 octets. J'ai donc obtenu une
vitesse d'environs &lt;strong&gt;9Mo/s&lt;/strong&gt;... Il faut savoir qu'en premier je
n'avais pas utilisé la vitesse S400, mais S100, qui donne un résultat de
&lt;strong&gt;5Mo/s&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Par la suite j'ai modifié le code C du module python pour encadrer l'appel à
la fonction Helios &lt;code&gt;Helios_DoAsyncTransaction()&lt;/code&gt; qui s'occupe
d'initialiser, d'envoyer et d'attendre (&lt;code&gt;Wait()&lt;/code&gt;) la réponse d'une
transaction asynchrone quelconque. J'ai utilisé ici &lt;code&gt;ReadEClock()&lt;/code&gt;
de &lt;em&gt;timer.device&lt;/em&gt;. Cela permet d'éliminer le rajout de temps par les
appels à travers les couches Python.&lt;br /&gt;
Un résultat approchant les &lt;strong&gt;10Mo/s&lt;/strong&gt; montrant 2 choses: 2 timers
hardware différents donnant des résultats cohérents validant les vitesses et le
code python bien optimisé pour ne pas rajouter trop de temps.&lt;/p&gt;
&lt;p&gt;Mais revenons aux résultats même: voici les vitesses maximales en
Méga-bits/s (Mb/s) pour chaque vitesses standards possibles sur un bus
IEEE1394a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;S100 : &lt;strong&gt;98304000 Mb/s&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;S200 : &lt;strong&gt;196608000 Mb/s&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;S400 : &lt;strong&gt;393216000 Mb/s&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On en déduit donc une taille maximale de données transportées par paquets
(la bande passante par paquet donc):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;S100 : 1536 octets&lt;/li&gt;
&lt;li&gt;S200 : 3072 octets&lt;/li&gt;
&lt;li&gt;S400 : 6144 octets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De notre résultat d'environs 5 Mo/s en S100 en asynchrone on en retient donc
que 50% de la bande passante est utilisée.&lt;br /&gt;
Et de notre résultat d'environs 10 Mo/s en S400 en asynchrone: c'est 20% de la
bande passante qui est utilisée.&lt;/p&gt;
&lt;p&gt;Le résultat en S400 n'est pas très bon... Bon pour l'instant Helios n'est
pas en phase d'optimisation et la création du paquet, sa mise en place la liste
de lecture de la DMA du chipset OHCI1394, ainsi que l'attente du résultat
rajoute pas mal de temps supplémentaire. Mais surtout il faut voir que je
n'utilise pas ici la DMA de la meilleure façon qu'il soit: je pose un
descripteur pour mon paquet, puis j'attends le résultat. C'est très simple,
mais très mauvais pour les performances!&lt;/p&gt;
&lt;p&gt;Effectivement il faut savoir que la DMA se &lt;em&gt;programme&lt;/em&gt;. On lui donne
une liste de descripteurs de paquets à envoyer et on attend les résultats
après. Ainsi les paquets asynchrones peuvent être envoyés au plus vite, sans
attendre les réponses les unes après les autres. Ce qui est le principe même du
mode asynchrones après tout.&lt;/p&gt;
&lt;p&gt;Helios possède en l'état un bloc mémoire de 64Ko pour créer la liste de
descripteurs en envois et un descripteur fait 64 octets (il faut 1 descripteur
pour 1 paquet, tout types confondus). On peut donc préparer 1024 paquets à
l'avance (bon en faite c'est pas possible à l'avance, dès que le bus est prêt
on envoi, les descripteurs suivants s'attacheront à la suite). En S400, cela
implique 2Mo de données qui peuvent être ainsi mis en tampons pour
l'envoi.&lt;br /&gt;
Donc vous le voyez je perd beaucoup de temps pour rien à attendre la réponse
d'un paquet pour envoyer le prochain!&lt;/p&gt;
&lt;p&gt;Mais attention, il y a une limite aussi en réception où j'utilise ici
seulement 2 descripteurs en mode &lt;em&gt;remplissage continue&lt;/em&gt; : quand
l'un est plein je le retire de la liste, j'utilise le premier pour la suite et
j'ajoute un nouveau à la suite de celui-ci pour garantir les cas de
dépassement, et c'est repartis pour un tour... Mais si jamais un paquet arrive
et qu'il n'y a pas de descripteur pour le recevoir ce paquet est annulé et il
doit être recommencé.&lt;/p&gt;
&lt;p&gt;Donc il faudra que je refasse le module Python pour qu'il puisse remplir au
plus vite la DMA et quand même temps il récupère les réponses. Cela me fait
dire que la fonction &lt;code&gt;Helios_DoAsyncTransaction()&lt;/code&gt; est peut-être
très sympathique pour le développeur mais très dangereuse pour les
performances!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Notes: en tout cas avec une optimisation nulle on a déjà 10 fois mieux
que l'USB 1.x et je crois aussi bien que l'USB 2.0! ... en asynchrone!
&lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT 2009/03/05&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hier soir (enfin plutôt ce matin...), en modifiant largement le code du
module Python plus quelques optimisations dans le code d'Helios, j'ai atteint
la barre des &lt;strong&gt;20Mo/s&lt;/strong&gt; !!! Soit dans les &lt;strong&gt;18Mo/s&lt;/strong&gt;
de façon stable (si vous n'avez pas trop de processus qui viennent embêter).
Pour info, le seul port filaire sur le Peg2 plus rapide est le
&lt;em&gt;Giga-Ethernet&lt;/em&gt; (20Mo/s = 160Mb/s).&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/03/02/Helios%3A-299-792-458-m/s#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/03/02/Helios%3A-299-792-458-m/s#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/331893</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios Reloaded</title>
    <link>http://blog.yomgui.fr/post/2009/02/18/Helios-Reloaded</link>
    <guid isPermaLink="false">urn:md5:2e0ca60b0b192ce67afcc145a4c1bc2f</guid>
    <pubDate>Wed, 18 Feb 2009 18:31:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>&lt;p&gt;Quand ça va plus rond... il faut tout mettre au carré!
&lt;em&gt;Logique...&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Après plus d'une semaine de combat brutal avec un virus, non pas sur le Peg
(pas possible), mais dans mon propre body à moi que j'aime, je reprend Helios à
bras le corps!&lt;/p&gt;
&lt;p&gt;J'ai eu quelques petits soucis de conception de l'API pour faire gérer les
données dans le cas où le noeud de destination est aussi le noeud d'envoi... En
clair quand on envoi un paquet en local.&lt;br /&gt;
Gros pépins, API complexes, code lourd, etc, j'ai donc décidé de reprendre les
bonnes vielles méthode: papier, &lt;del&gt;ciseaux, caillou,&lt;/del&gt; crayon!&lt;br /&gt;
Et hop, re-design complet du schéma de transmission sur le bus pour tous les
cas possibles et visualisation claire de la vie et mort des blocs de données
mémoires.&lt;/p&gt;
&lt;p&gt;Résultat très intéressant (enfin je code là...), je pense enfin avoir trouvé
la meilleure API à donner. Claire, simple, évolutive, respect du système
(MsgPort à donf!), tout est là!&lt;/p&gt;
&lt;p&gt;J'en ai profité au passage pour nettoyer mes fichiers et l'arborescence du
projet pour incorporer des nouveautés:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une conception modulaires: la création d'un répertoire DEVS:Helios/ qui
contiendra les modules dédiés. Sorte de device améliorés.&lt;/li&gt;
&lt;li&gt;L'abandon de l'avc1394 telle aujourd'hui pour devenir un module.&lt;/li&gt;
&lt;li&gt;L'ajout du module iec61883, qui fournira un service FCP (Fonction Control
Protocol) sous forme de serveurs, utilisés par le module avc1394 par
exemple.&lt;/li&gt;
&lt;li&gt;la configuration des modules et d'Helios en MUI, permettant une intégration
facile dans le système.&lt;/li&gt;
&lt;li&gt;Un module python (déjà écrit en parti).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Que du bon quoi...&lt;/p&gt;
&lt;p&gt;Pour les livraisons, je fini le nouveau design d'Helios pour se qui est de
la transmission asynchrone et je livrerai cela pour tests avec toujours
l'application FWInspect (augmentée de quelques fonctionnalités déjà
implémentées).&lt;br /&gt;
Ensuite j'attaque l'isochrone, en réception au moins. Puis le module iec61883,
et l'avc1394. J'ajoute une nouvelle GUI pour le système, avec la gestion des
modules (+ GUI pour chacun), un petit programme tout simple juste pour utiliser
l'AVC et livraison tout cela pour tests. Je pourrai enfin attaquer le mode
isochrone en envois et compléter les modules en cours, et hop re-livraison.&lt;/p&gt;
&lt;p&gt;Et enfin je pourrai faire mon appli que je rêve depuis tout ce temps:
capture/écriture de vidéo sur support DV.&lt;/p&gt;
&lt;p&gt;Note: faudra que j'insère quelques part l'écriture de la doc d'utilisation
aussi... un jour &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/02/18/Helios-Reloaded#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/02/18/Helios-Reloaded#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/328525</wfw:commentRss>
      </item>
    
  <item>
    <title>AV/C 1394 ou comment péter les plombs...</title>
    <link>http://blog.yomgui.fr/post/2009/01/30/AV/C-1394-ou-comment-peter-les-plombs</link>
    <guid isPermaLink="false">urn:md5:e711c7c56454c1def1619866060915c2</guid>
    <pubDate>Fri, 30 Jan 2009 14:12:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>&lt;p&gt;Alors que Hélios poursuis son développement vers une meilleur compatibilité
avec le monde asynchrone, l'avc1394.device me cause bien des soucis...&lt;/p&gt;    &lt;p&gt;Je viens tout juste hier de refaire Hélios pour qu'il puisse utiliser
uniquement des &lt;em&gt;boites-aux-lettres&lt;/em&gt;, système de messages utilisés pour
faire des &lt;a href=&quot;http://fr.wikipedia.org/wiki/Communication_inter-processus&quot; hreflang=&quot;fr&quot;&gt;IPC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Avec ça je me suis dit que j'allais enfin pouvoir faire l'avc1394.device....
bah c'est plus compliqué!&lt;/p&gt;
&lt;p&gt;Effectivement c'est mieux que l'ancienne version qui pouvait &lt;em&gt;manger&lt;/em&gt;
tous les signaux disponibles des tâches systèmes. Mais cela ne résout en rien
le pb du protocol AV/C...&lt;/p&gt;
&lt;p&gt;Pour faire simple pour demander par exemple à votre caméra à quelle image
elle se trouve, vous devez d'abord lui envoyer une commande qui correspond à
cette demande. Ceci se traduit en 1394 par une transaction
&lt;strong&gt;complète&lt;/strong&gt;. Et là vous n'avez pas encore votre réponse et c'est
là mon souci: la transaction est du type écriture, donc la réponse à celle-ci
n'est qu'une sorte d'acquittement. Si cette écriture doit provoquer l'envoi
d'un résultat, ces données viendront par une toute autre façon:&lt;br /&gt;
La caméra viendra elle-même répondre en envoyant un paquet 1394 d'écriture
aussi, contenant le-dit résultat, à une adresse CSR définie par le standard
AV/C ($fffff0000D00 pour être précis... oui c'est sur 48bits les adresses
1394!).&lt;/p&gt;
&lt;p&gt;Donc il va falloir dire à Hélios que si un nœud (la caméra ici) veut nous
dire quelque chose à cette adresse, c'est que c'est une réponse à une requête
faite précédemment par une application.&lt;/p&gt;
&lt;p&gt;Le problème c'est que le paquet de réponse de la caméra n'est en rien lié
avec une requête, en gros impossible de savoir qui a demandé se résultat jsute
en regardant le paquet entrant...!&lt;/p&gt;
&lt;p&gt;Ceci implique donc quelque chose d'important: si une application souhaite
communiquer avec un noeud supportant l'AV/C, cette communication doit être
unique &lt;em&gt;dans l'espace et dans le temps&lt;/em&gt;, c.-à-d. que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aucunes autres applications ne peut venir demander des infos si
l'application courante attend une réponse.&lt;/li&gt;
&lt;li&gt;une application donnée ne peut demander quelque chose, si et seulement si
elle n'est pas en attente d'une réponse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finalement tout cela pour dire que &lt;strong&gt;faire un avc1394.device n'a
aucune utilité et que je peux faire une simple bibliothèque fonctionnant en
synchrone uniquement&lt;/strong&gt; (à cause point 2).&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/01/30/AV/C-1394-ou-comment-peter-les-plombs#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/01/30/AV/C-1394-ou-comment-peter-les-plombs#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/322460</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: ayé!</title>
    <link>http://blog.yomgui.fr/post/2009/01/26/Helios%3A-aye</link>
    <guid isPermaLink="false">urn:md5:06228583a8e10cc356948fc68392be11</guid>
    <pubDate>Mon, 26 Jan 2009 11:24:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;Version pre-alpha pour bêta&lt;del&gt;-bouffons&lt;/del&gt;-testeurs &lt;del&gt;bientôt&lt;/del&gt;
disponible... Sur &lt;a href=&quot;http://aminet.net/package/driver/other/Helios_0.1.162&quot; hreflang=&quot;en&quot;&gt;aminet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; Je rajoute une petite capture de FWInspector,
l'interface graphique sous MUI pour montrer et faire quelques manipulations sur
les devices connectés en FireWire.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.yomgui.fr/public/img/fwinspect_001.jpg&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/img/.fwinspect_001_s.jpg&quot; alt=&quot;FWInspect #001&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;FWInspect #001, fév 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Cliquez sur l'image pour voir en plus grand.&lt;/em&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/01/26/Helios%3A-aye#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/01/26/Helios%3A-aye#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/321086</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: AV/C(ésar)</title>
    <link>http://blog.yomgui.fr/post/2009/01/15/Helios%3A-AV/Cesar</link>
    <guid isPermaLink="false">urn:md5:5651a684c2140f66ac2db2dc8111bf55</guid>
    <pubDate>Thu, 15 Jan 2009 18:44:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;J'ai commencé hier l'&lt;strong&gt;avc1394.device&lt;/strong&gt;. Ceci permettra le
contrôle de tous les device firewire supportant l'AV/C donc&lt;/p&gt;
&lt;p&gt;...par exemple les caméras &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En plus ceci donnera un exemple au programmeurs de comment créer un .device
et utiliser la helios.library.&lt;br /&gt;
Et moi cela me valide mon SDK!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT du 16.01.2009:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ce qui devait arriver, arriva! L'écriture de
l'&lt;strong&gt;avc1394.device&lt;/strong&gt; m'a montré de sérieux problèmes de design
quand a l'utilisation de l'&lt;strong&gt;helios.library&lt;/strong&gt;! En conséquence de
quoi je stop ce développement et reprend le design interne d'Helios pour le
refaire &lt;del&gt;encore&lt;/del&gt;.&lt;/p&gt;
&lt;p&gt;Pour plus de précision, il s'agit de la gestion des requêtes et du contrôle
du flux des transactions entre l'applicatif et le driver OHCI (Helios quoi).
Cela me change mes structures, la façon dont l'applicatif donne une requête et
la façon dont il en reçoit le résultat. En gros c'est toute l'intelligence du
driver que je revois...&lt;/p&gt;
&lt;p&gt;Bah ouai c'est ça le problème quand on fait pas un port, on est le
responsable du design sur qui frapper.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/01/15/Helios%3A-AV/Cesar#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/01/15/Helios%3A-AV/Cesar#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/318019</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: enfin stable!</title>
    <link>http://blog.yomgui.fr/post/2009/01/12/Helios%3A-enfin-stable</link>
    <guid isPermaLink="false">urn:md5:8640b9a9c023322d11fd9daf8d30d009</guid>
    <pubDate>Mon, 12 Jan 2009 11:18:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;Oula que j'ai bien travaillé!&lt;/p&gt;
&lt;p&gt;Helios est enfin stable depuis samedi (et même encore plus le dimanche
:-D)!&lt;/p&gt;
&lt;p&gt;C'est donc une étape majeur dans le dév, où j'ai d'abord préférer stabiliser
les requêtes asynchrones vers les nodes et donc la gestion des réponses
aussi.&lt;/p&gt;
&lt;p&gt;Donc update dans le status depuis le billet &lt;a href=&quot;http://blog.yomgui.fr/post/2008/12/19/Helios%3A-retards&quot;&gt;suivant&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestion des resets du bus et des packet SelfID: 100% pas vu de bug
depuis.&lt;/li&gt;
&lt;li&gt;Envois de requêtes asynchrone: 92%, manque juste locker les buffers DMA
pouvant être utilisés par les applications en attendant qu'elles lisent les
données inscrites.&lt;/li&gt;
&lt;li&gt;Gestion ROM locale: 85%, je recode tout, depuis la processus de lecture
dans la couche device. Il faut faire la lecture de la structure complète, pour
l'instant je ne lis que le Bus Info Block. Définition de la ROM locale pas
faite non plus.&lt;/li&gt;
&lt;li&gt;Couche devices: 90% fonctionnelle mais elle me plaît pas encore sur la
façon dont elle dialogue avec les applications.&lt;/li&gt;
&lt;li&gt;API publique (SDK): 20% mais quelques changement à faire.&lt;/li&gt;
&lt;li&gt;Interface MUI de configuration et de status: 0% pour la config, mais j'ai
commencé FWInspect, un petit outil pour voir et utiliser le bus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yomgui&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/01/12/Helios%3A-enfin-stable#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/01/12/Helios%3A-enfin-stable#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/316866</wfw:commentRss>
      </item>
    
  <item>
    <title>Mon Peg2 à alzheimer!</title>
    <link>http://blog.yomgui.fr/post/2009/01/06/Mon-Peg2-a-alzheimer</link>
    <guid isPermaLink="false">urn:md5:09611c2ad74345896c7bd2fe262496b3</guid>
    <pubDate>Tue, 06 Jan 2009 12:13:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>General</category>
            
    <description>    &lt;p&gt;Fallait bien que cela arrive un jour avec l'âge!&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;La compilation d'Helios stoppé nette, reboot aussi vite que l'éclair (ça
arrive souvent avec gcc, alors l'habitude)... et&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;... et bah plus rien!!&lt;/p&gt;
&lt;p&gt;Petit tour dans la console série reliée sur le Peg1 pour m'apercevoir un
joli message du genre:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Mem test failed ...blablabla... IKARUS console
...blablabla...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;q&gt;Oups&lt;/q&gt; comme on dit!&lt;br /&gt;
Plusieurs reboot bien à froid plus tard pour voir aucuns changement sauf que le
tests mémoire plante et montre &lt;strong&gt;1 bit&lt;/strong&gt; seulement erroné. Pas de
chance, juste pour un bit, une des 2 barrette de 512 ne veut plus fonctionner,
résultat ce matin un petit tour au magasin pour trouvé, 2 barrettes de 1G en
DDR PC3200 (400MHz), de chez Corsaire (ref. VS1GB400C3), pas trop chère encore
(83 CHF en tout donc).&lt;/p&gt;
&lt;p&gt;Donc cool, je vais donc passer le Peg1 en 1G en translatant la barrette de
512 restante du Peg2 et passer ce dernier en .. &lt;strong&gt;2 Go!
ouaaaahh!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J'en connais un qui va s'amuser avec les grosses scènes sous Blender &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT du 07/01/09&lt;/strong&gt;&lt;br /&gt;
On oublis les 2Go, je vais ne mettre qu'un seul Go sur le Peg2 et garder
l'autre en backup si jamais. Le Peg1 ne sera pas modifie car c'est pas le meme
type de memoire &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt; (SDRAM-133). La raison est toute simple: MorphOS/ABox mappe
la memoire de 0x20000000 a 0x80000000 au maximum, soit environ 1536Mo.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2009/01/06/Mon-Peg2-a-alzheimer#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2009/01/06/Mon-Peg2-a-alzheimer#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/315237</wfw:commentRss>
      </item>
    
  <item>
    <title>Helios: retards...</title>
    <link>http://blog.yomgui.fr/post/2008/12/19/Helios%3A-retards</link>
    <guid isPermaLink="false">urn:md5:66e81e4559cbeee7bec99218a6f55a10</guid>
    <pubDate>Fri, 19 Dec 2008 18:26:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;Bon, bah cela ne sera pas pour noël &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;J'ai perdu beaucoup de temps à fixer certaine routine/algo, j'en suis un peu
déçu. Surtout qu'il manque encore une couche pour que cela soit déjà utilisable
rien qu'en mode requêtes asynchrones (couche device).&lt;/p&gt;
&lt;p&gt;Pour l'instant le bilan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trouver les bridge PCI IEEE1394 et les initialiser: 100%, fonctionne
correctement.&lt;/li&gt;
&lt;li&gt;Gestion des interruptions PCI venant du bridge: 50%, mode ISO non
supporté.&lt;/li&gt;
&lt;li&gt;Gestion des resets du bus et des packet SelfID: 95%, tout est codé mais bug
dans la mise à jour de la topologie.&lt;/li&gt;
&lt;li&gt;Gestion des DMA: 100%, création des buffers pour les descripteurs et
gestion opérationnelle.&lt;/li&gt;
&lt;li&gt;Envois de requêtes asynchrone: 90%, création des packets, envois, gestions
des événements, attente réponses et décodage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout les types d'envois gérés, sauf &lt;em&gt;stream&lt;/em&gt; et &amp;quot;block&amp;quot;. Ce dernier
n'est pas géré car je dois implémenter un système de réservation des buffers
DMA consommés pour pas qu'ils soient détruit (quasi codé mais pas utiliser
encore).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestion ROM locale: 80%, les requêtes locales sont codées et
opérationnelles, manque juste la définition des unités dans la ROM.&lt;/li&gt;
&lt;li&gt;Gestion des requêtes asynchrone venant de l'extérieur: 0%, pas
commencé.&lt;/li&gt;
&lt;li&gt;Envois/réception de données en isochrone: 0%, pas commencé.&lt;/li&gt;
&lt;li&gt;Gestion logique (devices): 15%, juste commencé mais de toute façon j'aime
pas... à refaire.&lt;/li&gt;
&lt;li&gt;API publique (SDK): 10%, juste commencé.&lt;/li&gt;
&lt;li&gt;Interface MUI de configuration et de status: 0%, en attente du SDK.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bon c'est pas si méchant pour déjà avoir quelque chose, mais je pense pas
avant le 15 Janvier 2009.&lt;br /&gt;
J'espère avoir tout fonctionnel pour la mi-février.&lt;/p&gt;
&lt;p&gt;PS: ce qui donne déjà une bibliothèque de 55Ko.&lt;/p&gt;
&lt;p&gt;Yomgui&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2008/12/19/Helios%3A-retards#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2008/12/19/Helios%3A-retards#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/310565</wfw:commentRss>
      </item>
    
  <item>
    <title>Un cadeau de noël pour MorphOS?</title>
    <link>http://blog.yomgui.fr/post/2008/12/08/Un-cadeau-de-noel-pour-MorphOS</link>
    <guid isPermaLink="false">urn:md5:8f64665a2848cd1dbc77502a0341c321</guid>
    <pubDate>Mon, 08 Dec 2008 16:12:00 +0100</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Autres projets</category>
            
    <description>    &lt;p&gt;&lt;a href=&quot;http://www.morphzone.org/modules/newbb_plus/viewtopic.php?topic_id=4014&amp;amp;forum=32&quot; hreflang=&quot;en&quot;&gt;Depuis longtemps attendue&lt;/a&gt; pour être ensuite abandonnée, car
tuée sur l'hôtel des profits financiers (surtout ceux d'Intel) par ses
créateurs, voici de retour la venue de la pile
&lt;strong&gt;FireWire/IEEE1394/Lynx/i.Link&lt;/strong&gt;_&lt;em&gt;&amp;lt;inserer ici votre
marque&amp;gt;&lt;/em&gt; spécialement pour notre OS préféré, le bien nommé
&lt;strong&gt;MorphOS&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Voui, voui, voui, vous avez bien lu!&lt;/p&gt;
&lt;p&gt;Si vous n'avez pas bien vu encore, &lt;a href=&quot;http://blog.yomgui.fr/post/2008/09/04/Pour-mes-30-ballais&quot; hreflang=&quot;en&quot;&gt;j'ai eu 30 ans en
août!&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;&lt;q&gt;Hein ? C'est quoi le rapport ??&lt;/q&gt;&lt;/em&gt;&lt;/strong&gt; Comme
vous le voyez sur mon billet d'anniv, j'ai eu une caméra vidéo au format DV
(HDV même) et donc avec son petit port 1394...&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;&lt;q&gt;Ouai c'est cool&lt;/q&gt;&lt;/em&gt;&lt;/strong&gt; mais c'est pas du tout cool
sous Window... la moindre application faisant &lt;em&gt;correctement&lt;/em&gt; de la vidéo
est payante, et encore ce sont des usines à gaz!&lt;/p&gt;
&lt;p&gt;Guerre de choix s'offre donc à vous que d'avoir un bon vieux Mac (pas le cas
pour moi et cela résous pas le problème du prix, oh non!) ou bien de
&lt;del&gt;pirater&lt;/del&gt; emprunter un soft à un ami pour finalement vous dire que
ouai c'est vraiment &lt;del&gt;une merde&lt;/del&gt; un casse tête pour travailler
avec.&lt;/p&gt;
&lt;p&gt;Bon, bah y a pas trop le choix et comme je le dis régulièrement
&lt;strong&gt;&lt;em&gt;&lt;q&gt;on est jamais mieux servis que par soit
même&lt;/q&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Donc la caméra c'était en août, le bilan pas très joyeux de l'existant
c'était début septembre, le voyage au Canada (histoire de dire que l'achat en
valait le coup) c'était fin septembre, donc le début du projet c'était fin
septembre - début octobre.&lt;/p&gt;
&lt;p&gt;Comme tout bon développement qui se commence, j'ai commencé par voir si cela
n'était pas déjà en cours (cf le premier lien du billet). J'ai donc contacté
Sonic qui a en premier tenté un port de la pile Linux (cf toujours le premier
lien, décidément!). Malheureusement au vu du Firewire en 2006, abandonné par
ses pères, il décida qu'il ne valait plus la peine (dixit Sonic, que j'ai eu
par e-mail) de continuer. Fin de l'histoire.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Dommage pour les utilisateurs, cool pour moi (ouai enfin je me donne du taf
de nuit en même temps...) je saute sur l'occasion et commence à réunir la
documentation après avoir vérifié le chipset en place dans mes Peg1 et 2, un
VIA VT6306 (ieee1394a-1995, 3 ports). Ce qui nous donne:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la norme IEEE1394a-1995, ainsi que son amendement de 2000 (utile pour
certaines explications sur les paquets du type Self-ID et la ROM) ;&lt;/li&gt;
&lt;li&gt;la norme OHCI1394 qui elle est une couche d'abstraction pour les
concepteurs de chipset comme VIA et qui nous facilite les choses pour nous les
concepteurs de drivers ;&lt;/li&gt;
&lt;li&gt;le datasheet du VT6303, utile pour le format des paquets de la couche
PHY.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En même temps que je me prend un gros mal de crâne à lire tout cela en même
temps, je passe un peu de temps sur l'implémentation sous Linux histoire de
voir si j'ai bien compris les docs &lt;del&gt;tordues&lt;/del&gt; peu triviales du
Firewire.&lt;br /&gt;
Et zou passage au code début octobre en commençant par utiliser les nouveaux
includes du SDK de MorphOS 2.x dont certains fichiers pas encore publiques
quand j'écris ces lignes par ailleurs (lib PCIX pour remplacer openpci par
exemple).&lt;br /&gt;
D'ailleurs j'avais jamais attaqué le PCI sur MorphOS, c'est tout de même bien
ce projet &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous voilà donc aujourd'hui (début décembre) et qu'en est-il?&lt;br /&gt;
Et bien après plus de 2 semaines sur un bug des plus &lt;del&gt;crétin&lt;/del&gt; subtile,
inventé par votre &lt;del&gt;crétin de&lt;/del&gt; subtile serviteur, je gère complètement
la modification temps-réel de la topologie du bus (connections/déconnections
des devices)et quasiment le mode asynchrone en envoi-réception. Il me reste
à:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;débuger le code de réception des acquittements des requêtes en
transmission ;&lt;/li&gt;
&lt;li&gt;gérer complètement et correctement les paquets de types 'lock' et 'phy'
(toujours en asynchrone) ;&lt;/li&gt;
&lt;li&gt;envoyer des paquets de réponses aux paquets de requêtes reçus ;&lt;/li&gt;
&lt;li&gt;terminer le code de la couche 'device' qui sera vue par l'utilisateur et
par où il pourra les contrôler ;&lt;/li&gt;
&lt;li&gt;coder toute la partie isochrone, le mode le plus intéressant
bien-sûr ;&lt;/li&gt;
&lt;li&gt;faire un petit 1394raw.device pour déjà s'amuser avec.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous l'aurez compris (comment ça &lt;em&gt;non&lt;/em&gt; ?!) cette pile ne s'occupe que
du transport de données entre les nœuds sur le bus 1394, le contrôle sera donc
laisser au soins de bibliothèques en xxxxxxx.device (genre dv1394.device ou
bien sbp2.device et même avc1394.device).&lt;br /&gt;
Si tout cela marche bien j'espère pas moins que sont intégration officielle
dans MorphOS 2.x (3.x?) à l'instar de son homologue USB: Poseidon.&lt;/p&gt;
&lt;p&gt;Voilà, voilà pour les nouvelles &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;PS: Je me disais bien que j'avais oublié quelque chose d'important: cette
pile &lt;strong&gt;n'est pas un port&lt;/strong&gt;, mais bien un truc développé
&lt;strong&gt;sur et pour MorphOS!&lt;/strong&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2008/12/08/Un-cadeau-de-noel-pour-MorphOS#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2008/12/08/Un-cadeau-de-noel-pour-MorphOS#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/306666</wfw:commentRss>
      </item>
    
  <item>
    <title>Pour mes 30 ballais</title>
    <link>http://blog.yomgui.fr/post/2008/09/04/Pour-mes-30-ballais</link>
    <guid isPermaLink="false">urn:md5:1a1ab19c2f925b3249aedecb70a3ebd6</guid>
    <pubDate>Thu, 04 Sep 2008 13:17:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Life/Vie</category>
            
    <description>    &lt;p&gt;Voilà mon cadeau pour mes 30 ans, un nouveau joujou fort sympathique:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.yomgui.fr/public/img/CANON_HV30.jpg&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/img/.CANON_HV30_s.jpg&quot; alt=&quot;CanonHV30&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;CanonHV30&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Maintenant il me reste plus que quelques &lt;del&gt;subtiles&lt;/del&gt; améliorations à
faire pour obtenir ceci:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.yomgui.fr/public/img/hv30_custom_1.jpg&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/img/.hv30_custom_1_t.jpg&quot; alt=&quot;hv30_custom_1.jpg&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Vue de droite&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://blog.yomgui.fr/public/img/hv30_custom_2.jpg&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/img/.hv30_custom_2_t.jpg&quot; alt=&quot;hv30_custom_2.jpg&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Vue de gauche&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://blog.yomgui.fr/public/img/hv30_custom_3.jpg&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/img/.hv30_custom_3_t.jpg&quot; alt=&quot;hv30_custom_3.jpg&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Vue de face&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;HV30 custom de &lt;strong&gt;NextWaveG&lt;/strong&gt; sur le forum &lt;a href=&quot;http://www.hv20.com/showthread.php?t=7927&amp;amp;page=3&quot; hreflang=&quot;en&quot;&gt;HV20&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;Cliquez sur les images pour voir en grand&lt;/em&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2008/09/04/Pour-mes-30-ballais#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2008/09/04/Pour-mes-30-ballais#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/273723</wfw:commentRss>
      </item>
    
  <item>
    <title>Missing Gun</title>
    <link>http://blog.yomgui.fr/post/2008/07/15/Missing-Gun</link>
    <guid isPermaLink="false">urn:md5:58eabc9cf85a9db47dbf1b00c187fb4e</guid>
    <pubDate>Tue, 15 Jul 2008 14:44:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Blender3D</category>
            
    <description>    &lt;p&gt;Je viens d'optimiser la routine du en mode &lt;em&gt;Bohek&lt;/em&gt; du noeud
&lt;em&gt;Blur&lt;/em&gt; de Blender.&lt;br /&gt;
J'ai donc tester cela sur une scène demandant pas mal de flou.&lt;br /&gt;
L'optimisation fait gagner plus de 25% de temps! Et cela tout CPU
confondus!&lt;/p&gt;
&lt;p&gt;En voilà le rendu (cliquez sur l'image pour la voir en entier):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.yomgui.fr/public/Blender/missing_gun.png&quot;&gt;&lt;img src=&quot;http://blog.yomgui.fr/public/Blender/.missing_gun_m.jpg&quot; alt=&quot;missing_gun.png&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;missing_gun.png, juil 2008&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2008/07/15/Missing-Gun#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2008/07/15/Missing-Gun#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/260621</wfw:commentRss>
      </item>
    
  <item>
    <title>MorphOS 2.0 est là!</title>
    <link>http://blog.yomgui.fr/post/2008/07/10/MorphOS-20-est-la</link>
    <guid isPermaLink="false">urn:md5:da795ddbb39270f53941408030b55f49</guid>
    <pubDate>Thu, 10 Jul 2008 16:57:00 +0200</pubDate>
    <dc:creator>Yomgui</dc:creator>
        <category>Blender3D</category>
            
    <description>    &lt;p&gt;Mon OS favori est enfin sorti publiquement en sa version 2.0.&lt;br /&gt;
Pour fêter cela et pour m'entrainer avec Blender 2.46 j'ai fait une petite
animation.&lt;br /&gt;
Dès que j'ai un peu de temps je fait un tutorial pour montrer la
conception.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;http://www.yomgui.fr/videos/mos20.avi&quot;&gt;Télécharger l'originale
(AVI-XVID)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ou bien en flux WEB:&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;external-media&quot; style=&quot;margin: 1em auto; text-align: center;&quot;&gt;
&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/wvKLOIQVR6M&amp;amp;hl=fr&amp;amp;fs=1&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/wvKLOIQVR6M&amp;amp;hl=fr&amp;amp;fs=1&quot; /&gt;
&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt;&lt;/object&gt;&lt;br /&gt;
MorphOS 2.0 summer clip test&lt;/div&gt;</description>
    
    
    
          <comments>http://blog.yomgui.fr/post/2008/07/10/MorphOS-20-est-la#comment-form</comments>
      <wfw:comment>http://blog.yomgui.fr/post/2008/07/10/MorphOS-20-est-la#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.yomgui.fr/feed/atom/comments/259240</wfw:commentRss>
      </item>
    
</channel>
</rss>
