some esp_vfs_fat and FatFs functions are unavailable

kernic
Posts: 11
Joined: Tue Aug 20, 2024 10:33 pm

some esp_vfs_fat and FatFs functions are unavailable

Postby kernic » Tue Aug 20, 2024 11:45 pm

In the documentation, we are told to use the #include "esp_vfs_fat.h" header. then the documentation proceed do define a bunch of functions like esp_vfs_fat_test_contiguous_file, and esp_vfs_fat_create_contiguous_file which I need for performance reasons since I want to allocate a contiguous file for my database project. but unfortunately, it is impossible to call any other function but the bare minimum to mount the sd card (for example the esp_vfs_fat_sdspi_mount() function and the basic f_open() function from fatfs).

I do not understand why after including the "ff.h" header, even the f_expand from fatfs isn't available(since it is available in the offical fatfs doc), and only basic stuff like f_open will work.

same thing with what comes from the esp_vfs_fat.h helper functions, I can just do stuff like esp_vfs_fat_sdspi_mount but again esp_vfs_fat_create_contiguous_file doesn't work.

that would be really nice if I could allocate a contiguous file, thanks for reading

ESP_adokitkat
Posts: 49
Joined: Thu Jun 22, 2023 12:50 pm

Re: some esp_vfs_fat and FatFs functions are unavailable

Postby ESP_adokitkat » Thu Aug 22, 2024 2:41 pm

Hello. Which esp-idf version are you using? It is only available from v5.3 stable branch (or in release/v5.3 or master branch). To make f_expand from fatfs available on lower idf version you have to modify `components/fatfs/src/ffconf.h` from `#define FF_USE_EXPAND 0` to `#define FF_USE_EXPAND 1`.

kernic
Posts: 11
Joined: Tue Aug 20, 2024 10:33 pm

Re: some esp_vfs_fat and FatFs functions are unavailable

Postby kernic » Thu Aug 22, 2024 11:13 pm

I'm pretty sure I had the esp extension in visual studio at 5.3, since I remember downgrading it to 5.0 with no success(these days with the millions lines of code I expect newer versions of software to break, so my first instinct was to downgrade to 5.0 instead of trying to upgrade).

I found out about #define FF_USE_EXPAND 1 after spinning around for 3 hours, I ended up on some stack overflow post about another mcu that said to change the ff.conf for a totally irrelated parameters, but quickly scanning through the ff.conf on github even if I almost missed the #define FF_USE_EXPAND 1 property from a hair, I fortunately saw it and realized it needed to be set to 1 instead of 0.

so then I tried to find the location of ff.conf (I took some env variable and searched its path in the ide) and I was able to turn FF_USE_EXPAND to 1 in ff.conf.

But I don't understand
1) why someone would answer my post at all(I think you are an admin that works for espressif)
2) how you were able to locate my issue instantly and know exactly what my problem was (even with the #define FF_USE_EXPAND 1 and not just tell me to updgrade the idf), I literally struggled for 3 hours and almost missed it

anyway if you could just answer back on 2, Thanks a lot for your answer! I guess you have some pet project too that requires fatfs or maybe you just know about ffconf intuitively because you have a some experience in the field and know to check config files first thing when a func isn't available but should be?

ESP_adokitkat
Posts: 49
Joined: Thu Jun 22, 2023 12:50 pm

Re: some esp_vfs_fat and FatFs functions are unavailable

Postby ESP_adokitkat » Fri Aug 23, 2024 2:30 pm

Well, yes, I am an employee of Espressif, hence "ESP_" in my nickname here :)

I was able to pinpoint your issue because it was me who enabled FF_USE_EXPAND and added those helper functions to esp-idf (and they were able to make it to release v5.3) after noticing it wasn't enabled before and could have some use.

Who is online

Users browsing this forum: Baidu [Spider] and 130 guests