X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm%2Faltos-application.ld;h=c94c06b84c546dc2336868d20a70d866a34b54c3;hb=8d0f4bc23eae4f1e085bfb853c995f1fb6b8b594;hp=63a3be0002345662eb4f5acf906491890ed0c835;hpb=c9c35b100c3fcae661501d2bf89eedc7fceb2e1c;p=fw%2Faltos diff --git a/src/stm/altos-application.ld b/src/stm/altos-application.ld index 63a3be00..c94c06b8 100644 --- a/src/stm/altos-application.ld +++ b/src/stm/altos-application.ld @@ -35,9 +35,19 @@ SECTIONS { . = ORIGIN(rom) + 0x100; + + /* Ick. What I want is to specify the + * addresses of some global constants so + * that I can find them across versions + * of the application. I can't figure out + * how to make gnu ld do that, so instead + * we just load the two files that include + * these defines in the right order here and + * expect things to 'just work'. Don't change + * the contents of those files, ok? + */ ao_romconfig.o(.romconfig*) ao_product.o(.romconfig*) - *(.text*) /* Executable code */ *(.rodata*) /* Constants */ @@ -45,21 +55,34 @@ SECTIONS { .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) - __text_end__ = .; } > rom + __text_end__ = .; + + /* Boot data which must live at the start of ram so that + * the application and bootloader share the same addresses. + * This must be all uninitialized data + */ + .boot (NOLOAD) : { + __boot_start__ = .; + *(.boot) + . = ALIGN(4); + __boot_end__ = .; + } >ram /* Data -- relocated to RAM, but written to ROM */ - .data ORIGIN(ram) : AT (ADDR(.ARM.exidx) + SIZEOF (.ARM.exidx)) { + .data : { __data_start__ = .; *(.data) /* initialized data */ + . = ALIGN(4); __data_end__ = .; - __bss_start__ = .; - } >ram + } >ram AT>rom .bss : { + __bss_start__ = .; *(.bss) *(COMMON) + . = ALIGN(4); __bss_end__ = .; } >ram