Open main menu

DAVE Developer's Wiki β

Changes

DESK-MX6-L/Pheripherals/Ethernet

5,260 bytes added, 8 January
no edit summary
<section begin="History" />
{| style="border-collapse:collapse; "
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
|-
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Version!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|X.Y.Z{{oldid|14103|2021/07/16}}|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month Year|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; borderFirst DESK-bottom:solid 2px #73B2C7; backgroundMX6-color:#edf8fb; padding:5px; color:#000000"|TBDL release
|-
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |{{oldid|16270|2022/03/03}}
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |DESK-MX6-L 3.0.0 release
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|[TBD_link X.Y.Z]{{oldid|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"16996|Month Year2022/05/11}}|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBDAdded info for 1Gbps connection
|-
|! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fbededed; padding:5px; color:#000000"|...2023/04/11|! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fbededed; padding:5px; color:#000000"|...|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; borderDESK-bottom:solid 2px #73B2C7; backgroundMX6-color:#edf8fb; padding:5px; color:#000000"|.L 4.0.0 release
|-
|}
<section end="History" /><section begin="Body" />
==Peripheral Ethernet ==
The ethernet interface is made available through the i.MX6 ''TBD: sostituire tutti i dump con le informazioni sull'uso della perifericafec'''interface which should be initialized on the device tree.
=== Device tree configuration ===
Here below an example of device tree configuration used on standard DAVE's kit for the AXEL Lite SOM:
From <code>''carrierimx6qdl-axelcommon.dts''dtsi </code>:
<pre>
&can1 fec {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexcan1_axelpinctrl_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>;
};
};
};
</pre>
From <code>''carrier-common&iomuxc {...dtsi''</code>: <pre>... can1 enet { pinctrl_flexcan1_axelpinctrl_enet_axel: flexcan1axelgrpenetgrp-1 {
fsl,pins = <
MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x80000000MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x80000000MX6QDL_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
>;
};
};
...
...
};
</pre>
===Accessing the peripheral===
AXEL LITE SOM provides the network interface mapped at eth0.
 
====Linux messages at boot time====
...
...
[ 13.807495355256] flexcan 2090000fec 2188000.flexcanethernet eth0: 2090000registered PHC device 0......flexcan supply xceiver not found, using dummy regulator[ 1 16.817366138362] flexcan 2090000Micrel KSZ9031 Gigabit PHY 2188000.flexcanethernet-1: device registered 07: attached PHY driver (reg_basemii_bus:phy_addr=c0a300002188000.ethernet-1:07, irq=31POLL)
...
...
[ 3.952659] can: controller area network core (rev 20170425 abi 9)
[ 3.963413] can: raw protocol (rev 20170425)
[ 3.967717] can: broadcast manager protocol (rev 20170425 t)
[ 3.973397] can: netlink gateway (rev 20170425) max_hops=1
</pre>
Cable connection: <pre class="workstation-terminal">......[ 18.235470] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx......</pre> ===Enable = Check the interface and check statuswith ifconfig ==== <pre class="workstation-terminal">root@desk-mx6:~# ifconfig eth0eth0: 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</pre> ==== Test with [https://iperf.fr/ iperf] ==== 
<pre class="workstation-terminal">
root@imx6qxelkdesk-mx6:~# ip link set can0 type can bitrate 500000iperf3 -t 5 -c 192.168.4.47root@imx6qxelk:~# ifconfig can0 upConnecting to host 192.168.4.47, port 5201[ 5] local 192.168.4.186 port 48642 connected to 192.168.4.47 port 5201root@imx6qxelk:~# ifconfig can0[ ID] Interval Transfer Bitrate Retr Cwndcan0 Link encap:UNSPEC [ HWaddr 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 - - - - - - - - - - - - - - - - -00-00-00-00-00-00-00-00-[ ID] Interval Transfer Bitrate Retr[ 5] 0.00-5.00 UP RUNNING NOARP sec MTU:16 55.7 MBytes Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:93.5 Mbits/sec 0 sender TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 ([ 5] 0.0 B) 00-5.05 sec 55.5 MBytes TX bytes:0 (092.3 Mbits/sec receiveriperf Done.0 B) Interrupt:31</pre>
root@imx6qxelk===Gigabit ethernet ===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====The [[AXEL_Lite_SOM/AXEL_Lite_Evaluation_Kit/Electrical_and_Mechanical_Documents/Schematics#Schematics |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====Standard [[DESK-MX6-L | 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:<pre class="workstation-terminal">=> setenv disable_giga 0=> saveenv</pre> U-Boot network driver for the ethernet PHY <code>drivers/net/phy/micrel_ksz90x1.c</code> uses this variable for enabling/disabling the speed and autonegotiation for the ''1000 speed''. Moreover, the following device tree entry in the <code>imx6dl-axellite.dtsi</code> (or <code>imx6q-axellite.dtsi</code> if the SOC is a i.MX6Q) file, should be changed from:<pre>&ethphy { max-speed = <100>;};</pre>to:~#<pre>&ethphy { max-speed = <1000>;};
</pre>
==== Usage with Limitations====As per official NXP Chip errata documentation [https://githubwww.nxp.com/linux-candocs/can-utils can-utilsen/errata/IMX6SDLCE.pdf 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''
''TBD====Linux messages at boot time====Cable connection: reference verso eventuali informazioni sul web''
<pre class="workstation-terminal">
root@imx6qxelk......[ 15.360433] fec 2188000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx[ 15.368136] IPv6: ADDRCONF(NETDEV_CHANGE): eth0:~# ip link set can0 type becomes ready......</pre> ==== Test with [https://iperf.fr/ iperf] ====The following test shows a ''real case'' with a 390Mbps transfer rate (depending on the testbed) but a >=400Mbps (limited to 470Mbps) can bitrate 500000 triplebe obtained:  <pre class="workstation-sampling onterminal">root@imx6qxelkdesk-mx6:~# ifconfig can0 upiperf3 -c 192.168.8.125Connecting 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 KBytesroot@imx6qxelk:~# cansend can0 128#1122334455667788[ 5] 5.00-6.00 sec 45.4 MBytes 381 Mbits/sec 0 387 KBytesroot@imx6qxelk:~# candump can0[ 5] 6.00-7.00 sec 46.4 MBytes 389 Mbits/sec 0 410 KBytes[ 5] 7.00-8.00 can0 sec 128 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 11 22 33 44 55 66 77 88sec 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@imx6qxelkdesk-mx6:~#
</pre>
<section end=== Additional information ===Each CAN port appears like a networking interface in the form <code>canX</code> where <b><i>X</i><"Body" /b> is the port number.
Information about programming the CAN socket interface is given in the kernel tree under ''Documentation/networking/can.txt''
<section end=Body/>
----
[[Category:AXEL Lite]]
8,186
edits