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.
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. The second image shows how a VME 7671 should be set.
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 ./hello_vme
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.
Checking the vme_universe Module is Loaded
Here is the link to the documentation provided with the vmisft software.
The VME software
vmisft-7433-3.6.tar.gzHere are some links to blog entries I created while trying to get this all working.
VME Posts