0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

米尔基于NXP iMX.93开发板的网卡驱动移植指南

米尔电子 2024-07-20 08:01 次阅读

1.概述

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开发板外接了两个YT8531SH千兆PHY芯片,ENET1原理图如图1-1:

43824cd6-462b-11ef-817b-92fbcf53809c.png

图1-1. ENET1原理图

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

表1-2. ENET1引脚对应关系

原理图引脚

对应PinList管脚

管脚功能

管脚功能码

ENET1_MDC

B31

ENET1_MDC

0

ENET1_MDIO

B32

ENET1_MDIO

0

ENET1_TXC

B22

ENET1_TXC

0

ENET1_TX_CTL

B23

ENET1_TX_CTL

0

ENET1_TD0

B3

ENET1_TD0

0

ENET1_TD1

B21

ENET1_TD1

0

ENET1_TD2

B2

ENET1_TD2

0

ENET1_TD3

B1

ENET1_TD3

0

ENET1_RXC

B30

ENET1_RXC

0

ENET1_RX_CTL

B29

ENET1_RX_CTL

0

ENET1_RD0

B28

ENET1_RD0

0

ENET1_RD1

B27

ENET1_RD1

0

ENET1_RD2

B26

ENET1_RD2

0

ENET1_RD3

B25

ENET1_RD3

0

ENET2原理图如图1-3:

43969ea2-462b-11ef-817b-92fbcf53809c.png

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

表1-4. ENET2引脚对应关系

原理图引脚

对应PinList管脚

管脚功能

复用功能

ENET2_MDC

B5

ENET2_MDC

0

ENET2_MDIO

B6

ENET2_MDIO

0

ENET2_TXC

B19

ENET2_TXC

0

ENET2_TX_CTL

B14

ENET2_TX_CTL

0

ENET2_TD0

B17

ENET2_TD0

0

ENET2_TD1

B16

ENET2_TD1

0

ENET2_TD2

B15

ENET2_TD2

0

ENET2_TD3

B18

ENET2_TD3

0

ENET2_RXC

B12

ENET2_RXC

0

ENET2_RX_CTL

B10

ENET2_RX_CTL

0

ENET2_RD0

B11

ENET2_RD0

0

ENET2_RD1

B8

ENET2_RD1

0

ENET2_RD2

B9

ENET2_RD2

0

ENET2_RD3

B7

ENET2_RD3

0


2.网卡驱动移植2-1.查看内核设备引脚定义在内核中,有对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 = , , , ; 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 = , ; 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 = <ð_mac2>; nvmem-cell-names = "mac-address"; status = "disabled"; };

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

2-2. 添加网卡设备树节点根据原理图的定义添加网口的设备树配置,修改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 = <ðphy1>; 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 = <ðphy2>; 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; }; };};

2-3. 网卡设备数配置添加网卡设备树节点的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 >; };

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

2-5. 网络测试

  • 测试ENET1

root@myd-lmx9x:/# ping www.baidu.com -I eth0PING www.baidu.com (14.215.177.39): 56 data bytes64 bytes from 14.215.177.39: seq=0 ttl=56 time=7.987 ms64 bytes from 14.215.177.39: seq=1 ttl=56 time=8.030 ms64 bytes from 14.215.177.39: seq=2 ttl=56 time=7.250 ms

  • 测试ENET2

root@myd-lmx9x:/# ping www.baidu.com -I eth1PING www.baidu.com (14.215.177.39): 56 data bytes64 bytes from 14.215.177.39: seq=3 ttl=56 time=7.507 ms64 bytes from 14.215.177.39: seq=4 ttl=56 time=7.488 ms64 bytes from 14.215.177.39: seq=5 ttl=56 time=7.151 ms64 bytes from 14.215.177.39: seq=6 ttl=56 time=7.043 ms

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18875

    浏览量

    226803
  • 开发板
    +关注

    关注

    25

    文章

    4735

    浏览量

    95957
  • 网卡驱动
    +关注

    关注

    0

    文章

    35

    浏览量

    17615
  • 米尔电子
    +关注

    关注

    0

    文章

    87

    浏览量

    413
