Dieser ArtikelBenutzerSuche |
WinAVR
Download über die WinAVR-Startseite [bearbeiten] InstallationNach dem Installieren sollten Win9X-Rechner neu gestartet werden, um die Erweiterung des Suchpfades um die WinAVR-Verzeichnisse zu aktivieren (autoexec.bat). Bei Windows NT/2000/XP ist üblicherweise kein Neustart erforderlich, sollte aber dennoch ausgeführt werden, wenn Probleme auftreten (Fehler in der Art: Der Befehl ist falsch geschrieben/kann nicht gefunden werden...). Danach kann man sofort im Programmer's Notepad z.B. mit dem Beispielcode anfangen. Zwei WinAVR Verzeichnisse müssen in der PATH-Umgebungsvariable aufgeführt sein: C:\Dokumente und Einstellungen\willi>path PATH=[...]C:\WinAVR\bin;C:\WinAVR\utils\bin;[...] [bearbeiten] Tipps + Tricks[bearbeiten] Umstieg von AVR-Studio mit avr-gcc zu WinAVR mit AVRISP
[bearbeiten] WinAVR VersionDie aktuelle WinAVR Version ist derzeit (06/2008) WinAVR-20080610. SourceForge.net WinAVR Projekt-Seite und Download Enthalten sind u.a.:
Wer mit Fließkommadaten arbeitet, sollte entweder die Vorgängerversion verwenden, oder die avr-libc aktualisieren. Siehe http://www.mikrocontroller.net/topic/86837 Weitere Infos siehe: Liste der Änderungen [bearbeiten] Passende AVR-Studio VersionWenn eine WinAVR-Version 2007... mit AVR Studio betrieben wird, ist AVR Studio Version >= 4.13 erforderlich. Downloadadressen sind derzeit:
[bearbeiten] MAKE funktioniert nicht[bearbeiten] Richtiges Make Programm?> make all MAKE Version 5.2 Copyright (c) 1987, 2000 Borland Error makefile 461: Command syntax error ... Wenn make mit dieser oder ähnlichen Fehlermeldung abbricht, ist der Pfad für ausführbare Programme nicht auf das make Programm aus dem GCC/Binutils Paket gesetzt. Es wird ganz banal das falsche Make-Programm (z.B. von Borland C oder Delphi) für das verwendete makefile aufgerufen. In diesem Fall ist die Umgebungsvariable PATH in Autoexec.Bat (Windows 98SE) bzw. in der Systemsteuerung (Windows XP, 2000) anzupassen. [bearbeiten] gcc plug-in: Error: Object file not found on expected locationDiese Fehlermeldung kann nur auftauchen, wenn der GNU C Compiler aus dem AVR-Studio heraus bedient wird. Dass keine weiteren Fehlerursachen genannt werden, ist eigentlich ein AVR-Studio Bug. Eine Analyse des AVR-Studio Bugs hat Johan Ekdahl im avrfreaks.net Forum beschrieben. AVR-Studio erkennt in gewissen Fällen beim Build-Vorgang auftretende Fehler nicht und erwartet eine nie hergestellte Ausgabedatei. Auf jeden Fall sollte man in AVR Studio mal zwischen dem Build und Message-Fenster umschalten, ob ein einem von beiden mehr Infos stehen, was wodurch den Fehler produziert. Wenn nicht mehr Infos aus AVR Studio herauszukitzeln sind, könnte man das Projekt beispielsweise als herkömmliches Make-Projekt aufsetzen, mit WinAVR kompilieren (Kommandozeile oder aus dem Programmers Notepad heraus) und auf Fehlermeldungen achten. Siehe auch: [bearbeiten] avr-gcc: _spawnvp: No such file or directory> "make.exe" all -------- begin -------- avr-gcc (GCC) 4.1.1 (WinAVR 20070122) Copyright (C) 2006 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.c.elf avr-gcc -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns= -std=gnu99 -Wundef -MMD -MP -MF .dep/main.c.elf.d --output main.c.elf -Wl,-Map=main.c.map,--cref -lm avr-gcc: _spawnvp: No such file or directory make.exe: *** [main.c.elf] Error 1 > Process Exit Code: 2 Bei WinAVR-20070122 und WinAVR-20070525 kann es unter VISTA und Windows98SE eine ähnliche Fehlermeldung wie oben gezeigt geben. Verschiedene Binärpatches können diese Probleme beheben:
WinAVR-20071221 funktioniert unter Windows98SE, wie erste Tests zeigen, wie aus der Tüte, d.h. ohne Binärpatch (Jippy!). [bearbeiten] ...\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487> "make.exe" all AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000 E:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487 -------- begin -------- avr-gcc (GCC) 3.4.3 Copyright (C) 2004 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. AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000 E:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487 make.exe: *** [sizebefore] Error 1 > Process Exit Code: 2 Wenn make mit dieser oder ähnlichen Fehlermeldung abbricht, ist es einen Versuch wert, die Hilfsdatei msys-1.0.dll im Ordner des Tools sh.exe (beim Beispiel E:\WinAVR\utils\bin\) auszutauschen. Eine Anleitung dazu gibt es von Madwizard (http://www.madwizard.org/extern/winavr-vista). Siehe auch im Forum die Frage von Lukas und die Frage von werdlangsammüde. [bearbeiten] make: *** [####.eep] Error 1Build started 18.8.2007 at 20:14:23 avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex I2C_Motor.elf I2C_Motor.eep c:\Programme\WinAVR\bin\avr-objcopy.exe: there are no sections to be copied! c:\Programme\WinAVR\bin\avr-objcopy.exe: --change-section-lma .eeprom=0x00000000 never used make: *** [I2C_Motor.eep] Error 1 Build succeeded with 0 Warnings... Diese oder eine ähnliche Fehlermeldung erscheint, wenn im erzeugten Programm der EEPROM-Abschnitt unbenutzt ist. Um die Fehlermeldung zu unterdrücken, kann man vor den Aufruf von avr-objcopy im Makefile ein Minuszeichen schreiben (Forenbeitrag von Jörg). Beispielzeilen in einem Makefile ohne Fehlerunterdrückung:
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
$(OBJCOPY) -j .eeprom \
--set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 \
--no-change-warnings -O $(FORMAT) \
$< $@ || exit 0
Beispielzeilen in einem Makefile mit Fehlerunterdrückung:
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom \
--set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 \
--no-change-warnings -O $(FORMAT) \
$< $@ || exit 0
[bearbeiten] make.exe: *** No rule to make target `main.elf', needed by `elf'.-------- begin -------- avr-gcc (GCC) 4.2.2 (WinAVR 20071221rc1) Copyright (C) 2007 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. make.exe: *** No rule to make target `main.elf', needed by `elf'. Stop. > Process Exit Code: 2 > Time Taken: 00:02 Diese oder eine ähnliche Fehlermeldung erscheint, wenn der Quelltest NICHT main.c heisst und ein Makefile OHNE weitere Anpassung an den verwendeten Dateinamen der Quelltextdatei verwendet wird. Abhilfe ist also die Quelltextdatei in main.c umbenennen oder das Makefile anzupassen (siehe AVR-GCC-Tutorial). Eine weitere Fehlerursache könnte auch eine Ordnerstruktur mit Leerzeichen und/oder Sonderzeichen im Pfad sein. [bearbeiten] Portable InstallationDas Hauptproblem beim Ausführen von WinAVR von einem USB-Stick ist der fehlende Eintrag für den Compilerpfad in der Windowsumgebungsvariable PATH. Die folgende Batchdatei zum Starten des Programmers Notepad extrahiert mit %~dp0 das Laufwerk und den Pfad vom Aufruf der Batchdatei und setzt damit PATH neu. Zu beachten ist, das die neu gesetzte PATH Variable nicht systemweit etabliert wird, sondern nur für Prozesse gilt, die aus dieser Batch (mit dieser cmd Session) aufgerufen werden (in diesem Fall pn.exe) ....\WinAVR\pn.bat @echo off echo PN.BAT Version 1.0 set BatchPath=%~dp0 set BinDir=pn\ set BinDir=%BatchPath%%BinDir% set PATH=%BatchPath%\bin;%BatchPath%\utils\bin;%PATH% start %BinDir%pn.exe [bearbeiten] Code-Größe anzeigen
[bearbeiten] Avrdude findet libusb0.dll nicht (WinAVR-20070525)Forenbeitrag von Paul: Habe leider noch etwas zu bemängeln, und zwar meckerte avrdude, dass es die "libusb0.dll" nicht fand. Musste dann erst noch manuell den Pfad c:\winavr\utils\libusb\bin in die autoxecec.bat eintragen. Siehe auch Diskussion bei www.avrfreaks.net [bearbeiten] C-Quellcode fehlt im *.LSS Listing (WinAVR-20071221)In WinAVR-20071221 werden im ggf. erzeugten Disassemblerlisting (Dateiendung .LSS) keine Quellcodezeilen angezeigt. Es handelt sich um ein Problem des Programms avr-objdump (Forenbeitrag). Der User DosMan hat einen Workaround #1 bei www.avrfreaks.net angegeben (zum Download ggf. kostenlos registrieren). Ein anderer ebenfalls bei www.avrfreaks.net beschriebener Workaround #2 besteht darin, die Zeilenenden im C-Quelltext in "Unix-Zeilenenden" (nur \n statt \n\r) umzuformen bzw. nur mit Editoren zu arbeiten, die solche Unix-Zeilenenden erzeugen. [bearbeiten] Hilfe! Habe neues WinAVR und das Datensegement ist jetzt riesig! (WinAVR-20071221)Es gibt in der aktuellen Version bereits gemeldete Bugs im Zusammenhang mit float Variablen bzw. den neu geschriebenen Gleitzahlfunktionen der avr-libc (Forumsbeitrag). Wir können im Moment nur hoffen (oder besser: mitarbeiten), dass bald ein WinAVR Update herauskommt. [bearbeiten] Siehe auch |