ZHCADP0 January   2024 TDA4VM , TDA4VM-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2提供的器件类型和关键信息
    1. 2.1 通过 MCU UART 获取其他关键信息
  6. 3HS 器件退货
    1. 3.1 CRP 脚本工具
    2. 3.2 独立生成 WIR 证书二进制文件 (override.bin) 并为其签名
    3. 3.3 为基准测试独立生成二进制文件
  7. 4总结
  8. 5参考文献

为基准测试独立生成二进制文件

所有 Jacinto7 HS 器件退货基准测试都必须执行该过程。TI 可能需要登录 HLOS 系统来运行更多测试以便进一步分析。需要更多签名的二进制文件来解锁器件。原因在于,在基准测试中,TI 需要进入 HLOS(如 Linux)来获取更多日志信息,因此需要更多签名的二进制文件。下文主要介绍 SPL 引导模式。

  1. 生成签名的 cfg 文件。

    TI 将为您准备 board-cfg.bin、sec-cfg.bin、rm-cfg.bin、pm-cfg.bin(位于 /ti-processor-sdk-linux-j7-evm-xx_xx_xx_xx/board-support/k3-image-gen-2021.01a/out/soc/j721e/evm),并请求您通过 secure-binary-image.sh 为这些文件签名。然后,返回签名的映像。使用以下命令生成签名的二进制文件:

    /ti-processor-sdk-linux-j7-evm-07_03_00_05/board-support/core-secdev-k3/scripts/secure-binary-image.sh
    out/soc/j721e/evm/board-cfg.bin out/soc/j721e/evm/board-cfg.bin-signed
  2. 生成签名的 sysfw.bin-hs。

    通过 ./gen_x509_cert.sh 使用 custMpk.pem 为 sysfw 内部证书签名。该过程在 HS 和 HS-Prime 器件之间存在差异。您只需选择一种生成方式。

    1. HS 器件:

      TI 将准备 ti-fs-firmware-j721e_sr1_1-hs-enc.bin 和 ti-fs-firmware-j721e_sr1_1-hs-cert.bin 供客户签名。

      ./gen_x509_cert.sh -d -c m3 -b /home/chris/J7/J721e/86/hs/board-support/prebuilt-images/ti-fs-firmware-
       j721e_sr1_1-hs-cert.bin -o ti-fs-firmware-j721e_sr1_1-hs-certs.bin -l 0x40000 -k /home/chris/J7/J721e/86/hs/board-
       support/core-secdev-k3/keys/custMpk.pem -r 1

      您需要通过 cat 命令生成 sysfw.bin-hs。

      cat ti-fs-firmware-j721e_sr1_1-hs-certs.bin /home/chris/J7/J721e/86/hs/board-support/prebuilt-images/ti-fs-
      firmware-j721e_sr1_1-hs-enc.bin > out/soc/j721e/evm/sysfw.bin-hs
    2. HS-Prime 器件:

      TI 将仅准备 ti-fs-firmware-j721e-hs.bin 供客户签名。

      ./gen_x509_cert.sh -d -c m3 -b /home/chris/J7/J721e/86/hs/board-support/prebuilt-images/ ti-fs-firmware-j721e-hs.bin -o out/soc/j721e/evm/sysfw.bin-hs -l 0x40000 -k /home/chris/J7/J721e/86/hs/board-support/core-secdev-k3/keys/custMpk.pem -r 1

      客户只需为该二进制文件签名。无需再执行 cat 命令。

  3. 通过脚本 gen_its.sh 生成其文件,最后返回 sysfw.itb。

    所有类型的 HS 器件都必须执行该过程。首先使用以下命令生成其文件。

    ./gen_its.sh j721e_sr1_1 hs evm out/soc/j721e/evm/sysfw.bin-hs out/soc/j721e/evm/board-cfg.bin-signed
    out/soc/j721e/evm/pm-cfg.bin-signed out/soc/j721e/evm/rm-cfg.bin-signed out/soc/j721e/evm/sec-cfg.bin-signed >
    out/soc/j721e/evm/sysfw-j721e_sr1_1-evm.its

    使用此 mkimage 命令生成 sysfw-j721e_sr1_1-evm.itb 并重命名为 sysfw.itb。

    mkimage -f out/soc/j721e/evm/sysfw-j721e_sr1_1-evm.its -r sysfw-j721e_sr1_1-evm.itb
    move out/soc/j721e/evm/sysfw-j721e_sr1_1-evm.itb out/soc/j721e/evm/sysfw.itb
  4. 生成 tiboot3.bin 以用于 SPL 引导。

    您需要先使用下面的补丁来执行 U-boot,然后重新生成 u-boot-spl.bin。该补丁跳过了对后续内核或应用程序文件进行签名的需求。

    diff --git a/arch/arm/mach-k3/security.c b/arch/arm/mach-k3/security.c
    index 092588f4b5..c55d1da689 100644
    --- a/arch/arm/mach-k3/security.c
    +++ b/arch/arm/mach-k3/security.c
    @@ -53,6 +53,14 @@ void ti_secure_image_post_process(void **p_image, size_t *p_size)
     	if (!image_size)
     		return;
     +    if (get_device_type() == K3_DEVICE_TYPE_HS_SE &&
    +	    !ti_secure_cert_detected(*p_image)) {
    +		printf("Warning: Did not detect image signing certificate. "
    +		       "Skipping authentication to prevent boot failure for CRP. "
    +		       "This will fail on Security Enforcing(HS-SE) devices\n");
    +		return;
    +	}
    +
     	if (get_device_type() == K3_DEVICE_TYPE_GP) {
     		if (ti_secure_cert_detected(*p_image)) {
     			printf("Warning: Detected image signing certificate on GP device. "

    使用 k3_gen_x509_cert.sh 生成 tiboot3.bin。

    u-boot-2021.01+gitAUTOINC+62a9e51344-g62a9e51344/tools/k3_gen_x509_cert.sh -c 16 -b s -o tiboot3.bin -l
    0x41c00000 -r 1 -k /home/chris/J7/J721e/86/l/board-support/core-secdev-k3/keys/custMpk.pem

    只需向 TI 提供 tiboot3.bin 和 sysfw.bin。