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.

AM6421: Device configuration for building Uboot image from buildroot for AM64x evm board

Part Number: AM6421

Hello,

I am using AM64 evm board (green color) and trying to build uboot & kernel using buildroot for the same. I am referring the procedure from below FAQ

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1226815/faq-buildroot-support-for-sitara-am62x-am62ax-am62px-am64x-devices

I have doubt on taking which device config for AM64 boards. Buildroot have default config files as shown in below image

image.png

Whats the difference between sk_defconfig and sk_tisdk_defconfig, and when should i use both?

Also same config i can use for sk & evm boards?

I have tried to build it with ti_am64x_sk_defconfig and output got generated but during boot i get below errors, 

So in this case we need to modify dts file & build again ?

Regards,

Shraddha N.

  • Hi Shraddha,

    sk_defconfig would be the basic configuration intended to boot the hardware with standard kernel, u-boot, ATF etc.

    sk_tisdk_defconfig is based in the existing defconfig, but is customised with 

    * TI Kernel 6.1.80 (w/ TI config-pruning step applied)
    * TI U-Boot 2023.04
    * ATF 2.10 (public tree)
    * OPTEE 4.1 (public tree)
    * TIFS/DM/DMSC Device Firmwares 9.2

    Also the patch given in the FAQ (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1226815/faq-buildroot-support-for-sitara-am62x-am62ax-am62px-am64x-devices) only creates the sk_tisdk_defconfig files. 

    Please try to rebuild using the ti_am64x_sk_tisdk_defconfig config as mentioned in the FAQ.

    The differences between AM64 SK and EVM boards are on the expandibility and additional interfaces. (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1179454/sk-am64b-sk-am64b-vs-tmds64evm--main-differences)

    The same config should work for both SK and EVM boards.

    Regards,

    Vinu

  • hi  ,

    I tried to build image with ti_am64x_sk_tisdk_defconfig & tried it on EVM board but not able to boot successfully.

    Below are the logs attached

    þ
    U-Boot SPL 2023.04 (Jan 09 2026 - 14:21:22 +0000)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...
    
    U-Boot SPL 2023.04 (Jan 09 2026 - 14:21:22 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 13392 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Loading Environment from MMC... *** Warning - No MMC card found, using default environment
    
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.10.0(release):00f1ec6b8740ccd403e641131e294aabacf2a48b
    NOTICE:  BL31: Built : 14:10:31, Jan  9 2026
    I/TC:
    I/TC: OP-TEE version: Unknown_4.1 (gcc version 12.3.0 (Buildroot 2024.02-645-g0423e16308-dirty)) #1 Fri Jan  9 14:10:19 UTC 2026 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: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    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 2023.04 (Jan 09 2026 - 14:23:16 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04 (Jan 09 2026 - 14:23:16 +0000)
    
    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 EVM
    Board: AM64-EVM rev C
    DRAM:  2 GiB
    Core:  91 devices, 32 uclasses, devicetree: separate
    NAND:  0 MiB
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth3: icssg1-eth, eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    Failed to load 'uEnv.txt'
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    19442176 bytes read in 826 ms (22.4 MiB/s)
    Failed to load '/boot/dtb/ti/k3-am642-evm.dtb'
    libfdt fdt_check_header(): FDT_ERR_BADMAGIC
    No FDT memory address configured. Please configure
    the FDT address via "fdt addr <address>" command.
    Aborting!
    ERROR: Did not find a cmdline Flattened Device Tree
    Could not find a valid device tree
    switch to partitions #0, OK
    mmc0(part 0) is current device
    Scanning mmc 0:1...
    No EFI system partition
    No EFI system partition
    Failed to persist EFI variables
    BootOrder not defined
    EFI boot manager: Cannot load any image
    switch to partitions #0, OK
    mmc1 is current device
    Scanning mmc 1:1...
    BootOrder not defined
    EFI boot manager: Cannot load any image
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    missing environment variable: pxeuuid
    Retrieving file: pxelinux.cfg/01-1c-63-49-1a-de-33
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/00000000
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/0000000
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/000000
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/00000
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/0000
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/000
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/00
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/0
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/default-arm-k3-am64x
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/default-arm-k3
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/default-arm
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Retrieving file: pxelinux.cfg/default
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    Config file not found
    starting USB...
    No working controllers found
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    ** File not found /lib/firmware/ti-pruss/am65x-sr2-pru0-prueth-fw.elf **
    No UBIFS volume mounted!
    prueth icssg1-eth: failed to boot PRU0: -1
    => <INTERRUPT>
    =>
    =>
    =>
    =>
    

    Regards

    shraddha

  • Hi Shraddha,

    Can you confirm if BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN is changed to tiboot3-am64x-gp-evm.bin?

    Also, it looks like the FDT,  '/boot/dtb/ti/k3-am642-evm.dtb' is not found.

    Can you try replacing the DTB at boot/dtb/ti/ on the SD card with buildroot/output/build/linux-09.02.00.009/arch/arm64/boot/dts/ti/k3-am642-evm.dtb?

    Regards,

    Vinu

  • Hi  ,

    Can you confirm if BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN is changed to tiboot3-am64x-gp-evm.bin?

    In which file i need to modify this? becai=use I cannot find this command in ti_am64x_sk_tisdk_defconfig file.

    But i tried to use  ti_am64x_sk_defconfig file and modified this file as below:

    BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS to take k3-am642-evm.dtb

    and BR2_LINUX_KERNEL_INTRESS_DTS_NAME to "ti/ k3-am642-evm"

    and Genimage.cfg file to take  k3-am642-evm.dtb

    with this i was able to boot device in LInux.

    Now my concern is the built images is of size 193MB, how we can reduce this within 10MB using buildroot for basic functionality using UART, USB, SPI etc

    Regards,

    shraddha

  • Hi Shraddha,

    I'm sharing a patch file with the changes required for AM64x EVM.

    From bcc74429b6881feee0337576652d17f6b87a5a5f Mon Sep 17 00:00:00 2001
    From: Vinuchandran <x1123550@ti.com>
    Date: Tue, 13 Jan 2026 15:45:30 +0530
    Subject: [PATCH] Update configs for AM64 EVM
    
    ---
     board/ti/am64x-sk/genimage.cfg       |  2 +-
     boot/ti-k3-r5-loader/Config.in       |  2 +-
     configs/ti_am64x_evm_tisdk_defconfig | 57 ++++++++++++++++++++++++++++
     3 files changed, 59 insertions(+), 2 deletions(-)
     create mode 100644 configs/ti_am64x_evm_tisdk_defconfig
    
    diff --git a/board/ti/am64x-sk/genimage.cfg b/board/ti/am64x-sk/genimage.cfg
    index 88dff8fe23..a37559a257 100644
    --- a/board/ti/am64x-sk/genimage.cfg
    +++ b/board/ti/am64x-sk/genimage.cfg
    @@ -4,7 +4,7 @@ image boot.vfat {
     			"tiboot3.bin",
     			"tispl.bin",
     			"u-boot.img",
    -			"k3-am642-sk.dtb",
    +			"k3-am642-evm.dtb",
     			"Image"
     		}
     		file extlinux/extlinux.conf {
    diff --git a/boot/ti-k3-r5-loader/Config.in b/boot/ti-k3-r5-loader/Config.in
    index c276528fad..d450a649e3 100644
    --- a/boot/ti-k3-r5-loader/Config.in
    +++ b/boot/ti-k3-r5-loader/Config.in
    @@ -106,7 +106,7 @@ config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH
     
     config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN
     	string "tiboot3.bin binary name"
    -	default "tiboot3.bin"
    +	default "tiboot3-am64x-gp-evm.bin"
     	help
     	  Name of the TI K3 tiboot3.bin binary to use.
     
    diff --git a/configs/ti_am64x_evm_tisdk_defconfig b/configs/ti_am64x_evm_tisdk_defconfig
    new file mode 100644
    index 0000000000..17e9b98184
    --- /dev/null
    +++ b/configs/ti_am64x_evm_tisdk_defconfig
    @@ -0,0 +1,57 @@
    +BR2_aarch64=y
    +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y
    +BR2_GLOBAL_PATCH_DIR="board/ti/am64x-sk/patches"
    +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
    +BR2_ROOTFS_POST_BUILD_SCRIPT="board/ti/common/am6xx/post-build-ti.sh"
    +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
    +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS="-d k3-am642-evm.dtb"
    +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/ti/common/am6xx/genimage_ti.cfg"
    +BR2_LINUX_KERNEL=y
    +BR2_LINUX_KERNEL_CUSTOM_GIT=y
    +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
    +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="09.02.00.009"
    +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
    +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/ti/common/am6xx/ti_arm64_prune.config"
    +BR2_LINUX_KERNEL_DTS_SUPPORT=y
    +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ti/k3-am642-evm"
    +BR2_PACKAGE_LINUX_FIRMWARE=y
    +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
    +BR2_TARGET_ROOTFS_EXT2=y
    +BR2_TARGET_ROOTFS_EXT2_4=y
    +BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git"
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="00f1ec6b8740ccd403e641131e294aabacf2a48b"
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="k3"
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE_TARGET_BOARD="lite"
    +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y
    +BR2_TARGET_OPTEE_OS=y
    +BR2_TARGET_OPTEE_OS_CUSTOM_GIT=y
    +BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL="https://github.com/OP-TEE/optee_os.git"
    +BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION="012cdca49db398693903e05c42a254a3a0c0d8f2"
    +BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY=y
    +BR2_TARGET_OPTEE_OS_PLATFORM="k3-am64x"
    +BR2_TARGET_TI_K3_R5_LOADER=y
    +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT=y
    +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL="https://git.ti.com/git/ti-u-boot/ti-u-boot.git"
    +BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_VERSION="09.02.00.009"
    +BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG="am64x_evm_r5"
    +BR2_TARGET_UBOOT=y
    +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
    +BR2_TARGET_UBOOT_CUSTOM_GIT=y
    +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://git.ti.com/git/ti-u-boot/ti-u-boot.git"
    +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="09.02.00.009"
    +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am64x_evm_a53"
    +BR2_TARGET_UBOOT_NEEDS_DTC=y
    +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
    +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y
    +BR2_TARGET_UBOOT_USE_BINMAN=y
    +# BR2_TARGET_UBOOT_FORMAT_BIN is not set
    +BR2_TARGET_UBOOT_FORMAT_IMG=y
    +BR2_TARGET_UBOOT_SPL=y
    +BR2_TARGET_UBOOT_SPL_NAME="tispl.bin"
    +BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="TEE=$(BINARIES_DIR)/tee-pager_v2.bin"
    +BR2_PACKAGE_HOST_DOSFSTOOLS=y
    +BR2_PACKAGE_HOST_GENIMAGE=y
    +BR2_PACKAGE_HOST_MTOOLS=y
    -- 
    2.43.0
    

    You can use the newly created ti_am64x_evm_tisdk_defconfig config to create the image for EVM.

    In which file i need to modify this? becai=use I cannot find this command in ti_am64x_sk_tisdk_defconfig file.

    It contains the BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN change as well.

    Also, to reduce the image size, you'll have to disable unwanted packages using make menuconfig, strip binaries, remove debug symbols, increase optimisation level etc. 

    These are standard Buildroot optimisations working on upstream/generic builds which are out of the scope of this forum.

    Regards,
    Vinu