diff --git a/Marlin/src/HAL/HAL_LPC1768/persistent_store_impl.cpp b/Marlin/src/HAL/HAL_LPC1768/persistent_store_impl.cpp index 6177f62e91..eb78b96130 100644 --- a/Marlin/src/HAL/HAL_LPC1768/persistent_store_impl.cpp +++ b/Marlin/src/HAL/HAL_LPC1768/persistent_store_impl.cpp @@ -19,14 +19,31 @@ FATFS fat_fs; FIL eeprom_file; bool access_start() { + UINT file_size = 0, + bytes_written = 0; + const char eeprom_zero = 0xFF; MSC_Aquire_Lock(); - if(f_mount(&fat_fs, "", 1)){ + if (f_mount(&fat_fs, "", 1)) { MSC_Release_Lock(); return false; } FRESULT res = f_open(&eeprom_file, "eeprom.dat", FA_OPEN_ALWAYS | FA_WRITE | FA_READ); - if(res) MSC_Release_Lock(); - return (res == FR_OK); + if (res) MSC_Release_Lock(); + + if (res == FR_OK) file_size = f_size(&eeprom_file); + + if (res == FR_OK) { + f_lseek(&eeprom_file, file_size); + while (file_size < E2END && res == FR_OK) { + res = f_write(&eeprom_file, &eeprom_zero, 1, &bytes_written); + file_size++; + } + } + if (res == FR_OK) { + f_lseek(&eeprom_file, 0); + f_sync(&eeprom_file); + } + return res == FR_OK; } bool access_finish() {