Merge pull request #86 from jhoenicke/master
Bootloader update: Faster flashing, smoother animation.
This commit is contained in:
commit
4607cdfb58
|
@ -22,14 +22,14 @@
|
||||||
|
|
||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_PATCH 6
|
#define VERSION_PATCH 7
|
||||||
|
|
||||||
#define STR(X) #X
|
#define STR(X) #X
|
||||||
#define VERSTR(X) STR(X)
|
#define VERSTR(X) STR(X)
|
||||||
|
|
||||||
#define VERSION_MAJOR_CHAR "\x01"
|
#define VERSION_MAJOR_CHAR "\x01"
|
||||||
#define VERSION_MINOR_CHAR "\x02"
|
#define VERSION_MINOR_CHAR "\x02"
|
||||||
#define VERSION_PATCH_CHAR "\x06"
|
#define VERSION_PATCH_CHAR "\x07"
|
||||||
|
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
|
|
||||||
|
|
|
@ -278,18 +278,20 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep)
|
||||||
buttonUpdate();
|
buttonUpdate();
|
||||||
} while (!button.YesUp && !button.NoUp);
|
} while (!button.YesUp && !button.NoUp);
|
||||||
if (button.YesUp) {
|
if (button.YesUp) {
|
||||||
layoutProgress("INSTALLING ... Please wait", 0);
|
|
||||||
// backup metadata
|
// backup metadata
|
||||||
memcpy(meta_backup, (void *)FLASH_META_START, FLASH_META_LEN);
|
memcpy(meta_backup, (void *)FLASH_META_START, FLASH_META_LEN);
|
||||||
flash_unlock();
|
flash_unlock();
|
||||||
// erase metadata area
|
// erase metadata area
|
||||||
for (i = FLASH_META_SECTOR_FIRST; i <= FLASH_META_SECTOR_LAST; i++) {
|
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);
|
flash_erase_sector(i, FLASH_CR_PROGRAM_X32);
|
||||||
}
|
}
|
||||||
// erase code area
|
// erase code area
|
||||||
for (i = FLASH_CODE_SECTOR_FIRST; i <= FLASH_CODE_SECTOR_LAST; i++) {
|
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);
|
flash_erase_sector(i, FLASH_CR_PROGRAM_X32);
|
||||||
}
|
}
|
||||||
|
layoutProgress("INSTALLING ... Please wait", 0);
|
||||||
flash_lock();
|
flash_lock();
|
||||||
send_msg_success(dev);
|
send_msg_success(dev);
|
||||||
flash_state = STATE_FLASHSTART;
|
flash_state = STATE_FLASHSTART;
|
||||||
|
@ -350,7 +352,7 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
p = buf + 1;
|
p = buf + 1;
|
||||||
if (flash_anim % 8 == 4) {
|
if (flash_anim % 32 == 4) {
|
||||||
layoutProgress("INSTALLING ... Please wait", 1000 * flash_pos / flash_len);
|
layoutProgress("INSTALLING ... Please wait", 1000 * flash_pos / flash_len);
|
||||||
}
|
}
|
||||||
flash_anim++;
|
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
|
flash_program_word(FLASH_META_START + flash_pos, *w); // the first 256 bytes of firmware is metadata descriptor
|
||||||
} else {
|
} else {
|
||||||
flash_program_word(FLASH_APP_START + (flash_pos - FLASH_META_DESC_LEN), *w); // the rest is code
|
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;
|
flash_pos += 4;
|
||||||
wi = 0;
|
wi = 0;
|
||||||
|
@ -374,6 +375,8 @@ static void hid_rx_callback(usbd_device *dev, uint8_t ep)
|
||||||
flash_lock();
|
flash_lock();
|
||||||
// flashing done
|
// flashing done
|
||||||
if (flash_pos == flash_len) {
|
if (flash_pos == flash_len) {
|
||||||
|
sha256_Update(&ctx, (unsigned char*) FLASH_APP_START,
|
||||||
|
flash_len - FLASH_META_DESC_LEN);
|
||||||
flash_state = STATE_CHECK;
|
flash_state = STATE_CHECK;
|
||||||
send_msg_buttonrequest_firmwarecheck(dev);
|
send_msg_buttonrequest_firmwarecheck(dev);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue