VXI and VME

cancel
Showing results for 
Search instead for 
Did you mean: 

Using VME-MXI-2 as a non-resource manager?

We are trying to test a VME controller using the VME-MXI-2 and PCI-MXI-2 card set.  I am new to VME, and have a few things I am not quite sure about.
 
1)  How can I configure my VME-MXI-2 card not to be the VME bus master (resource manager)?
 
2)  When I tell my product VME controller/resource manager to send data (A32/D16) to the VME-MXI-2 card, do I tell my card to address the location in the range provided by MAX?
 
For example if my VME-MXI-2 card has a base address of x80000000, Can I send a data to 800000FF (ignoring the space allocation for now)?
 
Thanks,
Joe
0 Kudos
Message 1 of 8
(10,431 Views)
Hi Joe,

1)  The VME-MXI-2 automatically detects if it is in slot 1 and will only run Resman if it is.  You can find more info in this KB.

2)  NI-VISA will automatically resolve the address for you, so you only need to enter the relative address (x00, xFF, etc.) if you are targeting a configured device.  If you are targeting the generic memory space, then you will need the full address (x800000FF).

Hope this helps,
Robert Mortensen
Software Engineer
National Instruments
Message 2 of 8
(10,414 Views)
After a little more research (thanks Richard for straightening me out) it looks like my answers were only partially correct.

If your PCI-MXI-2 has a Logical Address of 0 then Resman will run normally.  If it is anything other than 0, Resman will run in slave mode, meaning it will not configure the VME-MXI-2.  Here are a couple of KnowledgeBases on Logical Addresses:

How Can I Configure Logical Addresses of a Multi-Chassis VXI-MXI-2 System?
VXI/VME Multi-Mainframe/Multi-Chassis Configuration: Logical Address Wizard

Why don't you want Resman to run?  Does your controller run its own version of Resman?

Are you looking to move data between your controller and the PC?  Or perhaps between your controller and some RAM on the VME-MXI-2?  If the PC, you will need to set up a shared RAM pool in MAX on your PCI-MXI-2 board configuration.  After you set this up (and reboot and run Resman), you can write a program or use visaic to do a viMemAlloc on the PCI-MXI-2's INSTR session.  This will allocate usable space on the VME bus that can also be accessed from the PC.  The address can be used as is by their VME controller to write and read data.  To access it from the PC, use the viMapAddress call to map it into local memory space.

I hope this provides a little more clarification,


Robert Mortensen
Software Engineer
National Instruments
Message 3 of 8
(10,400 Views)

Thanks for the tips...Here is a little more detail on what the application is doing.  I did eventually get the VME-MXI-2 side of the application to work.

The controller (non-NI hardware) for the system uses a high speed serial input interface for accessing shared memory of various devices on the VME backplane.  I force the VME-MXI-2 card into a non-controller setup by setting the Slot Zero Configuration to "Never enable Slot 0 functionality".  My earlier issues were with VME-MXI-2 boards that were just not working properly.  I would try to set certain characteristics and I would receive dialogs with complaints that the EEPROM was corrupt, and that I needed to boot from the factory default.

I did have issues with RESMAN hanging up with the VME-MXI-2 card set to a logical address of 1 or 2, 10 (with the board configured to "Set Configuration from EEPROM").  I eventually typed in the largest allowable LA 254, and RESMAN worked with no issues.  I found it wierd that the mainframe also was assigned address 254.

The other caveat I found was that while accessing A32/D16, that some data was "sticking".  I found in one of the app notes that the first 4KB of memory is reserved.  Once I did my reads and writes at x1000 above me offsett address, every thing looked good.

I ended up using the MEMACC to read data from the VME-MXI-2 card with no issues.

Now I just need to get the other part of the application to request information over the VME bus...

0 Kudos
Message 4 of 8
(10,393 Views)
OK, I am able to read and write to memory locations in LabVIEW using MEMACC.  The base address assigned by resource manager to my VME-MXI-2 card is x80000000 in A32 space.  I have the VME-MXI-2 card configured to never be the slot zero device.
 
I am writting a 16 bit data message to address x80001000 from my company's VME controller to the VME-MXI-2.  When I do a memacc to this location, the address space does not change.  I also to not see a data strobe on the VME bus...
 
Does this look correct?  Is there an address translation from the assigned address in MAX to what the device will respond to on the VME back plane?
 
Joe
0 Kudos
Message 5 of 8
(10,348 Views)

I meant to say instead of

When I do a memacc to this location, the address space does not change

 should read

When I do a memacc to this location, the data at the specified address space does not change

0 Kudos
Message 6 of 8
(10,347 Views)
Hi Joe,

Sorry about the delay in getting back to you.  I discussed your issue with one of our senior designers and have his responses for you:

Part 1: our boards.  Verify that you have memory installed in your VME MXI-2.  Verify that your memory window is big enough.
Part 2: Basic VME memory mapping check.  Verify that no other device has that memory range in A32.  If you're using the NI resource manager, you can reserve ranges for other VME devices by adding the devices in MAX.  If you're using another resource manager, it should have a method to block off memory ranges for VME devices.
Part 3: "I also to not see a data strobe on the VME bus... "  The data strobe lines are driven by the transaction master, which, if you're initiating a transfer with your company's VME controller, should be your VME controller.  If you're not seeing a data strobe on the bus, it means that your controller is not correctly accessing the VME backplane.  Do you get a bus error or is the transfer successful (returning data)?  If the transfer is successful and data strobe is never driven low, it may mean that your controller has memory mapped to the same area and handles the access without pushing it to the backplane.

Other notes:
Resman shouldn't hang on any valid LA for the VME-MXI-2, as long as your PCI-MXI-2 is connected, there is a MXI system controller and a VME and MXI timeout on each respective bus, and the PCI-MXI-2's LA is 0 (unless you have another VXI (not VME) device at LA 0 in your system that you're running resman from).  I'd be interested in knowing what the hang was -- Did the system hang?  Did only the resman application hang?  If only resman hung, could you click abort?  At what stage did resman hang?  (What was the message in the window when it hung?)

The mainframe is assigned the address of the controller leading to it.  In this case, since the PC is connected to the mainframe through a VME-MXI-2 at LA 254, the mainframe is identified by that LA 254.

Hope this helps,
Robert Mortensen
Software Engineer
National Instruments
0 Kudos
Message 7 of 8
(10,313 Views)
Turns out that the MXI-VME-2 card was broken or the configuration was corrupted.  I was able to get a new card, setup the card as I desired, and save the config to a setup file.  I then went to mulitple boards and tried to load the configuration file.  Some boards would take the new configuration and work properly, and some boards would not.
 
Thanks for your help!
Message 8 of 8
(9,191 Views)