Forum: Mikrocontroller und Digitale Elektronik gtkwave input-file von hex-file


von Wally W. (wally234)


Lesenswert?

Hallo,

ich habe hier ein hex-file für einen atmega329p (Arduino2009) und ich
weiss, daß der code 2 bits am PORTD ändert. Gibt es eine Möglichkeit
dieses hex-file in einen Simulator zu laden und ein gtkwave kompatibles
file damit zu generieren ?
Leider habe ich keinen vernünftigen Logikanalysator oder Digitaloszi.
Mit BusPirate bekomme ich zwar Ergebnisse, diese sind aber nicht 
hinreichend genau auszuwerten.
Mit "simavr" soll es vermutlich gehen, habe es auch probiert, klappt 
aber nicht. Möglicherweise mache ich da auch was falsch.
Gibt es weitere Möglichkeiten ?
Ich benötige ein präzises timimg-diagramm.

danke
wally

von R. W. (quakeman)


Lesenswert?

Also du willst mit einem Simulator das Hex File durchlaufen lassen und 
die Portänderungen aufzeichnen um diese dann in GTKwave anzuzeigen wie 
in einem Logicanalyzer?

Das erste Problem was du schon mal hast ist, dass GTKwave nur spezielle 
Formate einlesen kann, welche im Mikrocontroller Bereich unüblich sind. 
Diese Formate kommen aus dem FPGA Bereich und du müsstest dein Timing 
Diagramm (woher auch immer) erst in ein solches Format umwandeln.

Und einen Simulator zu finden, welcher ein reines hex File simulieren 
kann und dann ein Timing Diagramm aufzeichnet, dürfte schon schwierig 
werden. Eventuell kannst du ja in avrstudio nur das hex file simulieren 
lassen, aber keine Ahnung ob das ohne Quellcode funktioniert.

Ciao,
     Rainer

von wally (Gast)


Lesenswert?

Hallo Rainer,

danke für die Antwort.

Ja, die gtkwave-Geschichte kenne ich von meinem Papillo board.
(Gadget Factory FPGA, Xilinx etc.)
Allerdings stört es mich nicht,daß es da herkommt.

In AS4 konnte ich die hex-datei laden und dann ein project 
drumherumbauen.
Im Simulator kann ich dann schön den PORTD beobachten, aber nciht so 
richitg vermessen. Man kann zwar "zu Fuß" breakpoints setzen und 
vermessen,
ist mir aber zuviel Gefummel, da das Timing-Muster nicht ganz trivial 
ist.

In AS6 kann ich die hex-Datei gar nicht in den Smulator bekommen. Das 
läuft in dieser Version sicher irgendwie anders. Ausserdem steigt mein 
Blutdruck immer recht hoch wenn ich mit Windows arbeiten muss :)

Ich denke ich sollte an simavr dranbleiben, da dieser Simulator die 
gtkwave formate ausgibt. Leider komme ich nicht dahinter wie simavr 
genau zu bedienen ist, komme aber vielleicht noch dahinter.

Tipps und/oder Beispiele zur hex-simulation in AS6 und zu simavr sind 
hochwillkommen.

Grus wally

von R. W. (quakeman)


Lesenswert?

Ich habe bisher nur ein klein bisschen mit AS6 gearbeitet, finde es aber 
nicht so wirklich toll, was die Simulation angeht. Bin da von Keil 
deutlich besseres gewöhnt, zumindest was den Simulator angeht. ;)
Deshalb kann ich dir da auch nicht sagen, wie man damit hex Dateien 
simulieren kann und wie man Timing Analysen darin speichert.
Ich kenne gtkwave auch nur daher, dass ich es für meinen LogicAnalyzer 
und Oszi als Anzeige der gespeicherten Daten benutze. Habe mir dafür 
extra einen Konverter geschrieben, der die diversen Formate (*.wfm und 
*.lpf ins VCD Format für gtkwave konvertiert. :)

von Thomas K. (tomk)


