From 59d425ccfe1ca3019ba80ad6dd4a228b7c7cbe33 Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Sun, 11 Oct 2015 22:07:11 -0700 Subject: [PATCH] Adding jump to bootloader key - Now enabled by default - Added protection around remote jumps --- Debug/cli/cli.c | 12 +++++++++--- Macro/PartialMap/macro.c | 13 +++++++++++++ Output/pjrcUSB/arm/usb_dev.c | 33 +-------------------------------- Output/pjrcUSB/output_com.c | 2 +- Output/usbMuxUart/output_com.c | 2 +- 5 files changed, 25 insertions(+), 37 deletions(-) diff --git a/Debug/cli/cli.c b/Debug/cli/cli.c index 03fb3ca..149d12d 100644 --- a/Debug/cli/cli.c +++ b/Debug/cli/cli.c @@ -21,14 +21,12 @@ // ----- Includes ----- -// Compiler Includes -//#include - // Project Includes #include #include "cli.h" #include #include +#include @@ -517,6 +515,14 @@ void cliFunc_led( char* args ) void cliFunc_reload( char* args ) { + if ( flashModeEnabled_define == 0 ) + { + print( NL ); + warn_print("flashModeEnabled not set, cancelling firmware reload..."); + info_msg("Set flashModeEnabled to 1 in your kll configuration."); + return; + } + // Request to output module to be set into firmware reload mode Output_firmwareReload(); } diff --git a/Macro/PartialMap/macro.c b/Macro/PartialMap/macro.c index 8f1d1b8..e861f0e 100644 --- a/Macro/PartialMap/macro.c +++ b/Macro/PartialMap/macro.c @@ -1378,6 +1378,19 @@ void cliFunc_capSelect( char* args ) printHex( argSet[2] ); print( "..." NL ); + // Make sure this isn't the reload capability + // If it is, and the remote reflash define is not set, ignore + if ( flashModeEnabled_define == 0 ) for ( uint32_t cap = 0; cap < CapabilitiesNum; cap++ ) + { + if ( CapabilitiesList[ cap ].func == (const void*)Output_flashMode_capability ) + { + print( NL ); + warn_print("flashModeEnabled not set, cancelling firmware reload..."); + info_msg("Set flashModeEnabled to 1 in your kll configuration."); + return; + } + } + void (*capability)(uint8_t, uint8_t, uint8_t*) = (void(*)(uint8_t, uint8_t, uint8_t*))(CapabilitiesList[ cap ].func); capability( argSet[0], argSet[1], &argSet[2] ); } diff --git a/Output/pjrcUSB/arm/usb_dev.c b/Output/pjrcUSB/arm/usb_dev.c index e913006..782f3ac 100644 --- a/Output/pjrcUSB/arm/usb_dev.c +++ b/Output/pjrcUSB/arm/usb_dev.c @@ -911,40 +911,9 @@ void usb_tx( uint32_t endpoint, usb_packet_t *packet ) void usb_device_reload() { - if ( flashModeEnabled_define == 0 ) - { - print( NL ); - warn_print("flashModeEnabled not set, cancelling firmware reload..."); - info_msg("Set flashModeEnabled to 1 in your kll configuration."); - return; - } - // MCHCK -#if defined(_mk20dx128vlf5_) - - // MCHCK Kiibohd Variant - // Check to see if PTA3 (has a pull-up) is connected to GND (usually via jumper) - // Only allow reload if the jumper is present (security) - GPIOA_PDDR &= ~(1<<3); // Input - PORTA_PCR3 = PORT_PCR_PFE | PORT_PCR_MUX(1); // Internal pull-up - - // Check for jumper - if ( GPIOA_PDIR & (1<<3) && flashModeEnabled_define != 0 ) - { - print( NL ); - warn_print("Security jumper not present, cancelling firmware reload..."); - info_msg("Replace jumper on middle 2 pins, or manually press the firmware reload button."); - } - else - { - // Copies variable into the VBAT register, must be identical to the variable in the bootloader to jump to the bootloader flash mode - for ( int pos = 0; pos < sizeof(sys_reset_to_loader_magic); pos++ ) - (&VBAT)[ pos ] = sys_reset_to_loader_magic[ pos ]; - SOFTWARE_RESET(); - } - // Kiibohd mk20dx256vlh7 -#elif defined(_mk20dx256vlh7_) +#if defined(_mk20dx128vlf5_) || defined(_mk20dx256vlh7_) // Copies variable into the VBAT register, must be identical to the variable in the bootloader to jump to the bootloader flash mode for ( int pos = 0; pos < sizeof(sys_reset_to_loader_magic); pos++ ) (&VBAT)[ pos ] = sys_reset_to_loader_magic[ pos ]; diff --git a/Output/pjrcUSB/output_com.c b/Output/pjrcUSB/output_com.c index d594ac1..2e97e42 100644 --- a/Output/pjrcUSB/output_com.c +++ b/Output/pjrcUSB/output_com.c @@ -489,7 +489,7 @@ void Output_flashMode_capability( uint8_t state, uint8_t stateType, uint8_t *arg // Display capability name if ( stateType == 0xFF && state == 0xFF ) { - print("Output_flashMode(usbCode)"); + print("Output_flashMode()"); return; } diff --git a/Output/usbMuxUart/output_com.c b/Output/usbMuxUart/output_com.c index 928f342..44c5b49 100644 --- a/Output/usbMuxUart/output_com.c +++ b/Output/usbMuxUart/output_com.c @@ -495,7 +495,7 @@ void Output_flashMode_capability( uint8_t state, uint8_t stateType, uint8_t *arg // Display capability name if ( stateType == 0xFF && state == 0xFF ) { - print("Output_flashMode(usbCode)"); + print("Output_flashMode()"); return; } -- 2.39.2