dpdk学习

在学习dpdk的原理,看igb_uio驱动实现过程中,了解到该驱动做了两个工作:

1、 注册pci设备到igb_uio的id_table中,并通过sysfs和内核交互,把pci设备和igb_uio驱动绑定;

2、 让用户态的网卡驱动程序和uio交互;

 

在学习pci注册到igb_uio的原理时,涉及到pci设备的配置空间,配置空间中有个BAR字段,用来做地址映射的,把pci设备的存储空间映射到内存里。

 

网卡接收到数据,先放再网卡内的缓存空间(比较小,4k左右,程序无法访问),通过DMA模块,把这部分数据拷贝到内存中,该内存地址就是BAR寄存器中存放的地址。

 

因为涉及到pci知识,难度很大,先了解pci原理后,具体细节后面再深究,这里记录一下整体框架。

关于pci相关书籍《pci express 体系结构导读》王齐

 

驱动开发教程及驱动开发用到的函数,了解这些对理解igb_uio实现原理很重要。

参考博文:字符设备驱动结构cdev介绍 - 知乎 (zhihu.com)

 

 

参考博文:

讲解pci设备注册到igb_uio中的过程:

1.2 --> DPDK 的网卡绑定、解绑过程解析_dpdk bind-CSDN博客

 

 

另外在学习中,了解到驱动和设备关联的方法,这里需要通过sysfs,一种虚拟文件系统,可以用来管理、配置设备

参考博文:proc、sysfs、debugfs、tmpfs、devpfs等文件系统简介 - 骄傲的肉包 - 博客园 (cnblogs.com)

/sys/bus/pci/xxxxx   下设备目录及驱动目录下相关文件作用介绍:

【PCIe】bind、unbind、new_id、remove_id解析 - 知乎 (zhihu.com)

 

posted on 2024-05-10 14:49  lingzshen  阅读(42)  评论(0)    收藏  举报