ZHCACZ9A August 2023 – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1
本节介绍如何使用自定义电路板配置和 AM62x Processor SDK 创建引导加载程序二进制文件。
对于 AM62x 器件,加载 U-Boot 需要三个映像,这些映像都是由构建过程创建的:
电路板上电时,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 包含这些交叉编译器,但需要为每个编译器设置工具链路径。
设置以下通用环境变量:
环境变量 | 说明 |
---|---|
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
设置以下特定于电路板的环境变量:
环境变量 | 说明 |
---|---|
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
根据定制电路板上器件的安全级别,使用以下二进制文件。
安全性 | 生成的二进制文件 |
---|---|
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 |
生成的三个二进制文件位于 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