linux - PCIe : lspci shows 'Memory at <unassigned> ...'

标签 linux memory driver pci-e

有人问过类似的问题,但这些信息似乎都没有帮助。我有一个运行 Linux 3.14 的飞思卡尔 iMX6 芯片和一个 Altera Cyclone V GT FPGA 开发套件。当我将套件(带有 Altera 的演示 PCIe 代码)插入 iMX6 载板(PCIe 连接)并输入 lspci 时,我得到了未分配的 BAR0 和 BAR1 内存。我们是否更改内存类型并不重要(32 位与 64 位 - 是否不可预取)。进去并在设备下进行了“回声 1 > 启用”并重新扫描,但仍然没有。在这一端没有实现驱动程序,但其他 PCIe 设备没有驱动程序并且它们分配了资源(即 resource0..3)。几乎每个 PCIe 内核配置设置都已添加。我可能会遗漏什么?

最佳答案

对于 i.MX6,Linux 为 BARx 接受的最大内存量为 15MB。 当BAR过大时,Linux无法分配内存空间,一直处于未分配状态。

您的 BAR0 和 BAR1 的大小是多少? 我认为您应该减小 BARx 的大小。 如果您的 FPGA 上连接了 DDR,请考虑 span extender允许 i.MX6 -> DDR 访问。

我写了一个小教程here如果您有兴趣,可以解释如何通过 PCIe(1 channel )将 iMX6 与 CycloneV GX 连接。

关于linux - PCIe : lspci shows 'Memory at <unassigned> ...' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35189728/

相关文章:

linux - 使用 SSH grep 来自多个服务器的关键字

linux - 如何编写 stap (systemtap) 脚本来查看某个进程是否调用了特定的内核函数?

python - 如何在 Python 中对 Linux 设备文件执行低级 I/O?

Docker 在终止进程后分配了 RAM

delphi - 如何在Delphi中使用 "HID_REPORT_DESCRIPTOR"

linux - 更新时如何使分支更改反射(reflect)在主服务器上?

c - 向 c 程序添加任何单行代码时写入套接字都会失败

c - .o 文件中的内存共享

python - 一个设备可以有两个 UMDF 驱动程序吗?

连接 2 个 unicode 字符串 - 如何做到这一点?