Moment mal: ich denke, die Asuro.c ist in der libasuro.a drin. dann muss die asuro.h also nach C:\Programme\WinAVR\avr\lib. Hm. das geht auch noch nicht...Zitat von ehenkes
Die WINAVR Directory habe ich im Makefile geändert (also in dem Makefile in dem Verzeichnis, das ich bei den Tools des Programmers Notepads eingegeben habe). Das gesammt Makefile sieht nun so aus:
und die asuro.h ist auch in C:\Programme\Asuro\AsuroLib\lib\inc.Code:############################################################################### # Makefile for the project AsuroLib ############################################################################### ## General Flags PROJECT = AsuroLib MCU = atmega8 TARGET = AsuroLib.elf CC = avr-gcc.exe AR = avr-ar OBJDUMP = avr-objdump ## Options common to compile, link and assembly rules COMMON = -mmcu=$(MCU) ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -gdwarf-2 -Os -I./inc CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d ## Assembly specific flags ASMFLAGS = $(COMMON) ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2 ## Linker flags LDFLAGS = $(COMMON) LDFLAGS += ## Intel Hex file production flags HEX_FLASH_FLAGS = -R .eeprom HEX_EEPROM_FLAGS = -j .eeprom HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 ## Objects that must be built in order to link OBJECTS = globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o\ motor.o motor_low.o print.o rc5.o sound.o switches.o\ time.o uart.o version.o ## Objects explicitly added by the user LINKONLYOBJECTS = # Define directories, if needed. DIRAVR = C:/Programme/WinAVR #DIRAVR = /usr/local/avr DIRAVRBIN = $(DIRAVR)/bin DIRAVRUTILS = $(DIRAVR)/utils/bin DIRINC = . DIRLIB = $(DIRAVR)/avr/lib LIB = asuro LIBFILE = lib$(LIB).a HEADER = asuro.h ## Build all: $(LIBFILE) rm -rf *.o *~ %.o: %.c $(CC) $(INCLUDES) $(CFLAGS) -c $< $(LIBFILE): $(OBJECTS) $(AR) cru $(LIBFILE) $(OBJECTS) ## Clean target clean: rm -rf *.o *~ $(LIBFILE) rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) rm -rf dep/*.d install: cp $(LIBFILE) $(DIRLIB)/$(LIBFILE) cp inc/$(HEADER) $(DIRINC)/$(HEADER) lst: $(OBJECTS:%.o=%.lst) %.lst: %.o $(OBJDUMP) -h -S $< > $@ ## Other dependencies -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
Ich blick einfach nicht durch. Also: im Makefile (bei mir in C:\Programme\Asuro) steht, wo das WinAVR-Verzeichnis ist. Darin sucht er dann nach der libasuro.a - wie es im Makefile zu erkennen ist. und in dieser libasuro.a sind alle anderen dinge, die er zum compillieren braucht. Aber was macht jetzt die asuro.h? Sorry, dass ich so doof frage, aber ich verstehe das system noch nicht so ganz und bin deswegen auch nicht in der Lage den Fehler zu finden.
Moment mal: ich denke, die Asuro.c ist in der libasuro.a drin. dann muss die asuro.h also nach C:\Programme\WinAVR\avr\lib. Hm. das geht auch noch nicht...Zitat von ehenkes
Mach mal Folgendes:
1) Alles löschen
2) WinAVR installieren in Standardverzeichnis C:\WinAVR
3) ASURO-Bibliothek installieren
Nein.dann muss die asuro.h also nach C:\Programme\WinAVR\avr\lib
Hm. OK. Ich hatte schonmal die Libs komplett entfernt und neu gemacht, aber ohne Erfolg. also deinstalliere ich erstmal WinAVR.
- So. WINAVR (das von der Asuro-CD) ist neu installiert.
- Jetzt die Libs... Zip-file runtergeladen und nach C:\ASURO_SRC\AsuroLib entpackt.
- Batch-datei erstellt mit dem Inhalt: "make install" => asurolib.a kopiert.
- asuro.h nach C:\WinAVR\avr\include kopiert.
Ich hoffe, das stimmt jetzt soweit. Nun stehzt für mich noch die Frage, wie müssen die Tool Einstellungen im PN nun sein und wo müssen meine Projekte rein?
Vielen Dank für eure Hilfe, für mich ist das alles ein Dsungel, den ich noch nicht durchblicken kann... Kommt hoffentlich auch noch...
Bääääär
Das soll gehen? Kann ich nicht glauben. Ich würde Folgendes empfehlen:
0) Du benötigst nichts von der CD, alles im Internet
1) WinAVR: http://sourceforge.net/project/showf...group_id=68108 WinAVR-20070525-install.exe (auf CD: 4 Jahre älter!)
2) Lib: http://sourceforge.net/project/showf...roup_id=155217 AsuroLib 2.7.0 (April 10, 2007) (Wir nehmen nur das Beste!)
3) Wieso musst Du eine Batch-Datei erstellen?
Das steht bei mir in C:\ASURO_SRC\AsuroLib\lib\make-lib.bat:
make clean
make all
make install
4) Du musst asuro.h nicht nach WinAVR kopieren
5) Verwende Programmer's Notepad (C:\WinAVR\pn\pn.exe)
6) Siehe ASURO Anleitung (deutsch) ab S. 39 http://www2.produktinfo.conrad.com/d...er_Roboter.pdf
7) In C:\ASURO_SRC\AsuroLib\examples\FirstTry\Test-all.bat steht:
make all
8 ) Als "Projekt" nimmst Du immer test.c in FirstTry (am einfachsten für den Anfang)
Sorry, dass ich hier nur Mist baue, ich habe aber das System jetzt glaube ich verstanden. Ich lege im examples ordner in C:\ASURO_SRC\AsuroLib für jedes Projekt einen neuen Ordner an. Darein kommt dann das makefile und die make all und clean Batch dateien. Zum compillieren starte ich diese Batch dateien, da jedes projekt eh einen anderen Ordner hat, lohnt sich das Erstellen von diesen Tools nicht. Jetzt geht es endlich...
Ich habe die make-lib.bat nicht genommen, weil die libasuro.a doch schon fertig ist. ich muss sie doch nur noch ins winavr verzeichniss bringen. Zugegeben, es ist etwas aufwändig...
Ich habe jetzt so viel gelesen und in meinem Hirn war ein gewaltiger Knoten aus diesen gelesenen Dingen. Da ich sowas noch nie in der Art gemacht habe (bin borland Delphi gewohnt), ist das alles etwas schwierig zu kapieren. Ich hab diesen Knoten jetzt einigermaßen entfizt und compillieren geht jetzt ohne probleme.
Danke für deine Geduld, ehenkes.
Stark! Jetzt geht's erst richtig los ...
lösche mal die libasuro.a in WinAVR und lasse mal make-lib.bat neu ablaufen. Wird das bei dir dann nach WinAVR zu den Libs kopiert und der Header von inc nach lib (ein Verzeichnis zurück)?Ich habe die make-lib.bat nicht genommen, weil die libasuro.a doch schon fertig ist. ich muss sie doch nur noch ins winavr verzeichniss bringen. Zugegeben, es ist etwas aufwändig...
Schau mal in das Makefile. Da sind die entsprechenden Kopieranweisungen:
Zur Orientierung:Code:install: cp $(LIBFILE) $(DIRLIB)/$(LIBFILE) cp inc/$(HEADER) $(DIRINC)/$(HEADER)
Also nix manuell machen! Lass das Makefile schaufeln.Code:LIB = asuro LIBFILE = lib$(LIB).a HEADER = asuro.h DIRAVR = C:/WinAVR DIRAVRBIN = $(DIRAVR)/bin DIRAVRUTILS = $(DIRAVR)/utils/bin DIRINC = . DIRLIB = $(DIRAVR)/avr/lib
make install führt nur diese beiden Kopieranweisungen durch.
Zum Verständnis siehe z.B.: http://www.linux-web.de/thread.php?threadid=11065
http://www.informatik.uni-leipzig.de...ng.dir/V08.pdf
Hi,
für die nächste AsuroLib Release dibt es jetzt auch Programmers Notepad Projekte. Damit dürfte für diejenigen, die diesen Editor verwenden, einiges leichter werden. Vorab sind hier schon mal die PN Projektdateien beigefügt. Das ZipFile einfach in das Verzeichnis AsuroLib kopieren, und dort entpacken.
Es gibt auch eine Programgruppe im Ordner Examples, die alle Beispielprojekte enthält. Die Projekte lassen sich dann einfach mit PN2 öffnen. Wie man eigene Projekte mit PN2 erzeugt, wird im AsuroWiki erklärt.
@ehenkes: Das kopieren der asuro.h ist in der AsuroLib V2.70RC3 fehlerhaft. Eigentlich sollte die asuro.h ins C:\WinAVR\avr\include Verzeichnis kopiert werden. Im Makefile wird aber ins AsuroLib\lib Verzeichnis kopiert. Der eigentliche Grund für das Kopieren war folgende Überlegung:
wenn man eine Lib ins AVR/Lib Verzeichnis kopiert, sollte auch die zugehörige Header-Datei dort stehen. Statt
kann man dann auch schreibenCode:#include "asuro.h"
dieselbe Syntax wie beim verwenden anderer Bibliotheksfunktionen.Code:#include <asuro.h>
Wie man es macht, ist aber eher eine Geschmacksache.
Wenn man die Zeile DIRINC im Makefile so ändert, wird auch richtig kopiert.
Code:DIRINC = $(DIRAVR)/avr/include
Naja, aber ich brauche doch nicht nochmal make clean und make all durchführen. Die libasuro.a muss doch nur noch kopiert werden. Und da reicht es, wenn ich nur Make install durchführe. Und das habe ich doch gemacht, oder? Ich habe nur nochmal eine neue batchdatei angelegt, in der nur make install steht.Zitat von ehenkes
Lesezeichen