工具/软件:
你(们)好
我尝试向 LP-AM261 上运行的应用程序添加安全启动功能。
我能够执行 Keywriter Trial Run 模式。
现在、我们正在考虑在量产环境中预置 OTP 密钥的选项/方法。
我们知道、通过将 Keywriter 固件写入 OSPI、我们可以实现该目的。
您能提出一些方法来写入 OTP 密钥而不将映像加载到闪存中吗?
谢谢
Nithin
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.
工具/软件:
你(们)好
我尝试向 LP-AM261 上运行的应用程序添加安全启动功能。
我能够执行 Keywriter Trial Run 模式。
现在、我们正在考虑在量产环境中预置 OTP 密钥的选项/方法。
我们知道、通过将 Keywriter 固件写入 OSPI、我们可以实现该目的。
您能提出一些方法来写入 OTP 密钥而不将映像加载到闪存中吗?
谢谢
Nithin
您好、Nithin、
以下常见问题解答详细介绍了执行 OTP KW 的方法。
(+)【常见问题解答】AM2634-Q1:外部 VPP 电源的 TI OTP Keywriter 建议流程。 -基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛
尽管它侧重于 AM263(需要外部 Vpp)、而 AM261 为 VPP 集成了内部 LDO、但遵循的步骤应相同。
如果不使用闪存、建议使用 UART 通过 Xmodem 加载 Keywriter SBL。
谢谢。此致、
Nikhil Dasan
您好、Nithin、
实际上、有一种方法可以使用外部接口接收证书并将其共享到 HSM 内核。
但是、OTP KW 二进制中并未展示这一点、但在 TIFS_SDK 的调试身份验证示例中我们提供了相同的参考。
在这里、我们通过 UART Xmodem 在 SBL 中接收调试证书、然后向 HSM 内核提供相同的证书、如下所示
请参阅中的示例 C:\ti\tifs_am261x_10_02_00_00\examples\debug_authentication 略有不同。
TIFS SDK 可从 ti.com/secureresources/AM261X-TIFS-SDK 获取
谢谢。此致、
Nikhil Dasan
你好、Nikhil、
在这里、我们通过 UART Xmodem 在 SBL 中接收调试证书、然后向 HSM 内核提供相同的证书、如下所示
我已经通过修改 OTP Keywriter 应用(在 dryrun_mode 中)来尝试过此操作、但收到以下错误:
正在启动 KeyWriter 引导加载程序...
设备类型:HSFS
SR 版本 1.0
[HSM_CLIENT]注册客户端 ID = 2 的新客户端
[HSM 客户端] OTP-KW 64 位版本字符串= 0x0013306000a0001
[HSM 客户端] OTP-KW 信息
[SoC 类型]= AM261X
【器件类型】= FS
[ HSM 类型]= HSM_V1
[BIN Type]= OTPKW
[OTP-KW 版本]= 10.0.1
#
#正在验证证书。
#
[HSM 客户端] OTP Keywriter 中出现 OTP-KW 错误
[HSM 客户端] OTP-KW debugResponse = 0x00003011
[HSM 客户端] OTP-KW 错误相位= 0x1
[HSM 客户端] OTP-KW 错误模块= 0x01
[HSM 客户端] OTP-KW 错误阶段= 0x03
[HSM 客户端] OTP-KW 错误客户密钥扩展= 0x0
kpi_data:[bootloader_profile]引导介质:未定义
kpi_data:[bootloader_profile]引导映像大小:0 KB
kpi_data:[bootloader_profile]当前核心:
kpi_data:[bootloader profile] System_init:346us
kpi_data:[bootloader profile] Drivers_open:18us
kpi_data:[bootloader profile] LoadHsmKeyWriterRtFw:16523us
KPI_DATA:【引导加载程序配置文件】LoadHsmCustomerKeyCertificate:31089us
kpi_data:[bootloader profile] KeyWriter SBL end:850713us
kpi_data:[bootloader_profile] SBL 总用时:898690us
KeyWriter Bootloader Execution Complete...
为了隔离问题、我也尝试从另一个阵列复制证书(而不是通过 XMODEM 接收证书)、
但它也导致 了相同的误差。
下面给出了从阵列复制所做的更改
您好、
[引述 userid=“639822" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1518026/lp-am261-secure-boot-provision-otp-keys-in-production-environment/5860827 #5860827“][HSM 客户端] OTP Keywriter 中出现 OTP-KW 错误
[HSM 客户端] OTP-KW debugResponse = 0x00003011
[HSM 客户端] OTP-KW 错误相位= 0x1
[HSM 客户端] OTP-KW 错误模块= 0x01
[HSM 客户端] OTP-KW 错误阶段= 0x03
该错误表明问题在于解析从 R5 发送的证书地址处的证书
你能检查什么是 certHeader.certAddress 在好的情况下和坏的情况?
证书地址必须为 >= 0x70027800 且<(0x70027800 +最大证书大小 (0x40000))
这是否是 SBL Keywriter 包中可用的相同证书?
谢谢。此致、
Nikhil Dasan
你好、Nikhil、
感谢您的答复。
是否在 SBL Keywriter 包中提供了相同的证书?
我已生成自己的客户密钥
然后、我已使用密钥生成 Keywriter 证书
我在两种情况下都使用相同的证书(好证书和坏证书)
证书地址必须为 >= 0x70027800 且<(0x70027800 +最大证书大小 (0x40000)) [/报价]certHeader.certAddress 位于 MSSRAM_HSMRT 内。
下面给出了坏情况和坏情况的日志
很好的情况
[HSM 客户端] MSRAM_HSMRT 启动 0x70027800
[HSM CLIENT] certAddress 启动 0x70045428
[HSM CLIENT] certAddress End 0x7004702d
[HSM 客户端] MSRAM_HSMRT END 0x70067800坏情况
[HSM 客户端] MSRAM_HSMRT 启动 0x70027800
[HSM CLIENT] certAddress 启动 0x7004702d
[HSM CLIENT] certAddress End 0x70048c32
[HSM 客户端] MSRAM_HSMRT END 0x70067800#
#正在验证证书。
#
[HSM 客户端] OTP Keywriter 中出现 OTP-KW 错误[HSM 客户端] OTP-KW debugResponse = 0x00003011
[HSM 客户端] OTP-KW 错误相位= 0x1
[HSM 客户端] OTP-KW 错误模块= 0x01
[HSM 客户端] OTP-KW 错误阶段= 0x03
[HSM 客户端] OTP-KW 错误客户密钥扩展= 0x0谢谢
Nithin
您好、Nithin、
看起来您最后的问题可能缺少 Cache 无效和写回。
我尝试了在我的终端通过 UART 获得 Keywriter 证书并能够执行预期的模拟运行模式。
我遇到了您当前面临的问题、 在从 UART 收到证书后、使用 CacheP_wbInv () 解决了这个问题。
将我的实现(容差)放在这里
/cfs-file/__key/communityserver-discussions-components-files/908/0272.main.c
此外、该段现在将是 syscfg 中的.data custKeyCert 而不是“.rodata.custKeyCert",“,因此、因此它不再是“const"</s>“
谢谢。此致、
Nikhil Dasan