cherryUSB + msc( nor-flash) +fatfs 。如何实现即可U盘,也可以程序访问?

cherryUSB + msc( nor-flash) +fatfs 。如何实现即可U盘,也可以程序访问?

我用了msc的程序可以成为U盘.

#ifndef FS_REGION_START_ADDR

#error "Need to define file system start address!"

#endif

#define FS_ROOT “root”

/**

* @brief Mount fs.

*/

int mnt_init(void)

{

register_mtd_device(FS_REGION_START_ADDR, FS_REGION_SIZE, FS_ROOT);

if (dfs_mount(FS_ROOT, "/", "elm", 0, 0) == 0) // fs exist

{

    rt_kprintf("mount fs on flash to root success\\n");

}

else

{

    // auto mkfs, remove it if you want to mkfs manual

    rt_kprintf("mount fs on flash to root fail\\n");

    if (dfs_mkfs("elm", FS_ROOT) == 0)//Format file system

    {

        rt_kprintf("make elm fs on flash sucess, mount again\\n");

        if (dfs_mount(FS_ROOT, "/", "elm", 0, 0) == 0)

            rt_kprintf("mount fs on flash success\\n");

        else

            rt_kprintf("mount to fs on flash fail\\n");

    }

    else

        rt_kprintf("dfs_mkfs elm flash fail\\n");

}

return RT_EOK;

}

INIT_ENV_EXPORT(mnt_init);

但两个地方访问的不是同一个文件。

但我看FLASH地址都是一样的。

#define MSC_BLOCK_SIZE 512

#define FLASH_MSC_START_ADDR (FS_REGION_START_ADDR)

#define FLASH_MSC_TOTAL_SIZE (FS_REGION_SIZE)

#ifndef SPI_NOR_SECT_SIZE

#define SPI_NOR_SECT_SIZE 4096

#endif

没太看明白需求,既做U盘又可以程序访问是什么意思

把FS_ROOT 挂载在elm上,也可以连接上USB后变成U盘。电脑也可以访问FS_ROOT的空间。


这两个地方的配置改成4096,和flash物理扇区大小一样才能都识别出来。