1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/cpu/stm32/ldscripts/stm32.ld
Gunar Schorcht 516c74b81e cpu/stm32: add FMC RAM as heap
If the board defines `FMC_RAM_ADDR` and `FMC_RAM_LEN`, the FMC RAM is used a additional heap if module `periph_fmc` is enabled.

For that purpose
- the linker symbols `_fmc_ram_addr` and `_fmc_ram_len` are set,
- a memory region `fcmram` is added in linker script for the FMC RAM based on these `_fcm_ram_*` linker symbols
- a section for the FMC RAM is defined in this memory region that defines the heap by setting `_sheap3` and `_eheap3` and
- the number of heaps is set to 4 since to use `_sheap3` and `_eheap3` even though `_sheap1` and `_eheap1` (the backup RAM) and `_sheap2` and `_eheap2` (SRAM4) are not present.
2023-07-26 09:02:10 +02:00

52 lines
1.2 KiB
Plaintext

/*
* Copyright (C) 2017 Inria
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @addtogroup cpu_cortexm_common
* @{
*
* @file
* @brief Memory definitions for the Cortex-M family
*
* @author Francisco Acosta <francisco.acosta@inria.fr>
*
* @}
*/
ccmram_length = DEFINED( _ccmram_len ) ? _ccmram_len : 0x0 ;
sram4_addr = DEFINED( _sram4_length ) ? 0x28000000 : 0x0 ;
sram4_length = DEFINED( _sram4_length ) ? _sram4_length : 0x0 ;
fmc_ram_addr = DEFINED( _fmc_ram_addr ) ? _fmc_ram_addr : 0x0 ;
fmc_ram_len = DEFINED( _fmc_ram_len ) ? _fmc_ram_len : 0x0 ;
MEMORY
{
ccmram : ORIGIN = 0x10000000, LENGTH = ccmram_length
sram4 : ORIGIN = sram4_addr, LENGTH = sram4_length
fmcram : ORIGIN = fmc_ram_addr, LENGTH = fmc_ram_len
}
SECTIONS
{
.heap2 ALIGN(4) (NOLOAD) :
{
_sheap2 = ORIGIN(sram4);
_eheap2 = ORIGIN(sram4) + LENGTH(sram4);
} > sram4
.heap4 ALIGN(4) (NOLOAD) :
{
_sheap3 = ORIGIN(fmcram);
_eheap3 = ORIGIN(fmcram) + LENGTH(fmcram);
} > fmcram
}
INCLUDE cortexm.ld