Hallo zusammen,
ich habe AVR Studio 5.1 installiert, um ein bereits angelegtes Projekt
fortzuführen. Dabei waren im makefile einige absolute Pfadangaben zu
ändern, damit sie auf die Pfade in meinem System passen (schon mal
unschön!). Bei der folgenden vermeintlich einfachen Änderung habe ich
dann schon in die Sch.... gegfriffen:
1 | # project name & path
|
2 | PROJPATH = D:\Software\Projects\Test
|
3 | # paths of binaries
|
4 | WINAVR = C:\Programme\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain
|
5 | WINAVR_BIN = $(WINAVR)/bin
|
6 | #WINAVR_INC = $(WINAVR)/avr32/include
|
7 | WINAVR_INC = $(PROJPATH)/AVR32cmp/inc
|
8 | AVR32_LINKERSCRIPT = $(WINAVR)/avr32/lib/ldscripts
|
bezieht sich ja u.a. auf
1 | $(HEX_OUT): $(DRI_OBJS) $(C_OBJS)
|
2 |
|
3 | #@echo Generating Objectfile: exception.o
|
4 | @$(CC) -c $(OPT_AS) -o$(OBJ_DIR)/exception.o $(SOURCE_DIR)/exception.S
|
5 |
|
6 | #@echo Linking and generating $*.elf
|
7 | @$(CC) $(OPT_LC) $(C_OBJS) $(DRI_OBJS) $(OBJ_DIR)/exception.o -lm
|
8 | #@echo converting .elf to .hex
|
9 | @$(WINAVR_BIN)/avr32-objcopy -j .text -j .data -O ihex $(OBJ_DIR)/$(PROJECT_NAME).elf $(OBJ_DIR)/$(PROJECT_NAME).hex
|
10 | #@echo generating .lst File
|
11 | #@$(WINAVR_BIN)/avr32-objdump -h -S -j .text -j .data $(OBJ_DIR)/$(PROJECT_NAME).elf > $(OBJ_DIR)/$(PROJECT_NAME).lst
|
12 | @$(WINAVR_BIN)/avr32-objdump -h -S $(OBJ_DIR)/$(PROJECT_NAME).elf > $(OBJ_DIR)/$(PROJECT_NAME).lst
|
13 | #@echo size
|
14 | @$(WINAVR_BIN)/avr32-size $(OBJ_DIR)/$(PROJECT_NAME).elf
|
15 | @$(WINAVR_BIN)/avr32-size $(OBJ_DIR)/$(PROJECT_NAME).hex
|
16 | #@echo Moving files into Hex directory
|
17 | @-mv -f $(OBJ_DIR)/$@.* $(HEX_DIR)
|
18 | @-mv -f $(HEX_DIR)/*.elf $(ELF_DIR)
|
Kompilieren klappt wunderbar aber wenn ich beim Linken angekommen bin,
dann bekommt das System Probleme mit den Leerzeichen im
AVR-Installationsverzeichnis und kann das .elf-File nicht anlegen.
Kopiere ich jetzt die gesamte Toolchain aus dem
AVR-Installationsverzeichnis in einen oberen Pfad und ändere jetzt in:
1 | # project name & path
|
2 | PROJPATH = D:\Software\Projects\Test
|
3 | # paths of binaries
|
4 | WINAVR = C:\Programme\Atmel\AVRToolchain
|
dann wird das .elf-File problemlos erzeugt. Ich bekomme jetzt allerdings
noch Probleme bei der Erzeugung des .lst-Files, da er das Zeichen "\"
nun auslässt und infolge dessen das Projektverzeichnis nicht findet.
Erst der Code:
1 | # project name & path
|
2 | PROJPATH = D:/Software/Projects/Test
|
3 | # paths of binaries
|
4 | WINAVR = C:/Programme/Atmel/AVRToolchain
|
löst alle Probleme!
Hat aber lange gedauert, bis ich das rausgefunden habe... Außerdem ist
die Lösung total unelegant, da etwaige Update im Atmel Verzeichnis nun
in meiner "Kopie" händisch nachgezogen werden müssen.
Da ich überhaupt keine Ahnung von makefiles habe wollte ich mal fragen
ob wem etwas eleganteres einfällt?
Vielen Dank, HK