Forum: Compiler & IDEs Simulavr und Interrupts


von Manuel Stühn (Gast)


Lesenswert?

Hallo an alle.
Ich wüsste gerne, ob der Simulavr auch Interrupts/Signals simulieren
kann, und wenn ja, wie. Momentan benutze ich simulavr-0.1.2 zusammen
mit avr-gdb-5.3 und dem ddd-3.3.8 unter FreeBSD.

Vielen Dank für Antworten

Gruß
Manuel

von Jörg Wunsch (Gast)


Lesenswert?

Ich glaube, da mußt Du mal die simulavr-Doku studieren.  Wenn
überhaupt, dann wohl eher nur sehr spärlich, vielleicht auch gar
nicht, aber ein bißchen Bewegung ist in simulavr auch drin.

Du solltest zumindest den aktuellen Port nutzen, ich habe den vor paar
Wochen mal aktualisiert.

von Manuel Stühn (Gast)


Lesenswert?

Ich hab den neusten Port (simulavr-0.1.2_1) installiert.

Danke
Gruß
Manuel

P.S.
Gäbe es noch eine Alternative (ausser JTAG) zur Simulation unter
FreeBSD? (bzw. Wie machst du das ?)

von Jörg Wunsch (Gast)


Lesenswert?

> Gäbe es noch eine Alternative (ausser JTAG) zur Simulation unter
> FreeBSD? (bzw. Wie machst du das ?)

Gerade dann, wenn es um die Hardware geht, führt meist nichts am
realen Chip vorbei.  ,,printf-Debugging'' hilft dort u. U. noch ein
Stück, eine RS-232 plane ich wenigstens fürs Debuggen eigentlich immer
mit ein.

Außerdem entwickelt sich halt ein Prototyp am besten auf einem
möglichst großen Prozessor, also ATmega128.  Dort hast Du immer
genügend Portpins (selbst dann, wenn Dir das JTAG-Interface 4 bits
klaut), immer genügend ROM für noch ein Dutzend printf-Strings,
usw. usf.  Wenn die Applikation erstmal grundsätzlich ,,rund'' ist,
kann man die endgültige Platine entwerfen und sie auf den
Zielprozessor runterskalieren.

Das JTAG ICE ist in der Tat durchaus von Nutzen, wenngleich Du
natürlich trotzdem das Problem hast, daß nicht jeder beliebige
Echtzeitvorgang wirklich debugfähig ist.  (Das Problem hat man auch
woanders, eine Serie von 10 aufeinanderfolgenden Interrupts im
FreeBSD-Floppytreiber kann ich auch nicht ohne weiteres mit einem
Breakpoint versehen.)  Es gibt mittlerweile auch preiswerte Varianten
von JTAG ICE, es muß also nicht immer die EUR 300 Option von Atmel
sein.  (Leider waren die Olimex-Teile wohl teilweise etwas
problembehaftet, so daß Andreas sie aus shop.mikrocontroller.net
wieder rausgenommen hat.)

Schließlich wäre noch VMLAB.  Eine wirklich gute Simulation, die unter
Wine auch brauchbar läuft (und deren Autor durchaus Wert auf diese
Option legt).  Hat paar kleine Probleme, die Icons oder zwei, drei
Fensterinhalte werden zuweilen nicht ordentlich neu gezeichnet, aber
da kann man sich mit kleinen Tricks helfen.  Ansonsten tut das im
Gegensatz zu AVR Studio 4 wirklich brauchbar unter Wine.  Ist
kostenpflichtig, aber die EUR 100 können sich schon lohnen.
Vorteilhaft ist, daß der Simulator auch eine Art ,,lint'' darstellt:
Zustände, die zwar nicht verboten sind, aber auch nicht
empfehlenswert, werden erkannt.  Einerseits werden alle Register
intern nicht nur als 0 und 1 dargestellt, sondern auch als `not set',
und bei Zugriff auf einen solchen Wert gibt's eine Warnung.  Auch
wird
erkannt, wenn eine UART benutzt wird, aber der Teiler noch nicht
gesetzt, etc. pp.  Schließlich kann noch ein bißchen Peripherie
simuliert werden.  Aber s. o., meiner Meinung nach hat jede Simulation
halt ihre Grenzen.

Simulavr nehme ich selbst auch, vorwiegend aber für die Überprüfung
von Algorithmen.  Die printf + scanf Familie beispielsweise ist
ausgiebig durch Simulation getestet worden, bevor dann die endgültigen
Tests auf der Bastelhardwar gelaufen sind.

von Stefan May (Gast)


Lesenswert?

Mit dem GDB kann man Signale an den Simulator senden. Ein Timer0
Overflow auf einem Mega8 kann man z.B. mit "signal SIG90" auslösen.
Die 90 solltest Du mal variieren und bei 80 beginnen. Der Simulavr
schmeißt auch eine Meldung raus, welcher Interrupt ausgelöst wurde.
Wenn Du einen Interrupt simulieren möchtest, dann solltest Du dort auch
einen Breakpoint setzen.

Dokumentiert ist das ganze leider nicht wirklich, ich habe das aus dem
Skript misc/irq.py im Release 0.1.2.1.

Hat eigentlich schonmal jemand ein Tutorial zum Simulavr mit GDB
geschrieben? Ansonsten würde ich mich da mal dransetzen.

ciao, Stefan.

von Fritz Ganter (Gast)


Lesenswert?

Das wäre toll, wenn du das schreiben könntest.

Und schön wäre auch, wenn am simulavr noch weiterentwickelt werden
würden, ich vermisse z.B. den Timer2 bei den Megas.

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.