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.

AM68A: USB Boot Mode Error During A72 U-Boot SPL

Part Number: AM68A

Tool/software:

Hello,

We have a custom board using an AM68A. I am in the middle of evaluating USB Boot mode and I'm running into some issues. I can properly set the device to usb boot mode and my computer enumerates the device as a dfu usb device. I can see the dfu device using dfu-util:

C:\>dfu-util.exe -l
dfu-util 0.11-dev

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Found DFU: [0451:6168] ver=0200, devnum=33, cfg=1, intf=0, path="2-1", alt=0, name="bootloader", serial="01.00.00.00"
Found DFU: [0451:6168] ver=0200, devnum=33, cfg=1, intf=0, path="2-1", alt=1, name="SocId", serial="01.00.00.00"

I can load tiboot3.bin just fine and I see appropriate output on the serial console. The issue is when I send tispl.bin. The file is sent to the device without issue and according to the console output, the device is attempting to boot. But there are errors about being unable to find the USB phy which lead to other errors of being unable to boot. Here is the serial console log below:

U-Boot SPL 2024.04-g55ecc5b0-dirty (May 15 2025 - 14:27:12 -0400)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
SPL initial stack usage: 13456 bytes
Trying to boot from DFU
#####DOWNLOAD ... OK
Ctrl+C to exit ...
alloc space exhausted
Could not get FIT buffer of 1158608 bytes
        check CONFIG_SPL_SYS_MALLOC_SIZE
Authentication passed
Authentication passed
Authentication passed
Loading Environment from nowhere... OK
init_env from device 18 not supported!
Authentication passed
Authentication passed
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b8
NOTICE:  BL31: Built : 10:02:54, Oct 10 2024
I/TC:
I/TC: OP-TEE version: 4.2.0-dev (gcc version 13.3.1 20240614 (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24))) #1 Thu Oct 10 14:04:09 UTC 2024 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: GIC redistributor base address not provided
I/TC: Assuming default GIC group status and modifier
I/TC: SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
I/TC: HUK Initialized
I/TC: Activated SA2UL device
I/TC: Enabled firewalls for SA2UL TRNG device
I/TC: SA2UL TRNG initialized
I/TC: SA2UL Drivers initialized
I/TC: Primary CPU switching to normal world boot

U-Boot SPL 2024.04-g55ecc5b0-dirty (May 15 2025 - 14:45:03 -0400)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
Trying to boot from DFU
cdns-usb3-peripheral usb@6000000: Couldn't get USB3 PHY:  -22
cdns-usb3-peripheral usb@6000000: Couldn't get USB3 PHY:  -22
No USB device found
udc_device_get_by_index failed
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

I tried USB boot mode with a J721S2XSOMG01EVM SOM on a J721EXCP01EVM common processor board with prebuilt binaries and that worked fine. I was able to boot all the way to u-boot. Here is that serial log for reference:

U-Boot SPL 2024.04-ti-g818c76aed67f (Aug 01 2024 - 19:19:47 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
SPL initial stack usage: 13456 bytes
Trying to boot from DFU
#####DOWNLOAD ... OK
Ctrl+C to exit ...
alloc space exhausted
Could not get FIT buffer of 1083896 bytes
        check CONFIG_SPL_SYS_MALLOC_SIZE
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Loading Environment from nowhere... OK
init_env from device 18 not supported!
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
NOTICE:  BL31: Built : 16:09:05, Feb  9 2024
I/TC:
I/TC: OP-TEE version: 4.2.0-dev (gcc version 13.3.0 (GCC)) #1 Fri Apr 12 09:51:21 UTC 2024 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: GIC redistributor base address not provided
I/TC: Assuming default GIC group status and modifier
I/TC: SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
I/TC: HUK Initialized
I/TC: Activated SA2UL device
I/TC: Fixing SA2UL firewall owner for GP device
I/TC: Enabled firewalls for SA2UL TRNG device
I/TC: SA2UL TRNG initialized
I/TC: SA2UL Drivers initialized
I/TC: Primary CPU switching to normal world boot

U-Boot SPL 2024.04-ti-g818c76aed67f (Aug 01 2024 - 19:19:47 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
Trying to boot from DFU
cdns-usb3-peripheral usb@6000000: DRD version v1 (ID: 0004024e, rev: 00000200)
cdns-usb3-peripheral usb@6000000: Initialized  ep0 support:
cdns-usb3-peripheral usb@6000000: Initialized  ep1out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep2out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep3out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep4out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep5out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep6out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep7out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep8out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep9out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep10out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep11out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep12out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep13out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep14out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep15out support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep1in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep2in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep3in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep4in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep5in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep6in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep7in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep8in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep9in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep10in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep11in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep12in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep13in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep14in support: BULK, INT ISO
cdns-usb3-peripheral usb@6000000: Initialized  ep15in support: BULK, INT ISO
######DOWNLOAD ... OK
Ctrl+C to exit ...
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted


U-Boot 2024.04-ti-g818c76aed67f (Aug 01 2024 - 19:19:47 +0000)

SoC:   J721S2 SR1.0 GP
Model: Texas Instruments J721S2 EVM
Board: J721S2X-PM1-SOM rev E4
DRAM:  2 GiB (effective 16 GiB)
Core:  117 devices, 32 uclasses, devicetree: separate
Flash: 0 Bytes
MMC:   mmc@4f80000: 0, mmc@4fb0000: 1
Loading Environment from nowhere... OK
In:    serial@2880000
Out:   serial@2880000
Err:   serial@2880000
am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA02102 cpsw_ver: 0x6BA82102 ale_ver: 0x00293904 Ports:1
Net:   eth0: ethernet@46000000port@1
Hit any key to stop autoboot:  0
MMC: no card present
mmc_init: -123, time 2002
MMC: no card present
mmc_init: -123, time 2002
** Bad device specification mmc 1 **
MMC: no card present
mmc_init: -123, time 2002
** Bad device specification mmc 1 **
Couldn't find partition mmc 1:2
Can't set block device
MMC: no card present
mmc_init: -123, time 2002
** Bad device specification mmc 1 **
Couldn't find partition mmc 1:2
Can't set block device
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
No FDT memory address configured. Please configure
the FDT address via "fdt addr <address>" command.
Aborting!
Bad Linux ARM64 Image magic!
Scanning for bootflows in all bootdevs
Seq  Method       State   Uclass    Part  Name                      Filename
---  -----------  ------  --------  ----  ------------------------  ----------------
Scanning global bootmeth 'efi_mgr':
MMC: no card present
mmc_init: -123, time 2002
No EFI system partition
No EFI system partition
Failed to persist EFI variables
No EFI system partition
Failed to persist EFI variables
No EFI system partition
Failed to persist EFI variables
  0  efi_mgr      ready   (none)       0  <NULL>
** Booting bootflow '<NULL>' with efi_mgr
Loading Boot0000 'mmc 0' failed
EFI boot manager: Cannot load any image
Boot failed (err=-14)
Scanning bootdev 'mmc@4fb0000.bootdev':
MMC: no card present
mmc_init: -123, time 2002

The boot failures at the end is expected. That is just due to not having the sdcard in place as I wanted to make sure it was booting of off usb.

What's weird is that if our custom board boots normally off of the sdcard into u-boot proper, I can use the dfu functionality there just fine. It seems to be an issue with the usb in the A72 SPL but I'm not quite sure how to track it down.

Would someone be able to point me in a direction to better troubleshoot this?

Thanks!

  • Hi 

    What is the value of the PLL ref clock you are using are you using 19.2MHz clock on the EVM?

    Can you help share u-boot.dtb which will be under  <Linux_sdk>board-support/<UBOOT>/build/r5.

    Regards
    Diwakar

  • What is the value of the PLL ref clock you are using are you using 19.2MHz clock on the EVM?

    Are talking about WKUP_OSC0? We are using a 19.2MHz crystal just like the EVM. Is there a different way I should check to be 100% sure (I don't know if there's an internal mux for this clock that needs to be configured)?

    Can you help share u-boot.dtb which will be under  <Linux_sdk>board-support/<UBOOT>/build/r5.

    Is there a way to share this privately?

  • Hi Amandio,

    Sorry for the delayed response and thank you for you patience.

    We have a custom board using an AM68A

    Can you help us with the hardware schematics of USB on the custom board using AM68A as as per your logs USB 3 PHY is not coming up.

    Is there a way to share this privately?

    Also can you share u-boot.dtb as DIwakar has suggested before.Currently,there is no way to share it privately,Amandio.

    Regards

    Gokul

  • Hello,

    Sorry for the delay, but I have some more information.

    On our board, we are only using USB 2.0, so the SERDES are not connected. After experimenting with the device tree I found that if I removed both the "phys" and "phys-name" properties from the usb0 node, I can get usb boot to work. I was reading through the TRM and other device tree files to try and find a USB 2.0 phy to assign in its place, but I can't see to find anything suitable.

    I'm assuming there is a USB 2.0 phy on the SOC that should be assigned to this node?

  • One more question, is the property 

    ti,usb2-only;
    required in this case for the usbss0 node? It seems to work fine without it.
    Thanks!
  • Hi Amandio,

    I'm assuming there is a USB 2.0 phy on the SOC that should be assigned to this node?

    Yes, you are right,Amandio.

    ti,usb2-only;

    Its better if you include it as it double confirms that usb2.0 is used.

    Regards

    Gokul