失去与 FPGA 设备的链接

Posted

技术标签:

【中文标题】失去与 FPGA 设备的链接【英文标题】:Losing link to the FPGA device 【发布时间】:2010-11-11 12:09:10 【问题描述】:

我正在尝试在 PCIe FPGA 设备的设备驱动程序中调试一些奇怪的问题。设备驱动程序和 FPGA 映像都是在内部开发的。

目标系统是 x86,操作系统是 fedora 9。它有一个 PCIe 卡,FPGA 插入它唯一的 PCIe 插槽。从 EEPROM 启动后加载 FPGA 映像。

驱动程序的编写方式是使用 /sys/bus/pci/devices/0000:02:00.0/ 资源文件(其中 0000:02:00.0 是包含 FPGA 的卡的 PCI 插槽)配置 FPGA。

系统启动时(或从休眠状态返回时),FPGA 链路接缝丢失,资源文件丢失。当 FPGA 正确启动时,一切正常(资源文件在那里)。 当系统进入休眠状态时,FPGA 断电。当它从休眠状态返回时,FPGA 上电,然后开始驱动初始化。

我怀疑接下来的事情:

固件中的错误 - 与 PCI 插件有关? 内核中的一个错误 - 不太可能,因为其他 PCI 卡可以正常识别。只有 这个 PCI 卡有问题

问题是:

有没有人遇到过类似的问题? 还有什么问题? 关于如何调试此问题的任何建议?

编辑

我刚找到this bug,和我看到的问题很相似。

【问题讨论】:

Losing 拼写为 L-O-S-I-N-G。 @Paul 我的目标系统是 x86,我不确定它是否相关。你认为不是吗? 也许——从你的问题中并不清楚你在寻找什么样的答案——这似乎更像是一个“呼救”而不是一个具体的问题。您可能想在您的问题中提及目标系统的详细信息,例如Linux、x86、32位PCI等 需要更多信息。例如,如何对 FPGA 进行编程?它是从 PCI 卡本身的配置内存中加载的吗? 【参考方案1】:

我终于设法调试了我的问题。就在进入休眠状态之前,所有仍在使用资源文件的进程都被杀死。不知什么原因,一个进程没有释放资源,就被杀死了。我们有一个看门狗,它会重新启动所有未运行的进程。

当从休眠状态回来时,这个进程重生了,由于它无法打开资源文件,它又死了,然后宣布了一个严重错误。过了一会儿,资源文件被操作系统添加了,这个过程可以正常继续。

【讨论】:

【参考方案2】:

PCIe 卡必须在特定时间内回复“有人在吗”消息。是否有可能是您的卡在休眠/重置后响应不够快?

如果没有更多的设计细节,除了猜测之外很难做任何事情。

你能列出系统工作和不工作之间的区别,即你做了什么不同的事情来让卡工作?

【讨论】:

我遇到的问题很难重现。我也是这么想的,卡上电需要很长时间,这会让软件变得一团糟。 但是卡在上电初始化后,应该会被linux热插拔系统自动检测到,发生时应该注册资源文件。

以上是关于失去与 FPGA 设备的链接的主要内容,如果未能解决你的问题,请参考以下文章

在特定设备上调试应用程序会导致应用程序崩溃并且 Xcode 失去与设备的连接

颤振失去与新 USB 设备的连接

Flutter:失去与设备的连接(生产应用程序)

基于FPGA的呼叫设备verilog开发

Android Management Api 失去对已注册设备的控制权

spi的fpga实现注意事项