Other Parts Discussed in Thread: AM3359, SYSBIOS, TLK110, PROFIBUS
Hi all.
I'm observing a weird issue on NDK running on AM3359 cpu: after some minutes/hour NDK stops responding to any request.
Details are:
NDK: 2.24.3.35
SYS/BIOS: 6.42.2.29
Compiler: TI 5.2.5
CCS: 6.1.1.00022
NDK NIMU drivers: provided by TI in Industrial SDK, folder \am335x_sysbios_ind_sdk_1.1.0.10\sdk\os_drivers
Hardware: custom board, TLK110 phy chip, 10/100
After restarting cpu (or downloading software via jtag) everything works fine: ping, telnet and http server run correctly.
After some minutes (or hours, depending on how much ethernet traffic is present on network) I stop getting responses from any service running on cpu.
Wireshark does not give any hints, I can't see any response to host requests:
Halting CPU I can't see anything wrong: ROV shows no issues, and Cpsw_HwIntRx is fired when a packet is received by CPSW hardware.
Following execution I can trace this:
CPSW_RxServiceCheck --> emacDequeueRx --> cpsw3gCfg.pfcbRxPacket() (ie:RxPacket) -->
STKEVENT_signal( pPDI->hEvent, STKEVENT_ETHERNET, 1 )
Last is a semaphore post, and I can't guess the execution from here on...
Trying as a blind man, I placed a breakpoint in IPRxPacket, that should be called when an IP packet is received.
When NDK stops responding, this function sometimes:
- it's not called at all
- it's called, but never reaches ICMPInput
- reaches ICMPInput, but inside ICMPChecksum fails (line 86).
It seems to me that, under some circumstances, packets are corrupted in such a manner that NDK can't no more deliver them to the appropriate layer.
This happens after minutes in a highly loaded network, with tons of broadcasts packets.
In smaller networks (or just a single connection to the client PC), it happens after hours of service.
If you keep pinging (ping -l xx.xx.xx.xx), it never happens.
After some breaking/resuming, NDK switch back to normal operation.
Hints? This is a serious issue, and it' s blocking the release of a new product.





















