diff --git a/bootloader/bootloader.h b/bootloader/bootloader.h index 3a37d60..abe8078 100644 --- a/bootloader/bootloader.h +++ b/bootloader/bootloader.h @@ -22,14 +22,14 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 2 -#define VERSION_PATCH 6 +#define VERSION_PATCH 7 #define STR(X) #X #define VERSTR(X) STR(X) #define VERSION_MAJOR_CHAR "\x01" #define VERSION_MINOR_CHAR "\x02" -#define VERSION_PATCH_CHAR "\x06" +#define VERSION_PATCH_CHAR "\x07" #include "memory.h" diff --git a/bootloader/usb.c b/bootloader/usb.c index 48e6692..f4a7353 100644 --- a/bootloader/usb.c +++ b/bootloader/usb.c @@ -278,18 +278,20 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep) buttonUpdate(); } while (!button.YesUp && !button.NoUp); if (button.YesUp) { - layoutProgress("INSTALLING ... Please wait", 0); // backup metadata memcpy(meta_backup, (void *)FLASH_META_START, FLASH_META_LEN); flash_unlock(); // erase metadata area for (i = FLASH_META_SECTOR_FIRST; i <= FLASH_META_SECTOR_LAST; i++) { + layoutProgress("ERASING ... Please wait", 1000*(i - FLASH_META_SECTOR_FIRST) / (FLASH_CODE_SECTOR_LAST - FLASH_META_SECTOR_FIRST)); flash_erase_sector(i, FLASH_CR_PROGRAM_X32); } // erase code area for (i = FLASH_CODE_SECTOR_FIRST; i <= FLASH_CODE_SECTOR_LAST; i++) { + layoutProgress("ERASING ... Please wait", 1000*(i - FLASH_META_SECTOR_FIRST) / (FLASH_CODE_SECTOR_LAST - FLASH_META_SECTOR_FIRST)); flash_erase_sector(i, FLASH_CR_PROGRAM_X32); } + layoutProgress("INSTALLING ... Please wait", 0); flash_lock(); send_msg_success(dev); flash_state = STATE_FLASHSTART; @@ -350,7 +352,7 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep) return; } p = buf + 1; - if (flash_anim % 8 == 4) { + if (flash_anim % 32 == 4) { layoutProgress("INSTALLING ... Please wait", 1000 * flash_pos / flash_len); } flash_anim++; @@ -364,7 +366,6 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep) flash_program_word(FLASH_META_START + flash_pos, *w); // the first 256 bytes of firmware is metadata descriptor } else { flash_program_word(FLASH_APP_START + (flash_pos - FLASH_META_DESC_LEN), *w); // the rest is code - sha256_Update(&ctx, towrite, 4); } flash_pos += 4; wi = 0; @@ -374,6 +375,8 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep) flash_lock(); // flashing done if (flash_pos == flash_len) { + sha256_Update(&ctx, (unsigned char*) FLASH_APP_START, + flash_len - FLASH_META_DESC_LEN); flash_state = STATE_CHECK; send_msg_buttonrequest_firmwarecheck(dev); }