自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 资源 (4)
  • 收藏
  • 关注

转载 dpdk报文收发流程

当应用层从软件队列中获取到mbuf后, 需要重新从内存池申请一个mbuf空间,并将mbuf地址放到描述符队列中, 相当于告诉dma控制器,后续将收到的报文保存到这个新的mbuf中, 这也是狸猫换太子的过程。和传统报文接收不同,当应用层想要接收来自网卡的报文时, 应用层通过while死循环的方式,调用rte_eth_rx_burst接口轮询接收来自网卡的报文,相当于绕过了内核协议栈,将内核旁路了。当应用层需要发送报文时,调用rte_eth_tx_burst接口,将报文放到软件发送空间,也就是mbuf空间中。

2024-06-02 15:41:57 169

转载 dpdk应用层对网卡进行配置

需要注意的是,这里仅是开辟软件发送空间,并没有将e1000_adv_tx_desc描述符与软件发送空间,也就是mbuf关联起来,这两者的关联在rte_eth_dev_start中完成。软件接收空间,也就是mbuf空间,是用来告诉dma控制器,收到的报文存放到e1000_adv_rx_desc描述符成员pkt_addr指向的位置,这个pkt_addr指向的位置就是mbuf的地址。这个接口大部分是对寄存器进行设置,例如将发送描述符队列的位置,队列总大小,队列的开始位置,队列的结束位置等信息写入寄存。

2024-06-02 11:38:47 128

转载 dpdk pmd驱动初始化

应用层之所以可以对这个配置空间中的寄存器进行操作,得益于igb_uio驱动,igb_uio驱动将网卡的配置空间暴露到应用层来,应用层才能知道网卡的寄存器地址在哪里,进而对这些寄存器进行读写操作。pmd里面会维护一个网卡数组,对于每一个网卡结构,都会维护这个网卡的接收发送数据的回调,关联的驱动等信息。在每一个网卡的配置目录下,都有一个resouce文件,里面记录了这个网卡的配置空间的开始位置,结束位置,以及配置空间的总大小。相应的,nvm层,vbx层都是这样的一种框架结构,掌握了mac层,其他层也是类似的。

2024-06-02 11:26:58 54

转载 DPDK igb_uio驱动分析

本文整理下之前的学习笔记,基于DPDK17.11版本源码分析。主要分析一下igb_uio驱动源码。

2024-06-02 10:56:19 35

转载 DPDK探测设备并初始化

遍历驱动链表rte_pci_bus.driver_list,调用 RTE_PMD_REGISTER_PCI时将驱动插入此链表。如果网卡绑定到 igb_uio 或者 uio_pci_generic,则调用 pci_uio_map_resource。rte_eth_dev_pci_generic_probe是个通用的封装函数,用来申请 rte_eth_dev 内存,遍历设备链表rte_pci_bus.device_list,rte_pci_scan 阶段会把扫描到的设备插入此链表。本文重点介绍网卡相关。

2024-06-02 10:40:02 50

原创 platform devices创建实例

【代码】platform devices创建实例。

2024-03-24 11:17:13 146

转载 module_platform_driver()

在Linux设备驱动开发使用platform平台驱动模型过程中,在定义且初始化好platform_driver结构体变量以后,我们需要向 Linux 内核注册一个 platform 驱动。下面介绍两种方法。

2024-03-18 00:12:19 461

转载 内核对设备树的处理——device_node转换为platform_device

本节学习内核如何将转换为。先回顾一下。所谓总线设备驱动模型,就是将设备分为)和)两部分。使用总线设备驱动模型,如果要去修改,就需要,还要。而就是将通过来描述,这样,修改平台设备后就不需要重新编译内核,。使用设备树的流程大致如下:首先,编写文件,然后使用dtc工具编译dts文件得到dtb文件,内核解析dtb文件生成device_node,之后再将device_node转换成platform_device。以之前的jz2440.dts为例。

2024-03-17 16:19:05 236

转载 devm_ioremap_resource devm_ioremap 区别

