硬汉嵌入式论坛

 找回密码
 立即注册
查看: 14932|回复: 13
收起左侧

[ThreadX全家桶] V7板子 Threadx+USBX+FILEX SD卡模拟U盘

  [复制链接]

17

主题

29

回帖

85

积分

初级会员

积分
85
发表于 2020-12-8 22:34:22 | 显示全部楼层 |阅读模式
捣鼓到现在,在自己的V7板子上测试成功,可以正常读写,使用的是32G SD卡。

V7-Threadx_UBSX_FILEX_SD.7z

9.38 MB, 下载次数: 637

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-12-8 22:47:04 | 显示全部楼层
非常感谢楼主分享,后面做教程省了不少事
回复

使用道具 举报

17

主题

29

回帖

85

积分

初级会员

积分
85
 楼主| 发表于 2020-12-9 08:32:56 | 显示全部楼层
早上发现问题,昨天是参考了硬汉的Fatfs模拟U盘的例程,今天发现要使用Fatfs模拟U盘的例程打开一次模拟U盘,再下载我发的这个程序,电脑才能识别到
回复

使用道具 举报

3

主题

111

回帖

120

积分

初级会员

积分
120
发表于 2020-12-9 08:36:02 | 显示全部楼层
niubility
回复

使用道具 举报

3

主题

111

回帖

120

积分

初级会员

积分
120
发表于 2020-12-9 08:36:11 | 显示全部楼层
niubility!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-12-9 14:35:58 | 显示全部楼层
阿米的小粉丝 发表于 2020-12-9 08:32
早上发现问题,昨天是参考了硬汉的Fatfs模拟U盘的例程,今天发现要使用Fatfs模拟U盘的例程打开一次模拟U盘 ...

谢谢告知这个问题。
回复

使用道具 举报

22

主题

250

回帖

321

积分

高级会员

积分
321
发表于 2020-12-9 18:19:24 | 显示全部楼层
非常感谢分享。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2020-12-11 09:47:31 | 显示全部楼层
楼主的代码能不能直接在电脑端格式化模拟U盘?
我这边格式化有问题,因为格式化的时候,需要全部重写文件系统,所以会从 sector 0 开始写入。
而 fx 的 写入函数 fx_media_write最终会执行到函数 _fx_utility_logical_sector_write,这个真正的写入函数里(308行)会判断 sector 的值是否为0,为0则返回 sector 无效错误,所以就格式化不成功。

我现在遇到的问题也是 fx 创建的文件系统 window不能识别,U盘是找到了,但是打不开。
我就想着直接在电脑端格式化一下,但是遇到了上面的问题,不能写入 sector 0,格式化失败。



回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2020-12-11 10:17:05 | 显示全部楼层
ihavedone 发表于 2020-12-11 09:47
楼主的代码能不能直接在电脑端格式化模拟U盘?
我这边格式化有问题,因为格式化的时候,需要全部重写文件 ...

重新实现了 USB 的回调函数,不使用示例中的 fx_media_read 和 fx_media_write,改成了更底层的 spi flash 操作函数(如果是别的存储器件,请改成对应的操作代码),就可以格式化了。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2020-12-11 11:46:54 | 显示全部楼层
ihavedone 发表于 2020-12-11 10:17
重新实现了 USB 的回调函数,不使用示例中的 fx_media_read 和 fx_media_write,改成了更底层的 spi flas ...

又有一个问题。
模拟U盘中写入文件后(比如写个文本并保存),之后如果不点弹出U盘,直接拔掉。
之后再连上去文件还在,但里面的内容都没了,并且重新编辑后不能保存,提示文件正在使用。

如果不点弹出U盘,等待一到两分钟,这时候不点弹出,直接拔掉,就不会有问题。
个人猜测是等待一段时间后电脑自动将缓存写入U盘了,所以跟踪调试了一把,发现确实在一段时间后又进入了一次写回调函数。这之后再点弹出U盘,也不会再有新的写入操作。

但是在U盘设置里我看了是快速弹出模式,按道理不应该要等这么久之后才写入缓存的,不清楚哪里的问题。

回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2020-12-22 11:57:27 | 显示全部楼层
ihavedone 发表于 2020-12-11 11:46
又有一个问题。
模拟U盘中写入文件后(比如写个文本并保存),之后如果不点弹出U盘,直接拔掉。
之后再 ...

USB有没有遇到输出端点NAK的问题?
回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2021-1-18 15:55:15 | 显示全部楼层
谢谢分享。
代码不规范,亲人两行泪!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-1-20 15:40:27 | 显示全部楼层
阿米的小粉丝 发表于 2020-12-9 08:32
早上发现问题,昨天是参考了硬汉的Fatfs模拟U盘的例程,今天发现要使用Fatfs模拟U盘的例程打开一次模拟U盘 ...

帮你把这个问题解决了,修改USB初始化函数即可,完整例子。
V7-Threadx_UBSX_FILEX_SD.rar (26.88 MB, 下载次数: 409)
回复

使用道具 举报

14

主题

99

回帖

141

积分

初级会员

积分
141
发表于 2021-1-20 17:05:34 | 显示全部楼层
eric2013 发表于 2021-1-20 15:40
帮你把这个问题解决了,修改USB初始化函数即可,完整例子。

大神,多多学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 07:23 , Processed in 0.201660 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表