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

TMS320C6748: TMS320C6748:使用硬件USB,使用CPPI DMA发送长数据,通过串口调试助手可以明显看到数据发送的时间会逐渐变长,可能导致此现象的原因都有哪些??????

Part Number:TMS320C6748

大家好:

      问题如上,关于在C6748硬件上的USB开启CPPI DMA,测试环境为将USB注册成CDC设备总线,CPPI DMA用于发送数据,将CPPI DMA注册为Linxu CDC模式。

      问题1:通过指令发送1M数据缓存,经过多次指令后会发现通过串口调试注册接收的数据速度会明显变慢,导致在使能和去使能DMA之间加入的延时函数不能满足传输的时长需要,进而导致数据没有发现完成就关闭DMA造成数据堵塞。

      问题2:在调试中加入端点进行测试,没法像完1M数据后再运行程序,当发送超过10M数据缓存后会出现卡死在代码while ((HWREGH(usbInstance->usbBaseAddress + ulRegister) & 0x2) == 0x02)里面,是因为判断位一直不能通过导致卡死的问题。

      可能造成上述两个问题的原因会有哪些!!!!

      最后我对STARTWARE源码中cppi41dma.c中关于DMA的接口函数中使用cache的相关操作存在疑问,通过查阅数据手册在USB章节中没有提到与cache相关的内容,主要使用的内存是RAM,但是源码 中为什么使用cache那???我查看了pdk库中关于USB 的cppi41dma.c源码与之是一样的。

祝好!!!!

Shine:

还是前面的问题吧?我去催一下e2e工程师,请耐心等待。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1023707/tms320c6748-linux-cdc-mdoe-can-t-send-data-larger-than-4m

,

Shine:

请查看e2e工程师的回复

Is this code referenced from any other TI provided driver? I am not sure how the USB drivers are implemented in TI RTOS, but I would think the normal sequence would be:

delay(0xFFFFFFFF);//加入延时让DMA数据发送完成dmaTxCompletion(USB_INSTANCE, g_sCDCDevice.psPrivateCDCSerData->ucBulkINEndpoint);//队列发送完成,退出中断disableCoreTxDMA(USB_INSTANCE, g_sCDCDevice.psPrivateCDCSerData->ucBulkINEndpoint);//关闭DMA通道cppiDmaFreenBuffer((unsigned int *)dataBuf);//释放DMA缓存

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: TMS320C6748:使用硬件USB,使用CPPI DMA发送长数据,通过串口调试助手可以明显看到数据发送的时间会逐渐变长,可能导致此现象的原因都有哪些??????
分享到: 更多 (0)