FlashIAP: Get erase value from HAL instead of hardcoding it

pull/11752/head
Mike Naberezny 2019-10-26 14:11:42 -07:00
parent e1c3de649d
commit 6be96ba4b2
2 changed files with 4 additions and 2 deletions

View File

@ -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);

View File

@ -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;