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.

[参考译文] AM625:AM62x 安全启动:更改 MMC 环境后重新启动循环和终端挂起

Guru**** 2568565 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1562513/am625-am62x-secure-boot-reboot-loop-and-terminal-hang-after-changing-mmc-environment

器件型号:AM625


工具/软件:

您好 TI 支持团队:

在刷写 HSSE 映像并成功刷写 ext4 文件系统后、我在安全启动过程中遇到了 AM62x 问题。

当我运行以下命令时:

setenv mmcdev 0
setenv bootpart 0
saveenv
boot

主板成功引导一次、然后自动重新引导 2-3 次。 重新引导后、终端输出在引导期间中间挂起、系统无响应。
如果您对如何诊断和解决此问题有任何见解或建议、我将不胜感激。

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

    您能分享一下日志吗?

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

    e2e.ti.com/.../6840.logs.txt

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

    即使是在这些日志中、我也看不到电路板完全启动。 在 HSFS 状态下、内核是否成功引导? 如果是、请在共享这些日志(如果可用)后分享。

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

    您好:
    是的、我们之前已在 HSFS 状态下成功引导内核。 但是、很遗憾、这些引导日志现在不可用。 如果需要、我们可以再次尝试重现相同的设置以收集日志。

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

    您能共享这些命令的输出吗

    => mmc dev 0 0
    => mmc part

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

    => mmc dev 0 0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: EFI
    
    Part	Start LBA	End LBA		Name
    	Attributes
    	Type GUID
    	Partition GUID
      1	0x00000022	0x01da3fde	"rootfs1"
    	attrs:	0x0000000000000000
    	type:	ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    	guid:	8b6dc503-c456-4c7b-8f1d-8c49ba48dea7
    

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

    分区看起来不错。 以下命令的输出如何?

    => run init_mmc
    => run get_fit_mmc
    => run run_fit

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

    您好:

    => run init_mmc
    => run get_fit_mmc
    8408718 bytes read in 63 ms (127.3 MiB/s)
    => run run_fit
    conf-: No match
    ## Loading kernel from FIT Image at 90000000 ...
    Could not find configuration node
    ERROR: can't get kernel image!
    

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

    您的 A53 U-Boot 环境似乎存在一些问题。 请共享“printenv"命令“命令的输出。

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

    e2e.ti.com/.../4431.printenv.txt

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

    它们与默认环境变量大不相同。 不确定如何修改所有这些环境变量。 您能否从 HSFS 设备共享成功的引导日志?

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

    您好、

    根据您从 HSFS 设备成功引导日志的请求 、我想说明我们正在使用 虚拟密钥 、并且设备当前已设置为安全启动。 但是、从那以后、我们对引导加载程序和映像设置进行了一些更改。

    如果需要、我可以 恢复到以前正常工作的引导加载程序和文件系统设置 这是从器件进入时的转换速率 HSFS 模式 、并捕获完整的引导日志以供查看。

    请确认:

    1. 是否希望我们从重新生成引导日志 HSFS 状态 使用较旧的引导加载程序/映像?

    2. 如果是、请您确认是否 要恢复或确保器件处于 HSFS 模式、需要执行任何特定步骤 (例如,保险丝或引导加载程序配置更改)?

    确认后、我将按照步骤操作并提供完整的日志。

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

    您好:
    我们以前无法 使用的 8.6GB EXT4 根文件系统刷新dfu-util—可能是由于主机端或工具的限制。
    作为权变措施、我们最初刷写了一个更小的 2GB rootfs 映像。
    现在、我们已经使用其他机器通过 DFU 成功刷写了完整的 8.6GB EXT4 文件系统。

    之后、我们尝试启动电路板、但仍然会进入未完成的引导循环、并且终端输出在启动过程中中途挂起。
    我们将连接 DFU util 终端的输出(从刷写引导加载程序,文件系统,EXT4 和 saveenvironment、boot)、printenv 和您宝贵分享的命令。
    e2e.ti.com/.../USBDFU_5F00_ter_5F00_output.txt

    e2e.ti.com/.../7242.printenv.txt

    => mmc dev 0 0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: EFI
    
    Part    Start LBA       End LBA         Name
            Attributes
            Type GUID
            Partition GUID
      1     0x00000022      0x01da3fde      "rootfs1"
            attrs:  0x0000000000000000
            type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
            guid:   8b6dc503-c456-4c7b-8f1d-8c49ba48dea7
    => run init_mmc
    => run get_fit_mmc
    10511473 bytes read in 75 ms (133.7 MiB/s)
    => run run_fit
    conf-: No match
    ## Loading kernel from FIT Image at 90000000 ...
    Could not find configuration node
    ERROR: can't get kernel image!


    问题:
    1.我们需要吗 在 EXT4 根文件系统上签名 (或在中包括散列)fitImage作为 HSSE 模式下安全启动流程的一部分?
    2. 您能否查看我们当前的环境和分区输出,看看是否有什么配置错误?

    如果您想了解 更多详情、敬请告知。

    感谢您的持续支持。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 我们需要吗 在 EXT4 根文件系统上签名 (或在中包括散列)fitImage作为 HSSE 模式下安全启动流程的一部分?

    请参阅: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/11_01_05_03/exports/docs/linux/Foundational_Components_Kernel_Users_Guide device.html#creating-the-kernel-fitimage-for-high-security-device-gp-devices

    2.  您能否查看我们当前的环境和分区输出以查看是否有任何配置错误?

    您的 A53 U-Boot 环境存在问题。 之前共享的“printenv"输出“输出没有“get_fif_mc"变量“变量、因为 U-Boot 日志显示其正在成功运行

    => run get_fit_mmc
    10511473 bytes read in 75 ms (133.7 MiB/s)

    这甚至是不可能的。 可能您没有正确地共享输出。

    另一个例子是、最后一个响应中的“printenv"输出“输出与您分享的一些响应有很大不同。 如果您不更改设置、则不应存在这些不一致之处。

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

    您好、

    我已经进行了电路板引导、现在到达登录提示符。 但是、我遇到了一个与相关的问题 适合映像引导 我想报告、以防它相关或需要修复。

     问题总结:

    • 我尝试使用run run_fit命令进行引导。

    • 环境变量被重置为默认值(,然后,)env default -asaveenvreset

    • 我设置必要的变量、如:

      setenv name_fit fitImage
      setenv addr_fit 0x90000000
      load mmc 0:1 ${addr_fit} /boot/${name_fit}
      

    • 然后我跑了:
      run run_fit
      


      但我收到了以下错误:
      conf-: No match
      ## Loading kernel from FIT Image at 90000000 ...
         Using 'conf-ti_k3-am625-sk.dtb' configuration
         Verifying Hash Integrity ... fit_config_verify_required_keys: No signature node found: FDT_ERR_NOTFOUND
      Bad Data Hash
      ERROR: can't get kernel image!
      


      解决方法(目前):

      我能够通过禁用 FIT 映像验证来引导系统:


      setenv verify no
      saveenv
      boot
      

      之后、电路板启动顺利并达到:
      b2qt-am62xx-evm login:
      


      我需要以下方面的帮助:

      1. 为什么会run run_fit失败 哈希/签名错误 显示在 FIT 图像上?

      2. SDK 生成的 FIT 图像不完整或无符号

      请告诉我应该共享哪些日志或文件来帮助进一步调试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么run run_fit失败 哈希/签名错误 在适合图像上?

    您的 A53 U-Boot 很可能没有验证 fitImage 所需的签名节点。 请确保在生成 fitImage 后重建 A53 U-Boot、如下所述:

    software-dl.ti.com/.../Foundational_Components_Kernel_Users_Guide.html

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

    如果您有疑问、请查看 SDK 的顶级 makefile 如何生成 fitImage 并重新编译 A53 U-Boot

    github.com/.../Makefile_linux

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

    您好、
    我遵循了您分享的指南并创建了签名fitImage.itb.also rebuild the A53 U-Boot
     。我想确认我当前的刷写方法是否.itb正确、或者是否有更好的推荐方法。

    业务范围:
    fitImage.itb使用以下命令从主机 PC 使用 DFU 刷写文件:

    sudo dfu-util -a fitImage -D fitImage.itb
    

    有时传输会开始(达到~20%)、但随后失败、并出现以下错误:

    DFU state(10) = dfuERROR, status(14) = Something went wrong, but the device does not know what it was
    

    有时、DFU 根本不检测器件。

    问题是:
       -fitImage.itb在 AM62x 上使用安全启动时、这是否是正确的刷写方法?   
       是否需要更改 U-Boot 配置(例如增加 DFU 缓冲区大小)才能支持刷写大型已签名.itb文件?

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

    目前、请仅更换 A53 U-Boot。 如果它确实有一个签名节点、则引导应继续进行。

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

    您好:

    按照您之前有关使用已签名时基故障内核映像启用安全启动的指导、此处提供了详细的状态更新、概述了到目前为止所遵循的所有步骤以及我们当前面临的问题。

    安装环境

    • 我们从基于虚拟机的环境迁移到专用的 Linux 机器。

    • 我们重复使用了与 之前设置相同的 Processor SDK 和 MCU+ SDK 版本。 并  在 Linux 计算机上从 OTP 密钥写入开始执行所有步骤

    • 根文件系统rootfs.ext4 () 是来自另一台计算机的自定义构建、fitImage.itb/boot/在刷写之前、我们手动装载并在目录中添加。

    拟合图像创建

    • 我们按照您提供的安全启动时基故障映像链接中的步骤操作、但.itb在 SDK 文件夹之外的单独工作目录中创建了该文件。

    • 我们  在 SDK 中找不到可用的内核签名密钥、因此我们生成了自己的:

      • kernel-key.pem(私钥)

      • kernel-cert.pem(X.509 证书)

        使用:
        openssl genpkey -algorithm RSA -out kernel-key.pem -pkeyopt rsa_keygen_bits:2048
        openssl req -new -x509 -key kernel-key.pem -out kernel-cert.pem -days 3650 -subj "/CN=dummy/"
        
    • 然后、我们fitImage.itb使用创建了签名mkimage、引用了此密钥和证书。

    U-Boot 配置更改

    我们编辑了以下配置文件:

    configs/am62x_evm_a53_defconfig
    

    并添加了:

    CONFIG_FIT_SIGNATURE=y
    CONFIG_RSA=y
    CONFIG_OF_SEPARATE=y
    


    然后重建 A53 U-Boot 启用这些设置后、使用 DFU 刷写了必要的引导加载程序组件。

    刷写和引导设置

    • 签名的fitImage.itb/boot/文件复制在 EXT4 根文件系统的目录内 然后刷写

    • 我们通过 DFU 将引导加载程序和根文件系统刷写到 eMMC。

    • U-Boot 环境变量的更新如下:

      setenv kernel_fit_image fitImage.itb
      setenv mmcdev 0
      setenv bootpart 0
      saveenv
      

    当前问题

    尽管 FIT 映像正确签名并显示在预期位置 (/boot/fitImage.itb) 中、但电路板进入 启动循环 复位后。

    我们确认:

    • U-Boot 在启用了 FIT_SIGNATURE 和 RSA 选项的情况下重建。

    • kernel_fit_image=fitImage.itb是否正确设置。

    • .itb/boot在刷写 EXT4 映像之前、中存在。

    但是、器件无法启动并持续重新启动。

    为了您的参考、请连接 printenv 输出和终端日志。
    e2e.ti.com/.../2313.printenv.txt

    e2e.ti.com/.../1665.terminal_5F00_log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们  在 SDK 中找不到可用的内核签名密钥、因此我们生成了自己的:

    但为什么呢?

    文档夹提到了 U-Boot 中的密钥路径、它们与 Keywriter 中打包的默认密钥相同。

    [quote userid=“665541" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1562513/am625-am62x-secure-boot-reboot-loop-and-terminal-hang-after-changing-mmc-environment/6047874 并添加:

    不知道为什么要启用这些配置。 我在文档中的任何位置都没有提到它们。

    setenv kernel_fit_image fitImage.itb

    为什么要设置这些自定义环境变量? 如果在 printenv 输出中搜索“kernel_fit_image",“,它、它甚至不会在任何地方使用。

    请遵循文档操作。 如果其中有一些不明确的内容,那么请随时提出。 这里真正需要的只是使用文档中提到的`mkimage`命令作为原样。

    如果您使用的是 Processor SDK 安装程序、则甚至无需手动执行此操作。 您可以使用顶级 makefile 来构建 Linux、该 makefile 将执行所有操作、包括构建 Linux、生成 fitImage 和重新编译 U-Boot。

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

    您好、

    感谢您的答复。 请允许我澄清我们所遵循的步骤及其背后的推理:

    不同应用 提供 ti-processor-sdk-linux-am62xx-evm-09_01_00_08、我们参考了相应的文档:
    3.2.1.用户指南—Processor SDK AM62x 文档

    根据文档、SDK 包含一些内容 预构建的贴合图像 其中包含默认的内核和 DTB 文件。 它还提到开发人员可能想要部署和测试新的内核和 dtb 文件、而无需经过完整的标准构建系统、为此、 特定于电路板的fitImage.its文件 prebuilt-images目录中提供。

    我们最初尝试使用记录的mkimage命令:

    mkimage -r -f fitImage.its -k $UBOOT_PATH/arch/arm/mach-k3/keys -K $UBOOT_PATH/build/$ARMV8/dts/dt.dtb fitImage
    


    但是、我们发现目录$UBOOT_PATH/arch/arm/mach-k3/ (keys)是这样的 不存在 加密功能。 因此、我们搜索了 TI 文档和在线资源、以了解如何继续。 基于此、我们使用以下命令生成自己的签名密钥和证书:

    openssl genpkey -algorithm RSA -out kernel-key.pem -pkeyopt rsa_keygen_bits:2048
    openssl req -new -x509 -key kernel-key.pem -out kernel-cert.pem -days 3650 -subj "/CN=dummy/"
    


    我们用它们来创建签名的fitImage.itb

    关于 U-Boot 配置更改(例如,,,)CONFIG_FIT_SIGNATURECONFIG_RSACONFIG_OF_SEPARATE、我们根据 web 指导添加了这些更改、假设它们是 FIT 图像签名验证所必需的。  

    我们还创建了一个 U-Boot 环境变量kernel_fit_imagefitImage.itb,以指向我们的自定义,假设它是必需的。 您已经明确表示未使用该方法、我们将恢复使用记录的方法。

    为了更清楚地进行、您能否帮助澄清:

    正确的答案是什么 适用于 ARMv8 的 U-Boot 构建目录 意味着什么吗?




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

    您好:

    我一直使用fitImage.its TI 文档中提供的文件作为构建时基故障映像的参考。 最初、在使用所提供的.its文件时、我在此mkimage过程中遇到语法错误。

    我修改了该.its文件以解决这些语法错误。 虽然regranges编译过程中仍然会出现与不带或属性的单位名称相关的警告、但拟合图像会成功创建。

    我随附了修改后的fitImage.its文件以供您参考。

    e2e.ti.com/.../fitImage_5F00_its.txt

    您能否审核修改并确认此.its文件是否正确且适合使用? 此外,如果建议进一步更改以解决警告,请告知。

    /ti/board-support/ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti$ mkimage -r -f ../ti-u-boot-2023.04+gitAUTOINC+f9b966c674/fitImage.its -k /home/renu/ti/board-support/ti-u-boot-2023.04+gitAUTOINC+f9b966c674/board/ti/keys -K /home/renu/ti/board-support/ti-u-boot/out/a53/dts/dt.dtb fitImage -v
    ../ti-u-boot-2023.04+gitAUTOINC+f9b966c674/fitImage.its:8.18-20.11: Warning (unit_address_vs_reg): /images/kernel@1: node has a unit name, but no reg or ranges property
    ../ti-u-boot-2023.04+gitAUTOINC+f9b966c674/fitImage.its:22.15-32.11: Warning (unit_address_vs_reg): /images/fdt@1: node has a unit name, but no reg or ranges property
    ../ti-u-boot-2023.04+gitAUTOINC+f9b966c674/fitImage.its:37.16-40.11: Warning (unit_address_vs_reg): /configurations/conf@1: node has a unit name, but no reg or ranges property
    mkimage: verify_header failed for FIT Image support with exit code 1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一直使用fitImage.its TI 文档中提供的文件作为构建 FIT 镜像的参考。

    请使用已安装 SDK 中已经提供的 fitImage 其文件、路径为:board-support/prebuilt-images/am62xx-evm/fitImage-its-am62xx-EVM

    请一次浏览 SDK 顶层 makefile 来构建 Linux 内核和 fitImage。 在这里、它仅使用预编译文件夹中的 fitImage 及其文件来生成 fitImage、然后重新构建 U-Boot。

    github.com/.../Makefile_linux

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

    您好:

    根据您的建议、我已使用创建了适合图像 fitImage-its-am62xx-evm.
    The FIT image was successfully generated. and I rebuild U-Boot accordingly

    also copy generated fitImage.itb and mount fitImage.itb on rootfs.EXT4 /boot

    Then Flash Bootloader, Filysystem and rootfs.EXT4.

    change the switch mode and set the environment

    setenv mmcdev 0
    setenv bootpart 0
    saveenv 

    Issue:
    Despite the FIT image being correctly make and present in the expected location (/boot/fitImage.itb), the board enters a boot loop after reset.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尽管正确制作了 FIT 图像并显示在预期位置 (/boot/fitImage.itb)

    U-Boot 环境变量采用硬编码、以使用名称“fitImage"(“(而(而不是 fitImage.itb“)引导此映像。

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

    您好:
    仍会进入引导循环。

    ERROR: image is not a fdt - must RESET the board to recover.
    FDT creation failed!
    resetting ...


    我们已重置 U-boot 环境变量“fitImage"</s>“
    setenv mmcdev 0
    setenv bootpart 0
    saveenv 


    我们得到如下引导日志:  

    U-Boot SPL 2023.04-dirty (Sep 29 2025 - 18:41:36 +0530)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    MMC: no card present
    ** Bad device specification mmc 1 **
    Couldn't find partition mmc 1:1
    Error: could not access storage.
    Trying to boot from MMC1
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-dirty (Sep 29 2025 - 18:41:36 +0530)
    
    SoC:   AM62X SR1.0 HS-SE
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -1
    DRAM:  no bloblist found!2 GiB
    Core:  72 devices, 32 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from MMC... OK
    In:    serial
    Out:   serial
    Err:   serial
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -1
    Net:   Could not get PHY for ethernet@8000000port@1: addr 0
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_connect() failed
    No ethernet found.
    
    Hit any key to stop autoboot:  0 
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Can't set block device
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    13505186 bytes read in 91 ms (141.5 MiB/s)
    name_fit_config=conf-ti_k3-am625-sk.dtb
    ## Loading kernel from FIT Image at 90000000 ...
       Using 'conf-ti_k3-am625-sk.dtb' configuration
       Verifying Hash Integrity ... sha512,rsa4096:custMpk+ OK
       Trying 'kernel-1' kernel subimage
         Description:  Linux kernel
         Type:         Kernel Image
         Compression:  gzip compressed
         Data Start:   0x900000f4
         Data Size:    13441552 Bytes = 12.8 MiB
         Architecture: AArch64
         OS:           Linux
         Load Address: 0x81000000
         Entry Point:  0x81000000
         Hash algo:    sha512
         Hash value:   39c66c57a7d0c2f61a326f6cf15abec16f24a0fd4c4161a0067cc2ca4643f4085acc76baf0cfe683efedac2fe472c14c9604a757dd00b8798a1abe5b8c8845ca
       Verifying Hash Integrity ... sha512+ OK
    ## Loading fdt from FIT Image at 90000000 ...
       Using 'conf-ti_k3-am625-sk.dtb' configuration
       Verifying Hash Integrity ... sha512,rsa4096:custMpk+ OK
       Trying 'fdt-ti_k3-am625-sk.dtb' fdt subimage
         Description:  Flattened Device Tree blob
         Type:         Flat Device Tree
         Compression:  uncompressed
         Data Start:   0x90cd1c38
         Data Size:    61551 Bytes = 60.1 KiB
         Architecture: AArch64
         Load Address: 0x83000000
         Hash algo:    sha512
         Hash value:   55daf156a24a3b725bb493b4dcd6f587c4face585fea8f4a5761f28b6235c1487e01c543295d369d966b18f5c8349dedb6a59c0a11479abaa73ba80b9a047e02
       Verifying Hash Integrity ... sha512+ OK
       Loading fdt from 0x90cd1c38 to 0x83000000
       Booting using the fdt blob at 0x83000000
    Working FDT set to 83000000
       Uncompressing Kernel Image
    ERROR: image is not a fdt - must RESET the board to recover.
    FDT creation failed!
    resetting ...
    

    下面是引导目录的屏幕截图



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

    构建 fitImage 所使用的内核映像的大小是多少?

    如果大于 32MB、引导将失败、因为内核加载到 0x8000000、而 DTB 加载到 0x83000000、为内核映像提供的最大大小仅为 32MB。

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

    您好、

    感谢您指出这一点。

    我们进行了检查、内核映像大小大约为 39MB 、这确实超过了默认加载地址(对于内核和 DTB)之间的 32MB 限制0x810000000x83000000。 这可能是我们遇到的引导循环的原因。

    另外、请注意、我们 尚未优化内核映像 —它目前是一个完整的构建,没有任何尺寸缩减措施。

    您能否提供有关处理此问题的建议方法的建议?

    • 我们是否应该修改内核加载地址以适应更大的映像?

    • 如果是、U-Boot 侧需要进行哪些更改?

    • 或者、建议减小内核大小吗?

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

    尝试在 fitImage 其文件中将 DTB 加载地址更改为 0x84000000、该文件允许内核映像使用 48MB。 不需要进行其他更改。

    或者、建议减小内核大小吗?

    SDK v9.2 中的默认内核映像为 19MB、因此您可能需要了解为什么要使用此大内核映像。

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

    按照建议、我将fitImage.its文件中的 dtb 加载地址更新为0x84000000、以便为内核映像留出更多空间 (48MB)、大约为 39MB。 但是、进行此更改后、电路板仍然无法启动、而是会进入引导循环。 我观察到与之前相比、引导日志输出发生了变化、因此我会附加当前引导日志以供参考。

    U-Boot SPL 2023.04-dirty (Sep 30 2025 - 12:17:54 +0530)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    MMC: no card present
    ** Bad device specification mmc 1 **
    Couldn't find partition mmc 1:1
    Error: could not access storage.
    Trying to boot from MMC1
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-dirty (Sep 30 2025 - 12:17:54 +0530)
    
    SoC:   AM62X SR1.0 HS-SE
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -1
    DRAM:  no bloblist found!2 GiB
    Core:  72 devices, 32 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from MMC... OK
    In:    serial
    Out:   serial
    Err:   serial
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -1
    Net:   Could not get PHY for ethernet@8000000port@1: addr 0
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_connect() failed
    No ethernet found.
    
    Hit any key to stop autoboot:  0 
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Can't set block device
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    13505186 bytes read in 91 ms (141.5 MiB/s)
    name_fit_config=conf-ti_k3-am625-sk.dtb
    ## Loading kernel from FIT Image at 90000000 ...
       Using 'conf-ti_k3-am625-sk.dtb' configuration
       Verifying Hash Integrity ... fit_config_verify_required_keys: No signature node found: FDT_ERR_NOTFOUND
    Bad Data Hash
    ERROR: can't get kernel image!
    switch to partitions #0, OK
    mmc0(part 0) is current device
    Scanning mmc 0:1...
    MMC: no card present
    No EFI system partition
    No EFI system partition
    Failed to persist EFI variables
    "Synchronous Abort" handler, esr 0x96000044
    elr: 00000000808590c0 lr : 000000008085905c (reloc)
    elr: 00000000fff5f0c0 lr : 00000000fff5f05c
    x0 : 00000000fdefdf40 x1 : ffffffffff700000
    x2 : fffffffffffca000 x3 : 0000000000000000
    x4 : 0000000000000000 x5 : 0000000000000000
    x6 : 00000000fdefdf40 x7 : 0000000000000000
    x8 : 00000000fded7160 x9 : 0000000000000008
    x10: 0000000000002004 x11: 00000000fded427c
    x12: 0000000000001fd0 x13: 0000000000000000
    x14: 00000000fded7160 x15: 0000000000000002
    x16: 00000000fff5f0f0 x17: 0000000000000000
    x18: 00000000fdee6d80 x19: 0000000000000000
    x20: 00000000fdeea650 x21: 00000000fded4570
    x22: 00000000fffb5acf x23: 0000000000000002
    x24: 00000000fffe4eb4 x25: 0000000000000000
    x26: 0000000000000000 x27: 0000000000000000
    x28: 00000000fdf03210 x29: 00000000fded4510
    
    Code: f9401001 8b020022 eb02003f 54fffec2 (b8004433) 
    Resetting CPU ...
    
    resetting ...
    
    



    我们也按照您分享的 git 链接中提到的步骤进行操作:  
    https://github.com/TexasInstruments/ti-tisdk-makefile/blob/c8bfe68594d542edec981a87a289f5eb6beadc50/makerules/Makefile_linux#L13

    该链接我们使图像和 Image.gz Image.gz 的大小约为 13MB  
    我们使用 Image.gz 使大小为 13MB 的 FitImage 也生成了大小为 13MB 的 FitImage  

    # Build FitImage
        cd $(LINUXKERNEL_INSTALL_DIR) ; cp arch/arm64/boot/Image.gz ./linux.bin ; cd .


    image.gz 大小约为 13MB、远低于 32MB 限制。 鉴于此、是否仍然有必要将 DTB 加载地址更改为 0x84000000?

    我们确实按照建议更改了地址、但遗憾的是、系统仍进入引导循环。

      

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

    ##从 FIT 映像加载内核 90000000 ...
    使用“conf-ti_k3-am625-sk.dtb"配置“配置
    正在验证哈希完整性... fit_config_verify_required_keys:未找到签名节点:FDT_ERR_NOTFOUND

    您应该会看到此处的故障签名与原始签名相同、这意味着 U-Boot 映像中不存在签名节点。 可能是您未正确构建或刷写 U-Boot 映像。

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

    您好:
    在构建 A53 U-boot 之前、我们会清理 U-boot 目录、然后编译 u-boot

    这是我们用于清理目录的命令:

    $ make ARCH=arm CROSS_COMPILE=/home/renu/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- distclean O=/home/renu/ti/board-support/ti-u-boot/out/a53/

    我们将使用此命令构建 A53 U-boot  
    $ make ARCH=arm CROSS_COMPILE=/home/renu/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- am62x_evm_a53_defconfig O=/home/renu/ti/board-support/ti-u-boot/out/a53/
    
    
    $ make ARCH=arm CROSS_COMPILE=/home/renu/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- BL31=/home/renu/ti/board-support/prebuilt-images/am62xx-evm/bl31.bin TEE=/home/renu/ti/board-support/prebuilt-images/am62xx-evm/bl32.bin  O=/home/renu/ti/board-support/ti-u-boot/out/a53/ BINMAN_INDIRS=/home/renu/ti/board-support/prebuilt-images/am62xx-evm/
    



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

    应该清楚的是、清理 U-Boot 会恢复之前由`mkimage`命令所做的更改。 您需要再次执行 mkimage 过程。

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

    您好:

    我们再次执行 mkimage 过程、然后引导器件验证哈希完整性并启动内核、内核开始加载、但它在 somsommid 中卡住了日志。 器件不会进一步引导。  

    附加引导日志以供参考:
    e2e.ti.com/.../print_5F00_env_5F00_log.txt 

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

    您能否分享用于生成 fitImage 的 Linux 内核和 DTB 映像?

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

    e2e.ti.com/.../Image.gz

    e2e.ti.com/.../6445.k3_2D00_am625_2D00_sk.dtb.txt

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

    这不是用于构建 fitImage 的 dtb 文件。 您可以检查共享 DTB 的大小与  日志中提到的 fitImage 解析的 DTB(数据大小:59528 字节= 58.1KiB)的大小不匹配。

    您能否确保分享正确的图像集?

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

    您好、Prashant、

    感谢您指出 dtb 文件存在问题。 我之前提供的版本没有进行嵌入式硬件更改。 我们意识到我们使用的是 TI 生成的 DTB 而不是我们的定制 DTB、这导致了这个问题。

    我们通过用定制的 dtb 覆盖 fitImage 中使用的 dtb、重建 fitImage 和 U-Boot、然后重新刷写电路板、从而纠正这一问题。
    我很高兴地告诉大家、系统现已推出 正在引导成功 天哪!

    感谢您的持续支持。

    现在、我想了解一些有关的内容 安全启动 和进一步发展:

    1. 我们应该如何支持测试和验证安全启动? 是否有任何相关的 TI 官方文档或指南?

    2. 我们如何创建并刷写自己的密钥? 您能否分享与此流程相关的任何分步文档或链接?

    3. 安全启动的关键安全优势是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid=“665541" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1562513/am625-am62x-secure-boot-reboot-loop-and-terminal-hang-after-changing-mmc-environment/6053917 我们应该如何支持测试和验证安全启动? 是否有任何相关的 TI 官方文档或指南?

    如果使用随机有效密钥对映像签名、则映像不会引导。 这是验证安全启动是否正常工作的方法。

    [报价 userid=“665541" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1562513/am625-am62x-secure-boot-reboot-loop-and-terminal-hang-after-changing-mmc-environment/6053917 我们如何创建并刷写自己的密钥? 您能否分享与此流程相关的任何分步文档或链接?

    生成自定义密钥是用户的责任。 限制条件是密钥必须为 RSA 4K。 作为参考、Keywriter 证书生成脚本支持“-g"标志“标志来生成自定义密钥。

    安全启动的关键安全系数是什么?

    顾名思义、安全启动可确保正在启动的映像是正确的且不会损坏。 这是一个通用概念。 您可以在互联网上搜索更多信息。

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

    您能否请与客户密钥共享任何有关 Keywriter 证书生成的参考文档。

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

    请参阅 OTP Keywriter 用户指南的“参考命令“一节。 它介绍了用于生成证书的不同命令。