丢失与FPGA器件的链接

时间:2010-11-11 12:09:11

标签: x86 embedded-resource linux-device-driver fpga pci

我正在尝试在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,这与我看到的问题非常相似。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

您能否列出系统工作与不工作之间的差异,即您采取哪些不同的方式让卡工作?