TI中文支持网
TI专业的中文技术问题搜集分享网站

AM3352 USB ISO接收溢出问题

版本SDK6.0.0  kernel版本3.2
我现在的USB应用为Full Speed速度,PIO模式,设置 ep0作为控制端口,ep1out和ep1in作为iso数据端口
ep1out和ep1in收发数据的大小为32byte,interval为1ms,
当ep1out或ep1in正常工作时,只要通过ep0发送控制信息时,内核就会打印出ep1out overrun信息
drivers/usb/musb/musb_gadget.c
void musb_g_rx(struct musb *musb, u8 epnum)
916     csr = musb_readw(epio, MUSB_RXCSR);
917     dma = is_dma_capable() ? musb_ep->dma : NULL;
  
929     if (csr & MUSB_RXCSR_P_OVERRUN) {
930         /* csr |= MUSB_RXCSR_P_WZC_BITS; */
931         csr &= ~MUSB_RXCSR_P_OVERRUN;
932         musb_writew(epio, MUSB_RXCSR, csr);
933 
934         dev_dbg(musb->controller, "%s iso overrun on %p\n", musb_ep->name, request);
修改为DMA模式后,同样对ep0发送控制信息,频率大概每秒1次,3、4次之后也出现了overrun的现象
从抓包截图上可以看到,71200包为ep0控制包,从时间上看应该是在71148后出现,此时ep1in发往host的包也出现了中断现象
说明ep0的数据收发确实影响了iso传输,但事实上数据量并不大,请看看是否有需要修改配置的地方
Yaoming Qin:

6.0版的USB是性能最好的版本了,如果这个性能不够,似乎没有更好的办法了

username:

回复 Yaoming Qin:

我认为这个不应该是USB性能导致的问题,按照数据量来计算,上下行ISO传输的数据大小各32字节再加上Control传输的少量数据

是远远小于USB 1.1规范中的最大字节要求。

Jian Zhou:

回复 username:

能否在手上的EVM板上复现一下

Yaoming Qin:

回复 username:

可以查查应用层是否及时读出了数据,如果数据没有读出,也会导致over run

赞(0)
未经允许不得转载:TI中文支持网 » AM3352 USB ISO接收溢出问题
分享到: 更多 (0)