tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1784回复:6

d12 bulk transmits缺少最后一个包的问题

楼主#
更多 发布于:2001-11-07 11:26
Dear All:
  我在bulk的传输中还碰到一些问题,希望得到你的帮助。

  host程序:
      driver是microsoft98ddk提供的bulkusb,程序除了增加了对几个用户setup包的处理以外,几乎不变,windows默认的设置4096bytes,及usb client driver一次请求最大4096bytes数据量也不变。
      应用程序也是microsoft98ddk提供的rwbulk,程序除了增加利用deviceiocontrol()发送用户控制命令以外,也几乎不变。

  device程序:
      沿用philips的例程,当接受到一个out包时产生中断,在中断程序中读数据,并把endpoint中的值清空。

  我们的操作过程是这样的:
  bulkout模式:
  1、先通过control通道,发送setup包,通知device做接收包的初始准备工作
  2、利用microsoft提供的应用程序rwbulk,通过bulkout通道发包给device
  
   出现问题:
   用仿真器跟踪发现
   如果bulkout发送小于64byte,device端的中断可以进入1次,device可以正常接受数据。
   如果bulkout发送大于64byte,小于128byte,device断的中断还是只进入了一次,故device端只接收到前64byte。
   如果bulkout发送大于128byte,小于192byte,中断可以进两次,故device端只接收到前128byte数据  
   如果bulkout发送大于192byte,小于256byte,中断可以进三次,故device端只接收到192byte数据
   总之进中断次数要少一次,既最后的一个bulk包未收到。
    
在D12中提到的double buffer是否会对传输有影响?但这是“transparent”对用户的呀。


另一个问题是我用什么方法去测bulk的速度是较好的。

best regards
                                        tony.fu

最新喜欢:

crazyqpcrazyq...
tony_fu@citiz.net
usb11
驱动小牛
驱动小牛
  • 注册日期2001-09-17
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-11-07 12:46
我没有碰上过,不知道有没有人遇到过这样的问题?
助人乃快乐之本! 共同进步是我的本意!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-11-08 10:52
我碰到过,但后来不知道程序哪里给改了,就再也没有发现过。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-11-08 13:04
我用示波器看了一下D12的INT0脚,我发了一个130bytes的数据,INT0上的确有三个下降沿。但ENDPONINT2的out中断却只进了二次。我认为是中断设置有错,但到目前还没找到。
rayyang大哥你一定要帮我。
tony_fu@citiz.net
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-11-08 13:38
记得上次在电话里就提醒过你,没想到到现在你才碰到. :)
你看看zboard的代码罢!如果发现是什么原因,也告诉我.有个老外告诉我是double buffering的原因造成的.
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-11-08 13:46
我一开始用windriver发送,在pc上显示正确,我就没深究。
上次在电话里说的,那时我对bulk的方式还不太了解,听了也不太了解你在说什么,呵呵。
我现在在查问题,找到一定贴出来。
tony_fu@citiz.net
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-21 15:40
没想到两年过去了,我也遇到同样的问题,真是一模一样!确实是双缓冲区造成的,后来有位高人告诉我,在接收中断里面用while循环读数据,就在也没有出现这样的问题了
游客

返回顶部