Forráskód Böngészése

Added linker script for common commands

 All used linker scripts have common part. To clarify differences between
 scripts for particular platform this part was moved into sections.ld.
Alexander Voronov 6 éve
szülő
commit
b3434fa658

+ 1 - 1
Makefile

@@ -24,7 +24,7 @@ CFLAGS      ?= -mcpu=cortex-m3
 DEFINES     ?= STM32F1 STM32F103x6
 
 ARFLAGS      = -cvq
-LDFLAGS      = --specs=nano.specs -nostartfiles -Wl,--gc-sections
+LDFLAGS      = --specs=nano.specs -nostartfiles -Wl,--gc-sections -L demo
 INCLUDES     = $(CMSISDEV)/ST $(CMSISCORE) inc
 CFLAGS2     ?= $(CFLAGS) -mthumb -std=gnu99 $(OPTFLAGS)
 

+ 81 - 0
demo/sections.ld

@@ -0,0 +1,81 @@
+SECTIONS
+{
+    .text :
+    {
+        KEEP(*(.isr_vector))
+        *(.text*)
+        KEEP(*(.init))  KEEP(*(.fini))
+        *crtbegin.o(.ctors)
+        *crtbegin?.o(.ctors)
+        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+        *(SORT(.ctors.*))
+        *(.ctors)
+        *crtbegin.o(.dtors)
+        *crtbegin?.o(.dtors)
+        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
+        *(SORT(.dtors.*))
+        *(.dtors)
+        *(.rodata*)
+        KEEP(*(.eh_frame*))
+    } > ROM
+    .ARM.extab :
+    {
+        *(.ARM.extab* .gnu.linkonce.armextab.*)
+    } > ROM
+    __exidx_start = .;
+    .ARM.exidx :
+    {
+        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+    } > ROM
+    __exidx_end = .;
+    __etext = .;
+    .data : AT (__etext)
+    {
+        __data_start__ = .;
+        *(vtable)
+        *(.data*)
+        . = ALIGN(4);
+        PROVIDE_HIDDEN (__preinit_array_start = .);
+        KEEP(*(.preinit_array))
+        PROVIDE_HIDDEN (__preinit_array_end = .);
+        . = ALIGN(4);
+        PROVIDE_HIDDEN (__init_array_start = .);
+        KEEP(*(SORT(.init_array.*)))
+        KEEP(*(.init_array))
+        PROVIDE_HIDDEN (__init_array_end = .);
+        . = ALIGN(4);
+        PROVIDE_HIDDEN (__fini_array_start = .);
+        KEEP(*(SORT(.fini_array.*)))
+        KEEP(*(.fini_array))
+        PROVIDE_HIDDEN (__fini_array_end = .);
+        . = ALIGN(4);
+        __data_end__ = .;
+    } > RAM
+    .bss (NOLOAD) :
+    {
+        __bss_start__ = .;
+        *(.bss*)
+        *(COMMON)
+        __bss_end__ = .;
+    } > RAM
+    .heap (NOLOAD) :
+    {
+        __end__ = .;
+        *(.heap*)
+        __HeapLimit = .;
+    } > RAM
+    .stack_dummy (NOLOAD) :
+    {
+        *(.stack)
+    } > RAM
+    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
+    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
+    PROVIDE(__stack = __StackTop);
+    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+    PROVIDE(_estack = __stack);
+    PROVIDE(_sidata = __etext);
+    PROVIDE(_sdata = __data_start__);
+    PROVIDE(_edata = __data_end__);
+    PROVIDE(_sbss = __bss_start__);
+    PROVIDE(_ebss = __bss_end__);
+}

+ 2 - 81
demo/stm32f070xb.ld

@@ -4,84 +4,5 @@ MEMORY
     ROM  (rx): ORIGIN = 0x08000000, LENGTH =  128K
     RAM (rwx): ORIGIN = 0x20000000, LENGTH =  16K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 2 - 81
demo/stm32f103x6.ld

@@ -4,84 +4,5 @@ MEMORY
     ROM  (rx): ORIGIN = 0x08000000, LENGTH =  32K
     RAM (rwx): ORIGIN = 0x20000000, LENGTH =  10K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 2 - 81
demo/stm32f105xb.ld

@@ -4,84 +4,5 @@ MEMORY
     ROM  (rx): ORIGIN = 0x08000000, LENGTH =  128K
     RAM (rwx): ORIGIN = 0x20000000, LENGTH =  64K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 2 - 81
demo/stm32f303xe.ld

@@ -5,84 +5,5 @@ MEMORY
     RAM    (rwx): ORIGIN = 0x20000000, LENGTH = 64K
     CCMRAM (rwx): ORIGIN = 0x10000000, LENGTH = 16K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 1 - 82
