Linux 网络驱动实验(PHY芯片LAN8720)

news2024/11/22 11:41:16

目录

  • 嵌入式网络简介
    • 嵌入式下的网络硬件接口

网络驱动是linux 里面驱动三巨头之一,linux 下的网络功能非常强大,嵌入式linux 中也常
常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动,本章我们就来学习一下
linux 里面的网络设备驱动。

嵌入式网络简介

嵌入式下的网络硬件接口

本章节讨论的都是有线网络!
注意!正点原子I.MX6U-ALPHA开发板V2.4版本以前的底板使用的网络PHY 为LAN8720,
V2.4 及其以后的版本使用的网络PHY 为SR8201F,而且网络PHY 地址有改变,大家一定要
看准自己所使用的底板版本号!原理基本一致,本章就以LAN8720 为例进行讲解。
提起网络,我们一般想到的硬件就是“网卡”,“网卡”这个概念最早从电脑领域传出来,
顾名思义就是能上网的卡。在电脑领域的“原始社会”,网卡是独立的硬件,如果电脑要上网就
得买个网卡插上去,类似现在的显卡一样。但是大家现在观察自己的笔记本或者台式机主板会
发现并没有类似显卡一样的网卡设备,原因是随着技术的不断发展,现在只需要一个芯片就可
以实现有线网卡功能,因此网卡芯片都直接放到了主板上。所以大家在接触嵌入式的时候听到
“网卡”这两个字,不要急着在开发板上找“卡”一样的东西。
既然现在网卡已经是通过一个芯片来完成了,那么是什么样的芯片呢?这个就要先了解一
下嵌入式中的网络硬件方案。首先,嵌入式网络硬件分为两部分:MAC 和PHY,大家都是通
过看数据手册来判断一款SOC 是否支持网络,如果一款芯片数据手册说自己支持网络,一般都
是说的这款SOC 内置MAC,MAC 类似I2C 控制器、SPI 控制器一样的外设。但是光有MAC
还不能直接驱动网络,还需要另外一个芯片:PHY,因此对于内置MAC 的SOC,其外部必须
搭配一个PHY 芯片。但是有些SOC 内部没有MAC,那也就没法搭配PHY 芯片了,这些内部
没有网络MAC 的芯片如何上网呢?这里就要牵扯出常见的两个嵌入式网络硬件方案了。
1、SOC 内部没有网络MAC 外设
我们一般说某个SOC 不支持网络,说的就是它没有网络MAC。那么这个芯片就不能上网
了吗?显然不是的,既然没有内部MAC,那么可以找个外置的MAC 芯片啊,不过一般这种外
置的网络芯片都是MAC+PHY 一体的。比如三星linux 开发板里面用的最多的DM9000,因为
三星的芯片基本没有内部MAC(比如S3C2440、S5PV210,4412 等),所以三星的开发板都是通
过外置的DM9000 来完成有线网络功能的,DM9000 对SOC 提供了一个SRAM 接口,SOC 会
以SRAM 的方式操作DM9000。

有些外置的网络芯片更强大,内部甚至集成了硬件TCP/IP 协议栈,对外提供一个SPI 接
口,比如W5500。这个一般用于单片机领域,单片机通过SPI 接口与W5500 进行通信,由于
W5500 内置了硬件TCP/IP 协议栈,因此单片机就不需要移植软件协议栈,直接通过SPI 来操
作W5500,简化了单片机联网方案。

这种方案的优点就是让不支持网络的SOC 能够另辟蹊径,实现网络功能,但是缺点就是网
络效率不高
,因为一般芯片内置的MAC 会有网络加速引擎,比如网络专用DMA,网络处理效
率会很高。而且此类芯片网速都不快,基本就是10/100M。另外,相比PHY 芯片而言,此类芯
片的成本也比较高,可选择比较少。

SOC 与外部MAC+PHY 芯片的连接如图69.1.1.1 所示:

在这里插入图片描述
图69.1.1.1 主控SOC 与外置MAC+PHY 芯片连接

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

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

相关文章

【音视频|PCM】PCM格式详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

【队列的顺序表示,链式表示】

