工具/软件: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-时钟-外部; };
提前感谢您提供任何可能帮助我解决此问题的提示。
