diff --git a/Ld/Link.ld b/Ld/Link.ld index beedf6a..1190e3b 100644 --- a/Ld/Link.ld +++ b/Ld/Link.ld @@ -1,9 +1,13 @@ ENTRY( _start ) +__stack_size = 512; + +PROVIDE( _stack_size = __stack_size ); + MEMORY { FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 448K - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 26K } SECTIONS @@ -22,24 +26,6 @@ SECTIONS *(.vector); } >FLASH AT>FLASH */ - .highcode_initlalign : - { - . = ALIGN(4); - PROVIDE(_highcode_init_lma = .); - } >FLASH AT>FLASH - - .highcode_init : - { - PROVIDE(_highcode_init_vma_start = .); - . = ALIGN(1024); - *(.vector); - KEEP(*(SORT_NONE(.vector_handler))) - *(.highcode_init); - *(.highcode_init.*); - . = ALIGN(4); - PROVIDE(_highcode_init_vma_end = .); - } >RAM AT>FLASH - .highcodelalign : { . = ALIGN(4); @@ -50,10 +36,10 @@ SECTIONS { . = ALIGN(4); PROVIDE(_highcode_vma_start = .); + *(.vector); + KEEP(*(SORT_NONE(.vector_handler))) *(.highcode); *(.highcode.*); - *(.highcode_lp); - *(.highcode_lp.*); . = ALIGN(4); PROVIDE(_highcode_vma_end = .); } >RAM AT>FLASH @@ -139,6 +125,11 @@ SECTIONS KEEP (*(.dtors)) } >FLASH AT>FLASH + .dalign : + { + . = ORIGIN(RAM) + SIZEOF(.highcode); + } >RAM AT>FLASH + .dlalign : { . = ALIGN(4); @@ -182,11 +173,14 @@ SECTIONS PROVIDE( _end = _ebss); PROVIDE( end = . ); - .stack ORIGIN(RAM)+LENGTH(RAM) : - { - . = ALIGN(4); - PROVIDE(_eusrstack = . ); - } >RAM + .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size : + { + PROVIDE( _heap_end = . ); + . = ALIGN(4); + PROVIDE(_susrstack = . ); + . = . + __stack_size; + PROVIDE( _eusrstack = .); + } >RAM }