Forum: Mikrocontroller und Digitale Elektronik Registeranzeige durch simulavr?


von Florian (Gast)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>und möchte einen ATmega16 simulieren.

Wozu? Programmiere ihn und probiere es am
realen Objekt aus. Simulatoren tun nicht immer
das was man erwartet.

von Florian (Gast)


Lesenswert?

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

von stephan (Gast)


Lesenswert?

das sieht so aus als würde jemand (Dein Simu) das ENDE des Programmes 
vermissen..

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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

von Florian (Gast)


Lesenswert?

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:

von Florian (Gast)


Lesenswert?

Was das ,1 in der Zeile mit dem inc-Befehl soll, weiß ich übrigens auch 
nicht. Habs grad entfernt ;)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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.

von Florian (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.