Linux 网卡驱动 PHY Mac MDIO kernel 驱动讲解 (未完待续)

前言

会从网卡的硬件结构讲解,然后再到 kernel 驱动调用的讲解

  • 我用Xilinx Zu2cg开发板的实际举例,一般嵌入式设备肯定会预留网口,用作调试开发,组网通讯使用,那么开发板的意义在哪
  • 意义就在于,不管你怎么做,开发流程永远不会变,驱动的工作永远是建立抽象接口,调试器件驱动起来,供应用层使用
  • 我们可以在芯片厂家的主体程序上优化,但是不能修改厂家提供的最底层的源码,除非对这个器件吃的很熟才行
  • 上面是一些题外话
  • Phy 芯片的型号是 KSZ9031 ,专门是为了以太网通信的
    这是数据手册上的提供的概念图
    在这里插入图片描述
    芯片手册的总体概述
    在这里插入图片描述
    上面提到了 RGMII 接口 常规的GMII 接口为 8根线 Reduced 意为减少的意思, Gigabit 为千兆的意思 我们需要知道吗,答案是必须得知道,
    要不出现问题,不知道怎么测试,所以先读手册,在画个大概图,然后在写代码调试,出现问题在用工具测试 (这个流程下来就是比较好的,我认为哈,看看都是些什么线)

来看下图 RGMII 接口图:
在这里插入图片描述
下面是常规的GMII 接口图
在这里插入图片描述
对比这看,GMII 发现 TXD[7:0] MB->LB 8 bit 传输方式
而RGMII 发现是 TXD[3:0] MB -> LB 4 bit 传输方式
明显是8根线和4根线的区别(并行传输的收发接口)
两个虽然都是千兆的phy 芯片,有个常识必须得知道 小b 和大 B ,小b 指的是 bit 大B 指的是Bytes 1Bytes = 8bit
1000Mb/s 不管是输入还是输出都125Mhz 的时钟,这个时钟是可以用示波器量出来的,用以确定输入输出时钟是否是正常的,if have 电阻 or 电容
但是传输的数据是无法测量的,一般是板内走线
在这里插入图片描述> 这是开发板提供的原理图 看这个再看看phy提供的模型,
这上面从外部引入了一个25M的时钟供给了 phy 芯片, 如果电路成熟了,就把电阻电容给去掉了,不成熟的情况下,不建议将时钟线上的电阻去掉,因为时钟引起的网络不通,是常见的错误类型,测量时钟是排查错误的第一步,全是板内走线,是无法测量的。

如果不研究这个,就不知道为什么 MTU 的上限限制是多少,现在看的这个Phy 挺好的 Jumbo Frame 是16KB
在这里插入图片描述

上面这个是MTU 的解释,一般MTU 是1500B 有了这个硬件信息你就可以设置到 16KB,有什么用吗,不太知道,之前查资料的时候说是,这个玩意会影响TCP 的传输性能
还支持 wakeon-lan , 哎以前没注意过,也没用过
在这里插入图片描述> 数据手册中关于, LED 的阐述 可以对LED2 进行编程
看看这些就可以通过灯闪知道,网口的链接状态,从而基础判断phy的状态
NC 的意思是 NOT CONNECT
在这里插入图片描述
这是这个芯片较为重要的 pin 脚的定义
XO: 25Mhz 的晶振的反馈时钟,一般情况下NC掉的(其实是时钟的输出管脚)
XI: 时钟的输入管脚, 存在外部工钟的情况下, 就应该供给25M的时钟
这里还有一个晶振的误差公式计算(我没用过,有pll的话,可以定位失去锁定的原因):
得到的频率的误差: 50/100万27M = 1350HZ 频率的误差允许在 251000*1000 +_ 1350Hz
在这里插入图片描述> 这两个管脚,也是非常重要的 41 pin 可以管脚复用选择功能, 这个时钟可以给mac 用,作为参考时钟使用,也可以作为led灯的模式控制器进行使用,什么是参考钟,是为了查看咱俩能否愉快通信的东西,详细解释的话,我也不知道
PHYAD1 PHYAD2 全称就是PHY的地址线, MAC 通过地址确定 phy在哪里
这里有一个自协商的过程, rj45 将TXC 作为Phy RxC的参考时钟,然后phy自己自适应(其实驱动里面只有Mac和MDIO 的驱动部分,这个phy的 功能异常强大,只需要管理不需要驱动),这是很简单的一个流程
数据手册原文如下:
在这里插入图片描述> 还有一个问题不是说,传输速率越高越好,flash 的读写速率低,其实遵循一个水桶原则,在向flash 中 写入的时候,flash的写入速率低,作为最低木板

XILINX RGMII 设备树

XILINX MDIO DRIVER

XILINX PHY DRIVER

XILINX MAC 2 MAC

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值