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-Plus-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: %sn", FF_GetErrMessage( xError ) );
if( FF_isERR( xError ) == pdFALSE )
{
xError = FF_Format( pxDisk, ramPARTITION_NUMBER, pdTRUE, pdTRUE );
FF_PRINTF( "FF_RAMDiskInit: FF_Format: %sn", FF_GetErrMessage( xError ) );
}
return xError;
}
Using the FF_Partition() and FF_Format() functions to partition the disk, then format a partition
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.