RT-Thread论坛
直播中

qjqb

8年用户 1198经验值
擅长:5762
私信 关注

请问CherryUSB使用msc类如何挂载到fal分区?

f1c100s平台,使用CherryUSB的msc类的msc_ram_template.c,能够弹出一个内存盘,能够正常格式化和读写。usb device和msc ram的移植应该是没有问题。


主板上采用16MB的nor flash,其中fal有两个分区,能够正常格式化和读写。
现在打算把fal中的一个分区模拟成u盘,分区名”np0”。


使用msc_storage_template.c的模板,其中


void msc_storage_init(void),int usbd_msc_sector_write(uint32_t sector, uint8_t *buffer, uint32_t length),int usbd_msc_sector_read(uint32_t sector, uint8_t *buffer, uint32_t length)
要如何修改,才能关联到fal的分区?


以下是模板的代码


int usbd_msc_sector_read(uint32_t sector, uint8_t *buffer, uint32_t length)
{
    rt_device_read(blk_dev, sector, buffer, length / BLOCK_SIZE);
    return 0;
}
int usbd_msc_sector_write(uint32_t sector, uint8_t *buffer, uint32_t length)
{
    rt_device_write(blk_dev, sector, buffer, length / BLOCK_SIZE);
    return 0;
}
void msc_storage_init(void)
{
    rt_err_t res;
    blk_dev = rt_device_find(BLOCK_DEV_NAME);
    RT_ASSERT(blk_dev);
    res = rt_device_open(blk_dev, RT_DEVICE_FLAG_RDWR);
    RT_ASSERT(res == RT_EOK);
    usbd_desc_register(msc_storage_descriptor);
    usbd_add_interface(usbd_msc_init_intf(&intf0, MSC_OUT_EP, MSC_IN_EP));
    usbd_initialize();
}

回帖(1)

朱红艳

2024-2-26 16:28:00
模板很完善了,指定BLOCK_DEV_NAME为你的分区即可
举报

更多回帖

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