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

TMS320C6748: 关于TMS320C6748 USB驱动开启CPPI DMA发送数据超过4M数据出现死机的现象!!!!!!

Part Number:TMS320C6748

大家好:

      我现在在调试USB CPPI DMA的驱动,主要实现的目标是进行超过4M,甚至更多数据的通讯,主要使用的是CDC设备总线和CPPI DMA,DMA使用的模式是Linux CDC模式,数据手册中有介绍RNDIS和Linux CDC进行数据通讯是一样的,唯一的不同点是Linux CDC模式进行数据通讯时数据长度没有满足64字节的倍数会发送一个字节为1,数据是0x00的数据包给PC端。

       我现在遇到的问题是如果数据量超过4M后使用DMA发送回出现死机的现象,主要是卡在函数enableCoreTxDMA函数里面的while((HWREGH(usbInstance->usbBaseAddress + ulRegister) & 0x2) == 0x02);判断条件一直不能满足,导致会卡在里面,没有分析明白原因是什么,有调试过这方面的大神指点下,可能造成的原因是什么???

祝好!!!!!

Shine:

方便把相关代码贴出来吗?

,

L qh:

初始化CDC设备总线函数

void tpl_usb_cdc_init(void)

{

        CacheEnableMAR((unsigned int)0xC0001000, (unsigned int)0x08000000);

         CacheEnableMAR(L1DCFG_L1DMODE_32K | L1PCFG_L1PMODE_32K | L2CFG_L2MODE_256K);

         

         USBBufferInit((tUSBBuffer *)&g_sRxBuffer);

         USBDCDInit(USB_INSTANCE, (tUSBDCDCDevice *)*g_sCDCDevice);          

         Cppi41DmaInit(USB_INSTANCE, epInfo, NUMBER_OF_ENDPOINTS);

}

上面的函数时注册CDC设备总线的初始化函数,里面有DMA初始化操作,注册的DMA模式为Linux CDC,这里不贴出此部分配置。

下面的内容主要是在USB中断中处理的一些操作流程,只有部分代码内容:

for(j = 0; j < 16;j ++)

{

         dataBuf = (unsigned char *)cppiDmaAllocnBuffer(2048);//申请DMA缓存

          for(i = 0; i < 2048*1024; i++)

          {

                     dataBuf [i] = (i + 1)%256;

         }

         doDmaTxTransfer(USB_INSTANCE, dataBuf , 2048*1024, g_sCDCDevice.psPrivateCDCSerData->ucBulkINEndpoint);

          enableCoreTxDMA(USB_INSTANCE, g_sCDCDevice.psPrivateCDCSerData->ucBulkINEndpoint);//打开DMA通道

          delay(0xFFFFFFFF);//加入延时让DMA数据发送完成

          cppiDmaFreenBuffer((unsigned int *)dataBuf);//释放DMA缓存

          disableCoreTxDMA(USB_INSTANCE, g_sCDCDevice.psPrivateCDCSerData->ucBulkINEndpoint);//关闭DMA通道

          dmaTxCompletion(USB_INSTANCE, g_sCDCDevice.psPrivateCDCSerData->ucBulkINEndpoint);//队列发送完成,退出中断

}

上面的代码是实现的部分程序,主要是使用DMA发送超过4M的数据,目前在测试中发现使用DMA发送超过2M的数据就会出现崩溃的现象,如果使用循环的方式进行发送超过4M的数据,例如8M的数据缓存时,就会出现上述描述的死机现象!!!!

祝好!!!!

,

Shine:

请关注下面的帖子。https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_3784189

,

L qh:

您好:

我看了这个帖子,和我所遇到的问题是一样的,但是没有明确指出具体是什么原因导致?我想请问下是否有USB方面的专家可以咨询这个。

祝好!!!

,

Shine:

这是我把您的问题升级到e2e上,有专门产品线的工程师解答。

,

L qh:

您好: 

       谢谢您的帮助,希望可以将这个问题解决掉!!!

祝好!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: 关于TMS320C6748 USB驱动开启CPPI DMA发送数据超过4M数据出现死机的现象!!!!!!
分享到: 更多 (0)