Part Number:TMS320C6678
各位TI专家好:
最近调试通过C6678 的网口和PC进行UDP通信,主要参考了emacExample代码。UDP发送已经通了,PC端可以接收到数据,UDP接收还有问题。首先,PC不会直接发送UDP协议数据,首先发送 ARP包等待回应MAC地址,所以需要先接收ARP数据包。
参考问题e2echina.ti.com/…/pa-arp 答案,我在配置PA时,在Add_MacAddress()函数中,将ethInfo中 eher type改为0x806,并把目的MAC地址和源MAC地址全部改为FF FF FF FF FF FF,同时,将LUT1路由信息routeInfo 路由到Host,代码如下:
paEthInfo_t ethInfo = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, /* Src mac = dont care */
{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, /* Dest mac */
0, /* vlan = dont care */
0x0806, /* ether type = IPv4 */
0, /* MPLS tag = don't care */
1 /* Input EMAC port */
}; paRouteInfo_t routeInfo = { pa_DEST_HOST, /* Route a match to the host */
0, /* Flow ID 0 */
0, /* Destination queue */
-1, /* Multi route disabled */
0xaaaaaaaa, /* SwInfo 0 */
0, /* SwInfo 1 is dont care */
0, /* customType = pa_CUSTOM_TYPE_NONE */ \
0, /* customIndex: not used */ \
0, /* pkyType: for SRIO only */ \
NULL /* No commands */
};
/* Setup the Rx queue as destination for the packets */
rxQInfo = Qmss_getQueueNumber (gRxQHnd);
routeInfo.queue = rxQInfo.qNum;
routeInfo.flowId = (uint8_t)Cppi_getFlowId(gRxFlowHnd);
retVal = Pa_addMac (gPAInstHnd,
pa_LUT1_INDEX_NOT_SPECIFIED, ðInfo,
&routeInfo,
&nFailInfo,
&gPaL2Handles[0],
(paCmd_t) pHostDesc->buffPtr,
&cmdSize,
&cmdReplyInfo,
&cmdDest);
现在接收时,可以看到PA中PDSP0对应mailbox slots寄存器地址0x02000000有数据变化,对应网络调试助手抓到的ARP包数,但是对应的接收QMSS队列中却没有数据?
我如何判断PA的是否正确路由到PKT DMA中去了?
Nancy Wang:
Jing lee 说:主要参考了emacExample代码
请贴出代码具体路径。
,
Jing lee:
你好,问题解决了,配置ethInfo 时,源MAC应该写为0,0,0,0,0,0表示不关心源MAC地址,而不能写为FF FF FF FF FF FF,改了以后PA就能正确路由数据到QMSS当中,能收到数据了
,
Nancy Wang:
好的,感谢分享!