Setting Up VME 7648 Controller

Our setup consisted of a VMIC VMIVME-7648 controller. For a disk, we used a compact flash card. Since we were unable to install the software on the compact flash card using the VME controller, we used a regular PC. On this PC, we disconncted all the disks and plugged in a USB universal card reader with the compact flash card plugged in. Note that when first installing make sure you enter:

linux expert askmethod

This will ensure that it looks for usb drives. We ended up installing Scientific Linux 4.7.

image of card reader

Note that we had two card readers and the Verbatim one (shown above, Verbatim Universal Card Reader 15-in-1, manufacturer part number 95343) was the only one that worked.

Once the operating system was installed, the compact flash card was installed in the vme controller. Here is where we ran into a number of problems. We would consistently get the following error messages:

hdc: dma_timer_expiry: dma status == 0x21
hdc: DMA timeout error
hdc: dma timeout error: status=0x58 { DriveReady SeekComplete DataRequest }

ide: failed opcode was: unknown
VFS: Can't find ext2 filesystem on dev hdc.
mount: error 22 mounting ext2
mount: error 2 mounting none
Switching to new root
switchroot: mount failed: 22
umount /initrd/dev failed: 2
Kernel panic - not syncing:  Attempted to kill init!

The solution was to turn off DMA in the bios of the VME controller. The image below shows where this is done in the bios.

dma bios settings

Now when booting the VME controller with the compact flash card for the first time, be sure to stop the boot process and add ide=nodma to the grub menu. After everything boots, you'll need to edit /etc/grub.conf to make this change permanent.

Once linux is up and running on the VME controller, the vmisft software needs to be installed. Download it here. (I've also put a copy of it on my github account, here.) Unzip and untar this software. The run make and make install. This will create a module called vme_universe. For a quick test, run:

modprobe vme_universe

to load the module. To make sure this module gets loaded each time the VME controller is turned on, add the following to /etc/rc.d/rc.local:

# Load VME module
# Also need to create the device files
mkdir -p /dev/bus/vme
mknod --mode=666 /dev/bus/vme/ctl c 221 8
modprobe vme_universe

If you don't put the mkdir and mknod lines in, you'll get the Cannot initialize VMEbus error after rebooting when you try to run the hello_vme program.

Now check to see if everything is working properly.

cd vmisft-7433-3.6/vme_universe/TOOLS

If everything is working properly, the response will be.

Bus handle value 3
We're ready to start accessing the bus now!

If things are not working correctly, the error message will most-likely be:

Cannot initialize the VMEbus

If the error message occurs, make sure that the vme_universe module actually loaded. And go back and see if there were any errors during compilation.

Downloadable Movies Showing How to Use VME Computer

Basic Use

Checking the vme_universe Module is Loaded

Here is the link to the documentation provided with the vmisft software.

The VME software

On github:

Here are some links to blog entries I created while trying to get this all working.

VME Posts
Mary Heintz
Updated: November 2009