HDMI 출력 테스트 - 실시간 화면캡쳐 후 이미지 전송 테스트에서 이미지 전송 속도를 높이기 위해 UDP로 테스트 해 볼 필요가 있을것 같아 UDP 전송율 테스트를 해 보았다.
UDP loopback 테스트 예제를 작성해서 W55RP20의 UDP 전송율을 확인해 보자
#define LED1_PIN 9
#define Led1Off() gpio_put(LED1_PIN, 1);
#define Led1On() gpio_put(LED1_PIN, 0);
#include "w5500_config_tcp.h"
#define ETHERNET_BUF_MAX_SIZE (1460)
#define DATA_BUF_SIZE ETHERNET_BUF_MAX_SIZE
/* Socket */
#define SOCKET_LOOPBACK 0
/* Port */
#define PORT_LOOPBACK 5000
static uint8_t g_tcp_buf[ETHERNET_BUF_MAX_SIZE] = {
0,
};
int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port)
{
int32_t ret;
uint16_t size, sentsize;
uint8_t destip[4];
uint16_t destport;
switch(getSn_SR(sn))
{
case SOCK_UDP :
if((size = getSn_RX_RSR(sn)) > 0)
{
if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE;
ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport);
if(ret <= 0)
{
#ifdef _LOOPBACK_DEBUG_
printf("%d: recvfrom error. %ld\r\n",sn,ret);
#endif
return ret;
}
size = (uint16_t) ret;
sentsize = 0;
while(sentsize != size)
{
ret = sendto(sn, buf+sentsize, size-sentsize, destip, destport);
if(ret < 0)
{
#ifdef _LOOPBACK_DEBUG_
printf("%d: sendto error. %ld\r\n",sn,ret);
#endif
return ret;
}
sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.
}
}
break;
case SOCK_CLOSED:
#ifdef _LOOPBACK_DEBUG_
//printf("%d:UDP loopback start\r\n",sn);
#endif
if((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn)
return ret;
#ifdef _LOOPBACK_DEBUG_
printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, port);
#endif
break;
default :
break;
}
return 1;
}
int main() {
stdio_init_all();
vreg_set_voltage(VREG_VSEL);
sleep_ms(10);
gpio_init(LED1_PIN);
gpio_set_dir(LED1_PIN, GPIO_OUT);
gpio_init(LED2_PIN);
gpio_set_dir(LED2_PIN, GPIO_OUT);
Led2On();
while (true) {
if(cnt++>3)break;
gpio_put(LED1_PIN, 1);
sleep_ms(1000);
gpio_put(LED1_PIN, 0);
sleep_ms(1000);
}
InitEthernet();
printf("W55RP20 UDP test\n");
while (1)
{
loopback_udps(0, g_tcp_buf, PORT_LOOPBACK);
}
테스트 프로그램은 Wiznet의 AX1 프로그램을 사용 했고 기본 UDP 데이터 전송이 잘 동작하는 것을 확인 했다.
loopback 테스트로 대용량 파일을 송수신 하는 시간을 측정해 보면 5Mbps 로 측정된다.
너무 느린데...
iperf 를 이용한 W55RP20 TCP 전송률 테스트 결과와 비교해면 상당히 느린데... AX 프로그램이 이상한가?
iperf로 UDP 테스트 해 볼 필요가 있을것 같다.
반응형