Merge pull request #11752 from mnaberez/erase-value

FlashIAP: Get erase value from HAL instead of hardcoding it
pull/11756/head
Martin Kojtal 2019-10-28 11:21:10 +01:00 committed by GitHub
commit 1c5fe1c9f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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;