hust_peng
驱动牛犊
驱动牛犊
  • 注册日期2005-01-29
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3597回复:9

关于USB device 测试中出现buffer overrun的问题,请教高手。

楼主#
更多 发布于:2005-01-29 18:32
6.0  CTL    23 01 14 00  02 00 00 00                            CLEAR FEATURE           18.1.0        
   6.0  CTL    a3 00 00 00  02 00 04 00                            GET STATUS              19.1.0        
   6.0  DI     03 01 00 00                                         ....                    19.2.0        
   6.0  CTL    23 03 04 00  02 00 00 00                            SET FEATURE             20.1.0        
   6.0  CTL    a3 00 00 00  02 00 04 00                            GET STATUS              21.1.0        
   6.0  DI     03 01 10 00                                         ....                    21.2.0        
   6.0  CTL    23 01 14 00  02 00 00 00                            CLEAR FEATURE           22.1.0        
   6.0  CTL    80 06 00 02  00 00 ff 00                            GET DESCRIPTOR          23.1.0        
   6.0  DI     09 02 19 00  01 01 00 a0  19 09 04 00  00 02 ff ff  ................        23.2.0        
               ff 02 07 05  81 02 40 00  00                        ......@..               23.2.16      
  12.0  CTL    80 06 00 01  00 00 12 00                            GET DESCRIPTOR          24.1.0        
  12.0  DI     12 01 10 01  00 00 00 10  5e 04 47 00  00 03 00 00  ........^.G.....        24.2.0        
  12.0  USTS   0c 00 00 c0                                         buffer overrun          24.3.0        
   6.0  CTL    23 01 01 00  02 00 00 00                            CLEAR FEATURE           25.1.0        

请教各位大虾,buffer overrun是代表什么呢?我的control endpoint 大小为16Bytes,读取我的状态寄存器,表示其一个16B的数据没有发送出去,但是HOST Bus hound截获到了并显示,但后面马上显示buffer overrun。高分相谢

[编辑 -  1/29/05 by  hust_peng]
sampex
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2010-01-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-31 00:41
ding...

I have a similar situation. In my case, If I connect only 1 device, everything is fine, but when I connect up to 6 devices, I will have buffer overrun issue on some of the devices.  But it is totally random.  When I get to this buffer over run.  I will get endpoint stalled msg later.  So, I am interested to know what's going on.

To my understand, the buffer overrun is the reading speed from ep is less then the write speed to the ep
thx

[编辑 -  1/31/05 by  sampex]
hust_peng
驱动牛犊
驱动牛犊
  • 注册日期2005-01-29
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-31 09:29
我的情况也比较特殊,buffer overrun是随机出现的,就是说,每次枚举的时候,在get config descriptor 这个固定的地方,有时候会出现,有时候又不会出现这个问题,出现的概率不大,但是就是会出现。

我个人感觉Host读取速率不会太慢,应该是我们这边送的数据多了,大于自定义的pay load或者大于host想要的。

最关键的一点就是bus hound报buffer overrun之后,又进行get descriptor时,总是反馈 no respond!

请教高手,大家互相讨论一下。
sampex
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2010-01-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-31 11:26
"最关键的一点就是bus hound报buffer overrun之后,又进行get descriptor时,总是反馈 no respond!"

When this happened, in my case, the EP is stalled.  
hust_peng
驱动牛犊
驱动牛犊
  • 注册日期2005-01-29
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-31 11:51
但是我读取了相关寄存器,endpoint没有被关闭,不会返回Stall。
为什么会出现buffer overrun呢?可能原因只有一个――发送的数据多过pay load或者多过想要的。

我的情况太特殊了,在一个PC host上试验,总是在get 18B device descriptor时才会出现,更换另外一个PC Host,总是在get 32B config descriptor上才会出现,而且是随机的出现。

通过检测,好像是ACK错误,然后最后一个包进行了重发。但是如果toggle没有错的话,应该不会影响功能。
wanggang508
驱动小牛
驱动小牛
  • 注册日期2003-08-24
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-01 18:41
我出现过这样的错误,我的问题解决了。但是我也不是很清楚具体的原因。我觉得可能是在枚举的过程中固件程序没有在规定的时间内向pc发送数据造成的。我的就是因为我添加了一条串口发送语句就出现了这样的错误,去掉就好了!!个人看法,仅供参考!!
多多交流,少走弯路!!!
hust_peng
驱动牛犊
驱动牛犊
  • 注册日期2005-01-29
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-01 19:29
device 是我自行设计的,没有用别人的芯片。
你能描述一下你的具体情况么?
谢谢
guowf
驱动牛犊
驱动牛犊
  • 注册日期2002-12-15
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-02 14:25
是你发送的数据数量不是0X12,而是多于0X12个,仔细查查程序吧!!
hust_peng
驱动牛犊
驱动牛犊
  • 注册日期2005-01-29
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-02-02 14:38
是这样的,在control传输时,我检测到前16个字节送出去了,但是ACK坏掉了,后面再发了一次相同的,但是toggle值没有变,这个时候host应该不会检测此数据。

如果是送多了,那么为什么各个PC对整个枚举过程出现的buffer overrrun 的情况不一样呢?
应该是每次都在一个地方出现啊。
sampex
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2010-01-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-02-03 12:47
帮着顶一下.关注中....
游客

返回顶部