Linux内核编程(十五)网络设备驱动

本文目录

  • 一、常见的网络协议
  • 二、网络模型
  • 二、网络数据的封装和解封装
  • 二、抓包工具wireshark
  • 三、传输介质
  • 四、RJ-45接口
    • 1. 百兆网口
    • 2. 千兆网口
  • 五、PHY芯片
    • 1. 网络变压器的作用
    • 2. PHY芯片类型判断
  • 六、MAC控制器
  • 七、MAC控制器与PHY芯片连接方式
    • 1. MII接口方式(百兆网)
    • 2. RMII接口方式(百兆网)
    • 3. GMII接口方式(千兆网)
    • 4. RGMII接口方式(千兆网)
  • 八、MDIO接口:实现MAC控制器对PHY芯片寄存器的读写
  • 九、典型的以太网实现方式

  

对于网络知识不太熟悉的同学可以查看这篇文章:计算机网络知识点详情总结。

一、常见的网络协议

  1. TCP、UDP协议:详情查看-TCP、UDP系统编程。
  2. DNS协议:是互联网中用于将域名(如www.example.com)转换为对应的IP地址的分布式命名系统。它充当了互联网上域名和IP地址之间的映射关系的服务。例如:在ping 相应的IP地址时,可以ping通,但是在ping域名时,ping不通,这是因为DNS配置错误导致的。
  3. DHCP协议:用于自动分配和管理TCP/IP网络上的设备的IP地址和其他网络配置信息。即用于自动分配IP地址、子网掩码、默认网关和DNS服务器地址等网络参数给局域网内的客户端设备。
  4. FTP协议:File Transfer Protocol,文件传输协议是一种用于在网络上传输文件的协议。它工作在应用层,使用TCP传输服务,确保文件传输的可靠性和完整性。
  5. HTTP协议:HyperText Transfer Protocol,超文本传输协议是一种用于分布式、协作式、超媒体信息系统的应用层协议。它是万维网(WWW)的数据通信的基础。用于上网、访问网页等的协议。
  6. HTTPS协议:HyperText Transfer ProtocolSecure,超文本传输安全协议是HTTP 的安全版本,它通过 SSL/TLS协议对数据进行加密,确保数据传输的安全性。应用于网上银行、网上支付等。

二、网络模型

网络模型:OSI七层网络模型、TCP/IP四层网络模型。详情查看计算机网络知识点总结第一章节内容。

二、网络数据的封装和解封装

   OSI的七层模型是在TCP/IP的四层网络模型广泛应用后才出模型标准,但是在实际使用中我们通常使用的是TCP/IP四层网络模型。下图为数据的封装操作,解封装为此的逆操作。

在这里插入图片描述

二、抓包工具wireshark

