2018-05-24 14:15:20 +01:00
|
|
|
/*
|
2021-04-28 07:26:20 +01:00
|
|
|
Linker script fragment for mboot on an STM32xxx MCU.
|
|
|
|
This needs the following MEMORY sections to be defined: FLASH_BL, RAM.
|
2018-05-24 14:15:20 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
/* produce a link error if there is not this amount of RAM for these sections */
|
2021-01-14 16:00:40 +00:00
|
|
|
_minimum_stack_size = 8K;
|
2018-05-24 14:15:20 +01:00
|
|
|
|
|
|
|
/* Define tho top end of the stack. The stack is full descending so begins just
|
|
|
|
above last byte of RAM. Note that EABI requires the stack to be 8-byte
|
|
|
|
aligned for a call. */
|
|
|
|
_estack = ORIGIN(RAM) + LENGTH(RAM);
|
|
|
|
|
|
|
|
ENTRY(Reset_Handler)
|
|
|
|
|
|
|
|
SECTIONS
|
|
|
|
{
|
|
|
|
/* The startup code goes first into FLASH */
|
|
|
|
.isr_vector :
|
|
|
|
{
|
|
|
|
. = ALIGN(4);
|
|
|
|
KEEP(*(.isr_vector)) /* Startup code */
|
|
|
|
. = ALIGN(4);
|
|
|
|
} >FLASH_BL
|
|
|
|
|
|
|
|
/* The program code and other data goes into FLASH */
|
|
|
|
.text :
|
|
|
|
{
|
|
|
|
. = ALIGN(4);
|
|
|
|
*(.text*)
|
|
|
|
*(.rodata*)
|
|
|
|
. = ALIGN(4);
|
|
|
|
_etext = .;
|
|
|
|
} >FLASH_BL
|
|
|
|
|
|
|
|
/* used by the startup to initialize data */
|
|
|
|
_sidata = LOADADDR(.data);
|
|
|
|
|
|
|
|
/* Initialized data section */
|
|
|
|
.data :
|
|
|
|
{
|
|
|
|
. = ALIGN(4);
|
|
|
|
_sdata = .;
|
|
|
|
*(.data*)
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
_edata = .;
|
|
|
|
} >RAM AT> FLASH_BL
|
|
|
|
|
2019-02-15 03:59:24 +00:00
|
|
|
/* Zeroed-out data section */
|
2018-05-24 14:15:20 +01:00
|
|
|
.bss :
|
|
|
|
{
|
|
|
|
. = ALIGN(4);
|
|
|
|
_sbss = .;
|
|
|
|
*(.bss*)
|
|
|
|
*(COMMON)
|
|
|
|
. = ALIGN(4);
|
|
|
|
_ebss = .;
|
|
|
|
} >RAM
|
|
|
|
|
2019-02-15 03:59:24 +00:00
|
|
|
/* Uninitialized data section */
|
|
|
|
.nozero_bss (NOLOAD) :
|
|
|
|
{
|
|
|
|
. = ALIGN(4);
|
|
|
|
*(.nozero_bss*)
|
|
|
|
. = ALIGN(4);
|
|
|
|
} >RAM
|
|
|
|
|
2018-05-24 14:15:20 +01:00
|
|
|
/* this just checks there is enough RAM for the stack */
|
|
|
|
.stack :
|
|
|
|
{
|
|
|
|
. = ALIGN(4);
|
|
|
|
. = . + _minimum_stack_size;
|
|
|
|
. = ALIGN(4);
|
|
|
|
} >RAM
|
|
|
|
|
|
|
|
.ARM.attributes 0 : { *(.ARM.attributes) }
|
|
|
|
}
|