网口驱动移植的准备
本次我们使用的平台是致远电子M3568系列核心板,网口模块是致远电子ePort系列的ePort-G型号产品,速率可达千兆,而且简化硬件设计,缩短开发时间。
驱动程序的移植及设备树的修改
调试之前需要根据官方说明去修改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. 配置检查
输入命令ifconfig ethx dowm和ifconfig ethx up(x为网口号)检查是否能正常起来,尝试更改设置ip地址,连接网线进行ping命令查看可否通同一网段下的网线另一端地址。
在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很少的情况则考虑下硬件走线是否过长导致。
原文标题:【技术分享】在M3568上移植ePort-G驱动及调试技巧
文章出处:【微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。
-
致远电子
+关注
关注
13文章
406浏览量
31310
原文标题:【技术分享】在M3568上移植ePort-G驱动及调试技巧
文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论