|
我试图通过"目标到主机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技术。
|