Skip to content

Commit b4dcecb

Browse files
committed
Add build option for UF2 flash offset
1 parent d8016bd commit b4dcecb

File tree

7 files changed

+41
-31
lines changed

7 files changed

+41
-31
lines changed

ports/stm32f4/Makefile

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626

2727
# Select the board to build for.
2828
ifeq ($(BOARD),)
29-
$(error You must provide a BOARD parameter)
29+
$(error You must provide a BOARD parameter)
3030
else
31-
ifeq ($(wildcard boards/$(BOARD)/.),)
32-
$(error Invalid BOARD specified)
33-
endif
31+
ifeq ($(wildcard boards/$(BOARD)/.),)
32+
$(error Invalid BOARD specified)
33+
endif
3434
endif
3535

3636
# If the build directory is not given, make it reflect the board name.
@@ -80,19 +80,16 @@ INC += -I../../supervisor/shared/usb
8080

8181
#Debugging/Optimization
8282
ifeq ($(DEBUG), 1)
83-
CFLAGS += -ggdb
84-
# You may want to enable these flags to make setting breakpoints easier.
85-
CFLAGS += -fno-inline -fno-ipa-sra
83+
CFLAGS += -ggdb
84+
# You may want to enable these flags to make setting breakpoints easier.
85+
CFLAGS += -fno-inline -fno-ipa-sra
8686
else
87-
CFLAGS += -Os -DNDEBUG
88-
CFLAGS += -ggdb
89-
# TODO: Test with -flto
90-
### CFLAGS += -flto
87+
CFLAGS += -Os -DNDEBUG
88+
CFLAGS += -ggdb
89+
# TODO: Test with -flto
90+
### CFLAGS += -flto
9191
endif
9292

93-
ifndef BOOTLOADER_OFFSET
94-
BOOTLOADER_OFFSET := 0x8000000
95-
endif
9693

9794
C_DEFS = -DMCU_PACKAGE=$(MCU_PACKAGE) -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -D$(CMSIS_MCU)
9895

@@ -115,6 +112,22 @@ CFLAGS += \
115112
# TODO: check this
116113
CFLAGS += -D__START=main
117114

115+
#need both command and valid file to use uf2 bootloader
116+
ifndef LD_FILE
117+
ifneq ($(and $(UF2_BOOTLOADER),$(LD_BOOT)),)
118+
LD_FILE = $(LD_BOOT)
119+
BOOTLOADER_OFFSET = $(UF2_OFFSET)
120+
CFLAGS += -DUF2_BOOTLOADER_ENABLED
121+
else
122+
LD_FILE = $(LD_FS)
123+
endif
124+
endif
125+
126+
# Add bootloader specific items
127+
ifndef BOOTLOADER_OFFSET
128+
BOOTLOADER_OFFSET := 0x8000000
129+
endif
130+
118131
LDFLAGS = $(CFLAGS) -fshort-enums -Wl,-nostdlib -Wl,-T,$(LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
119132
LIBS := -lgcc -lc
120133

@@ -210,12 +223,12 @@ SRC_S = \
210223
boards/startup_$(MCU_SUB_VARIANT).s
211224

212225
SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \
213-
$(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \
214-
$(addprefix common-hal/, $(SRC_COMMON_HAL))
226+
$(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \
227+
$(addprefix common-hal/, $(SRC_COMMON_HAL))
215228

216229
SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \
217-
$(addprefix shared-module/, $(SRC_SHARED_MODULE)) \
218-
$(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL))
230+
$(addprefix shared-module/, $(SRC_SHARED_MODULE)) \
231+
$(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL))
219232

220233

221234
ifneq ($(FROZEN_MPY_DIR),)

ports/stm32f4/boards/feather_stm32f405_express/mpconfigboard.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
#define SPI_FLASH_CS_PIN (&pin_PA15)
4242

4343
// Bootloader only
44-
#define BOARD_VTOR_DEFER //Leave VTOR relocation to bootloader
44+
#ifdef UF2_BOOTLOADER_ENABLED
45+
#define BOARD_VTOR_DEFER //Leave VTOR relocation to bootloader
46+
#endif
4547

4648
#define DEFAULT_I2C_BUS_SCL (&pin_PB06)
4749
#define DEFAULT_I2C_BUS_SDA (&pin_PB07)

ports/stm32f4/boards/feather_stm32f405_express/mpconfigboard.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
99
EXTERNAL_FLASH_DEVICES = GD25Q16C
1010
LONGINT_IMPL = MPZ
1111

12-
BOOTLOADER_OFFSET = 0x8010000
13-
1412
MCU_SERIES = m4
1513
MCU_VARIANT = stm32f4
1614
MCU_SUB_VARIANT = stm32f405xx
1715
MCU_PACKAGE = 64
1816
CMSIS_MCU = STM32F405xx
19-
LD_FILE = boards/STM32F405_boot.ld # use for bootloader (external fs only)
20-
# LD_FILE = boards/STM32F405_fs.ld # use for internal filesystem
17+
18+
LD_FS = boards/STM32F405_fs.ld # Default to internal FS
19+
LD_BOOT = boards/STM32F405_boot.ld # UF2 boot option
20+
UF2_OFFSET = 0x8010000

ports/stm32f4/boards/pyboard_v11/mpconfigboard.mk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,4 @@ MCU_SUB_VARIANT = stm32f405xx
1313
MCU_PACKAGE = 64
1414
CMSIS_MCU = STM32F405xx
1515
LD_FILE = boards/STM32F405.ld
16-
TEXT0_ADDR = 0x08000000
17-
TEXT1_ADDR = 0x08010000
16+

ports/stm32f4/boards/stm32f411ce_blackpill/mpconfigboard.mk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,4 @@ MCU_SUB_VARIANT = stm32f411xe
1818
MCU_PACKAGE = 48
1919
CMSIS_MCU = STM32F411xE
2020
LD_FILE = boards/STM32F411VETx_FLASH.ld
21-
TEXT0_ADDR = 0x08000000
22-
TEXT1_ADDR = 0x08020000
21+

ports/stm32f4/boards/stm32f411ve_discovery/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,3 @@ MCU_SUB_VARIANT = stm32f411xe
1313
MCU_PACKAGE = 100
1414
CMSIS_MCU = STM32F411xE
1515
LD_FILE = boards/STM32F411VETx_FLASH.ld
16-
TEXT0_ADDR = 0x08000000
17-
TEXT1_ADDR = 0x08020000

ports/stm32f4/boards/stm32f412zg_discovery/mpconfigboard.mk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@ MCU_SUB_VARIANT = stm32f412zx
1818
MCU_PACKAGE = 144
1919
CMSIS_MCU = STM32F412Zx
2020
LD_FILE = boards/STM32F412ZGTx_FLASH.ld
21-
TEXT0_ADDR = 0x08000000
22-
TEXT1_ADDR = 0x08020000
21+
2322

0 commit comments

Comments
 (0)