首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个主板Windows设备管理器提示资源冲突,错误代码为12

多个主板Windows设备管理器提示资源冲突,错误代码为12
EN

Stack Overflow用户
提问于 2020-10-28 14:33:50
回答 1查看 56关注 0票数 2

我在系统中插入了多个相同的板。Device PCIe是用Xilinx核实现的。每个FPGA程序编写完成后,手动刷新设备管理器,检查设备和驱动程序是否正常工作。

我的困惑是,这种方法似乎只能同时在两个板上工作。对第三块板进行编程,然后刷新任务管理器后,系统提示资源不足,“此设备找不到足够的可用资源(代码12)”。

我尝试禁用其他两个板,但设备仍然提示冲突。我不知道如何查询冲突的资源。

我的主板有2条(BAR0: 2KB,BAR1:16MB)和1个IRQ。

我做了几个实验,觉得是内存资源冲突造成的。冲突的一方是主板附带的AMD集成显卡。第一,第二,第三都显示了我的板号。

由于冲突,无法识别第3项。

在我关闭它之后,我插上了所有三块板的电源,然后又打开了它。因此,在启动过程中,系统在突然断电后重新启动,然后三个板卡都正常。此时,发现显卡的内存地址发生了变化

我想知道如何解决冲突?修改我的驱动程序代码或FPGA配置?

EN

回答 1

Stack Overflow用户

发布于 2020-10-30 14:56:46

PCIe枚举应该可以解决内存分配问题,但是有几个实现问题需要注意。举个例子,我使用过Xilinx XDMA的2 2GB大小的64位条码,我还用过一块DELL XPS主板。但我在IBM系统上也做了同样的事情,它就这样工作了。这里的要点是,枚举可以通过固件、硬件或操作系统驱动事件来完成。如果你在做硬件管理器,这听起来像是操作系统驱动的,但当我在XPS主板上烤面包时,这是某种固件问题,与导致永久故障的条块大小有关。16MB不是很大,应该不是问题,但我建议先使用Xilinx的默认值,并在那里显示可靠性。我想是1M的一个酒吧。我已经运行了3x64位条,每条1MB没有问题,但保持它简单,并显示可靠性。然后再往上走。这将有助于隔离它是否是系统碎片。

我见过一些系统使用基于固件的枚举,在FPGA配置之前,它出现得非常快,在这种情况下,没有PCIe目标ID。如果您经常发现您的FPGA在加电时没有检测到,但在重新扫描时检测到,这可能是一种症状。如何解决这个问题有点让人头疼。我们最终使用了部分重新配置。从PCIe接口开始,然后重新配置以加载剩余的映像。希望这不是这个问题

接下来要注意的是FPGA中的重置机制。你可能把PLL复位挂到了总线复位上,这是很棒的,然而,我在过去也挂过复位到内部PCIe锁定信号,这可能不是up。出于故障排除的目的,请保持重置简单,并去掉其他所有设置,以表明只有PCIe IP本身是可靠的。

在这一点上你也要小心。如果你把东西脱下来,确保它是干净的。如果忽略PLL锁,并尝试使用Xilinx驱动程序,例如XDMA驱动程序,它将使用一个例程尝试识别具有数据事务的XDMA。它正在查找DMA条,一次查找一条。但当它这样做时,如果BAR不是XDMA控制BAR,它尝试的事务可能会在AXI总线上发出。如果发生这种情况时,AXI总线没有超时重置或时钟,您将锁定AXI总线,我已经多次以这种方式锁定了Linux机器。AXI要求事务完成,否则它只是在那里等待。

顺便说一句,在Linux机器上,您可以查看内核日志中的枚举输出。我不确定Windows是否向你展示了同样的东西。但是,如果您看到设备最初被探测,但随后在config寄存器中检测到无效的东西,而不是根本看不到,这可能会很有帮助。

所以有几件事需要注意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64567547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档