mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-16 19:51:53 +02:00
atusb/fw: introduced function flash_end_write to properly finish flashing
- dfu.h (flash_end_write), flash.c (flash_end_write): write any incomplete buffer - flash.c (flash_write, flash_end_write): call boot_rww_enable only at the very end, it won't erase our buffer in mid-page - usb/dfu.c (my_setup): call flash_end_write at the end of a download
This commit is contained in:
parent
2978afe92b
commit
c265151d2b
@ -57,7 +57,15 @@ void flash_write(const uint8_t *buf, uint16_t size)
|
||||
boot_spm_busy_wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void flash_end_write(void)
|
||||
{
|
||||
if (payload & (SPM_PAGESIZE-1)) {
|
||||
boot_page_write(payload & ~(SPM_PAGESIZE-1));
|
||||
boot_spm_busy_wait();
|
||||
}
|
||||
boot_rww_enable();
|
||||
}
|
||||
|
||||
|
@ -192,6 +192,7 @@ static int my_setup(const struct setup_request *setup)
|
||||
}
|
||||
if (!setup->wLength) {
|
||||
debug("DONE\n");
|
||||
flash_end_write();
|
||||
dfu.state = dfuIDLE;
|
||||
did_download = 1;
|
||||
return 1;
|
||||
|
@ -84,6 +84,7 @@ extern struct dfu dfu;
|
||||
void flash_start(void);
|
||||
int flash_can_write(uint16_t size);
|
||||
void flash_write(const uint8_t *buf, uint16_t size);
|
||||
void flash_end_write(void);
|
||||
uint16_t flash_read(uint8_t *buf, uint16_t size);
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user