Download the distribution from the VMELinux Web Site.
Place the file in a directory reserved for VME usage; We suggest /universe. Untar the zipped/tarred file by typing...
tar -xzf VMELinux_08a.tar.gz
You should see three directories and one link to ca91c042
ca91c042 vmeshell vmeutils driver
In ca91c042 you should find:
ca91c042/ ca91c042/Makefile ca91c042/ca91c042.c ca91c042/ca91c042.h ca91c042/README ca91c042/e ca91c042/ins ca91c042/stat ca91c042/uns
In vmeshell you should find:
vmeshell/vmer vmeshell/README vmeshell/vmeseek vmeshell/cmd.vme vmeshell/vmew vmeshell/vmeregw vmeshell/vmeregr vmeshell/vmefa vmeshell/vmecall vmeshell/e vmeshell/ec vmeshell/fa.vme vmeshell/map.vme vmeshell/tmp.vme vmeshell/vmedb vmeshell/vmedl vmeshell/vmedw vmeshell/vmemap vmeshell/vmerb vmeshell/vmerf vmeshell/vmerl vmeshell/vmerw vmeshell/vmewb vmeshell/vmewf vmeshell/vmewl vmeshell/vmeww
In the vmeutils directory you should find:
vmeutils/commands.cpp vmeutils/commands.h vmeutils/universe.h vmeutils/Makefile vmeutils/vmeutils.h vmeutils/unilib.h vmeutils/unilib.cpp vmeutils/vmeutils.cpp vmeutils/README
Enter the "ca91c042" directory and make the VMELinux device driver module.
make
Now you must create the several /dev driver files. Type:
make devices
Once made, you should see the file "ca91c042.o" in the directory. This is a loadable module. See below for loading information. Plus, you should find several "vme..." files in the /dev directory.
Once the devices are made in the /dev directory you must change their permissions. Type:
cd /dev chmod 666 vme*Here is how the files should look:
hostname:/dev# ls -l vme* crw-rw-rw- 1 root root 70, 8 Jul 30 10:51 vme_ctl crw-rw-rw- 1 root root 70, 0 Jul 30 10:51 vme_m0 crw-rw-rw- 1 root root 70, 1 Jul 30 10:51 vme_m1 crw-rw-rw- 1 root root 70, 2 Jul 30 10:51 vme_m2 crw-rw-rw- 1 root root 70, 3 Jul 30 10:51 vme_m3 crw-rw-rw- 1 root root 70, 4 Jul 30 10:51 vme_s0 crw-rw-rw- 1 root root 70, 5 Jul 30 10:51 vme_s1 crw-rw-rw- 1 root root 70, 6 Jul 30 10:51 vme_s2 crw-rw-rw- 1 root root 70, 7 Jul 30 10:51 vme_s3 hostname:/dev#
Change to the "vmeutils" directory and type make there.
make
This will compile the "vmeutils" program. This program directly speaks to the kernel driver. It is a reference work for those of you who wish to write your own programs to directly speak with the driver.
Copy the program "vmeutils" to your user binary directory. On our system this is "/usr/local/bin." Alternatively, you can create a link in the user bin directory to the "vmeutils" program.
Change to the "vmeshell" directory. There are no files to be compiled here. These are shell programs that use the "vmeutils" program to access the VMEbus. All the files beginning with "vme" should with have a link made or be copied to the "/usr/local/bin" directory.
You are now ready to try the driver.
Make sure you are root and insert "load" the VMELinux Kernel Module for the Universe chip by typing...
insmod ca91c042
Or just type "ins" to let the shell script do this for you. Once complete, type...
statYou should see a list of registers displayed on your screen. Something like this...
Universe driver info: Control Pointer = 0000 Stats reads = 0 writes = 0 ioctls = 0 LSI0_CTL = 00800000 LSI1_CTL = 00800000 LSI0_BS = C0000000 LSI1_BS = 00000000 LSI0_BD = C0010000 LSI1_BD = 00000000 LSI0_TO = 40009000 LSI1_TO = 00000000 LSI2_CTL = 00800000 LSI3_CTL = 00800000 LSI2_BS = 00000000 LSI3_BS = 00000000 LSI2_BD = 00000000 LSI3_BD = 00000000 LSI2_TO = 00000000 LSI3_TO = 00000000 image_va0 = 00000000 image_va1 = 00000000 image_va2 = 00000000 image_va3 = 00000000 Driver Program Status: DMACTL 0 = 00000000 DMACTL 1 = 00000000 DMACTL 2 = 00000000 DMACTL 3 = 00000000 OkToWrite 0 = 0 OkToWrite 1 = 0 OkToWrite 2 = 0 OkToWrite 3 = 0 Mode 0 = 0 Mode 1 = 0 Mode 2 = 0 Mode 3 = 0If not, something went wrong.
The Universe driver does a good job of finding the Universe chip on a PCI bus, but differences in board design may prevent this. We tested all our routines on a Xycom XVME-655 board. There is little reason why this should not work on any other Intel board with a PCI bus and the Universe PCI-VME bridge chip. If you encounter problems, please let us know at the The VMELinux Project