diff --git a/firmware/startup/stm32f030.ld b/firmware/startup/stm32f030.ld index a988ce2..2cfcd12 100644 --- a/firmware/startup/stm32f030.ld +++ b/firmware/startup/stm32f030.ld @@ -38,16 +38,14 @@ MEMORY SECTIONS { - .vectors : + .vectors : ALIGN(4) { - . = ALIGN(4); KEEP(*(.vectors)) . = ALIGN(4); } >FLASH - .text : + .text : ALIGN(4) { - . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.rodata) /* .rodata sections (constants, strings, etc.) */ @@ -57,49 +55,54 @@ SECTIONS *(.eh_frame) KEEP(*(.init)) /* Constructors */ KEEP(*(.fini)) /* Destructors */ - } >FLASH + . = ALIGN(4); + } >FLASH =0xFF - .ARM.extab : + .ARM.extab : ALIGN(4) { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } >FLASH + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH =0xFF - .ARM : + .ARM : ALIGN(4) { __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; - } >FLASH + . = ALIGN(4); + } >FLASH =0xFF /* Constructor/Destructor tables */ - .preinit_array : + .preinit_array : ALIGN(4) { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)) PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH + . = ALIGN(4); + } >FLASH =0xFF - .init_array : + .init_array : ALIGN(4) { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH + . = ALIGN(4); + } >FLASH =0xFF - .fini_array : + .fini_array : ALIGN(4) { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array*)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH + . = ALIGN(4); + } >FLASH =0xFF /* Initialized Data */ __ld_load_data = LOADADDR(.data); - .data : + .data : ALIGN(4) { - . = ALIGN(4); __ld_sdata = .; *(.data) *(.data*) @@ -108,9 +111,8 @@ SECTIONS } >RAM AT> FLASH /* Uninitialized static data */ - .bss : + .bss : ALIGN(4) { - . = ALIGN(4); __ld_sbss = .; *(.bss) *(.bss*) @@ -119,9 +121,8 @@ SECTIONS __ld_ebss = .; } >RAM - .heap_stack (NOLOAD) : + .heap_stack (NOLOAD) : ALIGN(4) { - . = ALIGN(4); __ld_sheap = .; . = . + __ld_heap_size; __ld_eheap = .;