<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
	
		<title>philpep's blog - tag arm</title>
		<atom:link href="http://blog.philpep.org/feed/tag/arm/rss2" rel="self" type="application/rss+xml" />
		<description>philpep&#39;s blog - tag arm rss</description>
	<link>http://blog.philpep.org</link>
	<language>fr</language>
		<lastBuildDate>Wed, 14 Oct 2009 17:13:30 GMT</lastBuildDate>
	<generator>Pblog</generator>
		<item>
			<title>Installer les outils de développement ARM sur FreeBSD</title>
			<link>http://blog.philpep.org/post/Installer-les-outils-de-développement-ARM-sur-FreeBSD</link>
			<guid>http://blog.philpep.org/post/Installer-les-outils-de-développement-ARM-sur-FreeBSD</guid>
			<pubDate>Wed, 14 Oct 2009 17:13:30 GMT</pubDate>
			<description>&lt;p&gt;Il vous est peut être arrivé de devoir coder et tester des programmes en &lt;a href=&#34;http://fr.wikipedia.org/wiki/Assembleur&#34;&gt;assembleur&lt;/a&gt; &lt;a href=&#34;http://fr.wikipedia.org/wiki/Processeur_ARM&#34;&gt;ARM&lt;/a&gt; (peut être même simplement par curiosité qui sait ?) sur des machine x86. Pour y arriver j&#39;ai du installer arm-elf-as (l&#39;assembleur arm de GNU), arm-elf-ld (edition des liens) et le debugger arm-elf-gdb le tout sur &lt;a href=&#34;http://blog.philpep.org/tag/FreeBSD&#34;&gt;FreeBSD&lt;/a&gt;. La démarche n&#39;étant pas triviale voici comment installer tous ces softs :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;make -C /usr/ports/devel/cross-binutils &lt;span class=&#34;nv&#34;&gt;TGTARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;arm &lt;span class=&#34;nv&#34;&gt;TGTABI&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;elf install clean
make -C /usr/ports/devel/cross-gdb &lt;span class=&#34;nv&#34;&gt;TGTARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;arm &lt;span class=&#34;nv&#34;&gt;TGTABI&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;elf install clean
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Si tout se passe bien et si le temps le permet vous êtes prêts à compiler et tester votre programme ASM ARM :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;c&#34;&gt;# Assemblage pour un cpu arm7tdmi par exemple. Avec les options de debug&lt;/span&gt;
arm-elf-as -mcpu&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;arm7tdmi -gstabs main.s -o main.o
&lt;span class=&#34;c&#34;&gt;# Edition des liens. Avec les options qui vont bien jetez un coup d&amp;#39;oeil à ld(1) en cas de doute&lt;/span&gt;
arm-elf-ld -Ttext&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0x2000 -nostartfiles -o main main.o
&lt;span class=&#34;c&#34;&gt;# Lancement dans gdb&lt;/span&gt;
arm-elf-gdb ./main
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Et amusez vous avec gdb :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;
and &amp;quot;show warranty&amp;quot; for details.
This GDB was configured as &amp;quot;--host=i386-portbld-freebsd7.2 --target=arm-elf&amp;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 &amp;lt;1 sec.
(gdb) run
Starting program: /usr/home/phil/src/asm/main

Program exited normally.
(gdb)
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Vite fait un petit aide mémoire gdb (je suis moi même un lecteur de mon blog ça m&#39;aide en cas de doute) :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;b étiquette|adresse, créer un breakpoint
d, (delete) supprimer tous les breakpoints
r, (run) lancer le programme
s, (step) avancer d&amp;#39;une instruction
i r, (info register) visualiser les registres
x étiquette|adresse, visualiser la mémoire
quit, quitter
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;N&#39;oubliez pas qu&#39;on peut lancer des make depuis gdb et recharger le programme avec load.&lt;/p&gt;</description>
		</item>
	</channel>
</rss>

