avita 发表于 2023-3-9 13:58:52

FATFS USB 复用

请教一下大家,用 SDRAM + ST UBSD 模拟了一个 U 盘,现在板子内部可以通过 FATFS 读写 SDRAM 模拟 U 盘上的文件,电脑端也可以通过 USB 读取 SDRAM 模拟 U 盘 上的文件。
但现在有一个问题:
* 电脑端创建文件或更新文件后,MCU 端可以正常读取
* MCU 端创建文件或更新文件后,电脑端读取的还是原来的内容,没有更新,(大小,修改日期,内容均未改变)
* 重新插拔一下 USB 线后,电脑端读取的才是更新后的内容

看了下电脑 U盘默认缓存不使能,我以为是 RTC 的原因,为 FATFS 添加 RTC,文件添加 “创建时间” 和“修改时间” 后问题依据

请教一下大家,MCU 端 FATFS 修改文件后如何让电脑端可以识别文件已更改

eric2013 发表于 2023-3-9 15:10:40

处理器没有Cache问题吧

如果没有的话,那只能单片机端控制卸载和重新挂载了,算是个折中办法。估计是单片机端修改了,电脑是并不知道的,也没有人通知他

avita 发表于 2023-3-11 09:33:29

Cache 问题应该是没有的,感觉应该是电脑端的问题,我再研究下看,看看怎么能让他动态刷新

avita 发表于 2023-3-11 10:41:11

感觉这个问题可能不是很好或很容易解决
刚才用 STLink V2.1,突然想起来这个是 DBG + MSD + VCP 多功能的,就试验了一下用 MSD 拖拽更新固件,更新完成后 STLink 虚拟的 FAT 磁盘也是重新挂载了的,这个时候才能在磁盘内看到本次更新拖拽固件更新的结果,SUCCESS 或 FAILED 名称的文件

avita 发表于 2023-3-11 14:59:36


感觉找到原因了,改用 MTP 试试

eric2013 发表于 2023-3-12 03:38:19

avita 发表于 2023-3-11 14:59
感觉找到原因了,改用 MTP 试试

我记得很多手机插入电脑就是有个MTP媒体访问

https://learn.microsoft.com/zh-cn/windows/iot-core/connect-your-device/mtp

ZzlYanG 发表于 2023-8-21 14:20:12

能发一下工程代码参考一下吗?
页: [1]
查看完整版本: FATFS USB 复用