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.

[参考译文] AM2434:AM2434:SecureBoot - appimage 身份验证失败

Guru**** 2390735 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1405985/am2434-am2434-secureboot---appimage-authentication-fails

器件型号:AM2434
主题中讨论的其他器件:SysConfig

工具与软件:

您好!

我遇到了一个未决问题(E2E AM2434:SecureBoot - appimage authentication failed–firewall configuration?)、但未能解决。

最新推荐的解决方案是应用 bugfix (修复在 ospi 引导加载程序中未启用的 DAC 模式)。  

我们应用了这个错误修正; 在身份验证过程中、直接访问寄存器处于启用状态 但问题仍然存在  Sciclient_procBootAuthAndStart ()  函数返回  SYSTEMP_FAILURE。

我也检查了 闪存配置 正如我们所问的(您是否已经以最大配置运行闪存、如 PHY 启用、以最大时钟运行、协议8D-8D-8D 等)、是的 设置正确 .

如前所述、我已尝试对映像进行身份验证并启动它 将其移至 PSRAM 引导加载程序已成功引导 所以我可以假设 图像和签名/证书正确无误 .

您能否提供相关解决方案?

谢谢、Mark

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

    尊敬的 Mark:

    您是否使用定制闪存器件测试了 OSPI_FLASH_IO 和 OSPI_FLASH_DMA 示例?

    AM243x MCU+ SDK:OSPI 闪存 IO (TI.com)

    AM243x MCU+ SDK:OSPI 闪存 DMA (TI.com)

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

    Prashant、您好!

    我尝试了运行这些示例、在我们当前的 SDK (9.01)中、它甚至都不运行、我尝试了 SDK 10.0、它至少在控制台上输出错误-它在驱动程序的 open 函数处挂起/停止。


    运行的唯一示例是 ospi diag 1。 我将其输出导出为 JSON 文件、并用于在 syscfg 中加载自定义闪存配置、但这没有帮助。 我们在板上有一个 ISSI 闪存 (IS25WX256) 哪些(根据之前的讨论)不能与 TI 的驱动程序配合使用。
    这就是我们为这个闪存编写自己的 OSPI 驱动程序的原因、使用这个驱动程序、在每种情况下都可以正常工作。

    闪存和我们的闪存驱动程序也能在引导加载程序中正确工作、它可以直接从闪存中正确找到并读取证书、但在中失败  Sciclient_procBootAuthAndStart()(. respparam.flags 和 TISCI_MSG_FLAG_ACK、未设置)。


    不支持此 ISSI 闪存有什么原因吗?您是否确定该闪存是未设置此标志的原因?

    谢谢!

    标记

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

    尊敬的 Mark:

    身份验证适用于 TI EVM 上的闪存器件。 如果映像从闪存移至 RAM、这也对您有效。 你不会随机看到该问题、而是在每次复位时看到该问题。 这一切都强烈表明是自定义闪存器件导致了问题。

    我们的闪存和闪存驱动程序也可以在引导加载程序中正确工作、它可以直接从闪存正确找到并读取证书、不过在时失败了  Sciclient_procBootAuthAndStart()(. respparam.flags 和 TISCI_MSG_FLAG_ACK 未设置)。

    闪存驱动器使用 memcpy 或 BCDMA 在 DAC 模式下读取数据、而 SA2UL 使用 PKTDMA 读取数据。 SYSFW 用于哈希计算的 SA2UL 配置可能与您的自定义闪存器件不兼容。

    您能否一次性尝试使用最新的 SDK v10来使用最新的 SYSFW 并查看问题是否发生? 如果是、我将为最新的 SYSFW 版本创建一个错误、以便团队接下来进行了解。

    此致、

    Prashant

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

    Prashant、您好!

    感谢您的讲解!

    我已经尝试了 SDK v10的 SYSFW -将 sysfw-hs-enc.bin 和 sysfw-hs-enc-cert.bin 复制到我的工程中、以使用这些二进制文件编译到引导加载程序。 当然对于 boardcfg 也做了相同的事情-但仍然存在相同的问题。

    还有其他要尝试的东西吗? 例如、我应该在引导加载程序中配置 SA2UL、或者所有与之相关的内容  Sciclient_procBootAuthAndStart ()  这是在 sysfw 二进制文件中完成的?

    谢谢、Mark

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

    尊敬的 Mark:

    SYSFW 会执行所有操作来对映像进行身份验证。 由于 SYSFW v10中出现了该问题、因此我现在将创建错误。 您能给我分享 SYSFW v10日志吗?

    谢谢!

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

    Prashant、您好!

    日志如下:

    e2e.ti.com/.../balluff_5F00_tracelog_5F00_secureboot_5F00_failure.txt

    感谢您提交错误。 解决此类票据的平均时间安排是怎样的?

    谢谢、Mark

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

    Prashant、您好!



    有任何关于本期的新闻吗?

    解决此类票据的平均时间安排是怎样的?

    谢谢!

    标记

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

    Prashant、您好!


    我能否获得有关此问题的最新信息?


    谢谢!
    标记

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

    尊敬的 Mark:

    我会跟团队跟进。 同时、您能否将以下测试功能集成到 SBL 中并分享结果?

    void test_func() {
        int32_t status = SystemP_SUCCESS;
        
        /* Assumption: OSPI DAC mode is already enabled */
    
        uint32_t cert_load_addr = 0x60080000;
        uint32_t n_tests = 10000, cnt = 0;
    
        for(uint32_t i = 0; i < n_tests; i++) {
            status = Bootloader_socAuthImage(cert_load_addr);
    
            if(status == SystemP_SUCCESS) {
                cnt++;
                DebugP_log("#%d: PASS\r\n", i);
            } else {
                DebugP_log("#%d: FAIL\r\n", i);
            }
        }
    
        DebugP_log("#PASS: %d, #FAIL: %d", cnt, n_tests - cnt);
    
        /* Trap the execution */
        loop_forever();
    }

    我在 TI EVM 上对其进行了测试、发现10K 案例没有故障。

    [19:25:52.214] DMSC Firmware Version 10.0.8--v10.00.08 (Fiery Fox)
    [19:25:52.230] DMSC Firmware revision 0xa
    [19:25:52.230] DMSC ABI revision 4.0
    
    [19:25:52.262] #0: PASS
    [19:25:52.294] #1: PASS
    [19:25:52.326] #2: PASS
    [19:25:52.358] #3: PASS
    [19:25:52.390] #4: PASS
    [19:25:52.440] #5: PASS
    [19:25:52.470] #6: PASS
    [19:25:52.502] #7: PASS
    [19:25:52.534] #8: PASS
    [19:25:52.566] #9: PASS
    [19:25:52.598] #10: PASS
    ...
    [19:31:27.918] #9990: PASS
    [19:31:27.950] #9991: PASS
    [19:31:27.997] #9992: PASS
    [19:31:28.030] #9993: PASS
    [19:31:28.062] #9994: PASS
    [19:31:28.094] #9995: PASS
    [19:31:28.126] #9996: PASS
    [19:31:28.158] #9997: PASS
    [19:31:28.190] #9998: PASS
    [19:31:28.222] #9999: PASS
    [19:31:28.222] #PASS: 10000, #FAIL: 0

    谢谢!

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

    Prashant、您好!

    我运行了您请求的代码、但目前我无法访问 UART 输出。 我希望下面的屏幕截图就足够了-当然有0通过和10000失败、因为 在这里或在其他地方调用 Bootloader_socAuthImage 没有区别。

    您是否有可以为此错误提供一些帮助的任何其他代码片段?

    EVM 上有 一个  S28HS512TGAB  闪存。 我们的是  IS25WX256  的符号 ISSI  连接。

    请尽快向我们提供此问题的当前状态。

    谢谢、Mark

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

    尊敬的 Mark:

    我想通过集成测试代码确认两点:

    • OSPI 句柄取自索引1。 假设 SysConfig 中只添加了一个 OSPI 实例(应该是这样)、索引值将为0。 对您来说不是这样吗? 只是想确认 OSPI 是否实际上处于 DAC 模式。
    • 应用地址是0x60080000。 您是否仅在偏移0x80000处刷写了应用程序?

    谢谢!

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

    Prashant、您好!

    由于我们在使用自己的 OSPI 驱动程序(由于 TI 的驱动程序不支持 ISSI 闪存)、getHandle 函数被覆盖、因此在我们的实现中该参数基本上会被丢弃。 仅存在一个 OSPI 驱动器。 我们也不再使用 SysConfig。
    抱歉、如果这造成了混淆!

    句柄有效且正确。
    启用直接访问 AT 第768行 、下面的屏幕截图证明了这一点:  ENB_DIR_ACC_CTLR_FLD 范围 1. 在底部、您可以通过内存浏览器查看 OSPI 闪存内容可读 -我们的 Application" 也是 更新到了 。  0x60080000 您可以看到。

    (我们的架构中有多个插槽、但默认插槽是0x80000的偏移量。 多个应用程序映像是否会以任何方式导致问题?)

    您能否检查图像中显示的寄存器是否正确? 除了 DAC 模式之外、是否还需要任何其他配置?




    谢谢!
    标记

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

    尊敬的 Mark:

    感谢您的澄清!

    OSPI 看起来实际上处于 DAC 模式。 但是、图像中显示的0x80000偏移处的数据看起来不好。 重点是任何有效的已签名应用程序映像在开头将具有证书、看起来就像这样

    ❯ xxd ./examples/hello_world/am64x-evm/r5fss0-0_nortos/ti-arm-clang/hello_world.debug.appimage.hs | head
    00000000: 3082 0653 3082 043b a003 0201 0202 1436  0..S0..;.......6
    00000010: 78e2 e897 adf5 0b66 50c4 0584 b857 cdc2  x......fP....W..
    00000020: 69ee 0b30 0d06 092a 8648 86f7 0d01 010d  i..0...*.H......
    00000030: 0500 3081 9031 0b30 0906 0355 0406 1302  ..0..1.0...U....
    00000040: 5553 310b 3009 0603 5504 080c 0253 4331  US1.0...U....SC1
    00000050: 1130 0f06 0355 0407 0c08 4e65 7720 596f  .0...U....New Yo
    00000060: 726b 3121 301f 0603 5504 0a0c 1854 6578  rk1!0...U....Tex
    00000070: 6173 2049 6e73 7472 756d 656e 7473 2e2c  as Instruments.,
    00000080: 2049 6e63 2e31 0c30 0a06 0355 040b 0c03   Inc.1.0...U....
    00000090: 4453 5031 0f30 0d06 0355 0403 0c06 416c  DSP1.0...U....Al

    您能否一次性检查映像未正确刷写或出现什么情况?

    谢谢!

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

    Prashant、您好!

    感谢您指出这一点!
    映像的开头有一个标头(主要是因为时隙)、长度为48字节。 可以看到证书位于0x80048处。
    但是、只是为了进行测试、我删除了此标头并再次尝试-很遗憾、结果是相同的。
    我已在此处附加了另一个屏幕截图、该截图失败了、可能有一些内容可以提供提示。


    谢谢!
    标记

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

    尊敬的 Mark:

    您可以运行以下示例吗

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_00_00_20/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_SA2UL_SHA.html

    默认`crypto_sha.c`替换为以下选项、以验证 SA2UL 与闪存器件的兼容性。

    e2e.ti.com/.../7167.crypto_5F00_sha.c

    经过修改、可计算位于0x60200000处的2KB 缓冲区的 SHA512哈希(OSPI 中的2MB 偏移)、并与以下测试二进制的已知黄金 SHA512哈希进行比较

    e2e.ti.com/.../test.bin

    请注意、该示例不进行任何闪存初始化、因为假设 SBL 使闪存保持初始化和 DAC 状态。

    我测试了25K 计数的流程、未在 TI EVM 上看到任何故障。

    此致、

    Prashant

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

    Prashant、您好!

    我运行了这个示例、如果你不介意我把它减少到2500次运行- 25000也没问题、只是在我可以进行打印之前清除控制台。

    我注意到的一件事是、只有在事先引导应用程序的情况下、它才起作用。 如果我只刷写 bootloader、然后通过 CCS 加载示例、则在 firewall_open ()处会失败。 这是预期结果吗?

    是否可以进行联机调试会话、以便更轻松地找出原因?

    谢谢、Mark

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

    您好!

    我能否得到有关这个问题的答案或更新?

    标记

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

    尊敬的 Mark:

    对这里没有回应表示歉意。

    我已经在这里尝试了所有方法来检查它是否是由某些 SDK 问题引起的、但事实似乎并非如此。 感谢您目前为止进行所有测试。

    我已要求 TIFS 团队查看该问题、并帮助确定根本原因和相应的解决方案。

    我想再次确认一下。

    如果先将映像从闪存读取到 RAM、然后进行身份验证、身份验证就能通过、对吗? 但是、如果即使在确保启用了 DAC 之后也直接从闪存对映像进行了身份验证、则不能通过验证?

    回答"是"主要是在 SYSFW 而不是 SDK 方面存在一些问题。

    谢谢!

    Prashant

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

    Prashant、您好!

    "如果先将映像从闪存读取到 RAM、然后进行身份验证、身份验证就能通过、对吗? 但是、如果即使在确保启用了 DAC 之后也直接从闪存对映像进行了身份验证、则不能通过验证?"

    、这是正确的。 我已经按照之前所述对其进行了测试、方法是将映像移至 PSRAM、然后通过身份验证、引导映像。 从闪存来看、不会发生这种情况(DAC 肯定处于启用状态)。

    谢谢!
    标记

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

    尊敬的 Mark:

    由于 FAE 可能已经沟通过、因此认证问题最终在 TI EVM 上再次出现。 现在、我已有至少在 TI EVM 上修复该问题的 SYSFW 二进制文件。

    请测试您是否仍然看到这些 SYSFW 二进制文件的问题、我将在私聊中分享这些二进制文件。 请接受我刚刚发送的朋友请求。

    谢谢!

    Prashant

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

    Prashant、您好!

    很高兴听到,我将在收到它后进行测试!
    我已添加您为朋友。


    谢谢、Mark

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

    Prashant、您好!

    我可以确认收到的 sysfw 二进制文件修复了我们的身份验证问题。

    谢谢、Mark

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可以确认收到的已修复身份验证问题的 sysfw 二进制文件。

    感谢您的确认、Mark。

    请注意、此修复不会出现在下一个 SDK v10.1版本中、因为在修复此问题时、SYSFW 冻结已经发生。 但是、您可以集成提供的 SYSFW 二进制文件、因为它们是在 freeded tag v10.1基础上构建的。

    此致、

    Prashant