当前位置:首页 > 厂商动态 > 米尔电子
[导读]NXP i.MX93处理器有两个以太网控制器,其中eqos是TSN网络控制器。另外一个Fec以太网外围设备使设备能够在以太网上传输和接收符合IEEE 802.3-2002标准的数据,提供了一个可配置的、灵活的外设,以满足各种应用程序和客户的需求。一般情况CPU集成MAC,PHY采用独立芯片;CPU不集成MAC,MAC和PHY采用集成芯片。MAC和PHY工作在OSI模型的数据链路层和物理层。i.MX93的MAC集成在cpu内部,所以还需要外接phy芯片。

NXP i.MX93处理器有两个以太网控制器,其中eqos是TSN网络控制器。另外一个Fec以太网外围设备使设备能够在以太网上传输和接收符合IEEE 802.3-2002标准的数据,提供了一个可配置的、灵活的外设,以满足各种应用程序和客户的需求。一般情况CPU集成MAC,PHY采用独立芯片;CPU不集成MAC,MAC和PHY采用集成芯片。MAC和PHY工作在OSI模型的数据链路层和物理层。i.MX93的MAC集成在cpu内部,所以还需要外接phy芯片。

MYD-LMX9X开发板(米尔基于NXP i.MX93开发板)外接了两个YT8531SH千兆PHY芯片,ENET1原理图如图4-7:

图4-7. ENET1原理图

查看原理图与《MYD-LMX9X-PinList-V1.0.pdf》得出 ENET1数据管脚与i.MX93的对应关系如表4-6:

ENET2原理图如图4-8:

图4-8. ENET2原理图

查看原理图与《MYD-LMX9X-PinList-V1.0.pdf》得出 ENET2数据管脚与MYD-LMX9X的对应关系如表4-7:

查看内核设备树引脚定义

在内核中,有对i.MX93芯片的网口设备树资源做了定义,此部分由芯片产商提供,属于公共资源,实际上我们不需要修改这部分,只需要引用即可,如下:

PC:~/myd-lmx9x-bsp/myir-imx-linux$ cat arch/arm64/boot/dts/myir/imx93.dtsi

......

fec: ethernet@42890000 {

compatible = "fsl,imx93-fec", "fsl,imx8mp-fec", "fsl,imx8mq-fec";

reg = <0x42890000 0x10000>;

interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>,

<GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,

<GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,

<GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>;

clocks = <&clk IMX93_CLK_ENET1_GATE>,

<&clk IMX93_CLK_ENET1_GATE>,

<&clk IMX93_CLK_ENET_TIMER1>,

<&clk IMX93_CLK_ENET_REF>,

<&clk IMX93_CLK_ENET_REF_PHY>;

clock-names = "ipg", "ahb", "ptp",

"enet_clk_ref", "enet_out";

assigned-clocks = <&clk IMX93_CLK_ENET_TIMER1>,

<&clk IMX93_CLK_ENET_REF>,

<&clk IMX93_CLK_ENET_REF_PHY>;

assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>,

<&clk IMX93_CLK_SYS_PLL_PFD0_DIV2>,

<&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>;

assigned-clock-rates = <100000000>, <250000000>, <50000000>;

fsl,num-tx-queues = <3>;

fsl,num-rx-queues = <3>;

fsl,stop-mode = <&wakeupmix_gpr 0x0c 1>;

status = "disabled";

};

eqos: ethernet@428a0000 {

compatible = "nxp,imx93-dwmac-eqos", "snps,dwmac-5.10a";

reg = <0x428a0000 0x10000>;

interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>,

<GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;

interrupt-names = "eth_wake_irq", "macirq";

clocks = <&clk IMX93_CLK_ENET_QOS_GATE>,

<&clk IMX93_CLK_ENET_QOS_GATE>,

<&clk IMX93_CLK_ENET_TIMER2>,

<&clk IMX93_CLK_ENET>,

<&clk IMX93_CLK_ENET_QOS_GATE>;

clock-names = "stmmaceth", "pclk", "ptp_ref", "tx", "mem";

assigned-clocks = <&clk IMX93_CLK_ENET_TIMER2>,

<&clk IMX93_CLK_ENET>;

assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>,

<&clk IMX93_CLK_SYS_PLL_PFD0_DIV2>;

assigned-clock-rates = <100000000>, <250000000>;

intf_mode = <&wakeupmix_gpr 0x28>;

clk_csr = <0>;

nvmem-cells = <&eth_mac2>;

nvmem-cell-names = "mac-address";

status = "disabled";

};

上述只是对网口做了基本的初始化,并没有对具体的硬件设备进行适配,在实际的情况下需要对具体的网口设备进行硬件引脚资源的适配。

