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.

[参考译文] TIDM-Delfino-EtherCAT:EtherCAT 报头-字节顺序。

Guru**** 2610995 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/687977/tidm-delfino-ethercat-ethercat-header---byte-order

器件型号:TIDM-Delfino-EtherCAT

您好!
我正在使用 Wireshark 分析 EtherCAT 帧、我发现一些不适合 ESC 文档的内容。 在文档 ESC 技术中、我可以发现 EtherCAT 接头如下所示:

在 Wireshark 捕获中、我可以看到:


长度:0x059
RES:0x0
类型:0x1
根据文档中的图片、我要说 EtherCAT 报头应该如下所示:
0x059 0x00 0x01、总共为0x5901 (等于01011001 00000001 b)。
如您所见、Wireshark 显示第二个字节不同、EtherCAT 报头等于0x5910、即01011001 00010000 b。看起来顺序不同、它是:length - type - Reserved。 在文档中、我看不到任何有关获取字节的信息。
这种情况让我有点困惑。

我如何解释它?

我感谢你的任何帮助。

此致、
Dawid。

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

    我将与熟悉 Wireshark 的用户同步、并让您知道我的发现。

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

    感谢你的帮助,谢谢。

    下面是同一帧中奇怪字节顺序的另一个示例。

    让我们看一下 NOP 数据报。 以下是偏移地址字段:


    您可以看到、字节被交换、说实话、我不知道为什么。


    以下是长度字段:


    在手册中、我读出顺序为:len-R-C-M、但在 Wireshark 捕获中、它看起来像:len-M-C-R 即使我交换偏移地址字段中的字节、我也会说它是:01 04。 无跳跃:04.01。 我不明白为什么第二个八位位组是位反转的。  或者另一方面-看起来顺序是相反的(M-C-R-Len)并且字节是交换的。 但正如我说过的-我完全不知道这里发生了什么、我在手册中看不到任何解释。 例如、发送源地址和目标地址以及热类型时不进行任何交换、其外观与手动方式完全相同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dawid、
    您在网络中看到的原始字节流采用网络顺序大端字节序。 根据数据报的协议解码的解析字节会根据需要转换为小端字节序。

    我看不到您观察到的任何问题。

    希望这对您有所帮助。

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

    让我们看看偏移地址:0x0900。 当我把它写为0x00 0x09时、我认为它是小端字节序、不是吗?

    现在、让我们看看长度。 手册指出、当我们查看值(小端字节序中为0x01 0x04)时、顺序为:len-R-C-M 为0x04 0x01。 当我们将顺序更改为 Len-M-C-R 时、结果类似于 Wireshark 中的结果:小端字节序为0x04 0x80或0x80 0x04。

    我对小端字节序或大端字节序没有问题。 我的位顺序有问题-我不知道为什么在 Wireshark 中的"last indicator"位处于 MSB 位置、而在手动时它是 LSB。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另一个示例、用于解释我的意思。 让我们考虑两个字节:0x01 (MSB) 0xF0 (LSB)。 在大端字节序中、值为0x01F0。 小端字节序值为0xF001。 但是、当我查看 Wireshark 捕获时、我的数据(0x01 (MSB) 0xF0 (LSB))将作为0x010F 发送、我不明白较低字节为什么会发生位反转。

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

    请记住、这些是位、每个(cmd、rsvd、length)不是每个字节。 在位(小端字节序)中、您会看到0001 0 00001011001为 cmd、rsvd、length 或0x1059。 以大端字节序发送、如 Wireshark 所示、它将为0x5910。

    此致
    Chris