mirror of
https://github.com/firewalkwithm3/qmk_firmware.git
synced 2024-11-22 19:40:29 +08:00
Kiibohd bootloader, take 2 (#10129)
This commit is contained in:
parent
fa6cf85727
commit
b89b2030af
|
@ -27,6 +27,7 @@
|
||||||
# qmk-dfu QMK DFU (LUFA + blinkenlight)
|
# qmk-dfu QMK DFU (LUFA + blinkenlight)
|
||||||
# bootloadHID HIDBootFlash compatible (ATmega32A)
|
# bootloadHID HIDBootFlash compatible (ATmega32A)
|
||||||
# USBasp USBaspLoader (ATmega328P)
|
# USBasp USBaspLoader (ATmega328P)
|
||||||
|
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
|
||||||
#
|
#
|
||||||
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
|
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
|
||||||
# you add any possible configuration to this list
|
# you add any possible configuration to this list
|
||||||
|
@ -89,7 +90,19 @@ ifeq ($(strip $(BOOTLOADER)), lufa-ms)
|
||||||
BOOTLOADER_SIZE = 6144
|
BOOTLOADER_SIZE = 6144
|
||||||
FIRMWARE_FORMAT = bin
|
FIRMWARE_FORMAT = bin
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef BOOTLOADER_SIZE
|
ifdef BOOTLOADER_SIZE
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
|
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(BOOTLOADER)), kiibohd)
|
||||||
|
OPT_DEFS += -DBOOTLOADER_KIIBOHD
|
||||||
|
ifeq ($(strip $(MCU_ORIG)), MK20DX128)
|
||||||
|
MCU_LDSCRIPT = MK20DX128BLDR4
|
||||||
|
endif
|
||||||
|
ifeq ($(strip $(MCU_ORIG)), MK20DX256)
|
||||||
|
MCU_LDSCRIPT = MK20DX256BLDR8
|
||||||
|
endif
|
||||||
|
|
||||||
|
DFU_ARGS = -d 1C11:B007
|
||||||
|
DFU_SUFFIX_ARGS = -v 1C11 -p B007
|
||||||
|
endif
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#define KIIBOHD_BOOTLOADER
|
|
|
@ -1,27 +1,12 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = MK20DX256
|
MCU = MK20DX256
|
||||||
|
|
||||||
# Linker script to use
|
# Bootloader selection
|
||||||
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
BOOTLOADER = kiibohd
|
||||||
# or <this_dir>/ld/
|
|
||||||
# - NOTE: a custom ld script is needed for EEPROM on Teensy LC
|
|
||||||
# - LDSCRIPT =
|
|
||||||
# - MKL26Z64 for Teensy LC
|
|
||||||
# - MK20DX128 for Teensy 3.0
|
|
||||||
# - MK20DX256 for Teensy 3.1 and 3.2
|
|
||||||
# - MK20DX128BLDR4 for Infinity 60% with Kiibohd bootloader
|
|
||||||
# - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader
|
|
||||||
MCU_LDSCRIPT = MK20DX256BLDR8
|
|
||||||
|
|
||||||
BOOTLOADER = dfu
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
|
|
||||||
DFU_ARGS = -d 1c11:b007
|
|
||||||
DFU_SUFFIX_ARGS = -p b007 -v 1c11
|
|
||||||
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#define KIIBOHD_BOOTLOADER
|
|
|
@ -1,16 +1,8 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = MK20DX128
|
MCU = MK20DX128
|
||||||
|
|
||||||
# Linker script to use
|
# Bootloader selection
|
||||||
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
BOOTLOADER = kiibohd
|
||||||
# or <this_dir>/ld/
|
|
||||||
# - NOTE: a custom ld script is needed for EEPROM on Teensy LC
|
|
||||||
# - LDSCRIPT =
|
|
||||||
# - MKL26Z64 for Teensy LC
|
|
||||||
# - MK20DX128 for Teensy 3.0
|
|
||||||
# - MK20DX256 for Teensy 3.1 and 3.2
|
|
||||||
# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader
|
|
||||||
MCU_LDSCRIPT = MK20DX128BLDR4
|
|
||||||
|
|
||||||
# Board: it should exist either in <chibios>/os/hal/boards/
|
# Board: it should exist either in <chibios>/os/hal/boards/
|
||||||
# or <this_dir>/boards
|
# or <this_dir>/boards
|
||||||
|
@ -21,15 +13,9 @@ MCU_LDSCRIPT = MK20DX128BLDR4
|
||||||
# - MCHCK_K20 for Infinity KB
|
# - MCHCK_K20 for Infinity KB
|
||||||
BOARD = MCHCK_K20
|
BOARD = MCHCK_K20
|
||||||
|
|
||||||
BOOTLOADER = dfu
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
|
|
||||||
DFU_ARGS = -d 1c11:b007
|
|
||||||
DFU_SUFFIX_ARGS = -p b007 -v 1c11
|
|
||||||
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
|
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#define KIIBOHD_BOOTLOADER
|
|
|
@ -1,17 +1,8 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = MK20DX256
|
MCU = MK20DX256
|
||||||
|
|
||||||
# Linker script to use
|
# Bootloader selection
|
||||||
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
BOOTLOADER = kiibohd
|
||||||
# or <this_dir>/ld/
|
|
||||||
# - NOTE: a custom ld script is needed for EEPROM on Teensy LC
|
|
||||||
# - LDSCRIPT =
|
|
||||||
# - MKL26Z64 for Teensy LC
|
|
||||||
# - MK20DX128 for Teensy 3.0
|
|
||||||
# - MK20DX256 for Teensy 3.1 and 3.2
|
|
||||||
# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader
|
|
||||||
# - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader
|
|
||||||
MCU_LDSCRIPT = MK20DX256BLDR8
|
|
||||||
|
|
||||||
# Board: it should exist either in <chibios>/os/hal/boards/
|
# Board: it should exist either in <chibios>/os/hal/boards/
|
||||||
# or <this_dir>/boards
|
# or <this_dir>/boards
|
||||||
|
@ -19,11 +10,6 @@ MCU_LDSCRIPT = MK20DX256BLDR8
|
||||||
# hack to ensure the watchdog has started before trying to disable it.
|
# hack to ensure the watchdog has started before trying to disable it.
|
||||||
BOARD = IC_TEENSY_3_1
|
BOARD = IC_TEENSY_3_1
|
||||||
|
|
||||||
DFU_ARGS = -d 1c11:b007
|
|
||||||
DFU_SUFFIX_ARGS = -p b007 -v 1c11
|
|
||||||
|
|
||||||
BOOTLOADER = dfu
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#define KIIBOHD_BOOTLOADER
|
|
|
@ -1,17 +1,8 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = MK20DX256
|
MCU = MK20DX256
|
||||||
|
|
||||||
# Linker script to use
|
# Bootloader selection
|
||||||
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
BOOTLOADER = kiibohd
|
||||||
# or <this_dir>/ld/
|
|
||||||
# - NOTE: a custom ld script is needed for EEPROM on Teensy LC
|
|
||||||
# - LDSCRIPT =
|
|
||||||
# - MKL26Z64 for Teensy LC
|
|
||||||
# - MK20DX128 for Teensy 3.0
|
|
||||||
# - MK20DX256 for Teensy 3.1 and 3.2
|
|
||||||
# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader
|
|
||||||
# - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader
|
|
||||||
MCU_LDSCRIPT = MK20DX256BLDR8
|
|
||||||
|
|
||||||
# Board: it should exist either in <chibios>/os/hal/boards/
|
# Board: it should exist either in <chibios>/os/hal/boards/
|
||||||
# or <this_dir>/boards
|
# or <this_dir>/boards
|
||||||
|
@ -22,11 +13,6 @@ MCU_LDSCRIPT = MK20DX256BLDR8
|
||||||
# - MCHCK_K20 for Infinity KB
|
# - MCHCK_K20 for Infinity KB
|
||||||
BOARD = IC_TEENSY_3_1
|
BOARD = IC_TEENSY_3_1
|
||||||
|
|
||||||
DFU_ARGS = -d 1c11:b007
|
|
||||||
DFU_SUFFIX_ARGS = -p b007 -v 1c11
|
|
||||||
|
|
||||||
BOOTLOADER = dfu
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
MCU_ORIG := $(MCU)
|
||||||
|
|
||||||
ifneq ($(findstring MKL26Z64, $(MCU)),)
|
ifneq ($(findstring MKL26Z64, $(MCU)),)
|
||||||
# Cortex version
|
# Cortex version
|
||||||
MCU = cortex-m0plus
|
MCU = cortex-m0plus
|
||||||
|
|
|
@ -386,7 +386,7 @@ bin: $(BUILD_DIR)/$(TARGET).bin sizeafter
|
||||||
flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
|
flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
|
||||||
ifneq ($(strip $(PROGRAM_CMD)),)
|
ifneq ($(strip $(PROGRAM_CMD)),)
|
||||||
$(PROGRAM_CMD)
|
$(PROGRAM_CMD)
|
||||||
else ifeq ($(strip $(BOOTLOADER)),dfu)
|
else ifeq ($(strip $(BOOTLOADER)),kiibohd)
|
||||||
$(call EXEC_DFU_UTIL)
|
$(call EXEC_DFU_UTIL)
|
||||||
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
|
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
|
||||||
$(call EXEC_TEENSY)
|
$(call EXEC_TEENSY)
|
||||||
|
|
|
@ -82,7 +82,7 @@ void enter_bootloader_mode_if_requested(void) {
|
||||||
#elif defined(KL2x) || defined(K20x) // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS
|
#elif defined(KL2x) || defined(K20x) // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS
|
||||||
/* Kinetis */
|
/* Kinetis */
|
||||||
|
|
||||||
# if defined(KIIBOHD_BOOTLOADER)
|
# if defined(BOOTLOADER_KIIBOHD)
|
||||||
/* Kiibohd Bootloader (MCHCK and Infinity KB) */
|
/* Kiibohd Bootloader (MCHCK and Infinity KB) */
|
||||||
# define SCB_AIRCR_VECTKEY_WRITEMAGIC 0x05FA0000
|
# define SCB_AIRCR_VECTKEY_WRITEMAGIC 0x05FA0000
|
||||||
const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff";
|
const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff";
|
||||||
|
@ -92,14 +92,14 @@ void bootloader_jump(void) {
|
||||||
SCB->AIRCR = SCB_AIRCR_VECTKEY_WRITEMAGIC | SCB_AIRCR_SYSRESETREQ_Msk;
|
SCB->AIRCR = SCB_AIRCR_VECTKEY_WRITEMAGIC | SCB_AIRCR_SYSRESETREQ_Msk;
|
||||||
}
|
}
|
||||||
|
|
||||||
# else /* defined(KIIBOHD_BOOTLOADER) */
|
# else /* defined(BOOTLOADER_KIIBOHD) */
|
||||||
/* Default for Kinetis - expecting an ARM Teensy */
|
/* Default for Kinetis - expecting an ARM Teensy */
|
||||||
# include "wait.h"
|
# include "wait.h"
|
||||||
void bootloader_jump(void) {
|
void bootloader_jump(void) {
|
||||||
wait_ms(100);
|
wait_ms(100);
|
||||||
__BKPT(0);
|
__BKPT(0);
|
||||||
}
|
}
|
||||||
# endif /* defined(KIIBOHD_BOOTLOADER) */
|
# endif /* defined(BOOTLOADER_KIIBOHD) */
|
||||||
|
|
||||||
#else /* neither STM32 nor KINETIS */
|
#else /* neither STM32 nor KINETIS */
|
||||||
__attribute__((weak)) void bootloader_jump(void) {}
|
__attribute__((weak)) void bootloader_jump(void) {}
|
||||||
|
|
Loading…
Reference in a new issue