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

 

  1.   1
  2.   摘要
  3.   商标
  4. 引言
  5. 安装 SDK
  6. 为定制电路板配置 SDK
  7. 启动 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. 扩展定制电路板器件树
    1. 5.1 器件树配置
    2. 5.2 描述节点中的外设
    3. 5.3 修改器件树配置
  9. 引导 Linux 内核
    1. 6.1 内核引导概述
    2. 6.2 内核部署说明
  10. 工具和调试
    1. 7.1 内核调试跟踪
    2. 7.2 OpenOCD 调试
  11. 未来的工作
  12. 总结
  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.bintispl.binu-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