该功能可为 Bootgen 根据 U-Boot 提示所创建的单分区(非比特流)镜像的身份验证和/或解密提供支持。
注释: 该并能不支持含多个分区的镜像。
用于加载安全镜像的 U-Boot 命令
zynqmp secure <srcaddr> <len> [key_addr]
此命令会验证位于地址 $src 的安全镜像的长度是否是 $len bytes\。如需使用用户密钥来进行解密,可指定可选 key_addr。
仅执行身份验证的用例
要在 U-Boot 处仅使用身份验证,请使用 bif 创建已经过身份验证的镜像,如以下示例所示。
- 创建在 U-Boot 处执行身份验证的单分区镜像。注释: 如果提供 elf 文件,它不应包含多个可加载节。如果 elf 文件包含多个可加载节,则应将输入转换为 .bin 格式,并在 bif 中提供 .bin 作为输入。以下提供了 bif 示例:
the_ROM_image: { [pskfile]rsa4096_private1.pem [sskfile]rsa4096_private2.pem [auth_params] ppk_select=1;spk_id=0x1 [authentication = rsa]Data.bin }
- 生成镜像后,请将经过身份验证的镜像下载到 DDR。
- 执行 U-Boot 命令以对安全镜像进行身份验证,如以下示例所示。
ZynqMP> zynqmp secure 100000 2d000 Verified image at 0x102800
- U-Boot 会在成功完成身份验证后返回实际分区的起始地址。发生操作失败时,U-Boot 会打印错误代码。如果 RSA_EN eFUSE 已编程,那么必须执行镜像身份验证。启用 eFUSE RSA 时不支持启动头文件身份验证。
仅执行加密的用例
如果镜像仅加密,则不支持器件密钥。未启用身份验证时,仅支持 KUP 密钥解密。