Skip to content

Commit

Permalink
Remove bootloader logic from mcu_selection.mk (qmk#20150)
Browse files Browse the repository at this point in the history
* Remove bootloader logic from mcu_selection.mk

* Move MCU/BOOTLOADER to info.json
  • Loading branch information
zvecr authored and coquizen committed Jun 22, 2023
1 parent ee8ad82 commit 8b1cd3c
Show file tree
Hide file tree
Showing 13 changed files with 109 additions and 58 deletions.
2 changes: 2 additions & 0 deletions keyboards/doio/kb16/rev2/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
{"pin_a": "A3", "pin_b": "A4"}
]
},
"processor": "STM32F103",
"bootloader": "stm32duino",
"layouts": {
"LAYOUT": {
"layout": [
Expand Down
14 changes: 2 additions & 12 deletions keyboards/doio/kb16/rev2/rules.mk
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
SRC += ./lib/layer_status/layer_status.c
SRC += ./lib/logo.c

# MCU name
MCU = STM32F103

# Bootloader selection
# Cannot use `BOOTLOADER = stm32duino` due to the need to override
# `MCU_LDSCRIPT`, therefore all parameters need to be specified here manually.
OPT_DEFS += -DBOOTLOADER_STM32DUINO
MCU_LDSCRIPT = STM32F103xB_stm32duino_bootloader
BOARD = STM32_F103_STM32DUINO
BOOTLOADER_TYPE = stm32duino
DFU_ARGS = -d 1EAF:0003 -a 2 -R
DFU_SUFFIX_ARGS = -v 1EAF -p 0003
# Configure for 128K flash
MCU_LDSCRIPT = STM32F103xB

# Build Options
# change yes to no to disable
Expand Down
2 changes: 2 additions & 0 deletions keyboards/phage_studio/pila87/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
"pid": "0x5887",
"device_version": "0.0.1"
},
"processor": "STM32F103",
"bootloader": "stm32duino",
"matrix_pins": {
"cols": ["B5", "B4", "B6", "C0", "C1", "C2", "C3", "B7", "B3", "D2", "C12", "C11", "C10", "A15", "C15", "C13", "A3"],
"rows": ["A1", "A2", "A10", "A9", "A8", "C9"]
Expand Down
14 changes: 2 additions & 12 deletions keyboards/phage_studio/pila87/rules.mk
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
# MCU name
MCU = STM32F103

# Bootloader selection
# Cannot use `BOOTLOADER = stm32duino` due to the need to override
# `MCU_LDSCRIPT`, therefore all parameters need to be specified here manually.
OPT_DEFS += -DBOOTLOADER_STM32DUINO
MCU_LDSCRIPT = STM32F103xB_stm32duino_bootloader
BOARD = STM32_F103_STM32DUINO
BOOTLOADER_TYPE = stm32duino
DFU_ARGS = -d 1EAF:0003 -a 2 -R
DFU_SUFFIX_ARGS = -v 1EAF -p 0003
# Configure for 128K flash
MCU_LDSCRIPT = STM32F103xB

# Build Options
# change yes to no to disable
Expand Down
2 changes: 2 additions & 0 deletions keyboards/rocketboard_16/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
"pid": "0xFF16",
"device_version": "0.0.1"
},
"processor": "STM32F103",
"bootloader": "stm32duino",
"matrix_pins": {
"cols": ["B8", "B9", "B10", "B11"],
"rows": ["A9", "B13", "B14", "B15", "B3"]
Expand Down
15 changes: 2 additions & 13 deletions keyboards/rocketboard_16/rules.mk
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
# MCU name
MCU = STM32F103

# Bootloader selection
# BOOTLOADER = stm32duino

# Custom loader configuration
MCU_LDSCRIPT = STM32F103xB_stm32duino_bootloader
OPT_DEFS += -DBOOTLOADER_STM32DUINO
BOARD = STM32_F103_STM32DUINO
BOOTLOADER_TYPE = stm32duino
DFU_ARGS = -d 1EAF:0003 -a 2 -R
DFU_SUFFIX_ARGS = -v 1EAF -p 0003
# Configure for 128K flash
MCU_LDSCRIPT = STM32F103xB

# Extra include
SRC += keycode_lookup.c
Expand Down
88 changes: 88 additions & 0 deletions platforms/chibios/boards/common/ld/STM32F103x8_uf2boot.ld
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/*
* ST32F103x8 memory setup.
*/
MEMORY
{
flash0 (rx) : org = 0x08000000 + 16K, len = 64k - 16K
flash1 (rx) : org = 0x00000000, len = 0
flash2 (rx) : org = 0x00000000, len = 0
flash3 (rx) : org = 0x00000000, len = 0
flash4 (rx) : org = 0x00000000, len = 0
flash5 (rx) : org = 0x00000000, len = 0
flash6 (rx) : org = 0x00000000, len = 0
flash7 (rx) : org = 0x00000000, len = 0
ram0 (wx) : org = 0x20000000, len = 20k
ram1 (wx) : org = 0x00000000, len = 0
ram2 (wx) : org = 0x00000000, len = 0
ram3 (wx) : org = 0x00000000, len = 0
ram4 (wx) : org = 0x00000000, len = 0
ram5 (wx) : org = 0x00000000, len = 0
ram6 (wx) : org = 0x00000000, len = 0
ram7 (wx) : org = 0x00000000, len = 0
}

/* For each data/text section two region are defined, a virtual region
and a load region (_LMA suffix).*/

/* Flash region to be used for exception vectors.*/
REGION_ALIAS("VECTORS_FLASH", flash0);
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);

/* Flash region to be used for constructors and destructors.*/
REGION_ALIAS("XTORS_FLASH", flash0);
REGION_ALIAS("XTORS_FLASH_LMA", flash0);

/* Flash region to be used for code text.*/
REGION_ALIAS("TEXT_FLASH", flash0);
REGION_ALIAS("TEXT_FLASH_LMA", flash0);

/* Flash region to be used for read only data.*/
REGION_ALIAS("RODATA_FLASH", flash0);
REGION_ALIAS("RODATA_FLASH_LMA", flash0);

/* Flash region to be used for various.*/
REGION_ALIAS("VARIOUS_FLASH", flash0);
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);

/* Flash region to be used for RAM(n) initialization data.*/
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);

