Skip to content
Snippets Groups Projects
Commit c07db16a authored by Michael DM Dryden's avatar Michael DM Dryden
Browse files

Added software jump to bootloader for DFU, under settings.

parent 02892efc
Branches
Tags
1 merge request!3Develop
......@@ -9,16 +9,23 @@
#include "settings.h"
#include "config/conf_board.h"
#include <udc.h>
#define SETTINGS_EEPROM_PARAM_PAGE 0
#define SETTINGS_EEPROM_OFFSET_ADDR SETTINGS_EEPROM_PARAM_PAGE * EEPROM_PAGE_SIZE
void update_firmware(void);
void settings_handler(char command){
switch (command){
case 'D': //Reset defaults
settings_restore_defaults();
break;
case 'F': //Update Firmware
update_firmware();
break;
case 'R': //Read settings from EEPROM
settings_read_eeprom();
break;
......@@ -43,6 +50,19 @@ void settings_handler(char command){
}
}
void(* start_bootloader)(void) = (void (*)(void))(BOOT_SECTION_START/2+0x1FC/2);
void update_firmware(void){
/**
* Jumps to bootloader to do firmware upgrade
*/
udc_stop(); // Disable USB Stack
cli(); // Disable Interrupts
EIND = BOOT_SECTION_START>>17;
start_bootloader();
}
void settings_read_eeprom(void){
printf("#INFO: SETTINGS\n\r");
nvm_eeprom_read_buffer(SETTINGS_EEPROM_OFFSET_ADDR, &settings, EEPROM_PAGE_SIZE);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment