当前位置: 首页 > news >正文

Linux——以太网

一、Linux下的以太网架构

1、Linux 系统网络协议层架构

PHY 驱动的功能处于链路层:

2、以太网物理层与硬件连接

我们重点关注以下两点:

(1)与 MAC 设备的接口,即是 gmii 还是 rgmii。

(2) Phy 芯片的地址正确配置,可以通过 mdio/mdc 正确访问到 phy 芯片的寄存器。

3、链路层与 Linux 网络设备管理

        Linux 网络设备系统包括设备与驱动二大部分。网络设备驱动包括 MAC 层的驱动、MDIO 总结接口驱动 与 phy 驱动。

二、Linux 以太网 phy 驱动基本开发流程

1、硬件设计。

        包括 PHY 芯片地址设定、与 MAC 接口模式(如 RGMII)、MAC 时钟的接入方式、PHY 芯 片的复位管脚以及 PHY 芯片上电工作模式的设置。这一般是硬件工程师的工作,驱动工程师只要根据硬件原理图配置软件即可。

2、 根据硬件连接,修改 linux 系统的设备定义树.dts 文件。

通常是修改 GMAC 的定义以及 MII 管脚复用定义。具体需要看 SOC 芯片开发平台的定义。

3、 phy 驱动移植

解压驱动,解压后按照 Linux 的目录结构展开。用户需要将文件按相应的目录 copy 到目标板 Linux 系统开发环境

 将.c文件和头文件copy到各自的目录

motorcomm.c      --->  longan/kernel/linux-5.15/drivers/net/phy/motorcomm.c   
motorcomm_phy.h  --->  longan/kernel/linux-5.15/include/linux/ motorcomm_phy.h

添加Kconfig

config MOTORCOMM_PHYtristate "Motorcomm PHYs"---help---Supports the YT8010, YT8510, YT8511, YT8512 PHYs.

添加Makefile

obj-$(CONFIG_MOTORCOMM_PHY) += motorcomm.o

4、测试

重新编译烧录后,检查目标机系统里有没有网络设备,如 eht0。

主要是 ping 通。 Ping 通是很关键的一步。Ping 通与以下配置有关:

a) 如果是 rgmii 接口,在设备树配置文件里的 tx_delay 和 rx_dealy 的配置很重要,参考后面关于 rgmii delay line 的配置。

b) PHY 的状态(link up, speed, duplex)是否正确。这个需要在 phy state machine 里增加打印进行跟 踪(通常在 phy.c 里)。

c) 通过统计计数(MAC 层,phy 层)来确认是哪个方向(tx 或者 rx)的问题。

5、常见问题

重新编译烧录后,开发板系统里没有网络设备:

(1) Phy 驱动有没被正确加载。

(2) MAC 驱动有没有正确运行,参看开发平台提供的 MAC 驱动,重点检查在 DTS 里配置的 compatible 字段与 MAC 驱动里的定义是否一致。

(3)MDIO 是否访问正确。在 mdio 扫描代码里增加打印看 phy 寄存器的读写是否正确。

(4)Phy id 是否被正确识别。在 mdio 扫描代码里增加打印看读到的 phy id 与 phy 驱动的 phy id 是 否一致。

(5)与硬件工程师确认 phy 芯片是否工作正常(上电时序、时钟,供电及复位等)。

http://www.lryc.cn/news/277685.html

相关文章:

  • HTTP 代理原理及实现(二)
  • JavaScript 地址信息与页面跳转
  • 力扣(leetcode)第383题赎金信(Python)
  • 提升网络安全重要要素IP地址
  • 解析c++空指针解引用奔溃
  • Oracle START WITH 递归语句的使用方法及示例
  • 使用Windbg动态调试目标进程的一般步骤详解
  • Linux驱动学习—输入子系统
  • 计算机网络(2)
  • 什么是预训练Pre-training—— AIGC必备知识点,您get了吗?
  • bat脚本sqlserver 不同数据库同步
  • 阶段十-分布式-Redis02
  • 微信小程序实战-02翻页时钟-2
  • 每天刷两道题——第十一天
  • Git提交规范
  • apache2的虚拟主机的配置
  • Provide/Inject 依赖注入(未完待续)
  • 力扣173. 二叉搜索树迭代器
  • 电脑找不到d3dcompiler43.dll怎么修复,教你5个可靠的方法
  • 5.3 Android BCC环境搭建(eadb版 上)
  • 【算法题】44. 通配符匹配
  • vscode配置与注意事项
  • 设计模式篇章(3)——七种结构型模式
  • Window端口占用处理
  • 算法实战(二)
  • 网工内推 | 上市公司网工,NP认证优先,最高15薪+项目奖金
  • 【LLM 论文阅读】NEFTU N E: LLM微调的免费午餐
  • JS新手入门笔记整理:对象
  • Python GIL 一文全知道!
  • 数据库级别的MD5加密(扩展)