BTW, one thing I noticed in both firmwares is that the LMA in the flash elf binaries is not set correctly. I was using the plain "load" command in gdb to flash the bootloader and app to my AT91SAM7-EK over JTAG (segger blue box), but the app went to 0x0 instead of 0x4000.
Here's a fix:
[master] tom@zoo:~/at91work/at91lib/boards/simtrace/at91sam7s256$ git diff flash_dfu.lds diff --git a/at91lib/boards/simtrace/at91sam7s256/flash_dfu.lds b/at91lib/boards/simtrace/at91sam7s256/flash_dfu.lds index c228dcc..e3e5147 100644 --- a/at91lib/boards/simtrace/at91sam7s256/flash_dfu.lds +++ b/at91lib/boards/simtrace/at91sam7s256/flash_dfu.lds @@ -45,7 +45,7 @@ MEMORY SECTIONS { . = 0x000000000; - .fixed 0x00104000: AT ( 0x00000000 ) + .fixed 0x00104000: { . = ALIGN(4); _sfixed = .; @@ -55,7 +55,7 @@ SECTIONS _efixed = .; } >flash
- .relocate 0x00200028: AT ( SIZEOF(.fixed) ) + .relocate 0x00200028: { . = ALIGN(4); _srelocate = .; @@ -64,7 +64,7 @@ SECTIONS *(.data) . = ALIGN(4); _erelocate = .; - } >sram + } >sram AT >flash
.bss (NOLOAD) : { _szero = .;