0

我正在尝试在 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 卡会出问题

问题是:

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

编辑

我刚刚发现了这个错误,这与我看到的问题非常相似。

4

2 回答 2

1

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

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

于 2010-11-17T07:51:01.357 回答
0

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

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

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

于 2010-11-11T15:05:23.940 回答