본문 바로가기

[ST_MICRO]/STM32H7

[STM32H757-RP] LWIP UDP Ethernet 테스트 - iperf UDP 전송률 테스트

 

STM32H757에 내장되어 있는 Ethernet 기능에서 TCP 전송률 테스트 코드를 참고하여 lwip UDP의 이더넷 전송률도 테스트 해보자.

https://nexp.tistory.com/4143

 

[STM32H757-RP] LWIP TCP Ethernet 테스트 - iperf 성능 측정

STM32H757 듀얼코어 MCU를 사용하려고 했던 가장큰 목적은 이더넷 때문이다. Cortex-M4코어로 고속의 이더넷 통신을 하면서 Cortex-M7 코어로 연산이 필요한 작업을 진행하기에 최적의 MCU이기 때문이다.

nexp.tistory.com

 

 

STM32H757 lwip스택으로 UDP 를 이용한 iperf 전송률 테스트를 위한 코드를 작성한다

#include "lwip/udp.h"
#include "lwip/ip.h"
#include "lwip/pbuf.h"

#define IPERF_UDP_PORT 5001

static void iperf_udp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p,
                           const ip_addr_t *addr, u16_t port)
{
    if (p != NULL)
    {
        // 수신된 바이트 수를 LwIP에 알림
        pbuf_free(p);
    }
}

void iperf_udp_server_init(void)
{
    struct udp_pcb *pcb = udp_new();
    if (pcb != NULL)
    {
        err_t err = udp_bind(pcb, IP_ADDR_ANY, IPERF_UDP_PORT);
        if (err == ERR_OK)
        {
            udp_recv(pcb, iperf_udp_recv, NULL);
        }
    }
}

 

 

STM32H757 의 내장 Ethernet 기능을 이용해 iperf에서 UDP 전송률 테스트를 해 보면 50Mbps 정도로 측정된다. TCP와 비슷한 속도가 측정된다.

 

 

UDP loopback 테스트로 테스트 해볼까?

UDP loopback 테스트를 위해 Wiznet의 ax 프로그램으로 테스트 해보면 송수신 양방향으로 24Mbps정도로 측정된다. 

수신만 항다면 두배 정도 50Mbps 정도가 측정 되는것이 맞는것 같다.

 

 

 

 

반응형