Hello, I am using the BSD Socket Interface from the Real-Time Library to implement TCP/IP communications under uVision 4 and this application is running on TI EKK-LM3S9B92. Since I need to send and receive messages at the same time in two tasks, my recv function must work in non blocking mode. Otherwise, the socket may be locked by the recv task, so the send task can not obtain the socket to send messages. In this case, I used the recv function with the last parameter setting to "MSG_DONTWAIT" in non blocking mode and added a lock to the socket. Everytime I want to send or receive a message, I have to wait for the lock. After I have sended or received the message, I made the task wait for an extra 10 ms in order not for one task always getting the lock(both of my send and receive tasks are working in circles). Under such circumstances, another application running under Windows can not send messages too fast to this application. Otherwise, the recv function get a sys_error "ERR_MEM_FREE". It is not the memory pool that causes this problem, since I enlarged the memory pool and it doesn't work. What could be the reason for this? Look forward to your reply.
Please update to MDK423. This version should solve your problem.