Overview of the
Linux PCI - SIS1100
to
VME - SIS3100
(Struck)
This hardware works with both Root and CODA.
You must first install the pcivme Driver.
Download
Notes on the Driver
load_module does not recreate the device. This can mean that
the device may have an old major number . The major is printed
at the time the driver is installed. It can also be seen the the
log-reading command dmesg. Finally you can see it on the
file /proc/devices. In all cases it looks like:
SIS1100 major=254
(it is not always 254)
The major number for the device is seen with
ls -l /dev/sis1100_0
crwxrwxrwx 1 root root 254, 0 Jan 25 14:33 /dev/sis1100_0
In this case they match
Also note that load_module leaves
/proc/devices such that only root can read and write.
You will
likely want to change with with chmod 777 /proc/devices.
Notes on Libraries
The libraries are based on the same code from Struck. In the case of the
general/CODA libraries, these are c-functions. In the Root Library,
there is a class called TVMEsis, and all the calls are methods
within that class. A list of c-functions / c++ methods is below.
- int vmeopen();
- int vmesysreset() ;
- int vme_A16D8_read(unsigned long vme_adr, unsigned int* vme_data);
- int vme_A16D16_read(unsigned long vme_adr, unsigned int* vme_data );
- int vme_A16D32_read(unsigned long vme_adr, unsigned int* vme_data );
- int vme_A16D8_write(unsigned long vme_adr, unsigned int vme_data );
- int vme_A16D16_write(unsigned long vme_adr, unsigned int vme_data );
- int vme_A16D32_write(unsigned long vme_adr, unsigned long vme_data );
- int vme_A24D8_read(unsigned long vme_adr, unsigned short* vme_data );
- int vme_A24D16_read(unsigned long vme_adr, unsigned int* vme_data );
- int vme_A24D32_read(unsigned long vme_adr, unsigned long* vme_data );
- int vme_A24DMA_D32_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A24BLT32_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A24MBLT64_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A24BLT32FIFO_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A24MBLT64FIFO_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A24D8_write(unsigned long vme_adr, unsigned short vme_data );
- int vme_A24D16_write(unsigned long vme_adr, unsigned int vme_data );
- int vme_A24D32_write(unsigned long vme_adr, unsigned long vme_data );
- int vme_A24DMA_D32_write(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* put_num_of_lwords);
- int vme_A24BLT32_write(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* put_num_of_lwords);
- int vme_A24MBLT64_write(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* put_num_of_lwords);
- int vme_A32D8_read(unsigned long vme_adr, unsigned short* vme_data );
- int vme_A32D16_read(unsigned long vme_adr, unsigned int* vme_data );
- int vme_A32D32_read(unsigned long vme_adr, unsigned long* vme_data );
- int vme_A32DMA_D32_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32BLT32_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32MBLT64_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32_2EVME_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32DMA_D32FIFO_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32BLT32FIFO_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32MBLT64FIFO_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32_2EVMEFIFO_read(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* got_num_of_lwords);
- int vme_A32D8_write(unsigned long vme_adr, unsigned short vme_data );
- int vme_A32D16_write(unsigned long vme_adr, unsigned int vme_data );
- int vme_A32D32_write(unsigned long vme_adr, unsigned long vme_data );
- int vme_A32DMA_D32_write(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* put_num_of_lwords);
- int vme_A32BLT32_write(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* put_num_of_lwords);
- int vme_A32MBLT64_write(unsigned long vme_adr, unsigned long* vme_data,
unsigned long req_num_of_lwords, unsigned long* put_num_of_lwords);
- int s3100_control_read(int offset, unsigned long* data);
- int s3100_control_write(int offset, unsigned long data);
- int fd;