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.

[参考译文] AM2434:PRU ICSSG RGMII RX_TX 任务管理器无法正常工作

Guru**** 2393725 points
Other Parts Discussed in Thread: AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1505525/am2434-pru-icssg-rgmii-rx_tx-taskmanager-not-working-correctly

器件型号:AM2434

工具/软件:

您好:

Im 与 am2434的 pru0一起工作、并尝试使 RGMII 以100Mbit/s 的速度工作。 我的 PRU 设置如下:

TaskManager 设置为 RX_TX 模式。

TS1 ->从 L2 A 侧读取前32字节 并将侧指针设置为 B

TS2 ->从 L2 B 侧读取第二个32字节并将侧指针设置为 A

TS3 ->从 A 侧读取接下来的32字节、并将侧指针设置为 B (在每次调用时切换侧指针)

TS4 -> Eof event ->读取 R18的字节数、然后从所选 L2端读取尽可能多的字节数

它适用于1Gbit/s、使用64至254字节进行测试。

以100Mbit/s 的速度使用 TS3时、在接收超过128MB 的字节时、会第二次触发、从而导致丢失字节。 而 TS4会在 TS3的第一次调用后直接触发。

此外、从 xin 20 &R18、1读取 L2中的字节数 不可靠、有时读取0而不是64、L2侧 B 中有32个字节

我的 Pru 驱动程序基于 SORTE_G 示例、但缺少 eth phy 所需的代码、因为我直接将 RGMII 与 FPGA 配合使用。

此致、Lucas

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

    您好、Lucas:

      EOF 事件在下一个块之前以32字节生成。 当数据包在32字节边界处结束时、您需要检查 EOF 任务中的 RX_L2指针、并从 RX_L2 FIFO 中读取剩余的字节。 当数据包以128字节结束时、指针前进到0 (下一个空条目)。 这是我对千兆位任务经理的观察。 我假设它与100Mbit 类似。

    您指出接收不能使用超过128字节。 您是否对144字节数据包示例进行了测试。 此处不应出现 EOF 竞态条件。 但它可能发生在128,129,.. 字节数据包。

    -托马斯

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

    尊敬的 Thomas:

    感谢您的快速答复。 是否有办法在任务管理器中禁用或屏蔽32字节块事件? 检查 TS3中的 RX_L2指针是否为0并留下任务可解决大部分时间之后触发 TS3的问题。 但它也有一个问题、当进入 TS3时、当应该输入 TS3并且指针从63提前到0时、通过跳过任务而导致数据丢失。

    我 以1个字节的步长测试了从64到254字节的接收、并且使用100Mbit TS3没有触发多个字节、这似乎是问题所在。

    此致

    Lucas

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

    您好、Lucas:  

    固件应该能够通过检查 R18.b0来检查是否跳过 TS3。 正如 Thomas 所说、我们在以太网交换机固件中看到了类似的情况、我们增加了在任务中读取多达64字节的功能

    此致、
    Prajith