ZHCACZ9 august   2023 AM625 , AM625-Q1 , AM625SIP

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2开始最小平台开发
    1. 2.1 最小平台的功能
    2. 2.2 最小平台准备
    3. 2.3 构建二进制文件
  6. 3部署说明
    1. 3.1 验证最小配置功能
  7. 4扩展最小配置
  8. 5工具和调试
    1. 5.1 常见问题
    2. 5.2 OpenOCD 调试
  9. 6未来的工作
  10. 7总结
  11. 8参考文献

构建二进制文件

本节介绍如何创建二进制文件以使用最小平台配置来启动 SoC。U-Boot 文档中的 K3 代下提供了有关构建通用二进制文件的详细指南,但使用最小配置要求执行一些额外的步骤。

对于 AM62x 器件,启动 SoC 需要三个二进制文件:

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

由于启动过程同时涉及 32 位内核(唤醒域)和 64 位内核(主域),因此需要 32 位和 64 位交叉编译器。以下步骤演练了如何为每个安全级别生成三个必要的二进制文件。以下是 AM62x 器件的三个安全级别。

  • GP:通用版本
  • HS-FS:高安全性 - 现场安全型
  • HS-SE:高安全性 - 强制安全型
警告: 生成的二进制文件适用于具有相同安全级别的器件。

Binman 用于构建启动至内核所需的二进制文件和设备树。适用于 K3 代的 U-Boot 文档概括介绍了如何创建这些二进制文件,但必须进行一些修改才能实现最小配置。以下是最小平台启动所需的步骤。

设置以下通用环境变量:

表 2-1 通用环境变量
环境变量说明
CC32适用于 ARMv7(ARM 32 位)的交叉编译器,通常为 arm-linux-gnueabihf-
CC64适用于 ARMv8(ARM 64 位)的交叉编译器,通常为 aarch64-linux-gnu-
LNX_FW_PATHTI Linux 固件库的路径
TFA_PATHArm Trusted Firmware 源代码的路径
OPTEE_PATHOP-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

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

表 2-2 特定于电路板的环境变量
环境变量说明
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

根据所测试的器件的安全级别,使用以下二进制文件。

表 2-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

内核的设备树生成为 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