diff --git a/stm-firmware/stm32f407vet6_flash.ld b/stm-firmware/stm32f407vet6_flash.ld index 90dfba9..4b19a5b 100644 --- a/stm-firmware/stm32f407vet6_flash.ld +++ b/stm-firmware/stm32f407vet6_flash.ld @@ -42,16 +42,14 @@ MEMORY SECTIONS { - .vectors : + .vectors : ALIGN(4) { - . = ALIGN(4); KEEP(*(.vectors)) . = ALIGN(4); - } >FLASH + } >FLASH =0xFF - .text : + .text : ALIGN(4) { - . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.rodata) /* .rodata sections (constants, strings, etc.) */ @@ -61,49 +59,50 @@ SECTIONS *(.eh_frame) KEEP(*(.init)) /* Constructors */ KEEP(*(.fini)) /* Destructors */ - } >FLASH + } >FLASH =0xFF - .ARM.extab : + .ARM.extab : ALIGN(4) { *(.ARM.extab* .gnu.linkonce.armextab.*) - } >FLASH + } >FLASH =0xFF - .ARM : + .ARM : ALIGN(4) { __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; - } >FLASH + } >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 + } >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 + } >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 + /* Ensure LMA of ram data is at 32 bit word address in Flash */ + . = ALIGN(4); + } >FLASH =0xFF /* Initialized CCM data */ __ld_load_ccm_data = LOADADDR(.ccmdata); - .ccmdata : + .ccmdata : ALIGN(4) { - . = ALIGN(4); __ld_sdata_ccm = .; *(.ccm.data) *(.ccm.data*) @@ -111,9 +110,8 @@ SECTIONS __ld_edata_ccm = .; } >CCM AT> FLASH - .ccmbss (NOLOAD) : + .ccmbss (NOLOAD) : ALIGN(4) { - . = ALIGN(4); __ld_sbss_ccm = .; *(.ccm.bss) *(.ccm.bss*) @@ -123,9 +121,8 @@ SECTIONS /* Initialized Data */ __ld_load_data = LOADADDR(.data); - .data : + .data : ALIGN(4) { - . = ALIGN(4); __ld_sdata = .; *(.data) *(.data*) @@ -134,9 +131,8 @@ SECTIONS } >RAM AT> FLASH /* Uninitialized static data */ - .bss (NOLOAD) : + .bss (NOLOAD) : ALIGN(4) { - . = ALIGN(4); __ld_sbss = .; *(.bss) *(.bss*) @@ -145,9 +141,8 @@ SECTIONS __ld_ebss = .; } >RAM - .heap_stack (NOLOAD) : + .heap_stack (NOLOAD) : ALIGN(4) { - . = ALIGN(4); __ld_sheap = .; . = . + __ld_heap_size; __ld_eheap = .;