首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SPI编写网络设备驱动程序?

如何使用SPI编写网络设备驱动程序?
EN

Stack Overflow用户
提问于 2019-12-06 11:04:42
回答 1查看 839关注 0票数 0

我使用铁锈在用户空间为NRF24L01+收发器实现了一个设备驱动程序。用户空间驱动程序使用内核spi接口驱动程序。将驱动程序编写为内核模块似乎非常困难,因为在linux设备驱动程序中找到的linux/netdevice.h文档似乎过时了(或者我不够聪明,无法理解复杂的细节)。

一个新的慕尼黑大学项目建议使用vfio。据我所知,这种类型的驱动程序实现使用iommu来管理设备的受保护内存区域的隔离。"Project“使用网络设备作为块设备,因此可以映射它。SPI是不同的,因为它是流协议。

我的问题是,是否有可能将用户空间spi网络设备驱动程序集成到linux网络堆栈中,例如由网络堆栈处理所有协议等。是否可以使用类似于Project的方法,比如在内核空间中有一个小组件,这是为了安全而隔离的,从而为用户构建一个“桥梁”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 11:39:47

我认为有两种可能:

  1. 使用分路接口
  2. 编写自己的“桥接”界面,如在用户空间和内核空间之间的抽头。

如果类似以太网的接口对您来说已经足够了,那么就使用TAP。我的意思是,TAP提供了将物理层移动到用户空间的功能。在您的例子中,它可以这样工作: SPI接收的数据可以被推到linux网络堆栈的接口上。从TAP接口(从Linux网络栈)接收的数据可以通过SPI进行推送。这就是你想要的吗?

如果以太网之类的接口(如TAP )对您来说是不够的,那么您可以基于TAP源在内核空间中编写自己的接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59211904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档