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.

MCU-PLUS-SDK-AM243X: enet_icssg_tcpserver example has an issue with ping test.

Part Number: MCU-PLUS-SDK-AM243X
Other Parts Discussed in Thread: TMDS243EVM, , SYSCONFIG

Tool/software:

Board: TMDS243EVM
SDK Version: MCU-PLUS-SDK-AM243x v11.0.0.15
Example: Enet ICSSG TCP Server

Test Method
- Set the static IP addresses for the two ICSSG ports on the EVM using dual-MAC configuration, with each port assigned to 192.168.1.11 and 192.168.2.11.
- Connect both Ethernet ports on the board to the PC using a switching hub.
- After running the example, continuously send PING requests to each IP address from the PC.

Issue:
- When sending a PING to each port on the board individually, a response is received, but when sending a PING to both ports simultaneously, one of the ports does not respond.

Solution
- Modify the Linker.cmd in the example to allocate all sections assigned to DDR to MSRAM. This prevents the issue where a response is not received when sending a PING to both ports simultaneously.

In our project, we need to use the GETH 2 port with the AM243x, but due to other IO usage, we can only use ICSSG. Additionally, due to the data capacity we need to manage, we must use DDR memory.


Please provide a solution to resolve this issue.

  • Hi ,

    Thanks for your query.

    Will check on this and get back to you.

    Regards

    Ashwani

  • Hi Ashwani,
    I'm wondering if you have any updates on the issue I inquired about.
    Also, is there anything I can do to help resolve this issue?
    Best regards
    Jinwon Jang

  • Hi ,

    I have verified the usecase that you mentioned. I was not able to reproduce the issue that you have mentioned. I was able to receive packets from the host PC even with the sections in DDR. Can you please elaborate which sections are you moving between MSRAM and DDR? 

    Regards,
    Teja.

  • Hi, Teja.
    This issue occurs when the example is executed without modification.
    When two ICSS ports of the EVM board are connected to a 1G Ethernet Switching Hub and the ‘ping <ip_addr> -t’ command is executed simultaneously on both ports from the Windows console of a single PC, the ping response from one of the two ICSS ports frequently fails.
    (The ping response success rate is below 70%.)
    The same example on a LaunchPAD without DDR, inspired by the idea of loading all sections to MSRAM, shows a 100% ping response success rate in the same environment when all sections are changed to MSRAM in the EVM code as well.
    Please review this issue again.

    Best Regards,
    Jinwon Jang

  • Hi Jinwon Jang,

    I tried to recreate the issue, but I am not able to observe the dropped packets issue with the example without any modifications. Can you share more details related to the network configuration, that is, the IP addresses used for the interfaces, the Gateway and Netmask used for the corresponding interfaces?

    I was not able to observe any packet drops because of the memory placement. Can you please confirm if there are no changes to the default example, from any of the components?

    Thanks and regards,
    Teja.

  • Hi Teja,

    I am currently on a long business trip, so I am unable to log this information.
    I will log the information you requested in the middle of this month and send you a report.

    Thank you.

    Best Regards,
    Jinwon Jang

  • Hi Jinwon Jang,

    Thank you. Let me know when there are updates regarding this.

    Thanks and regards,
    Teja.

  • I have identified the cause of the issue I raised.
    The .icss_mem section of the linker.cmd provided in the example is as follows.


    When icssg1 is set to dual mac mode in sysconfig and port1 and port2 are added, only the following memory is linked in the map file.
    - gEnetSoc_icssg1HostPoolMem_0
    - gEnetSoc_icssg1HostQueuelMem_0
    - gEnetSoc_icssg1ScratchMem_0


    However, since Port1 and Port2 should use separate memory, the linking should actually be as follows:
    - gEnetSoc_icssg1HostPoolMem_0
    - gEnetSoc_icssg1HostQueuelMem_0
    - gEnetSoc_icssg1ScratchMem_0
    - gEnetSoc_icssg1HostPoolMem_1
    - gEnetSoc_icssg1HostQueuelMem_1
    - gEnetSoc_icssg1ScratchMem_1


    After modifying Linker.cmd to link all the above areas, I confirmed that the issue was completely resolved.
    Please update this section accordingly.
    Thank you.

    Best Regards,

    Jinwon Jang

  • Hi Jinwon Jang,

    Thank you for the update. I will give this feedback to the dev team. 

    I am closing this thread since this is resolved.

    Thanks and regards,
    Teja.