带有Yocto的外部xilinx PCie驱动程序

时间:2018-03-20 12:37:24

标签: linux-kernel fpga yocto xilinx

我用这个作为起点编译了xilinx pcie驱动程序。 https://www.yoctoproject.org/docs/current/kernel-dev/kernel-dev.html#incorporating-out-of-tree-modules 而不是使用它到预建的图像: MACHINE_EXTRA_RRECOMMENDS + =" kernel-module-mymodule" 我将内核文件.ko直接复制到图像中: fs @fs:/opt/PHYTEC_BSPs/yocto_imx7/build/tmp/work/cortexa7hf-neon-poky-linux-gnueabi/met/0.1-r0$ scp xpcie.ko root@172.17.100.101:/ lib / modules 然后当我插入这个连接硬件的内核模块时: root @ imx7d-phyboard-zeta-001:/ lib / modules #insmod /lib/modules/xpcie.ko

Base hw val 0

Base hw len 0

BAR0 of 0K

BAR0 of 0M

xpcie: Init: Could not remap memory.

insmod: ERROR: could not insert module /lib/modules/xpcie.ko: Operation       
not permitted

根@ imx7d-phyboard-ζ电-001:/ LIB /模块#

是什么原因? 是不是允许直接在已经构建的图像上复制内核? 此外,当我将其添加到图像时,就像在local.conf文件中一样:

MACHINE_EXTRA_RRECOMMENDS += "kernel-module-mymodule"

再次构建并加载图像,它在/ lib / modules /目录中不可用。在哪里可以找到它?或者使用其他3种方法会更好吗?

1 个答案:

答案 0 :(得分:0)

使用insmod安装驱动程序是正确的做法。它似乎不是你所看到的问题的原因。

构建驱动程序时,.ko文件通常位于构建驱动程序的源目录中,除非make modules_install

回到实际问题:

查看驱动程序源,消息"无法重新映射内存"表示驱动程序无法将PCIE内存区域映射到内核地址空间。

看起来没有配置基地址寄存器。在我使用的所有机器上,BIOS必须在Linux可以使用设备之前配置基地址寄存器。

我们对FPGA进行编程,重新启动机器,然后加载驱动程序并使用FPGA。你试过这个吗?你的FPGA是否出现在lspci?

FPGA编程完成后,如果PCIE配置没有改变,你可以告诉内核重新扫描,它会用相同的值写入基地址寄存器。