Adding jump to bootloader key
- Now enabled by default - Added protection around remote jumps
This commit is contained in:
		
							parent
							
								
									d9ba60b34e
								
							
						
					
					
						commit
						59d425ccfe
					
				
					 5 changed files with 25 additions and 37 deletions
				
			
		|  | @ -21,14 +21,12 @@ | |||
| 
 | ||||
| // ----- Includes -----
 | ||||
| 
 | ||||
| // Compiler Includes
 | ||||
| //#include <stdarg.h>
 | ||||
| 
 | ||||
| // Project Includes
 | ||||
| #include <buildvars.h> | ||||
| #include "cli.h" | ||||
| #include <led.h> | ||||
| #include <print.h> | ||||
| #include <kll_defs.h> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -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(); | ||||
| } | ||||
|  |  | |||
|  | @ -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] ); | ||||
| 		} | ||||
|  |  | |||
|  | @ -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 ]; | ||||
|  |  | |||
|  | @ -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; | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -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; | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jacob Alexander
						Jacob Alexander