From a86d6fffc950242f412e05a6a0aed8beede01ba4 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Mon, 7 Feb 2022 14:09:21 +1100 Subject: [PATCH] Fixup bootloaders. (#16256) --- keyboards/ducky/one2mini/1861st/1861st.c | 8 ++++++++ keyboards/ducky/one2mini/1861st/rules.mk | 3 +++ keyboards/ergodox_stm32/ergodox_stm32.c | 5 +++++ keyboards/ergodox_stm32/rules.mk | 3 +++ keyboards/jm60/jm60.c | 5 +++++ keyboards/jm60/rules.mk | 3 +++ keyboards/matrix/abelx/abelx.c | 5 +++++ keyboards/matrix/abelx/rules.mk | 3 +++ keyboards/matrix/m12og/rev1/rev1.c | 5 +++++ keyboards/matrix/m12og/rev1/rules.mk | 3 +++ keyboards/matrix/m20add/m20add.c | 5 +++++ keyboards/matrix/m20add/rules.mk | 3 +++ keyboards/matrix/noah/noah.c | 5 +++++ keyboards/matrix/noah/rules.mk | 3 +++ keyboards/wolfmarkclub/wm1/rules.mk | 3 +++ keyboards/wolfmarkclub/wm1/wm1.c | 5 +++++ keyboards/xiaomi/mk02/rules.mk | 3 +++ 17 files changed, 70 insertions(+) create mode 100644 keyboards/ducky/one2mini/1861st/1861st.c diff --git a/keyboards/ducky/one2mini/1861st/1861st.c b/keyboards/ducky/one2mini/1861st/1861st.c new file mode 100644 index 0000000000000000000000000000000000000000..1c164ea70d44dc88e327ff93b9d05b125bf5847c --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/1861st.c @@ -0,0 +1,8 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "1861st.h" + +void bootloader_jump(void) { + // TODO: Work out how to jump to LDROM, for now just reset the board. + NVIC_SystemReset(); +} diff --git a/keyboards/ducky/one2mini/1861st/rules.mk b/keyboards/ducky/one2mini/1861st/rules.mk index 277108c8acda63cf5d044c2ce654c598635ccdf0..a5b4708b26f49668efea4c2a7e52d299cef89e23 100644 --- a/keyboards/ducky/one2mini/1861st/rules.mk +++ b/keyboards/ducky/one2mini/1861st/rules.mk @@ -1,6 +1,9 @@ MCU_FAMILY = NUMICRO MCU_SERIES = NUC123 +# Bootloader selection +BOOTLOADER = custom + # linker script to use MCU_LDSCRIPT = NUC123xD4xx0 diff --git a/keyboards/ergodox_stm32/ergodox_stm32.c b/keyboards/ergodox_stm32/ergodox_stm32.c index 846c29d7a4b6f6f111aac4787074e298c7ba717c..8419b40f4180f70b9fb09bf42907f970d7d33625 100644 --- a/keyboards/ergodox_stm32/ergodox_stm32.c +++ b/keyboards/ergodox_stm32/ergodox_stm32.c @@ -16,6 +16,11 @@ void board_init(void) { AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; } +void bootloader_jump(void) { + // This board doesn't use the "standard" stm32duino bootloader, and is resident in memory at the base location. All we can do here is reset. + NVIC_SystemReset(); +} + void matrix_init_kb(void) { // Init LED Ports diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk index 3f7197cbf671b3692adddae328516abcdc02877b..e730df82aa91a2d198b0c11fbb85cade2d99e92f 100644 --- a/keyboards/ergodox_stm32/rules.mk +++ b/keyboards/ergodox_stm32/rules.mk @@ -3,6 +3,9 @@ MCU = STM32F103 MCU_LDSCRIPT = stm32f103_bootloader BOARD = ST_NUCLEO64_F103RB +# Bootloader selection +BOOTLOADER = custom + BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control diff --git a/keyboards/jm60/jm60.c b/keyboards/jm60/jm60.c index f7b434f30e0a51b5e5cfcbee7f67d8eab9b067e2..823892dce9d8cc1f5fd1503790507a91890212f4 100644 --- a/keyboards/jm60/jm60.c +++ b/keyboards/jm60/jm60.c @@ -20,3 +20,8 @@ along with this program. If not, see . void board_init(void) { AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; } + +void bootloader_jump(void) { + // This board doesn't use the "standard" stm32duino bootloader. There's no information on how to jump to the custom bootloader, so all we can do here is reset. + NVIC_SystemReset(); +} diff --git a/keyboards/jm60/rules.mk b/keyboards/jm60/rules.mk index 6cb13d932dcd492e4b334d2215a2f1f50da14eb7..c6de64a130334447cebf20f041afe17ca0a48f88 100644 --- a/keyboards/jm60/rules.mk +++ b/keyboards/jm60/rules.mk @@ -4,6 +4,9 @@ MCU = STM32F103 MCU_LDSCRIPT = jm60_bootloader BOARD = ST_NUCLEO64_F103RB +# Bootloader selection +BOOTLOADER = custom + # Build Options # change yes to no to disable # diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c index 77e749ee40055f970269ab36eb7a6ea89299e2af..9585948e0cda8fd62494ff6f8a63dfe560c8457c 100644 --- a/keyboards/matrix/abelx/abelx.c +++ b/keyboards/matrix/abelx/abelx.c @@ -97,3 +97,8 @@ void shutdown_user(void) // set the magic number for resetting to the bootloader *(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC; } + +void bootloader_jump(void) { + shutdown_user(); + NVIC_SystemReset(); +} diff --git a/keyboards/matrix/abelx/rules.mk b/keyboards/matrix/abelx/rules.mk index d4a065662bf2e6e5833152af895e07cf5f914ff2..7a5d01e5cb1593e48eaf6e29eb9a5adbdfe499d2 100644 --- a/keyboards/matrix/abelx/rules.mk +++ b/keyboards/matrix/abelx/rules.mk @@ -25,6 +25,9 @@ ARMV = 7 USE_FPU = yes +# Bootloader selection +BOOTLOADER = custom + # Build Options # change yes to no to disable # diff --git a/keyboards/matrix/m12og/rev1/rev1.c b/keyboards/matrix/m12og/rev1/rev1.c index e3277bee2771c8d0179ead07caa421c414ce4b8e..53183c7d2d2c56667cea1517b168a536f1af8bf4 100644 --- a/keyboards/matrix/m12og/rev1/rev1.c +++ b/keyboards/matrix/m12og/rev1/rev1.c @@ -20,6 +20,11 @@ void board_init(void) { writePinLow(A8); } +void bootloader_jump(void) { + // This board doesn't use the standard DFU bootloader, and no information is available regarding how to enter bootloader mode. All we can do here is reset. + NVIC_SystemReset(); +} + void keyboard_post_init_kb(void) { rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom(5, 255, 255); diff --git a/keyboards/matrix/m12og/rev1/rules.mk b/keyboards/matrix/m12og/rev1/rules.mk index 0e0584b8c96758ce2821f609e139d4afa3cfbc65..d9733e8c5eb69329ba043d140609cb278e6ac223 100644 --- a/keyboards/matrix/m12og/rev1/rules.mk +++ b/keyboards/matrix/m12og/rev1/rules.mk @@ -5,6 +5,9 @@ MCU_LDSCRIPT = m12og_v1 BOARD = m12og_v1 +# Bootloader selection +BOOTLOADER = custom + # Build Options # change yes to no to disable # diff --git a/keyboards/matrix/m20add/m20add.c b/keyboards/matrix/m20add/m20add.c index 4d328d6c54307ec00a7bfbbbeccec0904d887e5d..cdcafb97790c83b3798b8889aba0f2d00196a494 100644 --- a/keyboards/matrix/m20add/m20add.c +++ b/keyboards/matrix/m20add/m20add.c @@ -59,3 +59,8 @@ void shutdown_user(void) // set the magic number for resetting to the bootloader *(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC; } + +void bootloader_jump(void) { + shutdown_user(); + NVIC_SystemReset(); +} diff --git a/keyboards/matrix/m20add/rules.mk b/keyboards/matrix/m20add/rules.mk index 1ecbd9d3082ef3985e99068d803b739402caea84..86bd6b9371232d9b94ae950076bf220fe7e19189 100644 --- a/keyboards/matrix/m20add/rules.mk +++ b/keyboards/matrix/m20add/rules.mk @@ -10,6 +10,9 @@ MCU_LDSCRIPT = m20add_boot # or /boards BOARD = ST_NUCLEO64_F411RE +# Bootloader selection +BOOTLOADER = custom + # Build Options # change yes to no to disable # diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c index 2143dee3be08cbcd00b61c51751b1070f81c17a2..89c25707af2545e989f2658853bc00daa136984c 100644 --- a/keyboards/matrix/noah/noah.c +++ b/keyboards/matrix/noah/noah.c @@ -4,6 +4,11 @@ #include "noah.h" +void bootloader_jump(void) { + // This board doesn't use the standard DFU bootloader, and no information is available regarding how to enter bootloader mode. All we can do here is reset. + NVIC_SystemReset(); +} + #ifdef RGBLIGHT_ENABLE #include #include "rgblight.h" diff --git a/keyboards/matrix/noah/rules.mk b/keyboards/matrix/noah/rules.mk index b9f642e8cdfd8a5e8bee7a3228136856a4a02713..7971d628d68401e839777267930f6e1a711e474c 100644 --- a/keyboards/matrix/noah/rules.mk +++ b/keyboards/matrix/noah/rules.mk @@ -10,6 +10,9 @@ MCU_LDSCRIPT = noah_boot # or /boards BOARD = ST_NUCLEO64_F411RE +# Bootloader selection +BOOTLOADER = custom + # Build Options # change yes to no to disable # diff --git a/keyboards/wolfmarkclub/wm1/rules.mk b/keyboards/wolfmarkclub/wm1/rules.mk index 2782d497ce213025e16760648d0d91f809b37d5a..a712747048a69a29a4e0b5a6a73e8cc4685af715 100644 --- a/keyboards/wolfmarkclub/wm1/rules.mk +++ b/keyboards/wolfmarkclub/wm1/rules.mk @@ -5,6 +5,9 @@ MCU = STM32F103 MCU_LDSCRIPT = wm1_f103 BOARD = STM32_F103_STM32DUINO +# Bootloader selection +BOOTLOADER = custom + PROGRAM_CMD = echo 'CLI flashing not supported' >&2 # Build Options diff --git a/keyboards/wolfmarkclub/wm1/wm1.c b/keyboards/wolfmarkclub/wm1/wm1.c index d199546f89067ed43a0deb4a5c0fa3f477da2ac4..0ad1ade4cc3f69ebfb37a8b816060d8b81a3dfe0 100644 --- a/keyboards/wolfmarkclub/wm1/wm1.c +++ b/keyboards/wolfmarkclub/wm1/wm1.c @@ -1,5 +1,10 @@ #include "wm1.h" +void bootloader_jump(void) { + // This board doesn't use the "standard" stm32duino bootloader, and no information is available regarding how to enter bootloader mode. All we can do here is reset. + NVIC_SystemReset(); +} + void matrix_init_kb(void) { setPinOutput(B1); // Top Indicator LED setPinOutput(B0); // Middle Indicator LED diff --git a/keyboards/xiaomi/mk02/rules.mk b/keyboards/xiaomi/mk02/rules.mk index 9d6d62c3940825f29f0a1dda921ad528b24bbe0a..c20d67dd89d9136aa9dbd254f532a5bbb671a6a4 100644 --- a/keyboards/xiaomi/mk02/rules.mk +++ b/keyboards/xiaomi/mk02/rules.mk @@ -3,6 +3,9 @@ MCU = STM32F072 BOARD = ST_STM32F072B_DISCOVERY MCU_LDSCRIPT = STM32F072_0x2000_bootloader +# Bootloader selection +BOOTLOADER = custom + DFU_ARGS = -d 0483:df11 -a 0 -s 0x08002000:leave DFU_SUFFIX_ARGS = -v 0483 -p DF11