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.

[参考译文] AM2632:Keywriter 集成问题。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1512532/am2632-keywriter-integration-issue

器件型号:AM2632

工具/软件:

您好的团队、

出于某种原因、我需要将 Keywriter 功能集成到我的工程中。  集成后、它无法按预期运行。 以下是  sbl_keywriter 演示工程和我的 SBL 工程之间的结果比较。

sbl_keywriter 演示项目日志:(与试验运行模式中的结果、结果符合预期)

我的 SBL 工程日志:(在试运行模式下、预期与 sbl_keywriter 演示工程具有相同的日志、但结果未显示)

如上面的、所示、在我的 SBL 工程中、hsmRtFw 与 sbl_keywriter 演示工程相同、并且我使用与  sbl_keywriter 演示工程相同的方式对器件进行初始化。 在我的 SBL 项目中、 HsmClient_keyWriter()接口将证书传递给 hsmRtFw 后、hsmRtFw 似乎不能按预期工作。 没有  正在验证证书 Log and the result in 变量 certHeader。 debugResponse 是不对的。

1:我是否错过了对 hsmRtFw 的任何依赖或任何已知的将 Keywriter 功能集成到个人项目的限制?

2:并且是可以集成 Keywriter 功能到 工程

3:密钥证书是否有任何限制,因为我 想通过 UART 或其他接口将密钥证书从 PC 传递到电路板?

此致、

特里斯坦

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

    尊敬的 Tristan:

    从日志中看、hsmrt 似乎已从 OTP-KW 版本日志中正确加载、但似乎没有正确传递证书。  

    在 TI 提供的 SBL 工程中、证书作为 gCustKeyCert 传递、并在名为 certHeader 的结构中填充、该结构通过 API HsmClient_keyWriter ()传递到 HSM 端。

    能否请您在最后确认您是否在此阶段通过了有效的证书?

    谢谢。此致、

    Nikhil Dasan

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

    你好、Nikhil、

    感谢您的答复。 我同意你的意见、认为 证书似乎没有正确通过。 然后 我在我这边重新检查了传递密钥证书的代码 与 sbl_keywritter 演示工程完全相同。 唯一的区别是  gCustKeyCert 在 sbl_keywritter 演示工程放置在 .rodata.custKeyCert 部分、而 我的代码中的 gCustKeyCert 仅定义为 对齐(CacheP_CACHELINE_ALIGION)、而不是特别放置在某些部分中。  HsmClient_keyWriter()接口的返回值为 SystemP_SUCCESS。  

    我的工程中的证书与  sbl_keywritter 演示工程中使用的证书相同(已在上面的日志中测试为有效)、很可能传递的证书无效。

    我想知道为什么证书没有正确通过、下面是我的代码。

     代码中是否未识别任何潜在问题? 期待您的答复。

    此致、

    特里斯坦

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

    你好、Nikhil、

    我尽力定义  rodata.custKeyCert  部分中的 gCustKeyCert  正如 sbl_keywritter 演示工程所做的那样、并按预期进行 hsmrt 响应。 事实证明、有限制  gCustKeyCert  变量存储/加载地址

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

    当我检查链接器文件时、会放置 gCustKeyCert  .rodata.custKeyCert  在 L2 OCRam 位置中、名为 HSM_RT、在 MPU 配置中、此区域被缓存

    在您的案例中、您能否检查证书放置在案例中的哪个位置?

    您能否检查证书是否放置在 HSM 无法访问的 R5的 TCMA 或 TCMB 区域中?

    谢谢。此致、

    Nikhil Dasan

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

    证书放置在 OCRAM 中、区域的配置与您的区域相同。

    创建部分  .rodata.custKeyCert 和如下配置(与 sbl_keywriter 演示工程相同)。  hsmrt 似乎成功获得密钥证书、而打印的日志与   sbl_keywriter 演示工程相同。

    如果我更改了 加载存储器 部分   .rodata.custKeyCert 如下所示。 似乎 hsmrt 无法 正确获取密钥证书、并且没有输出。

    在这两种配置中、我会在编译后检查映射文件。  gCustKeyCert 的地址 在 OCRAM 中、而不在 TCMA 或 TCMB 中。

    我在部分中找不到与 HSM 访问权限相关的任何设置。

    有没有办法找出 gCustKeyCert 内存地址的确切限制?

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

    您好、

    我最终尝试了这一点、即我在标准 OTP KW 中唯一做的更改是我更改了的部分  .rodata.custKeyCert  从 MSRAM_HSMRT 到 MSRAM_0、  

    我在 dry_run 模式下运行上述更改、并能够获取与标准 KW 流程类似的基于 Keywriter 的日志。

    您能否将标准产品与您的更改进行比较、并检查您的最终是否有任何其他更改?

    注意:OTP KW 是一次性流程、因此我建议您使用标准产品。

    谢谢。此致、

    Nikhil Dasan

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

    您好、

    我 在 sbl_keywriter 演示工程中尝试了相同的更改、并在 AM263X LaunchPad 上运行。 但结果与您的不同。

    在修改之前、日志符合预期。

    修改段的加载存储器  rodata.custKeyCert

    日志如下、 与原始问题相同。

    令人困惑的是、结果不同、您可能会检查 Keywriter hsmrt?的源代码

    此致、

    特里斯坦

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

    尊敬的 Tristan:

    我已经在 AM263x-CC 电路板上进行了尝试。 让我在 LP 板上尝试同样的方法、并在星期一之前回复您。

    谢谢。此致、

    Nikhil Dasan

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

    尊敬的 Tristan:

    很抱歉耽误您的回复。  

    我能够在我这边重现这个问题

    在 HSM 端检查 Keywriter 代码后、我发现会对传递的证书进行地址范围检查。

    #define MSRAM_CUST_CERT_ADDRESS (0x70027800U)

    #define MSRAM_CUST_CERT_MAX_SIZE (0x40000U)

    OTP KW 文档中应该已经对此进行了标注。  

    我在内部提出此问题是为了解决即将发布的文档中的此信息。

    谢谢。此致、

    Nikhil Dasan