关于BULK传输的IN令牌轮询的时间间隔问题?

PowerAll777 2010-07-21 08:01:38
我在使用usbserial驱动程序时碰到这样一个问题,我采用一对bulk端点进行bulk数据传输。
我使用usb分析仪卡捕获了host和device之间的数据,发现usb host为了读取usb设备的数据,每1ms之内发送了107个IN令牌包,因为usb device 没有数据可读,因此包都收到的是NAK的应答。
我现在想减少1ms内IN令牌包的个数,我认为太频繁了会影响效率,我应该在那里进行修改?谢谢!
...全文
553 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿莫西林夹馍 2012-05-20
  • 打赏
  • 举报
回复
我也有同样的问题
xiaoQ008 2010-08-19
  • 打赏
  • 举报
回复
设备回nak,说明数据没有准备好,nak多,楼主应该去检查device为什么要这么久才把数据准备好。
PowerAll888 2010-07-29
  • 打赏
  • 举报
回复
如果是usb host硬件发送的,那可以通过寄存器设置这个发送的时间间隔码?

因为我看PC的usb host发送的频率比我的嵌入式usb host发送的频率要低很多。并且在PC上遇到NAK时候,一般PC重发3次,就可以收到ACK了;可是在我的嵌入式平台上遇到NAK时,嵌入式平台要重发2000多次,持续时间500ms,才能收到NAK应答。
我怀疑是嵌入式平台的读取操作发送的频繁(因为没有数据,收到NAK,因此不断发送读取操作)了,导致usb device太忙造成的,因此我想降低遇到NAK时的重发频率,不知道观点是否正确。
seasoblue 2010-07-28
  • 打赏
  • 举报
回复
个人认为这个IN令牌应该是usbHost硬件芯片发出的,不是操作系统发的。可以看一下usbHost的芯片有没有相关设置。
PowerAll777 2010-07-21
  • 打赏
  • 举报
回复
补充一下,我的usb device的块传输端点的属性中 Interval的值都是0。

我在PC机上使用相同的usb device,也使用usb分析仪进行了数据捕捉,发现每1ms usb host发送的IN令牌包才24个,并且pc上传输的速率远远高我使用的嵌入式平台。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