首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文搞懂 Linux 网络 Phy 驱动

按OSI 7层网络模型划分,网卡PHY 芯片(图中RTL8201F)位于物理层,对应软件层就是本文讨论 PHY 驱动层;而 MAC 位于 数据链路层,也是通常软件上所说网卡驱动层,它不是本文重点...of_get_phy_id(child, &phy_id)) //如果设备树PHY属性未指定45号条款 且未通过"ethernet-phy-id%4x.%4x"属性指定PHYID...// 向内核注册net_device phy 驱动注册 genphy_driver 通用驱动 内核中有 genphy_driver 通用驱动,以及专有驱动(这里以 NXP TJA 驱动为例),分别如下...网卡 fec 和 Phy 协作 在 linux 内核,以太网 mac 会被注册成 struct net_device,phy 芯片会被注册成 struct phy_device。...整个 phy 驱动主要调用流程如下图所示: 一个 phy 驱动原理其实是非常简单,一般流程如下: 用轮询/中断方式通过 mdio 总线读取 phy 芯片状态。

1.2K20

电压驱动PHY、电流驱动PHY与网络变压器连接方式

2)电压驱动PHY,2线共模电感可以放在PHY侧或线缆侧。 1)和2)结论表明无论哪种PHY,2线共模电感都可以放在线缆侧。 3)电流驱动PHY,3线共模电感要放在PHY侧。...4)电压驱动PHY,3线共模电感要放在PHY侧。 5)电流或电压驱动PHY,若为2线共模电感+自耦变压器形式,自耦变压器放在RJ45侧。...6)与电流驱动PHY连接网络变压器中心抽头接VCC,VCC为PHY供电电压。 7)与电压驱动PHY连接网络变压器中心抽头接对地电容。...PHY,电流驱动PHY,2线共模电感要放在线缆侧,因此下图是正确。...-R手册 上图可以看出,与BCM5333连接网络变压器中心抽头接对地电容,所以它是电压型PHY,电压驱动PHY,2线共模电感可以放在PHY侧或MAC侧,以下电路是实际项目上用到

2K10
您找到你想要的搜索结果了吗?
是的
没有找到

linux驱动ioctl函数,Linux驱动相关ioctl函数

