可以参考一下 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, 然后分别在这三个设备上挂载文件系统。
可以参考一下 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, 然后分别在这三个设备上挂载文件系统。
举报