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.

[参考译文] TDA4VM:针对主 cpsw9g 端口1和 MCU cpsw2g 端口1之间 RMII 连接的驱动程序开发(针对 MAC 至 MAC 的 RMII)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the-driver-development-for-rmii-connection-between-main-cpsw9g-port1-and-mcu-cpsw2g-port1-rmii-for-mac-to-mac

器件型号:TDA4VM

 您好支持者、

CPSW2G RMII 驱动程序开发阻碍了我们的发展。

  1. 背景:

(1) RMII 用于将 MCU CPSW2G 端口1连接到主 CPSW9G 端口1 (用于 MAC 至 MAC 的 RMII)、该端口用于 MCU 域以太网通信;

(2) RMII 用于连接 PHY 和 CPSW9G 端口7、后者用于 ECU 以太网通信。

 

  1. 问题:

(1) SDK 中没有适用于 MCU CPSW2G 端口1的 RMII 驱动程序演示。 我们没有找到 RMII 实现的示例。

(2)我们没有找到 RMII 的状态寄存器字段说明,我无法检查链接状态。 但找到 RGMII 状态寄存器。

 

  1. 帮助请求

(1) 是否有用于 MCU CPSW2G 的 RMII 驱动程序的实现演示?

(2)如何检查 RMII 链路状态?

 

图1:ECU MAC 的连接。

 

