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
Linux 网卡驱动 PHY Mac MDIO kernel 驱动讲解 (未完待续)相关推荐
- linux系统装fluent没有界面,Linux上安装ANSYS后的一些坑(未完待续)
以ANSYS2020R2为例 问题一 fluent串行启动 (真串行,不是在启动界面选择的串行)是正常的,但是并行会挂,问题截图如下: 解决方案: 这个是Intel的问题,因为Fluent默认Inte ...
- 2018.10.1(这不仅是一篇日记,也是mac使用心得整理,未完待续……)
今天是国庆节,祝祖国母亲生日快乐. 今天在ucl正式上课了,还去蹭了一节非监督学习的课.挺好. 9月20+号买的mac,通过船运,终于到手了.非常高兴. 晚上回家去中国城买了一些食材自己做.一半的花生 ...
- PTP NTP kernel 驱动讲解 (未完待续)
前言 之前研究PTP 的时候,没仔细研究过,也只是仔细研究过ptp4l 这个软件,驱动层面的实现机制,做的半知半解的,不是我的风格 正好再次梳理下
- Kernel i2c gpio spi pinctrl platform 分析讲解 (未完待续)
前言 linux kernel 作为最常用的 驱动管理平台 其中 最常见的就是 i2c spi gpio pinctrl platform 总线平台的使用 硬件的时序的设计,一般都不会太 格路子的,处 ...
- C++多线程:Linux 线程通信,唤醒,互斥锁(未完待续)
c++ multi thread message sending and notify 线程通信常用的方法有共享内存和消息传递,推荐使用消息传递. 最常用的就是管道了,可以使用匿名管道或者命名管道. ...
- 新电脑Mac安装前端环境,未完待续~
电脑:MacBook Pro (15-inch, 2017) 版本接近可以用迁移助理 太久远就只能新电脑环境重装了, 微信小程序,支付宝小程序,安卓,IOS 无非这几种 以下就是一名前端小程序开发人员 ...
- mega raid linux,在lsi megaraid sas 8204elp 装linux系统(未完待续)
在lsi megaraid sas 8204elp 装linux系统(未完待续) (2009-05-06 13:24:00) 标签: 杂谈 在目前最新的linux内核中,没有8204elp的raid驱 ...
- linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要
Linux 命令个人总结====== 未完待续 man [功能说明]: 查看帮助 [语法格式]: man [123456789]命令.文件. [选项参数]: 数字"1"表示用户命令 ...
- 构建Linux根文件系统(未完待续)
所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...
最新文章
- mysql 系统表 存储过程_数据库系统(六)---MySQL语句及存储过程
- 对话嬴彻科技CEO马喆人:L3才是自动驾驶货运的本质拐点
- 1. Nest Js
- 讲解虚拟服务器的书_程序员不得不看的书
- ospf 环回口的路由条目_【网络工程师配置篇】——OSPF汇总配置!
- 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
- table 样式详解
- Linux系统管理(7)——Linux单用户模式详解 及应用场景
- 《Online Filtering Training Samples for Robust Visual Tracking》解析
- mysql,php和js根据经纬度计算距离
- 最近一个快要结束的项目的BUG分析
- hdu3068 求一个字符串中最长回文字符串的长度 Manacher算法
- matlab窄带水平集,窄带水平集方法
- 使用C#开发纽曼USB来电通来电弹屏客户端小结
- informix和mysql对接_优化Informix数据库访问
- win8.1许可证到期提示后如何激活?
- Android App数据加密
- Hibernate注解实现一对一关联
- Silverlight认识
- 数据可视化,值得关注的30个技巧(建议收藏)
热门文章
- node开发环境(mac)和线上环境(linux)搭建
- 比起VR高端设备市场,三星或对移动VR平台更感兴趣
- 模板初步——定义模板
- 《战狼2》电影观后感
- Xshell配置ssh使用密钥公钥(publice key)登录
- javascript中的for循环
- 一起谈.NET技术,asp.net控件开发基础(20)
- 怎么看电脑屏幕尺寸_经常面对电脑怎么护眼?电脑族怎么保养身体?
- 班尼机器人如何代理_如何学习电商短视频拍摄剪辑
- ajax与axios使用哪个好,ajax、axios、fetch之间的详细区别以及优缺点