DESK-MX6-L/Peripherals/Ethernet

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

2021/07/16

First DESK-MX6-L release

2022/03/03

DESK-MX6-L 3.0.0 release

2022/05/11

Added info for 1Gbps connection
2023/04/11 DESK-MX6-L 4.0.0 release


Peripheral Ethernet[edit | edit source]

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

Device tree configuration[edit | edit source]

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

From imx6qdl-axelcommon.dtsi :

&fec {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_enet_axel>;
    phy-mode = "rgmii";
    phy-handle = <&\ethphy>;
    status = "okay";

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

        ethphy: ethernet-phy@7 {
            compatible = "ethernet-phy-ieee802.3-c22";
            reg = <7>;
        };
    };
};

&iomuxc {
...
...
    enet {
        pinctrl_enet_axel: enetgrp-1 {
            fsl,pins = <
                MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
                MX6QDL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
                MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
                MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
                MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
                MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
                MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
                MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
                MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
                MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
                MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
                MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
                MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
                MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
                MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
                MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28     0xb0b1
                MX6QDL_PAD_SD4_DAT3__GPIO2_IO11        0xb0b1
                MX6QDL_PAD_SD4_DAT2__GPIO2_IO10        0xb0b1
            >;
        };
    };
...
...
};

Accessing the peripheral[edit | edit source]

AXEL LITE SOM provides the network interface mapped at eth0.

Linux messages at boot time[edit | edit source]

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

Cable connection:

...
...
[   18.235470] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
...
...

Check the interface with ifconfig[edit | edit source]

root@desk-mx6:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.186  netmask 255.255.255.0  broadcast 192.168.4.255
        inet6 fe80::b8c5:33ff:fe96:eeb  prefixlen 64  scopeid 0x20<link>
        ether ba:c5:33:96:0e:eb  txqueuelen 1000  (Ethernet)
        RX packets 355  bytes 45752 (44.6 KiB)
        RX errors 0  dropped 75  overruns 0  frame 0
        TX packets 57  bytes 7691 (7.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Test with iperf[edit | edit source]

root@desk-mx6:~# iperf3 -t 5 -c 192.168.4.47
Connecting to host 192.168.4.47, port 5201
[  5] local 192.168.4.186 port 48642 connected to 192.168.4.47 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  11.4 MBytes  95.4 Mbits/sec    0   96.2 KBytes       
[  5]   1.00-2.00   sec  11.0 MBytes  92.4 Mbits/sec    0    102 KBytes       
[  5]   2.00-3.00   sec  11.1 MBytes  93.2 Mbits/sec    0    106 KBytes       
[  5]   3.00-4.00   sec  11.2 MBytes  93.8 Mbits/sec    0    106 KBytes       
[  5]   4.00-5.00   sec  11.0 MBytes  92.6 Mbits/sec    0    106 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  55.7 MBytes  93.5 Mbits/sec    0             sender
[  5]   0.00-5.05   sec  55.5 MBytes  92.3 Mbits/sec                  receiver
iperf Done.

Gigabit ethernet[edit | edit source]

AXEL LITE SOM provides the 4 twisted pair data line for interfacing a magnetic transformer supporting the Gigabit ethernet interface. Due to the most popular and cheaper 100Mbps interface used in the Industrial field, the standard configuration (hardware and software) for the ethernet interface is 100Mbps. Furthermore, the 1Gps negotiation requires a longer time so, if not required, it is better to keep the interface configured at the real speed used.

The following paragraphs describe how to change the default configuration for supporting 1Gbps ethernet hardware and software configuration.

Hardware connections[edit | edit source]

The AXEL Lite EVK schematics show how to connect the ethernet physical interface to a 10/100Mbs or 1Gbps connectors. For a 1Gbps connection, it is enough to connect all 4 pair lines (in the EVK schematics there is an optional R-Pack RP2 to be mounted)

Software configuration[edit | edit source]

Standard DESK-MX6-L BSP is configured for a 100Mbps interface configuration. For enabling 1Gbps, the following u-boot environment variable has to be defined (and saved) in the environment:

=> setenv disable_giga 0
=> saveenv

U-Boot network driver for the ethernet PHY drivers/net/phy/micrel_ksz90x1.c uses this variable for enabling/disabling the speed and autonegotiation for the 1000 speed.

Moreover, the following device tree entry in the imx6dl-axellite.dtsi (or imx6q-axellite.dtsi if the SOC is a i.MX6Q) file, should be changed from:

&ethphy {
	max-speed = <100>;
};

to:

&ethphy {
	max-speed = <1000>;
};

Limitations[edit | edit source]

As per official NXP Chip errata documentation ERR004512, the i.MX6S/DL/Q have a maximum performance limited to 470Mpbs:

The theoretical maximum performance of 1 Gbps ENET is limited to 470 Mbps (total for Tx and Rx). The actual measured performance in an optimized environment is up to 400 Mbps

Linux messages at boot time[edit | edit source]

Cable connection:

...
...
[   15.360433] fec 2188000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   15.368136] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
...
...

Test with iperf[edit | edit source]

The following test shows a real case with a 390Mbps transfer rate (depending on the testbed) but a >=400Mbps (limited to 470Mbps) can be obtained:

root@desk-mx6:~# iperf3 -c 192.168.8.125
Connecting to host 192.168.8.125, port 5201
[  5] local 192.168.8.106 port 35804 connected to 192.168.8.125 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  46.5 MBytes   390 Mbits/sec    0    352 KBytes
[  5]   1.00-2.00   sec  46.4 MBytes   389 Mbits/sec    0    368 KBytes
[  5]   2.00-3.00   sec  46.5 MBytes   390 Mbits/sec    0    443 KBytes
[  5]   3.00-4.00   sec  47.0 MBytes   394 Mbits/sec    0    443 KBytes
[  5]   4.00-5.00   sec  46.8 MBytes   393 Mbits/sec    0    462 KBytes
[  5]   5.00-6.00   sec  45.4 MBytes   381 Mbits/sec    0    387 KBytes
[  5]   6.00-7.00   sec  46.4 MBytes   389 Mbits/sec    0    410 KBytes
[  5]   7.00-8.00   sec  45.9 MBytes   385 Mbits/sec    0    461 KBytes
[  5]   8.00-9.00   sec  47.4 MBytes   397 Mbits/sec    0    474 KBytes
[  5]   9.00-10.00  sec  46.4 MBytes   389 Mbits/sec    0    495 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   465 MBytes   390 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   463 MBytes   389 Mbits/sec                  receiver

iperf Done.
root@desk-mx6:~#