Skip to content

EPICS module that provides a standard PV interface for trigger configuration and monitoring fo TimingCore

License

Notifications You must be signed in to change notification settings

slac-epics/tprTrigger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

----------
tprTrigger
----------

The tprTrigger is an epics module which provides a standard PV interface 
for trigger configuration and monitoring fo TimingCore


How to build an ioc with tprTrigger
-----------------------------------

1. tprTrigger requires hpsTpr API
configure/CONFIG_STIE should have the followings for the hpsTpr API.

HPSTPR_PACKAGE_NAME=timing/hpsTpr
HPSTPR_VERSION=R1.0.2
HPSTPR_ARCH=$(LINUXRT_BUILDROOT_VERSION)-x86_64
HPSTPR=$(PACKAGE_AREA)/$(HPSTPR_PACKAGE_NAME)/$(HPSTPR_VERSION)/$(HPSTPR_ARCH)
HPSTPR_LIB     = $(HPSTPR)/lib
HPSTPR_INCLUDE = $(HPSTPR)/include

(The version number should be replaced with a proper version for your ioc.)

2. tprTrigger module
configure/RELEASE should have the followings for the tprTrigger module.

TPRTRIGGER_MODULE_VERSION=R1.2.5
TPRTRIGGER=$(EPICS_MODULES)/tprTrigger/$(TPRTRIGGER_MODULE_VERSION)

(The version number should be replaced with a proper version for your ioc.)


3. Other modules and API
the tprTrigger module assumes the following API and modules are included in the application.

asyn            R4.31-0.1.0
yamlLoader      R1.1.2
timingApi       R0.6

cpsw/framework  R3.6.6
yaml-cpp        yaml-cpp-0.5.3_boost-1.64.0
boost           1.64.0
hpsTpr          R1.0.2


4. How to build application binary

The Makefile in source directory should include the followings:

# DBD files for tprTrigger
<your_application>_DBD += tprTriggerAsynDriver.dbd

# API for tprTrigger
hpsTpr_DIR = $(HPSTPR_LIB)
<your_application>_LIBS += hpstpr

# Libary for tprTrigger
<your_application>_LIBS += tprTrigger

The Makefile in Db directory should have the followings to install database template 
into db directory.

# Install Database for tprTrigger module
DB_INSTALLS += $(TPRTRIGGER)/db/tprTrig.db
DB_INSTALLS += $(TPRTRIGGER)/db/tprDeviceNamePV.db



How to run the ioc with tprTrigger
----------------------------------

1. how to load database template for tprTrigger.

Macros for tprTrig.db

PORT      - port name for asyn port driver, tprTrigger moudle has port name "trig".
LOCA      - location (ex, LI24, IN20) 
IOC_UNIT  - IOC name (ex, RF01, RF02)
INST      - instance number for mutiple TPR in an ioc

example)
dbLoadRecords("db/tprTrig.db", "PORT=trig,LOCA=LI24,IOC_UNIT=RF02,INST=0")

It will make TPR PVs (low level PVs) which have prefix "TPR:LI24:RF02:0:".
--------------

Macro for tprDeviceNamePVs.db
The tprDeviceNamePVs.db provides device name PVs (high level PVs)

LOCA       -  same with tprTrig.db
IOC_UNIT   -  smae with tprTrig.db 
INST       -  same with tprTrig.db
SYS        -  for LCLS1 shoud be SYS0, for LCLS2 should be SYS2
NN         -  two digit number for trigger channel number (ex, 00, 01, 02 ... 10, 11)
DEV_PREFIX  - prefix for PV name (ex, KLYS:LI28:21")

example)
dbLoadRecords("db/tprDeviceNamePV.db", "LOCA=LI24,IOC_UNIT=RF02,INST=0,SYS=SYS2,NN=00,DEV_PREFIX=KLYS:LI28:21:")
dbLodsRecords("db/tprDeviceNamePV.db", "LOCA=LI24,IOC_UNIT=RF02,INST=0,SYS=SYS2,NN=01,DEV_PREFIX=KLYS:LI28:22:")

Remark)
The DEV_PREFIX should have ":" at very last charactor.
ex)  BPMS:IN20:221:, YAG:IN20:221:
But, some of cases, we don't need to put the ":"
ex) BPMS:LI26:201:CALB




2. how to initialize the driver

The prTrigger assuems yamlLoader driver loaded up the register hierarchy as the followings:

cpswLoadYamlFile("000TopLevel.yaml", "NetIODev", "", "10.0.3.105")

(The yaml file path, root path name for register name, and FPGA IP address are application specific.)

After load up the hierarchy, we can configure tprTrigger driver with the followig command.

tprTriggerAsynDriverConfigure("trig", "mmio/AmcCarrierEmpty/AmcCarrierCore")



3. how to bring up engineering screen

Please, check up a script in the module: <TOP>/tprTriggerApp/edm/launch_edm



4. how to use multiple blades sytem

Load hierachy yaml file multiple times with describing named_root (very last argument, optional for mutilple blades system)

cd ${YAML_DIR0}
cpswLoadYamlFile("000TopLevel.yaml", "NetIODev", "", "10.0.3.102", "root_slot2")
cd ${YAML_DIR1}
cpswLoadYamlFile("000TopLevel.yaml", "NetIODev", "", "10.0.3.103", "root_slot3")
cd ${YAML_DIR2}
cpswLoadYamlFile("000TopLevel.yaml", "NetIODev", "", "10.0.3.104", "root_slot4")

Call driver configure multiple time with the named_root (very last argument, optional for multiple blades system)

tprTriggerAsynDriverConfigure("trig0", "mmio/AmcCarrierEmpty/AmcCarrierCore", "root_slot2")
tprTriggerAsynDriverConfigure("trig1", "mmio/AmcCarrierEmpty/AmcCarrierCore", "root_slot3")
tprTriggerAsynDriverConfigure("trig2", "mmio/AmcCarrierEmpty/AmcCarrierCore", "root_slot4")

About

EPICS module that provides a standard PV interface for trigger configuration and monitoring fo TimingCore

Resources

License

Stars

Watchers

Forks

Packages

No packages published