Linux内核网络PHY驱动探究
需积分: 38 102 浏览量
更新于2024-09-09
1
收藏 3KB TXT 举报
“Linux内核net phy流程涉及到网络接口控制器(NIC)驱动的注册以及MIIBUS(Media Independent Interface Bus)的探测设备过程。这个流程详细解释了如何在Linux内核中处理物理层(PHY)设备的初始化和管理。”
在Linux内核中,`net phy`流程是网络硬件设备初始化的关键部分,特别是对于以太网控制器来说。这个流程包括驱动程序的注册、MIIBUS的扫描以及PHY设备的探测和配置。下面我们将深入探讨这些步骤:
1. bm_dwmac_probe:这是驱动程序的初始化函数,它通常是硬件特定的。在这个例子中,可能对应于Broadcom公司的DMA控制器(DW MAC)的探测。
2. stmmac_dvr_probe:这是STM32微控制器中MAC(Media Access Controller)驱动的探测函数。它负责初始化MAC控制器,并与PHY设备建立连接。
3. stmmac_mdio_register:此函数用于注册MDIO(Management Data Input/Output)接口,这是连接MAC控制器和PHY设备的标准通信协议。通过这个接口,可以读写PHY寄存器以配置和监控网络状态。
- 申请mii_bus:创建一个新的MII总线实例,用于管理所有连接到该总线的PHY设备。
- read(stmmac_mdio_read):定义读取PHY寄存器的回调函数。
- __mdiobus_register:在MII总线上注册设备,遍历所有可能的PHY地址(0-31),并调用`mdiobus_scan`进行设备扫描。
4. mdiobus_scan:扫描MII总线上的PHY设备,通过发送特定命令识别每个PHY设备的ID。
- get_phy_device:为找到的PHY设备创建`struct phy_device`实例。
- get_phy_id:读取PHY的ID寄存器,通常包含制造商ID和设备类型。
- midobus_read:执行实际的PHY寄存器读取操作。
- stmmac_mdio_read:这是回调函数,实现MDIO读取的硬件特定部分。
5. 判断phy_id:检查读取到的PHY ID是否有效,无效ID(bit28-0全为1)将被忽略。
6. phy_device_create:为新发现的PHY设备分配内存,并设置其属性,包括指向MII总线的指针、匹配函数和PHY ID。
7. phy_device_register:将PHY设备注册到系统中,使其可用于后续的设备操作。
8. device_add:将设备添加到设备树,这将触发对匹配驱动程序的探测。
- bus_probe_device:遍历MII总线上的所有驱动程序,寻找与新设备匹配的驱动。
- device_initial_probe:执行设备的初步探测。
- __device_attach:尝试将设备连接到合适的驱动程序。
- bus_for_each_drv:遍历驱动程序链表,对每个驱动调用`__device_attach_driver`。
- __device_attach_driver:检查驱动程序是否与设备匹配。
- driver_match_device:通过调用`mdio_bus_match`来确定驱动和设备是否兼容。
在上述流程中,`mdio_driver_register`用于在系统启动时注册MDIO驱动,同时设置`driver.bus`为`mdio_bus_type`,使得驱动能正确地与MII总线上的设备匹配。整个流程确保了Linux内核能够正确识别、配置并管理网络硬件的PHY层,从而提供网络连接功能。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-10-26 上传
114 浏览量
2021-08-11 上传
2021-08-12 上传
2019-04-09 上传
2022-08-08 上传
linjiasen
- 粉丝: 450
- 资源: 15
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南