From ec1d29f4aeab2f611f288a11e94adbf39655340f Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Wed, 29 Nov 2017 22:23:13 -0500 Subject: [PATCH] check twice for bad filesystem --- atmel-samd/main.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/atmel-samd/main.c b/atmel-samd/main.c index 0013f3e207..2cbe6f88d2 100644 --- a/atmel-samd/main.c +++ b/atmel-samd/main.c @@ -127,16 +127,20 @@ void init_flash_fs(bool create_allowed) { // is bobbling a bit when plugging in a battery. mp_hal_delay_ms(2000); - uint8_t working_buf[_MAX_SS]; - res = f_mkfs(&vfs_fat->fatfs, FM_FAT, 0, working_buf, sizeof(working_buf)); - // Flush the new file system to make sure its repaired immediately. - flash_flush(); - if (res != FR_OK) { - return; - } + // Then try one more time to mount the flash in case it was late coming up. + res = f_mount(&vfs_fat->fatfs); + if (res == FR_NO_FILESYSTEM) { + uint8_t working_buf[_MAX_SS]; + res = f_mkfs(&vfs_fat->fatfs, FM_FAT, 0, working_buf, sizeof(working_buf)); + // Flush the new file system to make sure its repaired immediately. + flash_flush(); + if (res != FR_OK) { + return; + } - // set label - f_setlabel(&vfs_fat->fatfs, "CIRCUITPY"); + // set label + f_setlabel(&vfs_fat->fatfs, "CIRCUITPY"); + } } else if (res != FR_OK) { return; }