前言

会从网卡的硬件结构讲解,然后再到 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

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

  1. linux系统装fluent没有界面,Linux上安装ANSYS后的一些坑(未完待续)

    以ANSYS2020R2为例 问题一 fluent串行启动 (真串行,不是在启动界面选择的串行)是正常的,但是并行会挂,问题截图如下: 解决方案: 这个是Intel的问题,因为Fluent默认Inte ...

  2. 2018.10.1(这不仅是一篇日记,也是mac使用心得整理,未完待续……)

    今天是国庆节,祝祖国母亲生日快乐. 今天在ucl正式上课了,还去蹭了一节非监督学习的课.挺好. 9月20+号买的mac,通过船运,终于到手了.非常高兴. 晚上回家去中国城买了一些食材自己做.一半的花生 ...

  3. PTP NTP kernel 驱动讲解 (未完待续)

    前言 之前研究PTP 的时候,没仔细研究过,也只是仔细研究过ptp4l 这个软件,驱动层面的实现机制,做的半知半解的,不是我的风格 正好再次梳理下

  4. Kernel i2c gpio spi pinctrl platform 分析讲解 (未完待续)

    前言 linux kernel 作为最常用的 驱动管理平台 其中 最常见的就是 i2c spi gpio pinctrl platform 总线平台的使用 硬件的时序的设计,一般都不会太 格路子的,处 ...

  5. C++多线程:Linux 线程通信,唤醒,互斥锁(未完待续)

    c++ multi thread message sending and notify 线程通信常用的方法有共享内存和消息传递,推荐使用消息传递. 最常用的就是管道了,可以使用匿名管道或者命名管道. ...

  6. 新电脑Mac安装前端环境,未完待续~

    电脑:MacBook Pro (15-inch, 2017) 版本接近可以用迁移助理 太久远就只能新电脑环境重装了, 微信小程序,支付宝小程序,安卓,IOS 无非这几种 以下就是一名前端小程序开发人员 ...

  7. mega raid linux,在lsi megaraid sas 8204elp 装linux系统(未完待续)

    在lsi megaraid sas 8204elp 装linux系统(未完待续) (2009-05-06 13:24:00) 标签: 杂谈 在目前最新的linux内核中,没有8204elp的raid驱 ...

  8. linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要

    Linux 命令个人总结====== 未完待续 man [功能说明]: 查看帮助 [语法格式]: man [123456789]命令.文件. [选项参数]: 数字"1"表示用户命令 ...

  9. 构建Linux根文件系统(未完待续)

          所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...

最新文章

  1. mysql 系统表 存储过程_数据库系统(六)---MySQL语句及存储过程
  2. 对话嬴彻科技CEO马喆人:L3才是自动驾驶货运的本质拐点
  3. 1. Nest Js
  4. 讲解虚拟服务器的书_程序员不得不看的书
  5. ospf 环回口的路由条目_【网络工程师配置篇】——OSPF汇总配置!
  6. 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
  7. table 样式详解
  8. Linux系统管理(7)——Linux单用户模式详解 及应用场景
  9. 《Online Filtering Training Samples for Robust Visual Tracking》解析
  10. mysql,php和js根据经纬度计算距离
  11. 最近一个快要结束的项目的BUG分析
  12. hdu3068 求一个字符串中最长回文字符串的长度 Manacher算法
  13. matlab窄带水平集,窄带水平集方法
  14. 使用C#开发纽曼USB来电通来电弹屏客户端小结
  15. informix和mysql对接_优化Informix数据库访问
  16. win8.1许可证到期提示后如何激活?
  17. Android App数据加密
  18. Hibernate注解实现一对一关联
  19. Silverlight认识
  20. 数据可视化,值得关注的30个技巧(建议收藏)

热门文章

  1. node开发环境(mac)和线上环境(linux)搭建
  2. 比起VR高端设备市场,三星或对移动VR平台更感兴趣
  3. 模板初步——定义模板
  4. 《战狼2》电影观后感
  5. Xshell配置ssh使用密钥公钥(publice key)登录
  6. javascript中的for循环
  7. 一起谈.NET技术,asp.net控件开发基础(20)
  8. 怎么看电脑屏幕尺寸_经常面对电脑怎么护眼?电脑族怎么保养身体?
  9. 班尼机器人如何代理_如何学习电商短视频拍摄剪辑
  10. ajax与axios使用哪个好,ajax、axios、fetch之间的详细区别以及优缺点