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
我正在进行一项设计、该设计使用两个外部以太网接口、使用 AM3354处理器上的 IPv6全局唯一 IP 地址。 通过阅读各种文章以及使用双 EMAC 的 TI processors.wiki.ti.com (http://processors.wiki.ti.com/index.php/Linux_Core_CPSW_User's_Guide#Dual_Standalone_EMAC_mode ),我找到了以下器件树条目:
cpsw_emac0{&cpsw_emac0}
MDIO =<&Davinci_MDIO>;
PHY_ID =<1>;
PHY-MODE ="RMII";
DUAL_EMAC_res_vlan =<1>;
};
cpsw_emac1{&cpsw_emac1}
MDIO =<&Davinci_MDIO>;
PHY_ID =<9>;
PHY-MODE ="RMII";
DUAL_EMAC_res_vlan =<2>;
};
/*将两个 Sitara RMII 接口设置为使用外部时钟*/
phy_SEL{&
RMII-时钟-外部;
};
Mac{(&M)
从器件=<2>;
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>;
DUAL_EMAC =<1>;
};
DaVinci_MDIO{
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&Davinc_MDIO_default>;
pinctrl-1 =<&Davinc_MDIO_SLEEP>;
};
此配置有效、我在 Linux 中显示了两个以太网接口(请参阅下面清除了地址以保护隐私)。 我可以成功 ping 每个接口。
和 是从 Sitara 器件中的融合地址读取的 MAC。
和 都是唯一的
和 由我在同一子网上定义
# ifconfig
eth0 Link encap:以太网 HWaddr
inet6地址: /64范围:链接
inet6地址: 范围:全局
运行多播 MTU:1500公制:1的上广播
RX 数据包:9230错误:0丢弃:0超限:0帧:0
TX 数据包:17385错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:980934 (957.9 KiB) TX 字节:2276748 (2.1 MiB)
中断:56
ETH1链路连接:以太网 HWaddr
inet6地址: 范围:链接
inet6地址: 范围:全局
运行多播 MTU:1500公制:1的上广播
RX 数据包:13117错误:0丢弃:0超限:0帧:0
TX 数据包:16902错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:1367799 (1.3 MiB) TX 字节:2237094 (2.1 mib)
我还在运行此处找到的修补程序: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/426405?AM3352-Using-emac1-0x4A100300-as-default-and-only-ETH0-device-in-linux。
但是,当我物理拔下连接到 eth0的电缆时,对 eth1的 ping 会停止或完全停止,但在拔下 eth1时,我看不到相同的行为,eth0会继续响应。 我在 cpsw.c 驱动程序中找不到会导致此行为的任何设置/函数。
如果有任何帮助,将不胜感激。
Thx、
Scott
Biser、
感谢您的回复。 PHY 独立计时。
Scott