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.

[参考译文] TMDS64GPEVM:警告:未检测到图像签名证书

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1222210/tmds64gpevm-warning-did-not-detect-image-signing-certificate

器件型号:TMDS64GPEVM

你好

对于定制电路板、我们基于 meta-ti Yocto 层构建 Linux 图像。 我们定义了我们的定制 Yocto 机器("Puma")。 系统引导时 会显示一些警告、指出引导加载程序是无符号的。 如何删除此消息? 如何使用 Yocto 签署引导加载程序?

U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
EEPROM not available at 80, trying to read at 81
Reading on-board EEPROM at 0x51 failed -1
Resetting on cold boot to workaround ErrataID:i2331
resetting ...

U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
EEPROM not available at 80, trying to read at 81
Reading on-board EEPROM at 0x51 failed -1
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.4.7--v08.04.07 (Jolly Jellyfi')
esm main init failed: -19
esm mcu init failed: -19
SPL initial stack usage: 13408 bytes
###### PUMA SPL board init ######
Trying to boot from eth device
eth1: ethernet@8000000port@2
ethernet@8000000port@2 Waiting for PHY auto negotiation to complete...... done
link up on port 2, speed 100, full duplex
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
DHCP client bound to address 192.168.1.13 (1266 ms)
Using ethernet@8000000port@2 device
TFTP from server 192.168.1.11; our IP address is 192.168.1.13
Filename 'tispl.bin'.
Load address: 0x82000000
Loading: #################################################################
         #################################################################
         ########################################
         439.5 KiB/s
done
Bytes transferred = 869115 (d42fb hex)
Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices

谢谢

Br

雅各布

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

    您好 Jakub、
    有关 tiboot3.bin/u-boot 与器件类型(GP/HS-FS/HS-SE)的一个参考。
    software-dl.ti.com/.../Foundational_Components_Migration_Guide.html
    此致!
    -hong

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

    你好,Hong

    感谢提供指南链接。 我还发现在 meta-ti 类,似乎是负责签名图像:

    meta-ti-bsp/classes/uboot-sign-legacyhs.bbclass

    根据分类描述、我生成了 RSA 密钥、并将其添加到了我的 u-boot bbappend 配方中、如下行:

    UBOOT_SIGN_KEYDIR = "${WORKDIR}/keys"
    UBOOT_SIGN_KEYNAME = "dev"
    UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
    UBOOT_SIGN_ENABLE = "1"

    并且在内核 bbapend 食谱中:

    KERNEL_CLASSES = " kernel-fitimage "
    KERNEL_IMAGETYPE = "fitImage"

    编译抛出错误:

    |   GEN     Makefile
    |   CALL    /home/dm/jg-test-image/yocto-linux/build/tmp/work-shared/puma-k3r5/kernel-source/scripts/atomic/check-atomics.sh
    |   CALL    /home/dm/jg-test-image/yocto-linux/build/tmp/work-shared/puma-k3r5/kernel-source/scripts/checksyscalls.sh
    |   CHK     include/generated/compile.h
    |   GEN     .version
    |   CHK     include/generated/compile.h
    |   LD      vmlinux.o
    |   MODPOST vmlinux.symvers
    |   MODINFO modules.builtin.modinfo
    |   GEN     modules.builtin
    |   LD      .tmp_vmlinux.kallsyms1
    | arm-poky-linux-gnueabi-ld.bfd: drivers/memory/pl353-smc.o: in function `pl353_smc_driver_init':
    | pl353-smc.c:(.init.text+0x8): undefined reference to `amba_driver_register'
    | arm-poky-linux-gnueabi-ld.bfd: drivers/memory/pl353-smc.o: in function `pl353_smc_driver_exit':
    | pl353-smc.c:(.exit.text+0x8): undefined reference to `amba_driver_unregister'
    | make[1]: *** [/home/dm/jg-test-image/yocto-linux/build/tmp/work-shared/puma-k3r5/kernel-source/Makefile:1189: vmlinux] Error 1
    | make: *** [/home/dm/jg-test-image/yocto-linux/build/tmp/work-shared/puma-k3r5/kernel-source/Makefile:185: __sub-make] Error 2
    | ERROR: oe_runmake failed

    行了一些对函数的未定义引用  AMBA_DRIVER_REGISTER 和  AMBA_DRIVER_UNregister 。 我检查了内核的 menuconfig、并且 config_arm_amba 选项被设置为 y、因此这个错误真的令人困惑。

    此外、在构建过程中、我收到一些警告:

    向 u-boot 二进制文件添加公钥时失败。 已验证启动不可用

    为什么? 我在${workdir}/keys 中提供了 dev.key 和 dev.cert。

    您能帮我解决这些问题吗?

    谢谢

    Br

    雅各布

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

    您好 Jakub、
    我将请我的同事回答您有关 Yocto 配方的后续问题。
    此致!
    -hong

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

    看起来您在 GP 器件上运行。 如果尝试对这些伪影签名、则可能会使这些警告消失、但随后会显示其他警告、请参阅相应 U-Boot 源中的以下部分:

    security.c-     if (get_device_type() == K3_DEVICE_TYPE_GP) {
    security.c:             if (ti_secure_cert_detected(*p_image)) {
    security.c-                     printf("Warning: Detected image signing certificate on GP device. "
    security.c-                            "Skipping certificate to prevent boot failure. "
    security.c-                            "This will fail if the image was also encrypted\n");
    security.c-
    security.c-                     cert_length = ti_secure_cert_length(*p_image);
    security.c-                     if (cert_length > *p_size) {
    security.c-                             printf("Invalid signing certificate size\n");
    security.c-                             return;
    security.c-                     }
    security.c-
    security.c-                     *p_image += cert_length;
    security.c-                     *p_size -= cert_length;
    security.c-             }
    security.c-
    security.c-             return;
    security.c-     }
    security.c-
    security.c-     if (get_device_type() != K3_DEVICE_TYPE_HS_SE &&
    security.c:         !ti_secure_cert_detected(*p_image)) {
    security.c-             printf("Warning: Did not detect image signing certificate. "
    security.c-                    "Skipping authentication to prevent boot failure. "
    security.c-                    "This will fail on Security Enforcing(HS-SE) devices\n");
    security.c-             return;
    security.c-     }
    

    如果您暂时使用 GP 器件、最好忽略您收到的 U-Boot 警告消息。 最终、任何产品都可能应使用 HS-FS (或 HS-SE 器件)、在这两种情况下、签名均由最近的 v8.x SDK 的 Yocto 方法处理、U-Boot 不会显示警告消息。

    此致、Andreas

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

    您好 Andreas

    采用哪种方法签名? 如何使用该配方指定自定义密钥? 那么,这种配方的目的是什么: meta-ti-bsp/classes/uboot-sign-legacyhs.bbclass

    我已经修补了 security.c 文件 ,增加了一些额外的 printf 语句,看起来像警告" 未检测到图像签名证书..."  由 GP 器件类型引起。 根据终端上印刷的日志、我们的电路板似乎是 HS-FS。

    报告是什么样子  静态 bool ti_secure_cert_detected (void *p_image)  返回0表示未在映像上检测到证书。 那么、我更新了我的问题:如何使用 Yocto 指定自定义证书并添加到映像? 您声称这应该是由 Yocto 食谱自动发生,但似乎没有。

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    冷启动时重置到权变措施 ErrataID:i2331
    正在重置...

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    ESM 主初始化失败:-19
    ESM MCU 初始化失败:-19
    SPL 初始堆栈使用量:13408字节
    ########## Puma SPL 板初始化######
    尝试从 eth 设备引导
    ETH1:以太网@8000000port@2
    以太网@8000000port@2等待 PHY 自动协商完成 停止更新
    在端口2上建立链路、速度为100、全双工
    BOOTP 广播1.
    BOOTP 广播2.
    BOOTP 广播3.
    BOOTP 广播4.
    DHCP 客户端绑定到地址192.168.1.13(1766ms)
    使用以太网@8000000port@2器件
    来自服务器192.168.1.11的 TFTP;我们的 IP 地址为192.168.1.13
    文件名"tispl.bin"。
    载入地址:0x82000000
    正在加载:##################################################出:####################出
    ################################################################个##############
    ######################################################################个##################
    460 KiB/s
    停止更新
    传输的字节= 935371 (e45cb 十六进制)
    GET_DEVICE_TYPE ()= 4
    TI_SECURE_CERT_DETECTED (* p_image) TRUE 或 FALSE? 1.
    身份验证已通过
    GET_DEVICE_TYPE ()= 4
    TI_SECURE_CERT_DETECTED (* p_image) TRUE 或 FALSE? 0
    器件类型:HS_SE
    警告:未检测到图像签名证书。 跳过身份验证以防止启动失败。 这将在安全强制(HS-SE)设备上失败
    GET_DEVICE_TYPE ()= 4
    TI_SECURE_CERT_DETECTED (* p_image) TRUE 或 FALSE? 1.
    身份验证已通过
    GET_DEVICE_TYPE ()= 4
    TI_SECURE_CERT_DETECTED (* p_image) TRUE 或 FALSE? 1.
    身份验证已通过
    不支持来自器件4的 init_env!
    在 ARM64内核上启动 ATF...

    注意:BL31:v2.8 (release):v2.8-226-g2fcd408bb3-dirty
    通知:BL31:建造时间:2023年1月13日00:42:57
    I/TC:
    I/TC: OP-TEE 版本: 3.20.0 (GCC 版本11.3.0 (GCC))#1周五一月20 15:42:54 UTC 2023 AArch64
    I/TC:警告:此 OP-TEE 配置可能不安全!
    I/TC:警告:请检查 optee.readthedocs.io/.../porting_guidelines.html
    I/TC:主 CPU 正在初始化
    I/TC:SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    I/TC:Huk 已初始化
    I/TC:已激活 SA2UL 器件
    I/TC:为 SA2UL TRNG 器件启用防火墙
    I/TC:SA2UL TRNG 已初始化
    I/TC:SA2UL 驱动程序已初始化
    I/TC:主 CPU 切换到正常全局启动

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    ########## Puma SPL 板初始化######
    尝试从 eth 设备引导
    ETH1:以太网@8000000port@2
    以太网@8000000port@2等待 PHY 自动协商完成 停止更新
    在端口2上建立链路、速度为100、全双工
    BOOTP 广播1.
    BOOTP 广播2.
    BOOTP 广播3.
    DHCP 客户端绑定到地址192.168.1.13(760 ms)
    使用以太网@8000000port@2器件
    来自服务器192.168.1.11的 TFTP;我们的 IP 地址为192.168.1.13
    文件名"u-boot.img"。
    载入地址:0x82000000
    正在加载:##################################################出:####################出
    ################################################################个##############
    ################################################################个##############
    ##################################################
    316.4 KiB/s
    停止更新
    传输的字节= 1159075 (11afa3十六进制)
    GET_DEVICE_TYPE ()= 4
    TI_SECURE_CERT_DETECTED (* p_image) TRUE 或 FALSE? 1.
    身份验证已通过
    GET_DEVICE_TYPE ()= 4
    TI_SECURE_CERT_DETECTED (* p_image) TRUE 或 FALSE? 1.
    身份验证已通过


    U-Boot 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)

    SoC:AM64X SR2.0 HS-FS
    模型:德州仪器 AM642 EVM
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    DRAM:1 GiB
    NAND:0 MiB
    MMC@fa10000: 0, MMC@fa00000: 1.
    正在从 FAT 中加载环境... ***警告- CRC 错误,使用默认环境

    输入:串行@2800000
    输出:串行@2800000
    ERR:串行@2800000
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    INVALID_EEPROM 错误!
    U-boot 检测到 ETH 引导设备!!
    NET:eth1:以太网@8000000port@2.
    按任意键以停止自动引导:0
    =>

    Br

    雅各布

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

    尊敬的 Jakub:

    感谢您提供这些额外的背景知识。 我更仔细地看了看,似乎这里有不同的问题。 我还注意到您所指向的路径( meta-ti-bsp/classes/uboot-sign-legacyhs.bbclass )是我们的 Kirkstone 开发分支的参考,该分支尚未得到官方支持(但将在几个月内),但基本上相同的文件驻留在当前基于 Dunfell 的 SDK 上  meta-Arago/meta-Arago-dastro/classes/uboot-sign.bclass 。 我会建议坚持使用邓弗尔的分支机构,直到柯克斯通已被提升到目前的生产。

    警告:未检测到图像签名证书。 跳过身份验证以防止启动失败。 这将在安全强制(HS-SE)设备上失败[/报价]

    当 U-Boot 检测到特定二进制构件缺少基于 TI 器件的(通过公共 ROM 密钥和 TIFS 固件)身份验证过程所需的证书时、将会发出这些警告。 如果您在 Yocto 树中搜索、这些工件 会通过调用  不同配方中的${TI_SECURE_DEV_PKG}/scripts/secure-binary-image.sh 而得到签名。 通过定义 指向 TI 提供的安全开发包的 TI_SECURE_DEV_PKG_K3环境变量(请注意、内部发生了 TI_SECURE_DEV_PKG ="${TI_SECURE_DEV_PKG_K3}"的重新分配、Yocto 构建知道此脚本的位置和使用的私钥 meta-ti/conf/machine/include/* ,所以不要让这迷惑你。  TI_SECURE_DEV_PKG_K3是需要在外部/外壳级进行定义的内容)。 另请参阅此处 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1223948/processor-sdk-am62x-yocto-build-for-am62x-evm/4621670#4621670 如果正确设置、您将不会再收到这些 U-Boot 警告消息。

    [报价 userid="530134" url="~/support/processors-group/processors/f/processors-forum/1222210/tmds64gpevm-warning-did-not-detect-image-signing-certificate/4618717 #4618717"]那么此食谱的用途是什么: meta-ti-bsp/classes/uboot-sign-legacyhs.bbclass [/报价]

    它的主要目的似乎是支持 U-Boot 自有验证启动过程(https://github.com/u-boot/u-boot/blob/master/doc/uImage.FIT/verified-boot.txt)、这是一个附加的安全层。 可以通过将  uBoot_sign_enable 设置为"1"来激活该方案、但这在当前的 TI SDK 中似乎未使用。 它还允许将 FIT 配置部分包含在其他验证和签名步骤中、从而帮助抵御"混合和匹配"攻击。 另请参阅此处了解相关博文: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1213395/am64x-question-about-fit-image-signature/4598510#4598510  如果您必须使 U-Boot 经过验证的引导功能正常工作、我可以尝试使用其中的一些功能、但 SDK 尚不支持它作为 SDK 的一部分、因此我将限制我可以在这方面花费多少时间/精力。

    此致、Andreas

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

    尊敬的 Jakub:

    我还有机会与开发人员进一步讨论这一点、我们即将推出的基于 Kirkstone 的 SDK 将支持通过 Yocto/U-Boot 方式对 FIT 映像和配置节点进行签名/身份验证、这意味着使用  uBoot_sign_enable ="1"方法。 该软件目前正在进行积极的开发、从易于使用和固件更新的角度而言、需要考虑几个权衡因素。 我希望此产品能 在几周内推出并在公共 TI Kirkstone 树上发售。 目前、您应该使用现有的基本方法、通过  secure-binary-image.sh 签名各个图像伪影、所有这些都返回到 TI 器件特定的身份验证方法。

    此致、Andreas

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

    您好、Andreas

    感谢您的全面回答。

    关于此 U-Boot 警告:

    当 U-Boot 检测到特定二进制工件缺少基于 TI 器件(通过公共 ROM 密钥和 TIFS 固件)的身份验证过程所需的证书时,将发出这些警告。 如果您在 Yocto 树中搜索、这些工件 会通过调用  不同配方中的${TI_SECURE_DEV_PKG}/scripts/secure-binary-image.sh 而得到签名。 通过定义 指向 TI 提供的安全开发包的 TI_SECURE_DEV_PKG_K3环境变量(请注意、内部发生了 TI_SECURE_DEV_PKG ="${TI_SECURE_DEV_PKG_K3}"的重新分配、Yocto 构建知道此脚本的位置和使用的私钥 meta-ti/conf/machine/include/* ,所以不要让这迷惑你。  TI_SECURE_DEV_PKG_K3是需要在外部/外壳级别定义的内容[/报价]

    1、我下载的主分支  core-secdev-k3 ( 来自此处 https://git.ti.com/cgit/security-development-tools/core-secdev-k3)

    2.我设置  TI_SECURE_DEV_PKG_K3  可根据此处的信息(https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_06_00_42/exports/docs/linux/Foundational_Components/U-Boot/UG-General-Info.html)在 shell 中变化

     export TI_SECURE_DEV_PKG_K3=`pwd`/core-secdev-k3

    我还向 u-boot.bbappend 食谱中添加了一些 python 匿名函数、以打印此变量(只是为了确保正确设置变量)

    python() {
        TA = d.getVar('TI_SECURE_DEV_PKG_K3',True)
        bb.warn("TI_SECURE_DEV_PKG_K3: %s" % TA)
    }

    是这样的。

    3.构建映像并将 tispl.bin、tiboot3.bin 和 u-boot 复制到 tftp 文件夹中,以便通过以太网引导板(使用 fitImage)

    4.引导中的日志如下所示。 看起来没有什么变化... 仍然有一个警告。 为什么有三个消息"通过身份验证"和一个警告? 我假设这些消息对应于 tispl.bin、tisboot3.bin 的身份验证。 但第三个和第四个消息是什么呢?

    我是否错过了某个步骤?

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    冷启动时重置到权变措施 ErrataID:i2331
    正在重置...

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    ESM 主初始化失败:-19
    ESM MCU 初始化失败:-19
    SPL 初始堆栈使用量:13408字节
    ########## Puma SPL 板初始化######
    尝试从 eth 设备引导
    ETH1:以太网@8000000port@2
    以太网@8000000port@2等待 PHY 自动协商完成 停止更新
    在端口2上建立链路、速度为100、全双工
    BOOTP 广播1.
    BOOTP 广播2.
    BOOTP 广播3.
    DHCP 客户端绑定到地址192.168.1.19 (1264 ms)
    使用以太网@8000000port@2器件
    来自服务器192.168.1.14的 TFTP;我们的 IP 地址为192.168.1.19
    文件名"tispl.bin"。
    载入地址:0x82000000
    正在加载:##################################################出:####################出
    ################################################################个##############
    ######################################################################个##################
    416 KiB/s
    停止更新
    传输的字节= 934923 (e440b 十六进制)
    身份验证已通过
    警告:未检测到图像签名证书。 跳过身份验证以防止启动失败。 这将在安全强制(HS-SE)设备上失败
    身份验证已通过
    身份验证已通过
    不支持来自器件4的 init_env!
    在 ARM64内核上启动 ATF...

    注意:BL31:v2.8 (release):v2.8-226-g2fcd408bb3-dirty
    通知:BL31:建造时间:2023年1月13日00:42:57
    I/TC:
    I/TC: OP-TEE 版本: 3.20.0 (GCC 版本11.3.0 (GCC))#1周五一月20 15:42:54 UTC 2023 AArch64
    I/TC:警告:此 OP-TEE 配置可能不安全!
    I/TC:警告:请检查 optee.readthedocs.io/.../porting_guidelines.html
    I/TC:主 CPU 正在初始化
    I/TC:SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    I/TC:Huk 已初始化
    I/TC:已激活 SA2UL 器件
    I/TC:为 SA2UL TRNG 器件启用防火墙
    I/TC:SA2UL TRNG 已初始化
    I/TC:SA2UL 驱动程序已初始化
    I/TC:主 CPU 切换到正常全局启动

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    ########## Puma SPL 板初始化######
    尝试从 eth 设备引导
    ETH1:以太网@8000000port@2
    以太网@8000000port@2等待 PHY 自动协商完成 停止更新
    在端口2上建立链路、速度为100、全双工
    BOOTP 广播1.
    BOOTP 广播2.
    DHCP 客户端绑定到地址192.168.1.19 (258ms)
    使用以太网@8000000port@2器件
    来自服务器192.168.1.14的 TFTP;我们的 IP 地址为192.168.1.19
    文件名"u-boot.img"。
    载入地址:0x82000000
    正在加载:################## T ######################################################################出"##########################
    ################################################################个##############
    ################################################################个##############
    ##################################################
    126 KiB/s
    停止更新
    传输的字节= 1158619 (11addb hex)
    身份验证已通过
    身份验证已通过


    U-Boot 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)

    SoC:AM64X SR2.0 HS-FS
    模型:德州仪器 AM642 EVM
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    DRAM:1 GiB
    NAND:0 MiB
    MMC@fa10000: 0, MMC@fa00000: 1.
    正在从 FAT 中加载环境... 好的
    输入:串行@2800000
    输出:串行@2800000
    ERR:串行@2800000
    EEPROM 的数据速率为80、试图读取的数据速率为81
    在0x51处读取板载 EEPROM 失败-1
    INVALID_EEPROM 错误!
    U-boot 检测到 ETH 引导设备!!
    NET:eth1:以太网@8000000port@2.
    按任意键以停止自动引导:0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    引导日志如下。 看起来没有什么变化... 仍然有一个警告。 [/报价]

    与您的原始日志相比、这看起来很好、我不同意、另外还有一些"通过身份验证"消息、并且(几乎)没有关于证书缺失的投诉。 所以你大多在那里!

    4. 引导中的日志如下所示。 看起来没有什么变化... 仍然有一个警告。 为什么有三个消息"通过身份验证"和一个警告? 我假设这些消息对应于 tispl.bin、tisboot3.bin 的身份验证。 但是第三条和第四条消息是什么?

    很多启动 blobs、比如 tispl.bin 实际上是适合图像(或者更正确的是 ITB、它代表图像树叶)、其中包含多个单独的二进制图像。 要进行身份验证的内容以及消息的相关内容是其中的每一个映像 tispl.bin 等等。

    您可以解码并检查的内容 tispl.bin 就像这样(示例)。 同样的方法适用于 u-boot.img

    a0797059@dasso:~/tftpboot
    $ dtc -I dtb tispl-am64x.bin -O dts | cut -c -80
    /dts-v1/;
    
    / {
            timestamp = <0x642f1f96>;
            description = "Configuration to load ATF and SPL";
            #address-cells = <0x01>;
    
            images {
    
                    atf {
                            data = [30 82 06 6d 30 82 04 55 a0 03 02 01 02 02 14 6f 51 28 ff 40 84 72 32
                            description = "ARM Trusted Firmware";
                            type = "firmware";
                            arch = "arm64";
                            compression = "none";
                            os = "arm-trusted-firmware";
                            load = <0x701c0000>;
                            entry = <0x701c0000>;
                    };
    
                    tee {
                            data = [30 82 06 6d 30 82 04 55 a0 03 02 01 02 02 14 46 0e 6e 04 40 70 52 9e
                            description = "OPTEE";
                            type = "tee";
                            arch = "arm64";
                            compression = "none";
                            os = "tee";
                            load = <0x9e800000>;
                            entry = <0x9e800000>;
                    };
    
                    dm {
                            data;
                            description = "DM binary";
                            type = "firmware";
                            arch = "arm32";
                            compression = "none";
                            os = "DM";
                            load = <0x89000000>;
                            entry = <0x89000000>;
                    };
    
                    spl {
                            data = <0x3082068c 0x30820474 0xa0030201 0x2021407 0xe2380e90 0xb2a90abb 0x16
                            description = "SPL (64-bit)";
                            type = "standalone";
                            os = "U-Boot";
                            arch = "arm64";
                            compression = "none";
                            load = <0x80080000>;
                            entry = <0x80080000>;
                    };
    
                    fdt-1 {
                            data = <0x3082068b 0x30820473 0xa0030201 0x2021436 0x49e2ed2a 0x82a8a33c 0xce
                            description = "k3-am642-evm";
                            type = "flat_dt";
                            arch = "arm";
                            compression = "none";
                    };
    
                    fdt-2 {
                            data = <0x3082068b 0x30820473 0xa0030201 0x2021438 0x88050683 0x5100ac7d 0x93
                            description = "k3-am642-sk";
                            type = "flat_dt";
                            arch = "arm";
                            compression = "none";
                    };
    
                    fdt-3 {
                            data = [30 82 06 8b 30 82 04 73 a0 03 02 01 02 02 14 6d 15 b7 6b 7b e2 04 1c
                            description = "k3-am642-evm-nand overlay";
                            type = "flat_dt";
                            arch = "arm";
                            compression = "none";
                    };
            };
    
            configurations {
                    default = "conf-1";
    
                    conf-1 {
                            description = "k3-am642-evm";
                            firmware = "atf";
                            loadables = "tee\0dm\0spl";
                            fdt = "fdt-1";
                    };
    
                    conf-2 {
                            description = "k3-am642-sk";
                            firmware = "atf";
                            loadables = "tee\0dm\0spl";
                            fdt = "fdt-2";
                    };
    
                    conf-3 {
                            description = "k3-am642-evm-nand";
                            firmware = "atf";
                            loadables = "tee\0dm\0spl";
                            fdt = "fdt-1\0fdt-3";
                    };
            };
    };

    字节传输= 934923 (e440b 十六进制)
    身份验证已通过
    警告:未检测到图像签名证书。 跳过身份验证以防止启动失败。 这将在安全强制(HS-SE)设备上失败
    身份验证已通过
    身份验证已通过
    不支持来自器件4的 init_env!
    在 ARM64内核上启动 ATF...

    您可以通过打开如下所示的调试打印来跟踪缺少签名证书的工件。 和与的转储相关联的图像尺寸/地址 tispl.bin 如上所示。

    a0797059@dasso:~/git/u-boot (ti-u-boot-2021.01)
    $ git diff
    diff --git a/arch/arm/mach-k3/security.c b/arch/arm/mach-k3/security.c
    index 092588f4b5..5ede615de6 100644
    --- a/arch/arm/mach-k3/security.c
    +++ b/arch/arm/mach-k3/security.c
    @@ -6,6 +6,8 @@
      *     Andrew F. Davis <afd@ti.com>
      */
    
    +#define DEBUG
    +
     #include <asm/io.h>
     #include <common.h>
     #include <cpu_func.h>

    启用调试打印后、您将获得 "正在地址验证映像..." 以及 "正在验证大小的映像..." 您的引导日志中的语音消息。 让我知道哪个映像会受到影响、然后我们可以确定如何对其进行签名。

    此致、Andreas

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

    您好 Andreas  

    谢谢您的提示。 我  做了如你所说的。我必须修改 security.c 才能​​正确显示地址值。 ​​如下面的日志所示、显示64位值时出现一些问题。 我将 image_addr 拆分为两个32位部分、然后显示。

    实际上、很难根据 tispl.bin blob 判断导致此警告的图像部分。 地址和 blob 大小不适合"反编译"tispl.bin 中的任何信息。 但这个 OPTEE 警告" 警告:此 OP-TEE 配置可能不安全" 让我不知道 fitImage 的开票部分是否没有签名。

    您是否发现任何更"可疑"的情况可能是引发此警告的根本原因? 是否有任何其他方法可以确定 tispl 纤维性的哪个部分引起问题?

    Br  

    雅各布

    /dts-v1/;
    
    
    
    / {
    
    	timestamp = <0x63f55a45>;
    	description = "Configuration to load ATF and SPL";
    	#address-cells = <0x01>;
    
    	images {
    
    
    		atf {
    
    			data = <0x3082068c 0x30820474 0xa0030201 0x2021402 0xd3229848 0x5bcac1b1 0xff
    			description = "ARM Trusted Firmware";
    			type = "firmware";
    			arch = "arm64";
    			compression = "none";
    			os = "arm-trusted-firmware";
    			load = <0x701c0000>;
    			entry = <0x701c0000>;
    
    		};
    
    
    
    		tee {
    
    			data = <0xf30300aa 0xf40302aa 0xc07f0010 0xc018d5 0xdf3f03d5 0x1038d5 0x74b2 
    			description = "OPTEE";
    			type = "tee";
    			arch = "arm64";
    			compression = "none";
    			os = "tee";
    			load = <0x9e800000>;
    			entry = <0x9e800000>;
    
    		};
    
    
    
    		dm {
    
    			data;
    			description = "DM binary";
    			type = "firmware";
    			arch = "arm32";
    			compression = "none";
    			os = "DM";
    			load = <0x89000000>;
    			entry = <0x89000000>;
    
    		};
    
    
    
    		spl {
    
    			data = <0x3082068c 0x30820474 0xa0030201 0x2021407 0xb872e487 0xf57c1804 0x7e
    			description = "SPL (64-bit)";
    			type = "standalone";
    			os = "U-Boot";
    			arch = "arm64";
    			compression = "none";
    			load = <0x80080000>;
    			entry = <0x80080000>;
    
    		};
    
    
    
    		fdt-1 {
    
    			data = [30 82 06 8b 30 82 04 73 a0 03 02 01 02 02 14 1a 09 68 cf 3c 1f f5 0f 
    			description = "k3-am642-evm";
    			type = "flat_dt";
    			arch = "arm";
    			compression = "none";
    
    		};
    
    
    
    		fdt-2 {
    
    			data = <0x3082068b 0x30820473 0xa0030201 0x202143e 0x608e9e06 0x63277e03 0xa4
    			description = "k3-am642-sk";
    			type = "flat_dt";
    			arch = "arm";
    			compression = "none";
    
    		};
    
    
    
    		fdt-3 {
    
    			data = [30 82 06 8b 30 82 04 73 a0 03 02 01 02 02 14 3d 33 c4 8f dd c6 cf b2 
    			description = "k3-am642-evm-nand overlay";
    			type = "flat_dt";
    			arch = "arm";
    			compression = "none";
    
    		};
    
    	};
    
    
    
    	configurations {
    
    		default = "conf-1";
    
    
    
    		conf-1 {
    
    			description = "k3-am642-evm";
    			firmware = "atf";
    			loadables = "tee\0dm\0spl";
    			fdt = "fdt-1";
    
    		};
    
    
    
    		conf-2 {
    
    			description = "k3-am642-sk";
    			firmware = "atf";
    			loadables = "tee\0dm\0spl";
    			fdt = "fdt-2";
    
    		};
    
    
    
    		conf-3 {
    
    			description = "k3-am642-evm-nand";
    			firmware = "atf";
    			loadables = "tee\0dm\0spl";
    			fdt = "fdt-1\0fdt-3";
    
    		};
    
    	};
    
    };

    引导过程中的日志:

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    芯片地址:51
    芯片地址:51
    芯片地址:51
    在0x51处读取板载 EEPROM 失败-1
    冷启动时重置到权变措施 ErrataID:i2331
    正在重置...

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    芯片地址:51
    芯片地址:51
    芯片地址:51
    在0x51处读取板载 EEPROM 失败-1
    SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    ESM 主初始化失败:-19
    ESM MCU 初始化失败:-19
    SPL 初始堆栈使用量:13408字节
    ########## Puma SPL 板初始化######
    尝试从 eth 设备引导
    ETH1:以太网@8000000port@2
    以太网@8000000port@2等待 PHY 自动协商完成 停止更新
    在端口2上建立链路、速度为100、全双工
    BOOTP 广播1.
    BOOTP 广播2.
    BOOTP 广播3.
    BOOTP 广播4.
    BOOTP 广播5.
    DHCP 客户端绑定到地址192.168.1.19 (7884 ms)
    使用以太网@8000000port@2器件
    来自服务器192.168.1.14的 TFTP;我们的 IP 地址为192.168.1.19
    文件名"tispl.bin"。
    载入地址:0x82000000
    正在加载:##################################################出:####################出
    ################################################################个##############
    ######################################################################个##################
    477.5 KiB/s
    停止更新
    传输的字节= 936523 (e4a4b 十六进制)
    在地址0x00000000 | 0x8071b630处验证映像
    对地址0x0000000000000000x 处的映像进行身份验证
    验证大小为49832字节的映像
    身份验证已通过
    警告:未检测到图像签名证书。 跳过身份验证以防止启动失败。 这将在安全强制(HS-SE)设备上失败
    在地址0x00000000 | 0x80794344处验证映像
    对地址0x0000000000000000x 处的映像进行身份验证
    对大小为401944字节的映像进行身份验证
    身份验证已通过
    在地址0x00000000 | 0x807f6608处验证映像
    对地址0x0000000000000000x 处的映像进行身份验证
    验证大小为17399字节的映像
    身份验证已通过
    不支持来自器件4的 init_env!
    在 ARM64内核上启动 ATF...

    注意:BL31:v2.8 (release):v2.8-226-g2fcd408bb3-dirty
    通知:BL31:建造时间:2023年1月13日00:42:57
    I/TC:
    I/TC: OP-TEE 版本: 3.20.0 (GCC 版本11.3.0 (GCC))#1周五一月20 15:42:54 UTC 2023 AArch64
    I/TC:警告:此 OP-TEE 配置可能不安全!
    I/TC:警告:请检查 optee.readthedocs.io/.../porting_guidelines.html
    I/TC:主 CPU 正在初始化
    I/TC:SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    I/TC:Huk 已初始化
    I/TC:已激活 SA2UL 器件
    I/TC:为 SA2UL TRNG 器件启用防火墙
    I/TC:SA2UL TRNG 已初始化
    I/TC:SA2UL 驱动程序已初始化
    I/TC:主 CPU 切换到正常全局启动

    U-Boot SPL 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)
    EEPROM 的数据速率为80、试图读取的数据速率为81
    芯片地址:51
    芯片地址:51
    芯片地址:51
    在0x51处读取板载 EEPROM 失败-1
    SYSFW ABI:3.1 (固件版本0x0008'8.6.4--v08.06.04 (Chill Capybar')
    ########## Puma SPL 板初始化######
    尝试从 eth 设备引导
    ETH1:以太网@8000000port@2
    以太网@8000000port@2等待 PHY 自动协商完成 停止更新
    在端口2上建立链路、速度为100、全双工
    BOOTP 广播1.
    BOOTP 广播2.
    DHCP 客户端绑定到地址192.168.1.19 (260 ms)
    使用以太网@8000000port@2器件
    来自服务器192.168.1.14的 TFTP;我们的 IP 地址为192.168.1.19
    文件名"u-boot.img"。
    载入地址:0x82000000
    正在加载:##################################################出:####################出
    ################################################################个##############
    ################################################################个##############
    ############################################################
    315.4 KiB/s
    停止更新
    传输的字节= 1201191 (125427十六进制)
    在地址0x00000000 | 0x806dac68处验证映像
    对地址0x0000000000000000x 处的映像进行身份验证
    验证大小为1124104字节的映像
    身份验证已通过
    在地址0x00000000 | 0x807ed444处验证镜像
    对地址0x0000000000000000x 处的映像进行身份验证
    对大小为35999字节的映像进行身份验证
    身份验证已通过


    U-Boot 2021.01-g4a2944651e (Feb 21 2023 - 23:56:53 +0000)

    SoC:AM64X SR2.0 HS-FS
    模型:德州仪器 AM642 EVM
    EEPROM 的数据速率为80、试图读取的数据速率为81
    芯片地址:51
    芯片地址:51
    芯片地址:51
    在0x51处读取板载 EEPROM 失败-1
    DRAM:1 GiB
    NAND:0 MiB
    MMC@fa10000: 0, MMC@fa00000: 1.
    正在从 FAT 中加载环境... 好的
    输入:串行@2800000
    输出:串行@2800000
    ERR:串行@2800000
    am65_cpsw_nuss 以太网@8000000:k3 CPSW:nuss_ver:0x6BA00903 cpsw_ver:0x6BA80903 ale_ver:0x00294104端口:2 MDIO_freq:1000000
    EEPROM 的数据速率为80、试图读取的数据速率为81
    芯片地址:51
    芯片地址:51
    芯片地址:51
    在0x51处读取板载 EEPROM 失败-1
    INVALID_EEPROM 错误!
    U-boot 检测到 ETH 引导设备!!
    NET:eth1:以太网@8000000port@2.
    按任意键以停止自动引导:0
    =>
    =>

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

    您好 Andreas  

    我知道这个问题-它是由 OPTEE 引起的。 在我们的 Yocto 项目中、我们使用的是自定义机器。 我已经添加了.bbappend 食谱  optee-os_3.16%.bbappend:  

    do_compile:append:puma() {
        optee_sign_k3hs
    }
    
     

    现在、每个团块都正确进行了身份验证。  

    感谢您的帮助:)