ALPHA开发板上的PHY芯片驱动:LAN8720驱动

一.  简介

前面文章了解到,Linux内核是有提供 PHY通用驱动的。

本文来简单了解一下ALPHA开发板上的 PHY网络芯片LAN8720的驱动。是 LAN8720芯片的公司提供的 PHY驱动。

二.  ALPHA开发板上的PHY芯片驱动:LAN8720驱动

我 们 来 看 一 下 LAN8720A Linux 驱动, LAN8720A 的 驱 动 文 件 为
drivers/net/phy/smsc.c ,这个文件是 SMSC 针对自家的一些 PHY 芯片编写的驱动文件,其中就 包含了 LAN8720A 这个 PHY 芯片。默认情况下, LAN8720A 这个驱动是没有打开的,我们需 要配置 linux 内核,打开Linux内核配置界面(运行 "make menuconfig" 命令),进入驱动选项,配置路径如下:
-> Device Drivers -> Network device support -> PHY Device support and infrastructure -> Drivers for SMSC PHYs

配置界面如下图 所示:
选中上面配置界面 中的 “ Drivers for SMSC PHYs ”,然后重新编译内核即可。

注意:这里只是暂时将新更改的配置保存到  .config文件中,当不小心 "make clean" 命令后就会删除掉更改的配置。

永久保存新配置:选中 "Drivers for SMSC PHYs"选项后,再选中上面Linux内核配置界面上的 "<Save>" 选项,可以保存到我创建自己开发板的内核配置文件 imx_v7_alientek_nand_defconfig文件中(之前移植实验):

上面输入 配置文件的路径,选中"OK" 选项即可实现永久保存新配置。可以通过查看 配置文件 imx_v7_alientek_nand_defconfig文件内容确认。

2.  LAN8720驱动

打开 smsc.c ,找到如下所示内容 ( 限于篇幅,有删减 )
static struct phy_driver smsc_phy_driver[] = {
{.phy_id		= 0x0007c0a0, /* OUI=0x00800f, Model#=0x0a */.phy_id_mask	= 0xfffffff0,.name		= "SMSC LAN83C185",
....................
}, {.phy_id		= 0x0007c0b0, /* OUI=0x00800f, Model#=0x0b */.phy_id_mask	= 0xfffffff0,.name		= "SMSC LAN8187",
....................
}, {.phy_id		= 0x0007c0c0, /* OUI=0x00800f, Model#=0x0c */.phy_id_mask	= 0xfffffff0,.name		= "SMSC LAN8700",
....................
}, {.phy_id		= 0x0007c0d0, /* OUI=0x00800f, Model#=0x0d */.phy_id_mask	= 0xfffffff0,.name		= "SMSC LAN911x Internal PHY",
....................
}, {.phy_id		= 0x0007c0f0, /* OUI=0x00800f, Model#=0x0f */.phy_id_mask	= 0xfffffff0,.name		= "SMSC LAN8710/LAN8720",.features	= (PHY_BASIC_FEATURES | SUPPORTED_Pause| SUPPORTED_Asym_Pause),.flags		= PHY_HAS_INTERRUPT | PHY_HAS_MAGICANEG,/* basic functions */.config_aneg	= genphy_config_aneg,.read_status	= lan87xx_read_status,.config_init	= smsc_phy_config_init,.soft_reset	= smsc_phy_reset,/* IRQ related */.ack_interrupt	= smsc_phy_ack_interrupt,.config_intr	= smsc_phy_config_intr,.suspend	= genphy_suspend,.resume		= genphy_resume,.driver		= { .owner = THIS_MODULE, }
} };module_phy_driver(smsc_phy_driver);

可以看出, smsc_phy_driver 还是支持了不少 SMSC 家的 PHY 芯片,
比如, LAN83C185 LAN8187 LAN8700 等等,当然了,肯定也包括了 LAN8720 系列。
22~45 ,就是 LAN8710/LAN8720 系列 PHY 驱动。

