After making many threats, I'm finally attacking the problem of doing
separately compiled libraries in a robust fashion. (I can't bring
myself to call them dll's since being flashed they are hardly very
dynamic :)
I have patched the avr5.x ld script as follows, which is a total of 3
additional lines, all upward compatible:
diff -u /usr/local/atmel/avr/lib/ldscripts/avr5.x avr5.x
--- /usr/local/atmel/avr/lib/ldscripts/avr5.x 2007-07-27
23:12:51.000000000 -0700
+++ avr5.x 2008-09-30 11:53:10.000000000 -0700
@@ -71,6 +71,7 @@
{
*(.vectors)
KEEP(*(.vectors))
+ *(.entryjumps)
/* For data that needs to reside in the lower 64k of progmem. */
*(.progmem.gcc*)
*(.progmem*)
@@ -145,6 +146,7 @@
} > text
.data : AT (ADDR (.text) + SIZEOF (.text))
{
+ . += DEFINED (__libdatareserve) ? __libdatareserve : 0 ;
PROVIDE (__data_start = .) ;
*(.data)
*(.data*)
@@ -176,6 +178,7 @@
} > data
.eeprom :
{
+ . += DEFINED(__libeepromreserve) ? __libeepromreserve : 0 ;
*(.eeprom*)
__eeprom_end = . ;
} > eeprom
My current problem revolves around the DEFINED() operator in avr-ld. It
does not seem to recognize my definitions, invoked as follows:
avr-gcc -Wl,--script=avr5.x,--defsym=__libdatareserve=0x4 -o user \
user.o bootlibentries.o
No matter what I do, it appears as if the DEFINED() is being ignored.
Perhaps I misunderstand how DEFINED() is supposed to work, or perhaps I
misunderstand --defsym.
If I could solve this, then I believe I have the gold-plated solution
for calling separately flashed libraries (ie: reusing bootloader
functions.) I'll write that up fully after resolving this annoyance.
-dave
_______________________________________________
AVR-GCC-list mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list