This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6422:增加 SWREV

Guru**** 2530720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1564797/am6422-increasing-swrev

器件型号:AM6422


工具/软件:

我尝试将 HS 器件上的 SWREV 设置为 2。 为此、我运行了 mcu_plus_sdk_am64x_11_01_00_17 附带的 runtime_keyrev 示例。 由于我的电路板已经是 HS 且 SWREV=1、因此我进行了以下更改:

if (SystemP_Success == status)

if(swrev !=1)

DebugP_LOG(“SWREV 已写入 eFUSE、值:0x%x \r\n“、swrev);
}
暴露

/*更新 boardcfg*/的软件版本
status = runtime_swrev_writeSwrev (OTP_REV_ID_SEC_BRDCFG、2);
}
}

并生成了示例:
DEVICE_TYPE=HS make


运行 tiboot3.bin 后、我通过在 makefile 中进行以下更改、首先重新编译 boardcfg-blob (mcu_plus_sdk_am64x_11_01_00_17/tools/sysfw/boardcfg/) 来验证它是否有效:

$(APP_NAME):$(HEXFILES)
$(Python)$(BLOB_GEN)--sw-rev 2 --devgrp $(devgrp_main)--bcfg $(BCFG)--bcfg-rm $(BCG_RM)--bcfg-pm $(BCG_PM)--bcfg-sec $(BCG_SEC)--output-file $(BCFG_BLOB)
ifeq ($(SOC)、$(FILTER $(SOC)、am64x_am243x)
$(Python)$(BLOB_GEN)--sw-rev 2 --devgrp $(devgrp_main)--bcfg $(BCG_Linux)--bcfg-rm $(BCG_RM_Linux)--bcfg-pm $(BCG_PM_Linux)--bcfg-sec $(BCG_RM_LINUX)--bcfg-sec_file
endif


我还对 runtime_swrev MCU_PLUS_SDK_am64x_11_01_00_17/examples/otp/runtime_swrev/am64x-evm/r5fss0-0_nortos/ti-arm-clang/makefile 进行了以下更改

$(BOOTIMAGE_CERT_GEN_CMD)--swrv 2 --sbl-enc --enc-key $(app_encryption_key)--sbl-Bin $ sysfw-hs-enc.bin (BOOTIMAGE_PATH sysfw-hs-enc-cert.bin)/$(BOOTIMAGE_bin_name)--sysfw-Bin $
暴露
$(BOOTIMAGE_CERT_GEN_CMD)--swrv 2 -sbl-bin $(BOOTIMAGE_PATH)/$(BOOTIMAGE_BIN_NAME sysfw-hs-enc-cert.bin)-sysfw-BIN $(BOOTFW_PATH)/sysfw-hs-enc.bin -sysfw-cert $(SYSFW_PATH)/$
endif
暴露
$(BOOTIMAGE_CERT_GEN_CMD)--swrv 2 --sbl-bin $(BOOTIMAGE_PATH)/$(BOOTIMAGE_BIN_NAME sysfw-hs-fs-enc-cert.bin)--sysfw-bin $(BOOTFW_PATH)/sysfw-hs-fs-enc.bin --sysfw-inner-cert $(SYSFW_PATH)/$
endif

使用这些更改进行重建 runtime_keyrev 应用程序似乎运行正常、显示 SWREW 设置为 2。

问题是无法使我们的 Yocto 构建所生成的引导程序 (tiboot3.bin) 正常工作。

我已在 k3-am64x-binman.dtsi 中的所有位置将 sw-rev 更改为 2:
合并;
sysfw-iner-cert;
keyfile =“CustMpk.pem";“;
sw-rev =<2>;
content-SBL =<&u_boot_spl>;
content-sysfw =<&ti_sci_enc>;
content-sysfw-data =<&combined_sysfw_cfg>;

我还将此部分设置为 2:
修订日期:
boardcfg_abi_maj:0x0
boardcfg_abi_min:0x2.

在以下文件中:
board-cfg.yaml
pm-cfg.yaml
rm-cfg.yaml
sec-cfg.yaml

当我尝试启动时、我得到:


U-Boot SPL 2023.04-ti-g0893e693e08f (2024 年 11 月 13 日 — 21:28:34 +0000)
在冷启动时重置以解决错误 ErrataID:i2331
如果是 UART/DFU 引导、请重新发送 tiboot3.bin
正在重置...
TI_sci system-controller@44043000:消息未确认 ti-sci-sysreset sysreset-controller:TI_sci_sysreset_request:reboot_device failed(–19)
TI_sci system-controller@44043000:消息未确认 ti-sci-sysreset sysreset-controller:TI_sci_sysreset_request:reboot_device failed(–19)
TI_sci system-controller@44043000:消息未确认 ti-sci-sysreset sysreset-controller:TI_sci_sysreset_request:reboot_device failed(–19)
无系统复位
###错误###请重置主板###

我所做的更改是否正确?
是否需要进行任何其他更改?

此致、

Mathias M ü Ågren

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    sw-rev =<2>;

    这是 SBL 的 SWREV。 很遗憾、没有用于电路板配置 SWREV 的属性。 这可以直接在 binman 工具中进行修改、如所示

    diff --git a/tools/binman/etype/ti_board_config.py b/tools/binman/etype/ti_board_config.py
    index c10d66edcb1..d07ffa92a6b 100644
    --- a/tools/binman/etype/ti_board_config.py
    +++ b/tools/binman/etype/ti_board_config.py
    @@ -80,7 +80,7 @@ class Entry_ti_board_config(Entry_section):
             self._fmt = '<HHHBB'
             self._index = 0
             self._binary_offset = 0
    -        self._sw_rev = 1
    +        self._sw_rev = 2
             self._devgrp = 0
     
         def ReadNode(self):
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Preshant

    这个补丁工作正常、谢谢。

    几个问题。

    • 将来在 binman dtsi 文件中是否会有板配置 SWREV 的属性?
    • 根据文档 TISCI_MSG_READ_SWREV 仅支持读取安全电路板配置、是否添加了读取 SBL 和 SYSFW 的支持?
    • TISCI_MSG_WRITE_SWREV 是否支持写入 SBL 和 SYSFW?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    将来 binman dtsi 文件中是否会有一个用于主板配置 SWREV 的属性?

    我将为此创建一个 TT。

    根据文档 TISCI_MSG_READ_SWREV 仅支持读取安全电路板配置、是否添加了支持读取 SBL 和 SYSFW 的功能?

    请参阅: https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/otp_revision.html

    TISCI_MSG_WRITE_SWREV 是否支持编写 SBL 和 SYSFW?

    是的。 不得修改 SYSFW 的 SWREV、因为 SYSFW 二进制文件由 TI 提供。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    $(BOOTIMAGE_CERT_GEN_CMD)--swrv 2 --sbl-enc

    我在这里有一个疑问。 似乎您仅更新了电路板配置的 SWREV、因此您无需使用该 SWREV 值对 SBL 进行签名。 您之前是否也修改了 SBL SWREV 值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我没有修改  SBL SWREV 值。

    我认为:

    $(BOOTIMAGE_CERT_GEN_CMD)--swrv 2 --sbl-enc

    实际不需要。

    仅 mcu_plus_sdk_am64x_11_01_00_17/tools/sysfw/boardcfg/makefile 中的更改

    $(app_name):$(HEXFILES)
    $(Python)$(BLOB_GEN)--sw-rev 2 --devgrp $(devgrp_main)--bcfg $(BCFG)--bcfg-rm $(BCG_RM)--bcfg-pm $(BCG_PM)--bcfg-sec $(BCG_SEC)--output-file $(BCFG_BLOB)
    ifeq ($(SOC)、$(FILTER $(SOC)、am64x_am243x)
    $(Python)$(BLOB_GEN)--sw-rev 2 --devgrp $(devgrp_main)--bcfg $(BCG_Linux)--bcfg-rm $(BCG_RM_Linux)--bcfg-pm $(BCG_PM_Linux)--bcfg-sec $(BCG_RM_linux)-bcfg-sec $(bcfg_output_linux)-linux (bcfg_file[$(bcfg_bcfg_linux)- bcfg_linux 文件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上不需要。

    事实确实如此。 感谢您的确认。