Other Parts Discussed in Thread: AM5728
您好!
这个问题与我们自己的电路板和基于 TI SDK 05.00.00.15的 Linux 有关
我们将 PCIe 总线用作两个单独的链路、连接两个不同的 FPGA 器件、其中 AM5728是 RC。
当我启动系统时、Linux 将检测并枚举这两个 FPGA。 我可以毫无问题地与这些 FPGA 通信。
但我希望能够在 CPU 未复位时在运行时重新配置 FPGA。
我对另一个 CPU 以及从其他用户那里读取的内容如下:
-通过以下方式从发现器件中移除 FPGA EP 器件:
echo 1 >/sys/bus/pci/devices/0001:01:00.0/ remove (0001.01.00.0是 FPGA EP 的 id)
-现在重新配置 FPGA
-重新配置 FPGA 时,执行 PCI 重新扫描,方法是:
echo 1 >/sys/bus/pci/devices/0001:00:00.0/rescan (0001:00:00.0是 AM5728中网桥的 ID)
通常情况下、应使用 lspci 再次显示 FPGA 以列出所有器件、但情况并非如此。
经过一些调查、我发现 PCIe 控制器的 LTSSM 已禁用、因此我启用了它以查看将发生什么情况。
当我这么做时、我可以再次枚举 FPGA、并使用 lspci 命令再次出现。 但不幸的是、这还不够(正如预期的那样)。
经过进一步调查并阅读用户手册后、我可以看到 PCIe 控制器已复位(PCIe 链路断开复位条件)、并且由于复位、PCIe 桥配置设置为默认值、并且从未在 PCIe 驱动程序中重新编程
我还尝试了 SDK 06.00.00.07、但现在行为发生了变化。
我的问题是、此功能是否有效、如果有效、我应该采取不同的措施。 对于我们来说、对 FPGA 进行重新编程运行时间至关重要、因此重新枚举必须起作用。
此致、
Robert