Issue in sending eth packet in freeRTOS+UIP

sushantc wrote on Monday, October 22, 2012:

Hii,
I am using the LM3S6965 ethernet board…i am tring to create a simple client-server communication using freeRTOS+UIP(v7.1.1) stack and IAR as IDE…i have made some changes in the demo code and created a client with a static IP…i am using a server tool…when i try to connect to the server, i end up in hard-fault isr(although 1 in 10 times i am able to establish a TCP connection with the server)…the issue i am having is that the uip_buf is not getting loaded with the address of the packet data buffer to be sent…and this issue arises only after uip_periodic() routine…

for( i = 0; i < UIP_CONNS; i++ )
{
    uip_periodic( i );

/ If the above function invocation resulted in data that should be sent out on the network, the global variable uip_len is set to a value > 0. /

if( uip_len > 0 )
{
    uip_arp_out();
    prvENET_Send();
}
}

I am not getting that when uip_periodic() encounters data to be sent, when(or where in uip.c) does uip_buf point to the data???Since the hard fault is arising while tring to send the packet on the network as uip_buf contains 0 and fault is encountered in vSendBufferToMAC() routine in emac.c while assigning
pus = ( unsigned portSHORT * ) uip_buf

Thanks in advance.

Sushant C

rtel wrote on Tuesday, October 23, 2012:

Sorry - I don’t have a quick answer.  In that situation I would step through the code until I found the line where the assignment was made, and then place a configASSERT() statement after the assignment to create a trap for the debugger.  When the trap is hit you can then step through the code until you see why the problem occurs.

Regards.