# $Source: /cvs/A/CS/startup/startup.script_common,v $ # This is the common part of all startup scripts # It is included by all generated scripts # The following variables should be set before: # * INSTBASE where to boot from # * EPICS the epics release (e.g "R3.13.9") EPICS_MODULES = "/ioc/modules" # find a better way later to know current require version REQUIRE_VERSION="2.9.2" #set EPICS_HOST_ARCH according to vxWorks version and cpu type VX6=(*runtimeVersion>>24)&255-'5' VMI=(*runtimeVersion>>8)&255 EPICS_HOST_ARCH=malloc(16) sprintf(EPICS_HOST_ARCH,"%s%c-ppc60%d",VX6?"V6":"T",VX6?VMI:VMI>'3'?'2':'1',sysCpu-90) #set target name as IOC name IOC=&sysBootParams+60 BOOTPC=&sysBootHost STRINGBUFFER=malloc(256) # set the prompt sprintf STRINGBUFFER, "%s (startup.script aborted) > ", IOC shellPromptSet STRINGBUFFER # Set DNS if necessary resolvInit "129.129.190.11","psi.ch" # do the NFS mounts and other network dependend stuff < ../../startup/network sprintf STRINGBUFFER, "IOC=%s", IOC putenv STRINGBUFFER sprintf STRINGBUFFER, "BOOTPC=%s", BOOTPC putenv STRINGBUFFER sprintf STRINGBUFFER, "EPICS_HOST_ARCH=%s", EPICS_HOST_ARCH putenv STRINGBUFFER # create some path variables BASEBIN=malloc(80) sprintf BASEBIN, "/epics/base-%s/bin/%s", EPICS+1, EPICS_HOST_ARCH HOME=malloc(80) sprintf HOME, "/ioc/%s", IOC sprintf STRINGBUFFER, "HOME=%s", HOME putenv STRINGBUFFER cd HOME CFG=malloc(80) sprintf CFG, "%s/cfg", HOME sprintf STRINGBUFFER, "CFG=%s", CFG putenv STRINGBUFFER STREAM_PROTOCOL_DIR=malloc(80) sprintf STREAM_PROTOCOL_DIR, "%s/cfg", HOME LIB=malloc(80) sprintf LIB, "%s/iocBoot/%s/%s", INSTBASE, EPICS, EPICS_HOST_ARCH DBD=malloc(80) sprintf DBD, "dbd:%s/iocBoot/%s/dbd", INSTBASE, EPICS sprintf STRINGBUFFER, "EPICS_DRIVER_PATH=.:bin/%s_%s:bin:snl:%s:%s", EPICS, EPICS_HOST_ARCH, EPICS_MODULES, LIB putenv STRINGBUFFER TEMPLATES=malloc(80) sprintf TEMPLATES, ".:%s/iocBoot/templates", INSTBASE # Release memory above 32 MB # Code loaded after this must be compiled with -mlongcall # at the moment snp24 does not work with this memAddToPool (sysMemTop(),sysPhysMemTop()-sysMemTop()) EXTENDED_MEMORY=0 # Setup Time # 2019: putenv "EPICS_TIMEZONE=MET::-60:033102:102703" putenv "EPICS_TS_MIN_WEST=-60" putenv "EPICS_TS_NTP_INET=129.129.190.1" putenv "EPICS_TS_FORCE_NTPTIME=YES" # Need to branch a few times on EPICS base release R3_13=strncmp(EPICS,"R3.13.",6)==0 R3_14=strncmp(EPICS,"R3.14.",6)==0 # Load EPICS system core (different names for different EPICS versions) # Unfortunately we have no 'if' and line length is quite limited # 3.13: load "iocCore" # 3.14: load "iocCoreLibrary.munch" # 3.15+: load "softIoc.munch" (could do this from 3.14.12 on) sprintf STRINGBUFFER, "%s/%s",BASEBIN,R3_13?"iocCore":R3_14?"iocCoreLibrary.munch":"softIoc.munch" printf "loading %s\n",STRINGBUFFER ld 0, 0, STRINGBUFFER # Start Logging putenv "EPICS_IOC_LOG_INET=gfa-syslog" putenv "EPICS_IOC_LOG_PORT=1514" iocLogInit errlogPrintf "Starting EPICS %s\n", EPICS # Allow backward compatible non-monotonic breaktables for EPICS > 3.14.8 dbBptNotMonotonic=1 # try for user-defined menus scan and convert dbLoadDatabase "dbd/scan.dbd" dbLoadDatabase "dbd/convert.dbd" dbLoadDatabase "dbd/slsConvert.dbd" taskDelay sysClkRateGet() sprintf STRINGBUFFER,R3_13||R3_14?";":"dbLoadDatabase \"/epics/base-%s/dbd/softIoc.dbd\"",EPICS+1 execute STRINGBUFFER sprintf STRINGBUFFER,R3_13||R3_14?";":"softIoc_registerRecordDeviceDriver pdbbase" execute STRINGBUFFER # load "require" sprintf STRINGBUFFER, "require_VERSION=%s", getenv("require_VERSION") ? getenv("require_VERSION") : REQUIRE_VERSION putenv STRINGBUFFER sprintf STRINGBUFFER, "require_DIR=%s/require/%s/%s/", EPICS_MODULES, getenv("require_VERSION"), EPICS putenv STRINGBUFFER sprintf STRINGBUFFER, "%s/lib/%s/requireLib.munch", getenv("require_DIR"), EPICS_HOST_ARCH ld 0, 0, STRINGBUFFER #load standard drivers (allow user to specify version in environment variable) require "base", getenv("base_VERSION") ? getenv("base_VERSION") : "ifexists" registerModule "require", getenv("require_VERSION"), getenv("require_DIR") sprintf STRINGBUFFER,R3_13?";":"require_registerRecordDeviceDriver pdbbase" execute STRINGBUFFER require "utilities", getenv("utilities_VERSION") require "misc", getenv("misc_VERSION") # caPutLog #epicsEnvSet "EPICS_CA_PUT_LOG_ADDR", "gfa-syslog:1515 sf-logstash.psi.ch:1515" epicsEnvSet "EPICS_CA_PUT_LOG_PREFIX", IOC require "caPutLog", getenv("caPutLog_VERSION")?getenv("caPutLog_VERSION"):"ifexists" # IOC monitoring require R3_13||R3_14?"iocmon":"iocStats", getenv(R3_13||R3_14?"iocmon_VERSION":"iocStats_VERSION") # Battery monitoring require "M48T37", "ifexists" # Database Upload require "iocinfo", getenv("iocinfo_VERSION") # Sequencer for backward compatibility with missing dependencies require "seq", R3_13||R3_14?"2.0":"none" # run EPICS only on 1st network port putenv "EPICS_CA_AUTO_ADDR_LIST=NO" putenv bootInfo("EPICS_CA_ADDR_LIST=%B") putenv bootInfo("EPICS_CAS_INTF_ADDR_LIST=%e") putenv "EPICS_CAS_AUTO_BEACON_ADDR_LIST=NO" putenv bootInfo("EPICS_CAS_BEACON_ADDR_LIST=%B") # EPICS 3.13 needs this to not use synchronized timestamps sprintf STRINGBUFFER,R3_13?"TSconfigure(0,10,10,18323,18322,250,1)":";" execute STRINGBUFFER # end of startup.script_common