16
Input/Output Controller (IOC) Overview Andrew Johnson Computer Scientist, AES Controls Group

Input/Output Controller (IOC) Overview

  • Upload
    corina

  • View
    57

  • Download
    0

Embed Size (px)

DESCRIPTION

Andrew Johnson Computer Scientist, AES Controls Group. Input/Output Controller (IOC) Overview. IOC Overview. What is an EPICS Input/Output Controller How to create a new IOC application How to build an IOC application How to run an IOC application on various platforms - PowerPoint PPT Presentation

Citation preview

Page 1: Input/Output Controller (IOC) Overview

Input/Output Controller (IOC) Overview

Andrew Johnson

Computer Scientist, AES Controls Group

Page 2: Input/Output Controller (IOC) Overview

IOC Overview

• What is an EPICS Input/Output Controller• How to create a new IOC application• How to build an IOC application • How to run an IOC application on various platforms• Console interaction with an IOC application (iocsh)

Page 3: Input/Output Controller (IOC) Overview

Reference

EPICS IOC Application Developers Guide

Go to EPICS home page:http://www.aps.anl.gov/epics/ then follow links, as shown

Page 4: Input/Output Controller (IOC) Overview

What is an Input/Output Controller?

The answer used to be easy – “A single-board computer running the vxWorks real-time operating system and installed in a VME chassis”.

Page 5: Input/Output Controller (IOC) Overview

What is an Input/Output Controller?

An IOC can also be an embedded micro-controller, a rack-mount server, a laptop PC or Mac, a desktop PC or Mac, or a standalone single-board computer.

It may be running on Linux, Windows, Solaris, Darwin, RTEMS or vxWorks R

TE

MS

Page 6: Input/Output Controller (IOC) Overview

‘Host-based’ and ‘Target’ IOCs

• ‘Host-based’ IOC– Runs in the same environment as which it was compiled– ‘Native’ software development tools (compilers, linkers)– Sometimes called a ‘Soft’ IOC– IOC is an program like any other on the machine– Possible to have many IOCs on a single machine

• ‘Target’ IOC– Runs in a different environment than where compiled– ‘Cross’ software development tools– vxWorks, RTEMS– IOC boots from some medium (usually network)– IOC is the only program running on the machine

Page 7: Input/Output Controller (IOC) Overview

IOC Software Development Area

• IOC software is usually divided into different <top> areas– Each <top> provides a place to collect and compile files and

configuration data used by a group of similar IOCs, or used to create products that are used by different groups of IOCs

– Each <top> is managed separately– A <top> is designed to use products from other <top> areas

• EPICS base can be thought of as a <top> providing products that all IOCs need to use

Page 8: Input/Output Controller (IOC) Overview

IOC Software Development Tools

• EPICS uses the GNU version of make– Almost every directory from the <top> on down contains a

‘Makefile’– Make recursively descends through the directory tree

• Determines what needs to be [re]built• Invokes compilers and other tools as instructed in Makefile

– GNU C/C++ compilers or vendor compilers can be used

• No fancy ‘integrated development environment’

Page 9: Input/Output Controller (IOC) Overview

The ‘makeBaseApp.pl’ program

• Part of the EPICS Base distribution• Populates a new, or adds files to an existing, <top> area

• Requires the environment variable EPICS_HOST_ARCH be set (EPICS base contains scripts which can set this as part of your login sequence)

– linux-x86, darwin-ppc, solaris-sparc, win32-x86• Creates a directory structure based on a selected template• Templates provided with Base include

– ioc - A generic IOC application skeleton– example – An example IOC application

Page 10: Input/Output Controller (IOC) Overview

Creating a <top> directory structure

• Running makeBaseApp.pl using the example template creates the following directories in the current directory, making it a <top>

configure/ - Configuration filestestApp/ - Files associated with the ‘testApp’ applicationDb/ - Databases, templates and substitution filessrc/ - Source code

• Every directory contains a ‘Makefile’

Page 11: Input/Output Controller (IOC) Overview

<top>/configure files

• Some may be modified as needed • CONFIG_SITE

Specify make variables (e.g. to build for a particular target):CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040

• RELEASE

Point to other <top> areas used by this <top> area• Other files under configure/ are part of the (complex!) build system and

should be left alone.

Page 12: Input/Output Controller (IOC) Overview

<top> directory structure

• Running makeBaseApp.pl from the <top> directory with a -i flag creates additional directories for an IOC to boot from

iocBoot/ - Directory containing per-IOC boot directoriesioctest/ - Boot directory for the ‘ioctest’ IOC

Page 13: Input/Output Controller (IOC) Overview

<top> directory structure after running make

• Additional directories appear in <top> after running makebin/ - Directory for per-architecture binary directorieslinux-x86/ - Executables for this architecturelib/ - Directory for per-architecture library directorieslinux-x86/ - Object libraries for this architecturedbd/ - Database definition filesdb/ - Database files (record instances, templates)• There may be other directories under bin/ and lib/, too.

Page 14: Input/Output Controller (IOC) Overview

IOC startup

• IOCs read startup commands from a script

– Typically ‘st.cmd’ in the <top>/iocBoot/<iocname>/ directory• On vxWorks IOCs the target shell usually executes these scripts• On other OS’s the EPICS iocsh shell does the execution• The command syntax is similar, but iocsh is less strict• Script was created by ‘makeBaseApp.pl -i’ command• It must usually be edited by hand to add commands that configure

hardware modules, start sequence programs, update log files, etc.

Page 15: Input/Output Controller (IOC) Overview

Example application startup script

1 #!../../bin/linux-x86/first 2 3 ## You may have to change first to something else 4 ## everywhere it appears in this file 5 6 < envPaths 7 8 cd ${TOP} 910 ## Register all support components11 dbLoadDatabase("dbd/first.dbd")12 first_registerRecordDeviceDriver(pdbbase)1314 ## Load record instances15 dbLoadRecords("db/dbExample1.db","user=norumeHost")16 dbLoadRecords("db/dbExample2.db","user=norumeHost,no=1,scan=1 second")17 dbLoadRecords("db/dbExample2.db","user=norumeHost,no=2,scan=2 second")18 dbLoadRecords("db/dbExample2.db","user=norumeHost,no=3,scan=5 second")19 dbLoadRecords("db/dbSubExample.db","user=norumeHost")2021 ## Set this to see messages from mySub22 #var mySubDebug 12324 cd ${TOP}/iocBoot/${IOC}25 iocInit()2627 ## Start any sequence programs28 #seq sncExample,"user=norumeHost”

Page 16: Input/Output Controller (IOC) Overview

Review

• IOC applications can be host-based or target-based• The makeBaseApp.pl script is used to create IOC application

modules and IOC startup directories• The <top>/configure/RELEASE file specifies the location of other

<top> areas used by this <top> area• <top>/iocBoot/<iocname>/st.cmd is an IOC startup script• The EPICS build system requires the use of GNU make• vxWorks IOCs use the vxWorks shell, non-vxWorks IOCs use iocsh• The EPICS Application Developer’s Guide contains a wealth of

information