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.

AM4376: Can't bootup from QSPI Flash

Part Number: AM4376

Hi TI Team,

We are using the component AM4376, and the follow question block our testing and project, could you please help to take a look at it, thank you.

Demo the default startup is MMC0 (Micro SD) and our project requirements are started from FLASH. We burned the version to Flash according to SDK Guide, but can't startup.

BR,

Bijian Chen

 

  • Hello Bijan Chen,

    Thank you for the query !

    Would you please help me understand more about the AM4376  I/O interfaces used for booting.

    I understand that you have the SDK bootloader and OS images on an MicroSD Card that is mapped at the MMC0 port. Some flash loader is used to write the images to an external Flash memory.

    Q1. Would you please specify what is the type / version of the SDK - MCU PLUS or a LINUX SDK ?

    Q2. Do you have success with AM4376 ROM Code booting successfully in non-SDCard boot modes (for example in UART) ? 

    Q3. If reply to Q2 is yes, have you verified the boot images burned onto the Q-SPI flash ? Are you sure the Q-SPI Flash memory can be correctly read and written ? 

    Q3. What does it mean - the system can't startup ? Do you have any indication of hardware activity - LEDs switched on, blinking. Are there absolutely no messages printed on the UART console ?

    Q6. If answer to Q2 is no, did you make sure that all power supplies are present and turned on according to the AM437x Datasheet recommended power-on sequence ?

    Looking forward to your feedback !

    Thanks

    Kind Regards

    Anastas Yordanov

  • I did same on AM4378-SK board with Linux SDK11.2 and 6.3, also can't boot from QSPI nor flash

    #1. Build u-boot.bin with am43xx_evm_qspiboot_defconfig

    #2. flash QSPI flash according to user guide: https://software-dl.ti.com/processor-sdk-linux/esd/AM437X/11_02_05_02/exports/docs/linux/Foundational_Components/U-Boot/UG-QSPI.html

    => mmc rescan
    =>
    => fatload mmc 0 ${loadaddr} u-boot.bin
    759824 bytes read in 43 ms (16.9 MiB/s)
    => sf probe 0
    SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB, total 64 MiB
    => sf erase 0x0 0x100000
    SF: 1048576 bytes @ 0x0 Erased: OK
    => sf write ${loadaddr} 0x0 ${filesize}
    device 0 offset 0x0, size 0xb9810
    SF: 759824 bytes @ 0x0 Written: OK
    =>

    #3. power off board, remove SD card, power up again, no output from UART.

    #4. Checked bootmode has QSPI in list.

    root@am437x-evm:~# devmem2 0x44e10040
    /dev/mem opened.
    Memory mapped at address 0xb6f6e000.
    Read at address 0x44E10040 (0xb6f6e040): 0x02400338

    #5. From user guide uboot section, QSPI boot only supported by IDK board, is there a reason?

  • I did it AM437x IDK, can boot with the same u-boot.bin file

    U-Boot 2019.01-ga764a508fd-dirty (Feb 11 2026 - 16:46:24 +0800)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x Industrial Development Kit
    DRAM:  1 GiB
    PMIC:  TPS62362
    MMC:   OMAP SD/MMC: 0
    Loading Environment from SPI Flash... SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB, total 64 MiB
    *** Warning - bad CRC, using default environment
    
    Net:
    Warning: ethernet@4a100000 using MAC address from ROM
    eth0: ethernet@4a100000
    Hit any key to stop autoboot:  0
    MMC: no card present
    MMC: no card present
    MMC: no card present
    MMC: no card present
    starting USB...
    USB0:   Register 2000440 NbrPorts 2
    Starting the controller
    USB XHCI 1.00
    scanning bus 0 for devices... 1 USB Device(s) found
    usb - USB sub-system
    
    Usage:
    usb start - start (scan) USB controller
    usb reset - reset (rescan) USB controller
    usb stop [f] - stop USB [f]=force stop
    usb tree - show USB device tree
    usb info [dev] - show available USB devices
    usb test [dev] [port] [mode] - set USB 2.0 test mode
        (specify port 0 to indicate the device's upstream port)
        Available modes: J, K, S[E0_NAK], P[acket], F[orce_Enable]
    
    =>

    In order to double check, I re-flashed SDK11.2 uboot.bin, still can boot.

    U-Boot 2025.01-ga44465cad8a3 (Feb 11 2026 - 16:26:26 +0800)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x Industrial Development Kit
    DRAM:  1 GiB
    Core:  25 devices, 12 uclasses, devicetree: fit
    PMIC:  TPS62362
    MMC:   OMAP SD/MMC: 0
    Loading Environment from SPIFlash... SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB, total 64 MiB
    *** Warning - bad CRC, using default environment
    
    Net:   eth2: ethernet@4a100000
    Hit any key to stop autoboot:  0
    MMC: no card present
    ** Bad device specification mmc 0 **
    MMC: no card present
    starting USB...
    No USB controllers found
    USB is stopped. Please issue 'usb start' first.
    ## Error: "bootcmd_nand0" not defined
    starting USB...
    No USB controllers found
    ethernet@4a100000 Waiting for PHY auto negotiation to complete.....

    IDK board boot mode register value:0x318, not obviously different with AM4378-SK board boot mode setting.

    root@am437x-evm:~# devmem2 0x44e10040
    /dev/mem opened.
    Memory mapped at address 0xb6f59000.
    Read at address  0x44E10040 (0xb6f59040): 0x00400318
    root@am437x-evm:~#

    BTW. Need to wait 29s to get UBOOT log output after plug in power.

  • Hi Tony,

    Thank you very much for the conducted tests on the two EVMs  and your inputs here.

    I checked that both EVMs contain the same QSPI MACRONIX MX66L51235FMI NOR flash memories.   

    From the attached MLO + U-Boot build table I understand that there is no default TI configuration to build MLO + U-Boot image that can be booted over QSPI from AM437x ROM code on the AM437x Starter Kit. There is only defconfig file to build QSPI bootable MLO/U-Boot ONLY for the AM437x Industrial kit.   

    Your tested SYSBOOT[4:0] configuration is:

    Here are some notes I made from the AM437x TRM based on your full SYSBOOT configuration:

    "Read at address 0x44E10040 (0xb6f6e040): 0x02400338" -> this value converted to binary is:

    0b0000 0010 0100 0000 0000 0011 0011 1000

    [4:0] = 0b11000 -> boot list sequence: MMC0->USB1->USB0->QSPI  (Q: How fast is device scanning performed until QSPI reached ?)

    [5] = 0b1 - don't care

    [7:6] = 0b00 -   quad read (boot) from the Flash (mis-aligned with the STS bitfield description ) + pinmux option 0

    Comment: So I understand that the quad read QE bit of MX66L51235FMI must be initially programmed to 0b1 to allow ROM to boot in Quad mode.

    Is that the case on your Starter Kit ?

    [10:8] = 0b011 -  GP device

    [15:11]=0b00000 - kept at reset value 0h

    [16] =  0b0 - 8-bit GPMC data bus

    [17] = 0b0 - ignore WAIT input

    [19:18] = 0b00 - No GPMC address/data muxing

    [21:20] = 0b00 - Reserved

    [23:22] = 0b01 - 24MHz- system clock selected

    [24] SYSBOOT16 = 0b0 -> USB0(USB_CL)/USB1(USB_MS) DP/DM not swapped

    [25] SYSBOOT17 = 0b1->CLKOUT1 signal selected on pin: xdma_event_intr0 

    [26] SYSBOOT18 = 0b0 ->Do not route EXTCLK to CLKOUT2

    BTW. Need to wait 29s to get UBOOT log output after plug in power.

    Have you checked if with the below configuration of the SYSBOOT[4:0], U-boot can be booted faster ? 

    Let me check with our AM437x EVM / U-Boot software experts and follow-up.

    Bijan Chen,

    Would you please elaborate answering my initial questions.

    Thanks

    Best Regards

    Anastas Yordanov

  • Compared SK and IDK schematic, QSPI flash reset pin is not connected on SK board, while it is connected to system_reset on IDK board. short R12 and U5 Pin3 on SK board, can also boot up from QSPI flash.

    Keep in mind: also need to wait 29s for the first log output from UART.