Getting Started

Getting meta-epics

meta-epics can be cloned from GitHub at: https://github.com/pcdshub/meta-epics.git

The layer can be added to your Yocto project using bitbake-layers:

git clone git@github.com:pcdshub/meta-epics.git
bitbake-layers add-layer meta-epics

To install the EPICS base tools (caget, caput, etc.) into your image, add the following to your local.conf

IMAGE_INSTALL:append = " epics-base"

The resulting image should now have the EPICS base tools installed to /usr/local/bin and available in your $PATH. The EPICS base files are located at /opt/epics/epics-base.

Running a Demo IOC

The recipe epics-demo-ioc (located in recipes-examples/demo-ioc) provides a simple system monitoring IOC using the linStat EPICS module.

To install this IOC on your target, add the following to your local.conf:

IMAGE_INSTALL:append = " epics-demo-ioc"

After rebuilding your image and uploading it to the target, you should be able to access iocsh using telnet:

$ telnet localhost 30000
Connected to localhost
@@@ Welcome to procServ (procServ Process Server 2.8.0)
@@@ Use ^X to kill the child, auto restart mode is ON, use ^T to toggle auto restart
@@@ procServ server PID: 548
@@@ Server startup directory: /
@@@ Child startup directory: /
@@@ Child started as: /opt/epics/epics-demo-ioc/ioc-start.sh
@@@ Child log file: -
@@@ Child "/opt/epics/epics-demo-ioc/ioc-start.sh" PID: 579
@@@ procServ server started at: Wed Jan  8 18:23:03 2025
@@@ Child "/opt/epics/epics-demo-ioc/ioc-start.sh" started at: Wed Jan  8 18:23:04 2025
@@@ 0 user(s) and 0 logger(s) connected (plus you)

Entering character mode
Escape character is '^]'.

epics> echo hello
hello

PVs on the demo IOC are accessible with PVAccess and ChannelAccess:

$ pvlist
GUID 0x88C27E6700000000A0D88232 version 2: tcp@[ 10.0.0.197:5075 ]

$ pvlist 0x88C27E6700000000A0D88232
SYS:DEMO:CAP_EFF_N
SYS:DEMO:IRQ_TOTR_
SYS:DEMO:SYS_UP
...

$ pvget SYS:DEMO:SYS_UP
SYS:DEMO:SYS_UP 2025-01-22 10:04:10.052  1.17969e+06

$ caget SYS:DEMO:SYS_UP
SYS:DEMO:SYS_UP               1.1797e+06

Assuming your EPICS_CA_ADDR_LIST and EPICS_PVA_ADDR_LIST are configured properly on a remote machine, they will be accessible there too.