linux下pcie驱动开发,该看些什么资料

linux下pcie驱动开发,该看些什么资料,第1张

linux下pcie驱动开发大概可以分为4个阶段,水平从低到高:

从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码

系统编程推荐《高级unix环境编程》;

还有《unix网络编程》;

内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发

参考书如下:

1.《linux device drivers》

2.《linux kernel development》

3.《understading the linux kernel》

4.《linux源码情景分析》

然后还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好。

项目需要使用pcie进行固件升级,为了适配原来的协议和应用,从pcie虚拟一个网卡出来进行升级。

因为Linux 内核本身已经含有了对TCP/IP协议栈的支持,最直接的方法就是开发一个基于PCI-E的虚拟网卡,这样有了IP地址,就可以通过TCP/IP协议栈进行通讯的了。

虚拟网卡的接口要求很简单,只要能够把协议栈送下来的IP包写到PCI-E的地址空间,即从虚拟网卡发送出去了;同时也能将其它虚拟网卡发送到PCI地址空间的IP包读出来,并送到上层协议栈上。虚拟网卡的接口要求很简单,只要能够把协议栈送下来的IP包写到PCI-E的地址空间,即从虚拟网卡发送出去了;同时也能将其它虚拟网卡发送到PCI地址空间的IP包读出来,并送到上层协议栈上。

其实这个过程就是把pcie共享内存看作网络phy,实现基于PCI共享内存的网卡设备驱动程序,这样就提供了TCP/IP协议栈中的数据链路层。而Linux内核中的网络子系统被设计成完全与协议无关。内核与网络驱动程序之间的交互,每次处理的是一个网络数据包;协议隐藏在驱动程序之后。这样应用程序就可以通过TCP/IP协议与网络上其他节点进行通讯了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8357966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存