Skip to content

Commit 299c7f2

Browse files
author
Marcus Chang
committed
mbed-hal: Fixed flash test
The test assumed that data written to flash would be memory mapped and directly accessible. On some platform this is not the case and data has to read back through an explicit read command. The test has been changed to use the flash read command instead of direct memory access.
1 parent 953b925 commit 299c7f2

File tree

1 file changed

+13
-3
lines changed
  • TESTS/mbed_hal/flash/functional_tests

1 file changed

+13
-3
lines changed

TESTS/mbed_hal/flash/functional_tests/main.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ void flash_mapping_alignment_test()
148148
TEST_ASSERT_EQUAL(0, sector_start % sector_size);
149149
// All address in a sector must return the same sector size
150150
TEST_ASSERT_EQUAL(sector_size, end_sector_size);
151-
152151
}
153152

154153
// Make sure unmapped flash is reported correctly
@@ -185,6 +184,7 @@ void flash_program_page_test()
185184

186185
uint32_t test_size = flash_get_page_size(&test_flash);
187186
uint8_t *data = new uint8_t[test_size];
187+
uint8_t *data_flashed = new uint8_t[test_size];
188188
for (uint32_t i = 0; i < test_size; i++) {
189189
data[i] = 0xCE;
190190
}
@@ -199,7 +199,9 @@ void flash_program_page_test()
199199

200200
ret = flash_program_page(&test_flash, address, data, test_size);
201201
TEST_ASSERT_EQUAL_INT32(0, ret);
202-
uint8_t *data_flashed = (uint8_t *)address;
202+
203+
ret = flash_read(&test_flash, address, data_flashed, test_size);
204+
TEST_ASSERT_EQUAL_INT32(0, ret);
203205
TEST_ASSERT_EQUAL_UINT8_ARRAY(data, data_flashed, test_size);
204206

205207
// sector size might not be same as page size
@@ -213,11 +215,15 @@ void flash_program_page_test()
213215
}
214216
ret = flash_program_page(&test_flash, address, data, test_size);
215217
TEST_ASSERT_EQUAL_INT32(0, ret);
218+
219+
ret = flash_read(&test_flash, address, data_flashed, test_size);
220+
TEST_ASSERT_EQUAL_INT32(0, ret);
216221
TEST_ASSERT_EQUAL_UINT8_ARRAY(data, data_flashed, test_size);
217222

218223
ret = flash_free(&test_flash);
219224
TEST_ASSERT_EQUAL_INT32(0, ret);
220225
delete[] data;
226+
delete[] data_flashed;
221227
}
222228

223229
// make sure programming works with an unaligned data buffer
@@ -230,6 +236,7 @@ void flash_buffer_alignment_test()
230236
const uint32_t page_size = flash_get_page_size(&test_flash);
231237
const uint32_t buf_size = page_size + 4;
232238
uint8_t *data = new uint8_t[buf_size];
239+
uint8_t *data_flashed = new uint8_t[buf_size];
233240
for (uint32_t i = 0; i < buf_size; i++) {
234241
data[i] = i & 0xFF;
235242
}
@@ -245,13 +252,16 @@ void flash_buffer_alignment_test()
245252
const uint32_t addr = test_addr + i * page_size;
246253
ret = flash_program_page(&test_flash, addr, data + i, page_size);
247254
TEST_ASSERT_EQUAL_INT32(0, ret);
248-
uint8_t *data_flashed = (uint8_t *)addr;
255+
256+
ret = flash_read(&test_flash, addr, data_flashed, page_size);
257+
TEST_ASSERT_EQUAL_INT32(0, ret);
249258
TEST_ASSERT_EQUAL_UINT8_ARRAY(data + i, data_flashed, page_size);
250259
}
251260

252261
ret = flash_free(&test_flash);
253262
TEST_ASSERT_EQUAL_INT32(0, ret);
254263
delete[] data;
264+
delete[] data_flashed;
255265
}
256266

257267
// check the execution speed at the start and end of the test to make sure

0 commit comments

Comments
 (0)