I'm seeing situations in my project where the MQX/RTCS Task "TCPIP_task()" never blocks to allow other tasks to run. Since it's at priority level 6 that means it's pretty much the only thing still running. This happens pretty regularly when I have multiple socket connections established (some as server from a listen/accept socket, some as a client from a connect call) and the devices are transferring config messages between them upon new connection (aprox a dozen msgs from 1K to 100K in size). I can seemingly prevent this from happening if I put a little space between message requests (about 30mS seems to work great) but that's not a solution to the problem. When in this mode, I can pull the Ethernet cable (to prevent further communications) and the problem doesn't resolve itself. If I force the socket to close, the problem clears itself and normal operation resumes. From what I see, TCPIP_task() runs an endless while(1) loop where it calls RTCS_msgq_receive() and keeps track of timing. since RTCS_msgq_receive() is really the only function call in the TCPIP_task() while(1) loop, I'm guessing that it should block occasionally to allow other tasks (my project code for example : ) to run?
Any ideas what I might look at to determine what is keeping RTCS_msgq_receive() so busy? Otherwise the networking seems to be working properly. My client is acting as both a TCP client (making outgoing connect() calls) and a server using listen() / accept() calls, and also as a web server. When locked in the RTCS_msgq_receive() task, the web server seems to continue working properly. Also, when in this mode, I can pull the Ethernet cable (to prevent further communications) and the problem doesn't resolve itself. If I force the socket to close, the problem clears itself and normal operation resumes.
I'm using RTCS 4.0.2 ported into MQX 220.127.116.11 on a Freescale MPC-5125 processor (with CodeWarrior for MobileGT 9.2). Thanks for any suggestions!