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.

AM3356: EMAC boot issue at 1Gbps

Part Number: AM3356

Hello TI,

We are using the network boot function of the AM3356. We are using RGMII connection to the PHY, as with previous projects. We have a linux PC for the TFTP and BOOTP server. If we force the PC to be 100Mbps, the boot seems to work first time every time. If we let it use 1000 Mbps, it rarely works first time. We usually see no packets on wireshark until it restarts the boot process and it may take 5 minutes to complete the process. Eventually, it does boot at 1000 Mbps. Other than booting, there don’t seem to be any network problems at 1000Mbps. Have you heard of any similar issues?

The PHY_MODE[3:0] is set to 1110 = “advertise all capabilities except 1000Base-T half duplex” according to the datasheet. It always seems to work fine at 1000Mbps after booting.

Thanks,

Dan

  • Hi,

    According to section 26.1.9.4.1 of the AM335x TRM Rev. P:

    "Device detects if the PHY is alive on the MDIO interface and:
    – Reads the STATUS register to check if Ethernet link is active
    – Reads the CONTROL register to detect the auto-negotiated mode of operation:
    • Is the mode full-duplex or half duplex
    • Speed of operation, 1000/100/10 Mbps. Link speed is determined by reading the Auto-Negotiation Advertisement and Auto-Negotiation Link
    Partner Base Page Ability registers in the external PHY."

    Can you try changing the PHY_MODE[3:0] settings to see if there will be any effect?
  • Is this issue resolved? If so, please close the thread.
  • Hi Biser,

    No, this isn't resolved yet.  

    We changed PHY_MODE[3:0] to 1111 with no effect.

    Any other ideas?

    Thanks,

    Dan

  • Hi Dan,

    Do you use AM335x custom board? Do you use AM335x TI PSDK, which version?

    What is the silicon revision of your AM3356 device? We have several silicon errata advisories related to CPSW module, see for example Advisory 1.0.7, may be you hit some of these silicon errata advisories, please check these carefully.

    See also below links:

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide
    processors.wiki.ti.com/.../AM335x_board_bringup_tips

    e2e.ti.com/.../194680


    Regards,
    Pavel
  • Hi Pavel,

    I'm an engineer working on the project described in the OP. Sorry for the slow response here but I was distracted by other events.

    We are using a custom board that is based off the beaglebone black and we are using silicon revision 2.1 (AM3356BZCZA80) so I don't believe Advisory 1.07 is an issue for us.

    We are using a custom built kernel via buildroot. However, the issue takes place prior to the kernel or u-boot coming up. As stated when forced to 100 Mbps everything boots fine every time, i.e. the ROM code successfully boots into u-boot and eventually the kernel. At 1000 Mbps it only occasionally works. Once everything is booted though, there are no issues and everything works fine at 1000 Mbps.

    I have tried this on at least 3 machines running Ubuntu 16.04 or 12.04 with the same results. When using wireshark or tcpdump on the occasions where it does not boot, no boot requests come across the line, so it would seem there is nothing for the DHCP server to respond to.

    Any thoughts?
  • Trevor,

    Can you try with the latest u-boot that comes with AM335x TI PSDK 4.02? You can get it from this PSDK 4.02 installed package or download it with git:

    processors.wiki.ti.com/.../Processor_SDK_Linux_U-Boot_Release_Notes
    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide

    Try also to reproduce this issue on BeagleBoneBlack board, thus you will isolate if HW issue is involved.

    Ensure that the Ethernet PHY is properly powered up before the ROM attempts to access it. The Ethernet PHY may require some time for power sequencing and reset signaling before it can be accesses. Depending on the boot sequence chosen, the ROM may access the Ethernet PHY before it is ready.

    Make sure sysboot[7:6] pins are 0x3 (b11).

    Check AM335x datasheet, verify you have the correct RGMII data and timings in gigabit mode - section 7.6.1.4

    Make sure you have the correct value in GMII_SEL register.

    You should also check if the boot stuck at ROM Code stage or u-boot-spl stage. You can check this through the trace vectors. You can also configure the sysboot[4:0] pins for order EMAC 1st, MMC0 2nd, and check if your board will try to boot from MMC0. You can also configure the sysboot[4:0] pins for order ext boot 1st, EMAC 2nd, UART 3rd, thus checking if the boot flow will reach UART, where you will have CCCCC... printed on the console. Check AM335x TRM, section 26.1.9.4 EMAC Boot Procedure

    Check also:


    https://e2e.ti.com/support/arm/sitara_arm/f/791/t/558760

    Regards,
    Pavel

  • Pavel,

    Thank you for your support and suggestions, we seemed to have resolve the issue by changing the SYSBOOT configuration to have EMAC last in the boot order. This presumably gave the PHY more time to come up.

    The board has booted successfully every time since making this change.
  • Trevor,

    Thanks for sharing the exact solution. Please close/verify/resolve this thread.

    Regards,
    Pavel
  • Unfortunately, this is not my thread and I don't believe I can close it
  • Yes, only Dan can close it.