Input/Output Controller (IOC) Overview - PowerPoint PPT Presentation

About This Presentation
Title:

Input/Output Controller (IOC) Overview

Description:

Input/Output Controller (IOC) Overview Andrew Johnson Computer Scientist, AES Controls Group IOC Overview What is an EPICS Input/Output Controller How to create a new ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 17
Provided by: AdvancedP2
Learn more at: https://epics.anl.gov
Category:

less

Transcript and Presenter's Notes

Title: Input/Output Controller (IOC) Overview


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

2
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)

3
Reference
  • EPICS IOC Application Developers Guide

Go to EPICS home page http//www.aps.anl.gov/epic
s/ then follow links, as shown
4
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.

5
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

RTEMS
6
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

7
IOC Software Development Area
  • IOC software is usually divided into different
    lttopgt areas
  • Each lttopgt 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 lttopgt is managed separately
  • A lttopgt is designed to use products from other
    lttopgt areas
  • EPICS base can be thought of as a lttopgt providing
    products that all IOCs need to use

8
IOC Software Development Tools
  • EPICS uses the GNU version of make
  • Almost every directory from the lttopgt on down
    contains a Makefile
  • Make recursively descends through the directory
    tree
  • Determines what needs to be rebuilt
  • Invokes compilers and other tools as instructed
    in Makefile
  • GNU C/C compilers or vendor compilers can be
    used
  • No fancy integrated development environment

9
The makeBaseApp.pl program
  • Part of the EPICS Base distribution
  • Populates a new, or adds files to an existing,
    lttopgt 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

10
Creating a lttopgt directory structure
  • Running makeBaseApp.pl using the example template
    creates the following directories in the current
    directory, making it a lttopgt
  • configure/ - Configuration files
  • testApp/ - Files associated with the testApp
    application
  • Db/ - Databases, templates and substitution files
  • src/ - Source code
  • Every directory contains a Makefile

11
lttopgt/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 lttopgt areas used by this lttopgt
    area
  • Other files under configure/ are part of the
    (complex!) build system and should be left alone.

12
lttopgt directory structure
  • Running makeBaseApp.pl from the lttopgt directory
    with a -i flag creates additional directories for
    an IOC to boot from
  • iocBoot/ - Directory containing per-IOC boot
    directories
  • ioctest/ - Boot directory for the ioctest IOC

13
lttopgt directory structure after running make
  • Additional directories appear in lttopgt after
    running make
  • bin/ - Directory for per-architecture binary
    directories
  • linux-x86/ - Executables for this architecture
  • lib/ - Directory for per-architecture library
    directories
  • linux-x86/ - Object libraries for this
    architecture
  • dbd/ - Database definition files
  • db/ - Database files (record instances,
    templates)
  • There may be other directories under bin/ and
    lib/, too.

14
IOC startup
  • IOCs read startup commands from a script
  • Typically st.cmd in the lttopgt/iocBoot/ltiocnamegt/
    directory
  • On vxWorks IOCs the target shell usually executes
    these scripts
  • On other OSs 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.

15
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 lt envPaths
  • 7
  • 8 cd TOP
  • 9
  • 10 Register all support components
  • 11 dbLoadDatabase("dbd/first.dbd")
  • 12 first_registerRecordDeviceDriver(pdbbase)
  • 13
  • 14 Load record instances
  • 15 dbLoadRecords("db/dbExample1.db","usernorumeH
    ost")
  • 16 dbLoadRecords("db/dbExample2.db","usernorumeH
    ost,no1,scan1 second")
  • 17 dbLoadRecords("db/dbExample2.db","usernorumeH
    ost,no2,scan2 second")
  • 18 dbLoadRecords("db/dbExample2.db","usernorumeH
    ost,no3,scan5 second")
  • 19 dbLoadRecords("db/dbSubExample.db","usernorum
    eHost")

16
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 lttopgt/configure/RELEASE file specifies the
    location of other lttopgt areas used by this lttopgt
    area
  • lttopgt/iocBoot/ltiocnamegt/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 Developers Guide contains
    a wealth of information
Write a Comment
User Comments (0)
About PowerShow.com