lwip task start

Hi all, I’m doing a demo on udp lwip working for Str91x with Rowley. My demo is not getting send packages udp, in my opinion there is a problem when the FreeRTOS launches task. Below is my code, to understand how to launch the task I have taken inspiration from demo WebServer included in the package FreeRTOS 5. someone can help me? it’s my code ok? ===========================================MAIN.C========= …… #ifdef STACK_LWIP            /* Create the lwIP task.  This uses the lwIP RTOS abstraction layer.*/           vlwIPInit();         sys_set_state(    ( signed portCHAR * ) "httpd", lwipBASIC_SERVER_STACK_SIZE );           sys_thread_new( vBasicWEBServer, ( void * ) NULL, ( tskIDLE_PRIORITY + 2 )basicwebWEBSERVER_PRIORITY );         sys_set_default_state(); #endif ……. =========================================UDP_SENDER.H======== …………………. #ifndef UDP_SENDER_H #define UDP_SENDER_H #include <91x_type.h> /*——————————————————————————*/ /*                            MACROS                                             */ /*——————————————————————————*/ #define basicudp_SENDER_PRIORITY      ( tskIDLE_PRIORITY + 2 ) /* The port on which we listen. */ #define webUDP_PORT        ( 1234 ) /* Delay on close error. */ #define webSHORT_DELAY        ( 10 / portTICK_RATE_MS ) /* The IP address being used. */ #define emacIPADDR0            10 #define emacIPADDR1         200 #define emacIPADDR2           200 #define emacIPADDR3           2 /* The gateway address being used. */ #define emacGATEWAY_ADDR0   10 #define emacGATEWAY_ADDR1   200 #define emacGATEWAY_ADDR2   200 #define emacGATEWAY_ADDR3   1 /* The network mask being used. */ #define emacNET_MASK0         255 #define emacNET_MASK1         255 #define emacNET_MASK2         255 #define emacNET_MASK3         252 #define STATIC_IP   1 #define DHCP_IP     2 #define lwipBASIC_SERVER_STACK_SIZE    250 /*——————————————————————————*/ /*                            PROTOTYPES                                        */ /*——————————————————————————*/ /* The function that implements the WEB server task. */ void vBasicUDPSender( void *pvParameters ); /* Initialisation required by lwIP. */ void vlwIPInit( void ); #endif =========================================UDP_SENDER.C========================== #define basicwebWEBSERVER_PRIORITY      ( tskIDLE_PRIORITY + 2 ) #define lwipTCP_STACK_SIZE            600 /* Standard includes. */ #include <stdio.h> #include <string.h> #include <91x_type.h> /* Scheduler includes. */ #include "FreeRTOS.h" #include "task.h" #include "semphr.h" /* Demo includes. */ #include "lwIPWebServer/BasicWEB.h" #include "udpecho-sender.h" /* lwIP includes. */ #include "lwip/api.h" #include "lwip/tcpip.h" #include "lwip/memp.h" #include "lwip/stats.h" #include "Dnetif/loopif.h" //#include "lcd.h" #include "httpd.h" //#define lwipTCP_STACK_SIZE            600 //XXXXXXXXXXXXXXXXXXXXXXXXXXXX #include "lwip/udp.h" #include "lwip/mem.h" #include "lwip/debug.h" /*——————————————————————————*/ /*                            GLOBALS                                          */ /*——————————————————————————*/ static struct netif EMAC_if; /*——————————————————————————*/ /*                            FUNCTIONS                                         */ /*——————————————————————————*/ void vlwIPInit( void ) {     /* Initialize lwIP and its interface layer. */     sys_init();     mem_init();                                    memp_init();     pbuf_init();     netif_init();     ip_init();     sys_set_state(( signed portCHAR * ) "lwIP", lwipTCP_STACK_SIZE);     udp_init();        sys_set_default_state(); } void udp_echo_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port) {     if (p != NULL)     {         /* send received packet back to sender */                 udp_sendto(pcb, p, addr, port);         /* free the pbuf */         pbuf_free(p);     } } void udp_echo_init(void) {     struct udp_pcb * pcb;     /* get new pcb */     pcb = udp_new();     if (pcb == NULL) {         LWIP_DEBUGF(UDP_DEBUG, ("udp_new failed!n"));         return;     }     /* bind to any IP address on port 7 */     if (udp_bind(pcb, IP_ADDR_ANY, UDP_PORT) != ERR_OK) {         LWIP_DEBUGF(UDP_DEBUG, ("udp_bind failed!n"));         return;     }     /* set udp_echo_recv() as callback function        for received packets */     udp_recv(pcb, udp_echo_recv, NULL); } void vBasicWEBServer( void *pvParameters ) { struct ip_addr xIpAddr, xNetMast, xGateway; extern err_t ethernetif_init( struct netif *netif );     /* Parameters are not used – suppress compiler error. */     ( void ) pvParameters;     /* Create and configure the EMAC interface. */     IP4_ADDR( &xIpAddr, emacIPADDR0, emacIPADDR1, emacIPADDR2, emacIPADDR3 );     IP4_ADDR( &xNetMast, emacNET_MASK0, emacNET_MASK1, emacNET_MASK2, emacNET_MASK3 );     IP4_ADDR( &xGateway, emacGATEWAY_ADDR0, emacGATEWAY_ADDR1, emacGATEWAY_ADDR2, emacGATEWAY_ADDR3 );     netif_add( &EMAC_if, &xIpAddr, &xNetMast, &xGateway, NULL, ethernetif_init, tcpip_input );     /* make it the default interface */     netif_set_default( &EMAC_if );     /* bring it up */     netif_set_up(&EMAC_if);     /* Initialize HTTP */    udp_echo_init();//httpd_init();     /* Nothing else to do.  No point hanging around. */     vTaskDelete( NULL ); } ………………….