From 6be96ba4b2997ea425b660cdc670132facb70f7b Mon Sep 17 00:00:00 2001 From: Mike Naberezny Date: Sat, 26 Oct 2019 14:11:42 -0700 Subject: [PATCH] FlashIAP: Get erase value from HAL instead of hardcoding it --- TESTS/mbed_drivers/flashiap/main.cpp | 3 ++- drivers/source/FlashIAP.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/TESTS/mbed_drivers/flashiap/main.cpp b/TESTS/mbed_drivers/flashiap/main.cpp index 6f7991bcc24..648240466af 100644 --- a/TESTS/mbed_drivers/flashiap/main.cpp +++ b/TESTS/mbed_drivers/flashiap/main.cpp @@ -143,6 +143,7 @@ void flashiap_cross_sector_program_test() TEST_ASSERT_EQUAL_INT32(0, ret); uint32_t page_size = flash_device.get_page_size(); + uint8_t erase_value = flash_device.get_erase_value(); // Erase last two sectors uint32_t address = flash_device.get_flash_start() + flash_device.get_flash_size(); @@ -170,7 +171,7 @@ void flashiap_cross_sector_program_test() data[i] = rand() % 256; } for (uint32_t i = prog_size; i < aligned_prog_size; i++) { - data[i] = 0xFF; + data[i] = erase_value; } ret = flash_device.program(data, address, prog_size); diff --git a/drivers/source/FlashIAP.cpp b/drivers/source/FlashIAP.cpp index a452ad51c4f..899e1dbe148 100644 --- a/drivers/source/FlashIAP.cpp +++ b/drivers/source/FlashIAP.cpp @@ -99,6 +99,7 @@ int FlashIAP::program(const void *buffer, uint32_t addr, uint32_t size) uint32_t page_size = get_page_size(); uint32_t flash_size = flash_get_size(&_flash); uint32_t flash_start_addr = flash_get_start_address(&_flash); + uint8_t flash_erase_value = flash_get_erase_value(&_flash); uint32_t chunk, prog_size; const uint8_t *buf = (uint8_t *) buffer; const uint8_t *prog_buf; @@ -123,7 +124,7 @@ int FlashIAP::program(const void *buffer, uint32_t addr, uint32_t size) chunk = std::min(chunk, page_size); memcpy(_page_buf, buf, chunk); if (chunk < page_size) { - memset(_page_buf + chunk, 0xFF, page_size - chunk); + memset(_page_buf + chunk, flash_erase_value, page_size - chunk); } prog_buf = _page_buf; prog_size = page_size;