但要是直接devm_ioremap,应该也可以,但没有 devm_request_mem_region, 应该在/proc/iomem 查不到。但如果一个device resource 已经申请过了,在调用devm_request_mem_region就会出现下面错误。从driver 代码中可以看到有时间用devm_ioremap_resource, 而有时直接用devm_ioremap。总结来说,devm_ioremap 就是直接映射, devm_ioremap_resource 是先申请,后映射。

2024-03-17 11:52:49 449

原创 Linux Clock

https://blog.csdn.net/Guet_Kite/article/details/78012651 嵌入式Linux驱动笔记(十四)------详解clock时钟(CCF)框架及clk_get函数。https://blog.csdn.net/zgtzqzg2020/article/details/109220181 Linux clk子系统(5)--fixed-factor-clk。

2023-08-06 10:03:01 448

原创 Fixed PHY

FIXED-PHY的本质和externel phy没有区别,只是使用虚拟的mii_bus来注册fixed phy,仍然需要创建phydev, 仍然需要phy driver,如果没有注册specific driver则是默认使用generic phy driver. 并且需要利用phydev的状态机的运转来adjust link。而后续引入的PHYLINK则是大大的优化了fixed link的实现以及对SFP的支持(这里暂不讨论)。

2023-05-14 22:53:34 973

转载 Linux Mii management/mdio子系统分析之六 fixed-mii_bus分析(mac2mac分析)

而针对fixed_mii_bus上的成员phys链表上的fixed_phy链表成员,仅在fixed_mdio_bus_init中注册fixed_mii_bus时,通过mdiobus_register时,完成将该链表上的所有链表成员,均为其注册对应的phy_device至mdio_bus上。接口fixed_phy_register在调用fixed_phy_add之后,调用phy_register,实现phy_device的注册,弥补了fixed_phy_add的不足。struct mii_bus类型的成员;

2023-05-14 22:35:50 711

转载 linux phy fixed-link

linux内核驱动已经对PHY有很好的支持,一般PHY驱动用于对外部PHY进行配置,获取外部网络的连接状态、速度、双工属性等,但对于一些通用的switch芯片,一般与MPU是MAC-MAC的连接方式,另外还有些FPGA的关联应用,也是MAC-MAC,这种情况下,我们希望连接状态、链接速度、双工属性等参数为固定,因此内核提供了fixed-link的机制,实际上linux是通过虚拟一个属性固定的PHY设备来实现。link-gpios用来指定表示检测网络连接状态的GPIO,驱动会读取gpio的值来决定网络状态,

2023-05-14 16:36:08 1090

原创 PinCtrl

gpio:

2023-05-10 17:09:37 66

转载 关于BIT位域和大小端的理解

因此,在数据传输中,通常需要将数据从本机字节序统一转换成网络字节序(网络字节序为大端)然后传输,接收方接收数据后,再将数据转换为本机字节序。反过来说,大端数据0x5B 59 97 85传输给小端设备接收后,在内存的数据为5B 59 97 85,未做转换时,小端设备解析为0x85 97 59 5b,转换字节序之后为0x5B 59 97 85。任何在不同系统间的通信信息都经过网络字节(大端)序进行传输,也就是说不管本机是什么模式,都要保证发送端传输的数据转换为网络序,接受端都要把网络序的数据转换为本地序。

2023-04-02 12:15:46 488

转载 linux运行大端程序,linux kernel如何处理大端小端字节序

作为软件人员,我最关心第二种方案是否可行,因为在读写寄存器时对数据进行swap,增加了寄存器读写的复杂度,原来一条存储/加载指令可以完成的工作,现在可能需要增加一些更swap相关的指令,无法保证寄存器操作的原子性了。根据之前的理解,字节序可以认为是处理器主观的概念,就像人如何去看待事物一样,处理器分大端和小端,对于内存的读写,只要保证数据类型一致,就不存在字节序的问题。对于常数数据,采用的是普通的位移然后拼接的方法,对于常数,这样的消耗是有必要的(这是kernel的解释,不是很理解)

2023-03-31 18:19:02 320

转载 浅谈大小端(Endian)与位域