三、传输介质

   常见的传输介质包括:网线、光纤、电缆。作为嵌入式领域,我们最常使用的就是网线,这里我们主要讲解网线。

  1. 网线种类
    (1) 1类线和2类线
       1类线和2类线主要用于早期的电话通信系统,并不支持数据传输或现代意义上的网络应用。随着网络技术的发展,这两类线已经被淘汰,不再用于网络布线。
    (2)3 类线
       3 类线是早期的以太网电缆标准之一,主要用于传输 10Mbps的传统以太网。它的标称频率为16MHz,最大传输距离为100米,最常见的按口为RJ-45。然而,由于传输速率的限制,3 类线在现代网络环境中已很少使用。
    (3)4类线
       4 类线的传输频率为20MHz,主要用于语音传输和最高传输速率16Mbps的数据传输。虽然它比3类线有所提升,但在实际应用中,由于性价比不高,4类线并未得到广泛应用,很快就被更先进的5类线所取代。
    (4)5类线
       5类线是计算机网络中常用的双绞式电缆,支持最高100Mbps的数据传输速率。它的标称频率为100MHz,最大传输距离也为100米。5 类线被广泛应用于以太网、宽带接入工程中,是构建现代网络基础设施的重要组成部分。
    (5)超5类线
       超5类线是5类线的增强版,主要用于千兆以太网(1000Mbps),同时向下兼容百兆以太网。与5类线相比,超5类线在传输性能上有所提升,特别是在衰减与串扰比值(ACR)以及信噪比方面表现更优。超5类线也是当前网络布线中常用的线缆类型之一。开发板默认送的都是超5类线。
    (6)6 类线
       6 类线是一种用于千兆以太网(1000Mbps)的传输介质,采用了 250MHz的带宽,具有更高的传输速度和更低的信号衰减率。与之前的线缆相比,6类线在内部结构、材质和外部保护等方面都有所改进,以确保更高的传输质量和稳定性。6类线广泛应用于家庭、企业和数据中心等场合。

  2. 网线线序标准
       网线是由8根(4组)双绞线组成,分别是:橙白色+橙色,绿白色+绿色,蓝白色+蓝色,棕白色+棕色,每俩根线缠绕在一起。
    在这里插入图片描述

       网线的线序标准决定了这8根导线的连接顺序。常见的线序标准有T568A 和T568B。T568A和T568B的线序标准如下,使用相应的网线线序接到水晶头相应的1号、2号…等位置。默认一般都是T568B 标准。
    在这里插入图片描述
    ●由于线序标准的不同,又将网线分为于交叉线和直连线。
    交叉线:一端是 568A 标准,另一端是 568B 标准的双绞线。常用于电脑和电脑间的连接。
    直连线:两端都是 568A 标准,或者两端都是 568B标准。常用于电脑和交换机间的连接。
       生活中最常用的是 568B直连线。现代交换机路由器的PHY芯片,大都带有自动识别转换功能,无论是交叉线还是直连线,均可自动转换连通。

四、RJ-45接口

   RJ-45 插头,也被称为 “水晶头”,是一种只能沿固定方向插入并具备防脱落功能的塑料接头。RJ-45 是网络接口的标准规范,而 RJ-11 则常用于电话线连接。由于 RJ-45 插头外表晶莹剔透,形似水晶,因此得名 “水晶头”。
   对于百兆网口和千兆网口的区别在于:芯片的不同,如下所示。
在这里插入图片描述

1. 百兆网口

在这里插入图片描述

   在 10M 和 100M 网络中,只使用了四根线,其中两根用于发送,两根用于接收。即1、2、3、6号引脚。
   上图中由于芯片框图设计的收发引脚处已经包含了网络变压器,所以不需要在原理图中的收发引脚中添加变压器,如果框图中没有,则需要在原理图中添加变压器。且在芯片的框图中并没有13、14号引脚,这是因为该引脚为铁皮外壳上的引脚,用于接地。
以下是引脚编号和功能说明:

引脚编号名字功能说明
1TD+发信号+
2TD -发信号-
3RD+收信号+
4NC空脚
5NC空脚
6RD-收信号-
7NC空脚
8NC空脚

2. 千兆网口

在这里插入图片描述

   在千兆网络接口中,使用了八根线,其中四根用于发送,四根用于接收。
   上图中由于芯片框图设计的收发引脚处已经包含了网络变压器,所以不需要在原理图中的收发引脚中添加变压器,如果框图中没有,则需要在原理图中添加变压器。且在芯片的框图中并没有15、16号引脚,这是因为该引脚为铁皮外壳上的引脚,用于接地。
以下是引脚编号和功能说明:

引脚编号名字功能说明
2MDI 0+(TX_D1+)发信号+
3MDI 0- (TX_D1-)发信号-
4MDI 1+(RX_D2+)收信号+
5MDI 2+(BI_D3+)双向信号传输
6MDI 2-(BI_D3-)双向信号传输
7MDI 1-(RX_D2-)收信号-
8MDI 3+(BI_D4+)双向信号传输
9MDI 3- (BI_D4-)双向信号传输

五、PHY芯片

   PHY 芯片是网络设备中负责物理层(Physical Layer)功能的芯片,常见于以太网设备中。PHY 芯片的主要作用是将数据在数字信号与模拟信号之间转换,使得设备能够通过物理介质(如双绞线、光纤等)进行通信。

   在PHY芯片和网络接口间要连接网络变压器。如果网口芯片框图中包含网络变压器,则不用在原理图中添加变压器。
