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