在大端系统中,结构体变量及其成员的存储情况如下:.a1.a2.b1.b2.b3.b4bit0001] [02070810] [1114] [1519] [2023data010000111001000010110011.a1010b010x1.a2050b0000110x3.b1020b1000x4.b20。

2023-03-31 17:14:55 1887

转载 Ethernet下字节序和bit序的总结

按照上述的原理,假设,我们不遵从网络字节序(大端)的要求,小端系统pc1要发送数据0x12345678,则发送的字节依次为0x78, 0x56, 0x34, 0x12。同样的,在小端系统,网卡收到bit数据时,依次存放在bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0.比如,在小端系统中,网卡发送bit数据时,依次发送bit7, bit6, bit5, bit4, bit3, bit2,bit1,bit0.假设pc1要发送一个字节的数据,是怎么发送的呢?

2023-03-31 17:08:02 475

转载 #!/bin/sh简介

openwrt

2023-02-26 23:52:55 5494

转载 openwrt reboot流程

Openwrt

2023-02-26 23:49:21 2779

转载 OpenWRT 启动流程(三) /sbin/procd 分析

openwrt

2023-02-26 17:39:18 481

转载 OpenWRT 启动流程(二) /etc/preinit 脚本分析

Openwrt

2023-02-26 17:15:47 348

转载 OpenWRT 启动流程(一) /sbin/init 进程分析

Openwrt

2023-02-26 16:54:12 897

转载 Linux驱动开发—— of_property_read_u8

dts

2023-01-06 00:49:12 368

转载 smp irq affinity介绍

smp affinity

2022-12-19 10:30:25 1014

转载 【STM32】以太网DMA描述符

DMA

2022-12-19 00:56:57 1957 1

转载 NAPI(New API)的一些浅见

NAPI

2022-12-18 22:39:04 1039 1

原创 Linux Macsec

macsec on linuxmacsec-implementation-on-linux

2022-05-15 22:54:59 539

转载 以太网详解(二)-物理介质(100base-TX等)介绍

转载原文:https://blog.csdn.net/ZCShouCSDN/article/details/80208596 在搞网络这一块的时候,看到了100Base-T、100Base-TX等这些东西,在IEEE802.3中,也到处是这些词。大体了解了一下,下面是正文: 以太网采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波监听多路存取和冲突检测)介质访问控制方式的局域网技术,最初由Xerox公司于1975年研制成功,19.

2022-03-13 16:36:58 5285

转载 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,将MAC集成进CPU而将PHY留在片外,这种结构是最常见的。 下图是网络接口内部结构图,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与.

2022-03-13 16:23:28 5566

转载 10GBASE-T,10GBASE-R,10GBASE-X 和10GBASE-W区别

参考链接: https://www.rfwireless-world.com/Terminology/10GBASE-T-vs-10GBASE-R-vs-10GBASE-X-vs-10GBASE-W.html 10GBASE-T The version 10GBASE-T has following features. • Supports 64B/65B signal encoding type • supports transmission over twisted pair cabling • .

2022-03-13 16:17:50 1709

转载 扫盲-以太网MII接口类型大全-MII、RMII、SMII、GMII、RGMII、SGMII、XGMII、XAUI、RXAUI

一、简介     MII是英文 Medium Independent Interface 的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。下面对它们进行一一介绍。 二、MII接口类型 1、MII接口     TX_ER(Transmit Error): 发送数据错误提示信号,同.

2022-03-13 16:13:46 12994 2

转载 Linux Mii management/mdio子系统分析之五 PHY状态机分析及其与net_device的关联

      前面几章基本上完成了mdio模块驱动模型的分析,本篇文章主要讲述phy device的状态机以及phy device与net_device的关联。Phy device主要是对phy的抽象,而net_device主要是对mac的抽象,而mdio总线以及mii_bus主要用于对phy设备的控制(包括设置phy设备的工作模式、速率模式、...

2022-03-06 00:02:08 716 1

转载 PHY驱动调试之 ---PHY设备驱动(三)

1. 前言  内核版本:linux 4.9.225,以freescale为例。(部分内容待修改和补充,不一定准确) 2. 概述 上一篇文章讲了控制器的驱动使用的是platform总线的连接方式,本节要讲的PHY设备驱动是基于device、driver、bus的连接方式。 其驱动涉及如下几个重要部分: 总线 - sturct mii_bus (mii stand for media independent interface)设备 - struct phy_device驱动 - stru.

2022-03-05 23:56:03 3549

转载 PHY驱动调试之 --- PHY控制器驱动(二)

1. 前言  内核版本:linux 4.9.225,以freescale为例。 2. 概述 PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII/GMII/RMII/SGMII/XGMII等多种媒体独立接口(介质无关接口)与数据链路层的MAC芯片相连,并通过MDIO接口实现对PHY状态的监控、配置和管理。 PHY与MAC整体的大致连接框架如下(图片来源于网络): PHY的整个硬件系统组成比较复杂,PHY与MAC相连(也可以通过一个中间设备相连),MAC与CP..

2022-03-05 23:37:28 2791 1

转载 PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)

 最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助。在这个系列篇中,我也会转载部分优秀的博文(会附上链接),以及增添自己的理解,如果部分内容有侵权的地方,麻烦联系我。 概述 管理MII接口的MDIO接口是一个双线的串行接口,用来对PHY芯片等物理层信息进行操作管理。 MDIO的历史 MDIO是Management Data Input/Output 的缩写,有两根线,分别为双...

2022-03-05 23:16:15 1050

转载 Linux Mii management/mdio子系统分析之四 mdio总线及phy驱动模型及其开发流程

      前三篇文章完成了mdio子系统概述、mdio子系统驱动模型概述、mii_bus子模块方法及驱动实现分析,本篇文章我们主要进行mdio总线驱动实现分析、phy驱动实现分析等部分,涉及的内容如下: 一、mdio总线实现及相应方法分析   二、phy驱动实现相应方法的分析   ...

2022-03-05 23:13:40 1314

转载 Linux Mii management/mdio子系统分析之三 mii_bus注册、注销及其驱动开发流程

      本篇是mii management/mdio模块分析的第三篇文章,本章我们主要介绍mii-bus的注册与注销接口。在前面的介绍中也已经说过,我们可以将mii-bus理解为mdio总线的控制器的抽象,就像spi-master、i2c-adapter一样。 本篇文章主要涉及如下两部分:   mii-b...

2022-03-05 23:11:20 887

转载 Linux Mii management/mdio子系统分析之二 mdio总线-设备-驱动模型分析

      接着上篇文章继续分析mdio子系统,本章主要介绍mdio子系统的驱动模型,当然了介绍mdio子系统的驱动模型,就绕不开linux系统设备-总线-驱动模型,所有的总线类的驱动,基本上都可以理解为继承自linux系统设备-总线-驱动模型。 本篇主要介绍如下几部分的内容: 一、总线-设备-驱动-控制器模型分析 二、总线定义 ...

2022-03-05 23:06:54 818

转载 Linux Mii management/mdio子系统分析之一 总体概述

  从本章开始,我们介绍linux的mii management对应的mdio子模块,该模块主要用于管理phy设备,实现phy device创建与phy driver的注册等功能。本系统主要涉及如下按如下几个篇章进行分析: 一、总线概述(介绍mdio驱动模型的简要逻辑模型) 二、mdio总线-设备-驱动模型分析 三、虚拟mii_bus模型分析(即fi...

2022-03-05 23:03:58 682 1

ipip6_packet.rar

tunnel ipv4-in-ipv6 抓包,包括icmp tcp udp形式的包,学习ipv4 in ipv6 tunnel时可以参考

2020-08-20

linux_tun_test.rar

linux tun实验抓包,wireshark抓包,具体参考 https://blog.csdn.net/u014044624/article/details/104823596

2020-03-13

wifi direct协议

2017-02-19

Wi-Fi_P2P_Technical_Specification_v1.7

Wi-Fi_P2P_Technical_Specification_v1.7

2017-02-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除