Seit langer Zeit nutze ich WinAVR und benutze Makefiles die auf mfile
von Jörg Wunsch basieren.
Mir fehlen die Kenntnisse, um zu verstehen, welche Funktionen die
einzelnen Optionen im Detail haben. Das war auch kein Problem, weil
alles so funktionierte (WinAVR 2006 - 2010), wie Jörg es vorgegeben hat.
Bei der ATMEL AVR Toolchain scheint es nun ein Problem zu geben. Beim
Versuch, den AVR-Etherboot von Ulrich Radig
http://www.ulrichradig.de/home/index.php/avr/avr-etherboot ohne
AVR-Studio 6 anzupassen (mit Editor und Makefile aus WinAVR) erhalte ich
folgende Fehlermeldungen:
set -e; avr-gcc -MM -mmcu=atmega1284p -I. -g -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=main.lst -std=gnu99 main.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > main.d; \
[ -s main.d ] || rm -f main.d
Der Befehl "sed" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
avr-gcc (AVR_8_bit_GNU_Toolchain_3.4.4_1229) 4.8.1
Copyright (C) 2013 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.
"-f" ist syntaktisch an dieser Stelle nicht verarbeitbar.
make.exe: *** [sizebefore] Fehler 255
Der Versuch, die Make.exe der AVR Toolchain mit der Version von WinAVR
zu tauschen, brachte leider keinen Erfolg.
Kann mir jemand mitteilen, was ich am Makefile ändern muss, bzw. wo ich
eine Mustervorlage für AVR Toolchain finden kann?
Vielen Dank schon jetzt!
Erwin
Hallo Stephan,
vielen Dank für die Antwort!
Bei einer Toolchain gehe ich davon aus, dass diese komplett ist und ohne
Zusätze benutzt werden kann.
In so fern sollte es doch eine Möglichkeit geben, mit den entsprechenden
Steueranweisungen, welche nach meinem Kenntnisstand im Makefile
gebündelt sind, aus den C-Code ein Hex zu erzeugen. Ich denke, das
AVR-Studio auch nichts anders macht und genau diese Steueranweisungen
suche ich. In so fern meine Frage nach dem Makefile.
Dein Ansatz, den ich auch sehr interessant finde, geht in eine andere
Richtung. Dazu hätte ich besser die Überschrift "Wie und mit welchen
Zusatzbausteinen mache ich aus der AVR-Toolchain ein WinAVR 2014
klassischer Bauart" gewählt.
Da mir letztlich gleich ist, ob mein Weg oder Dein Lösungsansatz zum
Ziel führt, habe ich MinGW installiert.
Ergebnis:
- der 1. Fehler "... "sed" ...konnte nicht gefunden werden." ist nun
bereinigt.
- der 2. fehler ""-f" ist syntaktisch an dieser Stelle nicht
verarbeitbar." besteht immer noch.
Ich bin also über keinen der Ansätz bisher an Ziel.
Hat jemand einen Tip für mich?
Erwin schrieb:> Bei einer Toolchain gehe ich davon aus, dass diese komplett ist und ohne> Zusätze benutzt werden kann.
Dem ist aber nicht so. Die neue Version von WinAVR brungt nur den
Compiler mit sich.
"Since the new toolchain
avr8-gnu-toolchain-installer-3.4.3.12-win32.any.x86.exe is without an
installer and thus harder to setup/use, you might want to use older
avr-toolchain-installer-3.4.2.1573-win32.win32.x86 available from the
mirrors instead. "
Erwin schrieb:> In so fern sollte es doch eine Möglichkeit geben, mit den entsprechenden> Steueranweisungen, welche nach meinem Kenntnisstand im Makefile> gebündelt sind, aus den C-Code ein Hex zu erzeugen.
Eine Makefile ist nur ein "besseres" bash-schript - da werden ganz
normal externe Programme gerufen. Wie z.B. eben "sed". Wenn du die
externen Programme nicht installiert hast (z.B. weil du die ganze
Umgebung die zu make gehoert nicht installiertst), dann geht es halt
nicht.
"sed" in der Makefile zu verwenden ist zudem schon etwas exotischer -
Atmelstudio wird sowas sicherlich nicht machen?
Erwin schrieb:> der 2. fehler ""-f" ist syntaktisch an dieser Stelle nicht> verarbeitbar." besteht immer noch.
Das "-f" kommt vom "rm -f main.d" ? Lass das "--force" eben weg.
MfG
Erwin schrieb:> (mit Editor und Makefile aus WinAVR) erhalte ich> folgende Fehlermeldungen:>> set -e; avr-gcc -MM -mmcu=atmega1284p -I. -g -Os -funsigned-char> -funsigned-bitfields -fpack-struct -fshort-enums -Wall> -Wstrict-prototypes -Wa,-adhlns=main.lst -std=gnu99 main.c \> | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > main.d; \> [ -s main.d ] || rm -f main.d> Der Befehl "sed" ist entweder falsch geschrieben oder> konnte nicht gefunden werden.
Was für eine Steinzeit-Version von WinAVR nutzt du denn? "sed" wurde mal
gaaaaanz früher in den makefiles verwendet, um die dependencies zu
generieren. Seit ewigen Zeiten macht das inzwischen der Compiler selber,
und auch in den per MFile aus WinAVR2010 erzeugte makefiles ist kein
Aufruf von sed mehr enthalten.
Erwin schrieb:> Bei einer Toolchain gehe ich davon aus, dass diese komplett ist und ohne> Zusätze benutzt werden kann.
Kann sie. Allerdings nicht mit nicht zur Version passenden makefiles.
Bau dir halt ein passendes makefile, so schwierig ist das ja nun nicht.
Wenn du das Studio nicht nutzen willst, wirst du dich mit makefiels
beschäftigen müssen. Ohne geht es nicht.
Oliver
Oliver S. schrieb:> "sed" wurde mal> gaaaaanz früher in den makefiles verwendet, um die dependencies zu> generieren. Seit ewigen Zeiten macht das inzwischen der Compiler selber
Ich vermute, du hast nicht verstanden, was der sed-Aufruf macht. Da
steckt Information drin, die das Makefile hat, nicht aber der Compiler.
Konrad S. schrieb:> Ich vermute, du hast nicht verstanden, was der sed-Aufruf macht.
Doch, habe ich.
Vielleicht schaust du dir mal in aktuelleren makefils an, wie da mit dem
Compiler die dependency-Filmes erstellt werden, oder liest die gcc-Doku.
Oliver
@Oliver S
Ich muss mich bei dir entschuldigen, du hast recht.
Meine Technik zur Erzeugung der Dependencies ist schon ein wenig
älter, da gab es dieses neumodische Zeug noch nicht. ;-)