1.
我们在9年前的 CPU 上使用 AM3356处理器。
我们的旧 CPU 包含1个使用 rmii1 MAC 和 Micrel PHY 的以太网端口(eth0)。
以下是 eth0端口配置的器件树的相关部分:
&Mac{
pinctrl-names ="默认"、"睡眠";
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>
状态="可以";
};
&Davinci_MDIO{
pinctrl-names ="默认"、"睡眠";
pinctrl-0 =<&davinci_mdio_default>;
pinctrl-1 =<&Davinci_MDIO_sleep>
bus_freq =<2500000>;
状态="可以";
};
&cpsw_emac0{
PHY_ID =<&Davinci_MDIO>、<0>;
PHY 模式="RMII";
};
&cpsw_emac1{
PHY_ID =<&Davinci_MDIO>、<1>;
PHY 模式="RMII";
状态="已禁用";
};
cpsw_default 和 cpsw_sleep 节点定义 rmii1 (从器件1)线路引脚多路复用。
eth0 (cpsw_emac0)接口没有问题。
2.
最近、我们设计了一个具有一个额外以太网端口 eth1的新 CPU 板。
我遵循了不同的器件树示例、还参考了 software-dl.ti.com/.../CPSW.html
来获取 DUAL_EMAC 模式的相关信息。
以下是我定义为支持 DUAL_EMAC 模式(2个独立以太网端口)的器件树。
&Mac{
pinctrl-names ="默认"、"睡眠";
pinctrl-0 =<&cpsw_default_cpu2>;
pinctrl-1 =<&cpsw_sleep_cpu2>;
dual_emac;
状态="可以";
};
&Davinci_MDIO{
pinctrl-names ="默认"、"睡眠";
pinctrl-0 =<&davinci_mdio_default>;
pinctrl-1 =<&Davinci_MDIO_sleep>
bus_freq =<2500000>;
状态="可以";
ethphy0:以太网-phy@0{
寄存器=<0>;
};
ethphy1:以太网-phy@1 {
寄存器=<1>;
};
};
&cpsw_emac0{
PHY-Handle =<ðphy0>;
PHY 模式="RMII";
dual_emac_res_vlan =<1>;
};
&cpsw_emac1{
PHY-Handle =<ðphy1>;
PHY 模式="RMII";
dual_emac_res_vlan =<2>;
};
cpsw_default _cpu2和 cpsw_sleep_cpU2节点定义 rmii1 (从器件1)和 rmii2 (slave2)线引脚多路复用。
我们使用最新的 TI SDK 8.02软件并将其移植到了巡视 CPU 板中。
旧的 eth0端口工作正常。
在启动期间、我们看到成功检测到第二个"eth1"端口的 PHY、并发出相应的检测消息。
当我们尝试启动 eth1端口(ifconfig eth1 10.100.101.100 netmask 255.255.255.0 up)时,我们从 PHY 驱动程序收到一条故障消息
表示 PHY 软件复位已超时并失败。
在内核配置中、我看到了以下定义的组件:TI_Davinci_MDIO、TI_CPSW、TI_CPSW_SWITCHDEV
我们正在尝试确定问题是与 PHY 连接还是与 Sitara 的 RMII2线路有关。
假设 eth0端口可以正常工作、eth1不能正常工作、我有一些问题:
Q1)以上 Linux 设备树配置和 Linux 内核配置是否足以支持2个独立的以太网端口?
Q2)是否需要在 CPSW 交换机上执行其它操作才能启用第二个从端口(ETH1、RMII2)?
Q3)如何验证 CPSW 从器件2上的 MAC 层(RMII2)是否已启用?
Martin Roth
Motorola Solutions