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/TM4C1294NCPDT:如何访问接收到的以太网帧

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/614795/rtos-tm4c1294ncpdt-how-to-access-received-ethernet-frames

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!

我正在查看 TI-RTOS 以太网 TCP/IP 回显示例(它的工作效率为100%)、并希望访问传入的数据字节(例如、打印到控制台)。 我看到 tcpEchoIpsv6.c 文件有一些似乎负责接收/发送数据的任务、但当我在对控制器执行 ping 操作后单步执行代码时、代码永远不会到达它们(仅执行 emacshoe.c 文件中的函数)。 如何在不在 emacshoe.c 文件中编写代码的情况下访问以太网中附带的数据?

在我看来、这应该是可能的、因为 emcasnow.c 是一个标准 TI-RTOS 库、特定实现(TCP/IP 回显程序)将使用它来接收数据包、从数据包中提取数据、然后将其发回。

谢谢、

svl123

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

    "ping"在 NDK 的堆栈中进行处理、因此它永远不会到达应用层。

    如果要转储进入设备的所有数据包、可以将代码添加到 emacsnow.c 中 最简单的方法是将 EMACSnow.c 添加到项目中并根据需要进行修改。

    您还可以从 NDK 获取一些调试输出(《NDK 用户指南》中的"全局调试配置")。 但是、它不会按数据包输出为您提供数据包。

    在这里、我们通常在通过集线器(目标也连接到)连接到网络的笔记本电脑上使用 Wireshark、以查看进出目标的所有数据包数据。

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

    感谢您的澄清-我对 TCP/IP 没有任何经验、这对我来说都是非常新的。

    我现在不在板上,但看一下 emacsnow.c 中的函数 EMACSnow_handleRx(),我可以直接通过“&EMACSnow_private.PBMQ_Rx”指针访问接收到的数据包?

    谢谢、
    svl123
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可以使用 pDescList->pDescriptor[pDescList->ulRead]结构中的 pvBuffer1和 ui32Count 字段。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Todd、

    "将 emacsnow 添加到项目中"是什么意思?

    当我将断点插入到该文件中时、它们会触发、我可以单步执行该文件中的代码。 但是、当我向其中添加我自己的代码时、程序会像没有对其进行修改一样运行、即使我添加了我知道错误的代码、并且应该触发错误、项目编译正常、示例也会起作用。 这意味着文件不会添加到工程中? 但是、如果未添加、我如何通过断点单步执行它?

    -svl123

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    右键点击工程并选择"Adding Files..."。 然后导航到 EMACSnow.c 文件(例如 C:\ti_tirtos_tivac_2_16_01_14\products\tidrivers_tivac_2_16_01_13\packages/ti\drivers\emac)并选择.c 文件。

    然后、我会选择"Copy files"选项(这是默认选项)、这样您就不会触碰产品中的文件。

    现在编辑离开、当您重新构建时、它将挑选库中版本之前的版本。

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

    我已经能够将文件复制到我的项目中并访问各个帧。 感谢你的帮助。

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