在这里插入图片描述

1. 网络变压器的作用

  1. 消除共模干扰,增强信号。
  2. 电气隔离。

2. PHY芯片类型判断

其使用类型可以根据网络变压器中心抽头连接方式来判断。
(1)电压型:通常中心抽头会接到一个稳定的电压参考(例如地),通过这种方式控制信号的电平。这样可以减少电磁干扰,并且维持信号完整性。电压型接地方式的中心抽头通常是直接接地的。
在这里插入图片描述
在这里插入图片描述

(2)电流型:指的是通过中心抽头接收来自 PHY 芯片的电流反馈,而不是直接接地。PHY(物理层)芯片的信号可能通过变压器传送给中心抽头,因此需要处理从 PHY 过来的信号电流。电流型接地方式通常用于更复杂的电路设计中,特别是需要考虑到 PHY 和 RJ45 之间的电流传输和隔离的场合。

六、MAC控制器

   MAC 控制器(Media Access Control Controller,介质访问控制器)是网络通信系统中的一个关键组件,负责管理设备与网络介质之间的通信,特别是在数据链路层中的介质访问控制子层(MAC 层)。MAC 控制器的主要任务是确保数据帧能够在网络介质上正确传输和接收。

MAC 控制器的主要功能包括:

  1. 帧的封装和拆封:
    (1)封装:将来自更高层(如网络层、传输层)的数据打包成以太网帧,并在帧中添加必要的控制信息,如源地址和目标地址。
    (2)拆封:从接收到的以太网帧中提取数据并传递给上层协议处理,同时检查帧的完整性。
  2. 地址解析和过滤:
       MAC 控制器使用设备的 MAC 地址来判断数据帧的目的地是否是本设备。如果帧的目标 MAC 地址与设备的地址匹配,数据将被接收,否则丢弃或转发。
  3. 控制数据流:
       MAC 控制器通过协议(如 IEEE 802.3x 的流量控制)实现对网络流量的控制。当设备忙于处理数据时,可以通过控制帧通知对端设备暂停发送数据,防止缓冲区溢出。
  4. 半双工与全双工模式:
    (1)半双工:设备在同一时间只能发送或接收数据,MAC 控制器负责管理发送和接收的顺序,并处理冲突(collision)问题,使用 CSMA/CD 协议(载波侦听多路访问/冲突检测)来解决冲突。
    (2)全双工:设备可以同时进行数据发送和接收,MAC 控制器在这种模式下无需处理冲突问题,通常性能更好。
  5. 错误检测与校验:
       MAC 控制器会对发送和接收的帧进行校验,如生成和检查 CRC(循环冗余校验),确保数据传输过程中没有发生错误。如果检测到错误,控制器可能会请求重新发送数据。
  6. 优先级与调度:
    MAC 控制器可能会实现一些高级功能,如优先级调度,保证高优先级的流量(如语音、视频)得到及时处理,以满足实时性要求。
  7. 与 PHY 的接口:
       MAC 控制器与 PHY(物理层)紧密合作,通过标准接口(如 MII、RMII、RGMII 等)传输处理后的帧,PHY 则负责将这些帧转换为适合通过物理介质(如电缆或光纤)传输的信号。

   总结来说,MAC 控制器是数据链路层的核心,负责管理网络设备如何访问共享的传输介质,确保设备之间能够高效、可靠地进行数据传输。它与物理层(PHY)配合,完成整个数据链路的传输任务。

七、MAC控制器与PHY芯片连接方式

   MII是英文(Medium Independent Interface)的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有MII、RMII 、GMII、SGMII等;下简单介绍如下。

1. MII接口方式(百兆网)

