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
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
************************************