23 行,PHY ID 0X0007C0F0

24 行,PHY ID 掩码为 0XFFFFFFF0,也就是前 28 位有效,在进行匹配的时候只需要比较前 28 位,第 4 位不用比较。

25 行,驱动名字为“SMSC LAN8710/LAN8720”,系统启动以后,打开网卡就会提示当前 PHY 驱动名字为“SMSC LAN8710/LAN8720”。

47 行,使用 module_phy_driver(本质是一个宏)来完成 smsc_phy_driver 的注册。

此驱动里面的成员函数有一些是 SMSC 自己编写的,有一些是直接用的通用 PHY 驱动的, 比如,第 32 行的 genphy_config_aneg、第 41 行的 genphy_suspend 等。

关于ALPHA开发板上的 PHY网络芯片LAN8720的驱动,简单 了解到这里。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输入url到页面显示过程的优化

浏览器架构 线程&#xff1a;操作系统能够进行运算调度的最小单位。 进程&#xff1a;操作系统最核心的就是进程&#xff0c;他是操作系统进行资源分配和调度的基本单位。 一个进程就是一个程序的运行实例。启动一个程序的时候&#xff0c;操作系统会为该程序创建一块内存&a…

HDLbits 刷题 --Always nolatches

学习: Your circuit has one 16-bit input, and four outputs. Build this circuit that recognizes these four scancodes and asserts the correct output. To avoid creating latches, all outputs must be assigned a value in all possible conditions (See also always…

【HTML】简单制作一个3D动画效果重叠圆环

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建两个文本文档&#xff0c;其中HTML的文件名改为[index.html]&#xff0c;CSS的…

搞学术研究好用免费的学术版ChatGPT网站-学术AI

学术版ChatGPThttps://chat.uaskgpt.com/mobile/?user_sn88&channelcsdn&scenelogin 推荐一个非常适合中国本科硕士博士等学生老师使用的学术版ChatGPT&#xff0c; 对接了超大型学术模型&#xff0c;利用AI技术实现学术润色、中英文翻译&#xff0c;学术纠错&#…

centOS如何升级python

centOS下升级python版本的详细步骤 1、可利用linux自带下载工具wget下载&#xff0c;如下所示&#xff1a; 笔者安装的是最小centos系统&#xff0c;所以使用编译命令前&#xff0c;必须安装wget服务&#xff0c;读者如果安装的是界面centos系统&#xff0c;或者使用过编译工具…

在 Amazon Timestream 上通过时序数据机器学习进行预测分析

由于不断变化的需求和现代化基础设施的动态性质&#xff0c;为大型应用程序规划容量可能会非常困难。例如&#xff0c;传统的反应式方法依赖于某些 DevOps 指标&#xff08;如 CPU 和内存&#xff09;的静态阈值&#xff0c;而这些指标在这样的环境中并不足以解决问题。在这篇文…

Stable Diffusion 本地化部署

一、前言 最近在家背八股文背诵得快吐了&#xff0c;烦闷的时候&#xff0c;看到使用 AI 进行作图&#xff0c;可以使用本地话部署。刚好自己家里的电脑&#xff0c;之前买来玩暗黑4&#xff0c;配置相对来说来可以&#xff0c;就拿来试试。 此篇是按照 Github 上的 stable-d…

Android JNI基础

目录 一、JNI简介1.1 什么是JNI1.2 用途1.3 优点 二、初探JNI2.1 新建cpp\cmake2.2 build.gradle配置2.3 java层配置2.4 cmake和c 三、API详解3.1 JNI API3.1.1 数据类型3.1.2 方法 3.2 CMake脚本 四、再探JNI 一、JNI简介 1.1 什么是JNI JNI&#xff08;Java Native Interfa…

适配器: stack与queue

模板的使用 容器的复用 传容器: 控制底层是那个控制传仿函数: 控制大小堆的建立 stack 特点: 后进先出底层: 容器的封装(vector, list, dequeue)场景: 模拟递归, 函数压栈等接口:empty(), size(), top(), push(), pop()代码: stack queue 特点: 先进先出底层: 容器的封装…

Linux文件IO(3):使用文件IO进行文件的打开、关闭、读写、定位等相关操作

目录 1. 文件IO的概念 2. 文件描述符概念 3. 函数介绍 3.1 文件IO-open函数 3.2 文件IO-close函数 3.3 文件IO-read函数 3.4 文件IO-write函数 3.5 文件IO-lseek函数 4. 代码练习 4.1 要求 4.2 具体实现代码 4.3 测试结果 5. 总结 1. 文件IO的概念 posix(可移植操作系统接…

【Python系列】Python中的YAML数据读取与解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何做用户体验优化

本文是从用户体验优化角度谈用户体验&#xff0c;其实用户体验不是设计必须的步骤&#xff0c;而是分散在产品设计中的产品设计思想。 一、用户体验分类 用户体验是指用户在“使用”某个产品或服务过程中的全部感受&#xff0c;包括情感、信仰、喜好、认知印象、生理和心理反应…

【设计原则】CQRS

文章目录 概述组成与特点优缺点何时使用 CQRS 模式推荐阅读 概述 CQRS&#xff08;Command Query Responsibility Segregation&#xff09;是一种软件设计模式&#xff0c;其核心设计理念是将一个对象的数据访问&#xff08;查询&#xff09;和数据操作&#xff08;命令&#…

node.js的错误处理

当我打开一个不存在的文件时&#xff0c;错误如下&#xff1a; 在读取文件里面写入console.log&#xff08;err&#xff09;&#xff0c;在控制台中可以看到我的错误代码类型&#xff1a;文件不存在的错误代码 ENOENT。见更多错误代码---打开node.js官方API文档Error 错误 | N…

LangChain-06 RAG With Source Doc 通过文档进行检索增强

安装依赖 pip install --upgrade --quiet langchain-core langchain-community langchain-openai编辑代码 from operator import itemgetter from langchain_core.messages import AIMessage, HumanMessage, get_buffer_string from langchain_core.prompts import format_d…

Java对象Object对象头-MarkWord分析-hashCode

代码主要通过打印对象的内存布局来观察对象头在不同状态下的变化&#xff0c;进而分析对象头在不同情况下的内存布局情况。 System.out.println(ClassLayout.parseInstance(o).toPrintable());&#xff1a;这一行代码通过使用开源库 openjdk.jol 的 ClassLayout 类来解析对象 o…

【Apache Doris】周FAQ集锦:第 1 期

【Apache Doris】周FAQ集锦&#xff1a;第 1 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

31. UE5 RPG使用增强输入激活GameplayAbility(一)

在前面文章中&#xff0c;我们实现了对技能添加并直接激活功能&#xff0c;介绍了GA的相关参数配置。现在&#xff0c;我们还不能通过键位触发技能&#xff0c;正常在游戏时&#xff0c;我们需要通过键位触发技能&#xff0c;实现技能的激活。 在UE5里面添加了增强输入&#xf…

AcWing 786. 第k个数——算法基础课题解

AcWing 786. 第k个数 题目描述 给定一个长度为 n的整数数列&#xff0c;以及一个整数 k&#xff0c;请用快速选择算法求出数列从小到大排序后的第 k 个数。 输入格式 第一行包含两个整数 n 和 k。 第二行包含 n 个整数&#xff08;所有整数均在 1∼10^9 范围内&#xff09…

Linux制作C++静态库和动态库并使用示例

创建动态库&#xff1a; 编写源文件&#xff1a; // sub.h 显式调用 #include <iostream>extern "C" int sub(int a, int b);// sub.cpp #include "sub.h"int sub(int a, int b) {return a - b; }// quadrature.h 隐式调用 #include <iostream&…