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_format.h
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
chips.
Media cannot be used to hold a FreeRTOS+FAT file system until it has
been partitioned.
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
{
eSizeIsQuota,
eSizeIsPercent,
FF_Size_Sectors,
} eSizeType_t;
typedef struct _FF_PartitionParameters
{
uint32_t ulSectorCount;
uint32_t ulHiddenSectors;
uint32_t ulInterSpace;
BaseType_t xSizes[ FF_MAX_PARTITIONS ];
BaseType_t xPrimaryCount;
eSizeType_t eSizeType;
} FF_PartitionParameters;
The FF_PartitionParameters and associated types
|
Parameters:
pxDisk
|
The FF_Disk_t structure that describes the media being
partitioned.
|
FF_FormatParameters
|
A pointer to a structure that describes how the media will be
partitioned.
|
Returns:
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.
Example usage:
#define HIDDEN_SECTOR_COUNT 8
#define PRIMARY_PARTITIONS 1
#define PARTITION_NUMBER 0
static FF_Error_t prvPartitionAndFormatDisk( FF_Disk_t *pxDisk )
{
FF_PartitionParameters xPartition;
FF_Error_t xError;
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 ) );
}
return xError;
}
Using the FF_Partition() and FF_Format() functions to partition the disk, then format a partition
|
|
|