ioctl是设备驱动程序对设备I/O通道进行管理函数,所谓对I/O通道进行管理,就是对设备一些特性进行控制,例如,在串口线上收发数据通过read/write操作,而串口波特率、校验位、停止位通过...ioctl函数是文件结构一个属性分量,就是说如果你驱动程序提供了对ioctl支持,用户就可以在用户程序中使用ioctl函数控制设备I/O通道。...例如,我们可以在驱动程序实现write时候检查一下是否有特殊约定数据流通过,如果有的话,那么后面就跟着控制命令(一般在socket编程中常常这样做)。...要记住,用户程序所作只是通过命令码告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做事情。...设备节点赋值,”/dev/video0″是真实物理摄像头设备在linux表示 if (videodevice == NULL || *videodevice == 0) { videodevice

2.2K180

PHY】关于学习以太网PHY这件事情

一个以太网PHY是一个芯片,可以发送和接收以太网数据帧(frame)。  也就是说,PHY是网络结构最底层,物理层。PHY芯片是实现物理层这一层功能芯片。...因此,在一般网络设备电路设计,需要为PHY芯片设计电路。PHY芯片厂家为了满足大部分应用场景,会在PHY上面提供很多接口协议,以供设计人员使用。...由于一个PHY芯片功能可能会比较多,因此,在PHY芯片应用,有一点很重要就是要选择合适接口来满足自己应用。 PHY芯片接口介绍    MII接口 MII是连接PHY和MAC总线。...光电接口    目前数据在网络传输,主要传输介质是铜缆或者光纤,在PHY芯片对应就是电口或者光口。...PMD为电/光收发器,把输入电压变化状态变为光波或光脉冲,以便能在光纤传输。

1.5K30

展锐UDX710:LAN7800 PHY驱动调试

展锐UDX710:LAN7800 PHY驱动调试 1. 前期准备 1.1 调试环境 1.2 预置条件 1.3 硬件连接 2....前期准备 1.1 调试环境 内核:Linux 4.14.98 Modem:展锐UDX710 驱动:LAN78XX PHY驱动 USB PHY:LAN7800 1.2 预置条件 将展锐UDX710...Type A(USB3.0)配置为主模式,确保可以识别从设备LAN7800 PHY: 1.3 硬件连接 将LAN7800 USB口连接到UDX710Type A(USB3.0)口,然后将RJ45...驱动适配 2.1 开启内核驱动支持 在内核按照如下打开编译选项开启内核LAN78XX驱动支持,在kernel目录下执行make menuconfg,然后依次选中Devices_Drivers:...eth0加入网桥: 给网桥配置ip 在网桥beidge0作为网关,将数据从eth0转发给其他网桥内网卡(如外网)。

2.1K10

linux驱动 platform_device

基于这个背景,linux发明了一种虚拟总线:platform总线,相应设备称为platform_device,而驱动成为platform_driver。...linux设备驱动编写方法编写驱动程序。...回答是肯定,这里注意了,以上与板级硬件密切相关代码部分,均在bsp板级支持文件,例如mach-s3c2440.c,但是你看到了真正驱动了吗比如字符设备read write等函数实现了吗。...真正驱动代码在内核driver文件夹下,比如dm9000驱动在 drviver/net/文件夹下dm9000.c,而且这部分代码是与具体板级硬件无关,再比如nandflash驱动,配置也是在...mach-s3c2440.c,但关键驱动源码在 drvier/mtd/nand/文件夹下 这样结构就是linux驱动分层思想,设备驱动核心层与例化。

77820

高通SDX55平台:R8168 PHY驱动适配

高通SDX55平台 R8168 PHY驱动适配 1....当SDX55被应用于工业路由器或CPE时,基本都是采取以下连接方案:客户Linux设备通过usb或pcie连接SDX55,使用AT或QMI方式进行拨号,Linux上获取公网ip进行上网,来自Linux数据流仅可通过...\realtek,这个目录主要存放内核驱动以太网相关驱动源码,realtek中原本有r8125、r8139、r8169等驱动,我们只需要将我们下载r8168放到该目录下即可: 另外,为了将...r8168驱动集成到内核,需要在Makefile中新增r8168编译选项: 编译验证,出现无法成功加载驱动问题,且无任何异常打印。...,并将下发mac地址写入到该文件,在驱动加载脚本可以通过读取文件,获取写入mac地址,以参数方式带入驱动,用于驱动设置mac地址,具体脚本见下: #!

2.1K20

linux设备驱动第五篇:驱动并发与竟态

综述 在上一篇介绍了linux驱动调试方法,这一篇介绍一下在驱动编程中会遇到并发和竟态以及如何处理并发和竞争。 首先什么是并发与竟态呢?...在linux驱动编程,常用解决并发与竟态手段有信号量与互斥锁,Completions 机制,自旋锁(spin lock),以及一些其他不使用锁实现方式。下面一一介绍。...以上是linux驱动编程中经常用到锁机制,下面讲一些内核其他一些实现。...小结 以上就是linux驱动编程涉及并发与竞态内容,下面做一个简单小结。...之前在linux设备驱动第三篇:写一个简单字符设备驱动中介绍了简单字符设备驱动,下一篇将介绍一些字符设备驱动得高级操作。

1.7K100

Linux驱动之网卡驱动剖析

Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送接口。...传递数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h,用于在Linux网络子系统各层之间传输数据,该结构在整个网络收发过程贯穿始终...源码分析 笔者基于是 S5PV210 DM9000 驱动,会大体上对 DM9000 驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 驱动是基于 platform...,对应平台设备注册定义位于 xxx_machine_init,在笔者基于s5pv210 kernel 上位于arch/arm/mach-s5pv210/mach-x210.csmdkc110..., dm9000_poll_work); 该部分为 struct net_device 和 struct board_info 结构体申请内存,struct board_info定义在 DM9000 驱动文件

