在使用 west ncs-provision upload 或 nrfutil device x-provision-keys 命令向 nRF54L15 设备提供密钥时,发生了超时

Error: One or more key provisioning tasks failed:
*1057732171: Timed out waiting for response from worker.(Generic)

1:nRF54L 设备配备了硬件密钥管理单元 (KMU),在使用时需要配置。nRF Connect SDK 提供了一个 west 命令, ncs-provision ,允许通过串行写入调试 (SWD) 接口将密钥上传到设备

在使用 west ncs-provision upload 或 nrfutil device x-provision-keys 命令向 nRF54L15 设备提供密钥时,发生了超时_第1张图片 https://docs.nordicsemi.com/category/nrf-54L-series

Prerequisites  前提条件


首先,确保已安装 nRF Util 工具。在 nRF Connect SDK 工作环境的设置过程中,它应该会自动安装。完成后,安装 nRF Util 所需的附加命令:

 nrfutil install device

Key generation  密钥生成


如果需要一个新密钥,您可以使用 imgtool 或其他工具生成它,这些工具能够生成所需类型和格式的 PEM 文件

imgtool page in the MCUboot documentation
关于如何使用 imgtool 生成密钥的说明,请参阅 MCUboot 文档中的 imgtool 页面。有关生成私钥的示例,请参阅以下示例:

imgtool keygen -k my_ed25519_priv_key.pem -t ed25519

向板卡提供密钥


上传密钥之前,请确保 SoC 未进行配置。如果 SoC 之前已被配置,并且您需要使用不同的密钥集,则必须首先使用以下擦除命令擦除 SoC:
nrfutil device erase --all

west ncs-provision upload -s nrf54l15 -k ed25519.pem -k ed25519-1.pem -k ed25519-2.pem --keyname UROT_PUBKEY

 

  • 参数 -s (-–soc) 指定目标设备。

  • 参数 -k (-–key) 指定要配置到 SoC 的私钥 PEM 文件。您可以指定最多三个密钥。

  • 参数 --keyname 指定密钥 PEM 文件上传的密钥名称。

  • 参数 --dev-id 指定接口序列号,如果开发机器连接了多个 J-link 接口,则应使用该参数。

  • 参数 -p (--policy) 指定应用于给定密钥集的策略。您可以应用以下选项:

    • lock-last - 将最后一个密钥设置为锁定状态,而前面的密钥可以撤销。此选项默认设置。

    • revokable - 为每个密钥启用撤销功能。

    • lock - 将所有密钥设置为永久。

  • 参数 --build-dir 指定 nRF 工具 JSON 文件创建的目录路径。如果未提供此参数,将使用临时目录。

  • 参数 -i (--input) 指定了一个包含一个或多个密钥定义的 YAML 文件路径,用于上传。该文件可以用作替代其他参数。YAML 文件应如下所示:

- keyname: UROT_PUBKEY
    keys: ["/path/private-key1.pem", "/path/private-key2.pem"]
    policy: lock
- keyname: APP_PUBKEY
    keys: ["/path/private-key3.pem", "/path/private-key4.pem"]
    policy: lock
  • 参数 --dry-run 指定命令应生成 nRF Util 的密钥文件,而实际上并不执行该命令。

脚本为每个私钥生成公钥,并将它们上传到您的设备。这些公钥为应用程序镜像生成验证密钥,然后由 MCUboot 用于验证。命令中指定的第一个密钥用于签名应用程序镜像。目前,该脚本仅支持 ED25519 密钥。


对于 MCUboot,请注意以下几点:

  • UROT_PUBKEY 是 MCUboot 使用的密钥名称。

  • 默认情况下,它使用一个密钥。

  • 它可能使用多个密钥,这是为了配合密钥撤销使用。密钥的数量由 CONFIG_BOOT_SIGNATURE_KMU_SLOTS MCUboot 的 Kconfig 选项定义。您可以通过 CONFIG_BOOT_KEYS_REVOCATION MCUboot 的 Kconfig 选项启用密钥撤销机制。

  • KMU 的配置需要在 SB_CONFIG_MCUBOOT_SIGNATURE_USING_KMU sysbuild Kconfig 选项中启用。否则,MCUboot 将回退到编译好的密钥。


对于 NSIB,请注意以下几点:

  • BL_PUBKEY 是 NSIB 使用的密钥名称。

  • 它使用树形密钥,这是用于密钥撤销的。

  • 在执行引导加载程序之前必须先进行密钥配置。详情请参阅注释。


要将一个密钥配置到板上,请运行以下命令:

  west ncs-provision upload -s nrf54l15 -k ed25519.pem --keyname UROT_PUBKEY

 2:建议排查的路径

  1. 检查设备连接和电源
    • 确保您的设备通过 SWD/J-Link 正确连接并已通电。
    • 如果你有多个 J-Link 设备连接,使用  --dev-id 参数指定正确的序列号以避免冲突。
  2.  设备状态
    • 设备在上传新密钥之前必须未注册。如果它之前已注册,请先擦除它:
      nrfutil device erase --all
      这确保设备准备好进行新密钥注册。将注册密钥到板上。
  3. 正确文件路径和格式
    • 再次检查您的密钥文件和 JSON 文件的路径。路径中的空格或拼写错误(例如,  E: /private key/private key.pem )可能会导致问题。
    • 确保 JSON 文件格式正确并包含所需字段(  version ,  keyslots ,  metadata ,  value ),硬件 KMU 的配网密钥。
  4. J-Link and Tool Versions  J-Link 和工具版本
    • 确保您使用的是所需的 SEGGER J-Link 版本(v8.18 或更高版本),以及最新的 nRF Util 和 west 工具,因为旧版本可能存在错误或不兼容问题修订历史。
  5. Try Simpler Command  尝试更简单的命令
    • 从一个最小的命令开始,以排除附加参数导致的问题:
      将   和   替换为您的实际设备序列号和密钥文件路径,将配对密钥提供给板子。
  6. Timeouts and USB Issues  超时和 USB 问题
    • USB 或驱动程序问题可能导致超时。尝试使用不同的 USB 端口或线缆,并确保没有其他进程正在使用 J-Link 在使用 west ncs-provision upload 或 nrfutil device x-provision-keys 命令向 nRF54L15 设备提供密钥时,发生了超时_第2张图片

你可能感兴趣的:(Nordic,服务器,运维,单片机,物联网,嵌入式硬件,开源协议)