DESK-MX8M-L/Peripherals/Ethernet

From DAVE Developer's Wiki
Jump to: navigation, search
History
ID# Issue Date Notes

16714

21/06/2022 First DESK-MX8M-L release

17552

24/02/2023 DESK-MX8M-L-2.0.0 release


Peripheral Ethernet[edit | edit source]

The ethernet interface is made available through the i.MX8M fec interface which should be initialized on the device tree.

Device tree configuration[edit | edit source]

ORCA SOM[edit | edit source]

Here below an example of device tree configuration used on standard DAVE's kit for the ORCA SOM:

From imx8mp-mito8mplus-cb1001.dts :

&fec {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_fec>;
	phy-mode = "rgmii-id";
	phy-handle = <&ethphy1>;
	fsl,magic-packet;
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy1: ethernet-phy@8 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <8>;
			eee-broken-1000t;
			eee-broken-100tx;
		};
	};
};


From imx8mp-mito8mplus.dtsi :

&eqos {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_eqos>;
	phy-mode = "rgmii-id";
	phy-handle = <&ethphy0>;
	status = "okay";

	mdio {
		compatible = "snps,dwmac-mdio";
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy0: ethernet-phy@7 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <7>;
			eee-broken-1000t;
			eee-broken-100tx;
		};
	};
};
...
...

&iomuxc {
...
...
	pinctrl_eqos: eqosgrp {
		fsl,pins = <
			MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC		0x3
			MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO		0x3
			MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0	0x91
			MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1	0x91
			MX8MP_IOMUXC_ENET_RD2__ENET_QOS_RGMII_RD2	0x91
			MX8MP_IOMUXC_ENET_RD3__ENET_QOS_RGMII_RD3	0x91
			MX8MP_IOMUXC_ENET_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK	0x91
			MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL	0x91
			MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0	0x1f
			MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1	0x1f
			MX8MP_IOMUXC_ENET_TD2__ENET_QOS_RGMII_TD2	0x1f
			MX8MP_IOMUXC_ENET_TD3__ENET_QOS_RGMII_TD3	0x1f
			MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL	0x1f
			MX8MP_IOMUXC_ENET_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK	0x1f
			MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10		0x19
		>;
	};

	pinctrl_fec: fecgrp {
		fsl,pins = <
			MX8MP_IOMUXC_SAI1_RXD2__ENET1_MDC		0x3
			MX8MP_IOMUXC_SAI1_RXD3__ENET1_MDIO		0x3
			MX8MP_IOMUXC_SAI1_RXD4__ENET1_RGMII_RD0		0x91
			MX8MP_IOMUXC_SAI1_RXD5__ENET1_RGMII_RD1		0x91
			MX8MP_IOMUXC_SAI1_RXD6__ENET1_RGMII_RD2		0x91
			MX8MP_IOMUXC_SAI1_RXD7__ENET1_RGMII_RD3		0x91
			MX8MP_IOMUXC_SAI1_TXC__ENET1_RGMII_RXC		0x91
			MX8MP_IOMUXC_SAI1_TXFS__ENET1_RGMII_RX_CTL	0x91
			MX8MP_IOMUXC_SAI1_TXD0__ENET1_RGMII_TD0		0x1f
			MX8MP_IOMUXC_SAI1_TXD1__ENET1_RGMII_TD1		0x1f
			MX8MP_IOMUXC_SAI1_TXD2__ENET1_RGMII_TD2		0x1f
			MX8MP_IOMUXC_SAI1_TXD3__ENET1_RGMII_TD3		0x1f
			MX8MP_IOMUXC_SAI1_TXD4__ENET1_RGMII_TX_CTL	0x1f
			MX8MP_IOMUXC_SAI1_TXD5__ENET1_RGMII_TXC		0x1f
			MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02		0x19
		>;
	};
...
...
};

MITO 8M Mini[edit | edit source]

Here below an example of device tree configuration used on standard DAVE's kit for the MITO 8M Mini SOM:

From imx8mm-mito8mmini.dts :

...
...
&fec1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_fec1>, <&pinctrl_enet_reset>, <&pinctrl_enet_irq>;
	phy-mode = "rgmii-id";
	phy-handle = <&ethphy0>;
	fsl,magic-packet;
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy0: ethernet-phy@7 {
			compatible = "ethernet-phy-ieee802.3-c22";
			txc-skew-ps = <1860>;
			txen-skew-ps = <0>;
			txd0-skew-ps = <0>;
			txd1-skew-ps = <0>;
			txd2-skew-ps = <0>;
			txd3-skew-ps = <0>;
			rxc-skew-ps = <1740>;
			reg = <7>;
		};
	};
};
...
...
&iomuxc {
...
...
	pinctrl_enet_irq: enet_irqgrp {
		fsl,pins = <
			MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10			0x41   /* ETH0_INTn */
		>;
	};

	pinctrl_enet_reset: enet_resetgrp {
		fsl,pins = <
			MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1			0x19	/* ETH0_RESETn */
		>;
	};

	pinctrl_fec1: fec1grp {
		fsl,pins = <
			MX8MM_IOMUXC_ENET_MDC_ENET1_MDC			0x3
			MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO		0x3
			MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3		0x1f
			MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2		0x1f
			MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1		0x1f
			MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0		0x1f
			MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3		0x91
			MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2		0x91
			MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1		0x91
			MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0		0x91
			MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC		0x1f
			MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC		0x91
			MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL	0x91
			MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL	0x1f
		>;
	};
...
...
};

