嵌入式技术论坛
直播中

abdkjshd

9年用户 1252经验值
擅长:可编程逻辑
私信 关注
[问答]

在api中如何挂载两个分区呢

想使用dfs挂载elm文件系统,flash已经分好了两个区,但是在api中没有看到如何挂载两个分区,现在只能挂载一个分区。

回帖(3)

李桂兰

2022-9-15 14:25:56
应该是把不同的分区分别注册成不同的设备,然后再挂载文件系统。
获得分区 用这个dfs_filesystem_get_partition();
举报

abdkjshd

2022-9-15 14:26:07
嗯嗯,应该是注册成不同的设备,但是具体操作没搞明白,获得了分区表之后再注册一个设备吗?第一个设备是直接将整个flash注册上,然后去获取分区表的,这样的话,flash就被注册过了。
举报

李桂兰

2022-9-15 14:26:26
可以参考一下 rt-threadcomponentsdriverssdiobloc_dev.c

// 封装一个块设备
struct mmcsd_blk_device
{
    struct rt_mmcsd_card *card;
    rt_list_t list;
    struct rt_device dev;
    struct dfs_partition part;
    struct rt_device_blk_geometry geometry;
    rt_size_t max_req_size;
};
// 对每个分区进行操作
for (i = 0; i < RT_MMCSD_MAX_PARTITION; i++)
{
    // 申请一个设备
    blk_dev = rt_calloc(1, sizeof(struct mmcsd_blk_device));
    if (!blk_dev)
    {
        LOG_E("mmcsd:malloc memory failed!");
        break;
    }
    status = dfs_filesystem_get_partition(&blk_dev->part, sector, i);
    // 注册设备
    rt_device_register(&blk_dev->dev, dname, RT_DEVICE_FLAG_RDWR);
}
这个是对sd卡分区的操作,每个分区都抽象成一个设备,比如三个分区就是 sd0 sd1 sd2, 然后分别在这三个设备上挂载文件系统。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分