Zynq UltraScale+ MPSoC 보드 테스트 - Giga Etherent UDP 테스트
TCP예제가 문제 없이 동작하므로 Giga Ethernet 통신은 확인이 되었고 EtherCAT 동작을 테스트 하기 위해 UDP통신도 문제 없이 동작하는지 확인해 볼 필요가 있다.
Zynq UltraScale+ MPSoC UDP 전송코드
static void udp_recv_perf_traffic(void *arg, struct udp_pcb *tpcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
int i;
unsigned char tcp_buf_rx[2048];
pcb->remote_ip = *addr;
pcb->remote_port = port;
//수신 IP 시리얼로 출력
xil_printf("%d.%d.%d.%d\r\n",
(addr->addr)&0xFF, (addr->addr>>8)&0xFF,
(addr->addr>>16)&0xFF, (addr->addr>>24)&0xFF
);
//수신데이터 시리얼로 출력
xil_printf("rx size = %d\r\n", p->len);
for(i=0;ilen;i++)
{
//데이터 수신되면..
//임시로 테스트 용으로 저장 -> 실제 제이터는 p->payload 에 있음
tcp_buf_rx[i] = *((unsigned char*)p->payload+i);
xil_printf("%x ", tcp_buf_rx[i]);
}
udp_sendto(tpcb, p, addr, port);
xil_printf("UDP test passed Successfully\n\r");
pbuf_free(p);
}