Accessing the peripheral in ORCA SOM[edit | edit source]

ORCA SOM provides the network interface mapped as eth0 and eth1.

Linux messages at boot time[edit | edit source]

  • eth0
...
...
[    2.253084] fec 30be0000.ethernet eth0: registered PHC device 0
...
[    6.211939] Generic PHY 30be0000.ethernet-1:08: attached PHY driver [Generic PHY] (mii_bus:phy_addr=30be0000.ethernet-1:08, irq=POLL)
  • eth1
[    6.139981] imx-dwmac 30bf0000.ethernet eth1: PHY [stmmac-1:07] driver [Microchip KSZ9131 Gigabit PHY]
[    6.162868] imx-dwmac 30bf0000.ethernet eth1: No Safety Features support found
[    6.170459] imx-dwmac 30bf0000.ethernet eth1: IEEE 1588-2008 Advanced Timestamp supported
[    6.181622] imx-dwmac 30bf0000.ethernet eth1: registered PTP clock
[    6.187870] imx-dwmac 30bf0000.ethernet eth1: configuring for phy/rgmii-id link mode

Cable connection:

...
...
[   10.422034] fec 30be0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[   10.429651] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Check the interface with ifconfig[edit | edit source]

root@desk-mx8mp:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr f2:b3:2f:ee:0c:69
          inet6 addr: fe80::f0b3:2fff:feee:c69/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16657 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1806277 (1.7 MiB)  TX bytes:19191 (18.7 KiB)

root@desk-mx8mp:~# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 2e:89:64:91:78:a6
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:45

root@desk-mx8mp:~#

Test with iperf3[edit | edit source]

root@desk-mx8mp:~#  iperf3 -t 5 -c 192.168.0.125
Connecting to host 192.168.0.125, port 5201
[  5] local 192.168.0.146 port 56130 connected to 192.168.0.131 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   114 MBytes   954 Mbits/sec    0    385 KBytes
[  5]   1.00-2.00   sec   113 MBytes   945 Mbits/sec    0    385 KBytes
[  5]   2.00-3.00   sec   112 MBytes   938 Mbits/sec    0    403 KBytes
[  5]   3.00-4.00   sec   112 MBytes   940 Mbits/sec    0    423 KBytes
[  5]   4.00-5.00   sec   112 MBytes   941 Mbits/sec    0    423 KBytes
[  5]   5.00-6.00   sec   113 MBytes   945 Mbits/sec    0    423 KBytes
[  5]   6.00-7.00   sec   112 MBytes   940 Mbits/sec    0    423 KBytes
[  5]   7.00-8.00   sec   112 MBytes   941 Mbits/sec    0    465 KBytes
[  5]   8.00-9.00   sec   112 MBytes   943 Mbits/sec    0    465 KBytes
[  5]   9.00-10.00  sec   112 MBytes   938 Mbits/sec    0    465 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.10 GBytes   943 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec                  receiver

iperf Done.
root@desk-mx8mp:~#

Accessing the peripheral in MITO 8M Mini[edit | edit source]

MIN SOM provides the network interface mapped as eth0.

Linux messages at boot time[edit | edit source]

...
[    4.532401] fec 30be0000.ethernet eth0: registered PHC device 0
...
[    8.010083] Micrel KSZ9031 Gigabit PHY 30be0000.ethernet-1:07: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=30be0000.ethernet-1:07, irq=POLL)
...

Cable connection:

...
[   12.113452] fec 30be0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   12.121253] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
...

Check the interface with ifconfig[edit | edit source]

root@desk-mx8mm:~# ifconfig
eth0      Link encap:Ethernet  HWaddr b2:49:03:4f:c6:fe  
          inet6 addr: fe80::b049:3ff:fe4f:c6fe/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21640 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2288423 (2.1 MiB)  TX bytes:12548 (12.2 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:82 errors:0 dropped:0 overruns:0 frame:0
          TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6220 (6.0 KiB)  TX bytes:6220 (6.0 KiB)

root@desk-mx8mm:~# 

Test with iperf3[edit | edit source]

root@desk-mx8mm:~# iperf3 -t 5 -c 192.168.0.166
Connecting to host 192.168.0.166, port 5201
[  5] local 192.168.0.111 port 42606 connected to 192.168.0.166 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   110 MBytes   923 Mbits/sec    0    769 KBytes       
[  5]   1.00-2.00   sec   108 MBytes   901 Mbits/sec   85    652 KBytes       
[  5]   2.00-3.00   sec   108 MBytes   902 Mbits/sec  144    410 KBytes       
[  5]   3.00-4.00   sec   109 MBytes   911 Mbits/sec    0    467 KBytes       
[  5]   4.00-5.00   sec   110 MBytes   923 Mbits/sec   74    400 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec   544 MBytes   912 Mbits/sec  303             sender
[  5]   0.00-5.00   sec   540 MBytes   906 Mbits/sec                  receiver

iperf Done.
root@desk-mx8mm:~# 


MAC Address[edit | edit source]

For the MAC Address programming, refers to the following wiki page