Each FreeRTOS-Plus-FAT media driver requires a function that writes sectors
to the media on which the embedded file system is stored. How the write
functions actually work is dependent on the media type. For example, if
the media is a RAM disk then data can be written to the RAM using memcpy(),
but if the media is an SD card then the card's command interface will
have to be used via an MMC or SPI peripheral driver.
The Write Function
The write function can take any name, but must have the following prototype:
int32_t FFWrite( uint8_t *pucSource,
uint32_t ulSectorNumber,
uint32_t ulSectorCount,
FF_Disk_t *pxDisk );
The prototype of a function used to write to the media that holds the embedded file system
As an example, below is the outline of the write function used by the
FreeRTOS-Plus-FAT RAM disk driver. The full version contains input parameter
checking, and can be found in
/FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT/portable/common/ff_ramdisk.c.
#define ramSECTOR_SIZE 512
static int32_t prvWriteRAM( uint8_t *pucSource,
uint32_t ulSectorNumber,
uint32_t ulSectorCount,
FF_Disk_t *pxDisk )
{
uint8_t *pucDestination;
pucDestination = ( uint8_t * ) pxDisk->pvTag;
pucDestination += ( ramSECTOR_SIZE * ulSectorNumber );
memcpy( ( void * ) pucDestination,
( void * ) pucSource,
( size_t ) ( ulSectorCount * ramSECTOR_SIZE ) );
return FF_ERR_NONE;
}
The write function used by the RAM disk driver - for clarity input parameter checking is not shown
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.