From 7dacfd69eeb5b021ab58490105bc1c9e50edf1f1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 Jan 2015 21:10:51 +0100 Subject: [PATCH] check for flash operation failure --- firmware/storage.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/firmware/storage.c b/firmware/storage.c index 369dabf..1968f8b 100644 --- a/firmware/storage.c +++ b/firmware/storage.c @@ -130,6 +130,7 @@ void storage_commit(void) uint32_t *w; // backup meta memcpy(meta_backup, (void *)FLASH_META_START, FLASH_META_LEN); + flash_clear_status_flags(); flash_unlock(); // erase storage for (i = FLASH_META_SECTOR_FIRST; i <= FLASH_META_SECTOR_LAST; i++) { @@ -145,6 +146,11 @@ void storage_commit(void) flash_program_word(FLASH_META_START + i * 4, *w); } flash_lock(); + // flash operation failed + if (FLASH_SR & (FLASH_SR_PGAERR | FLASH_SR_PGPERR | FLASH_SR_PGSERR | FLASH_SR_WRPERR)) { + layoutDialog(DIALOG_ICON_ERROR, NULL, NULL, NULL, "Storage failure", "detected.", NULL, "Please unplug", "the device.", NULL); + for (;;) { } + } } void storage_loadDevice(LoadDevice *msg)