Hi
Ich habe folgenden Code:
C-Code
ASM-CodeCode:// Globale Variablen struct TASK tasks[MAXTASKS]; void *tastarray = &tasks;
wenn ich das nun linke:...Code:.data .extern .word tastarray
... bekomme ich folgende Fehlermeldung:Code:avr-gcc -mmcu=atmega128 -x assembler-with-cpp -Wa,-gdwarf2 -c -o asm.o asm.s avr-gcc $INCLUDEDIR -mmcu=atmega128 -Wall -gdwarf-2 -O0 -c -o main.o main.c avr-gcc -mmcu=atmega128 -s -m AVR5 main.o asm.o $LIBDIR -lm -o bin.elf
Hat jemand 'ne Idee was ich falsch gemacht habe?Code:asm.o: In function `__vector_12': /home/redeagle/avr/ts/./asm.s:83: relocation truncated to fit: R_AVR_LDI against symbol `tastarray' defined in .data section in main.o /home/redeagle/avr/ts/./asm.s:84: relocation truncated to fit: R_AVR_LDI against symbol `tastarray' defined in .data section in main.o
----
OK, fehler gefunden
Wenn man weiß was der Linker mit relocation truncated meint ist es recht einfach - die Variable ist 16bit groß, der Compiler hat aber nur platz für eine 8 bit variable hinterlassen. Und da bekommt der Linker die Variable nicht rein.
Lesezeichen