电子产业一站式赋能平台

PCB联盟网

搜索
查看: 3937|回复: 3
收起左侧

PCIe网卡驱动编译&DPDK相关源码编译&运行体验VOL2

[复制链接]

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-4-2 11:13:10 | 显示全部楼层 |阅读模式
上回说到使用开发板自带petaLinux文件系统和内核无法成功驱动PCIe网卡,于是在群里询问FAE刘工寻求帮助,得到的回复是要使用开发板自带的Linux内核源码,压缩包名为xlnx-linux,注意此内核非彼petaLinux内核,此内核的4G内存完全由文件系统接管,没有启用FPGA模块,也就是说开发板如果使用此内核启动的话,只有ARM-Linux相关功能而没有FPGA模块的功能,原本应该分给FPGA模块的2G内存也全部开放给文件系统,刘工说,也就是这个内核有设置正确的PCIe时钟而使得可以启用板子引出的PCIe接口(如PCIe网卡,PCIe加速卡,与别的机器进行PCIe通信等)。
      烧录xlnx-linux内核源码之前最好先完整编译一次,





  • <p><font face="微软雅黑"><span style="font-size: 18px;">make ARCH=arm64  distclean</span></font></p><p><font face="微软雅黑"><span style="font-size: 18px;">make ARCH=arm64  zynqmp_myd_defconfig</span></font></p><p><font face="微软雅黑"><span style="font-size: 18px;">make ARCH=arm64  -j4</span></font></p>


[color=rgb(51, 102, 153) !important]复制代码





-在开发板上直接编译,编译出来的内核,ko,dtb文件没有兼容性问题,但是编译速度会很慢
-编译之前先用make menuconfig开启某些功能,比如hidraw,ko选项打上勾,编译完成之后就能直接用了
-编译缺少某些工具软件比如bc之类的要apt install安装,这个倒不是什么难点

编译完毕之后烧录才是重点,官方给的文档里面xlnx-linux内核烧录方式是使用卡刷板启方式,即由SD卡拷贝内核文件到QSPI FLASH存储芯片中覆盖,再拷贝文件系统到EMMC中,烧录完毕之后需要设置开发板的启动拨码为0100,即QSPI启动,而如果需要替换内核文件或者是重新烧录文件系统的话,又要设置开发板为SD卡启动即1010,由于我当时烧录内核和文件系统的时候出了问题,反复这样做好几次了。

设置启动SD烧录启动卡非常简单,将所有文件拷贝到一个fat32格式的SD卡中即可(NTFS启动失败,一定要是FAT32):

这是我见过的最简单的卡刷方式了,BOOTLOADER直接放到卡中,既充当ramdisk(烧录SD卡时候所启动的那个系统叫ramdisk)的BOOTLOADER文件,更是作为板子启动的BOOTLOADER文件,既不用分区,也不用做BOOTLOADER软件烧录,xilinx如此方便开发者必须点赞!

烧录卡做好之后,在/mnt目录下可以找到mmcblk1p1文件即QSPI设备映射文件,按照手册给出提示,执行





  • /updatesys.sh /mnt/mmcblk1p1


[color=rgb(51, 102, 153) !important]复制代码



命令开始烧录,当然,这个烧录脚本updatesys.sh是可以给开发者修改的:

如图,KERNEL FILE相关语句是烧录内核文件的,ROOTFS相关语句则是烧录文件系统的,将任意语句上下文3~4行注释即为跳过此步骤,比如只需要更新内核,则将KERNEL FILE相关语句保留,其余三个操作全部注释,ROOTFS烧录同理,如果全部都不注释,那就是全部文件都烧录,这点再次为米尔的工程师点赞,这个脚本真的太方便了!

经历了简单但需要等待的烧录过程后,内核文件更新,可以再次基础上进行驱动开发了!比如将之前做的网卡驱动编译一次,这里我使用的是82573网卡,编译生成驱动文件e1000e.ko并加载:


可以看到已经生成网卡设备了:

不用怀疑,这个设备必定是能用的,我已经用上了,网速还不赖。

然后回到之前的DPDK相关步骤中:




  • cd /mnt/dpdk-stable-19.11.6/arm64-armv8a-linuxapp-gcc/kmod/
  • insmod igb_uio.ko
  • cd /mnt/dpdk-stable-19.11.6/usertools
  • ./dpdk-devbind.py --bind=igb_uio enp1s0


[color=rgb(51, 102, 153) !important]复制代码





分配大页内存也是成功的。










回复

使用道具 举报

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-4-2 11:13:22 | 显示全部楼层
需要做PCB线路板的可以联系我

13651479995
回复 支持 反对

使用道具 举报

lyl

1

主题

1119

帖子

3525

积分

四级会员

Rank: 4

积分
3525
发表于 2021-5-10 08:39:03 | 显示全部楼层

资料很好,学习学习
回复 支持 反对

使用道具 举报

3

主题

2721

帖子

3052

积分

四级会员

Rank: 4

积分
3052
发表于 2021-6-4 11:17:50 | 显示全部楼层
1111111111111111111111111
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表