Hi Dariush,
Both Mark Engbretson and Ralph Lange have explained what the problem is, but perhaps you did not understand.
You need to change your st.cmd so that these lines to near the top. They must come before any of the asyn commands.
## Register all support components
dbLoadDatabase "dbd/mdrive_1IOC.dbd"
mdrive_1IOC_registerRecordDeviceDriver pdbbase
So your st.cmd should look like this:
#!../../bin/linux-x86_64/mdrive_1IOC
< envPaths
cd "/home/xlabsrv2/epics/IOCs/mdrive_1IOC"
## Register all support components
dbLoadDatabase "dbd/mdrive_1IOC.dbd"
mdrive_1IOC_registerRecordDeviceDriver pdbbase
epicsEnvSet ("STREAM_PROTOCOL_PATH", "/home/xlabsrv2/epics/IOCs/mdrive_1IOC/db")
epicsEnvSet ("PORT_mdrive_x", "ip_x")
#X Axis
drvAsynIPPortConfigure(ip_x, "100.100.0.23:503")
asynOctetSetInputEos(ip_x,0,"\n\r")
asynOctetSetOutputEos(ip_x,0,"\n\r")
asynSetTraceMask(ip_x,-1,0x9);
asynSetTraceIOMask(ip_x,-1,0x2)
## Load record instances
#dbLoadRecords("db/mdrive_1IOC.db","user=xlabsrv2")
dbLoadTemplate("db/mdrive_1IOC.val")
cd "/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot/iocmdrive_1IOC"
iocInit
Mark
From: Dariush Hampai <dariush.hampai at lnf.infn.it>
Sent: Friday, September 19, 2025 3:03 AM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>; Mark Rivers <rivers at cars.uchicago.edu>
Subject: Re: Problem with drvAsynIPPortConfigure
Hi Community,
I didn't write all the codes that are automatically generates by makeAppBase.pl application. By the way, I'll report below all the infos:
1) mdrive_1IOC/src/Makefile
# SPDX-FileCopyrightText: 2003 Argonne National Laboratory
#
# SPDX-License-Identifier: EPICS
TOP=../..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
#=============================
# Build the IOC application
PROD_IOC = mdrive_1IOC
# mdrive_1IOC.dbd will be created and installed
DBD += mdrive_1IOC.dbd
# mdrive_1IOC.dbd will be made up from these files:
mdrive_1IOC_DBD += base.dbd
# Include dbd files from all support applications:
#mdrive_1IOC_DBD += xxx.dbd
mdrive_1IOC_DBD += asyn.dbd
mdrive_1IOC_DBD += drvAsynIPPort.dbd
mdrive_1IOC_DBD += stream-base.dbd
# Add all the support libraries needed by this IOC
#mdrive_1IOC_LIBS += xxx
mdrive_1IOC_LIBS += stream
mdrive_1IOC_LIBS += asyn
# mdrive_1IOC_registerRecordDeviceDriver.cpp derives from mdrive_1IOC.dbd
mdrive_1IOC_SRCS += mdrive_1IOC_registerRecordDeviceDriver.cpp
# Build the main IOC entry point on workstation OSs.
mdrive_1IOC_SRCS_DEFAULT += mdrive_1IOCMain.cpp
mdrive_1IOC_SRCS_vxWorks += -nil-
# Add support from base/src/vxWorks if needed
#mdrive_1IOC_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
# Finally link to the EPICS Base libraries
mdrive_1IOC_LIBS += $(EPICS_BASE_IOC_LIBS)
#===========================
2) in st.cmd file
#!../../bin/linux-x86_64/mdrive_1IOC
#- SPDX-FileCopyrightText: 2003 Argonne National Laboratory
#-
#- SPDX-License-Identifier: EPICS
#- You may have to change mdrive_1IOC to something else
#- everywhere it appears in this file
< envPaths
cd "${TOP}"
epicsEnvSet ("STREAM_PROTOCOL_PATH", "${TOP}/db")
epicsEnvSet ("PORT_mdrive_x", "ip_x")
#X Axis
drvAsynIPPortConfigure($(PORT_mdrive_x), "100.100.0.23:503")
asynOctetSetInputEos($(PORT_mdrive_x),0,"\n\r")
asynOctetSetOutputEos($(PORT_mdrive_x),0,"\n\r")
asynSetTraceMask($(PORT_mdrive_x),-1,0x9);
asynSetTraceIOMask($(PORT_mdrive_x),-1,0x2)
## Register all support components
dbLoadDatabase "dbd/mdrive_1IOC.dbd"
mdrive_1IOC_registerRecordDeviceDriver pdbbase
## Load record instances
#dbLoadRecords("db/mdrive_1IOC.db","user=xlabsrv2")
dbLoadTemplate("db/mdrive_1IOC.val")
cd "${TOP}/iocBoot/${IOC}"
iocInit
## Start any sequence programs
#seq sncxxx,"user=xlabsrv2"
3) "make all clean"
[xlabsrv2@xlabsrv2 mdrive_1IOC]$ make clean all
make -C ./configure clean
make[1]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/configure»
rm -rf O.linux-x86_64 O.Common
make[1]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/configure»
make -C ./mdrive_1IOCApp clean
make[1]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp»
make -C ./src clean
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/src»
rm -rf O.linux-x86_64 O.Common
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/src»
make -C ./Db clean
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/Db»
rm -rf O.linux-x86_64 O.Common
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/Db»
make[1]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp»
make -C ./iocBoot clean
make[1]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot»
make -C ./iocmdrive_1IOC clean
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot/iocmdrive_1IOC»
rm -f cdCommands envPaths dllPath.bat relPaths.sh
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot/iocmdrive_1IOC»
make[1]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot»
make -C ./configure install
make[1]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/configure»
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
T_A=linux-x86_64 install
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/configure/O.linux-x86_64»
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/configure/O.linux-x86_64»
make[1]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/configure»
make -C ./mdrive_1IOCApp install
make[1]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp»
make -C ./src install
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/src»
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../../.. \
T_A=linux-x86_64 install
make[3]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/src/O.linux-x86_64»
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/include
-I/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/include -I/home/xlabsrv2/epics/include/compiler/gcc -I/home/xlabsrv2/epics/include/os/Linux -I/home/xlabsrv2/epics/include -MM -MF mdrive_1IOCMain.d ../mdrive_1IOCMain.cpp
Creating dbd file mdrive_1IOC.dbd
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/dbdExpand.pl -I. -I.. -I../O.Common -I../../../dbd -I/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/dbd -I/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/dbd -I/home/xlabsrv2/epics/dbd -o
mdrive_1IOC.dbd base.dbd asyn.dbd drvAsynIPPort.dbd stream-base.dbd
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/registerRecordDeviceDriver.pl -I. -I.. -I../O.Common -I../../../dbd -I/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/dbd -I/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/dbd -I/home/xlabsrv2/epics/dbd
-o mdrive_1IOC_registerRecordDeviceDriver.cpp \
../O.Common/mdrive_1IOC.dbd mdrive_1IOC_registerRecordDeviceDriver /home/xlabsrv2/epics/IOCs/mdrive_1IOC
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/include
-I/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/include -I/home/xlabsrv2/epics/include/compiler/gcc -I/home/xlabsrv2/epics/include/os/Linux -I/home/xlabsrv2/epics/include -MM -MF mdrive_1IOC_registerRecordDeviceDriver.d mdrive_1IOC_registerRecordDeviceDriver.cpp
Installing created dbd file ../../../dbd/mdrive_1IOC.dbd
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/include
-I/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/include -I/home/xlabsrv2/epics/include/compiler/gcc -I/home/xlabsrv2/epics/include/os/Linux -I/home/xlabsrv2/epics/include -c mdrive_1IOC_registerRecordDeviceDriver.cpp
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/include
-I/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/include -I/home/xlabsrv2/epics/include/compiler/gcc -I/home/xlabsrv2/epics/include/os/Linux -I/home/xlabsrv2/epics/include -c ../mdrive_1IOCMain.cpp
/usr/bin/g++ -o mdrive_1IOC -L/home/xlabsrv2/epics/IOCs/mdrive_1IOC/lib/linux-x86_64 -L/home/xlabsrv2/epics/lib/linux-x86_64 -L/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/lib/linux-x86_64 -L/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/lib/linux-x86_64
-Wl,-rpath,/home/xlabsrv2/epics/IOCs/mdrive_1IOC/lib/linux-x86_64 -Wl,-rpath,/home/xlabsrv2/epics/lib/linux-x86_64 -Wl,-rpath,/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24/lib/linux-x86_64 -Wl,-rpath,/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2/lib/linux-x86_64
-rdynamic -m64 mdrive_1IOC_registerRecordDeviceDriver.o mdrive_1IOCMain.o -lstream -lasyn -ldbRecStd -ldbCore -lca -lCom
Installing created executable ../../../bin/linux-x86_64/mdrive_1IOC
make[3]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/src/O.linux-x86_64»
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/src»
make -C ./Db install
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/Db»
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../../.. \
T_A=linux-x86_64 install
make[3]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/Db/O.linux-x86_64»
make[3]: Nessuna operazione da eseguire per «install».
make[3]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/Db/O.linux-x86_64»
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp/Db»
make[1]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/mdrive_1IOCApp»
make -C ./iocBoot install
make[1]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot»
make -C ./iocmdrive_1IOC install
make[2]: ingresso nella directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot/iocmdrive_1IOC»
perl -CSD /home/xlabsrv2/epics/bin/linux-x86_64/convertRelease.pl -t /home/xlabsrv2/epics/IOCs/mdrive_1IOC envPaths
make[2]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot/iocmdrive_1IOC»
make[1]: uscita dalla directory «/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot»
4) "./st.cmd"
[xlabsrv2@xlabsrv2 iocmdrive_1IOC]$ ./st.cmd
#!../../bin/linux-x86_64/mdrive_1IOC
< envPaths
epicsEnvSet("IOC","iocmdrive_1IOC")
epicsEnvSet("TOP","/home/xlabsrv2/epics/IOCs/mdrive_1IOC")
epicsEnvSet("SUPPORT","/home/xlabsrv2/epics/synApps_6_3/support")
epicsEnvSet("ASYN","/home/xlabsrv2/epics/synApps_6_3/support/asyn-R4-44-2")
epicsEnvSet("STREAM","/home/xlabsrv2/epics/synApps_6_3/support/StreamDevice-2-8-24")
epicsEnvSet("EPICS_BASE","/home/xlabsrv2/epics")
cd "/home/xlabsrv2/epics/IOCs/mdrive_1IOC"
epicsEnvSet ("STREAM_PROTOCOL_PATH", "/home/xlabsrv2/epics/IOCs/mdrive_1IOC/db")
epicsEnvSet ("PORT_mdrive_x", "ip_x")
#X Axis
drvAsynIPPortConfigure(ip_x, "100.100.0.23:503")
ERROR st.cmd line 36: Command drvAsynIPPortConfigure not found.
asynOctetSetInputEos(ip_x,0,"\n\r")
ERROR st.cmd line 37: Command asynOctetSetInputEos not found.
asynOctetSetOutputEos(ip_x,0,"\n\r")
ERROR st.cmd line 38: Command asynOctetSetOutputEos not found.
asynSetTraceMask(ip_x,-1,0x9);
ERROR st.cmd line 40: Command asynSetTraceMask not found.
asynSetTraceIOMask(ip_x,-1,0x2)
ERROR st.cmd line 41: Command asynSetTraceIOMask not found.
## Register all support components
dbLoadDatabase "dbd/mdrive_1IOC.dbd"
mdrive_1IOC_registerRecordDeviceDriver pdbbase
## Load record instances
#dbLoadRecords("db/mdrive_1IOC.db","user=xlabsrv2")
dbLoadTemplate("db/mdrive_1IOC.val")
cd "/home/xlabsrv2/epics/IOCs/mdrive_1IOC/iocBoot/iocmdrive_1IOC"
iocInit
Starting iocInit
############################################################################
## EPICS R7.0.8.2-DEV
## Rev. R7.0.8.1-142-g144f9756eac4e800f18d
## Rev. Date Git: 2025-02-05 10:16:16 -0600
############################################################################
2025/09/19 09:56:08.550149 _main_ Cannot find a bus named 'ip_x' for 'mdrive_x:model'
2025/09/19 09:56:08.550225 _main_ mdrive_x:model: Can't attach to bus ip_x 0
2025/09/19 09:56:08.550243 _main_ mdrive_x:model: Record initialization failed
iocRun: All initialization complete
## Start any sequence programs
#seq sncxxx,"user=xlabsrv2"
5) "epics> help"
# ClockTime_Report asDumpHash asInit
asSetFilename asSetSubstitutions ascar asdbdump
asphag aspmem asprules aspuag astac
asynAutoConnect asynEnable asynInterposeDelay
asynInterposeEcho asynInterposeEosConfig
asynInterposeFlushConfig asynOctetConnect
asynOctetDisconnect asynOctetFlush asynOctetGetInputEos
asynOctetGetOutputEos asynOctetRead asynOctetSetInputEos
asynOctetSetOutputEos asynOctetWrite asynOctetWriteRead
asynRegisterTimeStampSource asynReport asynSetAutoConnectTimeout
asynSetMinTimerPeriod asynSetOption asynSetQueueLockPortTimeout
asynSetTraceFile asynSetTraceIOMask
asynSetTraceIOTruncateSize asynSetTraceInfoMask
asynSetTraceMask asynShowOption asynUnregisterTimeStampSource
asynWaitConnect callbackParallelThreads callbackQueueShow
callbackSetQueueSize casr cd coreRelease
date dbCreateAlias dbDumpBreaktable dbDumpDevice
dbDumpDriver dbDumpField dbDumpFunction dbDumpLink dbDumpMenu
dbDumpPath dbDumpRecord dbDumpRecordType
dbDumpRegistrar dbDumpVariable dbLoadDatabase dbLoadRecords dbLoadTemplate
dbLockShowLocked dbNotifyDump dbPutAttribute dbPvdDump
dbPvdTableSize dbReportDeviceConfig dbStateClear dbStateCreate
dbStateSet dbStateShow dbStateShowAll dba dbap
dbb dbc dbcar dbd dbel
dbgf dbgrep dbhcr dbior dbjlr
dbl dbla dbli dblsr dbnr
dbp dbpf dbpr dbs dbsr
dbstat dbtgf dbtpf dbtpn dbtr
drvAsynIPPortConfigure drvAsynIPServerPortConfigure echo
eltc epicsEnvSet epicsEnvShow epicsEnvUnset
epicsMutexShowAll epicsParamShow epicsPrtEnvParams
epicsThreadResume epicsThreadShow epicsThreadShowAll
epicsThreadSleep errlog errlogInit errlogInit2
exit generalTimeReport gft help
installLastResortEventProvider iocBuild iocInit iocLogInit
iocLogPrefix iocLogShow iocPause iocRun iocshCmd
iocshLoad iocshRun mdrive_1IOC_registerRecordDeviceDriver
on pft postEvent pwd
registerAllRecordDeviceDrivers registryDeviceSupportFind
registryDriverSupportFind registryDump registryFunctionFind
registryRecordTypeFind scanOnceQueueShow
scanOnceSetQueueSize scanpel scanpiol scanppl
setIocLogDisable streamReinit streamReload
streamReportRecord streamSetLogfile taskwdShow
tpn var
I
Il 19/09/2025 03:35, Ralph Lange via Tech-talk ha scritto:
I think you have the order of things in the startup file wrong.
The block
## Register all support components
dbLoadDatabase "dbd/mdrive_1IOC.dbd"
mdrive_1IOC_registerRecordDeviceDriver pdbbase
loads the dbd file and registers all Record, Device and Driver Support modules with EPICS. This includes the registration of iocShell commands.
Before this block is run, the iocShell does not know the asyn-related commands.
Cheers,
~Ralph
--
************************************
Dr. Dariush Hampai, PhD
INFN - LNF
X-Lab Frascati
Via E. Fermi, 54 (ex 40)
I-00044 Frascati (RM)
Italy
Mail Address:
XLab-Frascati
LNF-INFN
Casella Postale 13
Frascati (RM)
Italy
Room: +39.06.9403.5248
Lab.: +39.06.9403.2286
Mob.: +39.06.9403.8025
Fax.: +39.06.9403.2597
************************************
|