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地址全部改为0xFF 0xFF 0xFF 0xFF 0xFF 0xFF,同时,将LUT路由信息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:
我会将此贴关闭,再您发布的另一个帖子中讨论。
e2echina.ti.com/…/tms320c6678-c6678-pa-arp