-         

Ergebnis 1 bis 10 von 10

Thema: .hex Datei wird nicht etstellt

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108

    .hex Datei wird nicht etstellt

    Anzeige

    Hallo,

    Also nachdem meine erste Schaltung (mehr oder weniger nur ein AtMega32 mit ISP anschluss und 2 LEDs) nun endlich fertig ist, wollte ich mich mal an die Programmierung setzen. Beim Asuro ging das ja ganz einfach, aus einer .c-Datei eine .hex-Datei zu machen und ie zu übertragen. Dachte ich mit, das muss doch hier auch ganz ähnlich gehen.

    Also hab ich mir ein (meiner Meinung nach passendes) makefile von MFile aus WinAvr machen lassen und den LED-Blink-Code aus der RN-Wiki kopiert.

    Code:
    // Testprogramm: Blinken auf Pin PC0
    //
    #ifndef MCU             // Welcher AVR genutzt wird, wird i.A. im Makefile definiert
    #define MCU  atmega32
    #endif
    
    #ifndef F_CPU           // kann auch im Makefile definiert sein
    #define F_CPU 1000000UL // Takt als LONG definieren, da zu groß für Integer 
    #endif
    
    
    
    #include <avr/io.h>     // Namen der IO Register
    #include <util/delay.h> // Funktionen zum warten
    // Achtung, damit delay richtig funktioniert muß mit Optimierung compiliert werden
    
    int main(void)
    {
     DDRC = _BV(0);         // Nur PC0 als output,  _BV(0) = (1<<0) = 1
     PORTC = 254;           // Pullups auf allen anderen Pins 
        
     while (1)
     { 
       PORTC &= 255-_BV(0); //  0 auf Bit 0 Ausgeben, Rest so lassen
       _delay_ms(100);      //  100 ms Warten
       PORTC |= _BV(0);     //  1 auf Bit 0 Ausgeben, Rest so lassen
       _delay_ms(100);
     }
    }
    So, wenn ich jetzt mein make-all.bat ausführe (da steht ja eig nur "make all" drin), dann werden auch brav neue Datein erstellt. Also ich bekomme ein neues Verzeichnis .dept, in welchem sich die datei main.o.d befindet. Außerdem bekomme ich die Datein main.lst, main.map und main.o.
    Leider aber keine .hex-Datei, die ich dann auf meinen µC übertragen könnte.

    Was genau brauch ich da jetzt falsch?
    Am makefile selbst wirds ja wohl kaum liegen, wenn das von einem Programm aus WinAvr so erstellt wird, sollte das ja schon richtig sein oder?

    lg
    ijjiij

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Und was kommt als Bildschirm-Output beim Ausführen von make-all.bat?
    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    Also, wenn ich die make-all.bat per doppelklick ausführe öffnet sich die Konsole, Einiges an Text lauft ganz schnell über den Bildschirm, leider zu schnell das man irgendwas davon lesen könnte, und die Konsole geht wieder zu.

    Bei starten der make-all.bat über die CMD gibts folgende Fehlermeldung: "make: *** No rule to make target 'all'. Stop."
    Weiters passiert hier garnichts, es wird also auch nichts erstellt.

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von ijjiij Beitrag anzeigen
    Also, wenn ich die make-all.bat per doppelklick ausführe öffnet sich die Konsole, Einiges an Text lauft ganz schnell über den Bildschirm, leider zu schnell das man irgendwas davon lesen könnte, und die Konsole geht wieder zu.
    Batch-Datei öffnen (bei der Gelegenheit auch gleich mal den Inhalt hier posten) und als letzte Zeile "pause" ergänzen.
    MfG
    Stefan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    Wie gewünscht hier die Ausgabe in der Konsole:

    Code:
    -------- begin --------
    avr-gcc (GCC) 3.3.1
    Copyright (C) 2003 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    
    Linking: main.elf
    avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funs
    igned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhln
    s=main.o  -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-
    Map=main.map,--cref     -lm
    main.o(.text+0x16): In function `main':
    : undefined reference to `_delay_ms'
    main.o(.text+0x20): In function `main':
    : undefined reference to `_delay_ms'
    make: *** [main.elf] Error 1
    Und hier der Inhalt der Batch-Datei:
    Code:
    make all
    pause
    Hoffe du wirst schlau daraus,
    Danke für deine Hilfe!

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von ijjiij Beitrag anzeigen
    Code:
    avr-gcc (GCC) 3.3.1
    Copyright (C) 2003 Free Software Foundation, Inc.
    Geht's nicht vielleicht noch ein wenig älter?
    Deine AVR-Libc wird dann ja wohl vom gleichen Kaliber sein. Und diese prähistorische Version hatte wohl noch kein _delay_ms.
    MfG
    Stefan

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    wo bekomm ich denn eine neuere version davon her? oder hat der avr-gcc iwie eine auto-update funktion dabei?
    muss ich die alte version zuerst deinstallieren, bevor ich eine neuere drauf installiere?

    weil eigentlich habe ich heute erst die neue version von WinAVR installiert (20100110), ka wieso da ein veraltetes avr-gcc dabei war...

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von ijjiij Beitrag anzeigen
    wo bekomm ich denn eine neuere version davon her?
    http://sourceforge.net/projects/wina...nAVR/20100110/

    Zitat Zitat von ijjiij Beitrag anzeigen
    muss ich die alte version zuerst deinstallieren, bevor ich eine neuere drauf installiere?
    Musst du nicht unbedingt, wäre aber empfehlenswert.
    MfG
    Stefan

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von ijjiij Beitrag anzeigen
    weil eigentlich habe ich heute erst die neue version von WinAVR installiert (20100110), ka wieso da ein veraltetes avr-gcc dabei war...
    Der 3.3.1 war da mit Sicherheit nicht mit drin. Den musst du noch anderweitig auf der Platte rumliegen haben. Und wenn du WinAVR bei der Installation nicht erlaubt hast, PATH zu modifizieren, dann wird auch noch der alte Kram weiterhin verwendet.
    MfG
    Stefan

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    Also ich hab gerade alle WinAVR-Teile deinstalliert, danach die neueste Version installiert, nach etwas herumspielen mit den beiden Batch-Files hab ichs jetzt entgültig geschafft, alle Files zu erstellen!

    Vielen lieben Dank für deine Geduld und Hilfe!

    LG
    ijjiij

Ähnliche Themen

  1. Antworten: 25
    Letzter Beitrag: 21.08.2008, 23:33
  2. kann nicht hex. datei finden
    Von marik im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 24.11.2007, 20:55
  3. bin- und hex-Datei werden nicht mehr erzeugt
    Von Robothomas im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 07.08.2007, 14:44
  4. Wie wird ne Header Datei richtig aufgebaut
    Von Cybrix im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 28.11.2006, 12:03
  5. datei nicht in hex sondern in bin
    Von pebisoft im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 02.09.2005, 09:26

Berechtigungen

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