J784S4XEVM: SPL BOOT without A72 SPL on J784S4 on 11.00.00.08 SDK

Part Number: J784S4XEVM


Tool/software:

How to enable Falcon Boot Mode on J784S4?

Boot Flow:

R5 SPL -> ATF -> OPTEE -> U-BOOT -> Kernel

This boot flow has already been used for the J7200 and explained in this thread: [FAQ] DRA821: SPL BOOT without A72 SPL on J7200 on 10.1 SDK - Processors forum - Processors - TI E2E support forums

Can you provide the patch file for the J784S4?

Regards,

Bruce

  • Hi Bruce,

    I am out of office this week due to national holidays. I will get back to you next Monday on this query. Thanks in advance for your patience.

    Regards

    Gokul

  • Hi Bruce,

    Sorry for the delay.

    Can you try the below patch for J784S4 ?

    From ad08e956c2886843a03772e1c302e0fc223bd2f7 Mon Sep 17 00:00:00 2001
    From: Gokul Praveen <g-praveen@ti.com>
    Date: Mon, 6 Oct 2025 12:44:09 +0530
    Subject: [PATCH] SKipping A72 SPL Boot Mode
    
    ---
     arch/arm/dts/k3-am69-sk-u-boot.dtsi |  3 --
     arch/arm/dts/k3-binman.dtsi         | 47 +--------------------------
     arch/arm/dts/k3-j784s4-binman.dtsi  | 49 ++++++++---------------------
     configs/j784s4_evm_a72_defconfig    |  2 ++
     4 files changed, 16 insertions(+), 85 deletions(-)
    
    diff --git a/arch/arm/dts/k3-am69-sk-u-boot.dtsi b/arch/arm/dts/k3-am69-sk-u-boot.dtsi
    index 6f44745d..e890c9f9 100644
    --- a/arch/arm/dts/k3-am69-sk-u-boot.dtsi
    +++ b/arch/arm/dts/k3-am69-sk-u-boot.dtsi
    @@ -55,9 +55,6 @@
     #define SPL_AM69_SK_DTB "spl/dts/k3-am69-sk.dtb"
     #define AM69_SK_DTB "u-boot.dtb"
     
    -&spl_j784s4_evm_dtb {
    -	filename = SPL_AM69_SK_DTB;
    -};
     
     &j784s4_evm_dtb {
     	filename = AM69_SK_DTB;
    diff --git a/arch/arm/dts/k3-binman.dtsi b/arch/arm/dts/k3-binman.dtsi
    index 621653e9..7830f87f 100644
    --- a/arch/arm/dts/k3-binman.dtsi
    +++ b/arch/arm/dts/k3-binman.dtsi
    @@ -305,25 +305,6 @@
     					load = <0x89000000>;
     					entry = <0x89000000>;
     				};
    -
    -				spl {
    -					description = "SPL (64-bit)";
    -					type = "standalone";
    -					os = "U-Boot";
    -					arch = "arm64";
    -					compression = "none";
    -					load = <CONFIG_SPL_TEXT_BASE>;
    -					entry = <CONFIG_SPL_TEXT_BASE>;
    -					ti-secure {
    -						content = <&u_boot_spl_nodtb>;
    -						keyfile = "custMpk.pem";
    -
    -					};
    -					u_boot_spl_nodtb: blob-ext {
    -						filename = "spl/u-boot-spl-nodtb.bin";
    -					};
    -				};
    -
     			};
     		};
     	};
    @@ -388,33 +369,7 @@
     			};
     		};
     	};
    -	u_boot_template: template-3 {
    -		filename = "u-boot.img";
    -		pad-byte = <0xff>;
    -
    -		fit {
    -			description = "FIT image with multiple configurations";
    -
    -			images {
    -				uboot {
    -					type = "firmware";
    -					os = "u-boot";
    -					arch = "arm";
    -					compression = "none";
    -					load = <CONFIG_TEXT_BASE>;
    -					ti-secure {
    -						content = <&u_boot_nodtb>;
    -						keyfile = "custMpk.pem";
    -					};
    -					u_boot_nodtb: u-boot-nodtb {
    -					};
    -					hash {
    -						algo = "crc32";
    -					};
    -				};
    -			};
    -		};
    -	};
    +	
     	u_boot_unsigned_template: template-4 {
     		filename = "u-boot.img_unsigned";
     		pad-byte = <0xff>;
    diff --git a/arch/arm/dts/k3-j784s4-binman.dtsi b/arch/arm/dts/k3-j784s4-binman.dtsi
    index 043bcf89..fd6419a7 100644
    --- a/arch/arm/dts/k3-j784s4-binman.dtsi
    +++ b/arch/arm/dts/k3-j784s4-binman.dtsi
    @@ -189,46 +189,23 @@
     						filename = "ti-dm.bin";
     					};
     				};
    -
    -				fdt-0 {
    -					description = "k3-j784s4-evm";
    -					type = "flat_dt";
    +				
    +				uboot {
    +					description = "U-Boot for J784S4 board";
    +					type = "firmware";
    +					os = "u-boot";
     					arch = "arm";
     					compression = "none";
    -
    +					load = <CONFIG_TEXT_BASE>;
     					ti-secure {
    -						content = <&spl_j784s4_evm_dtb>;
    +						content = <&u_boot_nodtb>;
     						keyfile = "custMpk.pem";
     					};
    -
    -					spl_j784s4_evm_dtb: blob-ext {
    -						filename = SPL_J784S4_EVM_DTB;
    +					u_boot_nodtb: u-boot-nodtb {
    +					};
    +					hash {
    +						algo = "crc32";
     					};
    -				};
    -			};
    -
    -			configurations {
    -				default = "conf-0";
    -
    -				conf-0 {
    -					description = "k3-j784s4-evm";
    -					firmware = "atf";
    -					loadables = "tee", "dm", "spl";
    -					fdt = "fdt-0";
    -				};
    -			};
    -		};
    -	};
    -};
    -
    -&binman {
    -	u-boot {
    -		insert-template = <&u_boot_template>;
    -
    -		fit {
    -			images {
    -				uboot {
    -					description = "U-Boot for J784S4 board";
     				};
     
     				fdt-0 {
    @@ -257,8 +234,8 @@
     
     				conf-0 {
     					description = "k3-j784s4-evm";
    -					firmware = "uboot";
    -					loadables = "uboot";
    +					firmware = "atf";
    +					loadables = "tee", "dm", "uboot";
     					fdt = "fdt-0";
     				};
     			};
    diff --git a/configs/j784s4_evm_a72_defconfig b/configs/j784s4_evm_a72_defconfig
    index 0f78df65..7c238f90 100644
    --- a/configs/j784s4_evm_a72_defconfig
    +++ b/configs/j784s4_evm_a72_defconfig
    @@ -17,6 +17,7 @@ CONFIG_SPL_DM_SPI=y
     CONFIG_OF_UPSTREAM=y
     CONFIG_DEFAULT_DEVICE_TREE="k3-j784s4-evm"
     CONFIG_SPL_TEXT_BASE=0x80080000
    +CONFIG_TEXT_BASE=0x80080000
     CONFIG_OF_LIBFDT_OVERLAY=y
     CONFIG_DM_RESET=y
     CONFIG_SPL_MMC=y
    @@ -74,6 +75,7 @@ CONFIG_CMD_GPT=y
     CONFIG_CMD_I2C=y
     CONFIG_CMD_MMC=y
     CONFIG_CMD_MTD=y
    +CONFIG_CMD_NFS=y
     CONFIG_CMD_REMOTEPROC=y
     CONFIG_CMD_USB=y
     CONFIG_CMD_TIME=y
    -- 
    2.34.1
    
    

    Regards

    Gokul

  • Hi,

    I use SDK 11.00.00.08 and ti-u-boot-2025.01

    In this version of the SDK, my k3-am69-sk-u-boot.dtsi file does not contain “&spl_j784s4_evm_dtb.” Your patch attempts to remove this line, but it does not exist in my file:

    // SPDX-License-Identifier: GPL-2.0-only
    /*
    * Copyright (C) 2022-2024 Texas Instruments Incorporated - https://www.ti.com/
    */

    #define SPL_BOARD_DTB "spl/dts/ti/k3-am69-sk.dtb"
    #define BOARD_DESCRIPTION "k3-am69-sk"
    #define UBOOT_BOARD_DESCRIPTION "U-Boot for AM69 board"

    #include "k3-j784s4-binman.dtsi"

    #if defined(CONFIG_CPU_V7R)

    &binman {
    tiboot3-j784s4-hs {
    insert-template = <&tiboot3_j784s4_hs>;
    filename = "tiboot3-j784s4-hs-evm.bin";
    };

    tiboot3-j784s4-hs-fs {
    insert-template = <&tiboot3_j784s4_hs_fs>;
    filename = "tiboot3-j784s4-hs-fs-evm.bin";
    symlink = "tiboot3.bin";
    };
    };

    &ti_fs_enc {
    filename = "ti-sysfw/ti-fs-firmware-j784s4-hs-enc.bin";
    };

    &sysfw_inner_cert {
    filename = "ti-sysfw/ti-fs-firmware-j784s4-hs-cert.bin";
    };

    &ti_fs_enc_fs {
    filename = "ti-sysfw/ti-fs-firmware-j784s4-hs-fs-enc.bin";
    };

    &sysfw_inner_cert_fs {
    filename = "ti-sysfw/ti-fs-firmware-j784s4-hs-fs-cert.bin";
    };

    #include "k3-binman-capsule-r5.dtsi"

    // Capsule update GUIDs in string form. See j784s4_evm.h
    #define AM69_SK_TIBOOT3_IMAGE_GUID_STR "adf49ec5-61bb-4dbe-8b8d-39df4d7ebf46"

    &capsule_tiboot3 {
    efi-capsule {
    image-guid = AM69_SK_TIBOOT3_IMAGE_GUID_STR;

    blob {
    filename = "tiboot3-j784s4-hs-fs-evm.bin";
    };
    };
    };

    #else // CONFIG_ARM64

    &binman {
    ti-dm {
    filename = "ti-dm.bin";

    blob-ext {
    filename = "ti-dm/j784s4/ipc_echo_testb_mcu1_0_release_strip.xer5f";
    optional;
    };
    };

    tispl {
    insert-template = <&ti_spl>;
    };

    u-boot {
    insert-template = <&u_boot>;
    };

    tispl-unsigned {
    insert-template = <&ti_spl_unsigned>;
    };

    u-boot-unsigned {
    insert-template = <&u_boot_unsigned>;
    };
    };

    #include "k3-binman-capsule.dtsi"

    // Capsule update GUIDs in string form. See j784s4_evm.h
    #define AM69_SK_SPL_IMAGE_GUID_STR "787f0059-63a1-461c-a18e-9d838345fe8e"
    #define AM69_SK_UBOOT_IMAGE_GUID_STR "9300505d-6ec5-4ff8-99e4-5459a04be617"

    &capsule_tispl {
    efi-capsule {
    image-guid = AM69_SK_SPL_IMAGE_GUID_STR;
    };
    };

    &capsule_uboot {
    efi-capsule {
    image-guid = AM69_SK_UBOOT_IMAGE_GUID_STR;
    };
    };

    #endif

    / {
    memory@80000000 {
    bootph-all;
    };
    };

    &mcu_udmap {
    reg = <0x0 0x285c0000 0x0 0x100>,
    <0x0 0x284c0000 0x0 0x4000>,
    <0x0 0x2a800000 0x0 0x40000>,
    <0x0 0x284a0000 0x0 0x4000>,
    <0x0 0x2aa00000 0x0 0x40000>,
    <0x0 0x28400000 0x0 0x2000>;
    reg-names = "gcfg", "rchan", "rchanrt", "tchan",
    "tchanrt", "rflow";
    bootph-pre-ram;
    };

    I have the same problem with the other files you are trying to fix.

    I think we are not synchronized with the u-boot version.

    Regards,

    Bruce

  • Hi Bruce,

    Can you try the following patch for 11.00.00.08 J784S4 SDK:

    From 74d12e17dc3dcfa3215b86abd5223900d498cee4 Mon Sep 17 00:00:00 2001
    From: Gokul Praveen <g-praveen@ti.com>
    Date: Tue, 7 Oct 2025 11:59:20 +0530
    Subject: [PATCH] J784S4 SDK11.08 BOOTFLOW Without A72 SPL
    
    ---
     arch/arm/dts/k3-binman.dtsi            | 13 --------
     arch/arm/dts/k3-j784s4-binman.dtsi     | 46 ++++++++------------------
     arch/arm/dts/k3-j784s4-evm-u-boot.dtsi |  3 --
     configs/j784s4_evm_a72_defconfig       |  1 +
     4 files changed, 14 insertions(+), 49 deletions(-)
    
    diff --git a/arch/arm/dts/k3-binman.dtsi b/arch/arm/dts/k3-binman.dtsi
    index c2b8388b..80be3e8c 100644
    --- a/arch/arm/dts/k3-binman.dtsi
    +++ b/arch/arm/dts/k3-binman.dtsi
    @@ -385,19 +385,6 @@
     					load = <0x89000000>;
     					entry = <0x89000000>;
     				};
    -
    -				spl {
    -					description = "SPL (64-bit)";
    -					type = "standalone";
    -					os = "U-Boot";
    -					arch = "arm64";
    -					compression = "none";
    -					load = <CONFIG_SPL_TEXT_BASE>;
    -					entry = <CONFIG_SPL_TEXT_BASE>;
    -					blob-ext {
    -						filename = "spl/u-boot-spl-nodtb.bin";
    -					};
    -				};
     			};
     		};
     	};
    diff --git a/arch/arm/dts/k3-j784s4-binman.dtsi b/arch/arm/dts/k3-j784s4-binman.dtsi
    index a9787016..d0df3088 100644
    --- a/arch/arm/dts/k3-j784s4-binman.dtsi
    +++ b/arch/arm/dts/k3-j784s4-binman.dtsi
    @@ -276,40 +276,19 @@
     					};
     				};
     
    -				fdt-0 {
    -					description = BOARD_DESCRIPTION;
    -					type = "flat_dt";
    +				uboot {
    +					description = UBOOT_BOARD_DESCRIPTION;
    +					type = "firmware";
    +					os = "u-boot";
     					arch = "arm";
     					compression = "none";
    -
    -					spl_j784s4_evm_dtb_unsigned: blob {
    -						filename = SPL_BOARD_DTB;
    +					load = <CONFIG_TEXT_BASE>;
    +					blob {
    +						filename = "u-boot-nodtb.bin";
    +					};
    +					hash {
    +						algo = "crc32";
     					};
    -				};
    -			};
    -
    -			configurations {
    -				default = "conf-0";
    -
    -				conf-0 {
    -					description = BOARD_DESCRIPTION;
    -					firmware = "atf";
    -					loadables = "tee", "dm", "spl";
    -					fdt = "fdt-0";
    -				};
    -			};
    -		};
    -	};
    -};
    -
    -&binman {
    -	u_boot_unsigned: template-15 {
    -		insert-template = <&u_boot_unsigned_template>;
    -
    -		fit {
    -			images {
    -				uboot {
    -					description = UBOOT_BOARD_DESCRIPTION;
     				};
     
     				fdt-0 {
    @@ -333,12 +312,13 @@
     
     				conf-0 {
     					description = BOARD_DESCRIPTION;
    -					firmware = "uboot";
    -					loadables = "uboot";
    +					firmware = "atf";
    +					loadables = "tee", "dm", "uboot";
     					fdt = "fdt-0";
     				};
     			};
     		};
     	};
     };
    +
     #endif
    diff --git a/arch/arm/dts/k3-j784s4-evm-u-boot.dtsi b/arch/arm/dts/k3-j784s4-evm-u-boot.dtsi
    index fbfd753b..ea728ebc 100644
    --- a/arch/arm/dts/k3-j784s4-evm-u-boot.dtsi
    +++ b/arch/arm/dts/k3-j784s4-evm-u-boot.dtsi
    @@ -73,9 +73,6 @@
     		insert-template = <&ti_spl_unsigned>;
     	};
     
    -	u-boot-unsigned {
    -		insert-template = <&u_boot_unsigned>;
    -	};
     };
     
     #endif
    diff --git a/configs/j784s4_evm_a72_defconfig b/configs/j784s4_evm_a72_defconfig
    index 52d12b62..933e54dc 100644
    --- a/configs/j784s4_evm_a72_defconfig
    +++ b/configs/j784s4_evm_a72_defconfig
    @@ -14,6 +14,7 @@ CONFIG_ENV_SIZE=0x40000
     CONFIG_DM_GPIO=y
     CONFIG_SPL_DM_SPI=y
     CONFIG_DEFAULT_DEVICE_TREE="ti/k3-j784s4-evm"
    +CONFIG_TEXT_BASE=0x80080000
     CONFIG_SPL_TEXT_BASE=0x80080000
     CONFIG_OF_LIBFDT_OVERLAY=y
     CONFIG_DM_RESET=y
    -- 
    2.34.1
    
    

    • Ensure that you copy only tiboot3.bin and tispl.bin_unsigned binary files to the boot media boot partition.
    • Rename the tispl.bin_unsigned as tispl.bin after copying it to the boot media boot partition.

    Regards

    Gokul

  • Hi Gokul,

    It works with SD card boot, but I get this warning:

    U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Oct 08 2025 - 14:35:46 +0200)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Initialized 4 DRAM controllers
    SPL initial stack usage: 13456 bytes
    Trying to boot from MMC2
    alloc space exhausted
    Could not get FIT buffer of 2239744 bytes
    check CONFIG_SPL_SYS_MALLOC_F_LEN

    With this error, the card still starts up correctly. Is this a problem?

    I also want to use Falcon Boot with OSPI BOOT. The new size of the tispl.bin file is 2239740, and the size of the memory reserved in the OSPI for tispl.bin is 0x200000.

    OPSI boot does not work and ends with this log : 

    U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Oct 08 2025 - 14:35:46 +0200)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Initialized 4 DRAM controllers
    SPL initial stack usage: 13456 bytes
    Trying to boot from SPI
    alloc space exhausted
    Could not get FIT buffer of 2239740 bytes
    check CONFIG_SPL_SYS_MALLOC_F_LEN

    Regards,
    Bruce

  • Hi Bruce,

    Can you try the below patch, rebuild uboot and give it a try for SD card.

    diff --git a/configs/j784s4_evm_r5_defconfig b/configs/j784s4_evm_r5_defconfig
    index eac3cfc5..e196c14f 100644
    --- a/configs/j784s4_evm_r5_defconfig
    +++ b/configs/j784s4_evm_r5_defconfig
    @@ -1,7 +1,7 @@
     CONFIG_ARM=y
     CONFIG_ARCH_K3=y
     CONFIG_SYS_MALLOC_LEN=0x2000000
    -CONFIG_SYS_MALLOC_F_LEN=0x10000
    +CONFIG_SYS_MALLOC_F_LEN=0x1000000
     CONFIG_SPL_GPIO=y
     CONFIG_SPL_LIBCOMMON_SUPPORT=y
     CONFIG_SPL_LIBGENERIC_SUPPORT=y

    Regards

    Gokul

  • Hi Gokul,

    I modified the code using the patch provided. Here is the compilation error I got:

    spl/u-boot-spl.bin exceeds file size limit:
    limit: 0xffffffffff07bf20 bytes
    actual: 0x4cc24 bytes
    excess: 0xfd0d04 bytes

    I think my real problem is that the tispl.bin file is too large to fit into the OSPI partition.

    Perhaps the size of the tispl.bin file needs to be reduced, or the size of the OPSI partition for the tispl.bin file needs to be increased.

    Regards,

    Bruce

  • HI Bruce,

    Perhaps the size of the tispl.bin file needs to be reduced,

    Yea, reducing the tispl.bin size would be a good solution.

    Regards

    Gokul

  • Hi Gokul,

    Do you know how to reduce the size of the tispl.bin file ?

    Regards

    Bruce

  • Hi Bruce,

    Sorry for the earlier solution.

    Just to confirm, you are using the default SDK code and applying the falcon boot mode patch on top of it right. Is this the size shown (2239740 bytes) for tispl.bin after that?

    Additionally. can you apply this patch and give it a try as this the config which increase the malloc size actually. 

    diff --git a/configs/j784s4_evm_r5_defconfig b/configs/j784s4_evm_r5_defconfig
    index eac3cfc5..75ac0f44 100644
    --- a/configs/j784s4_evm_r5_defconfig
    +++ b/configs/j784s4_evm_r5_defconfig
    @@ -176,3 +176,4 @@ CONFIG_K3_AVS0=y
     CONFIG_DM_REGULATOR=y
     CONFIG_SPL_DM_REGULATOR=y
     CONFIG_SPL_DM_REGULATOR_TPS6287X=y
    +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x400000

    Also, please ensure that you remove the patch as given below in the earlier replies:

    Can you try the below patch, rebuild uboot and give it a try for SD card.

    Regards

    Gokul

  • Hi Gokul,

    Just to confirm, you are using the default SDK code and applying the falcon boot mode patch on top of it right. Is this the size shown (2239740 bytes) for tispl.bin after that?

    Yes, I confirm. Do you know how to reduce the size of the tispl.bin file so that it can fit in the OSPI tispl partition?

    Additionally. can you apply this patch and give it a try as this the config which increase the malloc size actually

    I fixed the code, and it worked. No more warnings about the stack size.

    Regards,

    Bruce

  • Hi Bruce,

    so just applying that patch seemed to work , right.

    Can you also mark this thread as resolved, if your issue has been resolved.

    Regards

    Gokul

  • Hi Gokul,

    I need to use Falcon Boot with OSPI. Do you know how to reduce the size of the tispl.bin file so that it fits in the OSPI tispl partition?

    Regards,

    Bruce

  • Hi Bruce,

    Can you raise a separate E2E for this as I am not the OSPI expert. Thanks in advance for cooperating, Bruce.

    Regards

    Gokul