使用的是NXP的imx8qm做主控,imx8qm芯片有两个以太网,AR8031直接通过fec出去rj45
先来看设备树配置
&fec2 {
pinctrl-names = "default";
phy-mode = "rgmii-txid";
pinctrl-0 = <&pinctrl_fec2>;
fsl,magic-packet;
nvmem-cells = <&fec_mac1>;
nvmem-cell-names = "mac-address";
fsl,rgmii_txc_dly;
status = "okay";
fixed-link {
speed = <1000>;
full-duplex;
};
};
&i2c4 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c4>;
status = "okay";
i2c_ksz9893: ksz9893@5f {
compatible = "microchip,ksz9893";
reg = <0x5f>;
phy_mode = "rgmii-txid";
pinctrl-names = "default";
dsa,member = <1 1>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = "ksz-lan1";
};
port@1 {
reg = <1>;
label = "ksz-lan2";
};
port@2 {
reg = <2>;
lable = "cpu";
ethernet = <&fec2>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
};
ksz9893有3个端口:port3支持RGMII,我这里接的是主控的cpu,port1接通过网络变压器直接和wifi模块连接,port2口出去rj45以太网。
设备树的配置需要注意下面几点:
1、phy-mode应该设置为rgmii-txid
2、因为ks9893默认设置了tx-delay,所以cpu端要设置fsl,rgmii_txc_dly,如果这里设置错误,RX会一直没有数据
3、禁用自协商使用fixed-link模式,具体操作就是添加下面四行代码到设备树中
fixed-link {
speed = <1000>;
full-duplex;
};
4、dsa,member = <0 0>;这个属性暂时可以不用管它,当连接多个交换机时需要配置这个属性
5、交换机使用dsa驱动时,各个端口之间是隔离的不能通信,要想使端口之间正常通信需要建立桥接方式,下面假设m-lan1和m-lan2之间建立桥接
ip link set eth1 up
ip link set m-lan2 up
ip link set m-lan3 up
ip link add name br0 type bridge
ifconfig br0 hw ether 3A:25:D3:7C:AB:5A
ip link set dev m-lan2 master br0
ip link set dev m-lan3 master br0
ip addr add 192.168.2.102/24 dev br0
ip link set dev br0 up
5、ksz9893的驱动程序可以直接到microchip的官网下载,不过编译的时候可能会报错,自己修改一下即可.
版权说明:如非注明,本站文章均为 扬州驻场服务-网络设备调试-监控维修-南京泽同信息科技有限公司 原创,转载请注明出处和附带本文链接。
请在这里放置你的在线分享代码