tests/storage/stream_flash: Support for devices without explicit erase
Adds code that runs erase only when needed. Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
This commit is contained in:
parent
95dfd1210d
commit
27f5291b94
2 changed files with 29 additions and 1 deletions
|
@ -41,7 +41,9 @@ static uint8_t generic_buf[BUF_LEN];
|
||||||
static uint8_t read_buf[TESTBUF_SIZE];
|
static uint8_t read_buf[TESTBUF_SIZE];
|
||||||
const static uint8_t write_buf[TESTBUF_SIZE] = {[0 ... TESTBUF_SIZE - 1] = 0xaa};
|
const static uint8_t write_buf[TESTBUF_SIZE] = {[0 ... TESTBUF_SIZE - 1] = 0xaa};
|
||||||
static uint8_t written_pattern[TESTBUF_SIZE] = {[0 ... TESTBUF_SIZE - 1] = 0xaa};
|
static uint8_t written_pattern[TESTBUF_SIZE] = {[0 ... TESTBUF_SIZE - 1] = 0xaa};
|
||||||
|
#if defined(CONFIG_FLASH_HAS_EXPLICIT_ERASE)
|
||||||
static uint8_t erased_pattern[TESTBUF_SIZE] = {[0 ... TESTBUF_SIZE - 1] = 0xff};
|
static uint8_t erased_pattern[TESTBUF_SIZE] = {[0 ... TESTBUF_SIZE - 1] = 0xff};
|
||||||
|
#endif
|
||||||
|
|
||||||
#define VERIFY_BUF(start, size, buf) \
|
#define VERIFY_BUF(start, size, buf) \
|
||||||
do { \
|
do { \
|
||||||
|
@ -51,7 +53,11 @@ do { \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define VERIFY_WRITTEN(start, size) VERIFY_BUF(start, size, written_pattern)
|
#define VERIFY_WRITTEN(start, size) VERIFY_BUF(start, size, written_pattern)
|
||||||
|
#if defined(CONFIG_FLASH_HAS_EXPLICIT_ERASE)
|
||||||
#define VERIFY_ERASED(start, size) VERIFY_BUF(start, size, erased_pattern)
|
#define VERIFY_ERASED(start, size) VERIFY_BUF(start, size, erased_pattern)
|
||||||
|
#else
|
||||||
|
#define VERIFY_ERASED(start, size)
|
||||||
|
#endif
|
||||||
|
|
||||||
int stream_flash_callback(uint8_t *buf, size_t len, size_t offset)
|
int stream_flash_callback(uint8_t *buf, size_t len, size_t offset)
|
||||||
{
|
{
|
||||||
|
@ -66,7 +72,15 @@ int stream_flash_callback(uint8_t *buf, size_t len, size_t offset)
|
||||||
|
|
||||||
static void erase_flash(void)
|
static void erase_flash(void)
|
||||||
{
|
{
|
||||||
|
#if IS_ENABLED(CONFIG_FLASH_HAS_EXPLICIT_ERASE)
|
||||||
int rc;
|
int rc;
|
||||||
|
#if IS_ENABLED(CONFIG_FLASH_HAS_NO_EXPLICIT_ERASE)
|
||||||
|
const struct flash_parameters *fparam = flash_get_parameters(fdev);
|
||||||
|
|
||||||
|
if (!(flash_params_get_erase_cap(fparam) & FLASH_ERASE_C_EXPLICIT)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < MAX_NUM_PAGES; i++) {
|
for (int i = 0; i < MAX_NUM_PAGES; i++) {
|
||||||
rc = flash_erase(fdev,
|
rc = flash_erase(fdev,
|
||||||
|
@ -74,6 +88,7 @@ static void erase_flash(void)
|
||||||
layout->pages_size);
|
layout->pages_size);
|
||||||
zassert_equal(rc, 0, "should succeed");
|
zassert_equal(rc, 0, "should succeed");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -588,7 +603,7 @@ ZTEST(lib_stream_flash, test_stream_flash_progress_resume)
|
||||||
bytes_written = load_progress(progress_key);
|
bytes_written = load_progress(progress_key);
|
||||||
zassert_equal(bytes_written, bytes_written_old,
|
zassert_equal(bytes_written, bytes_written_old,
|
||||||
"expected bytes_written to be loaded");
|
"expected bytes_written to be loaded");
|
||||||
#ifdef CONFIG_STREAM_FLASH_ERASE
|
#if defined(CONFIG_STREAM_FLASH_ERASE)
|
||||||
zassert_equal(erase_offset_old, ctx.last_erased_page_start_offset,
|
zassert_equal(erase_offset_old, ctx.last_erased_page_start_offset,
|
||||||
"expected last erased page offset to be loaded");
|
"expected last erased page offset to be loaded");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -9,6 +9,19 @@ common:
|
||||||
tests:
|
tests:
|
||||||
storage.stream_flash:
|
storage.stream_flash:
|
||||||
tags: stream_flash
|
tags: stream_flash
|
||||||
|
storage.stream_flash.simulator.no_explicit_erase:
|
||||||
|
extra_args:
|
||||||
|
- CONFIG_STREAM_FLASH_ERASE=n
|
||||||
|
- CONFIG_FLASH_SIMULATOR_EXPLICIT_ERASE=n
|
||||||
|
platform_allow:
|
||||||
|
- native_posix
|
||||||
|
- native_posix/native/64
|
||||||
|
- native_sim
|
||||||
|
- native_sim/native/64
|
||||||
|
tags: stream_flash
|
||||||
|
storage.stream_flash.no_explicit_erase:
|
||||||
|
platform_allow:
|
||||||
|
- nrf54l15pdk/nrf54l15/cpuapp
|
||||||
storage.stream_flash.dword_wbs:
|
storage.stream_flash.dword_wbs:
|
||||||
extra_args: DTC_OVERLAY_FILE=unaligned_flush.overlay
|
extra_args: DTC_OVERLAY_FILE=unaligned_flush.overlay
|
||||||
tags: stream_flash
|
tags: stream_flash
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue