Showing results for 
Search instead for 
Did you mean: 

PCI-MXI-2: VXI direct access from other PCI master not system CPU

We're interested in using other bus masters to directly access VXI from a PC via a PCI-MXI-2 to VXI-MXi-2 chain not under control of the main system OS (Linux). That is, we'd like to run RESMAN, get a configuration for outward windows mapping PCI addresses to MXI/VXI addresses and forward the address window(s) to a DSP board in another PCI slot.

We have done this in the past using a VME chassis, SBC, and VME-MXI & VXI-MXI chain. We are replacing the VME chassis, the SBC, and other hardware (DSP boards) in the VME chassis with PC and PCI cards, while retaining the VXI hardware as-is.

While I have detailed register descriptions and configuration information for the VME-MXI-2 and VXI-MXI-2 cards (User's Ma
nuals) there seems to be no similar information for the PCI-MXI-2. The "Getting Started" guides provide no real information, and the PCI-MXI-2 User Manual PDF document I have located is very skimpy compared to the VME-MXI-2 User Manual.

I suppose that I am interested in particular in the PCI-MXI-2 registers, the Programmable Outward Windows, and the DMA engines. And I need information on how to use these features *without* the Ni-VXI library, etc. It seems that the "PCI-MXI-2 Driver Developer Kit" might be what I need, but I'm not sure why you provide detailed information for VME-MXI and VXI-MXI but not for PCI-MXI? We probably don't want the promoted "This software development package provides access to senior-level Application Engineers who can provide support on a fee-based basis." but would like the detailed information/documentation.
0 Kudos
Message 1 of 5
Hello Mike,

Based upon my reading of your request, I would like to suggest you take a look at the possibility of using Shared Memory to accomplish your goal of interfacing a PCI-based DSP board to the VXI bus.

Using Shared Memory vs. Mapping Addresses in VXI Applications
Configuring and Using Shared Memory from a National Instruments VXI//VME Bus Controller

From these application notes, you can see some examples of how to setup shared memory. The general idea would be to (a) configure your PCI-MXI-2 to share system memory, (b) call viMemAlloc() to allocate RAM, and (c) call viMapA
ddress() to get back an address.

The address returned by viMapAddress() is a user virtual address. It would be necessary to perform a page-table lookup in the kernel to then acquire a physical RAM address accessible by your PCI-based DSP board.

This will give you dual-port access to shared host RAM from both the VXI and PCI sides.

If you were looking more for a solution that allows control from the DSP board instead of simply access to the physical memory where data is stored, then the PCI-MXI-2 DDK may be your best option. If you are interested in the DDK, please contact your local sales engineer or an Application Engineer at ni.com/ask so they can discuss this option in more detail. They can provide further details on what the DDK offers to help you make an informed decision on whether this is the best option for you.

Joshua Hernstrom
PXI/VXI Product Support Engineer
National Instruments
0 Kudos
Message 2 of 5
Shared memory is not at all a solution for me, and I had already read those documents. I need to be able to setup the PCI-MXI-2, the VXI-MXI-2 and all custom VXI cards in our system using resman as normal. I then need to turn control of the custom VXI cards over to a DSP card that is in the PCI chassis. The DSP must access the various VXI cards directly. Therefore, I need to know the PCI to VXI address mapping that is resident in the PCI-MXI-2. I thought this was pretty clear in my original comments. Getting a user-space virtual address is 100% not what I need -- I need the physical PCI address range that maps to MXI address space.

So it seems that the DDK is what I need. Why must this be a separate product? When we bought the VXI-MXI-2 and VME-MXI-2, th
ey came complete with register descriptions etc. but the PCI-MXI-2 came with no useful information. If it had been made clear in the product literature that the PCI-MXI-2 card would be deficient in documentation relative to the VXI-MXI-2 and VME-MXI-2 that we've used in the past, I would have considered alternatives or at the very least ordered the extra documentation up front and saved myself a lot of work. All I want is complete documentation such as that which comes with the other cards we buy!
0 Kudos
Message 3 of 5
Hi Mike,

I will be contacting you via email shortly so that we can resolve this more efficiently, and I will post a summary of the resolution to the messageboard once we conclude.

Josh Hernstrom
PXI/VXI Product Support Engineer
National Instruments
0 Kudos
Message 4 of 5

I have a similar problem to Mike. We have an application that uses two PCI cards and an MXI cable to read memory in a embedded processor and display it on a Windows NT PC. This application uses the NIVXI library provided with the card.

We need to develop a similar application to allow access to the embedded computer's memory while running in the RTX environment to support a real time simulation application.

I need documentation of the PCI card registers and functions so I can program it to read and write memory on the slave card in the embedded computer. I can not use RESMAN or a WIN32 library or DLL since these are not available under RTX. Is there documentation and/or examples on how to do this? It has been quite frustrat
ing to try to find this information on your site.

Thanks for your help.
0 Kudos
Message 5 of 5