在这里插入图片描述
●TX_CLK(Transmit Clock):发送时钟信号,由 PHY 产生并提供给 MAC,用来同步发送数据。在 100Mbps 以太网时,时钟频率为 25 MHz;在 10Mbps 时,时钟频率为 2.5 MHz。
●TX_EN(Transmit Enable):发送使能信号,用于指示当前的发送数据有效。高电平表示有有效数据正在传输。
●TX_ER(Transmit Error):发送错误信号,高电平有效,用于指示发送过程中出现错误。
●TXD[3:0](Transmit Data):发送数据线,一共有 4 根,用于并行传输 4 位数据位。这些信号由 MAC 提供给 PHY。
●RXD[3:0](Receive Data):接收数据线,和发送数据线类似,也是一组 4 根并行信号线,用于接收从 PHY 传来的数据。
●RX_CLK(Receive Clock):接收时钟信号,由 PHY 产生并提供给 MAC,用于同步接收数据。在 100Mbps 以太网时,时钟频率为 25MHz;在 10Mbps 时,时钟频率为 2.5 MHz。
●RX_ER(Receive Error):接收错误信号,用于指示接收过程中出现错误。
●RX_DV(Receive Data Valid):接收数据有效信号,表示接收的数据是有效的。当有数据被成功接收到时,该信号为高电平。
●CRS(Carrier Sense):载波侦听信号,用于指示 PHY 检测到网络中有信号正在传输。
●COL(Collision Detect):冲突检测信号,当 PHY 检测到网络中发生数据包冲突时,该信号会变高。

2. RMII接口方式(百兆网)

RMII是MII的简化板,连线数量由MII的16根减少为7根,极大简化了接口的复杂性。
在这里插入图片描述
●TX_EN(Transmit Enable):发送使能信号,高电平表示发送的数据有效。这个信号用于指示当前正在传输有效数据。
●TXD[1:0](Transmit Data):发送数据线(2 根),用于并行传输 2 位数据。相比 MII 的 4 根数据线,RMII 只需要 2 根数据线,节省了引脚资源。
●RXD[1:0](Receive Data):接收数据线(2 根),和发送数据线类似,用于并行接收 2 位数据。相比 MII,数据线数量减少了一半。
●CRS_DV(Carrier Sense / Data Valid):这是载波侦听和接收数据有效的组合信号线。载波侦听:表示物理层正在检测到信号。接收数据有效:当接收到有效数据时,该信号为高电平,表示数据有效。
●REF_CLK(Reference Clock):参考时钟信号,频率为 50 MHz,由外部时钟源提供。这个时钟用于同步数据的收发操作。与 MII 不同,RMII 不再分别使用不同的发送和接收时钟,发送和接收都使用同一个参考时钟。

3. GMII接口方式(千兆网)

   GMII(Gigabit Media Independent Interface) 是 MII 的扩展版本,用于支持千兆以太网(1000 Mbps)的通信。GMII 提供了更高的带宽,并通过增加数据线和更高的时钟频率来实现千兆速率,同时保持与 MII 类似的接口结构。

注意:10M/100M/1000M 网的时钟分别是 2.5M,25M 和125M。
在这里插入图片描述

●TX_ER(Transmit Error):发送错误信号,用于指示发送过程中出现错误。当发生发送错误时,该信号为高电平。
●TX_EN(Transmit Enable):发送使能信号,指示当前正在发送有效数据。高电平表示数据有效。
RX_CLK(Receive Clock):接收时钟信号,频率为 125 MHz,由 PHY 产生并提供给 MAC,用于同步接收数据。与 MII 的 RX_CLK 类似,只是时钟频率更高。
●TXD[7:0](Transmit Data):发送数据线(8 根),用于并行传输 8 位数据。与 MII 和 RMII 不同,GMII 通过 8 根并行数据线传输更多数据,以支持更高的传输速率。
●RX_ER(Receive Error):接收错误信号,指示接收过程中发生了错误。
●RX_DV(Receive Data Valid):接收数据有效信号,指示接收到的数据信号是有效的。高电平表示有效数据正在传输。
●RXD[7:0](Receive Data):接收数据线(8 根),用于并行接收 8 位数据,与发送数据线相同,接收数据线也从 4 根增加到 8 根,以适应更高的带宽需求。
●TX_CLK(Transmit Clock):发送时钟信号,频率为 125 MHz,用于同步数据传输。与 MII 不同,GMII 的时钟频率大大提升,以支持千兆以太网的高数据传输速率。
●CRS(Carrier Sense):载波侦听信号,指示网络中有活动信号。当网络上有信号传输时,PHY 会激活该信号。
●COL(Collision Detect):冲突检测信号,表示在半双工模式下发生了冲突。当两个设备同时发送数据时,GMII 会检测到冲突,并激活该信号。

