efe5f02e41
Having separate linker scripts for all the boards is a bad idea. Most boards really only need to specify MEMORY and the appropriate REGION_ALIASES() so that support/ld/common.inc can do its work. Not having infrastructure for this leads to duplication -- viz. the Maple Mini linker scripts are identical to the Maple's, and the olimex_stm32_h103 linker directory is just a symlink to Maple's. Clearly, the current structure is wrong. To fix it, instead of having per-board subdirectories of support/ld/, add per-MEMORY subdirectories of (new) support/ld/stm32/mem/. The per-board .mk files under support/mk/board-includes/ now reference these directly, and target-config.mk and the Makefile handle this appropriately. We move some other stuff around in target-config.mk to make this all more convenient, and even allow more overriding of the libmaple defaults on a per-board basis. Custom board hacks will be easier now. Unfortunately, lots of duplication under support/ld/stm32/mem/ is necessary, as the LENGTH attribute in a MEMORY region specification doesn't support arithmetic expressions, and ld doesn't seem to have any way to specify MEMORY at the command line (why?!). If we find a better way than this, we should do it. If a board (e.g. Maple Native) _does_ really need special memory-related configuration, you can always put a per-board subdirectory of support/ld/stm32/mem. We do this here to configure the heap. Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
26 lines
820 B
Plaintext
26 lines
820 B
Plaintext
/*
|
|
* libmaple linker script for RAM builds.
|
|
*
|
|
* A Flash build puts .text, .rodata, and .data/.bss/heap (of course)
|
|
* in SRAM, but offsets the sections by enough space to store the
|
|
* Maple bootloader, which uses low memory.
|
|
*/
|
|
|
|
/*
|
|
* This pulls in the appropriate MEMORY declaration from the right
|
|
* subdirectory of stm32/mem/ (the environment must call ld with the
|
|
* right include directory flags to make this happen). Boards can also
|
|
* use this file to use any of libmaple's memory-related hooks (like
|
|
* where the heap should live).
|
|
*/
|
|
INCLUDE mem-ram.inc
|
|
|
|
/* Provide memory region aliases for common.inc */
|
|
REGION_ALIAS("REGION_TEXT", ram);
|
|
REGION_ALIAS("REGION_DATA", ram);
|
|
REGION_ALIAS("REGION_BSS", ram);
|
|
REGION_ALIAS("REGION_RODATA", ram);
|
|
|
|
/* Let common.inc handle the real work. */
|
|
INCLUDE common.inc
|