philpep's blog - tag asm philpep's blog - tag asm rss http://blog.philpep.org fr Wed, 14 Oct 2009 17:13:30 GMT Pblog Installer les outils de développement ARM sur FreeBSD http://blog.philpep.org/post/Installer-les-outils-de-développement-ARM-sur-FreeBSD http://blog.philpep.org/post/Installer-les-outils-de-développement-ARM-sur-FreeBSD Wed, 14 Oct 2009 17:13:30 GMT <p>Il vous est peut être arrivé de devoir coder et tester des programmes en <a href="http://fr.wikipedia.org/wiki/Assembleur">assembleur</a> <a href="http://fr.wikipedia.org/wiki/Processeur_ARM">ARM</a> (peut être même simplement par curiosité qui sait ?) sur des machine x86. Pour y arriver j'ai du installer arm-elf-as (l'assembleur arm de GNU), arm-elf-ld (edition des liens) et le debugger arm-elf-gdb le tout sur <a href="http://blog.philpep.org/tag/FreeBSD">FreeBSD</a>. La démarche n'étant pas triviale voici comment installer tous ces softs :</p> <div class="codehilite"><pre>make -C /usr/ports/devel/cross-binutils <span class="nv">TGTARCH</span><span class="o">=</span>arm <span class="nv">TGTABI</span><span class="o">=</span>elf install clean make -C /usr/ports/devel/cross-gdb <span class="nv">TGTARCH</span><span class="o">=</span>arm <span class="nv">TGTABI</span><span class="o">=</span>elf install clean </pre></div> <p>Si tout se passe bien et si le temps le permet vous êtes prêts à compiler et tester votre programme ASM ARM :</p> <div class="codehilite"><pre><span class="c"># Assemblage pour un cpu arm7tdmi par exemple. Avec les options de debug</span> arm-elf-as -mcpu<span class="o">=</span>arm7tdmi -gstabs main.s -o main.o <span class="c"># Edition des liens. Avec les options qui vont bien jetez un coup d&#39;oeil à ld(1) en cas de doute</span> arm-elf-ld -Ttext<span class="o">=</span>0x2000 -nostartfiles -o main main.o <span class="c"># Lancement dans gdb</span> arm-elf-gdb ./main </pre></div> <p>Et amusez vous avec gdb :</p> <div class="codehilite"><pre>GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;http://gnu.org/licenses/gpl.html&gt; This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type &quot;show copying&quot; and &quot;show warranty&quot; for details. This GDB was configured as &quot;--host=i386-portbld-freebsd7.2 --target=arm-elf&quot;... (gdb) target sim Connected to the simulator. (gdb) load Loading section .text, size 0x34 vma 0x2000 Start address 0x2000 Transfer rate: 416 bits in &lt;1 sec. (gdb) run Starting program: /usr/home/phil/src/asm/main Program exited normally. (gdb) </pre></div> <p>Vite fait un petit aide mémoire gdb (je suis moi même un lecteur de mon blog ça m'aide en cas de doute) :</p> <div class="codehilite"><pre>b étiquette|adresse, créer un breakpoint d, (delete) supprimer tous les breakpoints r, (run) lancer le programme s, (step) avancer d&#39;une instruction i r, (info register) visualiser les registres x étiquette|adresse, visualiser la mémoire quit, quitter </pre></div> <p>N'oubliez pas qu'on peut lancer des make depuis gdb et recharger le programme avec load.</p>