55.4K20

Linux驱动开发-编写按键驱动

杂项设备注册函数 这篇文章介绍,如何使用杂项设备框架编写一个简单按键驱动,完成编写、编译、安装、测试等流程,了解一个杂项字符设备驱动开发流程。...>0表示未拷贝成功数量。 2. 编写按键驱动 使用杂项设备注册按键驱动,应用层使用read接口读取按键值。 编写驱动之前需要先找到按键原理图,找到按键接到CPU那个IO上。...2.1 按键驱动源代码 #include #include #include #include <linux...内核管理驱动---设备号 设备号是一个unsigned int 变量--32位。...*驱动出口--卸载驱动时候执行*/ MODULE_LICENSE("GPL"); /*设置模块许可证--GPL*/ 2.2 makefile文件 编译驱动makefile代码。

19.7K31

Linux驱动开发: USB驱动开发

四、 linux内核下USB相关API函数与数据结构 前面介绍了USB相关一些基础概念与重要数据结构,接下来就分析在linux内核如何编写一个USB 驱动程序,编写与一个USB设备驱动程序方法和其他总线驱动方式类似...,驱动程序把驱动程序对象注册到USB子系统,稍后再使用制造商和设备标识来判断是否安装了硬件。...当然,这些制造商和设备标识需要我们编写进USB 驱动程序。 USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。...内核USB驱动实现上一个数据结构,用于组织每一次USB设备驱动数据传输请求。...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带USB驱动程序卸载掉 */ //定义USBIDTAB 24ae:2002 static

69.2K20

Linux——Linux驱动之基本理论常识总结(什么是Linux驱动Linux驱动需要掌握哪些?)

1 什么是Linux驱动? 做过嵌入式都知道裸机程序和带操作系统程序,这里就不展开讲了,初学者最开始接触都是裸机程序,mainwhile大循环跑天下。...Linux驱动又具体包含三种:一般后两种,处理器厂家都会提供BSP支持包,我们不需要做什么,开发涉及最多就是字符设备。...,理解很到位: 上层是文件系统和应用,中层是Linux内核,下层是底层硬件,Linux驱动是介于文件系统和底层硬件之间,是嵌入到内核程序,应用是嵌入到文件系统程序,比如Android APP...对上:Linux设备驱动给上层提供调用接口; 对Linux设备驱动要注册到内核,标准说法是 挂载在总线上; 对下:直接操作硬件,如GPIO、IIC、SPI、PWM等; 以上三个,Linux内核都提供了大量接口函数...、结构体,其实Linux驱动,就是掌握了这些东西怎么用,适应到自己要写驱动程序

8K30

Linux SPI 驱动

3) MOSI 如字面意思,master output slave input,就是主机向从机发送指令过程,通常来说,这个发送信号由sensor主控发送来获取sensor数据。...上升沿到来时候,sdo上电平将被发送到从设备寄存器。下降沿到来时候,sdi上电平将被接收到主设备寄存器。 4) MSB数据高位先发送。...代码部分均来自于linuxkernel开源代码https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?...五、总结 个人理解现在这个科技发展风口下,手机、IOT、车机等终端设备齐放异彩大背景下,新终端生态搭建、基础智能设备整合、大健康趋势下,Sensor发展是一个非常关键驱动力,基础驱动软件能力掌握也是重中之重...,linux给了我们一个很好平台让我们能在前辈肩上进行各种高质量代码学习,我们也需抓住这个机会,在做好本质工作基础上静心努力钻研,不断前行,祝愿各位也祝愿我自己在技术道路上越走越远。

18.2K12
领券