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.

[参考译文] AM625:AM62x 安全启动卡在"starting Keywriting"—VPP 硬件切换问题

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1549690/am625-am62x-secure-boot-stuck-at-starting-keywriting-vpp-hardware-toggle-issue

器件型号:AM625


工具/软件:

您好 TI 支持团队:

我正在根据 TI 的 AM62x 安全启动指南使用虚拟密钥((HS‑FS 型号)在基于 AM62x 的定制电路板上实现安全启动。 我已遵循所有文档步骤、包括:

  • tiboot3.bin通过生成(使用嵌入式证书)gen_keywr_cert.sh

  • tiboot3.bin按照官方指南中所述、通过 DFU 刷写 OTP Keywriter/SBL ()。

  • 在安全密钥配置期间监控 UART 输出。
    刷写后、控制台输出在以下位置停止:
    “启动密钥写入“

    然而,它 从不继续 收件人:

    Starting Keywriting
    Enabled VPP
    keys Certificate found: ...
    Keywriter Debug Response: 0x0
    Success Programming Keys
    My Question:
    1) Is the hardware-level presence and assertion of the 1.8 V VPP rail on MSP_8 strictly required, even when using dummy keys, for the secure boot keywriting process to proceed? Or is there any software-based mechanism or alternative configuration that allows keywriting to continue without hardware VPP?

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

    您好:

    要将任何内容编程到 OTP、必须具有 1.8V VPP。 在定制电路板上完成此操作后、您应该能够成功运行 Keywriter。

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

    您好 Prashant、

    感谢您对“开始密钥编写“行为的快速而有用的答复。

    我应用了建议、正确启用了 VPP 电源轨(从外部读取 1.8V) 、并修改了软件以反映该变化。 现在、R5 UART 控制台日志的处理方式如下:

    正在启动密钥写入
    已启用 VPP
    找到的密钥证书:0x43c16800
    Keywriter 调试响应:0x20
    发生错误

    从 TI 文档(和 TISCI 错误代码)中、我了解了0x20对应的信息 KEYWR_ERR_INTERNAL_OP —内部操作错误。

    要求澄清:

    • 是否Debug Response: 0x20明确链接到证书验证失败、例如 SMPK 不匹配或不受支持的 MSV

    • 是的正确补救方法 在没有 MSV 的情况下重新生成证书 、和 避免 MSV 标志 呼叫时gen_keywr_cert.sh(即仅包括 SMPK 和 SMEK)?

    • 您是否建议通过其他步骤或检查(例如 OpenSSL 版本要求、特定 SDK 版本,平台兼容性)来解决此错误?

    此致、

    Kapil  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从 TI 文档(和 TISCI 错误代码)中、我知道0x20对应于 KEYWR_ERR_INTERNAL_OP —内部操作错误。

    此错误主要与 OpenSSL 版本有关。 请确保您使用的是 OTP Keywriter 用户指南中所述的 OpenSSL v1.1.x。

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

    HII Prashant,


    感谢您确认 OpenSSL 版本要求。 我们已切换到 OpenSSL 1.1.1Q 并重新编译引导加载程序、但 R5 控制台仍报告:

    正在启动密钥写入
    已启用 VPP
    找到的密钥证书:0x43c16800
    Keywriter 调试响应:0x20
    发生错误

    可以得出:
    -仅使用 SMPK/SMEK/BMPK/BMEK 生成证书(无 MSV,无 OTP 扩展)。
    -验证的硬件 VPP 稳定在 1.8 V

    请确认:
    1.`0x20`是否明确表示 SMPK/BMPK 不匹配或其他证书现场验证失败?
    2.证书大小本身(例如过大)是否是 OTP 验证失败的常见原因?
    3.启用 M4/TIFS UART 跟踪进行调试是否有帮助?
    4、是否有已知的虚拟密钥工作流在 OpenSSL 使用正确的情况下导致 0x20?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    3. 启用 M4/TIFS UART 跟踪以进行调试吗?

    请共享从 MAIN_UART1 端口捕获的这些 TIFS 日志。 它应该提供更多的见解。

    在另一个注意事项中、您是否确实确认了 VPP 为 1.8V?

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

    HII Prashant,

    根据要求、我已准备好分享 Cortex‑M4 MAIN_UART1 端口的 TIFS 日志 但我需要帮助确定如何正确捕获它们。

    R5 UART 控制台输出:

    端口是:/dev/ttyUSB0
    FlowControl:无
    baudrate 是: 115200
    奇偶校验为:无
    数据库是: 8.
    停止位为:1.
    逃生是: C-A
    本地回波是:否
    noinit 为:否
    不重置为:是
    Hangup 是:不
    nollock 为:是
    send_cmd 为:sz -vv
    receive_cmd 是:rz -vv -E
    IMAP 是:
    OMAP 是:
    EMAP 是: crlf, delbs,
    日志文件为:none
    initstring:无
    exit_after 为:未设置
    出口是:否

    键入[C-A][C-h]以查看可用的命令
    终端就绪

    正在启动密钥写入
    已启用 VPP
    找到的密钥证书:0x43c15e00
    Keywriter 调试响应:0x20
    发生错误...


    我已经验证过这一点 VPP 在 1.8V 时稳定  在密钥写入期间通过外部源。

    我的问题是如何捕获此 UART M4 日志? 请 帮助解决这个问题!!

    一旦我可以在密钥写入流程中捕获两个 UART 输出、我将把完整的日志共享到组合文本文件中以供您审阅。

    感谢您的持续支持!

    此致、

    Kapli

     

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

    您好:

    默认情况下启用 TIFS 日志。 因此、只需连接到所有四个 UART 端口、TIFS 日志就应该位于其中一个端口上。

    此处显示了示例日志:

    dev.ti.com/.../node

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2. 如果 MAIN_UART1 在外部不可用、是否有替代方法来获取 TIFS 日志(例如通过 SYSFW 日志缓冲区或 JTAG)?

    以下 resopnse 具有一个函数、可用于转储从内存缓冲区读取的日志:

    e2e.ti.com/.../5766734

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

    您好、

    感谢您确认 TIFS 日志默认已启用、可通过 MAIN_UART1 进行访问。

    虽然我目前只连接了 UART0(R5 控制台)、但我需要指导如何使用 UART1 在我们的定制电路板上捕获 M4/TIFS 日志。

    要完成我们的调试设置、您能否阐明以下内容?

    • MAIN_UART1 是否是 TIFS 固件使用的 SoC 级 UART 端口?

    •  应连接哪些物理引脚或连接器(例如,参考 DTS 补丁中指示的 E19/A20)才能获得 UART1 输出?

    • 是否需要 在器件树或引导加载程序中进行任何其他配置(例如,启用 pinmux,状态标志)以启用和接收来自 UART1 的日志?

    正确连接 FTDI 适配器并根据需要配置 UART1 后、我应该能够捕获详细的 M4 调试跟踪。

    感谢您的持续支持!

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

    正如我在上一个响应中所传达的、您可能不需要 MAIN_UART1 来捕获 TIFS 迹线。 这些也可以从存储器缓冲区中捕获、这在 Keywriter 上下文中就足够了。

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

     我捕获了 TIFS 日志
    我已附上跟踪日志文件以供您查看   

    --TIFS_LOGS--
    0x4F8A0000
              0x4F8B0000
                        0x4F80001C
                                  0x4003007
                                           0x4400907
                                                    0x20800000
                                                              0x20800001
                                                                        0x4F8A00FF
                                                                                  0x4F8B0001
                                                                                            0x4F80001C
                                                                                                      0x4C40001C
                                                                                                                0x4C40001C
                                                                                                                          0x4C40001C
                                                                                                                                    0x4C40001C
                                                                                                                                              0x4C40001C
                                                                                                                                                        0x4C40001C
                                                                                                                                                                  0x4C40001C
                                                                                                                                                                            0x4C40001C
                                                                                                                                                                                      0x4C40001C
                                                                                                                                                                                                0x4C40001C
                                                                                                                                                                                                          0x4C40001C
        0x4C40001C
                  0x4C40001C
                            0x4C40001C
                                      0x4C40001C
                                                0x4C40001C
                                                          0x4C40001C
                                                                    0x4C40001C
                                                                              0x420021
                                                                                      0x820024
                                                                                              0x42000C
                                                                                                      0x820024
                                                                                                              0x4F8A00FF
                                                                                                                        0x4F8B0001
                                                                                                                                  0x4
    

    请告诉我内部验证跟踪显示的结果、以及是否有任何后续步骤来解决 OTP Keywriter 内部错误。

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

    您好:

    这些日志不包含任何内容。 日志应与我之前分享的示例日志类似。

    您在代码中的哪个位置调用函数来转储 TIFS 日志? 您是否已确保正确捕获日志且未截断日志?

    您是否也可以共享 Keywriter 证书生成命令日志?

    谢谢!

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

    您好:  

    我注意到、此处的日志与您之前分享的线程中提供的示例日志不同。 除了上面显示的内容外、没有其他输出。

    在 main.c 中、我添加了该函数、并在主 I m 中调用该函数。


    下面是我使用的证书生成命令和终端的完整日志输出:

    ti/mcu_plus_sdk_am62x_09_02_01_06/source/security/sbl_keywriter/scripts/cert_gen/am62x$ 
    ./gen_keywr_cert.sh -t tifek/ti_fek_public.pem --msv 0xC0FFE -b-def --bmek-def -s-def --smek-def --keycnt 2 --keyrev 1
    # Using MSV[19:0]: 0x000C0FFE
    INFO: Using default BMPK for programming
    INFO: Using default BMEK for programming
    INFO: Using default SMPK for programming
    INFO: Using default SMEK for programming
    # Using Key Count: 0x00000003
    # Using Key Rev: 0x00000001
    Generating Dual signed certificate!!
    GEN: AES256 key generated, since not provided
    # encrypt aes256 key with tifek public part
    The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
    # encrypt SMPK-priv signed aes256 key(hash) with tifek public part
    The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
    The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
    # encrypt smpk-pub hash using aes256 key
    writing RSA key
    # encrypt smek (sym key) using aes256 key
    # encrypt BMPK-priv signed aes256 key(hash) with tifek public part
    The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
    The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
    # encrypt bmpk-pub hash using aes256 key
    writing RSA key
    # encrypt bmek (sym key) using aes256 key
    1701	secondary_cert.bin
    5414	primary_cert.bin
    7115	../../x509cert/final_certificate.bin
    # SHA512 Hashes of keys are stored in verify_hash.csv for reference..
    

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

    我应该只在之前要求提供这些命令日志。 我刚刚假设如果您实际使用的是 OpenSSL v1.1.x、应该没有问题

    1701 secondary_cert.bin
    5414 primary_cert.bin

    这就是问题所在。 此处的主证书大小超过 5400 字节、这是不可接受的。 从日志中、您实际上使用的是 OpenSSL v3、而不是 v1.1.x

    请使用前面提到的正确 OpenSSL 版本。

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

    您好 Prashant、  

    感谢您指出 OpenSSL 1.1、实际上我的  证书生成路径是使用 openssl v3.0、现在我将其更改为 1.1  
    这  是 终端的证书生成完整日志输出  

    # Using MSV[19:0]: 0x000C0FFE
    INFO: Using default BMPK for programming
    INFO: Using default BMEK for programming
    INFO: Using default SMPK for programming
    INFO: Using default SMEK for programming
    # Using Key Count: 0x00000003
    # Using Key Rev: 0x00000001
    Generating Dual signed certificate!!
    GEN: AES256 key generated, since not provided
    # encrypt aes256 key with tifek public part
    # encrypt SMPK-priv signed aes256 key(hash) with tifek public part
    # encrypt smpk-pub hash using aes256 key
    writing RSA key
    # encrypt smek (sym key) using aes256 key
    # encrypt BMPK-priv signed aes256 key(hash) with tifek public part
    # encrypt bmpk-pub hash using aes256 key
    writing RSA key
    # encrypt bmek (sym key) using aes256 key
    1668	secondary_cert.bin
    5383	primary_cert.bin
    7051	../../x509cert/final_certificate.bin
    # SHA512 Hashes of keys are stored in verify_hash.csv for reference..
    

     

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

    它仍然无法正常工作? 如果没有、请分享您确切添加函数调用以转储 TIFS 日志的位置。

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

    您好:

    我使用以下控制台日志运行证书生成:

    #使用 MSV[19:0]:0x000C0FFE
    信息:使用默认 BMPK 进行编程
    ...
    #使用密钥计数:0x00000003
    #使用密钥修订版:0x00000001

    这确认证书中包含 MSV。

    出于使用虚拟密钥进行开发的目的、

    如您所见、MSV 确实包含  在此证书中。 如果 MSV 之前已经熔断、这可能会导致问题、请告知我是否应该:

    • 覆盖 MSV 值、或

    •  完全排除 MSV 标志并仅关注关键字段(SMPK/BMPK,密钥计数,密钥版本)

    确认后、我可以进行相应的重建。

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

    在 main.c 文件中、我添加了 dump_tifs_logs 函数、并在 int main 内调用该函数 ()

    keywriter_processKeyConfig();
    dump_tifs_logs(); (“此处我调用该函数“)
    drivers_close();
    system_deinit();

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

    您好:
    仍然获得与之前上传的相同 TIFS 日志以供审核。

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

    您好:

    您能否请确保您使用的控制台(可能是 minicom)不会截断 UART 日志?

    请共享完整日志、而不仅仅是 TIFS 日志。

    谢谢!

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

    您好:

    此功能呼叫是否正确放置? 已确认 PLS。  

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

    是的、没错。

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

    您好:  

    我尝试 picocom 在启用日志的情况下使用捕获完整的 UART 日志picocom -b 115200 /dev/ttyUSB0 | tee full_uart_log.txt ()。

    但是、生成的日志文件大小仅为 600 字节左右。 似乎日志已被截断或未正确捕获早期引导输出。

    您是否建议切换到另一个 UART 工具(例如,或) minicom  Tera Term或使用串行记录器来确保完整的采集?

    请建议您如何最好地继续获取所需的完整日志。

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

    TeraTerm 应该可以。 否则、这是一个一般问题。 请浏览互联网、了解如何在用于捕获 UART 日志的工具中禁用线路绕接。

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

    您好、

    根据你的建议,我们已经确认了这一点 已禁用换行 在 UART 日志记录工具中(我们在 VM 中使用 ubuntu 上的 picocom)。 尽管如此、我们仍然无法捕获完整的 TIFS 日志。 在最小输出后、日志将被截断或停止(例如,某些十六进制值或早期错误消息,如)Keywriter Debug Response: 0x20

    如有任何关于如何继续获取完整 TIFS 日志的建议、请随时提出。

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

    您好:

    请应用以下补丁并重试

    diff --git a/source/security/sbl_keywriter/am62x-sk/r5fss0-0_nortos/example.syscfg b/source/security/sbl_keywriter/am62x-sk/r5fss0-0_nortos/example.syscfg
    index c45c9bcbf..e04031b52 100644
    --- a/source/security/sbl_keywriter/am62x-sk/r5fss0-0_nortos/example.syscfg
    +++ b/source/security/sbl_keywriter/am62x-sk/r5fss0-0_nortos/example.syscfg
    @@ -38,6 +38,7 @@ debug_log.enableLogZoneInfo                  = true;
     debug_log.enableCssLog                       = false;
     debug_log.uartLog.$name                      = "CONFIG_UART0";
     debug_log.uartLog.useWakeupDomainPeripherals = false;
    +debug_log.uartLog.intrEnable                 = "DISABLE";
     debug_log.uartLog.UART.$assign               = "USART0";
     
     /**

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

    您好:  

    根据您的建议、 我们添加了该补丁、并在此处尝试了我们得到的响应、

    另外、我们在 main.c 中添加的函数调用[dump_tifs_logs()]如果我在  [keywriter_processKeyConfig ();]之前调用该函数、那么只有当我在任何行上调用该函数之后、我才能看到 R5 日志  

     

    Starting Keywriting
    Enabled VPP
    
    --TIFS_LOGS--
    0x4F8A0000
              0x4F8B0000
                        0x4F80001C
                                  0x4003007
                                           0x4400907
                                                    0x20800000
                                                              0x20800001
                                                                        0x4F8A00FF
                                                                                  0x4F8B0001
                                                                                            0x4F80001C
                                                                                                      0x4C40001C
                                                                                                                0x4C40001C
                                                                                                                          0x4C40001C
                                                                                                                                    0x4C40001C
                                                                                                                                              0x4C40001C
                                                                                                                                                        0x4C40001C
                                                                                                                                                                  0x4C40001C
                                                                                                                                                                            0x4C40001C
                                                                                                                                                                                      0x4C40001C
                                                                                                                                                                                                0x4C40001C
                                                                                                                                                                                                          0x4C4C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               C
                                                                                                                                                                                                               1
                                                                                                                                                                                                               4
                                                                                                                                                                                                               C
                                                                                                                                                                                                               4
                                                                                                                                                                                                               F
                                                                                                                                                                                                               1
                                                                                                                                                                                                               C
                                                                                                                                                                                                               2
                                                                                                                                                                                                               4
                                                                                                                                                                                                               7
                                                                                                                                                                                                               7
    
    --TIFS_LOGS--
    keys Certificate found: 0x43c15e80 
    Keywriter Debug Response:0x20 
    Error occured... 
    

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

    请在此处调用函数:

    diff --git a/sbl_keywriter/am62x-sk/r5fss0-0_nortos/keywriter_utils.c b/sbl_keywriter/am62x-sk/r5fss0-0_nortos/keywriter_utils.c
    index 6f61ade..a94f7f7 100644
    --- a/sbl_keywriter/am62x-sk/r5fss0-0_nortos/keywriter_utils.c
    +++ b/sbl_keywriter/am62x-sk/r5fss0-0_nortos/keywriter_utils.c
    @@ -66,6 +66,7 @@ void keywriter_processKeyConfig()
         status = Sciclient_service(&reqParam, &respParam);
     
     	DebugP_log("Keywriter Debug Response:0x%x \r\n", (uint32_t) response.debug_response);
    +	dump_tifs_logs();
     
     	if (( status == SystemP_SUCCESS ) && ( response.debug_response == 0x0U ))
     	{
    

    错误使执行陷入无限循环 (DebugP_assertNoLog) 中。

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

    我认为您没有正确的 UART 控制台设置。 输出似乎被截断或其他内容。 可能在 Windows 主机本身上使用 Teraterm。 否则、只需使用 CCS 保存存储器缓冲区。

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

    我们在 Windows 上使用 Teraterm、这是我们获得的日志  

    Starting Keywriting
    Enabled VPP
    
    --TIFS_LOGS--
    0x4F8A0000
    0x4F8B0000
    0x4F80001C
    0x4003007
    0x4400907
    0x20800000
    0x20800001
    0x4F8A00FF
    0x4F8B0001
    0x4F80001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x420021
    0x820024
    0x42000C
    0x820024
    0x4F8A00FF
    0x4F8B0001
    0x4F80001C
    0x420002
    0x820024
    0x4003007
    0x4400907
    
    --TIFS_LOGS--
    keys Certificate found: 0x43c15e80 
    Keywriter Debug Response:0x20 
    
    --TIFS_LOGS--
    0x4F8A0000
    0x4F8B0000
    0x4F80001C
    0x4003007
    0x4400907
    0x20800000
    0x20800001
    0x4F8A00FF
    0x4F8B0001
    0x4F80001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x4C40001C
    0x420021
    0x820024
    0x42000C
    0x820024
    0x4F8A00FF
    0x4F8B0001
    0x4F80001C
    0x420002
    0x820024
    0x4003007
    0x4400907
    0x409031
    0x800023
    0x20C00001
    0x20C00002
    Internal Operation Error
    debug_response:  0x20
    Internal Operation Error
    debug_response:  0x20
    
    --TIFS_LOGS--
    Error occured... 
    

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

    您使用的 Keywriter 和 SDK 版本是什么? 如果您使用的是 Keywriter v9.0、请注意、它只能与 SDK v9.0 一起使用。

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

    我们正在使用 MCU+SDK am62x_09_02_01_06 和 processor_sdk_linux-am62xx-evm-09.02.01.10

    只是为了确认:-它必须tispl.binu-boot.img使用相同的 SDK 版本和密钥集构建和签名tiboot3.bin?

    这些二进制文件可以从另一台计算机或 SDK 获取吗、或者严格要求版本对齐吗?

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

    您好:

    我谨就我之前的问题致函、希望您在 以下方面得到确认、以便继续进行测试和验证:

    •  它必须 tispl.bin  u-boot.img 使用与 tiboot3.bin?相同的 SDK 版本和密钥集来构建和签名。

      这些二进制文件可以从另一台计算机或 SDK 获取吗、或者严格要求版本对齐吗?

    • 我们正在使用 MCU+SDK am62x_09_02_01_06 和 processor_sdk_linux-am62xx-evm-09.02.01.10

    此澄清将有助于确定我们看到的Keywriter Debug Response: 0x20 () 当前问题是由于版本不匹配还是其他原因造成的。

    请尽快告诉我。 如果需要更多详细信息、我很乐意提供。

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

    您好:

    是否严格要求版本对齐?

    仅 Keywriter 需要该字段。 您可以使用任何 SDK 版本进行应用开发。

    SDK 版本不匹配不太可能导致您看到的问题、但最好使用 Keywriter 用户指南中提到的 SDK 版本。

    我仍然非常怀疑该问题仅与定制电路板上的 VPP 有关。

    请尝试使用预期的 SDK 版本一次。 如果仍然无法正常工作、请分享您如何确认定制电路板上的 VPP 实际为 1.8V。

    谢谢!

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

    您好、

    感谢您的更新。 关于您在 VPP 上的备注:

    我在定制电路板上重新验证了 VPP 电源轨。 我们在 SoC 的 VPP 引脚上有一个测试点 (VP)、并直接向该 TP 提供外部 1.8V 电压。 我们在 TP 上获得的电压为 1.79V/1.8V、并已在该过程运行时通过万用表确认。

    期待您的指导。

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

    您能否共享生成的证书 (final_certificate.bin) 一次?

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

    e2e.ti.com/.../final_5F00_certificate.bin.txt

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

    此证书的主要证书长度为 5414 字节、这是不正确的。

    ❯ binwalk final_certificate.bin
    
    DECIMAL       HEXADECIMAL     DESCRIPTION
    --------------------------------------------------------------------------------
    0             0x0             Certificate in DER format (x509 v3), header length: 4, sequence length: 1697
    1701          0x6A5           Certificate in DER format (x509 v3), header length: 4, sequence length: 5410

    您能否纠正您的设置以创建正确的证书?

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

    您好:

    现在、我们校正设置并重新创建证书。

    我将附加 生成的证书 (final_certificate.bin) 文件以供审核

    e2e.ti.com/.../8156.final_5F00_certificate.bin.txt

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

    附加的最新证书仍有问题

    ❯ md5sum 4278.final_certificate.bin.txt
    be8ff80ec8034efcf7d2a7d14a211695  4278.final_certificate.bin.txt
    ❯ openssl asn1parse -in 4278.final_certificate.bin.txt -inform DER
        0:d=0  hl=4 l=1664 cons: SEQUENCE
        4:d=1  hl=4 l=1128 cons: SEQUENCE
        8:d=2  hl=2 l=   3 cons: cont [ 0 ]
       10:d=3  hl=2 l=   1 prim: INTEGER           :02
       13:d=2  hl=2 l=  20 prim: INTEGER           :1165688B8BD9B61FCE4A587288AC8701887E74DD
       35:d=2  hl=2 l=  13 cons: SEQUENCE
       37:d=3  hl=2 l=   9 prim: OBJECT            :sha512WithRSAEncryption
    Error in encoding
    125163078544256:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:crypto/asn1/asn1_lib.c:91:

    能否检查您是否附加了错误的证书或分析了其他一些证书。 请列出从证书生成到编译 Keywriter 二进制的各个步骤。

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

    我已经检查了我之前附加的证书、它与在下生成的证书相同<MCU_PLUS_SDK_INSTALL_DIR>/source/security/sbl_keywriter/scripts/x509cert/。 但是、我将在此处重新附加证书。

    e2e.ti.com/.../7610.final_5F00_certificate.bin.txt

    我们执行以下步骤来生成 x509 证书:-

    1. 转至目录  /source/security/sbl_keywriter/scripts/cert_gen/am62x

    1. 运行以下命令以生成 x509 证书

      ./gen_keywr_cert.sh -t tifek/ti_fek_public.pem --mSv 0xC0FFE -b-def --bmek-def -s-def --smek-def --keycnt 2 --keyrev 1.                            
      此过程将在生成 x509 证书  /source/security/sbl_keywriter/scripts/x509cert/final_certificate.bin
    2. 将证书二进制文件转换为.h 格式。

      • 转到目录:  /source/security/sbl_keywriter/scripts/x509cert

      • 运行以下命令

        python3 ../../../../../tools/bin2c/bin2c.py final_certificate.bin keycert.h KEYCERT 

    生成 Keywriter 二进制文件的步骤:-

    1. 转至目录  /source/security/sbl_keywriter/am62x-sk/r5fss0-0_nortos/ti-arm-clang

    1. 清理 sbl_keywriter

      使-sj clean profile=debug
      
    2. 编译 sbl_keywriter

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

    在运行`openssl asn1parse`并共享输出之前、您是否可以执行证书的`md5sum`?

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

    $ md5sum -b final_certificate.bin


    5062b1f7b56296f337dee960daf5e971 * final_certificate.bin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid=“665541" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1549690/am625-am62x-secure-boot-stuck-at-starting-keywriting-vpp-hardware-toggle-issue/5981268 ]5062b1f7b56296f337dee960daf5e971 *final_certificate.bin

    此证书与您所连接的证书不同(它具有不同的 md5sum)。 您能否更正您的设置并向我分享正确的信息、以便进一步查找问题原因。

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

    证书作为代码块以文本格式附加。 请附上文件本身。

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

    e2e.ti.com/.../2860.final_5F00_certificate.bin.txt

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

    这同样不是正确的证书、因为 md5sum 与您在之前的响应中共享的 md5sum 不同

    ❯ md5sum 2860.final_certificate.bin.txt
    c3d93114b0694851d8fa52b19b27b41e  2860.final_certificate.bin.txt
    ❯ openssl asn1parse -in 2860.final_certificate.bin.txt -inform DER
        0:d=0  hl=4 l=1664 cons: SEQUENCE
        4:d=1  hl=4 l=1128 cons: SEQUENCE
        8:d=2  hl=2 l=   3 cons: cont [ 0 ]
       10:d=3  hl=2 l=   1 prim: INTEGER           :02
       13:d=2  hl=2 l=  20 prim: INTEGER           :4663719957B7DFE07CC2683B47296DF403D0E62A
       35:d=2  hl=2 l=  13 cons: SEQUENCE
       37:d=3  hl=2 l=   9 prim: OBJECT            :sha512WithRSAEncryption
    Error in encoding
    133043991890816:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:crypto/asn1/asn1_lib.c:91:

    我不知道发生了什么。

    请生成证书、运行这些 md5sum & openssl 命令、并与我共享相同的证书以进行交叉验证。 实际上、请还共享生成的证书和编译的 Keywriter 二进制 (tiboot3.bin)。

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

    现在、证书看起来很好。

    它是否仍然无法正常工作? 请共享日志、包括 TIFS 日志。

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

    您好:

    刷写后ti-boot3.bin、我们在 R5 UART 控制台上观察到以下输出:

    Starting Keywriting
    Enabled VPP
    keys 找到证书0x43c16f00
    Keywriter Debug Response: 0x0
    Success Programming Keys

    这似乎是为了确认使用虚拟密钥写入密钥的步骤是否成功。

    问题:
    此后、我们关闭 SoC 电源、更改引导模式开关、然后重新打开电路板电源。 但是、我们在此阶段没有看到 SoC 的任何 UART 输出。

    问题:

    1. 对虚拟密钥进行编程后、这是否是预期行为?

    2. 在执行密钥写入步骤后、使用虚拟密钥继续执行安全启动流程、下一步应该是什么?

    3. 此时、UART 上的预期输出是什么
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在此密钥写入步骤之后、使用虚拟密钥继续执行安全启动流程应该执行什么步骤?

    您需要刷写 HSSE 映像。

    如果从 SD 卡引导 SPL、则需要将`tiboot3.bin`替换为`tiboot3-am62x-hs-evm.bin`。