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.

[参考译文] AM263P4:安全启动日志:打印为 RBL、SBL 和应用程序存储的诊断日志

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1646845/am263p4-secure-boot-logs-print-the-diagnostic-logs-being-stored-for-rbl-sbl-and-application

器件型号: AM263P4

根据 spruj55d AM263P 技术参考手册中给出的信息、ROM 代码使用记录器模块进行调试信息。 INFOR/警告/错误日志存储在 0x0008_2800(大小为 4096 字节)中。

日志条目大小:8 个字(128 位)

字 1:LOG_TYPE - 0xABCD001 - lnfo 0xABCD002 — 警告 0xABCD003 — 错误 0xABCD004 — 严重

第二个字:filename — 源文件名

第 3 个字:行号 — 在源文件中报告日志的行

第 4 个字:value1 — 调试字 1

第 5 个字:value2 — 调试字 2.

第 6 个字:计时器计数(低位)-低 32 位计时器计数第 7 个字:计时器计数(高位)-高 32 位计时器计数

 

我当时使用 CCS 和 xds110Emulator 调试代码、发现此存储器中的内容始终为 0。

 

函数“DebugP_shmLogRead 在“C:\ti\mcu_plus_sdk_am263px_11_00_19\source\kernel\nortos\dp\common\DebugP_shmLogReader.c“中定义、用于读取共享存储器。

 

从我们的分析 “DebugP_shmLogRead“是用于读取日志的函数,但是当我们使用此函数读取日志时,它不打印任何内容。 进一步调试时、发现在“DebugP_shmLogRead“中没有为循环输入代码、因为“gDebugShmLogReaderCtrl.numCores“的值始终为 0。

 

我们假设安全启动失败的所有阶段都记录在此存储器区域中。 由于 RBL 后日志将被删除、因此在从 RBL 到 SBL 和 SBL 到应用程序转换失败时会发生日志记录

 

