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.

[参考译文] AM62L:AM62L KeyWriter Lite 失败

Guru**** 2979400 points

Other Parts Discussed in Thread: AM62L

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1662472/am62l-am62l-keywriter-lite-failed

器件型号: AM62L

您好、

我尝试在 AM62L 中写入电子保险丝以提供 SMPK 和其他 OTP 值、但 TISCI 返回了一个通用错误、但没有任何关于错误的详细信息。

到目前为止、我已遵循的步骤:

  1. 从以下位置使用密钥配置器生成 Keywriter lite blob: https://github.com/TexasInstruments/security-utils/tree/release/key_configurator
  2. 我的配置使用多拍模式、并启用 mpkopts、smpkh、keycnt、keyrev、sblswrev、 sysfwswrev 和 brdcfgswrev 字段。 所有其他字段均未启用。 我附上了生成的.c 和.bin 文件(压缩文件:keywrlite.zip)   
  3. 按照此处的说明尝试编写 blob(唯一的变化是我们使用自己的硬件,因此 Vpp 引脚 1V8 电源是通过文档中描述的 Foundational_Components 以外的其他方式启用):https://software-dl.ti.com/processor-sdk-linux/esd/AM62LX/latest/exports/docs/linux/GPIO/U-Boot/UG-Key-Writer-Lite.html

这只会产生一个非特定的错误代码、u-boot 控制台的整个日志如下所示:

=> mw 0x82000000 0 0x400
=> load mmc 0:1 0x82000000 keywrlite.bin
636 bytes read in 1 ms (621.1 KiB/s)
=> dcache flush
=> md 0x82000000
82000000: 00000001 00009045 02209012 00000100  ....E..... .....
82000010: 00000001 00000000 00000000 00004a7e  ............~J..
82000020: a5a5a55a 00000000 00000000 00000000  Z...............
82000030: 00001234 5aa5a55a d87a1a6d 29f073a4  4...Z..Zm.z..s.)
82000040: ff3cf0c5 29b4cc00 25e25355 d49f83b5  ..<....)US.%....
82000050: 9e80bdbe 731a3fc1 3f7374ba 06df222b  .....?.s.ts?+"..
82000060: 40f13938 57b19b9f e458e874 6127c1b2  89.@...Wt.X...'a
82000070: 16e82171 751aa386 00000000 00000000  q!.....u........
82000080: 00009ffc a5a5a5a5 00000000 00000000  ................
82000090: 00000000 00000000 00000000 00000000  ................
820000a0: 00000000 00000000 00000000 00000000  ................
820000b0: 00000000 00000000 00000000 00000000  ................
820000c0: 00000000 00000000 00000000 00000000  ................
820000d0: 00005678 a5a5a55a 00000001 00000000  xV..Z...........
820000e0: 00000000 000062c8 a5a5a55a 00000001  .....b..Z.......
820000f0: 00000000 00000000 00008bad a5a5a55a  ............Z...
=> fuse writebuff -y 0x82000000
Programming fuses using a structured buffer in memory starting at addr 0x82000000
NOTICE:  Writebuff version info: 0x1
ERROR:   Failed to get response (-19)
ERROR:   Transfer send failed (-19)
ERROR:   Keywriter Lite Failed: (-19)
SMC call failed: Error code -1
ERROR
=> 

根据此主题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1641521/am62l-am62l-secure-boot-keywriter-lite 、似乎可以通过 WKUP_UART0 从 TISCI 获取日志、因此我执行了相同的步骤(在 u-boot 存储库中设置 trace_dst_enables:0x01 和 trace_src_enables:0x1f) 、但在 WKUP_UART0 上尝试写入密钥时没有输出。 这些配置值是否记录在某个位置? UART 的波特率是多少(我假设为 115200)?

通过 TF-A 源代码跟踪错误消息、似乎 TISCI 在出现任何错误时都不会确认消息。

我想重新迭代此处 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1578568/am62l-am62l-secure-boot-keywriter-lite 中的注释 、希望 TISCI 提供某种有用的错误代码、以帮助解决问题、而不仅仅是完全忽略消息。

您是否还建议调试此处的问题? Keywriter lite blob 本身是否正确?

谢谢

马特

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

    尊敬的 Matt:
    您的测试中使用了哪个 Linux SDK 版本?
    此致、
    - Hong

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

    Hong Hong:

    我们不是直接使用 SDK、而是拥有自己的 Yocto 构建、即从上游存储库 ( https://github.com/TexasInstruments/ti-u-boot) 的一个分支构建 u-boot、tisp 和 tiboot3、 并添加了对自己电路板的支持。 我们的分公司于 2025 年末从 ti-u-boot-2025.01 分支建立。

    我们的分支中是否包含我应该检查的特定提交或一组提交、以便完全支持 Keywriter Lite?

    谢谢

    马特

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

    尊敬的 Matt:
    让我在我这边运行一些测试、然后返回给您。
    此致、
    - Hong

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

    尊敬的 Matt:

    我分析了您生成的密钥 blob。
    在 AM62L SoC 上、SBL/SYSFW/BRDCFG 的三个 SWRV 在 TI Fab 中预编程为“1“。
    这是两个选项:
    -在生成密钥 blob 时删除三个 SWRV 字段
    -在密钥 blob 中输入三个 SWRV 字段时,激活“override“操作标志

    我将连接 u-boot 补丁以在 WKUP_UART0 上启用 TIFS 跟踪、并能够在 TI AM62L EVM 上捕获 TIFS 跟踪。

    此致、
    - Hong

    e2e.ti.com/.../am62l_5F00_tifs_5F00_trace.patch

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

    Hong Hong:

    谢谢、当我禁用写入三个 SWREV 字段时、这现在起作用。

    还有一个问题 — 是否有确切的规格说明要获得写入 OTP 的 SMPKH(或 BMPKH)值、应该如何散列?

    我在 TI 的 security-utils 存储库中检查了 python KEY_CONFIGURATOR 的源代码、并对提供给它的整个 DER 文件进行了哈希处理。 因此、我假设提供给该工具的 DER 文件应仅包含 SubjectPublicKeyInfo 结构、而 TI 安全 ROM 会对 tiboot3.bin 和 tispl.bin 的 x509 证书中包含的同一 SubjectPublicKeyInfo 结构进行哈希处理以进行比较?

    您能否确认这是否正确(或者指出如果我错过了它,已经记录在案的地方)?

    谢谢

    马特

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

    尊敬的 Matt:
    是的、您的理解是正确的。
    TI 测试密钥看起来就是这样
    $ openssl SHA512 smpk_public.der
    SHA512 (smpk_public.der)= 1f6002b07cd9b0b7c47d9ca8d1ae57b8e8784a12f636b2b760d7d98a18f189760dfd0f23e2b0cb10ec7edc7c6edac3d9bdfef)
    此致、
    - Hong