Forum: Compiler & IDEs Makefile für ATMEL AVR Toolchain gesucht


von Erwin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Stephan B. (matrixstorm)


Lesenswert?

Scheint so, als haettest du kein SED 
(http://unixhelp.ed.ac.uk/CGI/man-cgi?sed) installiert.

Ggf. solltest du mal eine GNU Umgebung in dein Windows installieren - 
z.B. MinGW (http://www.mingw.org/)  ...

MfG

von Erwin (Gast)


Lesenswert?

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?

von Stephan B. (matrixstorm)


Lesenswert?

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

von Oliver S. (oliverso)


Lesenswert?

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

von Karsten F. (Firma: von Dänemark) (bingo600)


Lesenswert?


von Konrad S. (maybee)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Konrad S. (maybee)


Lesenswert?

@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. ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.