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.

[参考译文] AWR2944EVM:为什么在使用 AWR2944网络端口发送数据一段时间后、程序会崩溃?

Guru**** 2553580 points
Other Parts Discussed in Thread: AWR2944

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1451109/awr2944evm-why-does-the-program-crash-after-using-the-awr2944-network-port-to-send-data-for-a-period-of-time

器件型号:AWR2944EVM
主题中讨论的其他器件:AWR2944

工具与软件:

尊敬的设计师:

在使用 Enet 修改 AWR2944源码信息 DDMA 模式后,我在压力下对 Enet 进行测试,每次通过 Enet 将一个800*16B 的阵列传输到 PC ,但我遇到一个问题,它运行一段时间后会崩溃。

下面是我通过 Wireshark 发现的一些详细信息。

在每个程序崩溃之前会出现数据包丢失的现象。丢弃数据包后、接收器会要求   AWR2944  重新发送该数据包、但 AWR2944不会重新发送该数据包、而是继续发送数据大约100ms、然后程序崩溃。

2.丢弃数据包之前和之后的两个数据包实际上是在同一微秒内发送的。

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

    您好!

    您尝试运行的示例是什么?您使用的 SDK 版本是什么?

    此致、

    Ajay

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

    示例:开箱即用演示

    SDK 2944.4.4.1.2

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

    您好!

    该 SDK 非常旧。 请转到最新的 SDK。

    此致、

    Ajay

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

    Ajay、您好!

    我更改了最新版本的 SDK、版本号是4.6.0.1、这个问题仍然存在、Wireshark 上的现象显示在下图中

    此致、
    Zisheng Wang

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

    尊敬的  Zisheng:

    TCP 开销过大、因此建议使用 UDP。 由于这是一个封闭网络、因此在使用 UDP 时不应该有任何丢包问题。

    此致、

    Ajay

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

    你好、Ajay

    我试过使用 UDP、将连接类型改为 UDP、发现程序会出错、然后我尝试找到与 UDP 相关的接口、发现我需要使用 netbuf 结构、但我不知道如何填充。 是否有使用 UDP 的演示或示例?

    此致、

    Zisheng Wang

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

    尊敬的 Zisheng:

    由于 UDP 要简单得多、因此您可以删除此堆栈并直接仅使用以太网驱动程序、然后在应用软件本身中创建 UDP 报头。

    在执行相同操作时、可以参考"enet_tx_scate_collect"示例。

    此致、

    Ajay

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

    Ajay、您好!

    现在还有一个问题、目前的情况是该电路板可以传输超过36小时的数据、听起来不错、但是无论传输了多少数据、基于 tcp_server.py 修改的 python 脚本都只能接收大小为12B 的数据、而大小几乎不会更大。

    此外,还有两种情况更多的 werid

    1.Wireshark 捕获的数据是正确的

    如果内容全部为0、数据接收将是正确的。

    我的代码结构如下所示:

    send_data;

    buf = nbuf_new();

    nbuf_alloc (buf、120);

    while (1){

    nbuf_ref (buf、send_data);

    netconn_sendto (buf)

    }

    }

    我期待您的帮助。

    此致、

    Zisheng Wang

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

    尊敬的 Zisheng:

    如果 Wireshark 中的内容正确、则表示器件没有问题、可能是 Python 代码有问题。

    由于 TCP 的性质、我们建议使用不带堆栈的 UDP。

    此致、

    Ajay

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

    Ajay、您好!

    您是否遇到过这样的情况:超过99%的点云数据 UDP 数据包存在校验和问题。Wireshark 中不正确?

    我做了一些测试:

    1.让 MSS 发送常量值的数据。 它在一段时间后不会出现任何问题

    2.让 MSS 发送随机值的数据。 它的工作方式与点云数据相同。

    您 有什么建议吗?

    此致、

    Zisheng Wang  

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

    尊敬的  Zisheng:

    这可能是启用高速缓存的问题。 您能禁用缓存并重试吗?

    此致、

    Ajay

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

    Ajay、您好!

    很抱歉忘记向您提供最新情况、我发现失败的原因是调用#netbuf_ref 函数。

    使用#netbuf_ref 替换为#netbuf_alloc、替换为#memcpy、可以正常运行。

    那么、您能否提供一些有关#netbuf_ref 为什么会导致此问题的信息?

    顺便说一句,这是农历新年在中国,有一个美好的一年阿贾伊。  

    此致、

    Zisheng Wang