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.

[FAQ] DRA821: SPL BOOT without A72 SPL on J7200 on 10.1 SDK

Part Number: DRA821


Tool/software:

How to enable Falcon Boot Mode on 10.01 SDK?

Boot Flow:

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

Regards

Gokul

  • Hi Gokul,

    10.01 SDK:

    Applying the below patch will enable the above mention boot flow on J7200 EVM:

    From d6a5d1bf68991fb090e25318a43dffb5aeb1efed Mon Sep 17 00:00:00 2001
    From: Gokul Praveen <g-praveen@ti.com>
    Date: Wed, 30 Jul 2025 15:33:26 +0530
    Subject: [PATCH] Enable Falcon Boot Mode for J7200 BOARD
    
    Normal Boot Mode :
    R5 SPL -> ATF -> OPTEE -> A72 SPL -> U-BOOT -> Kernel
    
    Falcon Boot Mode :
    R5 SPL -> ATF -> OPTEE -> -> U-BOOT -> Kernel
    
    Signed-off-by: Gokul Praveen<g-praveen@ti.com>
    ---
     arch/arm/dts/k3-binman.dtsi       | 68 -------------------------
     arch/arm/dts/k3-j7200-binman.dtsi | 84 +++++--------------------------
     configs/j7200_evm_a72_defconfig   |  1 +
     3 files changed, 13 insertions(+), 140 deletions(-)
    
    diff --git a/arch/arm/dts/k3-binman.dtsi b/arch/arm/dts/k3-binman.dtsi
    index 621653e9..86ea563c 100644
    --- a/arch/arm/dts/k3-binman.dtsi
    +++ b/arch/arm/dts/k3-binman.dtsi
    @@ -306,24 +306,6 @@
     					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,57 +370,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>;
     
    -		fit {
    -			description = "FIT image with multiple configurations";
    -
    -			images {
    -				uboot {
    -					type = "firmware";
    -					os = "u-boot";
    -					arch = "arm";
    -					compression = "none";
    -					load = <CONFIG_TEXT_BASE>;
    -					blob {
    -						filename = "u-boot-nodtb.bin";
    -					};
    -					hash {
    -						algo = "crc32";
    -					};
    -				};
    -			};
    -		};
    -	};
     	firewall_bg_1: template-5 {
     		control = <(FWCTRL_EN | FWCTRL_LOCK |
     					FWCTRL_BG | FWCTRL_CACHE)>;
    diff --git a/arch/arm/dts/k3-j7200-binman.dtsi b/arch/arm/dts/k3-j7200-binman.dtsi
    index a524b246..a8db9606 100644
    --- a/arch/arm/dts/k3-j7200-binman.dtsi
    +++ b/arch/arm/dts/k3-j7200-binman.dtsi
    @@ -389,44 +389,22 @@
     					};
     				};
     
    -				fdt-0 {
    -					description = "k3-j7200-common-proc-board";
    -					type = "flat_dt";
    +				uboot {
    +					description = "U-Boot for J7200 Board";
    +					type = "firmware";
    +					os = "u-boot";
     					arch = "arm";
     					compression = "none";
    +					load = <CONFIG_TEXT_BASE>;
     					ti-secure {
    -						content = <&spl_j7200_evm_dtb>;
    +						content = <&u_boot_nodtb>;
     						keyfile = "custMpk.pem";
     					};
    -					spl_j7200_evm_dtb: blob-ext {
    -						filename = SPL_J7200_EVM_DTB;
    +					u_boot_nodtb: u-boot-nodtb {
    +					};
    +					hash {
    +						algo = "crc32";
     					};
    -				};
    -
    -			};
    -
    -			configurations {
    -				default = "conf-0";
    -
    -				conf-0 {
    -					description = "k3-j7200-common-proc-board";
    -					firmware = "atf";
    -					loadables = "tee", "dm", "spl";
    -					fdt = "fdt-0";
    -				};
    -			};
    -		};
    -	};
    -};
    -
    -&binman {
    -	u-boot {
    -		insert-template = <&u_boot_template>;
    -
    -		fit {
    -			images {
    -				uboot {
    -					description = "U-Boot for J7200 Board";
     				};
     
     				fdt-0 {
    @@ -452,11 +430,10 @@
     
     				conf-0 {
     					description = "k3-j7200-common-proc-board";
    -					firmware = "uboot";
    -					loadables = "uboot";
    +					firmware = "atf";
    +					loadables = "tee", "dm", "uboot";
     					fdt = "fdt-0";
     				};
    -
     			};
     		};
     	};
    @@ -499,41 +476,4 @@
     	};
     };
     
    -&binman {
    -	u-boot_unsigned {
    -		insert-template = <&u_boot_unsigned_template>;
    -
    -		fit {
    -			images {
    -				uboot {
    -					description = "U-Boot for J7200 Board";
    -				};
    -
    -				fdt-1 {
    -					description = "k3-j7200-common-proc-board";
    -					type = "flat_dt";
    -					arch = "arm";
    -					compression = "none";
    -					blob {
    -						filename = J7200_EVM_DTB;
    -					};
    -					hash {
    -						algo = "crc32";
    -					};
    -				};
    -			};
    -
    -			configurations {
    -				default = "conf-1";
    -
    -				conf-1 {
    -					description = "k3-j7200-common-proc-board";
    -					firmware = "uboot";
    -					loadables = "uboot";
    -					fdt = "fdt-1";
    -				};
    -			};
    -		};
    -	};
    -};
     #endif
    diff --git a/configs/j7200_evm_a72_defconfig b/configs/j7200_evm_a72_defconfig
    index 9a46983d..c05205b8 100644
    --- a/configs/j7200_evm_a72_defconfig
    +++ b/configs/j7200_evm_a72_defconfig
    @@ -203,3 +203,4 @@ CONFIG_UFS=y
     CONFIG_CADENCE_UFS=y
     CONFIG_TI_J721E_UFS=y
     CONFIG_TI_COMMON_CMD_OPTIONS=y
    +CONFIG_TEXT_BASE=0x80080000
    \ No newline at end of file
    -- 
    2.34.1
    
    

    Applying the below patch will enable the above mention boot flow on J784S4 EVM:

    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

    • make u-boot
    • Copy tiboot3.bin and tispl.bin to the boot media.

    11.00 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.

    If the below issue , comes up: apply the patch given below this:

    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

    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

    NOTE: The u-boot.img is not needed as tispl.bin itself has ATF,OPTEE and U-boot packaged in the fitImage.

    Regards

    Gokul