I have successfully installed on a RHEL4 (2.6.9-55.0.2.EL) desktop: linux-gpib-3.2.09, asyn-4-3 (with LINUX_GPIB=YES), and Epics 3.14.9. I have tested linux-gpib installation with ibtest example which came with linux-gpib. I have a HP34401A multimeter connected to the GPIB bus and I can write and read to it with the ibtest program. So far so good.
I started implementing the soft IOC to control this device by following "How to create EPICS device support for a simple serial or GPIB device" by Eric Norum. I constructed a support module, very simple at this point, called hpmm. Then I created the IOC application, also named hpmm. Both these parts build without errors. I do get errors when I run it. This is the output:
-------------------------
zms@esaux1 $ ../../bin/linux-x86/hpmm st.cmd
#!../../bin/linux-x86/hpmm
## You may have to change hpmm to something else
## everywhere it appears in this file
< envPaths
epicsEnvSet(ARCH,"linux-x86")
epicsEnvSet(IOC,"iochpmm")
epicsEnvSet(TOP,"/afs/slac.stanford.edu/g/esa/esalib/app/epics/hpmm")
epicsEnvSet(HPMM,"/afs/slac/g/esa/esalib/app/epics/modules/hpmm")
epicsEnvSet(ASYN,"/afs/slac/g/esa/esalib/app/epics/support/asyn/4-3")
epicsEnvSet(EPICS_BASE,"/afs/slac/g/esa/esalib/app1/epics/R3.14.9/base")
cd /afs/slac.stanford.edu/g/esa/esalib/app/epics/hpmm
## Register all support components
dbLoadDatabase("dbd/hpmm.dbd",0,0)
hpmm_registerRecordDeviceDriver(pdbbase)
## Load record instances
cd /afs/slac/g/esa/esalib/app/epics/modules/hpmm
dbLoadRecords("db/devhpmm.db","P=HPMM:,R=,L=0,A=10")
GpibBoardDriverConfig( "L0",1,0,3,0)
cd /afs/slac.stanford.edu/g/esa/esalib/app/epics/hpmm/iocBoot/iochpmm
iocInit()
Starting iocInit
############################################################################
## EPICS R3.14.9 $R3-14-9$ $2007/02/05 16:31:45$
## EPICS Base built Sep 2 2007
############################################################################
Warning -- devhpmm has rspLen>0 but respond2Writes is not set.
2007/09/04 12:24:50.818 L0 addr -1 : EDVR 0: OS error.
2007/09/04 12:24:50.818 134568776 autoConnect could not connect
iocInit: All initialization complete
## Start any sequence programs
#seq sncxxx,"user=zmsHost"
epics> 2007/09/04 12:24:59.817 L0 addr -1 : EDVR 0: OS error.
2007/09/04 12:24:59.817 134568776 autoConnect could not connect
epics> exit
--------------------------
At this point I feel like I must be getting close to a success. Obviously I am still missing something. The application is not making a connection between "L0" and /dev/gpib0. The file /etc/gpib.conf:
/*------------------------------------------------------------------------------
GPIB.CONF IEEE488 library config file
-------------------
copyright : (C) 2002 by Frank Mori Hess
(C) 1994 by C.Schroeter
email : [email protected]
*------------------------------------------------------------------------------
* Syntax:
* interface { ... } starts new interface board section
* device {...} device configuration
*----------------------------------------------------------------------------*/
/* This section configures the configurable driver characteristics
* for an interface board, such as board address, and interrupt level.
* minor = 0 configures /dev/gpib0, minor = 1 configures /dev/gpib1, etc.
*/
interface {
minor = 0 /* board index, minor = n uses /dev/gpibn */
board_type = "ni_pci" /* type of interface board being used */
name = "violet" /* optional name, used by ibfind() */
pad = 0 /* primary address of interface */
sad = 0 /* secondary address of interface */
timeout = T3s /* timeout for commands */
eos = 0x0a /* EOS Byte, 0xa is newline and 0xd is <CR> */
set-reos = yes /* Terminate read if EOS */
set-bin = no /* Compare EOS 8-bit */
set-xeos = no /* Assert EOI whenever EOS byte is sent */
set-eot = yes /* Assert EOI with last byte on writes */
/* settings for boards with no p-n-p capability */
base = 0 /* Base io ADDRESS */
irq = 0 /* Interrupt request level */
dma = 0 /* DMA channel (zero disables) */
/* pci_bus and pci_slot can be used to distinguish
* two pci boards supported by the same driver */
/* pci_bus = 0 */
/* pci_slot = 7 */
master = yes /* interface board is system controller */
}
/* Now the device sections define the device characteristics for each device.
* These are only used if you want to open the device using ibfind() (instead
* of ibdev() )
*/
device {
minor = 0 /* interface board number */
name = "voltmeter" /* device mnemonic */
pad = 7 /* The Primary Address */
sad = 0 /* Secondary Address */
eos = 0xa /* EOS Byte */
set-reos = no /* Terminate read if EOS */
set-bin = no /* Compare EOS 8-bit */
}
Any help or suggestions will be most welcome.
Zen