This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432E401Y: MSP432E401 TCP send

Part Number: MSP432E401Y

We are currently evaluating the MSP432E401Y.

The  device will be used in an application where, after accepting a connection to a port, only a small amount of data is received. After initialisation 15Mbit/sec are sent out in packages of 761 byte. The package size can be optimized if required.

 

Is there sample code available which would operate in a similar way?

 

What I have tested so far:

 

LWIP (no RTOS):

when doing a echo test which just sends packets out on the call back functions, the data rate is quite low.
(based on: https://github.com/dreamcat4/lwip/tree/master/contrib/apps/tcpecho_raw)

similar when starting the lwiperf task the receive data rate is very high, but the transmit data rate is low (about 0.3 Mbit / sec)

when sending out data on the SysTick_Handler, after calling lwIPTimer, I do get high data rates, up to 40Mbit/s, but depending on packet sizes, errors occur.

 

TI-RTOS:

when modifying the tcpecho example to constantly send data, the datarates reached are not high enough to perform the other tasks required.

Any samples or ideas on how to improve the transmit performance are appreciated

  • I believe that the TCP echo would be the closest example, but I will inquire of the team.

    Regards,
    Chris
  • Hello Horst,

    Horst Eyermann89 said:
    After initialisation 15Mbit/sec are sent out in packages of 761 byte.

    Does MSP432E4 transmit these packets or receive them?

    Horst Eyermann89 said:
    Is there sample code available which would operate in a similar way?

    The two example you have pointed to are the right examples to modify for your needs.

    Horst Eyermann89 said:

    TI-RTOS:

    when modifying the tcpecho example to constantly send data, the datarates reached are not high enough to perform the other tasks required.

    I am assuming you are referring to the NDK TCP/IP stack here. There are a few modification that can be done to increase the buffer sizes to improve the performance:

    • Update the RX and TX buffer size to as big as you can - in ndk_freertos.c file.
    • Tune RAW_PAGE_COUNT and PKT_NUM_FRAMEBUF to match your performance - in ndk_freertos.c file.

    Also note that this example uses BSD sockets which does an extra copy of the buffers. To improve performance you can use a no-copy version of NDK APIs (example NDK_recvncfrom) to eliminate a CPU copy of the socket buffer data.

    Hope this information helps!

    Thanks,

    Sai

  • Hello Sai,

    the MSP432E4 should transmits packets with 15MBit/s in the end. For tests without the rest of the application I am targeting transmit rates of about 30MBit/s - so there is enough headroom for the rest of the application.


    thanks, i will have a look into the suggestions you gave to achieve the desired data rate


    Thanks,
    Horst
  • I have done more work with the lwIP tests.


    So when limiting the sending function to 5 packets of 761 Bytes per MS I get a data rate of 30MBit/s without Problem. Which well fulfills my requirements.

    When sending out more packets I eventually receive an error:

    ASSERT FAIL at line 469 of C:/ti/simplelink_msp432e4_sdk_2_30_00_14/source/third_party/lwip/src/core/tcp_out.c: unsent_oversize mismatch (pcb vs. last_unsent)

    I guess it has to do with buffer size. But since our requirement is met, I am not investigating further.

    Cheers
    Horst

**Attention** This is a public forum