ZHCACZ9A August   2023  – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A1-Q1 , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1 引言
  5. 2 安装 SDK
  6. 3 为定制电路板配置 SDK
  7. 4 启动 U-Boot 电路板端口
    1. 4.1 器件树简介
    2. 4.2 最小配置的功能
    3. 4.3 准备定制板级配置文件
    4. 4.4 初始器件树修改
    5. 4.5 构建 U-Boot 二进制文件
    6. 4.6 U-Boot 部署说明
  8. 5 扩展定制电路板器件树
    1. 5.1 器件树配置
    2. 5.2 描述节点中的外设
    3. 5.3 修改器件树配置
  9. 6 引导 Linux 内核
    1. 6.1 内核引导概述
    2. 6.2 内核部署说明
  10. 7 工具和调试
    1. 7.1 内核调试跟踪
    2. 7.2 OpenOCD 调试
  11. 8 未来的工作
  12. 9 总结
  13. 10参考资料
  14.   修订历史记录

构建 U-Boot 二进制文件

本节介绍如何使用自定义电路板配置和 AM62x Processor SDK 创建引导加载程序二进制文件。

对于 AM62x 器件,加载 U-Boot 需要三个映像,这些映像都是由构建过程创建的:

  • tiboot3.bin
  • tispl.bin
  • u-boot.img

电路板上电时,ROM 代码会检查引导模式引脚,并初始化加载 tiboot3.bin 并在 32 位 R5 内核上执行它所需的所选引导介质。此映像包含一个称为唤醒 SPL 的二级程序加载程序 (SPL)。此 SPL 会初始化 DDR 和用于加载 tispl.bin 的基本电路板元件。此 tispl.bin 映像包含在 A53 内核上运行的 64 位主 SPL,以及引导 Linux 所需的固件。主 SPL 会初始化在 k3-am625-<boardname>.dts 中配置的外设,用于加载引导流程中的下一个工件。最后,打包在 u-boot.img 中的 U-Boot 会正确加载并且可以初始化其他外设,准备引导 Linux 内核组件。

由于启动过程同时涉及 32 位和 64 位内核,因此需要 32 位和 64 位交叉编译器。AM62x Processor SDK 包含这些交叉编译器,但需要为每个编译器设置工具链路径。

设置以下通用环境变量:

表 4-1 通用环境变量
环境变量 说明
CROSS_COMPILE_32 适用于 Armv7(Arm 32 位)的交叉编译器路径,SDK 提供 arm-oe-eabi-
CROSS_COMPILE_64 适用于 Armv8(Arm 64 位)的交叉编译器路径,
SDK 提供 aarch64-oe-linux-
CC_64 Armv8(Arm 64 位)的交叉编译器可执行文件,指定了默认库和头路径,SDK 提供 aarch64-oe-linux-gcc
LNX_FW_PATH SDK 提供的 TI Linux 固件目录的路径
TFA_PATH SDK 提供的预编译 Arm Trusted Firmware 的路径 (bl31.bin)
OPTEE_PATH SDK 提供的预编译 OPTEE 的路径 (bl32.bin)

要设置编译器工具链路径,请参阅 AM62x Processor SDK 指南。以下是有关如何使用 SDK 提供的预编译二进制文件设置固件路径的示例。

$ export LNX_FW_PATH=TI_SDK/board-support/prebuilt-images/am62xx-evm/
$ export TFA_PATH=TI_SDK/board-support/prebuilt-images/am62xx-evm/bl31.bin
$ export OPTEE_PATH=TI_SDK/board-support/prebuilt-images/am62xx-evm/bl32.bin 

设置以下特定于电路板的环境变量:

表 4-2 特定于电路板的环境变量
环境变量 说明
UBOOT_CFG_CORTEXR Cortex-R 的默认配置文件
UBOOT_CFG_CORTEXA Cortex-A 的默认配置文件

设置默认配置变量,以应用先前在现有 EVM 默认配置基础上创建的配置片段。下面是设置这些环境变量的示例。

$ export UBOOT_CFG_CORTEXR="am62x_evm_r5_defconfig am62x_<boardname>_r5.config"
$ export UBOOT_CFG_CORTEXA="am62x_evm_a53_defconfig am62x_<boardname>_a53.config" 

由于构建了 32 位和 64 位二进制文件,因此它们需要输出到每个架构的单独文件夹中。在主机上创建此输出目录。这些指令将输出目录路径称为 OUTPUT_DIR。32 位和 64 位二进制文件内置在 OUTPUT_DIR 的子目录中。在以下指令中,这些子目录被命名为 r5 和 a53,分别用于 32 位和 64 位构建。所有构建命令都从 SDK U-Boot 存储库的根目录下运行。

构建 tiboot3.bin

$ make clean O=OUTPUT_DIR/r5
$ make ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_32" $UBOOT_CFG_CORTEXR O=OUTPUT_DIR/r5
$ make ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_32" O=OUTPUT_DIR/r5 BINMAN_INDIRS=$LNX_FW_PATH

构建 tispl.bin 和 u-boot.img

$ make clean O=OUTPUT_DIR/a53
$ make ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_64" $UBOOT_CFG_CORTEXA O=OUTPUT_DIR/a53
$ make ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_64" CC="$CC_64" O=OUTPUT_DIR/a53 BL31=$TFA_PATH TEE=$OPTEE_PATH BINMAN_INDIRS=$LINUX_FW_PATH

根据定制电路板上器件的安全级别,使用以下二进制文件。

表 4-3 根据器件安全级别生成的二进制文件
安全性 生成的二进制文件
GP tiboot3-am62x-gp-evm.bin
tispl.bin_unsigned
u-boot.img_unsigned
HS-FS tiboot3-am62x-hs-fs-evm.bin
tispl.bin
u-boot.img
HS-SE tiboot3-am62x-hs-evm.bin
tispl.bin
u-boot.img
注: 新电路板的器件安全级别可能是 HS-FS。

生成的三个二进制文件位于 OUTPUT_DIR 的 r5 和 a53 子目录的根目录下。这些二进制文件必须确切地重命名为 tiboot3.bin、tispl.bin 和 u-boot.img。这可以使用以下命令来实现。

// in the r5 subdirectory of OUTPUT_DIR
$ mv tiboot3-am62x-{gp/hs-fs/hs}.bin tiboot3.bin
// in the a53 subdirectory of OUTPUT_DIR
$ mv tispl.bin{_unsigned} tispl.bin
$ mv u-boot.img{_unsigned} u-boot.img