/* RAM region to be used for Main stack. This stack accommodates the processing
of all exceptions and interrupts.*/
REGION_ALIAS("MAIN_STACK_RAM", ram0);

/* RAM region to be used for the process stack. This is the stack used by
the main() function.*/
REGION_ALIAS("PROCESS_STACK_RAM", ram0);

/* RAM region to be used for data segment.*/
REGION_ALIAS("DATA_RAM", ram0);
REGION_ALIAS("DATA_RAM_LMA", flash0);

/* RAM region to be used for BSS segment.*/
REGION_ALIAS("BSS_RAM", ram0);

/* RAM region to be used for the default heap.*/
REGION_ALIAS("HEAP_RAM", ram0);

/* Generic rules inclusion.*/
INCLUDE rules.ld

/* Bootloader reset support */
_board_magic_reg = ORIGIN(ram0) + 16k; /* this is based off the code within backup.c */
1 change: 0 additions & 1 deletion platforms/chibios/bootloader.mk
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ ifeq ($(strip $(BOOTLOADER)), kiibohd)
endif
ifeq ($(strip $(BOOTLOADER)), stm32duino)
OPT_DEFS += -DBOOTLOADER_STM32DUINO
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
BOARD = STM32_F103_STM32DUINO
BOOTLOADER_TYPE = stm32duino

Expand Down
24 changes: 4 additions & 20 deletions platforms/chibios/mcu_selection.mk
Original file line number Diff line number Diff line change
Expand Up @@ -273,11 +273,7 @@ ifneq ($(findstring STM32F103, $(MCU)),)
# Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), uf2boot)
MCU_LDSCRIPT ?= STM32F103xB_uf2boot
else
MCU_LDSCRIPT ?= STM32F103x8
endif
MCU_LDSCRIPT ?= STM32F103x8

# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
Expand Down Expand Up @@ -311,11 +307,7 @@ ifneq ($(findstring STM32F303, $(MCU)),)
# Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F303xC_tinyuf2
else
MCU_LDSCRIPT ?= STM32F303xC
endif
MCU_LDSCRIPT ?= STM32F303xC

# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
Expand Down Expand Up @@ -352,11 +344,7 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F401xC_tinyuf2
else
MCU_LDSCRIPT ?= STM32F401xC
endif
MCU_LDSCRIPT ?= STM32F401xC

# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
Expand Down Expand Up @@ -471,11 +459,7 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F411xE_tinyuf2
else
MCU_LDSCRIPT ?= STM32F411xE
endif
MCU_LDSCRIPT ?= STM32F411xE

# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
Expand Down
5 changes: 5 additions & 0 deletions platforms/chibios/platform.mk
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,11 @@ else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld)","")
LDSCRIPT = $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","")
LDSCRIPT = $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld
else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT)_$(BOOTLOADER).ld)","")
LDFLAGS += -L$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld
LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT)_$(BOOTLOADER).ld
else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/common/ld/$(MCU_LDSCRIPT)_$(BOOTLOADER).ld)","")
LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/common/ld/$(MCU_LDSCRIPT)_$(BOOTLOADER).ld
else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld)","")
LDFLAGS += -L$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld
LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld
Expand Down

0 comments on commit 8b1cd3c

Please sign in to comment.