您好,在GE例程的使用中遇到如下问题无法解决,需要技术支持:
目前想使用该程序,实现DSP向PC机发送UDP报文,已经按照说明做了如下修改:
GE_Test_Data_Path test_data_path = GE_TEST_DSP0_TO_DSP1;
Ethernet_Mode ethernet_mode = ETHERNET_AUTO_NEGOTIAT_MASTER;
Fill_EMAC_header(ucpBuffer, ETHERNET_IPV4_PACKET, Source_MAC_address[j], Dest_MAC_address[j]);
1、在只作上述修改的时候,利用Wireshark软件可以抓到报文,但是源和目的的IP地址均为255.255.255.255,不知道是何处进行设置的;
2、我现在需要发送自己的数据pktMatch[],修改TxDescriptorTempBuffer[]= pktMatch[]时,uiTxGoodFrames=0,应该是没有成功,因此不知道如何将待发送数据包pktMatch[]进行填充;
3、HostPacketDescriptor结构体类型中,很多成员变量没有注释,不知道含义,是否有成员变量可直接用于装订自定义数据包。
问题研究了很久了,都没有得到解决,谢谢了
3、
ping liu1:
补充:所用开发板为EVM6678
miker wang:
你好,
1、GE例程里没有涉及到外设PA,所以光靠GbE Switch无法实现IP及IP层以上的协议,如想发送UDP报文,必须在程序中手动添加IP包头和UDP报文头,可以修改Fill_EMAC_header函数,在以太网帧首部之后分别添加相应IP和UDP协议首部。原例程中,每个数据包只添加了以太网帧首部,没有IP和UDP首部,所以你抓到的所谓的IP地址其实是以太网帧中的数据,并不是真正的IP地址。
2、TxDescriptorTempBuffer是用来存放描述符的地址,并不是存放数据的。若想发送自己的数据,需要将自己的数据填充至每个描述符所指向的buffer中。GE_2DSP_Test()中如下代码是填充相应buffer的,可以对其进行修改。
/*fill data pattern*/ memset(ucpBuffer+EMAC_HEADER_LEN, transferParam->dataPattern, uiPayloadNumBytes);
3、HostPacketDescriptor是一种描述符类型,详细参数说明请参考Multicore Navigator手册中对于Descriptor的描述,其中的buffer 0 pointer就是指向自定义的数据包的指针。
zhao jd:
您好!您实现使用PA发送udp包了,可否指导一下。刚接触netcp 比较生疏,不知如何下手!
ping liu1:
回复 zhao jd:
我是和miker wang 的方法一样处理的,您也可以试试,应该没有问题