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.

[参考译文] TMDS64EVM:将 PRU RGMII RX_BYTE_SWAP 设置为 1 时丢失数据

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1651169/tmds64evm-loss-of-data-when-setting-pru-rgmii-rx_byte_swap-to-1

器件型号: TMDS64EVM

我的 PRU 正在运行一个以太网数据包捕获例程、在 RxTx 模式下使用任务管理器、使用 BK1 触发器捕获第一个数据块。

在使用接收到的数据调试终端应用时、我意识到需要对 PRU 接收到的数据按字节交换顺序、以便与 Arm 处理器字节序保持一致。

我唯一进行的更改是将 MII_RT_RXCFG0.RX_BYTE_SWAP0 设置为 1。 该寄存器被设置为 0x00000017、现在被设置为 0x00000037。

当我设置这个位, XIN 20 ... 读取 RX L2 FIFO 的命令不返回数据 — R2-R9 每次都为 0。 当我返回并清除该位时、xin 命令会再次运行(尽管数据的顺序相反)。

我更喜欢使用内置机制以所需的字节顺序填充数据、而不是自己花更多时间来填充数据。 是否缺少其他一些步骤来使 RX_BYTE_SWAP 正常工作? 技术参考 Maual 没有提到任何东西。

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

    您能否确切地阐明您需要哪种字节顺序?

    BR
    Jc.

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

    我希望实现 th 寄存器中 RX_BYTE_SWAP0 位定义指定的目标、交换放置在 L2 FIFO 中的每个接收到的 16 位字的字节顺序。 根据寄存器字段定义、这就是应该发生的情况。

    使用 XIN 160... 命令交换寄存器中的所有字节、这不是目标。

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

    规格: 控制 RX R31 和 RX L2 的字节 0/1 放置顺序。 0:Byte1 是 R31 和 RX L2 MSB{Byte1:Byte0}LSB RX R31 15:8= Byte1 RX R31 7:0= Byte0 1:Byte1 是 R31 和 RX L2 MSB{Byte0:Byte1}LSB RX R31 15:8= Byte0 RX 7:0= Byte1 必须在端口禁用或仅在启用 TX_R31 时选择/更新时才能自动交换 L2 通信、否则无法自动切换。注意

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

    这似乎很简单 — 我不知道为什么它不能在你的最后按预期工作   让我再深入探究一下。

    同时,您能否仔细检查前提条件 — 具体来说,验证是否在配置中启用了 TX_AUTO_SEQUENCE 和 TX_BYTE_SWAP、因为这些条件可能会影响该行为?

    BR
    Jc.

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

    是的、我确认最初没有与这些设置产生任何冲突。 我既未设置 TX_AUTO_SEQUENCE、也未设置 TX_BYTE_SWAP。