X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fstm%2Faltos-application.ld;h=6affc376a1e75e19887191894728101f51dc8e73;hp=5110da845dd4f21afc323db3ac8ca5b2d55dbb56;hb=8ded61d59888c79ef1f94e664b5fb770841a801a;hpb=b1a43ce313c85cb7f8f16f7f0647d9d4320ba692 diff --git a/src/stm/altos-application.ld b/src/stm/altos-application.ld index 5110da84..6affc376 100644 --- a/src/stm/altos-application.ld +++ b/src/stm/altos-application.ld @@ -16,7 +16,7 @@ */ MEMORY { - rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K + rom (rx) : ORIGIN = 0x08001000, LENGTH = 124K ram (!w) : ORIGIN = 0x20000000, LENGTH = 16K } @@ -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,14 +55,14 @@ 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 : { + .boot (NOLOAD) : { __boot_start__ = .; *(.boot) . = ALIGN(4); @@ -64,6 +74,7 @@ SECTIONS { .data : { __data_start__ = .; *(.data) /* initialized data */ + . = ALIGN(4); __data_end__ = .; } >ram AT>rom @@ -71,6 +82,7 @@ SECTIONS { __bss_start__ = .; *(.bss) *(COMMON) + . = ALIGN(4); __bss_end__ = .; } >ram