7aec06ca9a
This patch allows a particular board to independently specify the linker scripts for 1) the MCU memory layout; 2) how the different firmware sections are arranged in memory. Right now all boards follow the same layout with two separate firmware section, one for the ISR and one for the text and data. This leaves room for storage (filesystem data) to live between the firmware sections. The idea with this patch is to accommodate boards that don't have internal flash storage and only need to have one continuous firmware section. Thus the common.ld script is renamed to common_ifs.ld to make explicit that it is used for cases where the board has internal flash storage.
33 lines
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
/*
|
|
GNU linker script for STM32L476XE
|
|
*/
|
|
|
|
/* Specify the memory areas */
|
|
MEMORY
|
|
{
|
|
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
|
|
FLASH_ISR (rx) : ORIGIN = 0x08000000, LENGTH = 16K /* sectors 0-7 */
|
|
FLASH_TEXT (rx) : ORIGIN = 0x08004000, LENGTH = 368K /* sectors 8-191 */
|
|
FLASH_FS (r) : ORIGIN = 0x08060000, LENGTH = 128K /* sectors 192-255 */
|
|
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K
|
|
SRAM2 (xrw) : ORIGIN = 0x10000000, LENGTH = 32K
|
|
}
|
|
|
|
/* produce a link error if there is not this amount of RAM for these sections */
|
|
_minimum_stack_size = 2K;
|
|
_minimum_heap_size = 16K;
|
|
|
|
/* Define the 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);
|
|
|
|
/* RAM extents for the garbage collector */
|
|
_ram_start = ORIGIN(RAM);
|
|
_ram_end = ORIGIN(RAM) + LENGTH(RAM);
|
|
_heap_start = _ebss; /* heap starts just after statically allocated memory */
|
|
_heap_end = 0x20014000; /* tunable */
|
|
|
|
_flash_fs_start = ORIGIN(FLASH_FS);
|
|
_flash_fs_end = ORIGIN(FLASH_FS) + LENGTH(FLASH_FS);
|