AM4378: AM437x Custom Board QSPI Boot Failure with U-Boot (No Console Output)

Part Number: AM4378
Other Parts Discussed in Thread: TPS62362, TPS65218

I am porting U-Boot to a custom AM437x board(based on AM437x-gp-evm). 
I used the SDK version ti-processor-sdk-linux-am437x-evm-09.03.05.02-Linux-x86-Install.bin.

I referred to the following guide to build U-Boot:
https://software-dl.ti.com/processor-sdk-linux/esd/AM437X/09_03_05_02/exports/docs/linux/How_to_Guides/Board_Port/U-Boot.html#integrating-support-for-a-new-board-into-the-u-boot-tree 

 

Using the guide, I successfully built U-Boot and confirmed that SD card  boot works correctly. After U-Boot finishes booting from the SD card, I also confirmed that the QSPI device is detected properly.

 

Next, in order to boot from QSPI, I created u-boot.bin based on 'am43xx_evm_qspiboot_defconfig'.

# am43xx_base_qspi_defconfig #
CONFIG_ARM=y
CONFIG_ARCH_CPU_INIT=y
# CONFIG_SYS_THUMB_BUILD is not set
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_TEXT_BASE=0x30000000
CONFIG_SYS_MALLOC_F_LEN=0x400
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x4033ff00
CONFIG_ENV_SIZE=0x10000
CONFIG_ENV_OFFSET=0x110000
CONFIG_ENV_SECT_SIZE=0x10000
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="am437x-base"
CONFIG_AM43XX=y
CONFIG_TARGET_AM43XX_BASE=y
CONFIG_ENV_OFFSET_REDUND=0x120000
CONFIG_DISTRO_DEFAULTS=y
CONFIG_QSPI_BOOT=y
CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd"
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_BOARD_EARLY_INIT_F=y
# CONFIG_MISC_INIT_R is not set
CONFIG_SYS_MAXARGS=64
CONFIG_CMD_ASKENV=y
CONFIG_CMD_DFU=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_BOOTP_DNS2=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_OF_CONTROL=y
CONFIG_DTB_RESELECT=y
CONFIG_MULTI_DTB_FIT=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_SPI_FLASH=y
CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_VERSION_VARIABLE=y
CONFIG_NET_RETRY_COUNT=10
CONFIG_BOOTP_SEND_HOSTNAME=y
CONFIG_SYS_RX_ETH_BUFFER=64
CONFIG_DFU_MMC=y
CONFIG_DFU_RAM=y
CONFIG_DFU_SF=y
CONFIG_SPL_SYS_I2C_LEGACY=y
CONFIG_MMC_OMAP_HS=y
CONFIG_SF_DEFAULT_SPEED=48000000
CONFIG_SPI_FLASH_MACRONIX=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_MII=y
CONFIG_DRIVER_TI_CPSW=y
CONFIG_POWER_TPS65218=y
CONFIG_POWER_TPS62362=y
CONFIG_SYS_NS16550_SERIAL=y
CONFIG_SPI=y
CONFIG_TI_QSPI=y
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_OMAP=y
CONFIG_USB_GADGET_DOWNLOAD=y

However, when I set the boot mode to QSPI, nothing is printed on the console and the board does not boot at all. QSPI was programmed successfully with u-boot.bin.

How can I check where the problem is occurring?

