This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TCI6638K2K: NDK stops responding to ping from external PC

Part Number: TCI6638K2K

To test our TCI6638K2K dsp software, which runs on 2 dsp cores under SYS/BIOS, we run a NDK task on a 3rd core that exchanges messages with a PC over TCP/IP. That 3rd core exchanges messages with the other cores using QMSS.

The NDK task is a tcp/ip server, based on the NDK 'helloWorld' example (but uses tcp/ip instead of udp).  

We are using the following components:

  • EVM: XTCIEVMK2K Rev.3.0
  • XDC Tools 3.25.5.94

  • NDK 2.24.2.31

  • SYS/BIOS 6.37.2.27

  • Keystone2 PDK 3.0.3.15

  • CCS 5

If I run NDK's 'helloWorld' as is, the example runs fine and responds to ping commands from a remote PC indefinitely.

If I run our adaptation of the tcp server, at worst it never responds to a ping, at best it responds to several hundred pings and then stops responding.

I have successfully built the NDK and added an ARP Packet Monitoring Function (a hook).  So I can now detect when the NDK stack processes an ARP request.

I have observed a particular failure mode.  The app is configured to use DHCP.  When I start the app, and observe network traffic using Wireshark, I sometimes see the expected DHCP exchange (Discover / Offer / Request / Ack) followed by a Gratuitous ARP and then our NetworkIPAddr() is called, which is specified by: 

    rc = NC_NetStart( hCfg, NetworkOpen, NetworkClose, NetworkIPAddr );
However, sometimes on start I see the DHCP exchange, but there is no Gratuitous ARP and NetworkIPAddr() is not called.  In this case Pings never succeed. Presumably the stack has crashed.
Please will you suggest a strategy for debugging this problem?