From: Keith Packard Date: Sat, 27 Apr 2013 07:24:08 +0000 (-0700) Subject: altos: Get rodata into flash, make sure sections are aligned X-Git-Tag: 1.2.1~25 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=a2e0676f476b0e2bdd5102315ebd5904b57f384a altos: Get rodata into flash, make sure sections are aligned .rodata* needs to be in flash; otherwise strings get left in ram. Failing to align sections makes the initialized data get dumped into the wrong place in memory. Signed-off-by: Keith Packard --- diff --git a/src/stm/altos-loader.ld b/src/stm/altos-loader.ld index 78649be2..5e10e5ba 100644 --- a/src/stm/altos-loader.ld +++ b/src/stm/altos-loader.ld @@ -16,7 +16,7 @@ */ MEMORY { - rom : ORIGIN = 0x08000000, LENGTH = 8K + rom : ORIGIN = 0x08000000, LENGTH = 4K ram : ORIGIN = 0x20000000, LENGTH = 16K } @@ -32,14 +32,17 @@ SECTIONS { .text : { __text_start__ = .; *(.interrupt) /* Interrupt vectors */ - *(.romconfig) + *(.romconfig*) *(.text) /* Executable code */ - *(.rodata) /* Constants */ - + . = ALIGN(4); + *(.rodata*) /* Constants */ + . = ALIGN(4); } > rom .ARM.exidx : { + . = ALIGN(4); *(.ARM.exidx* .gnu.linkonce.armexidx.*) + . = ALIGN(4); } > rom __text_end__ = .; @@ -56,20 +59,19 @@ SECTIONS { /* Functions placed in RAM (required for flashing) */ .textram : { - __text_ram_start__ = .; __data_start__ = .; + __text_ram_start__ = .; *(.text.ram) - . = ALIGN(4); + __text_ram_end = .; } >ram AT>rom - __text_ram_end = .; /* Data -- relocated to RAM, but written to ROM */ .data : { *(.data) /* initialized data */ - . = ALIGN (4); + __data_end__ = .; } >ram AT>rom - __data_end__ = .; + .bss : { __bss_start__ = .;