aboutsummaryrefslogtreecommitdiffstats
path: root/support/ld/maple_native
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2012-06-06 18:06:48 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2012-06-07 03:44:31 -0400
commit5838b447f675444b154bacd205ebf9f47d003b2f (patch)
tree004d9d4871e5d70f248646d65450952b2fa79aff /support/ld/maple_native
parent42570013c5266449f7e8512a77fe66b8e852294d (diff)
downloadlibrambutan-5838b447f675444b154bacd205ebf9f47d003b2f.tar.gz
librambutan-5838b447f675444b154bacd205ebf9f47d003b2f.zip
Rework linker scripts.
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>
Diffstat (limited to 'support/ld/maple_native')
-rw-r--r--support/ld/maple_native/flash.ld22
-rw-r--r--support/ld/maple_native/jtag.ld22
-rw-r--r--support/ld/maple_native/ram.ld20
3 files changed, 0 insertions, 64 deletions
diff --git a/support/ld/maple_native/flash.ld b/support/ld/maple_native/flash.ld
deleted file mode 100644
index aac5325..0000000
--- a/support/ld/maple_native/flash.ld
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Maple Native (STM32F103ZET6, high density) linker script for Flash builds.
- */
-
-MEMORY
-{
- ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K
- rom (rx) : ORIGIN = 0x08005000, LENGTH = 492K
-}
-
-REGION_ALIAS("REGION_TEXT", rom);
-REGION_ALIAS("REGION_DATA", ram);
-REGION_ALIAS("REGION_BSS", ram);
-REGION_ALIAS("REGION_RODATA", rom);
-
-/* Specify heap boundary addresses on the external SRAM chip */
-_lm_heap_start = 0x60000000;
-_lm_heap_end = 0x60100000;
-
-_FLASH_BUILD = 1;
-INCLUDE common.inc
-
diff --git a/support/ld/maple_native/jtag.ld b/support/ld/maple_native/jtag.ld
deleted file mode 100644
index 412348e..0000000
--- a/support/ld/maple_native/jtag.ld
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Maple Native (STM32F103ZET6, high density) linker script for JTAG
- * (bare metal, no bootloader) builds.
- */
-
-MEMORY
-{
- ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
- rom (rx) : ORIGIN = 0x08000000, LENGTH = 512K
-}
-
-REGION_ALIAS("REGION_TEXT", rom);
-REGION_ALIAS("REGION_DATA", ram);
-REGION_ALIAS("REGION_BSS", ram);
-REGION_ALIAS("REGION_RODATA", rom);
-
-/* Specify heap boundary addresses on the external SRAM chip */
-_lm_heap_start = 0x60000000;
-_lm_heap_end = 0x60100000;
-
-_FLASH_BUILD = 1;
-INCLUDE common.inc
diff --git a/support/ld/maple_native/ram.ld b/support/ld/maple_native/ram.ld
deleted file mode 100644
index eeec761..0000000
--- a/support/ld/maple_native/ram.ld
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Maple Native (STM32F103ZET6, high density) linker script for RAM builds.
- */
-
-MEMORY
-{
- ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K
- rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K
-}
-
-REGION_ALIAS("REGION_TEXT", ram);
-REGION_ALIAS("REGION_DATA", ram);
-REGION_ALIAS("REGION_BSS", ram);
-REGION_ALIAS("REGION_RODATA", ram);
-
-/* Specify heap boundary addresses on the external SRAM chip */
-_lm_heap_start = 0x60000000;
-_lm_heap_end = 0x60100000;
-
-INCLUDE common.inc