Linux驱动开发
HappyMrSpring
这个作者很懒,什么都没留下…
展开
-
linux虚拟网络设备
网络虚拟化相关的Linux接口介绍:基于Tun/tap设备的示例代码,基于tun/tap字符设备生成虚拟网卡:基于tun/tap设备的应用:vpn、绕开防火墙:原创 2024-02-23 18:31:55 · 462 阅读 · 0 评论 -
Linux中断处理流程
1. 中断处理流程 当中断发生时,Linux系统会跳转到asm_do_IRQ()函数(所有中断程序的总入口函数),并且把中断号irq传进来。根据中断号,找到中断号对应的irq_desc结构(irq_desc结构为内核中中断的描述结构,内核中有一个irq_desc结构的数组irq_desc_ptrs[NR_IRQS]),然后调用irq_desc中的handle_irq函数,即中断入口函数。我们编写中断的驱动,即填充并注册irq_desc结构。2. 中断处理数据结构:irq_desc Lin转载 2021-07-14 09:44:13 · 1880 阅读 · 2 评论 -
存储器域、DRAM域和PCI总线域
1. 物理地址 1.1 虚拟地址经过MMU转换后的物理地址,指的是存储器域的地址空间编址。 1.2 存储器域并不是对主存(DRAM)的编址。 1.3 DRAM域是对主存的编码。比如内存条大小为8GB,则DRAM域通常编址为0至8GB。2. PCI总线域: 2.1 独立的地址空间。 2.2 PCI总线上各个设备的配置空间(存储资源)和BAR空间(存储资源)在该地址空间编址。3. 存储器域: 3.1 DRAM域和PCI总线域映射到该空间。 3.2...原创 2020-11-20 10:45:17 · 1315 阅读 · 0 评论 -
SR-IOV Spec 笔记
参考文档 PCI Local Bus Specification, Revision 3.0 PCI Bus Power Management Interface Specification, Revision 1.2 PCI Express Base Specification, Revision 2.1 Multi-Root I/O Virtualization and Sharing Specification, Revision 1.0 Address Tra...原创 2020-11-09 09:08:55 · 2605 阅读 · 0 评论 -
《Linux那些事儿之我是sysfs》笔记一:设备模型
内核版本:2.6.10目标:理解设备模型和sysfs文件系统1. 初探: sysfs文件系统的作用:用于将系统中的设备组织成层次结构,并向用户态提供详细的内核数据结构信息。 挂载命令:mount -t sysfs sysfs /sys。 sysfs信息来源:kobject层次结构,也就是linux系统的设备模型。2. linux设备底层模型 kobject: 每个在内核注册的kobject对象都对应于sysfs文件系统中的一个目录。 ...原创 2020-11-06 10:20:03 · 169 阅读 · 0 评论 -
IOMMU-VFIO-设备透传-笔记
1. IOMMU主要功能包括DMA Remapping和Interrupt Remapping。 DMA Remapping: 设备驱动通过DMA描述符告诉设备DMA控制器,本次DMA操作的存储器地址。 在宿主机上,DMA描述符上存储的是物理地址,DMA可正常进行。 在虚拟机上,设备通过VT-d等技术被直接分配给虚拟机后,DMA描述符上存储的是GPA(即HVA);而RC上映射的是HPA,故DMA不能正常进行;此时需要iommu将TLP中的GPA转换为H...原创 2020-11-05 14:12:25 · 4129 阅读 · 0 评论 -
《Linux那些事儿之我是PCI》笔记
1. PCI access mode: BIOS, direct, mmconfig, any BIOS mode: 有的BIOS支持PCI总线的枚举;此种方式直接使用BIOS程序枚举的结果。(64位平台没有该选项) ?? Direct mode: 内核进行PCI总线枚举过程; MMConfig: PCIE才用的上,PCI用不上;2. PCI设备配置寄存器的内容是谁写入的? 总线枚举 芯片组: 北桥+南桥; 北桥中包含host bri...原创 2020-11-03 11:34:05 · 847 阅读 · 1 评论 -
linux中的阻塞机制及等待队列
转自:https://www.cnblogs.com/gdk-0078/p/5172941.html阻塞与非阻塞是设备访问的两种方式。驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。一、阻塞与非阻塞阻塞调用是没有获得资源则挂起进程,被挂起的进程进入休眠状态,调用的函数只有在得到结果之后才返回,进程继续。非阻塞是不能进行设备操作时不挂起,或返回,或反复查询,直到可以进行操作为止,被调用的函数不会阻塞当前进程,而.转载 2020-10-19 13:58:36 · 1021 阅读 · 0 评论 -
《PCI Express体系结构导读》 -- 王奇
《PCI Express体系结构导读》 -- 王奇http://blog.sina.com.cn/s/articlelist_1685243084_3_1.html原创 2020-08-29 20:53:25 · 3462 阅读 · 0 评论 -
pci_register_driver
转自:https://blog.csdn.net/Buyi_Shizi/article/details/51262587 在bus总线对应的数据结构bus_type中,有两份重要的结构体,struct kset drivers和struct kset devices。在写驱动程序的时候,要想驱动程序能工作,首先就要把驱动程序对应的driver程序放进struct kset driver结构体中,然后把设备的信息放入struct kset device中。 而pci_register_dr...转载 2020-08-20 10:24:29 · 400 阅读 · 0 评论 -
Linux设备驱动之字符设备驱动
转自:https://blog.csdn.net/andylauren/article/details/51803331一、linux系统将设备分为3类:字符设备、块设备、网络设备。应用程序调用的流程框图:三种设备的定义分别如下,字符设备:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。字符设备是面向流的设备,常见的字符设备如鼠标、键盘、串口、控制台、LED等。块设备:是指可以从设备的任意位置读取一定长度的数据设备。块设备如硬盘、转载 2020-08-19 13:56:14 · 778 阅读 · 0 评论 -
linux设备驱动之PCIE驱动开发
转自:https://blog.csdn.net/u010872301/article/details/78519371PCIE(PCI Express)是INTEL提出的新一代的总线接口,目前普及的PCIE 3.0的传输速率为8GT/s,下一代PCIE 4.0将翻番为16GT/S,因为传输速率快广泛应用于数据中心、云计算、人工智能、机器学习、视觉计算、显卡、存储和网络等领域。PCIE插槽是可以向下兼容的,比如PCIE 1X接口可以插4X、8X、16X的插槽上。实现基本的PCIE驱动程序,实现以转载 2020-08-19 11:48:37 · 1438 阅读 · 0 评论 -
图解PCIE原理(从软件角度)
转自:https://blog.csdn.net/hulidong971/article/details/414121991 PCIE基本概念1.1 PCIE拓扑架构图1.2 PCIE Switch内部结构图1.3 PCIE协议结构图2 PCIE枚举原理2.1 Type0&Type1配置头空间2.2 拓扑示例连接Device0的端口设为Port0,连接Device1的端口设为Port1 (Port可...转载 2020-08-19 11:45:26 · 1322 阅读 · 0 评论 -
PCIe传输速率和可用带宽(吞吐量)计算
转自:https://blog.csdn.net/s_sunnyy/article/details/79027379==================================================================== PCI Express 版本 编码方案 传输速率 吞吐量 ×1 ×4 ×8 ×1...转载 2020-08-19 11:42:55 · 1384 阅读 · 0 评论