diff --git a/stm-firmware/updater/ram-code/main.c b/stm-firmware/updater/ram-code/main.c index 8debbca..3013e41 100644 --- a/stm-firmware/updater/ram-code/main.c +++ b/stm-firmware/updater/ram-code/main.c @@ -97,7 +97,25 @@ exit: int write_flash_from_buffer(const char *buffer, uint32_t len, uint32_t addr) { - return flash_writer_write_to_memory((void *)addr, buffer, len); + int res; + uint32_t i; + const char *verify_ptr = (const char *)addr; + + res = flash_writer_write_to_memory((void *)addr, buffer, len); + if (res) { + uart_send_string("Error writing to flash!\r\n"); + return -1; + } + + /* Verify the write */ + for (i = 0; i < len; i++) { + if (*verify_ptr != buffer[i]) { + uart_send_string("Error verifying written data!\r\n"); + return -2; + } + } + + return 0; } int update_flash_from_file(const char *fname)