board.c board.h mux.c 
For reference, I will upload the modified source files that I changed.
They are located in './board/unicos/base'

  • Hi Kim,

    I'll check this and get back to you in 3 days.

    Regards,
    Vinu

  • Hi Kim,

    I've gone through the files you've shared and it seem correct.

    The board_is_evm() / board_is_gpevm() is configuring gpio5_7_pin_mux, rgmii1_pin_mux and qspi_pin_mux. 
    The qspi_pin_mux itself seem correct.

    Can you boot to U-boot from SD and see if you can boot Linux from QSPI?

    https://software-dl.ti.com/processor-sdk-linux/esd/AM437X/09_03_05_02/exports/docs/linux/Foundational_Components/U-Boot/UG-QSPI.html ?

    U-Boot # sf probe 0
    U-Boot # sf read ${loadaddr} 0x1a0000 0x800000
    U-Boot # sf read ${fdtaddr} 0x100000 0x80000
    U-Boot # setenv bootargs console=${console} spi-ti-qspi.enable_qspi=1 root=/dev/mtdblock6 rootfstype=jffs2
    U-Boot # bootz ${loadaddr} - ${fdtaddr}

    If this is working, can you also try to read the data from offset 0? Please share the output logs.

    U-Boot # sf probe 0
    U-Boot # sf read ${loadaddr} 0x0 0x20000
    U-Boot # md ${loadaddr}

    Also, please share the hexdump of your QSPI u-boot binary

    hexdump -C u-boot.bin | head -200

    Also, from SD U-boot, try jumping to QSPI U-boot.

    U-Boot # sf probe 0
    U-Boot # go 0x30000000

    Since CONFIG_TEXT_BASE=0x30000000 from the config maps the QSPI flash to that address, this should execute the QSPI U-boot.

    Try these out and let me know.

    Regards,
    Vinu

  • Hi,

    I am using the QSPI partition like below.

    partition@0{
        label="QSPI.U_BOOT";
        reg=<0x00000000 0x00100000>;
    };
    
    partition@1{
        label="QSPI.U_BOOT_ENV";
        reg=<0x00100000 0x00080000>;
    };
    
    prtition@2{
        label="QSPI_U-BOOT-DEVICETREE";
        reg=<0x00180000 0x00080000>;
    };
    
    partition@3{
        label="QSPI.KERNEL";
        reg=<0x00200000 0x00E00000>;
    };

    Filesystem in on eMMC.

    So, I boot to U-boot from SD card, and boot Linux from QSPI like below.

    sf probe 0
    sf read ${loadaddr 0x00200000 0x00E0000
    sf read ${fdtaddr 0x00180000 0x00080000
    setenv bootargs 'console=ttyO0,115200n8 root=/dev/mmcblk1p1 rw rootfstype=ext4 rootwait'
    bootz ${loadaddr - ${fdtaddr

    It worked perfertly.

    And,  when I enter like below

    U-Boot # sf probe 0
    U-Boot # sf read ${loadaddr 0x0 0x00100000
    U-Boot # md ${loadaddr

    It shows like this

    82000000: ea0000b8 e59ff014 e59ff014 e59ff014  ................
    82000010: e59ff014 e59ff014 e59ff014 e59ff014  ................
    82000020: 80800060 808000c0 80800120 80800180  `....... .......
    82000030: 808001e0 80800240 808002a0 deadbeef  ....@...........
    82000040: 0badc0de e320f000 e320f000 e320f000  ...... ... ... .
    82000050: e320f000 e320f000 e320f000 e320f000  .. ... ... ... .
    82000060: e51fd028 e58de000 e14fe000 e58de004  (.........O.....
    82000070: e3a0d013 e169f00d e1a0e00f e1b0f00e  ......i.........
    82000080: e24dd048 e88d1fff e51f2050 e892000c  H.M.....P ......
    82000090: e28d0048 e28d5034 e1a0100e e885000f  H...4P..........
    820000a0: e1a0000d fa0006a6 e320f000 e320f000  .......... ... .
    820000b0: e320f000 e320f000 e320f000 e320f000  .. ... ... ... .
    820000c0: e51fd088 e58de000 e14fe000 e58de004  ..........O.....
    820000d0: e3a0d013 e169f00d e1a0e00f e1b0f00e  ......i.........
    820000e0: e24dd048 e88d1fff e51f20b0 e892000c  H.M...... ......
    820000f0: e28d0048 e28d5034 e1a0100e e885000f  H...4P..........
    

    And when I enter 'hexdump -C u-boot.bin | head -200', It shows like this.

    00000000  b8 00 00 ea 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5  |................|
    00000010  14 f0 9f e5 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5  |................|
    00000020  60 00 80 80 c0 00 80 80  20 01 80 80 80 01 80 80  |`....... .......|
    00000030  e0 01 80 80 40 02 80 80  a0 02 80 80 ef be ad de  |....@...........|
    00000040  de c0 ad 0b 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |...... ... ... .|
    00000050  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    00000060  28 d0 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |(.........O.....|
    00000070  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    00000080  48 d0 4d e2 ff 1f 8d e8  50 20 1f e5 0c 00 92 e8  |H.M.....P ......|
    00000090  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    000000a0  0d 00 a0 e1 a6 06 00 fa  00 f0 20 e3 00 f0 20 e3  |.......... ... .|
    000000b0  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    000000c0  88 d0 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |..........O.....|
    000000d0  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    000000e0  48 d0 4d e2 ff 1f 8d e8  b0 20 1f e5 0c 00 92 e8  |H.M...... ......|
    000000f0  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    00000100  0d 00 a0 e1 98 06 00 fa  00 f0 20 e3 00 f0 20 e3  |.......... ... .|
    00000110  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    00000120  e8 d0 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |..........O.....|
    00000130  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    00000140  48 d0 4d e2 ff 1f 8d e8  10 21 1f e5 0c 00 92 e8  |H.M......!......|
    00000150  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    00000160  0d 00 a0 e1 8a 06 00 fa  00 f0 20 e3 00 f0 20 e3  |.......... ... .|
    00000170  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    00000180  48 d1 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |H.........O.....|
    00000190  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    000001a0  48 d0 4d e2 ff 1f 8d e8  70 21 1f e5 0c 00 92 e8  |H.M.....p!......|
    000001b0  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    000001c0  0d 00 a0 e1 7c 06 00 fa  00 f0 20 e3 00 f0 20 e3  |....|..... ... .|
    000001d0  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    000001e0  a8 d1 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |..........O.....|
    000001f0  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    00000200  48 d0 4d e2 ff 1f 8d e8  d0 21 1f e5 0c 00 92 e8  |H.M......!......|
    00000210  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    00000220  0d 00 a0 e1 6e 06 00 fa  00 f0 20 e3 00 f0 20 e3  |....n..... ... .|
    00000230  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    00000240  08 d2 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |..........O.....|
    00000250  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    00000260  48 d0 4d e2 ff 1f 8d e8  30 22 1f e5 0c 00 92 e8  |H.M.....0"......|
    00000270  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    00000280  0d 00 a0 e1 6a 06 00 fa  00 f0 20 e3 00 f0 20 e3  |....j..... ... .|
    00000290  00 f0 20 e3 00 f0 20 e3  00 f0 20 e3 00 f0 20 e3  |.. ... ... ... .|
    000002a0  68 d2 1f e5 00 e0 8d e5  00 e0 4f e1 04 e0 8d e5  |h.........O.....|
    000002b0  13 d0 a0 e3 0d f0 69 e1  0f e0 a0 e1 0e f0 b0 e1  |......i.........|
    000002c0  48 d0 4d e2 ff 1f 8d e8  90 22 1f e5 0c 00 92 e8  |H.M......"......|
    000002d0  48 00 8d e2 34 50 8d e2  0e 10 a0 e1 0f 00 85 e8  |H...4P..........|
    000002e0  0d 00 a0 e1 48 06 00 fa  7a 07 00 ea 00 00 0f e1  |....H...z.......|
    000002f0  1f 10 00 e2 1a 00 31 e3  1f 00 c0 13 13 00 80 13  |......1.........|
    00000300  c0 00 80 e3 00 f0 29 e1  10 0f 11 ee 02 0a c0 e3  |......).........|
    00000310  10 0f 01 ee 78 00 9f e5  10 0f 0c ee 90 03 00 eb  |....x...........|
    00000320  15 0f 07 ee 9a 0f 07 ee  95 0f 07 ee 1e ff 2f e1  |............../.|
    00000330  ed ff ff ea 00 00 a0 e3  17 0f 08 ee 15 0f 07 ee  |................|
    00000340  d5 0f 07 ee 9a 0f 07 ee  95 0f 07 ee 10 0f 11 ee  |................|
    00000350  02 0a c0 e3 07 00 c0 e3  02 00 80 e3 02 0b 80 e3  |................|
    00000360  01 0a 80 e3 10 0f 01 ee  0e 50 a0 e1 10 1f 10 ee  |.........P......|
    00000370  21 3a a0 e1 0f 30 03 e2  0f 40 01 e2 03 22 a0 e1  |!:...0...@..."..|
    00000380  02 20 84 e1 0c 00 9f e5  07 00 c0 e3 00 d0 a0 e1  |. ..............|
    00000390  05 f0 a0 e1 00 00 80 80  00 ff 33 40 ff ff ff ff  |..........3@....|
    000003a0  70 47 01 48 70 47 00 bf  03 00 00 80 00 48 70 47  |pG.HpG.......HpG|
    000003b0  03 00 00 80 00 48 70 47  03 00 00 80 00 48 70 47  |.....HpG.....HpG|
    

    It seems QSPI writing is correct.

    If I enter like

    U-Boot # sf probe 0
    U-Boot # go 0x30000000 ,

    U-Boot SPL 2023.04 (May 11 2026 - 15:00:59 +0900)
    Trying to boot from MMC1
    SPL: Please implement spl_start_uboot() for your board
    SPL: Direct Linux boot not active!
    

    This logs appear.
  • Hi Kim,

    This is good information.

    The QSPI itself is written correctly and is working, you could boot the Linux from QSPI.

    Also, the U-boot flash content matches (just little endian display differences)

    But, the go 0x30000000 logs indicate that it's an SPL binary, not an XIP U-boot proper.

    Can you confirm if you've written the u-boot.bin file to QSPI from the build directory?

    To make sure it's the U-boot proper, please run 

    strings u-boot.bin | grep "U-Boot SPL"

    It shouldn't find a "U-Boot SPL " string. It should print nothing for a U-boot proper binary.

    Also, please find the Entry point using the following command.

    arm-linux-gnueabihf-readelf -h u-boot | grep "Entry point"

    It should say "Entry point address: 0x30000000" for XIP U-boot binary.

    Regards,
    Vinu

  • Hi,

    When I  run 'strings u-boot.bin | grep "U-Boot SPL"', it returns nothing.

    And here's the u-boot.bin file that I build.

    4540.u-boot.zip

    Regards,

  • Hi Kim,

    Can you find the entry point as mentioned?

    Also, please find the Entry point using the following command

    Regards,
    Vinu

  • Hi,

    It shows like this.

    arm-none-linux-gnueabihf-readelf -h u-boot | grep "Entry point"
    Entry point address: 0x30000000

    Regards,

  • Hi Kim.

    Entry point address: 0x30000000

    This is the correct address for XIP, but 0x80800000 is meant for the normal U-boot (am43xx_evm_defconfig). 

    Can you try flashing this again and check the QSPI boot?

    Please share your boot pin config too.

    Regards,
    Vinu

  • Hi,

    Previously, I checked a file that was built for the SD card. That was my mistake.

    The entry point address is 0x30000000.

    Regards,

  • Hi, 

    Actually, if I write old u-boot.bin(version: 2013) that was built a long time ago to QSPI, it boots normally.

    So I believe there is no issue with the boot pins.

    Right now, I am working on migrating to the latest version.

  • Hi Kim, 

    The latest version is 11.02.05.02, which was released last year with U-boot 2025.

    It had fixed lots of U-boot issues. Can you try it out?

    Regards,
    Vinu

  • Hi,

    To be precise, I used version 09.03.05.02 because I wanted to use Qt5.

    I did not use SDK version 11.02.05.02 because it includes Qt6 prebuilt in the SDK.

    I will try building U-Boot using version 11.02.05.02.

    Regards,

  • Hi,

    When I use U-Boot 2025, it boots normally.

    However, I have one question.

    After powering on, the boot log appears only after about 5-6 seconds.

    Is this normal?

    Regards,

  • Hi Kim,

    Glad to know that U-boot 2025 works.

    Ideally it should appear earlier.

    Can you share your logs?

    Regards,
    Vinu

  • Hi,

    The logs are like below.

    U-Boot 2025.01-ga44465cad8a3-dirty (May 14 2026 - 17:39:04 +0900)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x BASE
    DRAM:  512 MiB
    Core:  29 devices, 12 uclasses, devicetree: fit
    PMIC:  TPS65218
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from SPIFlash... SF: Detected s25fl128s with page size 256 Bytes, erase size 64 KiB, total 16 MiB
    OK
    Net:   eth2: ethernet@4a100000
    Hit any key to stop autoboot:  0
    

    I couldn't find anything unusual in the logs.

  • Hi Kim,

    The logs indeed look okay.

    If you need support on the boot delay, I recommend you to create another thread with the details.

    This ensures searchability among other community members.

    Regards,
    Vinu

  • Hi,

    Okay, I'll create another thread.

    Thank you for your support.

    Regards,