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.

[参考译文] AM3352:TFTP 加载错误

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/837613/am3352-tftp-load-error

器件型号:AM3352

您好!

我收到以下错误,TFTP 错误:正在尝试覆盖保留的内存...


这会弹出、因为在 net/tftp.c 文件中已启用 CONFIG_LMB、现在它会检查存储器是保留还是空闲地址。
我想知道、如果可以配置保留/空闲地址、我可以从哪里配置它。

供参考、请参考以下补丁、  

用例:当 NAND 为空时、我尝试通过 USB-ETH 将 SPL 和 u-boot 加载到 RAM 中。

通过在 net/tftp.c 中取消对 CONFIG_LMB 的定义(避免检查保留的存储器区域)、这种方法可以正常工作。
但是、我希望有一个适当的解决方案来解决这个问题。

请允许我知道这个内存地址是如何被标记为保留或空闲的。 因此、我可以使用 RAM 的可用存储器区域加载文件。

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

    您好!

    您所引用的代码超出了 TI 对 U-Boot 的贡献范围。 您所引用的补丁不是 TI 提供的、因此我们无法对此进行评论。 以下是一些可能有助于跟踪问题的建议:

    -查看此链接、它与您提交的补丁有关、但维护人员/审核人员和开发人员之间有许多关于该补丁的来回电子邮件、这些邮件可以提供有关该补丁的更多见解。

    扩展的修补程序链接

    -我建议将#define 调试添加到 lib/LMB.c 文件中、这应该会在 LMB 上输出调试信息。

    -我不知道 LMB 存储器大小的配置(这并不意味着没有任何配置)、但看看您的电路板的存储器大小与您可能用于设计基础的 TI EVM。 LMB 大小可能来自板内存大小、这是我从上面的链接中获取的一个 I 提示。 这假设定制电路板具有更大的存储器、但 U-Boot 是针对 EVM 大小进行配置的。  

    此致、

    Schuyler

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

    Schuyler、您好、

    感谢您的快速回复。

    [引用用户="Schuyler Patton"

    您好!

    您所引用的代码超出了 TI 对 U-Boot 的贡献范围。 您所引用的补丁不是 TI 提供的、因此我们无法对此进行评论。 以下是一些可能有助于跟踪问题的建议:

    -查看此链接、它与您提交的补丁有关、但维护人员/审核人员和开发人员之间有许多关于该补丁的来回电子邮件、这些邮件可以提供有关该补丁的更多见解。

    扩展的修补程序链接

    -我建议将#define 调试添加到 lib/LMB.c 文件中、这应该会在 LMB 上输出调试信息。

    [/报价]

    是的、我这么做了、我将再次深入检查。


    [引用用户="Schuyler Patton"

    -我不知道 LMB 存储器大小的配置(这并不意味着没有任何配置)、但看看您的电路板的存储器大小与您可能用于设计基础的 TI EVM。 LMB 大小可能来自板内存大小、这是我从上面的链接中获取的一个 I 提示。 这假设定制电路板具有更大的存储器、但 U-Boot 是针对 EVM 大小进行配置的。

    此致、

    Schuyler

    [/报价]

    我将再次尝试检查存储器配置、然后找出它。

     

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

    Schuyler、您好、

    我目前正在跟进这一情况、我已经通过从 tftp.c 中调用 lMB_dump_all 来调试了 LMB、它说 RAM 大小在 SPL 阶段是未知的、但在 u-boot 阶段显示正确、

    请查看以下日志、

    在 SPL 阶段获取的日志、

    使用 USB_ether 设备
    来自服务器172.17.0.1的 TFTP;我们的 IP 地址为172.17.0.2
    文件名'u-boot.img'。
    LMB_dump_All:
    memory.cnt = 0x0
    memory.size = 0xx
    保留.cnt = 0x0
    reserved.size = 0xx
    load_addr:0x82000000
    TFTP 错误:正在尝试覆盖保留的内存...
    使用 BOOTP 引导时出现问题

    在 u-boot 阶段获取的日志、

    使用 USB_ether 设备
    来自服务器172.17.0.1的 TFTP;我们的 IP 地址为172.17.0.2
    文件名'LO'。
    LMB_dump_All:
    memory.cnt = 0x1
    memory.size = 0x0
    memory.reg[0x0].base = 0x8000000
    .size = 0x10000000
    保留.cnt = 0x1
    reserved.size = 0x0
    reserved.reg[0x0].base = 0x8df2ab98
    .size = 0x20d5468

    LOAD_addr:0x80200000

    据我了解,AM335x-*-u-boot.dtsi 是 u-boot-spl.bin 在配置选项设置为 of_embed 时使用的唯一文件,对吗?
    如果是、则存储器信息不在此处定义、而是仅在 AM335x-*.DTS 文件中定义。 因此、RAM 详细信息随 u-boot 提供、但不随 SPL 提供。

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

    Schuyler、您好、

    我已经在 BeagleBone Black 上进行了相同的测试。 遗憾的是、Beagle Bone Black 的 SPL 级或 SPL 级中使用的 blob 也没有已知 RAM 大小、这在 BBB 中也会产生以下误差、

    TFTP 错误:正在尝试覆盖保留的内存...

    我认为、TI 应该在下一个 u-boot 版本中记下这一点、因为如果不在 SPL 中配置 RAM 大小或使 LMB 知道 SPL 中的 RAM 大小、器件就无法从以太网引导、 由于 SPL 必须将 u-boot 加载到 RAM 上、因此 tftp 会抛出一个错误、表示它无法写入 RAM、因为在 tftp 将文件下载到 RAM 上之前、LMB 会进行存储器检查。

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

    您好!

    您是否在带 USB eth 的 BBB 上看到过这种情况、或者您是否正在使用电路板上的以太网连接器?

    此致、

    Schuyler

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

    [引用用户="Schuyler Patton"
    您是否在带 USB eth 的 BBB 上看到过这种情况、或者您是否正在使用电路板上的以太网连接器?
    [/报价]

    我已经使用 USB-ETH 进行了测试。 但是,这应该没有依赖权吗?
    根据我的理解、使用 USB eth 或以太网连接器、下一步是执行 tftp、tftp 具有 LMB 检查、这在 SPL 阶段失败。

    供参考、
    我的设置是使用 USB-ETH ->尝试从 TFTP 服务器加载 SPL 和 U-boot 的 BBB。
    ROM 代码从 TFTP 加载 SPL、现在 SPL 位于 RAM 中、并尝试从 TFTP 加载 U-boot、但现在失败了。

    据我了解、LMB 检查不适用于 SPL 级中的 AM335x 板。
    我不确定这在多大程度上适用于整个 AM33XX 系列。
    我是否应该向社区发送补丁,以进一步讨论此问题?

    在 net/tftp.c 中、它应该有点像这样、

    #if defined (CONFIG_SPL_Build)&& defined (CONFIG_AM33XX)
    #undef CONFIG_LMB
    #endif 

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

    您好!

    很抱歉耽误您的回答。 我目前无法访问源代码、但您具有配置检查(net/tftp.c)的文件通常位于社区可能拒绝特定架构依赖项的区域中。 我将在内部检查您的建议是否值得推荐。

    此致、

    Schuyler  

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

    Schuyler、您好、

    是的、我想这不是一个好主意、可以通过 net/tftp.c 来检查一下、但不知怎么、我坚持简单的方法、而不是标准的方法。 我最近刚开始使用 u-boot、我还在学习很多相关知识。

    我还认为、还有一种解决此问题的方法、即提供一种在 SPL 阶段读取存储器大小和保留区域的机制、并更新 lib/LMB.c 以处理 fdtblob 不可用的情况。

    感谢您的支持。