PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : avrdude - wie geht das vergleichbar dem "WriteAll"



vajk
08.10.2006, 12:26
Hallo,
ich hab jetzt einen USB-Progger (Bauanleitung von Matthias Weißer, matwei.de) unter Linux am laufen. (Via "avrdude -p m8 -P /dev/ttyUSB0 -c stk500v2 -t" getestet ...

Nur wie bekomme ich auf einen Rutsch nun das hex-file in den mega ?

Der Befehl: avrdude -p m8 -c avr910 -P com1 -U flash:w:hexfile.hex:i
schiebt wohl das hex ins flash.

Wenn ich scheinbar den eeprom-Bereich separat programmieren muß, ist das dann auch das selbe hexfile - ratlos guck :-k


Unter ProgPony heißt einfach CTRL-W = Write all und gut is, inkl. verifying.

Wie geht das unter avrdude ???

Ein Deutsches Howto habe ich bisher noch nicht gefunden und die manpages zeigen mir nicht den Vergleich zu Pony !

Danke für Antworten,
Vajk

izaseba
08.10.2006, 14:35
Nur wie bekomme ich auf einen Rutsch nun das hex-file in den mega ?

Wenn ich Dich richtig verstanden habe, willst Du den hex brennen, Du warst schon auf den richtigem Weg :-)


avrdude -p m8 -c avr910 -P com1 -U flash:w:hexfile.hex

eeprom alternativ dazu


avrdude -p m8 -c avr910 -P com1 -U eeprom:w:hexfile.eep


Gruß Sebastian

vajk
08.10.2006, 15:55
Prima Sebastian.

Die *.eep ist der Content fürs eeprom, wenn man im Pony also Write All tut, so wird hex und eep übertragen ????



... nur wenn ich das hex probiere, dann bekomme ich folgende Fehlermeldung.

Wenn ich das selbe mit dem Pony tue (write all), dann gehts ohne Probleme.



avrdude -p m8 -P /dev/ttyUSB0 -c stk500v2 -U flash:w:drehwurm.hex:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.06s
avrdude: Device signature = 0x1e9502
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be
performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "drehwurm.hex"
avrdude: ERROR: address 0x2010 out of range at line 513 of drehwurm.hex
avrdude: write to file 'drehwurm.hex' failed
avrdude: safemode: Fuses OK
avrdude done. Thank you.


Woran kann das liegen ?

Und: "avrdude: write to file 'drehwurm.hex'" - heißt das jetzt, daß er die HexDaten ins File schreiben will ?????

LG
Vajk

uwegw
08.10.2006, 19:51
Für AVRdude gibt es auch eine grafische Oberfläche:
http://sourceforge.net/projects/avrdude-gui/
Da kann man sich die benötigten Optionen zusammenklicken und erhält dann die korrekte Befehlszeile dafür.

vajk
08.10.2006, 20:03
.. oh Danke .. aber woher kommt wohl die Fehlermeldung ?

edit - die GUI ist ja ein Windoof-Programm .. avrdude nutze ich aber unter Linux ...
.. ob wohl WinAvr eine Hex-datei erzeugt, die Flash und eeprom - Bereich beinhaltet ? Könnte das das Problem sein ?

izaseba
08.10.2006, 21:25
Hallo Vajk,

Kann sein, daß das Programm für m16 oder m32 gebaut wurde ?
Dem Fehler nach zu urteilen versucht er was in Speicher zu schreiben, der garnicht da ist... :-s
Ehrlich gesagt hab ich sowas noch nicht gesehen...
Was ist, wenn Du dieses :i an Schluß wegläßt ?
GUI brauchst Du nicht, der syntax den ich Dir oben geschrieben habe reicht vollkommen.
Sehr komisch...

Gruß Sebastian

vajk
08.10.2006, 22:24
... also im Makefile von WinAvr steht explizit, daß es für dem mega32 ist .. wenn ichs mit dem Pony reinäpple, dann läufts auch so wie es soll ...

Bleibt halt die Frage. ist im Hex von WinAvr auch schon das eeprom mit drin oder nicht .. die hex ist aktuell 24.665 bytes groß, das eep nur 13 Bytes !
Also vermute ich, daß alles im Hex drin steht und avrdude das ja getrennt verlangt ..

izaseba
08.10.2006, 22:33
Na dann, wenn das Programm für M32 gebaut woredn ist, kannst Du es nicht in M8 packen.
Das wird wohl auf den Fehler erklären.

Bleibt halt die Frage. ist im Hex von WinAvr auch schon das eeprom mit drin oder nicht .. die hex ist aktuell 24.665 bytes groß, das eep nur 13 Bytes !

Das hat nichts zu melden.
Im *.hex stehen viele Sachen drin, Debugger infos, Prüfsummen und weiß was ich noch alles.
Daß die *.eep File so klein ist, hat auch nichts zu melden.
Wahrscheinlich hast Du nur 13 Bytes in Gebrauch.
Ich kann mich täuschen, aber *.hex und *.eep müßen getrennt programmiert werden, vielleicht macht Ponyprog alles in einem Zug.

Gruß Sebastian

linux_80
08.10.2006, 23:36
Hallo,

wenn das .eep nur 13 Byte hat, dann ist es sehr wahrscheinlich leer:

:00000001FF
+CF+LF

dies ist die letzte Zeile eines Hexfiles, .hex und .eep haben das gleiche Format.

In einem .hex steht eigentlich auch nur das was auch so ins Flash kommt, mit Speicheradresse am Anfang, Anzahl Byte der Zeile, und mit einer Prüfziffer am Ende der Zeile, die aber nur das Programm (zB. PonyProg) auswertet, nicht der AVR.

Bei PonyProg wird in der Anzeige am Ende des .hex noch der Bereich des EEprom angezeigt, in anderer Farbe.
Aja, steht ja alles so in der Hilfe, ... ;-)

vajk
08.10.2006, 23:41
@izaseba
>Na dann, wenn das Programm für M32 gebaut woredn ist, kannst Du es nicht in M8 packen.

Aaaaaaaaaaaaaaaa .. mal schnell in eine Ecke stell und schämen tu - Danke für den Hinweis.

Liebe Grüße,
Vajk