NI Home > Community > NI Discussion Forums

VXI and VME

Reply
Member ABV
Member
ABV
Posts: 4
0 Kudos

VI_ERROR_IO while viMOVE operation on VXI-MXI-2

Hello. We have troubles with our old PCI-MXI-2 & VXI-MXI-2 cards. OS WinXP SP3,  NI-VXI 3.6,  VISA 4.6.2

 

Any viMOVEOUT command, issued in A24 adress space, returns VI_ERROR_IO status. I read old posts on this forum and tried to turn off DMA mode for MXI-2. It helps to remove error status but all operations became very slow, inadmissible slow. I'd also tried to switch off SYNC MXI (in regedit set UseSyncMXI=0), but it doesnt solve problem with error status.

 

Could you ask me how to solve this problem, while not slowing down perfomance?

Thank you for attention.

Active Participant
GarPar
Posts: 241
0 Kudos

Re: VI_ERROR_IO while viMOVE operation on VXI-MXI-2

ABV-

 

I found one other documented issue related to yours, and the solution was posted as a potential solution, but is not guaranteed to work.  It involves adjusting registry keys (which it looks like you are familiar with).  Caution should be taken when adjusting registry keys.  Again, this is just a step to try that helped one other customer out, so I thought I would offer it to you as a potential solution.
Some MITE-based systems have experienced problems with the MITE chip reaching the maximum number of retries on the PCI bus. To help prevent this problem from occuring, a delay was added before the MITE chip would perform a retry on the PCI bus. The amount of time that the MITE waits is determined by the DmaCpuRequestDelay value that is entered in the Registry. The default value for this setting is 2.

In this instance, it was this value that was causing the slowdown in the transfer rate. By changing the DmaCpuRequestDelay to 0, the transfer was increased to an acceptable level. However, caution should be taken when changing this value. If this value is changed, there is a slight possibility that bus errors might be received during large data transfers, due to the maximum retry limit being reached on the MITE chip.

If this happens, there are two options:
  1. You can raise the DmaCpuRequestDelay up to 1 or back to 2
  2. You can disable DMA on the MITE chip by changing the DisableMiteDma value to 1.

  3. To change the DmaCpuRequestDelay, use the Registry Editor via Start » Run and type regedit. Navigate to the following section of the registry for WIN32: HKEY_LOCAL_MACHINE/Software/National Instruments/NI-VXI

     I hope this helps.  Have great day!

Gary P.
Applications Engineer
National Instruments
Visit ni.com/gettingstarted for step-by-step help in setting up your system.
Member ABV
Member
ABV
Posts: 4
0 Kudos

Re: VI_ERROR_IO while viMOVE operation on VXI-MXI-2

Hello.

Thank you very much for replay.

 

 I've tried to decrease DmaCpuRequestDelay.

 At first: I found mentioned regestry keys  DmaCpuRequestDelay and DisableMiteDma not in

HKEY_LOCAL_MACHINE/Software/National Instruments/NI-VXI

, but in

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VXI\board0\. At second: I didn't found DmaCpuRequestDelay, but DmaCpuRequestDelayIn and DmaCpuRequestDelayOut.

So, anyway, I've changed value of both delay keys  from "2" to "0".  Register key DisableMiteDma = 2, so it means that DMA mode is turned on only for viMoveIn accesses. After reloading computer, I mentioned some speeding up of the VXI system. But the problem is still here. In some code places, where are many single register accesses (viIn or viOut) I mention very slow performance.

 

I want to clear some questions:

1) Is it possible, to turn on MITE DMA for all accesses (because of speed) and solve problem with  VI_ERROR_IO in another way?

2) If it is not possible, how I can speed up single register accesses without MITE DMA?

3) Problem with  VI_ERROR_IO while viMOVE is dealing with new PCI Express bus? What is the cause?

 

Thank you for support.

 

Andrew Bolsky.

Engineer.

Unipax Systems.

 

Active Participant
GarPar
Posts: 241
0 Kudos

Re: VI_ERROR_IO while viMOVE operation on VXI-MXI-2

Hi ABV-

 

     Here is another KnowledgeBase article that may help as you debug this issue.  It talks specifically about Linux, but I think that the principles still apply here.  The key takeaway is that when you disable DMA, the driver falls back to PIO (Programmed I/O) mode. This means that instead of the PCI-MXI-2 fetching memory itself, the CPU fetches memory and then transfers it to the PCI-MXI-2 board. This results in higher CPU use during VXImove and viMove transfers. Also, because the syncMXI protocol cannot be used over the MXI bus when using PIO mode, transfer rates are slower when using PIO over a MXI-2 cable than when using DMA.

 

     Hopefully this helps.

Gary P.
Applications Engineer
National Instruments
Visit ni.com/gettingstarted for step-by-step help in setting up your system.
Member ABV
Member
ABV
Posts: 4
0 Kudos

Re: VI_ERROR_IO while viMOVE operation on VXI-MXI-2

Hello.

At least, now I understand what happens with MXI-2 controller. On our old computers all works fine. But since we've renewed our computers, appear problem with viMove. OK, will work with DMA off.

Thank you for support.



Andrew Bolsky.
Engineer.
Unipax Systems