ENTRY(Reset_Handler) StackSize = 0x4000; /* 16KB */ MEMORY { FLASH (rx) :ORIGIN = 0x08020000, LENGTH = 384K RAM (xrw) :ORIGIN = 0x20000000, LENGTH = 112K CCM (rw) :ORIGIN = 0x10000000, LENGTH = 64K - StackSize } _stack_top = ORIGIN(CCM) + LENGTH(CCM) + StackSize; SECTIONS { .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) . = ALIGN(4); } >FLASH .text : { . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ . = ALIGN(4); } >FLASH .rodata : { . = ALIGN(4); *(.rodata) *(.rodata*) . = ALIGN(4); } >FLASH _data_load = LOADADDR(.data); .data : { . = ALIGN(4); _data_run = .; *(.data) *(.data.*) . = ALIGN(4); _data_run_end = .; } >RAM AT>FLASH _data_ccm_load = LOADADDR(.data_ccm); .data_ccm : { . = ALIGN(4); _data_ccm_run = .; *(.data_ccm) *(.data_ccm*) . = ALIGN(4); _data_ccm_run_end = .; } >CCM AT>FLASH .bss (NOLOAD) : { . = ALIGN(4); _bss_run = .; *(.bss) *(.bss.*) . = ALIGN(4); _bss_run_end = .; } >RAM .bss_ccm (NOLOAD) : { . = ALIGN(4); _bss_ccm_run = .; *(.bss_ccm) *(.bss_ccm.*) . = ALIGN(4); _bss_ccm_run_end = .; } >CCM }