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.

[参考译文] Linux/AM3352:Eth1上无接收

Guru**** 2587365 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579659/linux-am3352-no-receive-on-eth1

器件型号:AM3352

工具/软件:Linux

您好!

在我们自己的一个设计中、使用 AM3352和 SMSC LAN8710 PHY 来实现两个以太网端口、eth0上的通信正常、但 eth1上的接收似乎不起作用。

当我对 eth1执行 ping 操作时、会在另一侧发送和接收 ARP 请求、但响应似乎没有到达驱动程序。

通过驱动程序源中的 printk 输出,我发现 cpsw_rx_interrupt ()不是针对 eth1调用的,而是针对 eth0运行。

我已经尝试过 Linux 内核版本4.4.50和3.9.13、结果相同。

以下是 DTS 中的相关片段:

&am33xx_pinmux{
cpsw_default:cpsw_default{
pinctrl-single、pins =<
/* Slave 0 */
0x10c (PIN_INPUT 下拉| MUX_MODE1)/*(H17) gmimii1_crs.rmii1_crs_dv */
0x110 (PIN_MODE1
)*
(rxrxmi1)/rxmi1)*(rmmii1)/rmip_1_m1_mu_m1*(rxmu_mu_m1*(r1_m1_mu_m1rmu_m1rm1rm1rmu_m1rx1rmu_m1rmu_m1rm1rmux.1) /*(K17) gmii1_txd0.rmii1_txd0 */
0x124 (PIN_OUTPUT | MUX_MODE1)/*(K16) gmii1_txd1.rmii1_txd1 */
0x140 (PIN_INPUT | MUX_MODE1)/* rxmi1
*
rmi1 * rmi1
(rxmi1)/rmi1 rmi1)/rmi1 rmi1 rxi1 rmi1 (rmi1)/rmi1 rmi1 rxmi1)* rmu_rm1* rm1rm1_rmu0_rm1rm1* rm1rm1rm1rm1rm1rm1rm1rm1rmu0_rm1rmu0_rmu0_rm1*(rm1rm1rm1rm12rm1
(PIN_INPUT_PULLUX | MUX_MODE3)/*(U16) GPMC_A9.rmii2_crs_dv */
0x74 (PIN_INPUT_PULLUP | MUX_MODE3)/*(U17) GPMC_WPN.rmii2_TXER *
/ 0x40 (PIN_OUTPUT |
0x54_MODE3)
*(0x74_Rmc_Rmu_Rd4)/rmux.0*(rmc_rmc_rmc3)/rmu_rmu_rmux.3)/rmu_rmux.0*(0x4_mu_rmu_rmux.3
(PIN_INPUT 下拉| MUX_MODE3)/*(V17) GPMC_A11.rmii2_rxcpd0 */
0x68 (PIN_INPUT 下拉| MUX_MODE3)/*(T16) GPMC_A10.rmii2_rxcol 1 *
/ 0x108 (PIN_INPUT _MODE3
)/*(0x10_MODEx




1)/RM_RESPULT 1)*= 0x16_RESPON_MODE0 *(0xm_MODEx 1)/RMON_RESPON_MODEx 1)*= 1 *(0xMUX 1)
/*(H17) gmii1_crs.rmii1_crs_dv */
0x110 ( PIN_INPUT_PULLUE| MUX_MODE7 )/*(J15) gmii1_rxer.rmii1_rxpuller */
0x114 ( PIN_INPUT_Txdown | MUX_MODE7 )*(0x12_1_MDIU_1*(0x12_MODIU_1_0_Cn_Cn_1_R1*)*(0x124/)n_MODIUX1_1*

输入
/*(M16) gmii1_rxd0.rmii1_rxd0 */
0x13c (PIN_INPUT 下拉| MUX_MODE7)/*(L15) gmii1_rxd1.rmii1_rxd1 */
0x144 (PIN_INPUT 下拉| MUX_MODE7)/*(0x74_RmiCL7_RDIU_Rx7*


)*(0x74_Rmu_RESPULLUX 1)*/rm1*(0x74_Rmu_RESPULLUX 1)*/rm1*(0x74_RDIUCL1) /*(U17) GPMC_WPn.rmii2_rxer */
0x40 ( PIN_INPUT 下拉| MUX_MODE7 )/*(R13) GPMC_a0.rmii2_rxen */
0x54 ( PIN_INPUT 下

拉| MUX_MODE7 )/*(V15) GPMC_a0.rm2_DR_DR_0*(0x67_MODE_R5_Rx_INPUT 0*(0x17_DR_DR_R5_R5_R5_DRV )*(0x17_DRV 0_DRV )7 (0x17_DRV 输入/Rx_M0_DR_DR_R5_DRV 0_R5_R5_R5_R5_INPUT 0_R5_R5_R5_RTO_R5_R5_R5_R5_R5_R5_R5_R5_R5_
/*(T16) GPMC_A10.rmii2_rxd1 */
0x108 (PIN_INPUT 下拉| MUX_MODE7)/*(H16) gmii1_COL.rmii2_REFCLK *
/>;
};

DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT |(
pullup




)* 0x14_MDIO_PULTR_0 ****/ MDIO_PULL0*****(0x14_MDIO_PULLON_M0*)

*/ MDIO_PULLON_M0***(0x14_MDIO_PULLU_M0*)*/ MDIO_PULLON_MDIO_PULLON_M0*(0x14_MDIO_PULLU_M0*)*)*(0x14_MDIO_PULLU_M DaVinci_MDIO_SLEEP{
pinctrl-single、pins =<
/* MDIO 复位值*/
0x148 (PIN_INPUT_PULLUE| MUX_MODE7)/*(M17) MDIO_DATA.MDIO_DATA *
/ 0x14c (PIN_INPUT_PULLUE7)/*(M18)/*(mctrl =












默认值)= 1);mctrlcs_clintrl = 1;mctrl =默认值= 1;mctrl = ctrl = 1 (ctrl = 1)<ctrnecnation_sleep);}<ctrl = 1 (ctrl = 1)<ctrl =默认值= 1)<ctrl 1 (ctrl 1);ctrl 1)<ctrl /*已从 am33xx.dtsi 中删除、但 CPSW 驱动程序需要*
/ dual_emac;
状态="确定";
}

;达芬奇_mdio{
pinctrl-names ="默认"、"睡眠";
pinctrl-names ="默认";
pinctrl-0 =<&Davinc_mdio_default>;
pincio-sleep = 1;pincio-sleep_1 = davinci_mdio_sleep;
状态="确定";
}

;&cpsw_emac0{
phy_id =<&Davinci_mdio>、<1>;
phy-mode ="RMII";
dual_emac_res_vlan =<1>;
};

&cpsw_emac1{
phy_id =<&Davinci_mdio>、<3>;
phy-mode ="RMII";
dual_emac_res_vlan =<2>;
};

phy_SEL{&
RMII-时钟-外部;
};

提前感谢您提供任何可能帮助我解决此问题的提示。

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

    您是否知道需要手动启动 eth1? 请参阅 processors.wiki.ti.com/.../Linux_Core_CPSW_User's_Guide

    如果问题未得到解决、您可以按照此检查清单进行操作、并将结果发布在此处: processors.wiki.ti.com/.../5x_CPSW
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我知道必须手动启动 eth1、否则该接口上的 ping 将无法正常工作。

    感谢您提供以太网分类检查清单链接。 出于某种原因、我以前没有找到它。

    我已经使用 TI SDK 进行了重新测试、但仍然存在相同的问题。

    执行的测试如下:

    • TI-PROCESSOR-SDK-LINUX-AM335x-EVM-03.02.00.05-Linux-x86-64安装
    • Linux AM335x-EVM 4.4.3.32-gadde2ca9f8 #1挤占 Wed 12月14日18:52:13 EST 2016 armv7l GNU/Linux
    • Arago 根文件系统
    • 定制板(DTS 已连接);它使用相同的时钟源作为两个以太网端口的参考时钟(不确定这是否是问题)
    • eth1的 IP 地址是手动设置的
    • 通过对 eth1执行 ping 命令发出的 ARP 请求得到响应(请参阅 Wireshark 屏幕截图)
    • 根据 ifconfig、eth1上接收到零字节、但 ethtool 未显示错误
    • 从 PHY 到 AM3352的 RX 线显示有活动、但我们的100MHz 示波器可能不足以进行进一步检查

    提前感谢您的任何帮助。

    e2e.ti.com/.../am33xx.dtsi.txte2e.ti.com/.../am335x_2D00_ipcomm_2D00_sec3.dts.txte2e.ti.com/.../8204.BootLog.txte2e.ti.com/.../2818.dmesg.txte2e.ti.com/.../ethtool_5F00_eth1.txte2e.ti.com/.../ethtool_2D00_S_5F00_eth1.txte2e.ti.com/.../ifconfig_5F00_after_5F00_boot.txte2e.ti.com/.../ifconfig_5F00_after_5F00_ping.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。 我已通知以太网专家。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Biser、

    由于我们使用引脚 U16进行信号 rmii2_crs_dv Barebox 设计、因此需要在 board.c 中进行以下函数调用:

    am33xx_select_rmii2_crs_dv();

    感谢您的帮助、对给您带来的不便深表歉意。

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

    您好!

    基于 AM3352、我的定制板上似乎存在相同的问题、我也将 U16用于 RMII_crs_dv。 目前、我们使用的是 Linux-RT-4.4.32。

    我是否要调用 am33xx_select_rmii2_crs_dv()? 在哪里可以找到此过程?

    此致

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

    必须在引导加载程序中进行该设置;在本例中为 Barebox、通过 am33xx_select_rmii2_crs_dv()函数进行管理。
    我在硬件的 board.c 文件中调用它、在 device_initcall 中。

    遗憾的是、如果您使用 U-Boot、我不知道如何在那里实现相同的功能。

    小心!