4. RGMII接口方式(千兆网)

   RGMII(Reduced Gigabit Media Independent Interface) 是 GMII(Gigabit Media Independent Interface)的简化版本,设计目的是在保持千兆以太网性能的前提下,减少物理接口的引脚数量。RGMII 使用更少的信号线,并通过在时钟的上升沿和下降沿传输数据来提高效率。

注意:10M/100M/1000M 网的时钟分别是 2.5M,25M 和125M。
在这里插入图片描述
●RX_CLK(Receive Clock):接收时钟信号,与发送时钟类似,频率为 125 MHz,用于同步接收数据,数据同样在上升沿和下降沿进行传输。
●RX_CTL(Receive Control):接收控制信号,这个信号与 GMII 中的 RX_DV(接收数据有效) 和 RX_ER(接收错误) 信号相结合,用来标识接收数据的有效性和错误。
●RXD[3:0](Receive Data):接收数据线(4 根),用于并行接收 4 位数据。与 TXD 相同,RXD 也通过时钟的上升沿和下降沿同时传输数据。
●TX_CLK(Transmit Clock):发送时钟信号,频率为 125 MHz,与 GMII 相同,但在 RGMII 中,数据在线的上升沿和下降沿均传输数据,因此通过更少的数据线实现同样的传输速率。
●TX_CTL(Transmit Control):发送控制信号,这个信号与 GMII 中的 TX_EN(发送使能) 和 TX_ER(发送错误) 信号相结合,用来指示发送数据的有效性和错误。
●TXD[3:0](Transmit Data):发送数据线(4 根),用于并行传输 4 位数据。RGMII 在时钟的上升沿和下降沿同时传输数据,因此通过 4 条数据线可以实现与 GMII 8 条数据线相同的传输速率。

八、MDIO接口:实现MAC控制器对PHY芯片寄存器的读写

  1. 概念
       Management Data Input/Output 的缩写,管理数据输入输出接口。与网口数据MDI0 按口是通信无关,主要是实现 MAC控制器对十十心片的管理与控制,比如设置 PHY寄存器。比如通过对 PHY 芯片寄存器的控制来配置网口的工作速率,或者通过读取 PHY 芯片的状态寄存器来获取网口的状态等。
       MDIO 接口是同步串行半双工接口。由MDC和MDIO 俩跟信号线组成。即MDIO:数据线(双向传输)、MDC:时钟线(单项传输)。
  2. PHY芯片地址
    在这里插入图片描述
    在这里插入图片描述
  3. 命令操作PHY寄存器
    在这里插入图片描述

九、典型的以太网实现方式

按照集成度和设计方案,确实可以将其细分为三种主要方式。

  1. 方式 1:CPU 内部集成了 MAC 和 PHY。(不常用,技术复杂)
    (1)优点:系统设计更加紧凑,减少了外部芯片的数量,功耗和成本较低。
    (2)缺点:实现难度较高,需要强大的集成设计能力,通常不容易达到最佳的网络性能或支持更复杂的网络标准。此外,这种方式缺乏灵活性,难以升级或更换单独的 PHY。
    (3)应用场景:较少使用,通常出现在一些高度集成的嵌入式设备中,或者网络性能需求较低的场景。

  2. 方式 2:CPU 内部集成 MAC,PHY 采用独立芯片。(主流方式)
    (1)优点:这是当前主流方案,因为它在保持 CPU 整体集成度的同时,保留了对不同 PHY 芯片的选择和灵活性。可以根据具体应用需求选择不同的 PHY 芯片以支持不同的网络速率(如 10/100/1000 Mbps)和网络接口(如 RJ45 或光纤)。
    (2)缺点:尽管相比于全集成方案,它的设计复杂度稍高,但这种方式已经足够成熟,并且在可维护性、扩展性和性能上表现更好。
    (3)应用场景:广泛应用于路由器、交换机、服务器等网络设备,满足大多数网络需求。
    在这里插入图片描述

  3. 方式 3:CPU 外部独立 MAC 和 PHY(不常用,成本较高)
    (1)优点:独立的 MAC 和 PHY 芯片带来最大的灵活性,便于选择更高性能或专用的芯片来优化网络性能。此外,这种设计更容易升级,便于网络设备制造商根据不同需求配置不同的 MAC 和 PHY。
    (2)缺点:设计复杂度更高,需要额外的芯片、接口和电路设计,功耗和成本也会相应增加。
    (3)应用场景:多见于高性能网络设备中,如高端交换机、企业级路由器或数据中心设备,尤其是在对网络速度、稳定性要求极高的场景下。
    在这里插入图片描述

   总结来说,方式 2 是当前的主流方案,因为它在性能、设计复杂度、灵活性和成本之间取得了平衡。而方式 1 和方式 3 则分别适用于对集成度要求很高的嵌入式场景或对性能要求极高的高端网络设备。

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

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

