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.

NDK is not ARPing

Hello,

I have a project currently running with NDK 2.20.4.26 which only sends one ARP request for the FPGA I am attempting to send packets to. I can send and receive broadcast packets without a problem, but once I attempt to send to my FPGA's unicast address, it fails. Is there a way to force the NDK to ARP an IP?

Thanks

  • Hi norton256,

    Which hardware platform are you using?  How is your TI hardware hooked up to the FPGA board?  Is there a router or a switch in between?

    Have you used Wireshark to look at the packets?  What is the ARP request that you are seeing?  Is it the broadcast ARP message (destination FF:FF:FF:FF:FF:FF) requesting an answer from the IP address of you FPGA board?

    Steve

  • I am using an 6472 demo board.

    There is a switch in between.

    I have used wireshark with a hub to inspect the packets. I am seeing one gratuitous ARP, and then one arp for the IP of the FPGA. The ARPs are properly broadcast.

    Currently in all tests the demoboard is powered up first, loaded through JTAG, and then commanded to run. Once the demo board is running, the system with the switch and FPGA are powered on. So for the first ARP, the FPGA and switch are not present. But once power is on to the rest of the system, I never see another ARP.

  • So it sounds like you are trying to send some initial data to the FPGA *before* the board is active on the network? (What is the failure point in your TI side app? Are you issuing a "send()" command and that is what's failing?)

    How long are you waiting for the ARP reply?  It's possible that the next ARP request happens 30 seconds later, so maybe you are not waiting long enough.

    Lastly, it is possible to add static entries to the ARP table.  So you could manually add the IP/MAC address info of your FPGA before attempting to communicate with it. (note that all statically added ARP entries must be deleted manually).  Please see section "A7.1 Synopsis" of the aforementioned guide.

    Steve

     

  • I think I did not explain my situation clearly enough. Irst let me go through the startup steps:

    1) Demo board and FPGA system are off, with a hub between the two and a PC running wireshark

    2) Demo board is turned on, code loaded through JTAG, and then set to run

    3) In wireshark, all I see is one gratuitous ARP, and one ARP for the FPGA

    4) The FPGA ystem is turned on, and the DSP recieves data packets

    5) After processing the data, the DSP is supposed to send an update back to the FPGA. Thse packets are never seen in wireshark, nor by the system. There are also no other ARPs sent by the DSP for the FPGA.

    I am assuming that the send fails because the NDK does not have the MAC of the FPGA in its tables. What I would like to know is the NDK supposed to ARP an unknown IP when it attempts to send, or does it just error?

    Thanks

  • Did you ever resolve this problem?  I believe I am seeing the exact same thing now.  In my case it seems localized to 192.168.1.1.  I can broadcast and send to other IP addresses, but nothing is getting to 192.168.1.1.  Looking in wireshark i am only seeing the gratuitous ARP.

    Thanks

  • No, I never solved the root problem. It appears that every IP needs to be live when the NDK boots. The NDK only sends the one ARP. If you miss it, you are done. There may be a way to force the NDK to ARP a particular IP, but I could not quickly figure it out through the NDK docs.