当从DMA FIFO(FPGA)中读数据时,为什么我的RT CPU消耗率达到了100%?



主要软件:
主要软件版本: 2009
主要软件修正版本: N/A
次要软件: N/A

问题:

我试图通过"目标到主机DMA FIFO"把数据从FPGA读取到LabVIEW实时程序中。通过分布式系统管理器观察到实时目标的CPU使用率接近100%,这样使得某些不常使用CPU的程序(优先级较低)不能得到运行。我该怎么解决这个问题?



解答:

当主机使用DMA FIFO从目标机中读取数据时,当读函数的超时参数设置的比较大时,实时CPU的使用率确实会接近100%,尤其是FIFO中没有数据。由于大部分FPGA程序运行都较快,而且它们产生的数据量也较大,到达DMA FIFO的数据应该很快被读走。因此在上述条件下,实时程序要告知实时操作系统尽快的检查DMA。这种检查数据的方法称为查询。

注意:与DMA FIFO不同,实时FIFO可以配置为查询或阻塞。

其他线程得不到运行(线程饥饿)不是期望中的行为,实时上,通过仔细的考虑线程时序,这个问题是可以避免的。解决这个问题的合适方法是首先使用读方法空读一次检查一下DMA FIFO中还有多少数据,然后在数据量超过一定量时再正式读取。如


Figure 1. 解决DMA FIFO读取问题的实例

要获得更多的信息或帮助,请参考LabVIEW帮助文件或者是联系NI技术。



相关链接: LabVIEW 8.6 FPGA Module Help: Invoke Method Function

附件:





报告日期: 05/02/2009
最近更新: 09/14/2011
文档编号: 4X1GBJDK