ZHCACZ9 august 2023 AM625 , AM625-Q1 , AM625SIP
本节介绍如何创建二进制文件以使用最小平台配置来启动 SoC。U-Boot 文档中的 K3 代下提供了有关构建通用二进制文件的详细指南,但使用最小配置要求执行一些额外的步骤。
对于 AM62x 器件,启动 SoC 需要三个二进制文件:
由于启动过程同时涉及 32 位内核(唤醒域)和 64 位内核(主域),因此需要 32 位和 64 位交叉编译器。以下步骤演练了如何为每个安全级别生成三个必要的二进制文件。以下是 AM62x 器件的三个安全级别。
Binman 用于构建启动至内核所需的二进制文件和设备树。适用于 K3 代的 U-Boot 文档概括介绍了如何创建这些二进制文件,但必须进行一些修改才能实现最小配置。以下是最小平台启动所需的步骤。
设置以下通用环境变量:
环境变量 | 说明 |
---|---|
CC32 | 适用于 ARMv7(ARM 32 位)的交叉编译器,通常为 arm-linux-gnueabihf- |
CC64 | 适用于 ARMv8(ARM 64 位)的交叉编译器,通常为 aarch64-linux-gnu- |
LNX_FW_PATH | TI Linux 固件库的路径 |
TFA_PATH | Arm Trusted Firmware 源代码的路径 |
OPTEE_PATH | OP-TEE 源代码的路径 |
以下是设置通用环境变量的示例。
$ export CC32=arm-linux-gnueabihf-
$ export CC64=aarch64-linux-gnu-
$ export LNX_FW_PATH=path/to/ti-linux-firmware
$ export TFA_PATH=path/to/trusted-firmware-a
$ export OPTEE_PATH=path/to/optee_os
设置以下特定于电路板的环境变量:
环境变量 | 说明 |
---|---|
UBOOT_CFG_CORTEXR | 适用于 Cortex-R 的 Defconfig |
UBOOT_CFG_CORTEXA | 适用于 Cortex-A 的 Defconfig |
TFA_BOARD | 用于为 Cortex-A 处理器构建 TF-A 的平台名称 |
TFA_EXTRA_ARGS | 用于构建 TF-A 的任何额外参数 |
OPTEE_PLATFORM | 用于为 Cortex-A 处理器构建 OP-TEE 的平台名称 |
OPTEE_EXTRA_ARGS | 用于构建 OP-TEE 的任何额外参数 |
请注意,TFA_EXTRA_ARGS 和 OPTEE_EXTRA_ARGS 通常留空。下面是一个设置特定于电路板的环境变量的示例。
$ export UBOOT_CFG_CORTEXR="am62x_evm_r5_defconfig am62x_base_r5.config"
$ export UBOOT_CFG_CORTEXA="am62x_evm_a53_defconfig am62x_base_a53.config"
$ export TFA_BOARD=lite
$ export OPTEE_PLATFORM=k3
构建 tiboot3.bin
$ cd path/to/U_BOOT
$ make $UBOOT_CFG_CORTEXR
$ make CROSS_COMPILE=$CC32 BINMAN_INDIRS=$LNX_FW_PATH
构建 tispl.bin 和 u-boot.img
$ cd path/to/ATF
$ make CROSS_COMPILE=$CC64 ARCH=aarch64 PLAT=k3 SPD=opteed $TFA_EXTRA_ARGS \
TARGET_BOARD=$TFA_BOARD
$ cd path/to/OPTEE
$ make CROSS_COMPILE=$CC32 CROSS_COMPILE64=$CC64 CFG_ARM64_core=y $OPTEE_EXTRA_ARGS \
PLATFORM=$OPTEE_PLATFORM
$ cd path/to/U_BOOT
$ make $UBOOT_CFG_CORTEXA
$ make CROSS_COMPILE=$CC64 BINMAN_INDIRS=$LNX_FW_PATH \
BL31=$TFA_PATH/build/k3/$TFA_BOARD/release/bl31.bin \
TEE=$OPTEE_PATH/out/arm-plat-k3/core/tee-raw.bin
根据所测试的器件的安全级别,使用以下二进制文件。
安全性 | 生成的二进制文件 |
---|---|
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 |
内核的设备树生成为 u-boot.dtb,每个设备都需要它。
生成的三个二进制文件必须确切地重命名为 tiboot3.bin、tispl.bin 和 u-boot.img。生成的设备树 blob 也必须重命名为 k3-am625-base.dtb。这两个步骤都可以使用以下命令来完成。
$ mv tiboot3-am62x-{gp/hs-fs/hs}.bin tiboot3.bin
$ mv tispl.bin{_unsigned} tispl.bin
$ mv u-boot.img{_unsigned} u-boot.img
$ mv u-boot.dtb k3-am625-base.dtb