~ruther/qmk_firmware

e2d4cd1a41c667da186891e3dbaf535c6b0717df — Ryan 5 years ago 98e1e18
Add Kiibohd bootloader type to bootloader.mk (#9908)

11 files changed, 25 insertions(+), 71 deletions(-)

M bootloader.mk
D keyboards/ergodox_infinity/bootloader_defs.h
M keyboards/ergodox_infinity/rules.mk
D keyboards/infinity60/bootloader_defs.h
M keyboards/infinity60/rules.mk
D keyboards/k_type/bootloader_defs.h
M keyboards/k_type/rules.mk
D keyboards/whitefox/bootloader_defs.h
M keyboards/whitefox/rules.mk
M tmk_core/chibios.mk
M tmk_core/common/chibios/bootloader.c
M bootloader.mk => bootloader.mk +13 -0
@@ 27,6 27,7 @@
# qmk-dfu        QMK DFU (LUFA + blinkenlight)
# bootloadHID    HIDBootFlash compatible (ATmega32A)
# USBasp         USBaspLoader (ATmega328P)
# kiibohd        Input:Club Kiibohd bootloader (only used on their boards)
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list


@@ 89,6 90,18 @@ ifeq ($(strip $(BOOTLOADER)), lufa-ms)
    BOOTLOADER_SIZE = 6144
    FIRMWARE_FORMAT = bin
endif
ifeq ($(strip $(BOOTLOADER)), kiibohd)
    OPT_DEFS += -DBOOTLOADER_KIIBOHD
    ifeq ($(strip $(MCU)), MK20DX128)
        MCU_LDSCRIPT = MK20DX128BLDR4
    endif
    ifeq ($(strip $(MCU)), MK20DX256)
        MCU_LDSCRIPT = MK20DX256BLDR8
    endif

    DFU_ARGS = -d 1C11:B007
    DFU_SUFFIX_ARGS = -v 1C11 -p B007
endif

ifdef BOOTLOADER_SIZE
    OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))

D keyboards/ergodox_infinity/bootloader_defs.h => keyboards/ergodox_infinity/bootloader_defs.h +0 -1
@@ 1,1 0,0 @@
#define KIIBOHD_BOOTLOADER

M keyboards/ergodox_infinity/rules.mk => keyboards/ergodox_infinity/rules.mk +2 -16
@@ 1,32 1,18 @@
# MCU name
MCU = MK20DX256

# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
#   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

# Vector table for application
# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000

BOOTLOADER = dfu
# Bootloader selection
BOOTLOADER = kiibohd

# Build 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
MOUSEKEY_ENABLE  = yes # Mouse keys
EXTRAKEY_ENABLE  = yes # Audio control and System control

D keyboards/infinity60/bootloader_defs.h => keyboards/infinity60/bootloader_defs.h +0 -1
@@ 1,1 0,0 @@
#define KIIBOHD_BOOTLOADER

M keyboards/infinity60/rules.mk => keyboards/infinity60/rules.mk +2 -15
@@ 1,17 1,6 @@
# MCU name
MCU = MK20DX128

# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
#   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/
#  or <this_dir>/boards
# - BOARD =


@@ 26,15 15,13 @@ BOARD = MCHCK_K20
# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000

BOOTLOADER = dfu
# Bootloader selection
BOOTLOADER = kiibohd

# Build 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
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
MOUSEKEY_ENABLE = yes	# Mouse keys

D keyboards/k_type/bootloader_defs.h => keyboards/k_type/bootloader_defs.h +0 -1
@@ 1,1 0,0 @@
#define KIIBOHD_BOOTLOADER

M keyboards/k_type/rules.mk => keyboards/k_type/rules.mk +2 -16
@@ 1,28 1,14 @@
# MCU name
MCU = MK20DX256

# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
#   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/
#  or <this_dir>/boards
# This board was copied from PJRC_TEENSY_3_1. The only difference should be a
# hack to ensure the watchdog has started before trying to disable it.
BOARD = IC_TEENSY_3_1

DFU_ARGS = -d 1c11:b007
DFU_SUFFIX_ARGS = -p b007 -v 1c11

BOOTLOADER = dfu
# Bootloader selection
BOOTLOADER = kiibohd

# Build Options
#   comment out to disable the options.

D keyboards/whitefox/bootloader_defs.h => keyboards/whitefox/bootloader_defs.h +0 -1
@@ 1,1 0,0 @@
#define KIIBOHD_BOOTLOADER

M keyboards/whitefox/rules.mk => keyboards/whitefox/rules.mk +2 -16
@@ 1,18 1,6 @@
# MCU name
MCU = MK20DX256

# Linker script to use
# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
#   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/
#  or <this_dir>/boards
# - BOARD =


@@ 22,10 10,8 @@ MCU_LDSCRIPT = MK20DX256BLDR8
#   - MCHCK_K20 for Infinity KB
BOARD = IC_TEENSY_3_1

DFU_ARGS = -d 1c11:b007
DFU_SUFFIX_ARGS = -p b007 -v 1c11

BOOTLOADER = dfu
# Bootloader selection
BOOTLOADER = kiibohd

# Build Options
#   comment out to disable the options.

M tmk_core/chibios.mk => tmk_core/chibios.mk +1 -1
@@ 324,7 324,7 @@ bin: $(BUILD_DIR)/$(TARGET).bin sizeafter
flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
ifneq ($(strip $(PROGRAM_CMD)),)
	$(PROGRAM_CMD)
else ifeq ($(strip $(BOOTLOADER)),dfu)
else ifeq ($(strip $(BOOTLOADER)),kiibohd)
	$(call EXEC_DFU_UTIL)
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
	$(call EXEC_TEENSY)

M tmk_core/common/chibios/bootloader.c => tmk_core/common/chibios/bootloader.c +3 -3
@@ 44,7 44,7 @@ void enter_bootloader_mode_if_requested(void) {
#elif defined(KL2x) || defined(K20x) /* STM32_BOOTLOADER_ADDRESS */
/* Kinetis */

#    if defined(KIIBOHD_BOOTLOADER)
#    if defined(BOOTLOADER_KIIBOHD)
/* Kiibohd Bootloader (MCHCK and Infinity KB) */
#        define SCB_AIRCR_VECTKEY_WRITEMAGIC 0x05FA0000
const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff";


@@ 54,14 54,14 @@ void          bootloader_jump(void) {
    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 */
#        include "wait.h"
void bootloader_jump(void) {
    wait_ms(100);
    __BKPT(0);
}
#    endif /* defined(KIIBOHD_BOOTLOADER) */
#    endif /* defined(BOOTLOADER_KIIBOHD) */

#else /* neither STM32 nor KINETIS */
__attribute__((weak)) void bootloader_jump(void) {}