21.08.2012 Aufrufe

Computertechnik mit Mikrocontrollern

Computertechnik mit Mikrocontrollern

Computertechnik mit Mikrocontrollern

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

KAPITEL 13. AUFBAU DES SYSTEMS 186<br />

21a: 20 df rcall .-448 ; 0x5c<br />

21c: 88 81 ld r24, Y<br />

21e: 88 23 and r24, r24<br />

220: d9 f7 brne .-10 ; 0x218<br />

222: df 91 pop r29<br />

224: cf 91 pop r28<br />

226: 08 95 ret<br />

Als Beispiel dient folgende debugging-Sitzung:<br />

c<br />

* Hello World! *<br />

c<br />

================<br />

rm 87 2=60 00<br />

rm 060 10=2A 20 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 20 2A<br />

rm 070 10=0D 0A 00 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D<br />

rm 080 10=3D 3D 3D 0D 0A 00 0D 60 00 8E 2D 0A EF 0F 82 80<br />

rm 5d 2=54 04<br />

rm 450 10=6C 8D 51 00 C8 00 60 00 08 81 01 09 04 5F 01 22<br />

Die Variable help debug ptr (0x87) zeigt erwartungsgemäß<br />

auf den auszugebenden String. Leider sind die auf dem Stack<br />

gespeicherten Rücksprungadressen schwer erkennbar, da sie<br />

um ein Bit nach rechts verschoben sind (0122 ist 0244 kommt<br />

von main, 0109 ist 0212 kommt von putstring). Der letzte auf<br />

dem Stack gespeicherte Wert ist die Variable ptr.<br />

Eine weitere Variante bei der Fehlersuche ist das Ausschalten<br />

der Optimierung des Compilers. Dadurch wird der erzeugte<br />

Code verständlicher.<br />

Mit dem Befehl spm könnte man den Programmspeicher<br />

ändern, um weitere Aufrufe der Funktion debug() an variablen<br />

Stellen zu hinterlegen. Der Befehl funktioniert aber nur<br />

im oberen Bereich des Programmspeichers, der sogenannten<br />

boot-section, was weitergehende Maßnahmen erfordert.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!