TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] PROCESSOR-SDK-AM64X:从 DDR 运行时、LWIP 堆栈 Enet 初始化崩溃

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1246589/processor-sdk-am64x-lwip-stack-enet-initialization-crash-when-running-from-ddr

器件型号:PROCESSOR-SDK-AM64X
主题中讨论的其他器件:SysConfig

尊敬的支持部门:

我们在将 Enet 堆栈放入 DDR 存储器时遇到了问题、这存在于我们大部分昂贵的电路板上。

问题是、初始化仅在第3次或第4 次尝试时成功。 我们 在 MSRAM 内部时没有看到这个问题、我们仍然能够通过将一半堆栈放入 MSRAM 来屏蔽它、但使用链接器文件的.text、.rodata 和.data 除外。

我的问题是、是否可以从 DDR 运行 LWIP 和 Enet 完成? 我们认为 DDR 不存在问题、因为它通过了我们的 memtests。

初始化 通常 在使用 HwiP_undefined_handler 时失败、在使用 Hwip_prefeting_abort_handler 和 Hwip_data_abort_handler 时失败。

当我回溯时、它在 CPSW 初始化或 Enet phy 初始化时也同样失败。

我们还怀疑 这是由以太网 phy-s DMA 引起的、因为这些缓冲器也被放入到 DDR 中。 这是原因吗?

您能否就导致此问题的原因提出任何解决方案?

格尔格利

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

    您好!

    感谢您的提问。

    我将就此进行检查并回来与您联系。

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:有没有关于此主题的新闻?

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

    尊敬的 Marc:

    很抱歉等了很久。

    它也应该通过 DDR 工作。  

    您能帮助我在设置上重现问题并进行最起码的更改吗?

    比如说、

    • 我可以使用 SDK 8.6.0.45开始?
    • 您在这里指的是哪种测试案例?
    • 为了重现此问题,我需要哪些代码更改?
      • 例如链接器文件更改?
      • 是否有任何其他文件更改?

    您是否可以进入并发送快照导致错误的代码部分?

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    由于我们使用不同的 DDR4芯片(专有硬件)、因此复制工作可能会很困难。 我们使用的是 SDK 8.5.0.24与 CCS 12.2.0。

    测试用例源自 enet_cpsw_rawhttpserver、但此后发生了大量更改;并添加了额外内容。

    由于崩溃只会冻结运行 ENET 的 R5内核、并且这是唯一部分通过 DDR 运行的内核;我们怀疑 DDR4访问是与此相关的。 但是、使用 DDR 作为数据缓冲区(TFTP 的文件缓冲区、FW 升级缓冲区或 DDR 应力测试等)时、我们不会立刻发现问题。

    问题:
    -审查 DDR 参数和配置(等待我们的应用工程师,详细信息可用),

    -在 DDR 中是否允许 DMA (我们是否应该筛选出所有 DMA 数据/代码并放置在 MSRAM 中? 这是一个非常乏味的过程,我们已经尝试过;但这里没有解决方案。

    此致、
    马克

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

    尊敬的 Ashwani:

    现在、我已切换到较新的(8.6.0.45) SDK、有时在初始化之前也会看到问题。 也就是说、代码会在  
    void MPU_SECTION MpuP_ENABLE (void)
    在断言中发挥作用。

    这也只出现在使用以太网的内核上。

    关于您的问题:

    • 我可以使用 SDK 8.6.0.45开始?

    我在使用较新的和较旧的 SDK 时都看到了这两种情况下的问题。

    • 您在这里指的是哪种测试案例?

    我主要通过顺序写入和读取进行测试、但 没有进行随机读取结束写入。

    • 为了重现此问题,我需要哪些代码更改?  
      • 例如链接器文件更改?
      • 是否有任何其他文件更改?

    我不确定链接器文件是否有更改、但我将在下提供相关内容。

    我想在坠机后、零件中只有变化。 除此之外、我还需要说明的是、由于我们是在客户电路板上运行的、因此我们拥有不同的 DDR 芯片。 (IS43QR16512A-083TBL)我是否也应该为您提供 DDR config SysConfig?

    linker.cmd 内容:

    此致、

    格尔格利

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

    感谢更新。

    您的定制电路板设置中有多个变量。

    您是否可以使用 AM64x-EVM 启动?

    此致

    阿什瓦尼

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

    我们也在 AM64x-SK-EVM 板上对 其进行了尝试、但在先前的 SDK 版本(8.5)中没有看到此问题。

    由于我们进行了一些修改、我还会尝试将其移植回、并让您知道结果。

    我可以提到的一点是、MpuP_enable ()问题仅在从 OSPI 引导加载程序启动时发生、但当我从 调试器上载代码时问题不存在。

    此致、

    格尔格利

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们也在 AM64x-SK-EVM 板上试用了 该软件,但我们在以前的 SDK 版本(8.5)中未发现此问题。

    很高兴听到这个消息。

    由于我们做了一些修改,我也会尝试将其移植回,并让您知道结果。

    期待取得成果。

    仅当从 OSPI 引导加载程序启动 MpuP_enable ()问题时才会发生,但当我从 调试器上载代码时该问题不存在。

    您能否分享您设置的资源分配架构以供审核?

    此致

    阿什瓦尼

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

    您是否在指 Debug.map 文件?

    此致、

    格尔格利

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

    它也会有所帮助。  

    但我希望全面了解资源分配、正如我们已经看到的、如果一个资源多次初始化、还会导致核心崩溃或挂起。

    此致

    阿什瓦尼

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

    我不能完整地确定 如何向您发送所请求的资源分配、但我可以向您发送 debug.map 并告知您初始化时出现错误。

    不能确定它在 init 停止的位置,有时它在 Ethernet init 中,最近甚至不在 main 函数中,但 MPU_Init ()。 现在有一个示例 whitch 在 I2C_open ()的地址转换处停止。 请注意、这并非在所有电路板上都发生、但我们解决了 DDR 通信问题。

    debug.map 文件内容:

    I2C_OPEN()输出:

    以及处理程序异常、如果它希望将 fileBuffer 数据作为代码执行:

    在最后一个我验证了输出文件,它失败在 0x900209E0 Witch 是 UART_WRITE ()的地址,但该地址的反汇编也是模糊的,因为起初我看到没有函数名称的代码, 如果我向上滚动、它们会切换到.words、比如代码 alingment 错误。

    此致、

    格尔格利

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

    感谢 Gergely 提供的日志。

    请允许我花点时间查看并回复给您。

    您是否已经与 TI 硬件专家团队一起完成了定制电路板原理图审阅?

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    我不确定我们是否这样做了、这可能需要等到经理从他们的假期回来。

    马克说,我应该等待对这个问题的答复。

    此致、

    格尔格利

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

    我不确定我们是否这样做了、这可能需要等到经理从他们的假期回来。

    马克说,我应该等待对这个问题的答复。

    [/报价]

    当然可以。

    此致

    阿什瓦尼