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:错误:保留 FDT 内存区域失败

Guru**** 2573915 points
Other Parts Discussed in Thread: AM625

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1548866/am625-error-reserving-fdt-memory-region-failed

器件型号:AM625


工具/软件:

您好:

电路板启动后、将显示这些日志

错误:保留 FDT 内存区域失败 (addr=xxxxxxxx size=xxxxxxxx flags=4 )
错误:保留 FDT 内存区域失败 (addr=xxxxxxxx size=xxxxxxxx flags=4 )
错误:保留 FDT 内存区域失败 (addr=xxxxxxxx size=xxxxxxxx flags=4 )
错误:保留 FDT 内存区域失败 (addr=xxxxxxxx size=xxxxxxxx flags=4 )
错误:保留 FDT 内存区域失败 (addr=xxxxxxxx size=xxxxxxxx flags=4 )

我在 uboot 中检查了代码:

Uboot 加载内核的 DTB、我们添加了保留存储器区域。

在 uboot 中、它会运行

image_setup_linux----- >if(config_is_enable(of_LIBFDT))------- >

BOOT_FDT_ADD_mem_RSV_REGIONS----------------- >

BOOT_FDT_RESERVET_REGION ------------------------ >

lmb_reserve_flasg-------------------- >

LMB_add_region_flags

在 LMB_add_region_flags 中、我的保留存储器区域的标志为 LMB_NOMAP、但 RGN->region[0]的标志为 LMB_none

因此它返回–1。

