Fatfs多分区的读写

目录

一、需要实现多分区的原因

二、Fatfs多分区的实现

三、多分区的读写


Fatfs版本:R0.12c

Fatfs下载地址:http://elm-chan.org/fsw/ff/00index_e.html

一、需要实现多分区的原因

    因工作项目需要,需要读写U盘启动盘,而启动盘一般最少会被划分成2个分区,一个是装放镜像的磁盘,另一个是EFI分区用于引导程序用于引导安装镜像文件。并且启动盘的分区形式主要有GPT、与MBR的分区形式,目前主流启动盘分区形式为GPT形式,但是由于当前版本的Fatfs仅支持MBR分区格式(解决问题后才发现,目前最新的Fatfs的版本为0.14a,从0.14版本开始起已经支持了GPT形式的分区了......)。所以不得不将原来GPT形式的启动盘改成MBR格式的启动盘。

更改启动盘分区格式方法:

  • 使用DiskGenius 直接将GPT分区形式转换成MBR形式(暂时未测试过转化后EFI是否能够正常运行)
  • 使用Ventoy制作MBR形式的启动盘,然后将VTOYEFI盘中的文件替换成自定义的EFI(经测试,可以正常运行引导程序)

使用Ventoy制作启动盘的方法:使用Ventoy制作启动盘

二、Fatfs多分区的实现

(1)这是官网文档中的卷管理的解释:

(2) Fatfs配置多分区步骤 (仅说明FatfsR0.12c版本,最新的Fatfs版本配置方面有较大的改动,但可以提供借鉴)

ffconf.h文件中:

  • _VOLUMES   分区数量默认是1,修改成你想要的逻辑分区的数量(卷数)
  • _MULTI_PARTITION  默认是0,设置成1。(开启多分区)
  • _FS_RPATH  默认是0,需要设置成  >= 1 (使能相对路径函数)

注:最好将 Fatfs的 _FS_EXFAT 也使能了,因为由Ventoy创建的第一个分区为Exfat格式,根据个人需求进行更改

 

在自定的C文件中添加:(根据需求更改,上图说明的十分清楚)

PARTITION VolToPart[_VOLUMES] = {
    {0, 1},     /* "0:" ==> 1st partition on physical drive 0 */
    {0, 2},     /* "1:" ==> 2nd partition on physical drive 0 */
};

三、多分区的读写

由上面的内容可以得知,我们将一个物理驱动盘分了两个逻辑分区,而多分区的读写,可以用以下两种方式:

  • 使用一个FATFS 对象,然后要对不同分区进行读写操作的时候,直接重新挂载就行了
FATFS SDFatFS;    /* File system object for SD logical drive */

/* 挂载分区0 */
 f_mount(&SDFatFS, "0: ", 1);
//......对分区0进行读写操作



/* 挂载分区1 */
 f_mount(&SDFatFS, "1: ", 1);
//......对分区1进行读写操作
  • 使用多个Fatfs对象,对不同分区操作时,直接对不同Fatfs对象进行读写
FATFS SDFatFS[2];    /* File system object for SD logical drive */


 f_mount(&SDFatFS[0], "0: ", 1);
 f_mount(&SDFatFS[1], "1: ", 1);

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鱼的猫丿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值