-         

Ergebnis 1 bis 4 von 4

Thema: avr-gcc oder avrdude. Einer will nicht

  1. #1

    avr-gcc oder avrdude. Einer will nicht

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    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 ?

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    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.
    MfG
    Stefan

  4. #4
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •