FreeRTOS+TCP on (STM32F04G-Eval | MSP-EXP432P401R | MSP430FR2532) with UART instead of ETH

dante-89 wrote on Wednesday, August 14, 2019:

Hi,

for my project I want to find out, if I can change the FreeRTOS+TCP communication, which usualy is ethernet, to UART. My thoughts are:

  • put data into an ethernet frame
  • send it via UART to the MCU
  • write it in the recieve buffer for ethernet
  • run the FreeRTOS_recv(); function (i.e.) to use the conveniences of FreeRTOS+TCP
  • read the transmitt buffer for ethernet
  • send it via UART away from MCU

I’m new to (Free)RTOS, but already done a workshop on Udemy. I also have two eval’s here to play arround with (STM32F04G-Eval & MSP-EXP432P401R). Actually I work with the STM32F04G-Eval and the preconfigured projects (EcheServer i.e.) to get into it. The goal for me is to evaluate the thoughts on the STM eval.-board, port it to the MSP432 LaunchPad and finally at the mentioned MSP430FR2532 (this is the one MCU i have developed my own PCB).

Later the purpose should be:

  • connect some of the MCU’s to a cluster
  • let them communicat via UART with the advantages of TCP/IP (DHCP) in addition to a RTOS

Now I’m not here that you guys make the project for me, but eventually someone can give me hints where the lever could be applied or can tell that this project is impossible?

FreeRTOS_recv(); leads me to pvBuffer (the buffer into which received data will be placed) via uxStreamBufferGet(); from StreamBuffer_t. Also I have reead the documentation for the NetworkBufferDescriptor_t. I think the *pucEthernetBuffer is my entry point, but I dont get the link between these two structures…

Greetings,
Daniel

rtel wrote on Thursday, August 15, 2019:

There are some specific protocols for IP over serial, you can look up
SLIP and PPP. Other than that I presume you can use the porting guide
to transmit and send over UART instead of Ethernet
https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_TCP_Porting.html
which would be ok if you are sending point to point (so can basically
ignore the Ethernet addressing).