相关文章

CSS学习13--学成网例子

CSS例子 学成网 需要使用的图片&#xff1a; 代码&#xff1a; <html><head><style>/*CSS初始化*/* { /*清除内外边框*/padding: 0;margin: 0;}ul {list-style: none; /*清除列表样式*/}.clearfix:before,.clearfix:after { /*清除浮动*/content: &qu…

【Java毕业设计】基于SpringBoot+Vue+uniapp的农产品商城系统

文章目录 一、系统架构1、后端&#xff1a;SpringBoot、Mybatis2、前端&#xff1a;Vue、ElementUI4、小程序&#xff1a;uniapp3、数据库&#xff1a;MySQL 二、系统功能三、系统展示1、小程序2、后台管理系统 一、系统架构 1、后端&#xff1a;SpringBoot、Mybatis 2、前端…

计算机毕业设计SpringBoot+VUE自动灌装生产线 MES 系统设计

采用 B/S 架构&#xff0c;MES 应用软件通过 TCP/IP 协议与自动灌装生产线上的各个工作单元中的 PLC 控制器进行通信&#xff0c;查询或采集由 PLC 控制器采集的生产数据。通过 JAVA 构建的平台与数据库进行连接&#xff0c;实现灌装生产线的生产管理、订单管理、质量管理和数据…

问题: java.sql.SQLException:The server time zone value ‘�й���׼ʱ��‘

原文: Mybatis PlusThe server time zone valuehis unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to uti…

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中&#xff0c; "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时&#xff0c;经常听到第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;以及 BCNF&#xff08;Boyce-…

C++操作符重载实例(独立函数)

C操作符重载实例&#xff0c;我们把坐标值CVector的加法进行重载&#xff0c;计算c3c1c2时&#xff0c;也就是计算x3x1x2&#xff0c;y3y1y2&#xff0c;今天我们以独立函数的方式重载操作符&#xff08;加号&#xff09;&#xff0c;以下是C代码&#xff1a; c1802.cpp源代码…

c++进阶——哈希表

嗨喽大家好呀&#xff0c;今天阿鑫给大家带来的是c进阶——哈希表&#xff0c;好久不见啦&#xff0c;下面让我们进入本节博客的内容吧&#xff01; c进阶——哈希表 枚举的介绍unordered系列的底层结构哈希表的改造 哈希是一种思想(映射)&#xff0c;哈希表(值和存储位置建立…

搭建Docker私有仓库管理本地的Docker镜像,通过harbor实现Web UI访问和管理私有仓库

要在本地搭建一个Docker私有仓库&#xff0c;你可以按照以下步骤进行设置&#xff1a; 安装Docker 确保你已经安装了Docker。如果还没有安装&#xff0c;可以按照官方指南进行安装&#xff1a; 对于Ubuntu系统&#xff0c;你可以运行以下命令来安装Docker&#xff1a; sudo ap…

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat 四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意&#xff1a;strlen()函数的返回值是size_t&#xff0c;两个size_t相减仍为无符号数 int main() {char arr[10] "abc";char brr[10] "abc123&quo…

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆&#xff0c;该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使…

