LXPING
驱动牛犊
驱动牛犊
  • 注册日期2004-09-23
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1682回复:5

求救U盘写超时(给80分)

楼主#
更多 发布于:2005-01-21 18:31
U盘读已经正常,但写有问题.只能连续处理2个write(10)命令.当主机发第3个write(10)命令后,只有等到USB RESET后,主机才接到CSW(ACK).例如,我新建一个文件夹,主机发第一个write(10),写00 00 20区(512BYTE),没问题(时间5ms);第二个write(10),连写8区(4KBYTE),也没问题(时间40ms);第3个write(10),写00 00 26区(512BYTE),过了9秒钟,主机还没收到CSW(ACK)就超时了,然后USB RESET,再过几秒主机才接到CSW(ACK).这是为什么?(写flash的子程序没问题) 主机什么时候会取走BULK IN端点中的数据啊?
LXPING
驱动牛犊
驱动牛犊
  • 注册日期2004-09-23
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-21 23:03
我加了一个延时语句后,有时出现以上情况,有时不出现.有时还能正常写几百K的文件(几率不大),你们碰到过这种情况没?是什么原因导致它的不稳定?
LXPING
驱动牛犊
驱动牛犊
  • 注册日期2004-09-23
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-22 09:40
各位高手帮帮忙啊
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-22 15:08
U盘读已经正常,但写有问题.只能连续处理2个write(10)命令.当主机发第3个write(10)命令后,只有等到USB RESET后,主机才接到CSW(ACK).例如,我新建一个文件夹,主机发第一个write(10),写00 00 20区(512BYTE),没问题(时间5ms);第二个write(10),连写8区(4KBYTE),也没问题(时间40ms);第3个write(10),写00 00 26区(512BYTE),过了9秒钟,主机还没收到CSW(ACK)就超时了,然后USB RESET,再过几秒主机才接到CSW(ACK).这是为什么?(写flash的子程序没问题) 主机什么时候会取走BULK IN端点中的数据啊?

直接写第3次失败的信息到相应的位置看是不是存储的相应位置坏了:)
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
tsingkong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-22 17:41
U盘读已经正常,但写有问题.只能连续处理2个write(10)命令.当主机发第3个write(10)命令后,只有等到USB RESET后,主机才接到CSW(ACK).例如,我新建一个文件夹,主机发第一个write(10),写00 00 20区(512BYTE),没问题(时间5ms);第二个write(10),连写8区(4KBYTE),也没问题(时间40ms);第3个write(10),写00 00 26区(512BYTE),过了9秒钟,主机还没收到CSW(ACK)就超时了,然后USB RESET,再过几秒主机才接到CSW(ACK).这是为什么?(写flash的子程序没问题) 主机什么时候会取走BULK IN端点中的数据啊?

乍一看我还以为是USB Host的问题呢。
到了后来才看明白。
建议:把固件中处理Write10的代码贴出来让大家分析一下
mailto:tsingkong@163.com
LXPING
驱动牛犊
驱动牛犊
  • 注册日期2004-09-23
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-22 21:55
我在发CSW后加了一个延时语句,就可以写文件了,但是只能写一个文件,连写两个文件就不行了.例如,我先建一个文件夹,没问题,接着又建一个文件夹,就出现了上面提到的问题了.如果我先建一个文件夹,再把它删掉,然后再建一个,也没问题,继续再建一个,就不行了,问题同上.如果我建的文件夹有问题,则在它之后再建一个就没问题(我断电后,再上电建的).为什么在发CSW后加了一个延时语句,就可以写文件了呢?为什么又不能连续建几个呢?  (给30分)
游客

返回顶部