收藏 人收藏

    评论

    相关推荐

    入门级i.MX6UL板卡的神经网络框架ncnn的移植与测试-米尔MYD-Y6ULX-V2开发板

    米尔 MYD-Y6ULX-V2 开发板,基于 NXP i.MX6UL/i.MX6UL L处理器,该开发板米尔称之为经典王牌产品。本次测试目
    的头像 发表于 02-18 18:19 3011次阅读
    入门级i.MX6UL板卡的神经网络框架ncnn的<b class='flag-5'>移植</b>与测试-<b class='flag-5'>米尔</b>MYD-Y6ULX-V2<b class='flag-5'>开发板</b>

    移植NXP官方linux 5.4内核到i.MX6ULL开发板

    本文描述移植NXP官方 linux 5.4 内核到i.MX6ULL开发板
    发表于 12-19 11:10 1873次阅读

    米尔NXP i.MX 93开发板的Qt开发指南

    1.概述Qt是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔NXPi.MX93开发板(MYD-LMX9X
    的头像 发表于 06-07 08:01 1394次阅读
    <b class='flag-5'>米尔</b><b class='flag-5'>NXP</b> i.MX <b class='flag-5'>93</b><b class='flag-5'>开发板</b>的Qt<b class='flag-5'>开发指南</b>

    米尔基于NXP iMX.93开发板的M33处理器应用开发笔记

    资源MYD-LMX9X开发板米尔基于NXPiMX.93开发板)3.软件资源Windows7及以上版本软件:IAREmbeddedWorkbench4.板载固件调试
    的头像 发表于 06-29 08:01 956次阅读
    <b class='flag-5'>米尔</b>基于<b class='flag-5'>NXP</b> <b class='flag-5'>iMX.93</b><b class='flag-5'>开发板</b>的M33处理器应用<b class='flag-5'>开发</b>笔记

    米尔NXP i.MX 93开发板的Qt开发指南

    1. 概述Qt 是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔 NXP i.MX 93 开发板
    发表于 06-07 20:45

    【技术分享】NXP iMX8M Mini芯片应用处理器开发板专题

    【技术分享】NXP iMX8M Mini芯片应用处理器开发板专题 应用案例1. 迅为iMX8M Mini开发板硬件接口原理分析 迅为I.MX
    发表于 12-28 11:27

    iMX93如何实现交叉编译?

    搜索 iMX 移植指南,它指示了设置工具链的步骤。 我尝试了移植指南中的建议,目标机器是 iMX93
    发表于 05-18 06:24

    S5P4418开发板GPS模块驱动移植开发指南

    S5P4418开发板GPS模块驱动移植开发指南
    发表于 06-21 17:02 0次下载

    米尔科技NXP LPC1857 LPC1850 Cortex-M3开发板概述

    MYD-LPC185X系列开发板是深圳市米尔科技有限公司推出的基于NXP(恩智浦)LPC185X系列处理器(Cortex-M3内核)开发板
    的头像 发表于 11-04 14:46 4157次阅读
     <b class='flag-5'>米尔</b>科技<b class='flag-5'>NXP</b> LPC1857 LPC1850 Cortex-M3<b class='flag-5'>开发板</b>概述

    NXP iMX8MP开发板的试用体验

    NXP iMX8MP开发板试用体验
    的头像 发表于 06-06 10:42 2008次阅读

    iMX6系列-iMX6Q 开发板 Python 移植

    本文基于飞凌OKMX6Q/DL开发板为基础讲解,主要使用平台是imx6系列,linux3.0.35操作系统,其他平台也可以参考,不同平台之间会存在差异,需自行修改适应自己的使用iMX6 Python
    的头像 发表于 10-28 18:24 1045次阅读
    <b class='flag-5'>iMX</b>6系列-<b class='flag-5'>iMX</b>6Q <b class='flag-5'>开发板</b> Python <b class='flag-5'>移植</b>

    金秋回馈100%中奖,买米尔NXP系列开发板

    各位筒子们!金秋好时节,米尔NXP系列开发板搞活动啦~~超多福利优惠都给你们妥妥地安排上给你的秋天加点猛料!一直以来,米尔NXP都保持深度
    的头像 发表于 09-15 08:01 437次阅读
    金秋回馈100%中奖,买<b class='flag-5'>米尔</b><b class='flag-5'>NXP</b>系列<b class='flag-5'>开发板</b>

    米尔NXP系列开发板优惠大放送

    一直以来,米尔NXP都保持深度合作。米尔推出基于NXP系列的低、中、高端核心开发板,为客户提
    的头像 发表于 09-16 14:40 514次阅读
    <b class='flag-5'>米尔</b><b class='flag-5'>NXP</b>系列<b class='flag-5'>开发板</b>优惠大放送

    免费!NXP i.MX 93开发板有奖试用

    米尔NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了2块价值678
    的头像 发表于 05-23 08:01 448次阅读
    免费!<b class='flag-5'>NXP</b> i.MX <b class='flag-5'>93</b><b class='flag-5'>开发板</b>有奖试用

    点击参与米尔NXP i.MX 93开发板有奖试用

    米尔NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-
    的头像 发表于 06-13 08:02 242次阅读
    点击参与<b class='flag-5'>米尔</b><b class='flag-5'>NXP</b> i.MX <b class='flag-5'>93</b><b class='flag-5'>开发板</b>有奖试用