Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

VISA and MSI interrupt

Hi!

 

VISA Driver wizard is able to create driver for PCIe card with interrupt support.
This is "legacy" interrupt (came from PCI) with ABCD lines.
It's take so long to determine interrupt source and disable it.

 

Then I found that on some NI product MSI interrupt is supported.
post - http://forums.ni.com/t5/Multifunction-DAQ/Is-PCI-6225-PCI-2-2-compatible-Can-it-do-MSI-interrupts/td...
article - http://digital.ni.com/public.nsf/allkb/81D497CC840522438625770C0065D891?OpenDocument

 

Is it possible to use VISA driver with MSI interrupts ?

 

Thanks!

0 Kudos
Message 1 of 8
(5,791 Views)

Hi IIvan,

 

Inherently VISA does not support MSIs. 

 

The .inf file that's generated will not perform the necessary steps to tell the OS that this device is using MSIs. The .inf file has to make changes in the registry for this to happen. 

Potentially, you could manually make changes to the .inf file based on the link below. 

 

https://msdn.microsoft.com/en-us/library/ff544246(VS.85).aspx

 

Regards

Carli S.
Troubleshooting & Maintenance Digital Business Manager - NI
0 Kudos
Message 2 of 8
(5,765 Views)

Hi!

 

Thank you!

 

Even if I enable MSI through registry, VISA still will not support it, I'm right ?

 

Do you have any plans to add MSI or MSI-X support to VISA in near future ?

 

Thanks again!

0 Kudos
Message 3 of 8
(5,732 Views)

Hi!

 

One year has passed. Is there any news about MSI or MSI-X support in VISA ?

 

Thanks!

0 Kudos
Message 4 of 8
(4,299 Views)

Hi IIvan,

 

VISA still doesn't have support for MSI nor MSI-X, it is still necessary to follow the procedure from message 2.

0 Kudos
Message 5 of 8
(4,283 Views)

Hi!

 

I already tried it with no success.

Could you explain how in theory this should help ?

MSI interrupts is completely differs from Legacy interrupts.

 

Legacy interrupt mask intA/B/C/D signals (these signals was in PCI bus, but not exist in PCIe bus).
These signals (for PCIe actually packets with Message setA/B/C/D) are shared between all PCIe devices.
So VISA driver spend a lot of time when it looks who produced this interrupt.

 

MSI interrupt is actually a Memory Write packet to preallocated address.
In this case VISA should already know which device produced this interrupt.
Also MSI interrupt can contain different interrupt vectors inside of Memory Write packet.
It would be very helpful to get access to vector value.

 

Thanks a lot!

0 Kudos
Message 6 of 8
(4,224 Views)

So potentially you could add the MSI's to the driver’s registry following the steps in that first link (https://msdn.microsoft.com/en-us/library/ff544246(VS.85).aspx). However, because VISA does not support MSI's we cannot guarantee that adding the MSI's to the registry will actually add this functionality.

I am unsure why the VISA driver may be taking so long to identify who produced the interrupt. 

If using these MSI's with the VISA driver is a persisting issue for you, the next steps may be to post to our Idea Exchange forum, where ideas are monitored by R&D. Here is the link for that forum: http://forums.ni.com/t5/NI-Idea-Exchange/ct-p/ideas

 

Best of luck,

Spencer R | Applications Engineer | NI

0 Kudos
Message 7 of 8
(4,193 Views)

Hi!

 

Thanks! I will do it!

 

P.S. If someone is interested in MSI/MSI-X interrupts support,

please vote here -> http://forums.ni.com/t5/Data-Acquisition-Idea-Exchange/Add-MSI-MSI-X-interrupts-support-to-VISA/idi-...

0 Kudos
Message 8 of 8
(4,129 Views)