LS1028的网络拓扑结构
forlinx的开发板目前只做了五路网口,原生的RGMII并没有配置出来,默认将相关引脚功能用作了音频信号,若将该引脚功能用作了RGMII,音频功能就不能使用了。本人主要介绍软件上的修改,对于硬件原理部分是有硬件工程师设计的,在此不做概述。
原有引脚用作音频信号,如下所示:
RGMII网口需要用到的引脚
第一列代表RCW字段;第二列表示RCW字段的值;第三列表示引脚功能。
软件配置
第一步修改RCW
RCW路径:OK1028-linux-fs/packages/firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw
修改RCW配置引脚功能
GTX_CLK125_PMUX=0
EC1_SAI3_6_PMUX=0
EC1_SAI4_5_PMUX=0
第二步修改uboot设备树
设备树路径:OK1028-linux-fs/packages/firmware/u-boot/arch/arm/dts/fsl-ls1028a-rdb.dts
软件上修改以物理PHY芯片地址为6为例,进行phy地址的注册,后续根据实际原理做修改。
&enetc0 {
status = "okay";
phy-mode = "sgmii";
phy-handle = <&rdb_phy0>;
};
+&enetc1 {
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&rgm_phy0>;
+};
ðsw_ports {
port@0 {
status = "okay";
phy-mode = "qsgmii";
phy-handle = <&sw_phy0>;
};
port@1 {
status = "okay";
phy-mode = "qsgmii";
phy-handle = <&sw_phy1>;
};
port@2 {
status = "okay";
phy-mode = "qsgmii";
phy-handle = <&sw_phy2>;
};
port@3 {
status = "okay";
phy-mode = "qsgmii";
phy-handle = <&sw_phy3>;
};
};
&mdio0 {
status = "okay";
+ rgm_phy0: phy@6 {
+ reg = <6>;
+ };
rdb_phy0: phy@2 {
reg = <2>;
};
sw_phy0: phy@8 {
reg = <0x08>;
};
sw_phy1: phy@9 {
reg = <0x09>;
};
sw_phy2: phy@a {
reg = <0x0a>;
};
sw_phy3: phy@b {
reg = <0x0b>;
};
};
第三步修改内核设备树
内核设备树路径:OK1028-linux-fs/packages/linux/linux/arch/arm64/boot/dts/freescale/OK1028A-C.dts
&enetc_port0 {
phy-handle = <&sgmii_phy0>;
phy-connection-type = "sgmii";
mdio {
#address-cells = <1>;
#size-cells = <0>;
sgmii_phy0: ethernet-phy@2 {
reg = <0x2>;
};
};
};
+&enetc_port1 {
+ phy-handle = <&rgmii_phy0>;
+ phy-connection-type = "rgmii";
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ rgmii_phy0: ethernet-phy@6 {
+ reg = <0x6>;
+ };
+ };
+};
软件验证
查看MDIO总线上挂载的phy芯片
查看设备节点
RGMII生成的设备节点名字为eno1
网卡ping测试
配置IP、网关、DNS,进行ping测试,网卡能够正常上网,到此RGMII调试成功。
其他
RCW引脚功能复用
1)RCW :GTX_CLK125_PMUX
当RCW字段GTX_CLK125_PMUX=0时该引脚被用作EC1_GTX_CLK125功能
2)RCW:EC1_SAI3_6_PMUX
当RCW字段EC1_SAI3_6_PMUX=0时,引脚被复用为ENETC RGMII(EC1_TXD[1:0],EC1_RXD[1:0],EC1_RX_CLK,EC1_RX_DV)功能。
3)RCW:EC1_SAI4_5_PMUX
当RCW字段EC1_SAI4_5_PMUX=0时,引脚被复用为 EC1_TXD[3:2], EC1_TX_EN, EC1_GTX_CLK, EC1_RXD[3:2]