link data in flash to save on copy
This commit is contained in:
parent
aeb22a409c
commit
36a464f802
@ -52,10 +52,10 @@ void Reset_Handler( void )
|
|||||||
__asm volatile ( "mov sp, r0" );
|
__asm volatile ( "mov sp, r0" );
|
||||||
|
|
||||||
/* copy .data section from flash to RAM */
|
/* copy .data section from flash to RAM */
|
||||||
for( uint32_t * src = &_sidata, * dest = &_sdata; dest < &_edata; )
|
// for( uint32_t * src = &_sidata, * dest = &_sdata; dest < &_edata; )
|
||||||
{
|
// {
|
||||||
*dest++ = *src++;
|
// *dest++ = *src++;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* zero out .bss section */
|
/* zero out .bss section */
|
||||||
for( uint32_t * dest = &_sbss; dest < &_ebss; )
|
for( uint32_t * dest = &_sbss; dest < &_ebss; )
|
||||||
|
@ -26,15 +26,14 @@
|
|||||||
|
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (xr) : ORIGIN = 0x00000000, LENGTH = 4M /* to 0x00003FFF = 0x007FFFFF*/
|
FLASH (xrw) : ORIGIN = 0x00000000, LENGTH = 4M /* to 0x00003FFF = 0x007FFFFF*/
|
||||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 4M /* to 0x21FFFFFF = 0xFFFFFF */
|
|
||||||
}
|
}
|
||||||
ENTRY(Reset_Handler)
|
ENTRY(Reset_Handler)
|
||||||
|
|
||||||
_Min_Heap_Size = 0x300000 ; /* Required amount of heap. */
|
_Min_Heap_Size = 0x300000 ; /* Required amount of heap. */
|
||||||
_Min_Stack_Size = 0x4000 ; /* Required amount of stack. */
|
_Min_Stack_Size = 0x4000 ; /* Required amount of stack. */
|
||||||
M_VECTOR_RAM_SIZE = (16 + 48) * 4;
|
M_VECTOR_RAM_SIZE = (16 + 48) * 4;
|
||||||
_estack = ORIGIN(RAM) + LENGTH(RAM);
|
_estack = ORIGIN(FLASH) + LENGTH(FLASH);
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
@ -85,7 +84,7 @@ SECTIONS
|
|||||||
. += M_VECTOR_RAM_SIZE;
|
. += M_VECTOR_RAM_SIZE;
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__interrupts_ram_end = .;
|
__interrupts_ram_end = .;
|
||||||
} > RAM
|
} > FLASH
|
||||||
|
|
||||||
_sidata = LOADADDR(.data);
|
_sidata = LOADADDR(.data);
|
||||||
|
|
||||||
@ -96,7 +95,7 @@ SECTIONS
|
|||||||
*(.data*)
|
*(.data*)
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_edata = .;
|
_edata = .;
|
||||||
} > RAM AT > FLASH
|
} > FLASH
|
||||||
|
|
||||||
.uninitialized (NOLOAD):
|
.uninitialized (NOLOAD):
|
||||||
{
|
{
|
||||||
@ -106,7 +105,7 @@ SECTIONS
|
|||||||
KEEP(*(.keep.uninitialized))
|
KEEP(*(.keep.uninitialized))
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
__uninitialized_end = .;
|
__uninitialized_end = .;
|
||||||
} > RAM
|
} > FLASH
|
||||||
|
|
||||||
.bss :
|
.bss :
|
||||||
{
|
{
|
||||||
@ -118,7 +117,7 @@ SECTIONS
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_ebss = .;
|
_ebss = .;
|
||||||
__bss_end__ = _ebss;
|
__bss_end__ = _ebss;
|
||||||
} >RAM
|
} >FLASH
|
||||||
|
|
||||||
.heap :
|
.heap :
|
||||||
{
|
{
|
||||||
@ -130,11 +129,11 @@ SECTIONS
|
|||||||
_heap_top = .;
|
_heap_top = .;
|
||||||
. = . + _Min_Stack_Size;
|
. = . + _Min_Stack_Size;
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
} >RAM
|
} >FLASH
|
||||||
|
|
||||||
/* Set stack top to end of RAM, and stack limit move down by
|
/* Set stack top to end of RAM, and stack limit move down by
|
||||||
* size of stack_dummy section */
|
* size of stack_dummy section */
|
||||||
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
|
__StackTop = ORIGIN(FLASH) + LENGTH(FLASH);
|
||||||
__StackLimit = __StackTop - _Min_Stack_Size;
|
__StackLimit = __StackTop - _Min_Stack_Size;
|
||||||
PROVIDE(__stack = __StackTop);
|
PROVIDE(__stack = __StackTop);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user