mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #11752 from mnaberez/erase-value
FlashIAP: Get erase value from HAL instead of hardcoding itpull/11756/head
commit
1c5fe1c9f5
|
@ -143,6 +143,7 @@ void flashiap_cross_sector_program_test()
|
||||||
TEST_ASSERT_EQUAL_INT32(0, ret);
|
TEST_ASSERT_EQUAL_INT32(0, ret);
|
||||||
|
|
||||||
uint32_t page_size = flash_device.get_page_size();
|
uint32_t page_size = flash_device.get_page_size();
|
||||||
|
uint8_t erase_value = flash_device.get_erase_value();
|
||||||
|
|
||||||
// Erase last two sectors
|
// Erase last two sectors
|
||||||
uint32_t address = flash_device.get_flash_start() + flash_device.get_flash_size();
|
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;
|
data[i] = rand() % 256;
|
||||||
}
|
}
|
||||||
for (uint32_t i = prog_size; i < aligned_prog_size; i++) {
|
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);
|
ret = flash_device.program(data, address, prog_size);
|
||||||
|
|
|
@ -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 page_size = get_page_size();
|
||||||
uint32_t flash_size = flash_get_size(&_flash);
|
uint32_t flash_size = flash_get_size(&_flash);
|
||||||
uint32_t flash_start_addr = flash_get_start_address(&_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;
|
uint32_t chunk, prog_size;
|
||||||
const uint8_t *buf = (uint8_t *) buffer;
|
const uint8_t *buf = (uint8_t *) buffer;
|
||||||
const uint8_t *prog_buf;
|
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);
|
chunk = std::min(chunk, page_size);
|
||||||
memcpy(_page_buf, buf, chunk);
|
memcpy(_page_buf, buf, chunk);
|
||||||
if (chunk < page_size) {
|
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_buf = _page_buf;
|
||||||
prog_size = page_size;
|
prog_size = page_size;
|
||||||
|
|
Loading…
Reference in New Issue