FreeRTOS+FAT cache memory

Hi All, Any help in understanding size of cache memory which is used in below structure. FFIOManagert *FF_CreateIOManger( FF_CreationParameters_t *pxParameters, FF_Error_t *pxError ); This FFIOManagert object has variable ulMemorySize, whose description says that it shoud in mutiple of sector size. /* The size of the cache memory. ulMemorySize is specified in bytes and must be a multiple of ulSectorSize. */ uint32_t ulMemorySize; I have STM32476-RG Nucleo board with 128 KB RAM, In which I have created 25KB ramdisk so I would to cache memory size as minimum as possible. What is recommended size for cache memory size ? What shoud be criteria to decide apropriate size ? Best regards, Sachin

FreeRTOS+FAT cache memory

HI Sachin, I just measured the actual use of the +FAT internal cache buffers. In a test I sent and received 25 files using 3 FTP threads. When copying to and from an SD-card, I used large (5MB) files, so 3 files were written and read simultaneously. The result is surprising: in all cases, at most 9 buffers were used: ~~~ RAM-disk: Buffers 9 / 15 SD-Card : Buffers 9 / 128 ~~~ So I would provide at least 9 x 512 ( =4608 ) bytes as caching memory. Later on, have a try with less if you like. Note that in most cases, the internal caches are by-passed: FF_Write() and FF_Read() are optimised so that user-buffers are passed directly to the drivers.
What is recommended size for cache memory size ?
9 x 512 bytes
What should be criteria to decide appropriate size ?
Look at how many files are open at the same time and how many tasks are accessing the same volumes (RAM-disk, SD-card). It should not get locked-up; task waiting for ither tasks. There is a time-out when waiting for a free cache buffer: grep for FF_GETBUFFER_WAIT_TIME_MS, by default 20 seconds. Regards.

FreeRTOS+FAT cache memory

Thank you for deterministic reply. In my case I will be using 1 file at a time, at most I will be working on 2 files only. So I am setting define mainIO_MANAGER_CACHE_SIZE ( 5UL * mainRAM_DISK_SECTOR_SIZE ) Best regards, Sachin