RK3568 + 国产 PHY YT8531 调试

背景:国际斗争形式复杂,国产化替代也是不得不的事情,从原来的台湾 瑞昱 换成国产裕太

其实瑞昱 8211 和yt 8531 的外围电路机会一模一样,所以可以pin to pin 替换
调试之前需要根据官方说明,修改去驱动 net/phy 目录下的 kconfig makefile ,并把官方驱动copy 到驱动目录下,编译,生成boot.img ,在驱动目录下观察是否生成 xxx.o 文件,裕太驱动代码的文件名:motorcomm.o

注意:芯片产生的核电压 1.1V 有时候这个电压很不稳定导致phy 芯片不能正常运行(建议用示波器测量,异常情况下纹波超级大,万用表测不出来),调试前先保证外围电路连接正确,电压正常。

异常现象:系统可以识别芯片,eth x 可以正常出现,可以设置ip,但ping 不通外网。

调试准备:要确认芯片状态那么需要读取芯片内部寄存器确认芯片状态才行,不然就是瞎子戴着手套摸象。
调试工具:裕太手册提供了一个读取手段 寄存器读写工具,个人推荐第二种,编译phy.c 的方如下图:
RK3568 + 国产 PHY YT8531 调试_第1张图片
编译成可执行文件。执行如下指令读取和写入寄存器
RK3568 + 国产 PHY YT8531 调试_第2张图片
根据手册读取寄存器并查看数据手册查找异常。

我的情况是ping 不通外网,时钟从表象看起来比较正常,比如 125M ,25M,2.5M。
排除问题:
1.经过厂家指导,采用内部环路测试,当采用 1000M ,100M,10M 配置的时候能发现 接收包不变,发送包一直在增加 (这里不能确定是否发送成功,或者接收部分有异常),所以暂时没有找到问题。

2.测试芯片外围,TX 和 RX 发现 rx clk 时钟 125M 而 tx clk 是25M,咨询官方phy 芯片 在 1000M 速率下 TX 和 RX 时钟都应为 125M,所以确定是 rk3568 gmac 发出的时钟存在问题,那么去查找设备树,看时钟配置的是否有问题。果然—

所以,设备树配置如下:(仅供参考)
RK3568 + 国产 PHY YT8531 调试_第3张图片
assigned-clock-rates=<0>, <125000000>; 可以屏蔽掉
改完,重新编译,生成boot,烧写,灯的闪烁跟异常的时候有差异,ping 网关,ok,搞定,用iperf 测试速度----

你可能感兴趣的:(linux,驱动调试,单片机,fpga开发,嵌入式硬件)