aboutsummaryrefslogtreecommitdiff
path: root/stmhal
diff options
context:
space:
mode:
authorDave Hylands2014-08-16 07:45:34 -0700
committerDave Hylands2014-08-16 08:00:12 -0700
commit3688414d9d53e6a1d42d3b60e45d808cd90f04f2 (patch)
treeccce35b6f93c450e501475afc940922743664ff7 /stmhal
parent8f81b5cb4bebf6aeaecf3f19a92be288f633c542 (diff)
Put some code into the first 16K of flash
This basically shrinks the remaining size of flash in the portion that goes after the internal flash drive.
Diffstat (limited to 'stmhal')
-rw-r--r--stmhal/Makefile7
-rw-r--r--stmhal/stm32f405.ld12
2 files changed, 15 insertions, 4 deletions
diff --git a/stmhal/Makefile b/stmhal/Makefile
index 116aeb114..85f4ce2e3 100644
--- a/stmhal/Makefile
+++ b/stmhal/Makefile
@@ -200,6 +200,13 @@ OBJ += $(addprefix $(BUILD)/, $(SRC_FATFS:.c=.o))
OBJ += $(addprefix $(BUILD)/, $(SRC_CC3K:.c=.o))
OBJ += $(BUILD)/pins_$(BOARD).o
+# We put ff.o and stm32f4xx_hal_sd.o into the first 16K section with the ISRs.
+# If we compile these using -O0 then it won't fit. So if you really want these
+# to be compiled with -O0, then edit stm32f405.ld (in the .isr_vector section)
+# and comment out the following 2 lines.
+$(BUILD)/$(FATFS_DIR)/src/ff.o: COPT += -Os
+$(BUILD)/$(HAL_DIR)/src/stm32f4xx_hal_sd.o: COPT += -Os
+
all: $(BUILD)/firmware.dfu $(BUILD)/firmware.hex
.PHONY: deploy
diff --git a/stmhal/stm32f405.ld b/stmhal/stm32f405.ld
index 64c46e4c2..9d9d4d508 100644
--- a/stmhal/stm32f405.ld
+++ b/stmhal/stm32f405.ld
@@ -34,6 +34,14 @@ SECTIONS
. = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */
+ /* This first flash block is 16K annd the isr vectors only take up
+ about 400 bytes. So we pull in a couple of object files to pad it
+ out. */
+
+ . = ALIGN(4);
+ */ff.o(.text*)
+ */stm32f4xx_hal_sd.o(.text*)
+
. = ALIGN(4);
} >FLASH_ISR
@@ -41,9 +49,7 @@ SECTIONS
.text :
{
. = ALIGN(4);
- *(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */
- *(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
/* *(.glue_7) */ /* glue arm to thumb code */
/* *(.glue_7t) */ /* glue thumb to arm code */
@@ -78,7 +84,6 @@ SECTIONS
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start; used by startup code in order to initialise the .data section in RAM */
_ram_start = .; /* create a global symbol at ram start for garbage collector */
- *(.data) /* .data sections */
*(.data*) /* .data* sections */
. = ALIGN(4);
@@ -90,7 +95,6 @@ SECTIONS
{
. = ALIGN(4);
_sbss = .; /* define a global symbol at bss start; used by startup code */
- *(.bss)
*(.bss*)
*(COMMON)