一、开发前须知
Linux下PCIE网卡驱动开发,首先需要板卡支持PCIE功能,然后有相应的PCIE驱动,且已经编译到内核中,当然如果你是大能,只要有硬件支持,所有软件部分,你都可以自己实现~!
二、 具体开发步骤
1、先准备好Linux内核源码,编译好,支持好PCIE驱动,确保能通过lspci指令看到PCI相关信息
2、开始码代码啦
1)先注册,创建一个PCIE设备↓,然后实现

2) 实现 xlinxk7_init_one 函数,需要再函数内部初始化PCIE设备,同时注册网络设备(我是这么干的~~),DMA初始化、中断初始化,网络设备初始化等。另外网络设备还有结构体需要初始化哦,具体可网上下载其他网卡驱动源码(什么RTL8168,DM9000等,自己看看就明白了)

如果是要一个驱动多个网卡的,也可以用我这种骚操作(未知风险极大~!),在init函数内同时注册多个网卡设备,外部的PHY就要看你用的什么,怎么分配了,我这里是FPGA,协议都是做好的~。

3) 实现xlinxk7_remove_one 函数

4)实现xlinxk7_shutdown函数
5)开始实现网卡相关函数,这里就不一一展示了,可以去参考大厂的驱动~

三、测试
干完上面的活,那就可以开始测试了,可以插入模块,可以编入内核,看你喜欢,我这边IMX6Q的CPU,测速率大于500M时,PCIE会卡死,具体卡死原因未知,在300M左右可稳定运行,由于项目需要所以强制限速300M左右,3个网口,每个网口100M,运行一切正常,刚好够用~~。
2673

被折叠的 条评论
为什么被折叠?



