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.

AM3359: NDK 2.26.00.08: Ping / connection through different network segment not working

Part Number: AM3359
Other Parts Discussed in Thread: AM3358

Hello,


we are setting up a TCP/IP connection using NDK 2_26_00_08 on a SITARA AM3359.

A ping from an external PC functions well if the PC is located in the same network segment as the AM3359 device, for example AM3359 IP address: 192.168.2.3 and PC 192.168.2.5. But when we try to connect from a different network segment the connection fails.

For example:

SITARA ip address 192.168.1.3 and gateway 192.168.1.1

PC ip address: 192.168.0.5 and gateway 192.168.0.1

Router 1: ip address 192.168.0.0 gateway 192.168.0.1


Router 2: ip address 192.168.1.0 gateway 192.168.1.1


In this case, pinging from the pc to the SITARA only works, after we do a ping from the SITARA to the gateway (192.168.1.1). Without this ping the SITARA cannot be reached from outside the network segement. Do you have any idea why this happens?

Thanks

  • Hi,

    You may check some information about how ICMP and ARP worked. E.g. https://www.linux.com/news/ping-icmp-vs-arp/ You may do some packet capture between AM3358 and Router 2 to understand what happened. Also check the Router 2's routine table in failure/working case if IP/MAC address of AM3358 exist.

    Regards, Eric

  • Hi Eric,

    finally we did some message capturing.

    In this case the SITARA had the IP-Address: 136.230.205.31 and the Laptop from which we tested the connection had the IP-Address 136.230.205.73 for the PING working and 10.130.193.105 with the PING not working.


    Here are the messages with the PING working:


    397 3.566228 SpeedDra_9c:9a:93 Broadcast ARP 60 Who has 136.230.205.31? Tell 136.230.205.73

    398 3.566257 TexasIns_45:05:1b SpeedDra_9c:9a:93 ARP 60 136.230.205.31 is at 7c:38:66:45:05:1b

    399 3.566587 136.230.205.73 136.230.205.31 ICMP 74 Echo (ping) request  id=0x0001, seq=35/8960, ttl=128 (reply in 400)

    400 3.566612 136.230.205.31 136.230.205.73 ICMP 74 Echo (ping) reply    id=0x0001, seq=35/8960, ttl=255 (request in 399)


    And here the messages with the PING not working:


    257 5.351672 10.130.193.105 136.230.205.31 ICMP 74 Echo (ping) request  id=0x0001, seq=22/5632, ttl=127 (no response found!)

    276 10.353799 10.130.193.105 136.230.205.31 ICMP 74 Echo (ping) request  id=0x0001, seq=23/5888, ttl=127 (no response found!)


    What can be seen, is that there is no ARP message in case the PING does not work. The ARP Broadcast is probably not done because the IP-Address is
    already known to the router. Do you have any idea why the TexasInstruments device does not answer the ping request?

    Regards

    Timo

  • Hi,

    All our ping tests are done inside the same subnet. What software based you used for this test? Is it Processor SDK RTOS on AM335x basic NIMU example? Which release is it? If you ping the AM335x for multiple times, do you see the Rx packets increment on AM335X Technical Reference Manual Table 14-100. CPSW_STATS REGISTERS? That is, the CPSW hardware received the ICMP ping packets from router?

    Then in the NDK layer, you can track global variables called ips, ICMPIn[19] and ICMPOut[19] to see whether packets received in IP layer then ICMP received and send out?

    Regards, Eric 

  • Hi Eric,

    sorry for my late response!

    We are using

    - SYS/BIOS Version 6.52.0.12

    - NDK Version: ndk_2_26_00_12

    The NDK is prebuild as a library, so how can we access the internal variables ?

    Timo

  • Hi,

    Please see the pic below, add those global variables into CCS expression window. NDK 2.26 is old, probably the name doesn't have NDK_ in front. E.g, NDK_ips (new NDK)======>ips (or IPS) (OLD NDK).

    Regards, Eric