Remove bootloader logic from `mcu_selection.mk` (#20150)

* Remove bootloader logic from mcu_selection.mk

* Move MCU/BOOTLOADER to info.json
This commit is contained in:
Joel Challis 2023-03-18 21:19:26 +00:00 committed by GitHub
parent 2c19e5d1c3
commit 50cb8a3bf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 109 additions and 58 deletions

View File

@ -20,6 +20,8 @@
{"pin_a": "A3", "pin_b": "A4"} {"pin_a": "A3", "pin_b": "A4"}
] ]
}, },
"processor": "STM32F103",
"bootloader": "stm32duino",
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT": {
"layout": [ "layout": [

View File

@ -1,18 +1,8 @@
SRC += ./lib/layer_status/layer_status.c SRC += ./lib/layer_status/layer_status.c
SRC += ./lib/logo.c SRC += ./lib/logo.c
# MCU name # Configure for 128K flash
MCU = STM32F103 MCU_LDSCRIPT = STM32F103xB
# 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
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable

View File

@ -8,6 +8,8 @@
"pid": "0x5887", "pid": "0x5887",
"device_version": "0.0.1" "device_version": "0.0.1"
}, },
"processor": "STM32F103",
"bootloader": "stm32duino",
"matrix_pins": { "matrix_pins": {
"cols": ["B5", "B4", "B6", "C0", "C1", "C2", "C3", "B7", "B3", "D2", "C12", "C11", "C10", "A15", "C15", "C13", "A3"], "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"] "rows": ["A1", "A2", "A10", "A9", "A8", "C9"]

View File

@ -1,15 +1,5 @@
# MCU name # Configure for 128K flash
MCU = STM32F103 MCU_LDSCRIPT = STM32F103xB
# 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
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable

View File

@ -8,6 +8,8 @@
"pid": "0xFF16", "pid": "0xFF16",
"device_version": "0.0.1" "device_version": "0.0.1"
}, },
"processor": "STM32F103",
"bootloader": "stm32duino",
"matrix_pins": { "matrix_pins": {
"cols": ["B8", "B9", "B10", "B11"], "cols": ["B8", "B9", "B10", "B11"],
"rows": ["A9", "B13", "B14", "B15", "B3"] "rows": ["A9", "B13", "B14", "B15", "B3"]

View File

@ -1,16 +1,5 @@
# MCU name # Configure for 128K flash
MCU = STM32F103 MCU_LDSCRIPT = STM32F103xB
# 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
# Extra include # Extra include
SRC += keycode_lookup.c SRC += keycode_lookup.c

View File

@ -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 */

View File

@ -93,7 +93,6 @@ ifeq ($(strip $(BOOTLOADER)), kiibohd)
endif endif
ifeq ($(strip $(BOOTLOADER)), stm32duino) ifeq ($(strip $(BOOTLOADER)), stm32duino)
OPT_DEFS += -DBOOTLOADER_STM32DUINO OPT_DEFS += -DBOOTLOADER_STM32DUINO
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
BOARD = STM32_F103_STM32DUINO BOARD = STM32_F103_STM32DUINO
BOOTLOADER_TYPE = stm32duino BOOTLOADER_TYPE = stm32duino

View File

@ -273,11 +273,7 @@ ifneq ($(findstring STM32F103, $(MCU)),)
# Linker script to use # Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/ # - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/ # or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), uf2boot) MCU_LDSCRIPT ?= STM32F103x8
MCU_LDSCRIPT ?= STM32F103xB_uf2boot
else
MCU_LDSCRIPT ?= STM32F103x8
endif
# Startup code to use # Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
@ -311,11 +307,7 @@ ifneq ($(findstring STM32F303, $(MCU)),)
# Linker script to use # Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/ # - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/ # or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2) MCU_LDSCRIPT ?= STM32F303xC
MCU_LDSCRIPT ?= STM32F303xC_tinyuf2
else
MCU_LDSCRIPT ?= STM32F303xC
endif
# Startup code to use # Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
@ -352,11 +344,7 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# Linker script to use # Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/ # - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/ # or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2) MCU_LDSCRIPT ?= STM32F401xC
MCU_LDSCRIPT ?= STM32F401xC_tinyuf2
else
MCU_LDSCRIPT ?= STM32F401xC
endif
# Startup code to use # Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
@ -471,11 +459,7 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# Linker script to use # Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/ # - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/ # or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2) MCU_LDSCRIPT ?= STM32F411xE
MCU_LDSCRIPT ?= STM32F411xE_tinyuf2
else
MCU_LDSCRIPT ?= STM32F411xE
endif
# Startup code to use # Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/

View File

@ -235,6 +235,11 @@ else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld)","")
LDSCRIPT = $(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)","") else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","")
LDSCRIPT = $(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)","") else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld)","")
LDFLAGS += -L$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld LDFLAGS += -L$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld
LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld