AM623: USB Host Boot Mode (MSC) Unsupported on EVM Board

Part Number: AM623

Tool/software:

Hi TI Team,

I’m currently working with the AM62x EVM board and am experiencing an issue with the USB Host boot mode (MSC). As per the boot configuration settings, setting B7-B0 to 11010011 should enable primary booting from USB MSC. However, this configuration doesn’t appear to function as expected on this board.

Could you please confirm if USB MSC boot mode is officially supported on the AM62x EVM? If there are any specific requirements or limitations associated with this mode, I would appreciate any guidance or documentation you could provide.


Regards,
Murali Vikash

  • For USB MSC boot, B7 should be '0', and B8 should be '1'.

  • Hi Bin Liu,

    Thank you for your response.

    I attempted USB MSC boot on the AM62x EVM following these steps, but encountered an error:

    Flashed a .wic image onto a USB drive using Balena Etcher.
    Configured the boot mode switch for USB MSC boot with the following settings:
    Switch 2 (positions 0-7): 11001010
    Switch 1 (positions 8-15): 10000000
    Attempted to boot from the USB drive.
    Despite these steps, the board does not boot from the USB MSC device. Could you please provide further guidance on this issue?





    Regards,
    Murali Vikash

  • Hi Murali,

    To use USB MSC boot, U-Boot R5 SPL should be compiled with defconfig "am62x_evm_r5_defconfig am62x_r5_usbmsc.config". Please see the table in the U-Boot doc linked below.

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_00_07_04/exports/docs/linux/Foundational_Components/U-Boot/UG-General-Info.html

  • Hi,

    Thank you for sharing the link. I noticed that it refers to Version 10 of the U-Boot documentation, while I am currently using the Version 9 SDK of Yocto. Could you confirm if the steps for compiling U-Boot R5 SPL with am62x_evm_r5_defconfig am62x_r5_usbmsc.config will also work in V9, or if there are specific steps or configurations for V9 that I should follow?

    Currently, when I set UBOOT_MACHINE="am62x_evm_r5_usbmsc_defconfig" for V9, I encounter the message "Please RESET Board." Similarly, setting UBOOT_MACHINE="am62x_evm_r5_defconfig am62x_r5_usbmsc.config" for V10 also results in "Please RESET Board."

    Would there be any configuration changes or patches I need to apply to resolve this?

    Regards,Vikash

  • Hi,

    Currently, when I set UBOOT_MACHINE="am62x_evm_r5_usbmsc_defconfig" for V9,

    yes this is correct for SDK9.x.

    I encounter the message "Please RESET Board."

    You probably need the following U-Boot patch.

    diff --git a/arch/arm/dts/k3-am625-sk.dts b/arch/arm/dts/k3-am625-sk.dts
    index 823e4320c3c4..9b19c3153a19 100644
    --- a/arch/arm/dts/k3-am625-sk.dts
    +++ b/arch/arm/dts/k3-am625-sk.dts
    @@ -569,11 +569,11 @@
     };
     
     &usb0 {
    -       dr_mode = "peripheral";
    +       dr_mode = "host";
     };
     
     &usb1 {
    -       dr_mode = "host";
    +       dr_mode = "peripheral";
            pinctrl-names = "default";
            pinctrl-0 = <&main_usb1_pins_default>;
     };
    diff --git a/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi b/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi
    index 4265b434168b..b1a724a117fd 100644
    --- a/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi
    +++ b/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi
    @@ -122,7 +122,7 @@
     };
     
     &usb0 {
    -       dr_mode = "peripheral";
    +       dr_mode = "host";
            /* Since role switching is not supported in U-Boot */
            /delete-property/ extcon;
            bootph-pre-ram;
    @@ -133,6 +133,7 @@
     };
     
     &usb1 {
    +       dr_mode = "peripheral";
            bootph-pre-ram;
     };

  • Hi Bin Liu.

    Thank you for the patch; uboot is now up and running. However, I am encountering issue after uboot attching log for your reference.

    U-Boot SPL 2023.04-ti-gf9b966c67473 (Mar 19 2024 - 20:31:40 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 13408 bytes
    Trying to boot from USB
    Bus usb@31000000: Register 1000840 NbrPorts 1
    Starting the controller
    USB XHCI 1.10
    scanning bus usb@31000000 for devices... 2 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s) found
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    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
    
    U-Boot SPL 2023.04-ti-gf9b966c67473 (Mar 19 2024 - 20:31:40 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    MMC: no card present
    ** Bad device specification mmc 1 **
    Couldn't find partition mmc 1:1
    Error: could not access storage.
    Trying to boot from USB
    Bus usb@31000000: Register 1000840 NbrPorts 1
    Starting the controller
    USB XHCI 1.10
    scanning bus usb@31000000 for devices... 2 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s) found
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-ti-gf9b966c67473 (Mar 19 2024 - 20:31:40 +0000)
    
    SoC:   AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Board: AM62B-SKEVM-P1 rev A
    DRAM:  no bloblist found!2 GiB
    Core:  72 devices, 32 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    ** Invalid partition 1 **
    Couldn't find partition mmc 0
    Can't set block device
    ** Invalid partition 1 **
    Can't set block device
    ** Invalid partition 1 **
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    ** Invalid partition 1 **
    Couldn't find partition mmc 0:1
    Can't set block device
    ** Invalid partition 1 **
    Couldn't find partition mmc 0:1
    Can't set block device
    Working FDT set to 88000000
    Bad Linux ARM64 Image magic!
    switch to partitions #0, OK
    mmc0(part 0) is current device
    ** Invalid partition 1 **
    Couldn't find partition mmc 0:1
    MMC: no card present
    starting USB...
    Bus usb@31000000: generic_phy_get_bulk : no phys property
    Register 1000840 NbrPorts 1
    Starting the controller
    USB XHCI 1.10
    scanning bus usb@31000000 for devices... 2 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s) found
    
    Device 0: Vendor: UFD_3.0  Rev:      Prod: Silicon-Power
                Type: Removable Hard Disk
                Capacity: 29660.0 MB = 28.9 GB (60743680 x 512)
    ... is now current device
    Scanning usb 0:1...
    Scanning usb 0:1...
    Working FDT set to 88000000
    MMC: no card present
    No EFI system partition
    No EFI system partition
    Failed to persist EFI variables
    "Synchronous Abort" handler, esr 0x96000044
    elr: 000000008085909c lr : 0000000080859038 (reloc)
    elr: 00000000fff5f09c lr : 00000000fff5f038
    x0 : 00000000fdf09cf0 x1 : ffffffffff700000
    x2 : fffffffffffca000 x3 : 0000000000000000
    x4 : 0000000000000000 x5 : 0000000000000000
    x6 : 00000000fdf09cf0 x7 : 0000000000000000
    x8 : 00000000fded7820 x9 : 0000000000000008
    x10: 00000000000024bc x11: 00000000fded50ac
    x12: 0000000000002488 x13: 0000000000000000
    x14: 00000000fded7820 x15: 0000000000000002
    x16: 00000000fff5f0cc x17: 0000000000000000
    x18: 00000000fdee6d80 x19: 0000000000000000
    x20: 00000000fdeea650 x21: 00000000fded53a0
    x22: 00000000fffb5491 x23: 0000000000000003
    x24: 00000000fffe4574 x25: 0000000000000000
    x26: 0000000000000000 x27: 0000000000000000
    x28: 00000000fdf0a710 x29: 00000000fded5340
    
    Code: f9401001 8b020022 eb02003f 54fffec2 (b8004433)
    


    Regards, Vikash

  • Hi Bin Liu,

    Could you advise on any specific changes required for bootcmd and bootargs to enable booting from USB? Please let me know the exact parameters that need modification.

    Regards, Vikash

  • Hi Vikash,

    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0

    When uboot prints the message above, please press any key to get to the U-Boot prompt and run the following command to boot kernel from USB.

    => run usbboot

  • Hi Bin Liu,

    run usbboot

    I am getting following message: ## Error: "usbboot" not defined.
    Regards,Vikash

  • Hi Bin Liu,

    Attaching screenshots for your reference

    run usbboot


    Regards,Vikash

  • I will try it on my EVM and get back to you.

  • Hi Vikash,

    Instead of "run usbboot", can you please do "run usb_boot" in the U-Boot prompt?

  • Hi,

    Instead of "run usbboot", can you please do "run usb_boot" in the U-Boot prompt?

  • Hi Vikash,

    I can reproduce the issue on my EVM with SDK9.2. It appears the U-Boot ENV is not setup properly for USB MSC boot.

    Instead of "run usb_boot" command, Please run the follow sequence of U-Boot commands to boot kernel from MSC.

    => setenv bootargs console=${console} root=/dev/sda2 rw rootfstype=ext4 rootwait
    => setenv devtype usb; setenv bootpart 0:2; setenv bootfile Image
    => usb reset; run findfdt; run loadfdt; run loadimage
    => booti ${loadaddr} - ${fdtaddr}

    Please note that you need to modify kernel config to set all USB related options to '=y' so that the USB MSC device will be enumerated before the rootfs is mounted.