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.
This commit is contained in:
Dave Hylands 2014-08-16 07:45:34 -07:00
parent 8f81b5cb4b
commit 3688414d9d
2 changed files with 15 additions and 4 deletions

View File

@ -200,6 +200,13 @@ OBJ += $(addprefix $(BUILD)/, $(SRC_FATFS:.c=.o))
OBJ += $(addprefix $(BUILD)/, $(SRC_CC3K:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(SRC_CC3K:.c=.o))
OBJ += $(BUILD)/pins_$(BOARD).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 all: $(BUILD)/firmware.dfu $(BUILD)/firmware.hex
.PHONY: deploy .PHONY: deploy

View File

@ -34,6 +34,14 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */ 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); . = ALIGN(4);
} >FLASH_ISR } >FLASH_ISR
@ -41,9 +49,7 @@ SECTIONS
.text : .text :
{ {
. = ALIGN(4); . = ALIGN(4);
*(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */ *(.text*) /* .text* sections (code) */
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
/* *(.glue_7) */ /* glue arm to thumb code */ /* *(.glue_7) */ /* glue arm to thumb code */
/* *(.glue_7t) */ /* glue thumb to arm code */ /* *(.glue_7t) */ /* glue thumb to arm code */
@ -78,7 +84,6 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
_sdata = .; /* create a global symbol at data start; used by startup code in order to initialise the .data section in RAM */ _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 */ _ram_start = .; /* create a global symbol at ram start for garbage collector */
*(.data) /* .data sections */
*(.data*) /* .data* sections */ *(.data*) /* .data* sections */
. = ALIGN(4); . = ALIGN(4);
@ -90,7 +95,6 @@ SECTIONS
{ {
. = ALIGN(4); . = ALIGN(4);
_sbss = .; /* define a global symbol at bss start; used by startup code */ _sbss = .; /* define a global symbol at bss start; used by startup code */
*(.bss)
*(.bss*) *(.bss*)
*(COMMON) *(COMMON)