cancel
Showing results for 
Search instead for 
Did you mean: 

Restarting the ethernet + OS

XD
Associate III

Hello everyone.

What is the proper procedure when restarting the entire ethernet?
Im using LWIP and FreeRTOS and im not sure if im restarting everything correctly...

These are the steps im using.

  1. Terminate TCP Server thread.

 

netif_set_down(&gnetif);
netif_remove(&gnetif);
netconn_delete(Connection);

osThreadTerminate(ThreadID);

 

  • HAL

 

HAL_ETH_Stop(&heth);
HAL_ETH_DeInit(&heth);
HAL_ETH_Init(&heth);
HAL_ETH_Start(&heth);
​

 

  • Start TCP server

 

netif_set_ipaddr(&gnetif, ip);
netif_set_up(&gnetif);

ThreadID = osThreadNew(TCP_Thread, NULL, &TCP_Thread_attributes);​

 

What steps am i missing?

Thanks for any replies :)

2 REPLIES 2
STea
ST Employee

Hello @XD ,

Restarting Lwip and Ethernet are not the same think as Lwip is a software set of function using ethernet to implement the rest of TCP/IP model and Ethernet is a peripheral integrated in the STM32 so doing a Dinit and Init to Ethernet is able to make it restart regarding Lwip it is up to you to know how to handle it and implement proper callback to recover when the Ethernet peripheral is uninitialized .
Regards

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
XD
Associate III

Hi @STea

De-initializing the ethernet (hardware & PHY) will cause the LWIP to malfunction. I'm using the standard LWIP + OS CubeMX configuration which creates a task for LWIP and one for TCPIP.

void MX_LWIP_Init(void);

There does not seem to be a matching "DeInit" function for the above Init.

What is the recommended approach?