游客:
注册
|
登录
|
帮助
Linux伊甸园论坛
»
Linux嵌入式应用
» 请教:在使用g_file_storage模块时碰见的现象
IBM 集群技术资源全面接触
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 请教:在使用g_file_storage模块时碰见的现象
zhouxiao_82
新生入学
UID 205101
精华 0
积分 12(
积分有什么用?
)
帖子 5
阅读权限 10
注册 2007-7-24
状态 离线
#1
使用道具
发表于 2008-5-8 19:57
资料
个人空间
短消息
加为好友
请教:在使用g_file_storage模块时碰见的现象
小弟刚刚毕业几个月,目前正在从事基于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数据根本就没有拷入呢?
上面写了这么多,真的让各位师兄师姐费眼了,可是小弟我面对这么多的疑问确实不知所措了,例如那些中断究竟可能是因为什么原因被触发的呢?我现在连个查错的方向都不知道了。在这里再次谢过各位大虾了~~~~
不容错过的IBM 集群技术资源汇总
AIKO_sex
特聘作家
伊甸园杰出贡献会员
UID 12054
精华
20
积分 40(
积分有什么用?
)
帖子 11538
阅读权限 10
注册 2002-3-20
状态
在线
#2
使用道具
发表于 2008-5-8 20:51
资料
个人空间
短消息
加为好友
stall=0 removable=1
看看这2个参数
象一阵风 拂过我身边 忽然间 想要去很远 和你去看繁华世界
zhouxiao_82
新生入学
UID 205101
精华 0
积分 12(
积分有什么用?
)
帖子 5
阅读权限 10
注册 2007-7-24
状态 离线
#3
使用道具
发表于 2008-5-9 11:40
资料
个人空间
短消息
加为好友
首先谢谢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)
唉,真的不知道怎么回事情了,还请大家一定帮帮忙啊~~~~
AIKO_sex
特聘作家
伊甸园杰出贡献会员
UID 12054
精华
20
积分 40(
积分有什么用?
)
帖子 11538
阅读权限 10
注册 2002-3-20
状态
在线
#4
使用道具
发表于 2008-5-9 23:28
资料
个人空间
短消息
加为好友
移动设备在windows下"无法复制,路径太深‘好象是个普遍现象,涉及很多问题
你自己先排除一下
象一阵风 拂过我身边 忽然间 想要去很远 和你去看繁华世界
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-5-13 11:23
Powered by
Discuz!
5.5.0
© 2001-2007
Comsenz Inc.
Processed in 0.057289 second(s), 5 queries
TOP
清除 Cookies
-
联系我们
-
Linux伊甸园
-
Archiver
-
WAP
多串口卡,串口服务器,终端服务器,KVM切换器
best dvd copy software