【数据结构与算法 | 灵神题单 | 删除链表篇】力扣3217, 82, 237

总结&#xff0c;删除链表节点问题使用到列表&#xff0c;哈希表&#xff0c;递归比较容易超时&#xff0c;我觉得使用计数排序比较稳&#xff0c;处理起来也不是很难。 1. 力扣3217&#xff1a;从链表中移除在数组中的节点 1.1 题目&#xff1a; 给你一个整数数组 nums 和一…

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP 我们在网络的应用层中可以自己定义协议&#xff0c;但是&#xff0c;已经有大佬定义了一些现成的&#xff0c;非常好用的应用层协议&#xff0c;供我们直接使用&#xff0c;HTTP&#xff08;超文本传输协议&#xff09;就是其中之一。 在互…

yolo算法小结

文章目录 yolov1工作原理限制 yolov2网络结构改进点 yolov3改进点 yolov4网络结构图改进点 yolov5改进点 参考资料 YOLO的核心思想是将物体检测视为一个回归问题&#xff0c;它不采用传统的区域提议方法&#xff0c;而是通过单一的神经网络对整个图像进行预测。这意味着YOLO只需…

C/C++两点坐标求距离以及C++保留两位小数输出,秒了

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 3. 备注 1. 前言 依旧是带来一个练手的题目&#xff0c;目的就一个&#xff0c;方法千千万&#xff0c;通向终点的方式有很多种&#xff0c;没有谁与谁&#xff0c;我们都是为了成为更好的自己。…

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock&#xff1f; Amazon Bedrock是亚马逊云服务&#xff08;AWS&#xff09;推出的一项旗舰服务&#xff0c;旨在推动生成式人工智能&#xff08;AI&#xff09;在各行业的广泛应用。它的核心功能是提供由顶尖AI公司&#xff08;如AI21 Labs、Anthropic…

python中的循环结构

注意&#xff1a;range&#xff08;&#xff09;函数 累加和&#xff1a; 注意&#xff1a;if 下面如果有好几行&#xff0c;只执行一行 print必须和 for 开头相同格数 例题&#xff1a;水仙花数 注意在print语句中&#xff0c;一句好“ 。。。。。 ”后面必须有逗号然后再写变…

C++(一)----C++基础

1.C的发展史 C语言诞生后&#xff0c;很快普及使用&#xff0c;但是随着编程规模增大且越来越复杂&#xff0c;并且需要高度的抽象和建模时&#xff0c;C语言的诸多短板便表现了出来&#xff0c;为了解决软件危机&#xff0c;上世纪八十年代&#xff0c;计算机界提出了oop&…

linux top命令介绍以及使用

文章目录 介绍 top 命令1. top 的基本功能2. 如何启动 top3. top 的输出解释系统概况任务和 CPU 使用情况内存和交换空间进程信息 4. 常用操作 总结查看逻辑CPU的个数查看系统运行时间 介绍 top 命令 top 是一个在类 Unix 系统中广泛使用的命令行工具&#xff0c;用于实时显示…

WebGL系列教程二(环境搭建及初始化Shader)

目录 1 前言2 新建html页面3 着色器介绍3.1 顶点着色器、片元着色器与光栅化的概念3.2 声明顶点着色器3.3 声明片元着色器 4 坐标系(右手系)介绍5 着色器初始化5.1 给一个画布canvas5.2 获取WebGL对象5.3 创建着色器对象5.4 获取着色器对象的源5.5 绑定着色器的源5.6 编译着色器…

ChatGPT 3.5/4.0使用手册:解锁人工智能的无限潜能

1. 引言 在人工智能的浪潮中&#xff0c;ChatGPT以其卓越的语言理解和生成能力&#xff0c;成为了一个革命性的工具。它不仅仅是一个聊天机器人&#xff0c;更是一个能够协助我们日常工作、学习和创造的智能伙伴。随着ChatGPT 3.5和4.0版本的推出&#xff0c;其功能和应用范围…