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.

AM3358: Issue with U-Boot Configuration or ROM Code

Part Number: AM3358


Team,

We have developed a custom circuit card around the Octavo Systems' OSD3358-512M-BSM processor. The nature of our application requires us to utilize the EMAC1 booting option per section 26.1.9.4 of SPRUH73P to boot the OS for the card. We have developed our own Linux image from the Yocto platform, customized our device tree, u-boot image, as well as having set up BOOTP/DHCP and TFTP servers.


Our problem is that the cards boot and function sucessfully ~90% of the time with no issues. However the other ~10% of the time there is a boot failure and we are having trouble determining the root cause of the boot failures. We believe the issue to either be in our configuration of U-Boot, something we don't understand about the ROM code in the AM3358, or the RGMII interface to our Ethernet PHY. Any insight into what we might be missing on our side?

Thank you.

  • Go Bravos said:
    Our problem is that the cards boot and function sucessfully ~90% of the time with no issues. However the other ~10% of the time there is a boot failure and we are having trouble determining the root cause of the boot failures

    Can you share some more details such as logs?

    Also since you are booting SPL/U-Boot via network, can you analyze the network traffic using Wireshark on the host PC to see what are the differences between good & bad boots, and if there is any consistency/commonalities in case of failures?

    Regards, Andreas

  • Hi Andreas,

    In reference to the logs, I am not sure how/where to pull logs for the ROM loader or first stage of u-boot (SPL).  This appears to be where the issue resides.

     Can you advise?  Can we utilize the XDS110 to see real-time booting info on the JTAG header?

    Thank you.

  • Go Bravos said:
    I am not sure how/where to pull logs for the ROM loader or first stage of u-boot (SPL).  This appears to be where the issue resides.

    With logs I referred to the UART boot logs.

    Or is it when you have a "boot failure" that there is no log at all?

    If that's the case there are two things you can try.

    1. Use the TI Code Composer Studio-specific AM335x Debug Server Scripting package for low-level device state and boot analysis. Refer to the included README file for further information. In conjunction with a JTAG debugger such as XDS110 of course.

    2. Enable early UART functionality in U-Boot/SPL. This may give you additional insight as in SPL the UART isn't brought up until well into the boot process, masking many things that could go wrong including but not limited to DDR bringup. For this, add something like this to your configuration:

    CONFIG_DEBUG_UART_BASE=0x44e09000
    CONFIG_DEBUG_UART_CLOCK=48000000
    CONFIG_DEBUG_UART=y
    CONFIG_DEBUG_UART_OMAP=y
    CONFIG_DEBUG_UART_SHIFT=2
    CONFIG_DEBUG_UART_ANNOUNCE=y

    Note that this includes CONFIG_DEBUG_UART_ANNOUNCE=y which leads to the output of <debug_uart> very very early on in the SPL boot flow, before most/any of the SoC and peripheral configuration happens. Having this enabled is a good way to see an “early sign of life” of sorts during board bringup, giving one confidence that the very basics of the boot process are working which is the ROM boot loader loading SPL from the desired boot media and SPL starting to execute.

    Regards, Andreas