FreeRTOS+FAT is still in the lab
FreeRTOS+FAT is already in use in commercial products
and we encourage you to try it yourself. Be aware however that
FreeRTOS+FAT was acquired by Real Time Engineers Ltd., and is
still being documented and updated to
ensure it meets our strict quality standards.
Please use the forum for support,
or contact us directly if you have a specific business interest.
FF_Error_t FF_Partition( FF_Disk_t *pxDisk, FF_PartitionParameters *pxFormatParameters );
The media is the physical device on which files are stored. Examples of
media suitable for use in an embedded file system include SD cards,
solid state disks, NOR flash memory chips, NAND flash chips, and RAM
Media cannot be used to hold a FreeRTOS+FAT file system until it has
Partitioning divides the media into multiple units, each of which is
called a partition. Each partition can then be formatted
to hold its own file system.
How the media is to be partitioned is described by a structure of type
FF_PartitionParameters, which is shown below. A single partition that
fills all available space on the media can be created by simply leaving
the structure's xSizes and xPrimaryCount members at zero.
typedef enum _FF_SizeType
typedef struct _FF_PartitionParameters
BaseType_t xSizes[ FF_MAX_PARTITIONS ];
The FF_PartitionParameters and associated types
The FF_Disk_t structure that describes the media being
A pointer to a structure that describes how the media will be
If the media is successfully partitioned then FF_ERR_NONE is returned.
If the media could not be partitioned then an error code is returned.
FF_GetErrMessage() converts error codes into error descriptions.
#define HIDDEN_SECTOR_COUNT 8
#define PRIMARY_PARTITIONS 1
#define PARTITION_NUMBER 0
static FF_Error_t prvPartitionAndFormatDisk( FF_Disk_t *pxDisk )
memset( &xPartition, 0x00, sizeof( xPartition ) );
xPartition.ulSectorCount = pxDisk->ulNumberOfSectors;
xPartition.ulHiddenSectors = HIDDEN_SECTOR_COUNT;
xPartition.xPrimaryCount = PRIMARY_PARTITIONS;
xPartition.eSizeType = eSizeIsQuota;
xError = FF_Partition( pxDisk, &xPartition );
FF_PRINTF( "FF_Partition: FF_Format: %s\n", FF_GetErrMessage( xError ) );
if( FF_isERR( xError ) == pdFALSE )
xError = FF_Format( pxDisk, ramPARTITION_NUMBER, pdTRUE, pdTRUE );
FF_PRINTF( "FF_RAMDiskInit: FF_Format: %s\n", FF_GetErrMessage( xError ) );
Using the FF_Partition() and FF_Format() functions to partition the disk, then format a partition