heinbali01 wrote on Wednesday, April 25, 2018:
is there a repository I should be aware of when it comes to FreeRTOS Labs?
Unfortunately there isn’t. FreeRTOS+FAT has become a bit of an orphan. All time and energy goes to the products in the AWS/FreeRTOS release
But I am still actively maintaining FreeRTOS+FAT: implementing requests and fixes.
Please comment your findings with the informal FreeRTOS+FAT “release” here above.
Here is a complete list of all changes since the 160919 Labs release:
ff_dir.c : FF_MkDir()
refuse to create a directory with an empty name
ff_fat.c : FF_GetFreeSize()
in case of an error, return 0
ff_file.c : FF_FileSize()
This function returns the size of a file, or a negative number in case of an error.
Hence, the maximum size returned was returned is 2 GB.
We’ve added a new function:
FF_Error_t FF_GetFileSize( FF_FILE *pxFile, uint32_t *pulSize );
which separates the length from the error code.
ff_file.c : FF_ExtendFile()
Sometimes while building up a file, it may be more efficient not to flush the changes immediately. When defining
0, there is no immediate flushing.
ff_file.c : FF_Seek()
Seeking didn’t work for sizes larger than 2 GB. Although the parameter
int32_t lOffset is signed, it will now be casted to 32-bits unsigned:
ulPosition = ( uint32_t )lOffset;
All options (
END ) re-tested.
ff_file.c : FF_Close()
FF_FlushCache() is now called at the end of the function in order to also write the last changes.
ff_format.c : FF_Format()
lRemaining should have been declared unsigned:
Also: a small optimisation for large SD-cards:
“Putting the FAT-table into the second 4MB erase block gives a higher performance and a longer life-time”
ff_format.c : FF_Partition()
ulHiddenSectors must be at least
( see this post )
ff_ioman.c : FF_CreateIOManger()
FF_CreateEvents shall only be called in case an
pxIOManager was successfully created.
ff_ioman.c : FF_DeleteIOManager()
Added a call to
FF_DeleteEvents(), which will delete the event group belonging to the I/O manager.
ff_ioman.c : FF_FlushCache()
Added a user application hook per disk:
fnFlushApplicationHook(). This is useful for e.g. NAND-drivers.
ff_ioman.c : FF_Mount()
Make sure that
pcVolumeLabel is null-terminated.
ff_ioman.c : FF_IncreaseFreeClusters()
A lock is needed before
ulLastFreeCluster can be changed. But before taking this lock, check if has already been taken to avoid a dead lock.
ff_locking.c : FF_DeleteEvents
This is a new function which deletes ( frees up ) the event group belonging to an I/O manager.
ff_stdio.c : ff_filelength()
This function will now call
FF_GetFileSize() in order to get the
unsigned length of a file, increasing the maximum reported size from 2 to 4 GB.
ff_sys.c : *
This module combines several I/O managers ( = disks ) into a single file system that starts with a root
All code in
ff_sys.c has been re-written ( re-styled ) and re-tested.