Skip to main content
Visitor II
May 4, 2020
Solved

UDP Echo server example is not working(Nucleo-144 for STM429ZI)

  • May 4, 2020
  • 2 replies
  • 2181 views

I used example from STM324xG_EVAL\Applications\LwIP\LwIP_UDP_Echo_Server\Src.

I add lwIP into the project using CubeMX.

ping test is good.

I sent the message using Hercules tool. but Necleo didn't receive massages .

0693W000000Wop3QAC.png

there are CubeMX setting value.

I also change GATEWAY ADDRESS to 192.168.42.1, not working too.

0693W000000Wop8QAC.png

0693W000000WopNQAS.png

0693W000000WopSQAS.png

/* lwIP.c*/
void MX_LWIP_Init(void)
{
 /* IP addresses initialization */
	 	IP_ADDRESS[0] = 192;
		IP_ADDRESS[1] = 168;
		IP_ADDRESS[2] = 42;
		IP_ADDRESS[3] = 51;
		NETMASK_ADDRESS[0] = 255;
		NETMASK_ADDRESS[1] = 255;
		NETMASK_ADDRESS[2] = 255;
		NETMASK_ADDRESS[3] = 0;
		GATEWAY_ADDRESS[0] = 0;
		GATEWAY_ADDRESS[1] = 0;
		GATEWAY_ADDRESS[2] = 0;
		GATEWAY_ADDRESS[3] = 0;
 
 /* Initilialize the LwIP stack without RTOS */
....
..
}
 
/*udp_echoserver.c */ 
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
 
 /* Connect to the remote client */
 udp_connect(upcb, addr, UDP_CLIENT_PORT);
 
 /* Tell the client that we have accepted it */
 udp_send(upcb, p);
 
 /* free the UDP connection, so we can accept new clients */
 udp_disconnect(upcb);
	
 /* Free the p buffer */
 pbuf_free(p);
 
}
 
 
/*main.c*/
int main(void)
{
 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
 HAL_Init();
 
 /* USER CODE BEGIN Init */
	/* tcp echo server Init */
	udp_echoserver_init();
 /* USER CODE END Init */
 
 /* Configure the system clock */
 SystemClock_Config();
 
 /* Initialize all configured peripherals */
 MX_GPIO_Init();
 MX_USART3_UART_Init();
 MX_USB_OTG_FS_PCD_Init();
 MX_LWIP_Init();
 
 /* Infinite loop */
 /* USER CODE BEGIN WHILE */
 while (1)
 {
 /* USER CODE END WHILE */
 
 /* USER CODE BEGIN 3 */
	 ethernetif_input(&gnetif);
	 /* Handle timeouts */
	 sys_check_timeouts();
 }
 /* USER CODE END 3 */
}

​I want to work udp_echoserver_receive_callback fuction when I send a message.

    This topic has been closed for replies.
    Best answer by Piranha

    You are calling udp_echoserver_init() before MX_LWIP_Init(). :)

    Also be warned...

    https://community.st.com/s/question/0D50X0000BOtfhnSQB/how-to-make-ethernet-and-lwip-working-on-stm32

    2 replies

    PiranhaAnswer
    Graduate II
    May 4, 2020

    You are calling udp_echoserver_init() before MX_LWIP_Init(). :)

    Also be warned...

    https://community.st.com/s/question/0D50X0000BOtfhnSQB/how-to-make-ethernet-and-lwip-working-on-stm32

    BPark.4Author
    Visitor II
    May 4, 2020

    Thank you.

    I modifed it under MX_LWIP_Init(). and I can receive the message.

    Visitor II
    December 7, 2020

    Hi

    Im trying to run echo server on stm32h743z nucleo without any success

    int main(void)

    {

     /* USER CODE BEGIN 1 */

     /* USER CODE END 1 */

     /* Enable D-Cache---------------------------------------------------------*/

     SCB_EnableDCache();

     /* MCU Configuration--------------------------------------------------------*/

     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

     HAL_Init();

     /* USER CODE BEGIN Init */

     /* USER CODE END Init */

     /* Configure the system clock */

     SystemClock_Config();

     /* USER CODE BEGIN SysInit */

     /* USER CODE END SysInit */

     /* Initialize all configured peripherals */

     MX_GPIO_Init();

     MX_SPI3_Init();

     MX_USART3_UART_Init();

     MX_USB_OTG_FS_PCD_Init();

     MX_LWIP_Init();

     /* USER CODE BEGIN 2 */

     /* USER CODE END 2 */

     /* Infinite loop */

     /* USER CODE BEGIN WHILE */

     udp_echoserver_init();

     while (1)

     {

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

    ethernetif_input(&gnetif);

    /* Handle timeouts */

    sys_check_timeouts();

     }

     /* USER CODE END 3 */

    }

    any help ?

    Visitor II
    July 2, 2021

    Hello @BPark.4,

    I am facing the same issue like you. Ping test is also working and my echo_init in the right place but nucleo can't receive messages using Hercules.

    Any idea ?