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.

[参考译文] AM6442:Lwip 存储器损坏

Guru**** 2470720 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1463012/am6442-lwip-memory-corruption

器件型号:AM6442
主题中讨论的其他器件:SysConfig

工具与软件:

您好!

在 AM64的 R5内核0-0上运行 lwip 时有一些问题。 这是目前的故事:

  • 我能够编译 lwip 并在我的项目中使用它
  • 我能够从我的 PC 对 AM64执行 ping 操作、而不会出现问题
  • 我使用了 SDK 中的示例 app_tcpserver (我使用版本09.02.00)在我的 PC 之间发送一些简单的数据

这3个点都运行良好、当我尝试使用 SDK 中的示例 ping 时就会出现问题。 第一个 ping 始终有效、然后开始失败、有时但并非总是如此。 有时它工作在给定的时间,它再次失败,再次工作...  使用 Wireshark 分析通信、我很快就注意到 Ping 数据包的有效负载损坏了。 以下是一些示例

类型 代码 检查  标识  序列  数据
 08   00  57 4D  af 00 02 00 01 02 03 04 05 06 08 09 0A 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b c 1d 1e 1f   无腐败
 08   00  57 25  af  00 2a 00 01 02 03 04 05 06 07 08 09 0A 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b c 1d 1e 1f   无腐败

 00   00 00 00  00  0A 00 77 82 00 01 02 03 04 05 06 08 09 0A 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b c 1d 1e 1f   损坏
    00 00 00  00  c0 03 77 82 3c 00 3c 00 00 00 00 00 08 09 0A 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1d 1e 1f   损坏
    00 00 00  00  c0 03 77 3c 00 3c 00 00 00 00 00 00 00 45 00 3c d8 da 00 00 80 01 de 7b c0 A8 01 16 c0 A8 01 04 00 5F 4e   已损坏

我试着增加 pbuf 的大小、对齐和任务优先级、但运气不好。 我的问题是、您知道 Ping 为什么损坏了吗? 以及应采取哪些措施来防止损坏?

您将发现此邮件的附件:

  • 流量的跟踪(删除.h 以打开它、它不允许我上传.pcapng)。4是 AM64、.22是我的 PC
  • 我使用的 lwipopts.h 文件(请注意、NO_SYS 设置为0)
  • 我使用的 SysConfig 文件 (删除.h 将其打开、不允许我上传.syscfg)

提前感谢您的答复、

Thibault

e2e.ti.com/.../config.syscfg.h      e2e.ti.com/.../lwipopts.h      e2e.ti.com/.../trace.pcapng.h 

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

    Hi  Thibault、

    感谢您的提问。

    我会检查一下、然后回复给您。

    此致

    Ashwani

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

    Hi  Thibault、

    我假设

    1.您正在处理 C:\ti\mcu_plus_sdk_am64x_09_02_00_50\examples\networking\lwip\enet_cpsw_tcpserver?

    2.开箱即用示例可以在您身边的 AM64x-EVM 上正常工作。 正确吗?

    [报价 userid="600550" url="~/support/processors-group/processors/f/processors-forum/1463012/am6442-lwip-memory-corruption "]我尝试使用 SDK 中的 ping 示例。 第一个 ping 始终有效、然后开始失败、有时但并非总是如此。 有时它在给定的时间内工作,它会再次失败并再次工作。[/报价]

    您是指从 AM64x-EVM 到 PC 的 ping 吗?

    您是否也看到了与最新 SDK 版本相同的行为?

    此致

    Ashwani

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

    尊敬的 Ashwani:

    感谢您的回答。

    1.是的,这确实是我使用的例子。

    2.是的、这是我们在 AM64x-EVM 上尝试任何其他操作之前的第一步、然后是在我们自己的硬件上尝试任何操作。

    请注意、在我们的硬件上、我们有一个以太网交换机、即 KSZ9897。 我们尝试在 AM64x-EVM 上运行代码(在没有开关的情况下也是如此)、结果是相同的。 我们不使用 SysConfig 中的 MDIO、而是直接通过 I2C 驱动。 但我认为这是无关的、因为如果开关被错误地驱动、我们根本看不到总线上的任何东西、对吗?

    3、我不知道,我没有尝试。 我将执行该操作。

    此致、

    Thibault

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    我尝试使用来自 SDK 的 ping 示例时出现了问题

    我想更新一下、该功能 (从 AM64x ping PC)不支持作为 MCU+SDK 的一部分。

    使用 SDK 示例、只能从 PC ping AM64x。

    此致

    Ashwani

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

    您好!

    我终于成功地完成了这次跑步。 为了做到这一点,我修改了2件事:

    首先添加一些由 lwip 使用的内存部分、我在项目的初始设置期间遗漏了这些部分

    .bss.ENET_DMA_DESC_MEMPOOL

    .bss:ENET_DMA_RING_MEMPOOL

    .bss:ENET_DMA_PKT_MEMPOOL

    其次、启用 lwip 选项(在 lwipopts.h 中)

    #define LWIP_NETIF_TX_SINGLE_PBUF   1.

    这解决了内存损坏问题、ping 现在工作正常。 PC 每次都响应、项目的其余部分也正常工作。

    感谢你的帮助