PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : avr-gcc oder avrdude. Einer will nicht



postalrip
22.01.2010, 20:37
Guten Abend,
ich versuche gerade einen ATTiny26 zu beschreiben und da tritt ein imho merkwürdiges Problem auf.
Kompiliere ich den Code ohne Optimierung geht alles wunderbar (oben auf pastebin). Stelle ich jedoch die Optimierung an (egal ob 0, 1, 2, 3 oder s), lässt sich das hex file nicht mehr mit avrdude übertragen (unten auf pastebin).
Bin für jede Hilfe dankbar.
http://pastebin.com/m57aff965

Gruß,
postal

Besserwessi
22.01.2010, 21:48
Do wie es aussieht, wird delay.h benutzt. Wie die Warnung schon sagt, geht das nicht richtig ohne optimierung. Wenn ein Code nur ohne optimierung geht, liegt das meistens an fehlenden Volatiles.


Die Fehlermeldung von AVRDude läßt auf ein fehlerhaftes .hex file schließen. Wieso die ohne angabe der Optimierungnicht kommt ist eher das ungewöhnliche, denn ohne Angabe sollte wie -O0 sein. Eine Erklärung wäre vielleicht, das im ersten fall aus irgendeinem Grund kein Ergebnis erzeigt wurde und ein altes .hex File Gebrannt wurde.
Ein paar mehr Ausgaben von GCC wären schon interessant.

Mir ist noch nicht so klar wo gcc gesagt wird, dass ein .hex file erzeugt werden soll, und keine normales Objektfile. Oder kann eine neue Version von AVRdude schon mit objekt files arbeiten ?

sternst
22.01.2010, 22:29
Du hast gar nicht wirklich ein HEX-File, sondern ein ELF-File mit der Endung .hex. Und wenn "geht alles wunderbar" auch das Funktionieren des Programms mit einschließt, dann hast du ziemliches Glück (ganz sicher verwendet das Programm dann keine Interrupts).

Der Compiler kann selber kein HEX-File erzeugen. Bei -o kommt immer ein ELF-File raus, egal was für einen Namen du dem gibst. Aus diesem ELF-File musst du dann das HEX-File mit avr-objcopy extrahieren. Wie das genau geht, kannst du in einem der Standard-Makefiles nachschauen, oder am besten benutzt du gleich ein solches.

postalrip
22.01.2010, 22:33
Danke Besserwessi für deine Hilfe. Gut das du "Objektfile" gesagt hast.
Es ist nun 2 Jahre her das ich was mit den AVRs gemacht habe und da sind mir mal ebend die avr-gcc Grundlagen flöten gegangen.
Habe mir nun brav mein Makefile gebastelt und alles rennt wie es soll.
Nochmals vielen dank.

Gruß,
postal