我们如何解决这些误差?

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

    您好、Tom。

    请附加完整引导日志。

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

    ##平展的设备树 blob、地址为 0xXXXXXXXX  

      使用位于 0xXXXXXXXX 的 FDT blob 进行引导  

    工作 FDT 设置为 0xXXXXXXXX  

      正在将 Ramdisk 加载到 xxxxxx、结束 xxxxxxx… 好的

    错误:保留 FDT 存储器区域失败 (addr=9cc00000 size=e00000 flags=4)

      正在将设备树加载到 xxxxxxx、结束 xxxxxxx 好的

    工作 FDT 设置为 0xXXXXXXXX  

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

    您需要查看*full*控制台日志。

    顺便说一下、如何在日志中获得“0xXXXXXXXXXXXX “? 我以前从未见过这种情况。

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

    ##展开的设备树 blob 为 88000000
    使用位于 0x88000000 的 FDT blob 进行引导
    工作 FDT 设置为 88000000
    正在将 Ramdisk 加载到 8f15e000、结束 8ffffa3d ...正常
    错误:保留 FDT 存储器区域失败 (addr=9cb00000 size=100000 flags=4)
    错误:保留 FDT 存储器区域失败 (addr=9cc00000 size=e00000 flags=4)
    错误:保留 FDT 存储器区域失败 (addr=9da00000 size=100000 flags=4)
    错误:保留 FDT 存储器区域失败 (addr=9db00000 size=c00000 flags=4)
    错误:保留 FDT 存储器区域失败 (addr=9e800000 size=1800000 flags=4)
    正在将设备树加载到 000000008f14d000、结束 000000008f15d4fd ...正常
    工作 FDT 设置为 8f14d000

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

    e2e.ti.com/.../boot_5F00_up_5F00_crash.zip

    尊敬的 Bin:

    这是启动日志。

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

    您好、Tom、

    日志中包含有关 SPINAND 和 GPMC 的消息。 电路板从哪个 AM625 接口引导?

    日志还包含以下消息。

      DRAM: 448 MIB(有效值 512 MIB)

    您的电路板似乎具有 512MB DDR、但 U-Boot 仅配置为 448MB。 您如何确切地将 U-Boot 配置为在 U-Boot 中删除此 64MB DDR? 您是 在 defconfig 中使用了 CONFIG_SYS_MEM_TOP_HIDE 还是其他内容?

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

    是、我们使用 CONFIG_SYS_MEM_TOP_HIDE 来删除 u-boot 中的 64M

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

    是什么让您决定 64M 编号?

    从 512MB 的顶部移除 64MB 后、上部 DDR 地址为 0x9C000000。 然后、FDT 中的那些保留地址超出范围、原因是它们在保留时将失败。

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

    您好 Bin:

    如果我们不移除这一点、电路板将无法启动。

    为此、我们与 Yong 进行了检查。

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

    亲爱的汤姆。

    1.请参阅此票证 AM623:UBoot 无法n‘t 在我们的客户板 — 处理器论坛-处理器 — TI E2E 支持论坛中正常引导

    使用  CONFIG_SYS_MEM_TOP_HIDE=0x02500000 进行测试

    2.如果仍有问题、请共享您的代码更改(配置文件“configs/am62x_lpsk_a53_defconfig",“,uboot、uboot dts 和完整日志)。

    非常感谢!

    Yong

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

    尊敬的 Yong:

    我认为 Bin 是对的。

    对于 512M DDR、范围为 0x80000000 - 0xA0000000

    如果我们移除 64M、范围为  0x80000000 - 0x9C000000  

    保留的存储器偏移量在 0x9C000000 之后

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

    亲爱的汤姆。

    是的、请在该 TT 中查看 Bin 的答案、

    请帮助尝试测试 CONFIG_SYS_MEM_TOP_HIDE=0x02500000。

    并在仍有问题时提供日志和代码。

    非常感谢!

    Yong

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

    尊敬的 Yong:

    我将 CONFIG_SYS_MEM_TOP_HIDE=0x02500000 更改为 但仍然具有日志

    错误:保留 FDT 内存区域失败

    此票证要解决这些错误保留内存日志。我们可以正常启动内核和 rootfs。但有时可能会像另一个票证那样崩溃。

    启动时、u-boot 显示了这些错误日志、但在内核和 rootfs 中、这些是重新发送存储器区域的。

    但我们要验证这些错误日志是否正确? 如果不正确、如何解决?

    e2e.ti.com/.../change_5F00_CONFIG_5F00_SYS_5F00_MEM_5F00_TOP_5F00_HIDE_5F00_log.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    、但有时可能会像另一个 TT 一样崩溃。

    内核未崩溃时、请附加完整的控制台引导日志。

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

    尊敬的 Bin:

    我无法附加完整日志。

    我们在内核和 rootfs 启动时添加到内核 DTS 中的保留存储器区域都被保留

    但当 uboot 解析这些保留的内存区域时、只显示这些错误日志

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

    亲爱的汤姆。

    1.什么类型的崩溃? 哪种类型的保留内存区域更改导致此崩溃?

    正如 Bin 提到的、完整的内核日志对于检查崩溃问题非常有帮助。 让我们首先检查碰撞、并检查是否需要进一步调查。

    [引用 userid=“7730" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1548866/am625-error-reserving-fdt-memory-region-failed/5982885
    但有时可能会像另一张票一样坠毁。

    内核未崩溃时、请附加完整的控制台引导日志。

    [/报价]

    2.我准备了一个调试补丁来显示 LMB 中的 LOD。 您是否将其应用到 uboot、然后提供日志?

    还有一件事,请运行 bdinfo 如下所示。 它将显示一些有关电路板配置的信息。

    按任意键停止自动引导:0
    =>
    => bdinfo

    e2e.ti.com/.../0001_2D00_am62xx_2D00_sdk10.1_2D00_add_2D00_debug_2D00_code_2D00_for_2D00_lmb.patch

    非常感谢!

    Yong

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

    亲爱的汤姆。

    请 查看并提供反馈。 谢谢你。

    [报价 userid=“355179" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1548866/am625-error-reserving-fdt-memory-region-failed/5983085

    1.什么类型的崩溃? 哪种类型的保留内存区域更改导致此崩溃?

    正如 Bin 提到的、完整的内核日志对于检查崩溃问题非常有帮助。 让我们首先检查碰撞、并检查是否需要进一步调查。

    但有时可能会像另一张票一样坠毁。

    内核未崩溃时、请附加完整的控制台引导日志。

    2.我准备了一个调试补丁来显示 LMB 中的 LOD。 您是否将其应用到 uboot、然后提供日志?

    还有一件事,请运行 bdinfo 如下所示。 它将显示一些有关电路板配置的信息。

    按任意键停止自动引导:0
    =>
    => bdinfo

    0001-am62xx-sdk10.1-add-debug-code-for-LMB.patch

    [/报价]

    Yong

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

    亲爱的汤姆。

    是否有任何更新?

    如果您仍然面临问题、请告知我们、或者我们能否在本周结束?

    非常感谢!

    Yong

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

    全部、

    如果使用  CONFIG_SYS_MEM_TOP_HIDE 要在 SDK v10.x 的上下文中启用 512MB 操作、请参阅以下“错误:保留 FDT 存储器区域失败“错误消息是无害的、可以忽略这些错误消息。 您可以使用以下补丁来抑制这些噪声。 另请注意 我在补丁提交消息中添加的解释/理由:

    $ git show
    commit 06cdd82cb1dfac20bea2370d4fa77d13e60f2dbe (HEAD -> ti-u-boot-2024.04-512mb-dev)
    Author: Andreas Dannenberg <dannenberg@ti.com>
    Date:   Tue Oct 7 02:29:05 2025 -0500
    
        fdt: Skip reserving fdt memory regions located in hidden top region
        
        During kernel/OS boot U-Boot tries to reserve the memory regions that are
        declared as such in the OS' device tree file to prevent them from getting
        overwritten during the boot process. This however causes harmless error
        messages getting output during boot in case we have already used the
        CONFIG_SYS_MEM_TOP_HIDE feature to reserve the overall region containing
        the to-be-reserved region and make sure its excluded from use. Hence, in
        such cases simply skip the extra U-Boot reservation step.
        
        Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
    
    diff --git a/boot/image-fdt.c b/boot/image-fdt.c
    index d97727dce24..eacdc174e31 100644
    --- a/boot/image-fdt.c
    +++ b/boot/image-fdt.c
    @@ -75,6 +75,14 @@ static void boot_fdt_reserve_region(struct lmb *lmb, uint64_t addr,
     {
            long ret;
     
    +       if (addr >= gd->ram_top &&
    +           addr + size <= gd->ram_top + CONFIG_SYS_MEM_TOP_HIDE) {
    +               debug("   skip reserving fdt memory region in hidden top region: addr=%llx size=%llx flags=%x\n",
    +                               (unsigned long long)addr,
    +                               (unsigned long long)size, flags);
    +               return;
    +       }
    +
            ret = lmb_reserve_flags(lmb, addr, size, flags);
            if (ret >= 0) {
                    debug("   reserving fdt memory region: addr=%llx size=%llx flags=%x\n",

    另一种方法是使用 SDK v11.1 中的 U-Boot、它不再使用  CONFIG_SYS_MEM_TOP_HIDE  为了支持具有 512MB 内存的板、而是重新定位 OPTEE 和其他工件、以便 U-Boot 可以将自身重新定位到 512MB 内存范围的顶部、而不会出现任何问题、从而避免“隐藏“该内存以及相关的复杂性。

    您可以查看以下补丁、了解如何在 SDK v11.1 中启用 512MB。

    * 待定:板:am62x:为 am6254xxl 添加 env 文件
    * 待定:配置:为 am6254xxl 添加 defconfigs
    * 待定:ARM:DTS:在 R5 SPL 处添加对 am6254xxl 的支持

    此致、Andreas