下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

FF_Format()

[FreeRTOS-Plus-FAT 原生 API 引用]

ff_format.h
FF_Error_t FF_Format( FF_Disk_t *pxDisk,
                    BaseType_t xPartitionNumber,
                    BaseType_t xPreferFAT16,
                    BaseType_t xSmallClusters );
		

媒体是用于存储文件的物理设备。 适用于 嵌入式文件系统的媒体的示例包括 SD 卡, 固态磁盘、NOR 闪存芯片、NAND 闪存芯片和 RAM 芯片。

媒体不能用于保存 FreeRTOS-Plus-FAT 文件系统,直至它 被分区

将媒体划分为多个单元,每个单元 被称为一个分区。 然后,可以对每个分区进行格式化 以保存自己的文件系统。 分区可以从外部进行格式化 (例如,Windows 可以格式化 SD 卡),或使用 FF_Format() 函数。

FF_Format() 将动态确定要使用的 FAT 类型和 簇大小。 簇大小将与簇计数相关,而簇 计算和 FAT 类型相关。 xPreferFAT16 和 xSmallClusters 参数 允许指定首选项。 例如,对于小 RAM 磁盘 将两个参数都设置为 true 以使用 FAT16 与小簇,对于 大 SD 卡,则将两个参数都设置为 false 以使用 FAT32 和 大簇。 较大的簇可以更快被访问,而较小的簇 浪费更少的空间,因为它们在文件末尾会有较少的 未使用块。

参数:

pxDisk   描述媒体的 FF_Disk_t 结构体, 该媒体包含要格式化的分区。

xPartitionNumber   要格式化的媒体上的分区数。 分区编号从 0 开始。

xPreferFAT16   如果可能,设置为 pdTRUE 以使用 FAT16,否则 使用 FAT32。

xSmallClusters   如果可能,设置为 pdTRUE 以使用小簇, 否则使用大簇。 当设置为 pdFALSE 时, 将尽可能选择最大的簇大小。 实际 尺寸将取决于所使用的 FAT 类型。

返回:

如果媒体格式化成功,则返回 FF_ERR_NONE。 如果媒体无法格式化,则返回错误代码。 FF_GetErrMessage() 将错误代码转换为错误描述。

用法示例:


#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;

/* Media cannot be used until it has been partitioned. In this
case a single partition is to be created that fills all available space - so
by clearing the xPartition structure to zero. */

memset( &xPartition, 0x00, sizeof( xPartition ) );
xPartition.ulSectorCount = pxDisk->ulNumberOfSectors;
xPartition.ulHiddenSectors = HIDDEN_SECTOR_COUNT;
xPartition.xPrimaryCount = PRIMARY_PARTITIONS;
xPartition.eSizeType = eSizeIsQuota;

/* Perform the partitioning. */
xError = FF_Partition( pxDisk, &xPartition );

/* Print out the result of the partition operation. */
FF_PRINTF( "FF_Partition: FF_Format: %sn", FF_GetErrMessage( xError ) );

/* Was the disk partitioned successfully? */
if( FF_isERR( xError ) == pdFALSE )
{
/* The disk was partitioned successfully. Format the first partition. */
xError = FF_Format( pxDisk, ramPARTITION_NUMBER, pdTRUE, pdTRUE );

/* Print out the result of the format operation. */
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.