Skip to content

Commit 245a9aa

Browse files
authored
Merge pull request #7128 from davidsaada/david_lpc_flash_api_fix
Fix flash_program_page API in LPC boards.
2 parents 3e2e6a7 + 9e5efbc commit 245a9aa

File tree

2 files changed

+1
-44
lines changed
  • TESTS/mbed_hal/flash/functional_tests
  • targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC

2 files changed

+1
-44
lines changed

TESTS/mbed_hal/flash/functional_tests/main.cpp

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -229,44 +229,6 @@ void flash_program_page_test()
229229
delete[] data_flashed;
230230
}
231231

232-
// make sure programming works with an unaligned data buffer
233-
void flash_buffer_alignment_test()
234-
{
235-
flash_t test_flash;
236-
int32_t ret = flash_init(&test_flash);
237-
TEST_ASSERT_EQUAL_INT32(0, ret);
238-
239-
const uint32_t page_size = flash_get_page_size(&test_flash);
240-
const uint32_t buf_size = page_size + 4;
241-
uint8_t *data = new uint8_t[buf_size];
242-
uint8_t *data_flashed = new uint8_t[buf_size];
243-
for (uint32_t i = 0; i < buf_size; i++) {
244-
data[i] = i & 0xFF;
245-
}
246-
247-
// use the last four pages for the alignment test
248-
const uint32_t flash_end = flash_get_start_address(&test_flash) + flash_get_size(&test_flash);
249-
const uint32_t test_addr = flash_end - page_size * 4;
250-
const uint32_t erase_sector_boundary = ALIGN_DOWN(test_addr, flash_get_sector_size(&test_flash, test_addr));
251-
erase_range(&test_flash, erase_sector_boundary, flash_end - erase_sector_boundary);
252-
253-
// make sure page program works with an unaligned data buffer
254-
for (uint32_t i = 0; i < 4; i++) {
255-
const uint32_t addr = test_addr + i * page_size;
256-
ret = flash_program_page(&test_flash, addr, data + i, page_size);
257-
TEST_ASSERT_EQUAL_INT32(0, ret);
258-
259-
ret = flash_read(&test_flash, addr, data_flashed, page_size);
260-
TEST_ASSERT_EQUAL_INT32(0, ret);
261-
TEST_ASSERT_EQUAL_UINT8_ARRAY(data + i, data_flashed, page_size);
262-
}
263-
264-
ret = flash_free(&test_flash);
265-
TEST_ASSERT_EQUAL_INT32(0, ret);
266-
delete[] data;
267-
delete[] data_flashed;
268-
}
269-
270232
// check the execution speed at the start and end of the test to make sure
271233
// cache settings weren't changed
272234
void flash_clock_and_cache_test()
@@ -281,7 +243,6 @@ Case cases[] = {
281243
Case("Flash - mapping alignment", flash_mapping_alignment_test),
282244
Case("Flash - erase sector", flash_erase_sector_test),
283245
Case("Flash - program page", flash_program_page_test),
284-
Case("Flash - buffer alignment test", flash_buffer_alignment_test),
285246
Case("Flash - clock and cache test", flash_clock_and_cache_test),
286247
};
287248

targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/flash_api.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ int32_t flash_program_page(flash_t *obj, uint32_t address, const uint8_t *data,
6161

6262
uint32_t status;
6363
int32_t ret = -1;
64-
uint8_t buf[FSL_FEATURE_SYSCON_FLASH_PAGE_SIZE_BYTES];
6564

6665
if (address == 0) { // Check for Vector Table
6766
n = *((unsigned long *)(data + 0)) +
@@ -74,17 +73,14 @@ int32_t flash_program_page(flash_t *obj, uint32_t address, const uint8_t *data,
7473
*((unsigned long *)(data + 7)) = 0 - n; // Signature at Reserved Vector
7574
}
7675

77-
/* Copy into a local buffer to ensure address is word-aligned */
78-
memcpy(&buf, data, FSL_FEATURE_SYSCON_FLASH_PAGE_SIZE_BYTES);
79-
8076
/* We need to prevent flash accesses during program operation */
8177
core_util_critical_section_enter();
8278

8379
sector_number = address / FSL_FEATURE_SYSCON_FLASH_SECTOR_SIZE_BYTES; // Get Sector Number
8480

8581
status = FLASHIAP_PrepareSectorForWrite(sector_number, sector_number);
8682
if (status == kStatus_FLASHIAP_Success) {
87-
status = FLASHIAP_CopyRamToFlash(address, (uint32_t *)&buf,
83+
status = FLASHIAP_CopyRamToFlash(address, (uint32_t *)data,
8884
FSL_FEATURE_SYSCON_FLASH_PAGE_SIZE_BYTES, SystemCoreClock);
8985
if (status == kStatus_FLASHIAP_Success) {
9086
ret = 0;

0 commit comments

Comments
 (0)