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.

[参考译文] AM2432:引导加载应用程序验证问题(人为注入故障)

Guru**** 2557070 points
Other Parts Discussed in Thread: AM2432

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1513606/am2432-boot-loading-app-verification-issue-artificially-injected-fault

器件型号:AM2432


工具/软件:

专家:您好:


我正在使用 AM2432、SDK 版本:mcu_plus_sdk_am243x_09_00_00_35。

根据文档、X509 签名是在编译阶段执行的、验证在引导阶段进行。 因此、我尝试修改编译后的映像 appimage.hs_fs 的几个字节、以观察它在刻录后是否仍然能够成功引导。 当我修改 appimage.hs_fs 的第一个字节时、设备无法启动、并且引导日志打印“错误:bootloader_parseMultiCoreAppImage () parse image fail!!!“、这符合我的预期。 但是、当我修改中间和最后一个字节中的数据时、器件在烧录后仍然成功引导、这与我的预期不一致。
我期望是、无论是 appimage.hs_fs 映像被篡改还是器件的闪存损坏、都应该在引导加载阶段检测到损坏 、导致启动失败、但这与当前结果不一致。 为什么会这样? AM2432 引导过程如何确保映像的完整性?
谢谢你
Jimmy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的会议:

    我也有一个尝试在我的身边,它是相同的客户。 您能否在函数 Bootloader_parseMultiCoreAppImage () 中确认我们将检查整个二进制集成或只检查 HSFS 板中的 x509 头? 如果客户想要检查整个二进制文件、他们是否需要将器件更改为 HSSE、或者他们可以继续使用 HSFS 板?

    BR、

    Biao

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

    尊敬的 Biao:

    您能否在函数 Bootloader_parseMultiCoreAppImage () 中确认我们将检查整个二进制集成还是只检查 HSFS 板中的 x509 标头?

    正确、 Bootloader_parseMultiCoreAppImage 仅检查 x509 标头而不是整个二进制文件、这就是客户在第一个字节发生更改时发现问题的原因、但其他字节没有出现问题。  

    如果客户想要检查整个二进制文件、他们是否需要将设备更改为 HSSE、或者他们可以继续使用 HSFS 板?

    HS-SE 和 HS-SE FS 映像的身份验证过程相同、只有 x509 标头进行身份验证、而不是整个二进制文件、无需更改器件。

    此致、

    会面。

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

    您好:

    [引述 userid=“610902" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1513606/am2432-boot-loading-app-verification-issue-artificially-injected-fault 我期望是、无论是 appimage.hs_fs 映像被篡改还是器件的闪存损坏、都应该在引导加载阶段检测到损坏

    这是正确的预期。

    您能否分享据称已损坏但仍在启动的映像?

    谢谢!

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

    你(们)好


    抱歉、我无法在此处上传程序文件。 您可以尝试修改映像并自行引导。 此问题是常见的问题、或者请 Biao 上传他测试过的图像。

    谢谢你

    Jimmy

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

    您好、Prashant、

    我更改下图中的最后一个代码:

    e2e.ti.com/.../ipc_5F00_notify_5F00_echo_5F00_system.release.appimage.hs_5F00_fs

    BR、

    Biao

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

    此图像未损坏。 证书中包含的映像的 SHA512 哈希值与所提取附加原始 appimage 的 SHA512 哈希值相匹配。

    # Expected SHA512 hash of the appended raw appimage
    ❯ openssl asn1parse -in ipc_notify_echo_system.release.appimage.hs_fs -inform DER -strparse 959
        0:d=0  hl=2 l=  82 cons: SEQUENCE
        2:d=1  hl=2 l=   9 prim: OBJECT            :sha512
       13:d=1  hl=2 l=  64 prim: OCTET STRING      [HEX DUMP]:7C77260DF1CEF0139E45E62E5D780D62E8CD95A62DA6A007184DBC8F5920A5A1B133729FB5245A3C8AEAFDCB33AD2EBEDE6CCE7C7A0511DB508E48FAAC082D5F
       79:d=1  hl=2 l=   3 prim: INTEGER           :01CC64
       
    # Calculated SHA512 hash
    ❯ sha512sum ipc_notify_echo_system.release.appimage
    7c77260df1cef0139e45e62e5d780d62e8cd95a62da6a007184dbc8f5920a5a1b133729fb5245a3c8aeafdcb33ad2ebede6cce7c7a0511db508e48faac082d5f  ipc_notify_echo_system.release.appimage

    此外、我看不到共享映像中显示的修改:

    ❯ xxd ipc_notify_echo_system.release.appimage.hs_fs | tail -n 10
    0001d240: 0000 0000 004d 0000 0000 0000 0000 0000  .....M..........
    0001d250: 0000 10e0 00e0 0f00 0000 0084 d717 0100  ................
    0001d260: 0000 e803 0000 0700 0000 0200 0000 0300  ................
    0001d270: 0000 0400 0000 0000 0000 0700 0000 0000  ................
    0001d280: 0000 0000 0000 0000 0000 ffff ffff ffff  ................
    0001d290: ffff ffff ffff ffff 0000 ffff ffff ffff  ................
    0001d2a0: 0000 ffff ffff 0100 0000 0000 0000 7708  ..............w.
    0001d2b0: 0300 0100 0000 0100 0000 4042 0f00 0000  ..........@B....
    0001d2c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
    0001d2d0: 0000 ffff ffff 0000 0000                 ..........

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

    您好、Prashant、

    我将最后一个代码从 00 更改为 FF、MD5 值将被更改:

    Biao@biao:~/ti/mcu_plus_sdk_am243x_09_00_00_30/tools/boot md5sum ../../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs
    1b15b5ed56dcbb9aad1d6bd667f3b46f ./../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs
    Biao@biao:~/ti/mcu_plus_sdk_am243x_09_00_00_30/tools/boot md5sum ../../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs
    378b06c5579183bb2edd1a8d2b36b7ba ./../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs

    我再次更改中间码、请尝试使用以下二进制文件。

    BR、

    Biao

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

    e2e.ti.com/.../1070.ipc_5F00_notify_5F00_echo_5F00_system.release.appimage.hs_5F00_fs

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

    您好、Prashant、

    我也尝试 sha512sum、它会更改我最后一个代码或中间代码。

    sha512sum ../../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs
    3bea7022f3c8dff5dcba21127aba526844343e511a0b097c1f5449018ac16d6071ca70082448cd28723c65cc65f4ea23e579272b6d96cace44d515f9716fd20d /../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs
    Biao@biao:~/ti/mcu_plus_sdk_am243x_09_00_00_30/tools/boot sha512sum ../../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs
    1bf9b3ffe3a425ab3070f1b7894a79670581cf3b43b9ac6da4361da55d8120e6c1446a083f67f74b1fb4ae95c3d9007aa0e030c1c2eb0d588cf2af3e2043e54。/../examples/drivers/ipc/ipc_notify_echo/am243x-lp/system_freertos_nortos/ipc_notify_echo_system.release.appimage.hs_fs

    BR、

    Biao  

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

    此映像的身份验证失败:

    [12:39:01.079] DMSC Firmware Version 9.0.7--v09.00.07 (Kool Koala)
    [12:39:01.096] DMSC Firmware revision 0x9
    [12:39:01.099] DMSC ABI revision 3.1
    
    [12:39:01.110] Authentication failed!!
    [12:39:01.112] Some tests have failed!!

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

    您好、Prashant、

    更改中间码时、引导也失败。 让我再次与客户核实。

    BR、

    Biao

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

    您好、Prashant、

    客户发现原因、他们禁用身份验证、因为启用此功能会导致引导失败。

    错误日志:  

    您对客户有任何建议吗?

    BR、

    Biao  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否有任何建议给客户?

    这里的问题是什么? 如果映像损坏、则预计身份验证会失败。

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

    您好、Prashant、

    问题是当客户启用 Auth 时、正常的二进制也会失败。  

    BR、

    Biao

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题是当客户启用 Auth 时、正常的二进制文件也将失败。  [/报价]

    您能否要求客户启用 SYSFW 跟踪并共享这些跟踪?

    谢谢!

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

    您好、Prashant、

    如果您可以分享 AM24 中启用 sysfw 跟踪的指南将会更好、我将让客户遵循它。

    BR、

    Biao  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您可以分享 AM24 中启用 sysfw 跟踪的指南将会更好、我将让客户遵循它。

    可以按如下方式启用 Sysfw 日志:

    • source/drivers/sciclient/sciclient_default_boardcfg/am64x/sciclient_defaultBoardcfg.c 中的“#UNDEF SYSFW_TRACE_ENABLE“更改为“#define SYSFW_TRACE_ENABLE“  
    • 使用以下命令构建电路板配置: make -s -C tools/sysfw/boardcfg
    • 在 SBL 中为 MAIN_UART1 添加另一个 UART 实例。
    • 编译 SBL。

    如果正确遵循了这些步骤、您应该会在 MAIN_UART1 上看到 Sysfw 日志。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    执行上述测试步骤后、我没有看到 Sysfw 日志输出。 我想问:Sysfw 日志信息是否只能通过 UART1 输出? 目前、我们的 SBL 日志信息通过 UART0 输出、我的器件只能连接到 UART0。 此外、我在代码中看到设置了 UART0。 为什么我们需要“在 SBL 中为 MAIN_UART1 添加另一个 UART 实例。“?
    谢谢你。
    Jimmy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sysfw 日志信息是否只能通过 UART1 输出?

    是、仅限 MAIN_UART1。 还可以选择从存储器缓冲区读取日志:

    https://software-dl.ti.com/tisci/esd/latest/4_trace/trace.html#trace-memory-buffer-location

    另外、我在代码中还看到了 UART0 设置的代码。

    这只是一个宏名称。 我想它可以更恰当地命名。

    在继续进行 SYSFW 跟踪之前、您能否先尝试一下 SDK v11.0 中的最新 SYSFW 二进制文件并查看是否发生了身份验证问题。

    谢谢!

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

    你好

    我需要确认以下几个问题:

    1:我做了以下修改和编译。 这是正确的吗?

    • 将 source/drivers/sciclient/sciclient_default_boardcfg/am64x/sciclient_defaultBoardcfg.c 中的“#UNDEF SYSFW_TRACE_ENABLE“更改为“#define SYSFW_TRACE_ENABLE“
    • 使用以下方法构建电路板配置:gmake -s -C tools/sysfw/boardcfg sciclient_boardcfg SOC=am243x、此步骤将在 mcu_plus_sdk_am243x_09_00_00_35/source/drivers/sciclient/sciclient_default_boardcfg/am243x 目录中生成 boardcfg_blob.bin 和 boardcfg_blob_linux.bin 文件。
    • 使用 gmake -C source\drivers -f makefile.am243xr5f.ti-arm-clang all profile=release device_type=release GP 来编译 drivers.am243xr5f.ti-arm-clang.release.lib、因为使用 gmake -s libs device=am243x 会导致如下错误:

    • 在 CCS 上重新编译 SBL、生成 sbl_ospi.debug.hs_fs.tiimage、并将其刻录到器件中。

    2:我阅读了相关的 SDK 文档、并执行 gmake -s -C tools/sysfw/boardcfg sciclient_boardcfg SOC=am243x 会生成一个十六进制数据头文件。 我想知道这个十六进制数组头文件是否是 boardcfg_blob.bin 文件? 如何将其编译到 lib 库中、这会如何生效?

    ...

    3: 在继续进行 SYSFW 跟踪之前、您能否先尝试一下 SDK v11.0 中的最新 SYSFW 二进制文件并查看是否发生了身份验证问题。

    哪个特定的文件是 SYSFW 二进制文件? 我应该遵循哪些步骤将它们编译到 SBL 中并验证它们是否正常工作?

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

    您好:

    我阅读了相关的 SDK 文档、并执行 gmake -s -C tools/sysfw/boardcfg sciclient_boardcfg SOC=am243x 会生成一个十六进制数据头文件。 我想知道这个十六进制数组头文件是否是 boardcfg_blob.bin 文件? 如何将其编译到 lib 库中、它如何生效?

    构建电路板配置会生成二进制 Blob 及其相应的头文件。 头文件用于不同的上下文。 二进制 blobs 与 SBL 组合引导映像一起打包、并由 SYSFW 使用。

    哪个特定的文件是 SYSFW 二进制文件? 我应该遵循哪些步骤将其编译到 SBL 中并验证它们是否正常工作?

    SYSFW 二进制文件位于以下 soc 文件夹中: source/drivers/sciclient/sdk/am64x_am243x/sysfw-hs*

    将 SDK 版本中的这些二进制文件替换为 SDK v11 中的相应二进制文件并重新编译 SBL。

    此致、

    Prashant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、在我替换 mcu_plus_sdk_am243x_11_00_00_15\source\drivers\sciclient\mcanx_am243x 中的 sysfw-hs-*后 soc、用于在启动期间验证应用程序映像的函数正常工作。 但是、我注意到、PLLCFG_PLL1_CTRL 等寄存器的值已更改、它们与使用 MCU_PLUS_SDK_am243x_09_00_00_35 时读取的值不同。 由于我们有诊断功能、我们发现在 MCU_PLUS_SDK_am243x_11_00_00_15 中切换到 sysfw-hs-*后、寄存器读回诊断功能异常、如下图中用红色框突出显示的寄存器所示;
    为什么这两个 SDK 中 sysfw-hs-*固件的 PLLCFG_PLL1_CTRL 系列寄存器的值不同? 这可能会有什么影响? 由于我们已经使用 MCU_PLUS_SDK_am243x_09_00_00_35 很长时间、因此需要阐明这是否有任何影响。 如果我使用 MCU_PLUS_SDK_am243x_11_00_00_15 中的 sysfw-hs-*固件、寄存器读回诊断函数中的 PLLCFG_PLL1_CTRL 寄存器的值是否应与 MCU_PLUS_SDK_am243x_11_00_00_15 的 sysfw-hs-*固件中的值匹配?
    或者、换一种方式、我可以在 mcu_plus_sdk_am243x_09_00_00_35 中修改哪些代码以重新编译和重新生成 sysfw-hs-*文件、从而解决启动验证问题? 这样、我就不需要替换 mcu_plus_sdk_am243x_11_00_00_15 中的 sysfw-hs-*文件。
    谢谢你。
    Jimmy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 、Prashant、

    您能帮助检查一下吗? 这是否与  PLLCFG_PLL1_CTRL 更改有关正常? 客户能不能直接忽略它?

    BR、

    Biao  

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

    您好:

    [引述 userid=“610902" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1513606/am2432-boot-loading-app-verification-issue-artificially-injected-fault/5873200 #5873200“]但是、我注意到诸如 PLLCFG_PLL1_CTRL 之类的寄存器值已更改、它们与我使用 MCU_PLUS_SDK_am243x_09_00_00_35 时读取的值不同。

    这可能是由于 SYSFW 从 v10.0 开始的 PLL 序列发生了变化

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/11_00_00_15/exports/docs/api_guide_am64x/SYSFW_PLL_UPDATE_GUIDE.html

    该序列会根据勘误表 i2424 进行更新

    https://www.ti.com/lit/er/sprz457i/sprz457i.pdf?ts = 1750089199717&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FAM6442

    此致、

    Prashant

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

    您好、Prashant、

    客户想知道他们是否可以忽略此更改? 直接将 SDK9.0+sysfw10.x 用于 SOP、也可以向客户提供一些补丁、以便他们可以使用 SDK9.0+SYSFW9.0 而无需出现此问题和 SOP。

    BR、

    Biao  

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

    您好:

    建议至少迁移到 SYSFW v10.0。 应该可以将 SDK v9.0 与此 SYSFW 版本配合使用。 请务必遵循前面共享的开发人员指南中的说明。