图2 RGMII 状态寄存器归档说明、但无 RMII 状态寄存器。

 

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

    您好!

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the-driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-mcus-connection-connection-main-cpsw9g-port1-and-mcus-port1-and-mcus-mcus-mcus-mcus-port1-ex-mcus-mcus-mcus  

    没有用于 RMII 实现的演示、但该驱动程序支持 RMII。 唯一需要更改的是"mcu_cpsw"节点"cpsw_port1"的"phy-mode"属性节点。 它位于[linux-kernel]/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts 中。 理想情况下、这个和适当的引脚复用应该足以将 RMII 与 MCU CPSW2G 配合使用。

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-ex-connection-intrab-quother[RMII-link]以查看 RMII-status[引用 user/quother]

    我将对此进行检查并告知您。

    此致、
    Tanmay

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

    您好 Tenmay、

    如何检查 RMII 链路状态?

    关于 RMII 链路状态、补充问题说明: 如何获取 CPSW2G 端口1和 CPSE9G 端口1的 MAC 至 MAC 的链路状态?

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

    您好!

    我仍在等待 RMII 链路状态寄存器的确认。  

    但对于调试、您可以使用 Linux 命令行中的`ethtool $if_name`命令来检查链接功能和链接状态。

    此致、
    Tanmay

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

    您好 Tanmay、

    CPSW2G 位于用于 MCU 以太网通信的 MCU 域中。  

    因此、Linux 命令不能帮助检查链路状态。

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

    您好 Tanmay、

    更新信息:

    问题:

    (1) RMII 模式是否可用于 MAC 到 MAC 的互连?

    在 TI 文档"Enabling MAC2MAC Feature on Jacinto7 SoC"中、建议使用 RGMII 或 SGMII 进行 MAC2MAC 互连。  

    (2)如何确认 RMII 模式设置成功?

     

    (3) CPSW_FIFO 如何工作? 如何确认数据

    观察结果:

    CPSW9G 端口1 TX 验证的测试案例

    CPSW9G 端口1广播数据、STAT 寄存器中的 TXGOODFRAMES 计数器增加。 但 CPSW2G 端口1未接收到数据(未触发 RX 中断)。

    问题:(1)无法确保为 CPSW2G 成功配置 RMII 模式;

    (2)无法找到根本原因、是 CPSW2G 端口1 RMII 配置问题、还是 CPSW9G 端口1和 CPSW2G 端口1之间的连接问题?

     

    2. CPSW2G 端口1 TX 验证的测试案例

    多次触发 CPSW2G TX 中断后、TX 中断将被阻止、并且 CPSW2G 的 STAT TXGOODFRAMES 计数器不更新。

    CPSW_FIFO 处理似乎存在一些问题、但不知道根本原因。

    通过读取寄存器状态将 TX 数据放入 CPPI、但无法确认数据是否传递到 下游组件(如 CPSW_FIFO)。

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

    您好!

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-cp127272"至 cp127272"

    CPSW2G 位于用于 MCU 以太网通信的 MCU 域中。  

    因此、Linux 命令不能帮助检查链路状态。

    [/报价]

    这似乎有一些问题、我无法看到附加的图像。  

    但是、尽管 CPSW2G 位于 MCU 域中、但其驱动程序位于 Linux 中、因此您应该能够使用 Linux 工具进行链接。

    这也可用于查看 MCU CPSW2G 端口(命令:# ethtool -S eth0)的统计信息。 在这种情况下、p0统计信息将对应于主机端口。 数据将遵循以下路径:

    a72 -> CPSW2G 主机端口--> CPSW2G 端口1 --> MAC2MAC 连接--> CPSW9G 端口1 --> CPSW9G 主机端口--> A72

    此路径中应递增的寄存器为:

    a72 --> 0x4603A000 --> 0x4603A234 --> MAC2MAC 连接--> 0x0c03A200 --> 0x0c03A034 --> A72

    因此、对于 CPSW2G 的主机端口、数据是 Rx 数据;对于 CPSW2G 端口1、数据是 Tx 数据。 查找相应的值。

    在反向路径(CPSW9G 到 CPSW2G)中,它将如下所示:

    a72 --> 0x0c03A000 --> 0x0c03A234 --> MAC2MAC 连接--> 0x4603A200 --> 0x4603A034 --> A72

    要检查 CPSW2G 的 MAC 端口是否处于 RMII 模式、请参阅寄存器0x40F04040的值(命令:#devmem2 0x40f04040)。 对于 RMII、其值应为1;对于 RGMII、其值应为2。

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-connections[RM127303]/引用互连模式[RM127303]Mac/MAC#trab/trab_trinates]4

    RMII 不应存在任何此类限制。 我将在以防万一时予以确认。

    您是否可以列出对此所做的更改?

    此致、
    Tanmay

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

    您好 Tanmay、

    发布 MAC2MAC 的硬件设计。

    MCU CPSW2G RMII:

    2.主 CPSW9G 端口 RMII

    此致、

    李景春

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

    您好 Tanmay、

    更新观察结果:

    通过 CPSW9G 端口7与具有 RMII 模式的 PHY 进行通信是正常的。

    比较 CPSW9G 和 CPSW2G 之间的主要 RMII 寄存器配置、它们是相同的。

    2、RMII 寄存器0x40F04040的值为1

    3.当我们尝试使用 RMII 模式从 CPSW2G 发送数据、并进入 ETh ISR (ISR (ETH_TXIrqHdlr_0))时、会触发 TX IRQ。

    但在函数 ETH_retrieFreeTxPktQ()中返回 NOK。

    触发 ISR (ETH_TXIrqHdlr_0)时、寄存器 CPSW_STAT1_TXGOODFRAMES 的值始终为0。

    问题:

    1. MAC2MAC 是否有任何特定的配置? 是否有任何特定的模式设置(如主模式)? 除了 CPSW 寄存器之外、是否还需要其他寄存器?
    2. MAC2MAC 交互是否需要 UDMA? 如何为 MAC2MAC 配置 UDMA?
    3. MAC2MAC 管脚多路复用器是否有任何特定的配置?
    4. 哪个条件会触发 CPSW2G TX IRQ? FIFO 数据是否已传输?
    5. 为什么即使触发了 CPSW2G TX IRQ、CPSW_STAT1_TXGOODFRAMES 也始终为0?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-connection-connection-main-cpsw9g-port1-and-mcus-port1-and-mcus-mcus-port1-port1-port2130/256[#MAC/quother]

    在器件树中、我们需要提到一个固定链路节点、并删除以太网端口节点中的 phy-handle 属性、以启用 MAC2MAC 模式。

    参考:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    &cpsw_port1 {
    phy-mode = "rmii";
    fixed-link {
    speed = <100>;
    full-duplex;
    };
    };
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-mac-connection-ma#mcum4130256"MAC4130/256"以进行交互是必需的? 如何为 MAC2MAC 配置 UDMA?[/QUERP]

    UDMA 用于与 CPSW 的所有数据交互、因此已经进行配置。 没有基于通信模式的特殊配置。

    [引用 userid="447207" URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-mctr-cp128820-Mac-trab-trab-trab-trab-cpsw9g-port1-cp1220]

    发布 MAC2MAC 的硬件设计。

    MCU CPSW2G RMII:

    2.主 CPSW9G 端口 RMII

    [/~]
    对于任何特定的配置、Mac

    这些引脚将与硬件设计中的引脚相同(请参阅上图)。

    我将研究您提供的寄存器转储、并尝试通过引脚指出问题。

    此致、
    Tanmay

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

    您好,Jingchun,

    您能否确认:

    1. 您已将 CPSW2G 端口1和 CPSW9G 端口1配置为 MAC2MAC
      1. 对于 CPSW2G、您必须按照[PSK-Linux-install-path]/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts 中的最后响应中的说明添加器件树节点
      2. 对于 CPSW9G、您可以看到此 常见问题 解答和本 文档
    2. 您是否在设置中尝试过 RGMII MAC2MAC 通信?

    您将哪个 SDK 版本用于 Linux 和 RTOS?

    此致、
    Tanmay

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

    您好 Tanmay、

    [引用 userid="498482 " URL"~/support/processors-group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-16423-mc16423"至16423"

    1. 您已将 CPSW2G 端口1和 CPSW9G 端口1配置为 MAC2MAC
      1. 对于 CPSW2G、您必须按照[PSK-Linux-install-path]/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts 中的最后响应中的说明添加器件树节点
    [/报价]

    我们正在基于 QNX + RTOS 进行开发。 因此、我们无法在此处确认 Linux 的方式。

    [引用 userid="498482 " URL"~/support/processors/group/processors/f/processors-forum/1112476/tda4vm-the -driver-development for -RMII-connection-between -main-cpsw9g-port1-and-mcus-sw2g-port1-RMII-for-mac-mce-connection-ma#mc1623]您是否可以尝试在 Mac/trab_mc16223[_quote 上进行通信?

    硬件设计不支持 RGMII MAC2MAC、我们无法为此测试调整硬件。

    我们使用的 SDK 是 SDK R07.03。

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

    您好,Jingchun,

    抱歉、您能确认我的理解。

    1. 在 mcal Eth 驱动程序中不注释的情况下、ETH_TxIrqHdlr_0中的 EthPktQ_dequeue (&gEthDrv.txConfQ)调用返回 NULL 数据包
    2. 当您注释出去队列调用时, 在传输2个 ARP 数据包后,您会在 ETH_requestTxPkt()中遇到异常。

    您能不能让我谈谈您评论过的代码部分。 如果您只需将您在注释出已取消队列调用时所做的更改作为 diff 文件发送、那将会有所帮助。

    是否还可以确认当在中断处理程序中时数据包中设置了 txConfirmation Flag?

    此致、
    Tanmay

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

    关于 SW 进入异常问题、它应该是矢量 AUTOSAR 耦合问题。 解耦 AUTOSAR 代码后、软件运行良好、未观察到异常。

    2.对于帧 TX 功能验证、测试用例是为 CPSW2G 请求帧发送。 寄存器 CPSW_STAT1_TXGOODFRAMES (0x4603A234)根据帧 TX 请求不断增加。

     

    2.对于帧 RX 功能验证、我们设计了 CPSW2G 和 CPSW9G 相互发送帧的测试用例。

    (1)观察结果:CPSW2G (0x4603A234)和 CPSW9G (0x0C03A234)的寄存器 CPSW_STAT1_TXGOODFRAMES 保持增加。

    没有发现例外情况。

    (2)问题:CPSW2G 和 CPSW9G 均未接收到帧。

    对于 CPSW9G 和 CPSW2G、未触发 RX 中断、并且 CPSW_STAT_RXGOODFRAMES 的值不会更新(始终为0)。

    (3)没有用于通过电信号监控进行 TX 帧验证的硬件测试点。

     

    3.问题

    (1)对于 MAC2MAC 模式、CPSW_STAT1_TXGOODFRAMES 值是否可以指示 TX 功能工作正常?

    (2)哪些配置会影响 MAC2MAC 帧的接收?

     

    4.下一个行动

    在另一个 E2E QA 中、我们发现 ALE 表将影响 CPSW RX 功能。

    AM3358:AM3358 CPSW Rx 中断未触发-处理器论坛-处理器- TI E2E 支持论坛

    我们将再次确认 ALE 表的配置。

     

    这两个存储器饺子是 CPSW2G 和 CPSW9G 的 ALE 表。 您能否查看它们并检查是否有任何例外配置?

    e2e.ti.com/.../3681.CPSW0_5F00_NUSS_5F00_ALE_5F00_9G.txt

    e2e.ti.com/.../5226.CPSW0_5F00_NUSS_5F00_ALE_5F00_2G.txt

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

    您好,Jingchun,

    我与硬件团队进行了检查、上拉和下拉是可通过软件配置的、因此与您的方式一样、直接连接不会出现问题。

    此致、
    Tanmay

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

    您好 Tanmay、

    感谢您的回答。

    CPSW2G 和 CPSW9G 通信已建立。 CPSW2G 和 CPSW9G 可以相互接收帧。

    上一个问题是由于为 CPSW9G 配置了错误的端口导致的。

    非常感谢您今天的支持。

    此致、

    李景春

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

    您好,Jingchun,

    很高兴能提供帮助。  

    现在关闭此问题。

    此致、
    Tanmay