ZHDA242 July   2026 TDA4VE-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 简介
    1. 1.1 动机
    2. 1.2 范围
    3. 1.3 目标引导架构
  5. 背景
    1. 2.1 J721S2 启动流程
    2. 2.2 OSPI NOR 闪存概述
    3. 2.3 UBI 和 UBIFS 概述
  6. OSPI 闪存布局
    1. 3.1 分区布局
    2. 3.2 引导加载程序分区
    3. 3.3 根文件系统分区
  7. 刷写引导元件
    1. 4.1 引导元件概述
    2. 4.2 识别 OSPI MTD 分区
    3. 4.3 将引导元件刷写到 OSPI NOR 闪存中
    4. 4.4 验证引导元件
  8. 创建 UBIFS 根文件系统
    1. 5.1 准备 RootFS 分区
    2. 5.2 创建 UBI 设备
    3. 5.3 创建 UBIFS 卷
    4. 5.4 验证 UBIFS 操作
  9. 将 Linux 引导工件存储在 UBIFS 中
    1. 6.1 挂载 UBIFS 根文件系统卷
    2. 6.2 使用 BusyBox 创建根文件系统结构
    3. 6.3 验证 BusyBox 执行
    4. 6.4 创建 BusyBox 命令链接
    5. 6.5 创建 init 脚本
    6. 6.6 使用 chroot 测试根文件系统
    7. 6.7 复制 Linux 内核映像和 DTB
  10. 从 UBIFS 配置 Linux 引导
    1. 7.1 配置引导参数
    2. 7.2 从 UBIFS 加载内核和 DTB
    3. 7.3 测试 Linux 引导
    4. 7.4 创建可重复使用的引导命令
  11. 完全从 OSPI NOR 闪存引导 Linux
    1. 8.1 自动执行 U-Boot 中的引导序列
    2. 8.2 端到端引导流程
  12. 总结
  13. 10参考资料

自动执行 U-Boot 中的引导序列

上一章演示了如何使用手动输入的 U-Boot 命令进行 Linux 引导。虽然这种方法在开发和调试过程中很有用,但量产系统通常要求启动过程在上电后自动启动。

一种方法是在 U-Boot 配置中定义默认引导命令。这使 U-Boot 能够自动挂载 UBIFS 卷,从 OSPI NOR 闪存加载 Linux 内核映像和器件树,并在无需用户交互的情况下启动 Linux。可将默认引导命令添加到以下 U-Boot 配置文件:configs/j721s2_evm_a72_defconfig。

本示例中可以使用以下配置。

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

在重新构建 U-Boot 并将更新的 u-boot.img 刷写到 ospi.u-boot 分区中后,电路板会在上电期间自动执行完整的 Linux 引导序列。