文章目录 队列的表示和实现相关术语队列的表示链队的表示链队的定义链队的初始化销毁链队列 链队列的入队出栈 队列的表示和实现 相关术语 队列(Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾即an端,称为队尾…

分布式锁其实很简单,6行代码教你实现redis分布式锁

一、前言 分布式锁是一种用于协调分布式系统中多个节点之间对共享资源进行访问控制的机制。它可以确保在分布式环境下,同一时间只有一个节点能够获取到锁,并且其他节点需要等待释放锁后才能获取。 以下是使用分布式锁的几个常见场景和原因:…

ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践

目录 内容简介作者简介专家推荐读者对象目录直播预告 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不断地影响和改变着各…

misc学习(4)Traffic(流量分析)-

感悟:回想起自己学的计算机网络和网络协议分析,有所感悟:计算机网络好比将一群人区分开来(局域网),为了能够使得不同部分的人能够沟通(wireshark中的数据包),就设置了网络…

高级深入--day43

通过Fiddler进行手机抓包 通过Fiddler抓包工具,可以抓取手机的网络通信,但前提是手机和电脑处于同一局域网内(WI-FI或热点),然后进行以下设置: 用Fiddler对Android应用进行抓包 打开Fiddler设置 在Conne…

DIANA算法c++实现

第一步对具有最大直径的簇中每个点计算平均相异度找出最大的点放入splinter group&#xff0c;其余放在放入splinter group 第二步 在old party里找出到splinter group中点的最近距离 < 到old party中点的最近距离的点&#xff0c;并将该点加入splinter group 重复第二步的…

共用体开发案例

有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理。 #include <stdio.h>struct Person {char name[32];int age;char zhiYe;char addr[32];union {int class;…

Ubuntu系统编译调试QGIS源码保姆级教程

在之前的文章中&#xff0c;我详细介绍了怎么在Windows下编译QGIS源码&#xff0c;也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式&#xff0c;想要分析源码&#xff0c;“断点调试”肯定是少不了的&#xff0c;但是这两种模式虽然也…

论文写作框架示例:论软件系统建模方法及其应用

标题 前言题目要求写作框架(1)摘要(300~330字)(2)正文(2000~2500字,2200字左右为宜)(3)收尾(200字左右)前言 本章内容参考了51cto的薛老师的《软考论文高分特训与范文10篇》的内容,是帮助初学者打开写作思路的工具,而不是必须要遵循的模式。建议软考人多读多看…

集丰照明|灯光布局没做好,几百万装修也拯救不了

俗话说拍照要看灯光的位置&#xff0c;我们在装修的时候也要注重灯光的摆放&#xff0c;不然可能你花了很多钱的装修&#xff0c;结果就会因为灯光的布局不合理&#xff0c;导致效果大打折扣。 装修也是一样&#xff0c;忽略掉灯光&#xff0c;可能就会发生花了几十万&#xff…

08. 按键输入

08. 按键输入 按键原理图代码编写GPIO驱动代码按键驱动代码主函数 加上清除BSS段&#xff0c;代码不运行 按键原理图 按键KEY0连接到了UART1_CTS上。默认情况下&#xff0c;KEY0为高&#xff0c;当按下KEY0后&#xff0c;UART1_CTS为低电平 代码编写 在bsp下创建一个key和一个…

减少磁盘读/写中延迟时间的方法(交替编号,错位命名)

目录 1.延迟时间的优化空间2.交替编号3.磁盘地址结构的设计1.若物理地址结构是&#xff08;盘面号&#xff0c;柱面号&#xff0c;扇区号&#xff09;2.若物理地址结构是&#xff08;柱面号&#xff0c;盘面号&#xff0c;扇区号) 4.错位命名 关于磁盘延迟时间的概念请看博主的…

AQS 关于锁与队列的关系

前面的文章中又介绍的在争用激烈的场景下&#xff0c;使用基于CAS自旋实现的轻量级锁有两个大的问题: (1)CAS恶性空自旋会浪费大量的CPU资源。 (2)在SMP架构的CPU上会导致“总线风暴”。 解决CAS恶性空白旋的有效方式之一是以空间换时间&#xff0c;较为常见的方案有两…

leetCode 229. 多数元素 II + k值摩尔投票法 + 进阶 + 优化空间

229. 多数元素 II - 力扣&#xff08;LeetCode&#xff09; 给定一个大小为 n 的整数数组&#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 进阶&#xff1a;尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 &#xff08;1&#xff09;哈希表 class …

“RG-SMP 安全管理平台” 优化

全局添加ICO图标 管理强制重定向https <!-- \SMP\jboss\server\default\deploy\smp.war\common common_js.jsp --> <link rel"shortcut icon" href"data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAA…

通俗易懂的GPT原理简介

GPT是自然语言处理领域中最受欢迎的模型之一。GPT全称为Generative Pre-trained Transformer&#xff0c;是一种基于Transformer模型的预训练语言模型。在接下来的文章中&#xff0c;我们将详细介绍GPT的原理。 一、前置知识 在了解GPT原理之前&#xff0c;需要了解以下一些基…

【2023年冬季】华为OD统一考试(B卷)题库清单(已收录345题),又快又全的 B 卷题库大整理

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、滑动窗口5、二叉树6、并查集7、栈 三、算法1、基础算法① 贪心算法② 二分查找③ 分治递归…

【Linux】-进程控制(深度理解写时拷贝、exit函数、return的含义以及makefile编译多个程序)-进程创建、进程终止、进程等待、进程程序替换

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

基于SSM的品牌手机销售信息系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…