This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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传输,但事实上数据量并不大,请看看是否有需要修改配置的地方