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.

[参考译文] RTOS/TMDSEVM6678:NDK EMAC 客户端示例:发送原始数据包错误

Guru**** 2952510 points

Other Parts Discussed in Thread: FFTLIB, MATHLIB

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/673043/rtos-tmdsevm6678-ndk-emac-client-example-send-raw-packets-error

器件型号:TMDSEVM6678
主题中讨论的其他器件:FFTLIB、 MATHLIB

工具/软件:TI-RTOS

你好。 我将继续介绍该示例、并遇到一些意外行为。 我进行了修改:设置无限循环以发送类似这样的原始数据包

while (1)
{

字节= sendnc (sraw、(char *) pbuffer、packet_size、hpkt0);


if (bytes < 0){

NIMU_testLog ("错误:原始 Eth 发送失败错误:%d\n"、fdError());

sendncfree(hpkt);

fdCloseSession( TaskSele());

fdClose (sraw);

TaskExit();
}

}

经过一段时间后、它出现错误...

它会将我引导至出现错误的文件"raweth.c"和函数"RawEthTxPacketNC"

if ((pPKT->pDataBuffer + pPKT->DataOffset)!=(uint8 *) pbuffer)
{
raweths.SndNoPacket++;
返回(EINVAL);
}

这里会发生什么情况、为什么把手是错误的? 我应该怎么做才能摆脱这种情况?

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

    我们将对此进行研究。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请提供什么处理器 SDK RTOS 版本、NDK 版本以及您尝试的确切测试应用。 我们只有适用于 C6678的 Nimu 示例、您的发送原始数据包是否基于修改后的 Nimu 示例?

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

    CCSv7.3.0.00019

    SDK v04.01.00.06

    • CG_XML 2.41.00
    • CTOOLS 磁带库2.2.0.0
    • DSPLIB 3.4.0.0
    • EDMA3 LLD 2.12.05.29
    • FFTLIB 3.1.0.0
    • 框架组件3.40.02.07
    • IMGLIB 3.1.1.0
    • IPC 3.46.02.04
    • LIBARCH 1.0.0.0
    • LINALG 1.2.0.0
    • MATHLIB 3.1.1.0
    • NDK 2.25.01.11
    • OpenMP 2.06.02.00
    • PDK C667X 2.0.7
    • Processor SDK RTOS C667X 04.01.00.06
    • SYS/BIOS 6.46.05.55
    • TI CGT 6x 8.1.3
    • UIA 2.00.06.52
    • xDAIS 7.24.00.04
    • XDCtools 3.32.01.22

    是的、将 Nimu_emacClientExample 从"c:\ti\pdk_c667x_2_0_7\packages/ti\transport \ndk\Nimu\examples\client\c6678\c66\BIOS\"修改为 Nimu_emacClientExample"。 我尝试减少修改、只更改了一个字符串

    for (j = 0;/*j < packet_count*/;j++)

    {

    (笑声)

    }

    但它会产生另一个误差  

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

    我在发送之间添加了延迟(100,000,000 usecs),并且出现相同的错误:getsendncpuff Failed Error:55 after only 34 packets sent (getsendncbuff 失败错误:仅发送34个数据包后55)。 请尝试重现错误并帮助我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以向我发送修改过的文件吗?

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

    大家好、感谢您 的快速响应。 这是整个项目。 我只更改了 client.c.

    e2e.ti.com/.../test_5F00_NIMU_5F00_emacClientExample.zip

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

    我尝试过同一个项目、更改仅在 client.c 中进行 我尝试发送 packet_count = 1000而没有插入延迟。 我没有看到任何问题。 您是否使用 GEL 文件初始化 C66x 内核0?

    [C66xx_0] QMSS 已成功初始化
    CPPI 已成功初始化
    PA 已成功初始化

    TCP/IP 堆栈示例客户端
    配置 DHCP 客户端
    服务状态:DHCP:已启用: :000
    服务状态:Telnet:已启用: :000
    服务状态:HTTP :已启用: :000
    服务状态:DHCP:已启用:正在运行:000
    网络已添加:IF-1:158.218.109.166
    服务状态:DHCP:已启用:正在运行:017
    原始 ETH 任务已启动...
    原始 ETH 任务已结束...

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好。
    如果没有延迟、则会在超过1000个数据包后发生残留。 尝试、例如 packet_count=1、000、000、000。 在我的情况下、它在发送6、220、192个数据包(gTxCounter)后打印了一个错误。 在 gTxCounter=583后、延迟= 100、000、000个周期的相同数据包计数会产生错误。