我们期望成功的转换或从 RBL -> SBL->应用程序的失败转换应存储在某个位置、我们想知道这些信息将存储在存储器中的什么位置以及如何读取它们。

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

    您好、

    在 TCM 存储器初始化时、在 SBL 中清除 ROM 日志。 假设 SBL 成功引导后、您无需拥有 ROM 日志。

    确认 ROM 是否已成功加载 SBL、您可以检查 eclipse 寄存器  

    请查看以下 E2E

    (2) AM263P2:用于查找 RomBootLoader 或 SsecondaryBootLoader 何时在 AM263P 上失败的状态寄存器 — 处理器论坛-处理器 — TI E2E 支持论坛

    SBL 到应用程序是用户空间、因此您可以使用任何其他方法来检查应用程序的成功加载、例如检查来自应用程序等的一些 CAN 日志

    谢谢。此致、

    Nikhil Dasan

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

    我修改了 SBL 代码“main.c“、以便在从 RBL 传输到 SBL 时不应重新初始化存储器。 我能够读取存储器位置“0x0008_2800“中存在的信息日志。 但是、我无法在参考手册如何将存储的值从 word 2 解码为 word8 中找到更多信息或其他说明?示例我可以使用 CCS 中的 View memory 选项读取如下日志

    移动数据 信息日志 文件名 行号    调试字 1 调试字 2 计时器计数 1 计时器计数 2
    0x82800 0ABCD001 55D44208 000001CA 0 0 0 2.
    0x82840 0ABCD001 428291C3 37 0 0 0 000008B3
    0x82860 0ABCD001 7A2184B7. 0000009A 1. 0 0 000008BA

    在这里、我理解了 0xABCD001 表示它的信息日志、如何理解值“55D44208“ 与哪个源文件有关? 然后是行号和其他值。

    我认为这可以是函数地址、但如果我看到参考手册中的存储器结构、则此位置位于保留的存储器中。 我也尝试在映射文件中找到该地址、但找不到该位置 (55D44208)。

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

    您好、

    这需要一个 ROM-LOG 解析器、该解析器当前是 TI 内部的工具。 让我在内部进行检查、如果可以在外部共享、请返回给您。 请允许我到星期二得到 ROM 和安全团队的确认。

    谢谢。此致、

    Nikhil Dasan

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

    你好、Nikhil、

    对此有任何更新? 是否可以分享 ROM 记录器工具给我们?

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

    您好、Nikhil、我们与 TI 签订了 NDA、请检查 ROM-LOG 解析器是否可以与 NDA 协议共享。

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

    尊敬的 Subhas:

    很抱歉耽误您的时间、需要对该工具进行评估并使其可靠、以便在外部共享。 我们目前正在测试工具在我们的终端,以验证相同的工作情况。 我们将在测试完成后的下周初提出一个常见问题。 我们会在完成后将链接分享给您。

    感谢您的耐心。

    谢谢。此致、

    Nikhil Dasan

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

    感谢您发送编修。 测试完成后、请分享该工具或常见问题解答文档。 同时、我尝试了在 RBL 未能验证 SBL(如果 SBL 未签名或使用不同的密钥进行签名)时如何存储在此存储器位置“0x0008_2800“中的错误或警告日志。

    案例 i) 创建了不带签名的 SBL 映像并进行了刷写。

    案例 ii) 使用不同密钥签名创建了 SBL 映像

    在我刷写了这两种映像的情况下、打开代码编写器、连接目标并根据需要加载上述映像的符号。 我尝试使用视图存储器读取存储器位置“0x0008_2800“。 这些位置中的数据始终显示为“????“。

    这意味着什么?

    这是因为 SBL 无效、CCS 未获得对存储器位置的访问权限、或者由于 RBL 未能验证 SBL、RBL 未向该位置写入任何内容?

    您能否举例说明此位置存储了哪种类型的错误或警告日志?

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

    请参阅常见问题解答以运行 ROM 解析器

     【常见问题解答】AM263P4-Q1:如何解析 AM263P ROM 日志 

    如果您有任何疑问、请告诉我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这两种情况下、我都刷写了图像、打开代码编写器、连接了目标并根据情况加载了上述图像的符号。 我尝试使用视图存储器读取存储器位置“0x0008_2800“。 这些位置中的数据始终显示为“????“。

    您能告诉我引导过程的状态是什么吗? 控制是在 RBL、SBL 还是 App 中 符号???? 如果未向该区域授予适当的权限(读取)、则可能出现此问题。

    这是因为 SBL 无效、或者由于 RBL 未能验证 SBL、RBL 未将任何内容写入此位置?

    这是因为 CCS 无权查看该区域。 从 CPU 的角度来看、不存在适当的权限

    您能举几个例子说明在此位置存储了哪种类型的错误或警告日志吗?

    请查看我在常见问题解答中附加的示例日志。 另请参阅字典以查看可能出现的消息

    此致、
    Aswin

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

    感谢您的答复。

    我不确定在哪种状态、当我连接目标并让其持续运行时、以及当我暂停目标没有停止时、我无法确定该控件存在于何处。 如果我刷写并加载适当(已签名)的 SBL 和应用程序、则能够暂停或设置断点并执行分 步执行。

    除了无效签名之外、是否有任何方法可以使 SBL 失败并查看 ROM 日志中是否有引导失败?

    我可以根据指令提取存储器日志并运行日志解析器来成功案例、但是、我们要寻找可以使 RBL 无法通过 SBL 握手的情况、并在存储器位置查看与该故障相关的日志。 您能告诉我们、是否有方法可以这样做?

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

    尊敬的 Subhas:

    当我连接目标并持续运行时

    我假设闪存中有一个 SBL 和应用程序、器件处于 OSPI 引导模式。 使用无 GEL 目标配置连接目标时、您是否看到内核此时停止? 刷写的 SBL 类型是什么(正常/损坏)?

    我可以暂停或设置断点并 逐步执行。

    当 SBL 损坏时、是否无法停止内核? 这里使用了什么类型的 SBL?

    [报价 userid=“682532“ url=“~/support/processors-group/processors/f/processors-forum/1646845/am263p4-secure-boot-logs-print-the-diagnostic-logs-being-stored-for-rbl-sbl-and-application/6375431

    除了无效签名之外、是否有任何方法可以使 SBL 失败并查看 ROM 日志中是否有引导失败?

    我可以根据指令提取存储器日志并运行日志解析器来成功案例、但是、我们要寻找可以使 RBL 无法通过 SBL 握手的情况、并在存储器位置查看与该故障相关的日志。 您能告诉我们、是否有方法可以这样做?

    [/报价]

    您可能会损坏证书的一部分或损坏映像本身(例如,通过擦除 SBL 的某些部分)、然后检查消息。

    此致、

    Aswin

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

    您好、Aswin、感谢 您的回答、请找到您问题的答案。

    1.使用无效密钥刷写的 SBL 无符号/签名。 是 SBL 已刷写、器件处于 OSPI 引导模式。 核心未停止。 点击“Suspend“时也不会停止。 是否有任何方法来停止内核?

    2.是的、如果我使用适当的密钥对 SBL 进行签名刷写、则我能够暂停内核和 REA 寄存器和存储器、但如果是未签名的 SBL 或使用无效密钥对 SBL 进行签名的 SBL、则我无法停止并且不确定控制权是否传输到 SBL、或者控制权是否滞留在 RBL 中。

    3.使用未签名的 SBL 或使用无效密钥且已签名的 SBL、我们能够识别 SBL 未通过串行通信执行、因为它仅打印“CCCC“。 但是、我们要读取存储器地址“0x82800“并查看是否记录了“Boot Failed“  

    modules/boot/boot/boot/boot.c src 774 0x009DF179 引导失败...
    modules/boot/boot/boot/boot.c src 785 0x009DF179 所有阶段后引导失败...

    谢谢你。

    此致

    Subhas Holi

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

    我们正在评估器件上的安全启动和调试功能、希望对以下几点进行澄清:

    • 安全启动失败期间的日志记录

        • 从用户/开发人员的角度来看、启动时日志记录机制的预期用途是什么、尤其是当日志存储在 RAM 中时?
        • 在 RBL 日志中、“0x009DF179“、“Boot Success… 和“Boot Failed…(引导失败)“ 指示 SBL 故障? 此外、直到发生 RBL 和 SBL 日志记录等引导的哪个阶段?
        • 如果 SBL 身份验证失败并且对存储器的访问受到限制、开发人员应如何检索并使用这些日志进行根本原因分析?

    • 在启用安全启动的情况下进行开发配置

        • 是否有建议的器件配置或安全设置可使我们将评估板保持在开发/调试友好型状态、同时仍执行安全启动流程?
        • 我们的目的是在开发阶段保留对调试日志和故障信息的可见性、而不会完全禁用安全启动。 你能建议一种方法吗?

    • 调试 SBL 验证失败

        • TI 是否提供任何机制来在 SBL 身份验证失败时连接到 SoC 并检查存储器内容(无论原因为何,例如:密钥无效的 SBL、SBL 未签名、SBL 损坏等)?
        • 如果是、建议使用哪些方法来了解故障原因?

    • 基于 JTAG 的调试访问

        • 在调查安全启动问题时、与 XDS110 JTAG 相比、HSEC JTAG 是否提供额外的调试和存储器访问功能?
        • 如果建议访问 HSEC JTAG、请推荐使用调试程序和工具。

    • 安全调试支持

      • 在开发环境中、器件是否支持安全调试机制、其中 SoC 会对调试接口进行身份验证、然后授予对存储器和寄存器的调试访问权限?
      • 对于产品、启用安全启动或等效安全功能将永久禁用调试访问? 或者、是否可以通过身份验证或配置过程选择性地重新启用该功能?
      • 对于生产部署、如果存在现场故障、安全维护/工厂 环境中有哪些恢复或调试选项可用?

    我们非常希望为安全启动故障分析提供任何指导、相关文档或建议的调试流程。

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

    尊敬的 Subhas:

    安全启动失败期间的日志记录

    从用户/开发人员的角度来看、启动时日志记录机制的预期用途是什么、特别是当日志存储在 RAM 中时?

    用户可以使用日志检查 ROM 引导状态。 由于 ROM 在每次上电时执行、因此合乎逻辑地将其存储在 TCM 中、除非 SBL 明确将其清除、否则 ROM 将可用。 从 SBL 清除 ROM 日志取决于 SBL 应用、比如如果完成了 TCM 区域的存储器初始化、则会将其清除

    从用户的角度来看、对于成功引导、无关紧要。

    在 RBL 日志中、“0x009DF179“、“Boot Successful… 和“Boot Failed…(引导失败)“ 指示 SBL 故障? 此外、直到遇到 RBL 和 SBL 日志记录等引导的哪个阶段?

    概括而言、这指示 RBL 加载 SBL 失败。

    但 ROM 日志提供了有关引导自检、IPC HSM 通信、引导过程状态等进程状态的更具体信息。 您可以查看日志字典以查看可用的日志

    如果 SBL 身份验证失败并且对内存的访问受到限制、开发人员应如何检索并使用这些日志进行根本原因分析?

    ROM 不是像 MCU + SDK 这样的开源软件。 如果您在使用 ROM 引导时遇到任何问题、建议与 TI 社区进行沟通


    在启用安全启动的情况下进行开发配置

    是否有建议的器件配置或安全设置可使我们在运行安全启动流程的同时使评估板保持开发/调试友好状态?

    为了便于在安全器件上进行开发、您可以始终刷写已签名的调试打开的 SBL 映像。 因此、每次引导时都会加载 SBL。 这将确保调试端口已打开并且时钟配置正确完成、而不是 GEL 脚本。 因此、安全器件可轻松用于开发。


    调试 SBL 验证失败

    ] TI 是否提供任何机制来连接到 SoC 并在 SBL 身份验证失败时检查存储器内容(无论原因为何,例如:密钥无效的 SBL、SBL 未签名、SBL 损坏等)?

    当前 SBL 本身不正确、则没有进行调试的选项。 因为调试打开需要经过签名的 SBL。 这是一项安全功能。 在这种情况下、可以通过获取 SBL 转储并将其与已知的正确 SBL 进行比较来测试 SBL 损坏情况


    基于 JTAG 的调试访问

    [报价 userid=“682532“ url=“~/support/processors-group/processors/f/processors-forum/1646845/am263p4-secure-boot-logs-print-the-diagnostic-logs-being-stored-for-rbl-sbl-and-application/6380446
    • 在调查安全启动问题时、与 XDS110 JTAG 相比、HSEC JTAG 是否提供额外的调试和存储器访问功能?
    • 如果建议访问 HSEC JTAG、请推荐使用调试程序和工具。
    [/报价]

    HSEC JTAG 只是一个扩展器。 它用于外部调试器。 此选项不提供其他功能。


    安全调试支持

    在开发环境中、器件是否支持安全调试机制、在该机制中、SoC 对调试接口进行身份验证、然后授予对存储器和寄存器的调试访问权限?

    如上所述、您始终可以在器件中保存一个已知的已签名调试打开的 SBL。 RBL 上电时将验证 SBL、因此会保持调试端口处于打开状态。

    对于产品、启用安全启动或等效安全功能将永久禁用调试访问? 或者是否可以通过身份验证或供应过程选择性地重新启用?

    这最终取决于签名过程。 可以在启用或禁用调试选项的情况下对 SBL 进行签名。 如果 SBL 经过签名并关闭了调试选项、则情况就是如此。 在这种情况下、调试选项也不会永久关闭。 您可以将器件置于 UART 引导模式、并发送使用启用了调试选项签名的新 SBL、以重新打开调试端口。

    对于生产部署、如果现场出现故障、在安全的维护/工厂 环境中有哪些恢复或调试选项可用?

    在生产环境中、如果您还需要恢复器件、则可以通过上述相同过程来完成这一操作、方法是通过 UART 发送已签名的调试打开 SBL 映像以打开调试端口。

    此致、
    Aswin

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

    尊敬的 Aswin:

    感谢您的答复。

    我们还有几个关于记录失败的问题、也希望就前面提供的一些答复作出澄清。 是否可以安排一次会议详细讨论这些项目?

    请告知我们您的首选日期和时间、以及我们方面为安排会议而需要提供的任何其他信息。(我的电子邮件:subhas.holi@collins.com)

    此致

    Subhas Holi

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

    尊敬的 Subhas:  
    已在启动电子邮件链的情况下关闭该主题。