JasmineCorp Directory   
Usenet News Group Archives!!!

Usenet Groups:






DMA unstability problem at FPGA start
Newsgroup: natinst.public.daq.real-time.general
Posted by: Daniel_Chile
2008-06-11 14:40:14

Hi everyone.We are currently migrating a condition monitoring application from PXI to CompactRIO. For that, we obviously have to re-program data acquisition from NI-DAQmx to a combination of FPGA and RT host VIs to provide the same funcionality. Data transfer from FPGA to host is made using two DMA FIFOs, one for vibration signals (modules NI 9233) and the other for voltage data (module NI 9205).One problem arose on first development tests: when loading and running the FPGA VI sometimes DMAs seem to not start. I mean, sometimes application starts ok and host receives acquisition data, but sometimes "FIFO read" times out before transferring any sample. This happens randomly and once it starts ok, it remains ok.We started using NI-RIO 2.4.0. Then upgraded to NI-RIO 2.4.1, but remains the same.To workaround this problem, we introduced the next tricks:- Before writing acquired data to FIFOs on FPGA, one known value is written to each FIFO at FPGA VI start.- After launching the FPGA VI, the host tries to read the known "samples" from the FIFOs.- If known "samples" are read ok, the program continues. If not, it aborts the FPGA and tries again.Sometimes these two first "samples" are ok and data transfer continues ok, sometimes the first read gives two zeroes, sometimes gives one random value and the other read times out or sometimes both time out. On all "wrong" cases, data transfer times out.This worked fine (while we wait for a new NI-RIO release), and acquisition begins ok in one to five attemps.The problem we face now is that for our application we need to restart acquisition every 20 minutes, and when this is done for the third or fourth time, the CompactRIO crashes and reboots.When rebooting it shows the message: "workQPanic: Kernel work queue overflow". We know this message is associated with incorrect interrupts handling, but we are not using interrupts in our app.That's the first part. The ugliest part follows:To make a better use of FPGA resources, we separated the channel calibration reading and placed it on a separate FPGA VI. This "calibration read" is loaded and executed once at the program start. Later, only the "data acquisition" FPGA VI is run.The problem is that after loading, running and aborting the "calibration read" VI, when loading and running the "data acquisition" VI, DMA FIFOs definetively do not start, even with our workaround. After several attemps CompactRIO crashes and gives an "Exception Log". See attached console examples.This definetively seems as a bug to us.Any help would be greatly appreciated. As usual to LabVIEWers, we have a delivery date compromised so it is urgent to solve this problem.Thank you,Daniel R.CLDChile






More >> 

Domain Registration:
.com .org .net
.info .biz .us