Files
startup/startup.script_common
2019-08-12 15:34:02 +02:00

168 lines
5.2 KiB
Plaintext

# $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
#putenv "EPICS_CA_PUT_LOG_ADDR=gfa-syslog:1515 sf-logstash.psi.ch:1515"
sprintf STRINGBUFFER, "EPICS_CA_PUT_LOG_PREFIX=%s",IOC
putenv STRINGBUFFER
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")?getenv("iocinfo_VERSION"):"ifexists"
# 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