SDAA437 July   2026 TDA4VE-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1 Introduction
    1. 1.1 Motivation
    2. 1.2 Scope
    3. 1.3 Target Boot Architecture
  5. 2 Background
    1. 2.1 J721S2 Boot Flow
    2. 2.2 OSPI NOR Flash Overview
    3. 2.3 UBI and UBIFS Overview
  6. 3 OSPI Flash Layout
    1. 3.1 Partition Layout
    2. 3.2 Bootloader Partitions
    3. 3.3 Root Filesystem Partition
  7. 4 Flashing Boot Components
    1. 4.1 Boot Components Overview
    2. 4.2 Identifying OSPI MTD Partitions
    3. 4.3 Flashing Boot Components into OSPI NOR Flash
    4. 4.4 Verifying Boot Components
  8. 5 Creating a UBIFS Root Filesystem
    1. 5.1 Preparing the RootFS Partition
    2. 5.2 Creating a UBI Device
    3. 5.3 Creating a UBIFS Volume
    4. 5.4 Verifying UBIFS Operation
  9. 6 Storing Linux Boot Artifacts in UBIFS
    1. 6.1 Mounting the UBIFS Root Filesystem Volume
    2. 6.2 Creating the Root Filesystem Structure with BusyBox
    3. 6.3 Verifying BusyBox Execution
    4. 6.4 Creating BusyBox Command Links
    5. 6.5 Creating the init Script
    6. 6.6 Testing the Root Filesystem Using chroot
    7. 6.7 Copying the Linux Kernel Image and DTB
  10. 7 Configuring Linux Boot from UBIFS
    1. 7.1 Configuring Boot Arguments
    2. 7.2 Loading the Kernel and DTB from UBIFS
    3. 7.3 Testing Linux Boot
    4. 7.4 Creating a Reusable Boot Command
  11. 8 Booting Linux Entirely from OSPI NOR Flash
    1. 8.1 Automating the Boot Sequence in U-Boot
    2. 8.2 End-to-End Boot Flow
  12. 9 Summary
  13. 10References

Automating the Boot Sequence in U-Boot

The previous chapter demonstrated Linux boot using manually entered U-Boot commands. While this approach is useful during development and debugging, production systems typically require the boot process to start automatically after power-on.

One method is to define a default boot command in the U-Boot configuration. This allows U-Boot to automatically mount the UBIFS volume, load the Linux kernel image and device tree from OSPI NOR Flash, and start Linux without user interaction. The default boot command can be added to the following U-Boot configuration file, configs/j721s2_evm_a72_defconfig.

The following configuration can be used in this example.

cd ti-processor-sdk-linux-adas-j721s2-evm-11_01_00_03/board-support/ti-u-boot-2025.01+git
cat >> configs/j721s2_evm_a72_defconfig << 'EOF'
CONFIG_USE_BOOTCOMMAND=y
CONFIG_BOOTCOMMAND="setenv bootargs 'console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02880000 ubi.mtd=ospi.rootfs root=ubi0:rootfs rootfstype=ubifs rw init=/init'; ubi part ospi.rootfs; ubifsmount ubi0:rootfs; ubifsload ${loadaddr} /boot/Image; ubifsload ${fdtaddr} /boot/dtb/k3-j721s2-common-proc-board.dtb; booti ${loadaddr} - ${fdtaddr}"
EOF

After rebuilding U-Boot and flashing the updated u-boot.img into the ospi.u-boot partition, the board automatically executes the complete Linux boot sequence during power-on.