#fatfs #esp-idf #spiffs
#fatfs #esp-idf #spiffs
Вопрос:
Я хочу переключиться с SPIFFS на FAT в своих проектах Esp32 из-за шифрования. В моем примере проекта у меня есть это.
esp_vfs_spiffs_conf_t conf = {
.base_path = "/spiffs",
.partition_label = NULL,
.max_files = 5, // This decides the maximum number of files that can be created on the storage
.format_if_mount_failed = true
};
esp_err_t ret = esp_vfs_spiffs_register(amp;conf);
...
ESP_LOGI(TAG, "Opening file 1");
FILE *f = fopen("/spiffs/hello.json", "w");
if (f == NULL) {
ESP_LOGE(TAG, "Failed to open file 1 for writing test");
}
ESP_LOGI(TAG, "Opening file 2");
FILE *f2 = fopen("/spiffs/hello.txt", "w");
if (f2 == NULL) {
ESP_LOGE(TAG, "Failed to open file 2 for writing test");
return ESP_FAIL;
}
Он работает нормально и создает оба файла, как и ожидалось, но это:
esp_vfs_fat_mount_config_t conf = {
.format_if_mount_failed = true,
.max_files = 5,
.allocation_unit_size = CONFIG_WL_SECTOR_SIZE
};
esp_err_t ret = esp_vfs_fat_spiflash_mount("/fatfs", "storage", amp;conf, amp;s_wl_handle);
ESP_LOGI(TAG, "Opening file 1");
FILE *f = fopen("/fatfs/hello.json", "w");
if (f == NULL) {
ESP_LOGE(TAG, "Failed to open file 1 for writing test");
}
ESP_LOGI(TAG, "Opening file 2");
FILE *f2 = fopen("/fatfs/hello.txt", "w");
if (f2 == NULL) {
ESP_LOGE(TAG, "Failed to open file 2 for writing test");
return ESP_FAIL;
}
сбой для файла json.
I (3672) example: Opening file 1
E (3672) example: Failed to open file 1 for writing test
I (3682) example: Opening file 2
...
Google до сих пор не дал мне ничего о FatFs, имеющих какие-либо проблемы с расширениями файлов. Может кто-нибудь помочь мне понять это?
Комментарии:
1. Можете ли вы изменить уровень отладки на Debug и опубликовать журналы?
2. Также проверьте, что esp_vfs_fat_spiflash_mount возвращает ESP_OK, возможно, fs не смонтирован…
Ответ №1:
Я надеюсь, что проблема уже решена, но я все равно отвечу, чтобы поддержать других разработчиков в подобной борьбе.
Я полагаю, это может произойти из-за того, что вы не включили длинные имена файлов для FATFS. Без поддержки LFN у вас может быть только три символа в расширении (и 8 в имени файла). Чтобы исправить это, пожалуйста, вызовите menuconfig
using idf.py menuconfig
, а затем перейдите в Component config
-> FAT Filesystem support
-> Long filename support
-> Long filename buffer {in heap|on stack}
.
Затем перестройте проект и проверьте, работает ли он сейчас.
Комментарии:
1. Я давно не работал над этим. Но, я думаю, это не было решено. Как можно скорее я перепроверю, но я думаю, что LFN был включен. Будет обновляться здесь, когда появятся новости. Спасибо.