Hallo, bin noch ein Anfänger und hab ne vermutlich ziemlich blöde Frage. Ich habe ein erstes Assemblerprogramm geschrieben und mit avra kompiliert. Danach habe ich es mit simulavr ausgeführt. Allerdings hängt es dann in einer Endlosschleife mit der Ausgabe "decoder.h:59: WARNING: Unknown opcode: 0xffff" und zu allem Übel kann ich nicht mal sehen, ob es das Richtige tut. Gibt es eine Möglichkeit, sich die Register anzeigen zu lassen? Ich hab simulavr-disp zwar schon gefunden, aber ich weiß nicht wie man es benutzt und komme mit dem, was sich per Google finden, lässt nicht wirklich zurecht. Vielleicht kann mir ja jemand sagen, wie ich am einfachsten die Endregister nach Programmende zur Anzeige bringen kann. Vielen Dank! P.S. Verwende Ubuntu 8.10, avra und möchte einen ATmega16 simulieren.
>und möchte einen ATmega16 simulieren.
Wozu? Programmiere ihn und probiere es am
realen Objekt aus. Simulatoren tun nicht immer
das was man erwartet.
Ich besitze keinen. Daher muss ich notgedrungenermaßen auf den Simulator ausweichen. Hast du eine Ahnung wie sich o.g. bewerkstelligen lässt? Grüße, Florian
das sieht so aus als würde jemand (Dein Simu) das ENDE des Programmes vermissen..
Florian wrote: > Hallo, > > bin noch ein Anfänger und hab ne vermutlich ziemlich blöde Frage. Ich > habe ein erstes Assemblerprogramm geschrieben und mit avra kompiliert. > Danach habe ich es mit simulavr ausgeführt. Allerdings hängt es dann in > einer Endlosschleife mit der Ausgabe "decoder.h:59: WARNING: Unknown > opcode: 0xffff" [...] Oje... simulavr. Welches Object-Format verwendest du denn? simulavr möchte glaub bin-Files haben, wenn er direkt aufgerufen wird. Bei dir schein schon das Object nicht korrekt zu sein. Over verwendest du ihn als avr-gdb server? Dort müsste (bei richtigen o-Format) ein "p $r0" den Inhalt von r0 ausdrucken. simulavr simuliert aber keinen kompletten AVR, die meisten SFRs werden nicht unterstützt, d.h. (interne) Peripherie kann man nicht simulieren. Johann
Tja ehh.. auf welche Weise teile ich dem denn mit, dass das Programm zuende ist?
1 | .def N = R16 |
2 | .def I = R17 |
3 | .def TMP = R18 |
4 | .def LAST1 = R19 |
5 | .def LAST2 = R20 |
6 | |
7 | .CSEG |
8 | .ORG $0000 |
9 | |
10 | INIT: ldi N, 5 |
11 | ldi I, 0 |
12 | ldi TMP, 0 |
13 | ldi LAST1, 0 |
14 | ldi LAST2, 1 |
15 | |
16 | LOOP: cp N,I |
17 | breq END |
18 | |
19 | mov TMP, LAST2 |
20 | add TMP, LAST1 |
21 | mov LAST1, LAST2 |
22 | mov LAST2, TMP |
23 | |
24 | inc I,1 |
25 | jmp LOOP |
26 | |
27 | END: |
Was das ,1 in der Zeile mit dem inc-Befehl soll, weiß ich übrigens auch nicht. Habs grad entfernt ;)
Florian wrote: > Tja ehh.. auf welche Weise teile ich dem denn mit, dass das Programm > zuende ist? ENtweder durch einen Brechpnkt (vom Debugger aus) oder duch spezielle Instruktionen wie brk, break, debug, halt, stop, ... die dein ATmega16 aber nicht unterstützt. simulavr erlaubt es auch an einer bestimmten Adresse zu unterbrechen.
Johann L. wrote: > Welches Object-Format verwendest du denn? simulavr möchte glaub > bin-Files haben, wenn er direkt aufgerufen wird. Bei dir schein schon > das Object nicht korrekt zu sein. Hi Johann, also avra erzeugt ja eine Reihe von Dateien. simulavr gebe ich das Hexfile zu fressen, da ich dachte, dass auch dies dasjenige ist, welches geflasht würde. Ist das verkehrt?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.