e-MMC возвращает FR_OK при первом запуске, но mk_dir возвращает FR_NO_FILESYSTEM

Я использую библиотеку stm32H753xx и Cube FatFs. После того, как наша e-MMC была припаяна к нашей плате, хочу подвести.

Мои коды запуска здесь:

          res = f_mount(&fat_fs, "0:", 0);
if (res != FR_OK) {
    res = f_mkfs("", FM_ANY, 0, work, sizeof(work));
    if (res != FR_OK) {
        while(1) {
            LOGGER_REPORT(FORMAT_REQUEST_FAILED);
            vTaskDelay(pdMS_TO_TICKS(1000));
        }
    }
    res = f_mount(&fat_fs, "0:", 0);
    if (res != FR_OK) {
        while(1) {
            LOGGER_REPORT(FORMATTED_BUT_NOT_MOUNTED);
            vTaskDelay(pdMS_TO_TICKS(1000));
        }
    }
}

Обычно я ожидаю ошибки на этапе монтирования, если устройство памяти подключается в первый раз, и это объясняет, почему я сделал переход моего программного обеспечения к функциям f_mkfs, если f_mount не работает. Но f_mount возвращает FR_OK, а программное обеспечение здесь пропускает.

После этого я делаю несколько вызовов API, чтобы обнаружить последний каталог в корне и создать новый, указав имя таким образом, чтобы оно было последним +1. ( последний похож на ./70/ новый ./71/ в любом случае) Здесь есть несколько вызовов API f_opendir, f_readdir, f_closedir соответственно, и все они успешно возвращаются, но всякий раз, когда я хочу создать новый каталог, вызывая fs_mkdir, он возвращает FR_NO_FILESYTEM. Если я вызываю f_mkfs после f_mount выше, FAT создается, и программное обеспечение работает, но я не могу вызвать файл f_mkfs и не могу понять, где я должен поместить этот код, чтобы он запускался только один раз при самом начальном запуске e -ММС.

0 ответов

Другие вопросы по тегам