【技术分享】在M3568上移植ePort-G驱动及调试技巧

电子说

1.3w人已加入

描述

致远电子
产品上网口没有显示?无法进行ping命令?速度拉跨?还经常丢包?那一定是漏掉了什么细节了,看看下面操作,说不定能够帮到你。


致远电子  网口驱动移植的准备

本次我们使用的平台是致远电子M3568系列核心板,网口模块是致远电子ePort系列的ePort-G型号产品,速率可达千兆,而且简化硬件设计,缩短开发时间。

配置网口驱动时,我们得先了解原理图中网口对应的模式以及地址,确认好用到的引脚,方便之后的设备树配置,如下图参考:

致远电子

可以看到我们要使用的物理地址及PHY的工作模式,同时也要注意电压的配置,与硬件工程师确认网口模块所需要的IO电压,根据需求不同去配置电源域(3.3V或1.8V)。

致远电子  驱动程序的移植及设备树的修改

调试之前需要根据官方说明去修改drivers/net/phy下的Makefile和Kconfig,然后将官方的驱动拷贝到该目录下。或者直接修改Makefile将该驱动文件编译到内核,不修改Kconfig,这样就不用make menuconfig去勾选上网口驱动。之后在RK平台下调整设备树部分,由于ePort-G该网口型号支持千兆,官方说明千兆时钟应设为125M,如下参考(注:其他如复位引脚和设置pinctrl的引脚未写出),根据原理图实际配置来修改设备树。

&gmac1 {
   phy-mode = "rgmii";    //PHY接口模式
   clock_in_out = "output";    //时钟输入输出方向,该为MAC输出给PHY,input则相反
   
   //设置千兆所需要的时钟
   assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
   assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&cru CLK_MAC0_2TOP>;
   assigned-clock-rates = <0>, <125000000>;


   //根据PCB布线不同修改值
   tx_delay = <0x21>;
   rx_delay = <0x2f>;


   phy-handle = <&rgmii_phy0>;
   status = "okay";
};
&mdio1 {
   rgmii_phy1: phy@2 {
       compatible = "ethernet-phy-ieee802.3-c22";
       reg = <7>;    //PHY的物理地址,原理图上有标出  
   };
}

之后编译内核,查看drivers/net/phy下有无生成对应驱动的.o文件,若驱动程序在编译过程出现报错,可能要根据自己内核版本去修改官方的驱动程序,将一些没有的函数屏蔽或替换。编译完成后将boot.img烧录到开发板上(内核和设备树)


致远电子  查看网口是否配置成功及网口调试

1. 配置检查

进入开发板,查看sys/bus/mdio_bus/下面的drivers和devices,分别进入查看是否在devices中生成对应节点以及查看devices下的phy_id是否与驱动程序中自己网口型号的phy_id一致,如果没有出现对应节点情况检查设备树中compatible的属性,如果还不一致则将iee部分改成id+网口型号的phy_id。如下图:
致远电子

输入命令ifconfig ethx dowm和ifconfig ethx up(x为网口号)检查是否能正常起来,尝试更改设置ip地址,连接网线进行ping命令查看可否通同一网段下的网线另一端地址。

2. 网口调试

在ping通外网之后可以尝试使用iperf3来进行网络测试,测试通过iperf3功能从板子做服务器接收速度和板子做客户端发送速度的数据来观测是否达到要求。如下图:

致远电子

当然,也可能存在丢包情况,这种情况需要适当的调整MAC的tx_delay和rx_delay,也可以通过在驱动程序中调整寄存器值的方式来控制phy的tx_delay和rx_delay,一般调整MAC。通过RK平台下中/sys/device/platform/fe….ethernet/rgmii_delay可以调试修改tx_delay和rx_delay,输入命令echo 0x2a 0x26 > rgmii_delay(第一个延迟参数为tx,第二个为rx),修改的数值可以根据该目录下的phy_ld_scan工具来查看。拔掉网线,输入命令echo 1000 > phy_ld_scan后,如下图所示:

致远电子

有0的表示通路,根据横(TX的延时)纵(RX的延时)坐标来观察出TX和RX的延时应设置为多少。如果根本没有0或者0很少的情况则考虑下硬件走线是否过长导致。


致远电子  技术交流群
长按识别如下二维码可加入“工控板/核心板交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信zlgmcu-888。

致远电子

该二维码7天内(2月13日前)有效

致远电子

致远电子

致远电子
致远电子
致远电子
致远电子
致远电子
致远电子


原文标题:【技术分享】在M3568上移植ePort-G驱动及调试技巧

文章出处:【微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分