demo/stm32f429xi.ld

@@ -10,86 +10,5 @@ MEMORY
     SRAM3 (rwx): ORIGIN = 0x20020000, LENGTH = 64K
     CMRAM (rwx): ORIGIN = 0x10000000, LENGTH = 64K
 }
-SECTIONS
-{
-	.text :
-	{
-		KEEP(*(.isr_vector))
-		*(.text*)
-		KEEP(*(.init))  KEEP(*(.fini))
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-		*crtbegin.o(.dtors)
-		*crtbegin?.o(.dtors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-		*(SORT(.dtors.*))
-		*(.dtors)
-		*(.rodata*)
-		KEEP(*(.eh_frame*))
-	} > ROM
-    .ARM.extab :
-    {
-    	*(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-	__exidx_start = .;
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > ROM
-	__exidx_end = .;
-	__etext = .;
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-		. = ALIGN(4);
-		__data_end__ = .;
-	} > RAM
-	.bss (NOLOAD) :
-	{
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		__bss_end__ = .;
-	} > RAM
-	.heap (NOLOAD) :
-	{
-		__end__ = .;
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-	.stack_dummy (NOLOAD) :
-	{
-		*(.stack)
-	} > RAM
-
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
 
-	PROVIDE(_estack = __stack);
-	PROVIDE(_sidata = __etext);
-	PROVIDE(_sdata = __data_start__);
-	PROVIDE(_edata = __data_end__);
-	PROVIDE(_sbss = __bss_start__);
-	PROVIDE(_ebss = __bss_end__);
-}
+INCLUDE sections.ld

+ 2 - 81
demo/stm32f446xc.ld

@@ -4,84 +4,5 @@ MEMORY
     ROM   (rx): ORIGIN = 0x08000000, LENGTH = 256K
     RAM  (rwx): ORIGIN = 0x20000000, LENGTH = 128K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 2 - 81
demo/stm32g431xb.ld

@@ -5,84 +5,5 @@ MEMORY
     RAM  (rwx): ORIGIN = 0x20000000, LENGTH = 22K
     SRAM (rwx): ORIGIN = 0x10000000, LENGTH = 10K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 4 - 83
demo/stm32l052x8.ld

@@ -1,87 +1,8 @@
 ENTRY(Reset_Handler)
 MEMORY
 {
-	ROM  (rx): ORIGIN = 0x08000000, LENGTH =  64K
-	RAM (rwx): ORIGIN = 0x20000000, LENGTH =  8K
-}
-SECTIONS
-{
-	.text :
-	{
-		KEEP(*(.isr_vector))
-		*(.text*)
-		KEEP(*(.init))  KEEP(*(.fini))
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-		*crtbegin.o(.dtors)
-		*crtbegin?.o(.dtors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-		*(SORT(.dtors.*))
-		*(.dtors)
-		*(.rodata*)
-		KEEP(*(.eh_frame*))
-	} > ROM
-    .ARM.extab :
-    {
-    	*(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-	__exidx_start = .;
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > ROM
-	__exidx_end = .;
-	__etext = .;
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-		. = ALIGN(4);
-		__data_end__ = .;
-	} > RAM
-	.bss (NOLOAD) :
-	{
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		__bss_end__ = .;
-	} > RAM
-	.heap (NOLOAD) :
-	{
-		__end__ = .;
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-	.stack_dummy (NOLOAD) :
-	{
-		*(.stack)
-	} > RAM
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-	PROVIDE(_estack = __stack);
-	PROVIDE(_sidata = __etext);
-	PROVIDE(_sdata = __data_start__);
-	PROVIDE(_edata = __data_end__);
-	PROVIDE(_sbss = __bss_start__);
-	PROVIDE(_ebss = __bss_end__);
+    ROM  (rx): ORIGIN = 0x08000000, LENGTH =  64K
+    RAM (rwx): ORIGIN = 0x20000000, LENGTH =  8K
 }
+
+INCLUDE sections.ld

+ 3 - 84
demo/stm32l100xc.ld

@@ -1,89 +1,8 @@
 ENTRY(Reset_Handler)
 MEMORY
 {
-	ROM  (rx): ORIGIN = 0x08000000, LENGTH =  192K
-	RAM (rwx): ORIGIN = 0x20000000, LENGTH =  20K
+    ROM  (rx): ORIGIN = 0x08000000, LENGTH =  192K
+    RAM (rwx): ORIGIN = 0x20000000, LENGTH =  20K
 }
-SECTIONS
-{
-	.text :
-	{
-		KEEP(*(.isr_vector))
-		*(.text*)
-		KEEP(*(.init))  KEEP(*(.fini))
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-		*crtbegin.o(.dtors)
-		*crtbegin?.o(.dtors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-		*(SORT(.dtors.*))
-		*(.dtors)
-		*(.rodata*)
-		KEEP(*(.eh_frame*))
-	} > ROM
-    .ARM.extab :
-    {
-    	*(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-	__exidx_start = .;
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > ROM
-	__exidx_end = .;
-	__etext = .;
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-		. = ALIGN(4);
-		__data_end__ = .;
-	} > RAM
-	.bss (NOLOAD) :
-	{
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		__bss_end__ = .;
-	} > RAM
-	.heap (NOLOAD) :
-	{
-		__end__ = .;
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-	.stack_dummy (NOLOAD) :
-	{
-		*(.stack)
-	} > RAM
-
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
 
-	PROVIDE(_estack = __stack);
-	PROVIDE(_sidata = __etext);
-	PROVIDE(_sdata = __data_start__);
-	PROVIDE(_edata = __data_end__);
-	PROVIDE(_sbss = __bss_start__);
-	PROVIDE(_ebss = __bss_end__);
-}
+INCLUDE sections.ld

+ 2 - 81
demo/stm32l433xc.ld

@@ -5,84 +5,5 @@ MEMORY
     RAM  (rwx): ORIGIN = 0x20000000, LENGTH = 48K
     SRAM (rwx): ORIGIN = 0x10000000, LENGTH = 16K
 }
-SECTIONS
-{
-    .text :
-    {
-        KEEP(*(.isr_vector))
-        *(.text*)
-        KEEP(*(.init))  KEEP(*(.fini))
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-        *(.rodata*)
-        KEEP(*(.eh_frame*))
-    } > ROM
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > ROM
-    __exidx_end = .;
-    __etext = .;
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-        . = ALIGN(4);
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-        . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM
-    .bss (NOLOAD) :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-    .heap (NOLOAD) :
-    {
-        __end__ = .;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-    .stack_dummy (NOLOAD) :
-    {
-        *(.stack)
-    } > RAM
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-    PROVIDE(_estack = __stack);
-    PROVIDE(_sidata = __etext);
-    PROVIDE(_sdata = __data_start__);
-    PROVIDE(_edata = __data_end__);
-    PROVIDE(_sbss = __bss_start__);
-    PROVIDE(_ebss = __bss_end__);
-}
+
+INCLUDE sections.ld

+ 6 - 87
demo/stm32l476xg.ld

@@ -1,92 +1,11 @@
 ENTRY(Reset_Handler)
 MEMORY
 {
-	ROM    (rx): ORIGIN = 0x08000000, LENGTH = 1024K
-	BANK0  (rx): ORIGIN = 0x08000000, LENGTH = 512K
-	BANK1  (rx): ORIGIN = 0x08080000, LENGTH = 512K
-	RAM   (rwx): ORIGIN = 0x20000000, LENGTH = 96K
-	RAM2  (rwx): ORIGIN = 0x10000000, LENGTH = 32K
+    ROM    (rx): ORIGIN = 0x08000000, LENGTH = 1024K
+    BANK0  (rx): ORIGIN = 0x08000000, LENGTH = 512K
+    BANK1  (rx): ORIGIN = 0x08080000, LENGTH = 512K
+    RAM   (rwx): ORIGIN = 0x20000000, LENGTH = 96K
+    RAM2  (rwx): ORIGIN = 0x10000000, LENGTH = 32K
 }
-SECTIONS
-{
-	.text :
-	{
-		KEEP(*(.isr_vector))
-		*(.text*)
-		KEEP(*(.init))  KEEP(*(.fini))
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-		*crtbegin.o(.dtors)
-		*crtbegin?.o(.dtors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
-		*(SORT(.dtors.*))
-		*(.dtors)
-		*(.rodata*)
-		KEEP(*(.eh_frame*))
-	} > ROM
-    .ARM.extab :
-    {
-    	*(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > ROM
-	__exidx_start = .;
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > ROM
-	__exidx_end = .;
-	__etext = .;
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-		. = ALIGN(4);
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-		. = ALIGN(4);
-		__data_end__ = .;
-	} > RAM
-	.bss (NOLOAD) :
-	{
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		__bss_end__ = .;
-	} > RAM
-	.heap (NOLOAD) :
-	{
-		__end__ = .;
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-	.stack_dummy (NOLOAD) :
-	{
-		*(.stack)
-	} > RAM
-
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
 
-	PROVIDE(_estack = __stack);
-	PROVIDE(_sidata = __etext);
-	PROVIDE(_sdata = __data_start__);
-	PROVIDE(_edata = __data_end__);
-	PROVIDE(_sbss = __bss_start__);
-	PROVIDE(_ebss = __bss_end__);
-}
+INCLUDE sections.ld