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:TX CRC32有时不输出

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1395663/am2434-tx-crc32-is-sometimes-not-output

器件型号:AM2434

工具与软件:

您好!

我们使用定制 PRU 固件。
有时、不会将 CRC32添加到从 PRU 发送的数据包中。
它似乎不在 TX L1 FIFO 中、因为当设置了 TX_CRC_HIGH 时 TX FIFO 级别不会改变。
因此我们想知道以下几点:
开始 TX CRC 计算的条件是什么?
是否可以重置 TX CRC 计算函数?

我们的流程如下:
检查 INTC 原始状态寄存器1中的 RX_SOF 位是否为0
更改数据路径(更改 MII_RXCFG、MII_TXCFG)
TX_RESET
4.写入数据
检查 TX_FIFO_LEVEL、确保8个半字节或更多字节是空闲的
6.cmdR31 [TX_CRC_HIGH + TX_CRC_LOW + TX_EOF]

数据路径为"Auto Forward with PRU Snoop"(通过 PRU 侦听自动转发)到"32字节双缓冲区或乒乓处理"。
(TRM 6.4.11.2 MII_G_RT 功能说明)
观察该操作可知、当数据路径设置和数据包接收的时序匹配时、似乎会发生这种情况。
(更改数据路径后、在原始状态寄存器1中设置 RX_SOF 位。)


此致、
高志

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

    你好、Takashi、

    请注意、我们可以支持有关 PRU 和基本 PRU 编程的问题、但经过一定时间后、当您对像您自己的网络接口这样复杂的器件进行编程时、我们提供的支持将受到限制。

    我正在将您的主题重新分配给其他团队成员进行评论、但他们提供的支持可能会受到限制。

    此致、

    Nick

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

    您好、Nick。

    感谢您的意见和支持。
    我们希望这有助于澄清器件的行为。

    请注意、MII_G_RT 与 MII、100Mbps、全双工一起使用。
    评估板是 TMDS234EVM。

    此致、

    高志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    检查 TX_FIFO_LEVEL 中是否有8个半字节或更多字节是免费的

    这里假设的 L1 TX_FIFO 的大小是多少? 请注意、它从具有64/96/96字节的 AM3/AM4/AM5减少到32b。 您可以将其与64字节的 TXL2 FIFO 配合使用、将有效大小增加到96字节。

      当出现此问题时、INTC 中是否存在 ICSS_INTC_RAW_STATUS_REG0和 ICSS_INTC_RAW_STATUS_REG1错误?

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

    您好、Pratheesh:

    有。
    我们的程序将流级别控制为不超过32字节。
    不会发生错误。 TX_overflow 和 TX_underflow 也未设置。

    TRM 描述的 TX L1 FIFO 有40或96字节、但32字节是正确的、对吗?

    此致、

    高志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="413527" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1395663/am2434-tx-crc32-is-sometimes-not-output "]数据路径为"Auto-Forward with PRU Snoop"改为"32字节双缓冲区或乒乓处理"。
    (TRM 6.4.11.2 MII_G_RT 功能说明)[/QUOT]

    对它感到困惑、自动转发还意味着 MII RT 硬件可以在没有固件干预的情况下直接从 RX L1转发到 TX L1。  

    我们的流程如下:
    检查 INTC 原始状态寄存器1中的 RX_SOF 位是否为0
    更改数据路径(更改 MII_RXCFG、MII_TXCFG)
    TX_RESET
    4.写入数据
    检查 TX_FIFO_LEVEL、确保8个半字节或更多字节是空闲的
    6.cmdR31 [TX_CRC_HIGH + TX_CRC_LOW + TX_EOF][/报价]

    不清楚如何以及何时在使用 snoop 自动转发的上下文中执行上述序列。

    TRM 描述 TX L1 FIFO 具有40或96字节、但32字节正确、对吗?

    TXL1 FIFO 为40字节、包括8B 前导码(可以根据配置自动进行、在大多数情况下对于固件是透明的)。

    您能否共享详细的 ICSS MII RT 设置和任何 Wireshark 日志(如果可能)

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

    您好、Pratheesh:

    在正常情况下、配置设置为自动转发。 当固件要发送自己的数据包时、该设置将发生更改。 若要在传输路径中没有数据包时进行切换、固件会引用 INTC 以确认在切换之前未收到数据包。
    我不想在论坛上公开 MAC 地址和帧类型、因此很难呈现日志文件、但设置如下。

    答:
    MII_G_RT_RGMII_CFG:0x00010101
    MII_RT_RXCFG0:0x00000055
    MII_RT_RXCFG1:0x0000005D
    MII_RT_TXCFG0:0x00400201
    MII_RT_TXCFG1:0x00400301

    B:
    MII_G_RT_RGMII_CFG:无变化
    MII_RT_RXCFG0:无变化
    MII_RT_RXCFG1:0x0000001D
    MII_RT_TXCFG0:无变化
    MII_RT_TXCFG1:0x00400906

    从 A 变为 B
    设置为 B 后、按数据、然后设置 TX_ENABLE1=1。

    此致、
    高志

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

    以下是使用其他采集工具获得的数据包的摘录。 符合预期的案件和未予说明的案件。 数据包中的 MAC 地址和其他信息已被替换为 XX。

    e2e.ti.com/.../packet_5F00_log.xlsx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在正常情况下、配置设置为自动转发。 当固件要发送自己的数据包时、该设置将发生更改。 在传输路径中没有数据包时切换、

    我建议使用 R31 TX_EOF 状态来确保传输路径中没有数据包。 配置 MII_RT_RXCFG。 对于此操作、RX_DATA_RDY_MODE_DIS = 1  

    [报价用户 id="413527" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1395663/am2434-tx-crc32-is-sometimes-not-output ]1.检查 INTC 原始状态寄存器1中的 RX_SOF 位是否为0
    更改数据路径(更改 MII_RXCFG、MII_TXCFG)
    TX_RESET
    4.写入数据
    检查 TX_FIFO_LEVEL、确保8个半字节或更多字节是空闲的
    6.cmdR31 [TX_CRC_HIGH + TX_CRC_LOW + TX_EOF][/报价]

    无需 TX_RESET (除非遇到错误情况)、请通过从流程中删除 TX_RESET 来进行检查。