My application opens a simple tcp client connection that maintains echo request/answer.
So far, everything worked well, but there is a vary wierd situation in which after few hours of work, the software seem to stop getting interrupts for incoming frames.
At this situation the software continues to operate normaly (sending SYN connection request) but it seems that it can't see incoming frames (SYN+ACK answers).
Although that through a sniffer i can see the connection requests and answers, by putting breakpoints inside recive procedure, i can see that the software doesn't even get there...
how is it possible, that this incoming frames are not treated?
Thanks,
Gal
Hi Gal
Possibly a receive interrupt problem. If you have a DBM check that the received frames are being placed in SRAM at 0x2000 and 0x2000 + RX buffer size. Check the state of the receive registers and you may see that the two buffers are flagged as full but the interrupt has not processed them - therefore nothing more will happen.
It may be possible then to restart receive operation by resetting relevent bits in the EMAC registers and ensuring that the interrupts are free to operate again.
Unfortunately such problems can be quite difficult to pinpoint and solve, but I haven't heard of OpenTCP having driver difficulties before.
At my web site there are several on-line demos running on NE64s, wich you can control via a browser and see via web cam - inclduing dynamic http generation and control and FTP for web page updates. The NE64 is an extremely reliable part and some of these demos have been running for over 6 months without known problems.
I also have a demo project which can be downloaded at http://www.mjbc.ch/software/Demo/j8jdwk-ku7/uTaskerPingDemo.zip
(instructions in directory applications\ping)
which includes the uTasker operating system and TCP/IP stack (only basic for the demo) and also runs as NE64 simulator on the PC. When the NE64 EMAC is used, data is sent over the PC's NIC and when LAN data is received by the PC, it is passed through the real NE64 interrupt code, driver routines, up the stack etc. You may find it of some use.
The uTasker environment is also free - including free support - to educational establishments and for non-commercial projects.
Cheers
Mark Butcher
For anyone still interested in this....
I've had a Freescale service request open for several weeks regarding this issue. Freescale managed to replicate the problem. The case was forwarded to the design centre so that the hardware could be checked. There was no fault found in the hardware. Freescale then tried a similar set of tests but the NE64 code was built using the CMX TCP/IP stack rather than the OpenTCP stack. The fault could no longer be replicated. The conclusion therefore is that this behaviour is due to a bug in the OpenTCP stack. Unfortunately, Freescale can no longer provide support for the OpenTCP stack since Viola Systems have started charging 20,000 Euros for the product. Since I don't have the time or expertise to debug the OpenTCP stack, we have decided to try the CMX stack which is not cheap but its a lot less expensive than the new (?) 'supported' OpenTCP stack.