summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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 116aeb114a..85f4ce2e33 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 64c46e4c23..9d9d4d5080 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)