2010-11-11 109 views
0

我想在PCIe FPGA设备的设备驱动程序中调试一些有点奇怪的问题。设备驱动程序和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,这是非常相似的,我看到的问题。

+0

失去拼写L-O-S-I-N-G。 – Rob 2010-11-11 12:12:04

+0

为什么'x86'标签? – 2010-11-11 12:19:21

+0

@Paul我的目标系统是x86,我不确定它是否相关。你认为它不是? – 2010-11-11 12:27:59

回答

0

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

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

你能列出系统工作和不工作之间的区别,即你做什么不同以使卡工作?

+0

我遇到的问题很难再现。我也是这么想的,开机卡需要很长的时间,这使得软件变得混乱。 – 2010-11-11 15:21:35

+0

但是,卡启动并初始化后,它应该由linux热插拔系统自动检测到,并且它应该在发生时注册资源文件。 – 2010-11-11 15:26:19

1

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

当从休眠状态回来时,此过程重新生成,并且由于无法打开资源文件,因此它再次死亡,然后声明了严重错误。经过一段非常短的时间后,操作系统添加资源文件,并且此过程可以正常继续。