请教:在使用g_file_storage模块时碰见的现象
时间:2008-05-08
来源:互联网
小弟刚刚毕业几个月,目前正在从事基于RMI AU1200的PMP样机的嵌入式Linux开发,这两天在使用g_file_storage模块的时候碰到了完全不知道方向的问题,上来虚心向大家求教。
PMP样机之前使用Nandflash作为主存储介质,为了和PC相连,我在Nandflash上使用dd命令创建了2GB的空文件/mnt/mtd6/disk1,然后我调用 modprobe g_file_storage file=/mnt/mtd6/disk1,然后加载usb-otg模块并和PC相连被识别为一个磁盘,然后从PC上复制数据到该磁盘上一切正常,在串口控制台检测到的也没有任何异常信息。
但是现在的PMP样机不再使用Nandflash而是直接使用fat32 格式的SDCard作为主存储介质,但是仍然要实现当SDCard插入样机的时候,可以通过USB-OTG接口和PC相连并让PC在这种情况下可以访问SDCard,于是我仍然使用g_file_storage模块,使用命令
modprobe g_file_storage file=/dev/mmcblk0
然后加载usb-otg模块并和PC相连仍然也可被识别为一个磁盘,但是从PC上向该磁盘上复制一个约160MB的数据文件时却出现了问题:
在Windosw/PC上显式正在复制的时候,突然会出现进度条停止不前,而同时在串口控制台下可以看到不断的形如
……
amd5536udc: Connect: Speed = HIGH_SPEED
amd5536udc: Connect: Speed = HIGH_SPEED
……
的信息,这是在/drivers/usb/gadget/amd5536udc.c中的 udc_dev_isr 中断处理程序中打印出来的消息,然后直至几分钟后控制台出现
g_file_storage gadget: high speed config
的消息后,控制台消息暂停,同时PC/Windows上的复制进度条恢复前进,但是一段时间以后,又会再次重复以上的过程。并且多数情况下随后会出现“Windows延缓写入失败”的警告,然后会出现“无法复制,路径太深”,或者“无法访问H:/ 由于I/O设备错误,无法运行此项请求”, 之类的错误。而在在复制较小文件(如几十兆的文件)时不会出现“Windows延缓写入失败”的警告以及无法复制或无法访问的错误,在PC/Windows上能够完成复制,但是如果此时不在PC上安全卸载USB就直接拔掉PMP样机和PC的连接线,在PMP以及串口调试环境下发现SDCard上其实根本就没有复制成功;而如果在PC上要安全卸载USB则会耗时很久,并且在串口环境下可以看到同步有上述的
……
amd5536udc: Connect: Speed = HIGH_SPEED
amd5536udc: Connect: Speed = HIGH_SPEED
……
中断处理程序的打印消息。我在PC上的我的电脑中查看SDCard通过g_file_storgage映射到PC上的磁盘的属性(即Windows上看见的linux File-Stor Gadget Usb Device),在它的“策略”一项下选择的是“为快速删除而优化”,即没有使用磁盘上和Windows中的写入缓存,既然没有使用缓存为什么又会出现我在PC上不手动安全卸载USB数据根本就没有拷入呢?
上面写了这么多,真的让各位师兄师姐费眼了,可是小弟我面对这么多的疑问确实不知所措了,例如那些中断究竟可能是因为什么原因被触发的呢?我现在连个查错的方向都不知道了。在这里再次谢过各位大虾了~~~~
PMP样机之前使用Nandflash作为主存储介质,为了和PC相连,我在Nandflash上使用dd命令创建了2GB的空文件/mnt/mtd6/disk1,然后我调用 modprobe g_file_storage file=/mnt/mtd6/disk1,然后加载usb-otg模块并和PC相连被识别为一个磁盘,然后从PC上复制数据到该磁盘上一切正常,在串口控制台检测到的也没有任何异常信息。
但是现在的PMP样机不再使用Nandflash而是直接使用fat32 格式的SDCard作为主存储介质,但是仍然要实现当SDCard插入样机的时候,可以通过USB-OTG接口和PC相连并让PC在这种情况下可以访问SDCard,于是我仍然使用g_file_storage模块,使用命令
modprobe g_file_storage file=/dev/mmcblk0
然后加载usb-otg模块并和PC相连仍然也可被识别为一个磁盘,但是从PC上向该磁盘上复制一个约160MB的数据文件时却出现了问题:
在Windosw/PC上显式正在复制的时候,突然会出现进度条停止不前,而同时在串口控制台下可以看到不断的形如
……
amd5536udc: Connect: Speed = HIGH_SPEED
amd5536udc: Connect: Speed = HIGH_SPEED
……
的信息,这是在/drivers/usb/gadget/amd5536udc.c中的 udc_dev_isr 中断处理程序中打印出来的消息,然后直至几分钟后控制台出现
g_file_storage gadget: high speed config
的消息后,控制台消息暂停,同时PC/Windows上的复制进度条恢复前进,但是一段时间以后,又会再次重复以上的过程。并且多数情况下随后会出现“Windows延缓写入失败”的警告,然后会出现“无法复制,路径太深”,或者“无法访问H:/ 由于I/O设备错误,无法运行此项请求”, 之类的错误。而在在复制较小文件(如几十兆的文件)时不会出现“Windows延缓写入失败”的警告以及无法复制或无法访问的错误,在PC/Windows上能够完成复制,但是如果此时不在PC上安全卸载USB就直接拔掉PMP样机和PC的连接线,在PMP以及串口调试环境下发现SDCard上其实根本就没有复制成功;而如果在PC上要安全卸载USB则会耗时很久,并且在串口环境下可以看到同步有上述的
……
amd5536udc: Connect: Speed = HIGH_SPEED
amd5536udc: Connect: Speed = HIGH_SPEED
……
中断处理程序的打印消息。我在PC上的我的电脑中查看SDCard通过g_file_storgage映射到PC上的磁盘的属性(即Windows上看见的linux File-Stor Gadget Usb Device),在它的“策略”一项下选择的是“为快速删除而优化”,即没有使用磁盘上和Windows中的写入缓存,既然没有使用缓存为什么又会出现我在PC上不手动安全卸载USB数据根本就没有拷入呢?
上面写了这么多,真的让各位师兄师姐费眼了,可是小弟我面对这么多的疑问确实不知所措了,例如那些中断究竟可能是因为什么原因被触发的呢?我现在连个查错的方向都不知道了。在这里再次谢过各位大虾了~~~~
作者: zhouxiao_82 发布时间: 2008-05-08
stall=0 removable=1
看看这2个参数
看看这2个参数
作者: AIKO_sex 发布时间: 2008-05-08
首先谢谢AIKO_sex 师兄的回复,但是我按照file_storage.c源码的参数说明和AIKO_sex 的提示使用了如下命令加载g_file_storage模块:
modprobe g_file_storage file=/dev/mmcblk0 removable=1 stall=0
但是仍然没有任何改观的效果,以一个167MB大小的文件为例进行测试,还是和最初的状态一模一样,串口终端中让然间歇性的检测到中断消息,PC/Windows上的复制进度条仍然停止不前,并最终在不到一半的时候报错“I/O错误”。
后来我又按照file_storage.c源码的参数说明添加了指明传输方式的参数:
modprobe g_file_storage file=/dev/mmcblk0 removable=1 stall=0 transport=BBB(后来又分别换了CBI和CB)
但是如果使用CBI和CB,使用OTG接口和PC/Windows连接后PC的右下角根本就没有出现盘符标识,而使用BBB可以出现盘符但是问题依旧(其实默认的transport就是BBB)
唉,真的不知道怎么回事情了,还请大家一定帮帮忙啊~~~~
modprobe g_file_storage file=/dev/mmcblk0 removable=1 stall=0
但是仍然没有任何改观的效果,以一个167MB大小的文件为例进行测试,还是和最初的状态一模一样,串口终端中让然间歇性的检测到中断消息,PC/Windows上的复制进度条仍然停止不前,并最终在不到一半的时候报错“I/O错误”。
后来我又按照file_storage.c源码的参数说明添加了指明传输方式的参数:
modprobe g_file_storage file=/dev/mmcblk0 removable=1 stall=0 transport=BBB(后来又分别换了CBI和CB)
但是如果使用CBI和CB,使用OTG接口和PC/Windows连接后PC的右下角根本就没有出现盘符标识,而使用BBB可以出现盘符但是问题依旧(其实默认的transport就是BBB)
唉,真的不知道怎么回事情了,还请大家一定帮帮忙啊~~~~
作者: zhouxiao_82 发布时间: 2008-05-09
移动设备在windows下"无法复制,路径太深‘好象是个普遍现象,涉及很多问题
你自己先排除一下
你自己先排除一下
作者: AIKO_sex 发布时间: 2008-05-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28