【问题标题】:External xilinx PCie driver with Yocto带有 Yocto 的外部 xilinx PCie 驱动程序
【发布时间】:2018-08-29 06:43:36
【问题描述】:

我以此为起点编译了 xilinx pcie 驱动程序。 https://www.yoctoproject.org/docs/current/kernel-dev/kernel-dev.html#incorporating-out-of-tree-modules 然后不要将其用于预建图像: MACHINE_EXTRA_RRECOMMENDS += "内核模块我的模块" 我将内核文件 .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

root@imx7d-phyboard-zeta-001:/lib/modules#

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

MACHINE_EXTRA_RRECOMMENDS += "kernel-module-mymodule"

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

【问题讨论】:

  • 改进日志消息的格式会有所帮助。此外,来自 dmesg 输出的相关 sn-ps。
  • 另外,您使用的是什么 FPGA?和主持人?抱歉,刚刚注意到它是一个 ARM PCIE 主机,所以我关于 BIOS 的 cmets 可能无关紧要。

标签: linux-kernel fpga yocto xilinx


【解决方案1】:

使用 insmod 安装驱动是正确的做法。这似乎不是您看到的问题的原因。

当您构建驱动程序时,.ko 文件通常会在您构建它的源目录中,除非您make modules_install

回到实际问题:

查看驱动源码,消息“Could not remap memory”表示驱动无法将PCIE内存区域映射到内核地址空间。

看起来基地址寄存器没有配置。在我使用的所有机器上,BIOS 必须先配置基地址寄存器,Linux 才能使用该设备。

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

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

【讨论】:

  • 要重新扫描的内核:不幸的是我不知道该怎么做。有 4 种方法可以将内核附加到图像中: MACHINE_ESSENTIAL_EXTRA_RDEPENDS MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS MACHINE_EXTRA_RDEPENDS MACHINE_EXTRA_RRECOMMENDS 我使用了最后一种方法,但我遇到了上面提到的问题。当使用其中一种方法时,如果添加了内核,那么我认为配置基地址会自动完成???我应该使用哪一个??
猜你喜欢
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多