str912 + lwip + freertos5.0.2

I use freertos version 5.0.2 and lwip. target board program following code for server 1. calling founction void vBasicWEBServer( void *pvParameters ) // basicweb.c
{
unsigned char pcMessageToExchange = “n init socketrn”; 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); vSerialPutString( 0, pcMessageToExchange, strlen( pcMessageToExchange ) );
/* Initialize HTTP */
// httpd_init(); //kcs kcs_server(); // kcs /* Nothing else to do. No point hanging around. */
vTaskDelete( NULL );
} void kcs_server() // httpd.c
{ struct tcp_pcb *pcb; pcb = tcp_new(); tcp_bind(pcb, IP_ADDR_ANY,2000); tcp_arg(pcb,NULL); pcb = tcp_listen(pcb); tcp_accept( pcb, helloworld_accept);
} void helloworld_accept( void *arg, struct tcp_pcb *pcb, err_t err) // kcs
{ int i,j; vSerialPutString( 0, “acceptrn”, 10 ); vSerialPutString( 0, “readrn”, 8 );
tcp_err(pcb,conn_err); // 2010.3.4 kim
tcp_recv(pcb, kcs_receive); for(j = 0; j < 1; j++)
{
vSerialPutString( 0, “writern”, 9 );
tcp_write(pcb, GREETING, strlen(GREETING),1);
for( i = 0; i < 100;i++) ;
} } err_t kcs_receive(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) // kcs
{
int i; vSerialPutString( 0, “receivern”, 11); if( p != NULL)
{ tcp_recved(pcb,p->tot_len); // add kcs 2010.3.4 vSerialPutString( 0, p->payload, p->tot_len );
err = tcp_write(pcb,p->payload,p->tot_len ,1);
}
else if( err == ERR_OK)
{
vSerialPutString( 0, “socket closern”, 16 );
tcp_close(pcb);
} err = tcp_write(pcb,p->payload,p->len,1); } Above code run 8 times packet and ping reply, but don’t run 9 times. and ping don’t reply
why did it run?

str912 + lwip + freertos5.0.2

Sorry, but I have no idea and cannot read the code very easily.  I would guess either a problem in your Ethernet driver, or you are not freeing memory buffers and so are simply running out of buffers.  I think you would have to switch on some of the debugging/logging in lwIP to see why it stops running. Also, the lwIP mailing list is a very active place to get lwIP specific support. Regards.