Lesenswert?

Hi,

um etwas OpenSource-Werbung zu machen :-)

> ich habe hier ein hex-file für einen atmega329p (Arduino2009) und ich
> weiss, daß der code 2 bits am PORTD ändert. Gibt es eine Möglichkeit
> dieses hex-file in einen Simulator zu laden und ein gtkwave kompatibles
> file damit zu generieren ?

Nach Sender Erewan: im Prinzip ja, aber ...

Oder ernsthaft: simulavr hat mittlerweile genau dieses Feature, 
allerdings ist der atmega329 noch nicht implementiert. (das ist das eine 
"aber", das andere ist, das simulavr aktuell nur elf-Files lädt, aber 
auch das lässt sich abstellen)

Allerdings hat sich dort auf der Mailingliste gerade jemand gemeldet, 
der den atmega169 implementieren will - dann dürfte es zum atmega329 
nicht mehr so weit sein. Wobei der LCD-Controller dann jedoch noch ein 
Extra-Kapitel ist.

Oder ... selbst Hand anlegen ... :-)

von wally (Gast)


Lesenswert?

Hallo,

danke für Deine Antwort.

Ich muss mich korrigieren, ein Tippfehler:

Der Arduino2009 hat natürlich einen ATmega328p und der wird unterstützt.

Leider weiss ich nicht wie ich das machen soll. Auch ein ELF-File zu 
beschaffen wird nicht möglich sein. Ob eine Konvertierung irgendwie 
möglich ist weiss ich nicht.
Selber Hand anlegen, bin ich zu doof für :)

nochmal sorry, für den Fehler oben
Gruß wally

von wally (Gast)


Lesenswert?

Ich  kam auf die Idee ein HEX-file zu laden asl ich im simavr wiki 
folgende Zeilen fand:

http://gitorious.org/simavr/pages/GetStarted


Run Your AVR Firmware
 ./simavr/run_avr firmware.afx
or
 ./simavr/run_avr -m atmega88 - f 8000000 firmware.hex
e.g.
 ./simavr/run_avr ./tests/atmega88_example.axf


versuche ich dies:
> ./simavr/run_avr -m atmega328p -f 8000000 ./arduino328p.hex
Loaded 1 section of ihex
Load HEX flash 00000000, 924
Starting atmega328 - flashend 7fff ramend 08ff e2end 03ff
atmega328 init
CORE: *** Invalid read address PC=0368 SP=08ff O=0895 Address 0900 out 
of ram (08ff)
avr_sadly_crashed
avr_gdb_init listening on port 1234
CORE: *** Invalid read address PC=0368 SP=0900 O=0895 Address 0901 out 
of ram (08ff)
avr_sadly_crashed

?  :)
Gruß wally

von Thomas K. (tomk)


Lesenswert?

Hi,

> Der Arduino2009 hat natürlich einen ATmega328p und der wird unterstützt.

Stimmt, den unterstützt simulavr seit der Version 1.0 tatsächlich, eine 
Hürde weniger.

> Leider weiss ich nicht wie ich das machen soll. Auch ein elf-File zu
> beschaffen wird nicht möglich sein. Ob eine Konvertierung irgendwie

Ist das ein selbst erzeugtes hex? Dann wird es in der Regel auch ein 
elf-File geben, weil der Linker immer nur ein elf-File ausspuckt und das 
hex erst danach (und aus dem elf-File) erzeugt wird. (in jedem Fall ist 
das bei der gcc-Toolchain so bzw. möglich)

Out of the box kann simulavr hex-Files nicht laden, eventuell etwas für 
die ToDo-Liste, aber da (siehe oben) beim Entwickler i.d.R. immer ein 
elf-File vorliegt, nichts, das hohe Prio geniesst.

Der andere Weg ist natürlich, eines der beiden möglichen 
Script-Interfaces zu nutzen, das setzt dann aber eben doch gewisse 
Programmierarbeit voraus.

Schönen Tag noch, Thomas

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.