添加网卡设备树节点

根据原理图的定义添加网口的设备树配置,修改myir-imx93-11x11.dts文件,如下:

PC:~/myd-lmx9x-bsp/myir-imx-linux$ cat arch/arm64/boot/dts/myir/myir-imx93-11x11.dts

......

&eqos {

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_eqos>;

phy-mode = "rgmii-id";

phy-handle = <&ethphy1>;

status = "okay";

mdio {

compatible = "snps,dwmac-mdio";

#address-cells = <1>;

#size-cells = <0>;

clock-frequency = <5000000>;

ethphy1: ethernet-phy@1 {

compatible = "ethernet-phy-ieee802.3-c22";

reg = <4>;

eee-broken-1000t;

};

};

};

&fec {

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_fec>;

phy-mode = "rgmii-id";

phy-handle = <&ethphy2>;

fsl,magic-packet;

status = "okay";

mdio {

compatible = "snps,dwmac-mdio";

#address-cells = <1>;

#size-cells = <0>;

clock-frequency = <5000000>;

ethphy2: ethernet-phy@2 {

compatible = "ethernet-phy-ieee802.3-c22";

reg = <6>;

eee-broken-1000t;

};

};

};

网卡设备树配置

添加网卡设备树节点的eth1_pins和eth2_pins引脚定义:

pinctrl_eqos: eqosgrp {

fsl,pins = <

MX93_PAD_ENET1_MDC__ENET_QOS_MDC 0x57e

MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO 0x57e

MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0 0x57e

MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1 0x57e

MX93_PAD_ENET1_RD2__ENET_QOS_RGMII_RD2 0x57e

MX93_PAD_ENET1_RD3__ENET_QOS_RGMII_RD3 0x57e

MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK 0x5fe

MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL 0x57e

MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0 0x57e

MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1 0x57e

MX93_PAD_ENET1_TD2__ENET_QOS_RGMII_TD2 0x57e

MX93_PAD_ENET1_TD3__ENET_QOS_RGMII_TD3 0x57e

MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK 0x5fe

MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL 0x57e

>;

};

pinctrl_fec: fecgrp {

fsl,pins = <

MX93_PAD_ENET2_MDC__ENET1_MDC 0x57e

MX93_PAD_ENET2_MDIO__ENET1_MDIO 0x57e

MX93_PAD_ENET2_RD0__ENET1_RGMII_RD0 0x57e

MX93_PAD_ENET2_RD1__ENET1_RGMII_RD1 0x57e

MX93_PAD_ENET2_RD2__ENET1_RGMII_RD2 0x57e

MX93_PAD_ENET2_RD3__ENET1_RGMII_RD3 0x57e

MX93_PAD_ENET2_RXC__ENET1_RGMII_RXC 0x5fe

MX93_PAD_ENET2_RX_CTL__ENET1_RGMII_RX_CTL 0x57e

MX93_PAD_ENET2_TD0__ENET1_RGMII_TD0 0x57e

MX93_PAD_ENET2_TD1__ENET1_RGMII_TD1 0x57e

MX93_PAD_ENET2_TD2__ENET1_RGMII_TD2 0x57e

MX93_PAD_ENET2_TD3__ENET1_RGMII_TD3 0x57e

MX93_PAD_ENET2_TXC__ENET1_RGMII_TXC 0x5fe

MX93_PAD_ENET2_TX_CTL__ENET1_RGMII_TX_CTL 0x57e

>;

};

配置内核

PHY驱动位于drivers/net/phy/motorcomm.c,我们只需要把这个驱动打开,编译进内核即可,内核已默认配置网卡驱动,这里我们不再描述。最后编译内核源码,把新生成的设备树dtb文件更新到板子即可。

网络测试

测试ENET1

root@myd-lmx9x:/# ping www.baidu.com -I eth0

PING www.baidu.com (14.215.177.39): 56 data bytes

64 bytes from 14.215.177.39: seq=0 ttl=56 time=7.987 ms

64 bytes from 14.215.177.39: seq=1 ttl=56 time=8.030 ms

64 bytes from 14.215.177.39: seq=2 ttl=56 time=7.250 ms

测试ENET2

root@myd-lmx9x:/# ping www.baidu.com -I eth1

PING www.baidu.com (14.215.177.39): 56 data bytes

64 bytes from 14.215.177.39: seq=3 ttl=56 time=7.507 ms

64 bytes from 14.215.177.39: seq=4 ttl=56 time=7.488 ms

64 bytes from 14.215.177.39: seq=5 ttl=56 time=7.151 ms

64 bytes from 14.215.177.39: seq=6 ttl=56 time=7.043 ms

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