[Creating a FreeRTOS+FAT Media Driver]
FF_IOManager_t *FF_CreateIOManger( FF_CreationParameters_t *pxParameters, FF_Error_t *pxError );
FreeRTOS+FAT media drivers store information that is common to all media types in a structure of type FF_Disk_t. The pxIOManager member of the FF_Disk_t structure references an object called an input/output manager (IO Manager, or simply IOMAN). The IO manager is responsible for, amongst other things, buffering and caching both file and directory information.
FF_CreateIOManager() creates an IO Manager object.
Parameters are passed into FF_CreateIOManager() in an FF_CreationParameters_t structure.
The pvSemaphore member of the FF_CreationParameters_t structure must be created by a call to the xSemaphoreCreateRecursiveMutex() FreeRTOS API function.
typedef struct xFF_CREATION_PARAMETERS
/* If the memory to use as the IO manager’s cache is provided by the application
writer then pass a pointer to the memory in pucCacheMemory. If the memory to
use as the IO manager’s cache is to be allocated by the IO manager then pass
NULL in pucCacheMemory. */
/* The size of the cache memory. ulMemorySize is specified in bytes and must
be a multiple of ulSectorSize. */
/* Sector size, which is the unit for reading from and writing to the disk.
A sector size of 512 bytes is normal. */
/* The function used to write a sector to the disk. */
/* The function used to read a sector from the disk. */
/* The parameter to pass into the read sector and write sector functions –
basically a pointer back to the FF_Disk_t structure that contains the IO
/* The semaphore used to protect the data structures on the media must be
created using the xSemaphoreCreateRecursiveMutex() API function. */
/* If the media driver is not re-entant then set xBlockDeviceIsReentrant to
pdFALSE – in which case the semaphore will also be used to protect access to
the media driver’s read and write functions. */
The FF_CreationParameters_t structure
A structure of type FF_CreationParameters_t, which
defines the IO manager being created.
Used to pass out an error code.
If the IO manager was created successfully then a pointer to the created IO manager is returned and *pxError is set to FF_ERR_NONE. If the IO manager was not created successfully then NULL is returned and *pxError is set to an error code. FF_GetErrMessage() converts error codes into error descriptions.
The page that documents how to create a FreeRTOS+FAT media driver also demonstrates how to use the FF_CreateIOManger() function.