Skip to content

Commit 8ecda04

Browse files
de-nordiccarlescufi
authored andcommitted
tests/flash: Fix test assuming erase value to be 0xff
Test assumed non-writen flash to contain 0xff while it is supposed to check for erase_value. The "random" buffer has also been updated to skip values that are equal to erase value. Signed-off-by: Dominik Ermel <[email protected]>
1 parent 7a41a9d commit 8ecda04

File tree

1 file changed

+16
-10
lines changed
  • tests/drivers/flash/common/src

1 file changed

+16
-10
lines changed

tests/drivers/flash/common/src/main.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,21 @@
4343
#endif
4444

4545
#define EXPECTED_SIZE 512
46-
#define CANARY 0xff
4746

4847
static const struct device *const flash_dev = TEST_AREA_DEVICE;
4948
static struct flash_pages_info page_info;
5049
static uint8_t __aligned(4) expected[EXPECTED_SIZE];
50+
static const struct flash_parameters *flash_params;
51+
static uint8_t erase_value;
5152

5253
static void *flash_driver_setup(void)
5354
{
5455
int rc;
5556

5657
zassert_true(device_is_ready(flash_dev));
5758

58-
const struct flash_parameters *flash_params =
59-
flash_get_parameters(flash_dev);
59+
flash_params = flash_get_parameters(flash_dev);
60+
erase_value = flash_params->erase_value;
6061

6162
/* For tests purposes use page (in nrf_qspi_nor page = 64 kB) */
6263
flash_get_page_info_by_offs(flash_dev, TEST_AREA_OFFSET,
@@ -70,8 +71,12 @@ static void *flash_driver_setup(void)
7071
zassert_equal(rc, 0, "Cannot read flash");
7172

7273
/* Fill test buffer with random data */
73-
for (int i = 0; i < EXPECTED_SIZE; i++) {
74-
expected[i] = i;
74+
for (int i = 0, val = 0; i < EXPECTED_SIZE; i++, val++) {
75+
/* Skip erase value */
76+
if (val == erase_value) {
77+
val++;
78+
}
79+
expected[i] = val;
7580
}
7681

7782
/* Check if tested region fits in flash */
@@ -82,7 +87,7 @@ static void *flash_driver_setup(void)
8287
bool is_buf_clear = true;
8388

8489
for (off_t i = 0; i < EXPECTED_SIZE; i++) {
85-
if (buf[i] != flash_params->erase_value) {
90+
if (buf[i] != erase_value) {
8691
is_buf_clear = false;
8792
break;
8893
}
@@ -105,6 +110,7 @@ ZTEST(flash_driver, test_read_unaligned_address)
105110
{
106111
int rc;
107112
uint8_t buf[EXPECTED_SIZE];
113+
const uint8_t canary = erase_value;
108114

109115
rc = flash_write(flash_dev,
110116
page_info.start_offset,
@@ -118,8 +124,8 @@ ZTEST(flash_driver, test_read_unaligned_address)
118124
/* buffer offset; leave space for buffer guard */
119125
for (off_t buf_o = 1; buf_o < 5; buf_o++) {
120126
/* buffer overflow protection */
121-
buf[buf_o - 1] = CANARY;
122-
buf[buf_o + len] = CANARY;
127+
buf[buf_o - 1] = canary;
128+
buf[buf_o + len] = canary;
123129
memset(buf + buf_o, 0, len);
124130
rc = flash_read(flash_dev,
125131
page_info.start_offset + ad_o,
@@ -131,10 +137,10 @@ ZTEST(flash_driver, test_read_unaligned_address)
131137
0, "Flash read failed at len=%d, "
132138
"ad_o=%d, buf_o=%d", len, ad_o, buf_o);
133139
/* check buffer guards */
134-
zassert_equal(buf[buf_o - 1], CANARY,
140+
zassert_equal(buf[buf_o - 1], canary,
135141
"Buffer underflow at len=%d, "
136142
"ad_o=%d, buf_o=%d", len, ad_o, buf_o);
137-
zassert_equal(buf[buf_o + len], CANARY,
143+
zassert_equal(buf[buf_o + len], canary,
138144
"Buffer overflow at len=%d, "
139145
"ad_o=%d, buf_o=%d", len, ad_o, buf_o);
140146
}

0 commit comments

Comments
 (0)