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

Slides:



Advertisements
Similar presentations
Epics Configuration Management Steve Hunt v1.0. Goals Maximize control system availability Minimize development cycle time Reduce risk.
Advertisements

Configuration management
Configuration management
Make This work with EPICS! 2006
1 1999/Ph 514: Working With an IOC EPICS Working with an IOC Marty Kraimer APS.
Computer Software 3 Section A Software Basics CHAPTER PARSONS/OJA
1 2003/P571: IOC Development Environment EPICS IOC Development Environment with EPICS on Ubuntu Based on “IOC Development Envirnment” by Andrew Johnson,
EPICS Noboru Yaamamoto Jan 27, 2009 for EPICS seminar at RRCAT, Indore Installing EPICS.
Finding, Deploying and Managing EPICS Support Modules Andrew Johnson Computer Scientist, AES Controls.
GNU/Linux Filesystem 1 st AUT GNU/Linux Festival Computer Engineering & IT Department Bahador Bakhshi.
7 th ACS Workshop 2010 Antofagasta, Chile ACS Project Lifecycle Matias Mora (based on presentation by G. Chiozzi and J. Ibsen)
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Packaging of EPICS-basedControl System Software
Linux-MVME Targets Using Motorola Board Support
Talend 5.4 Architecture Adam Pemble Talend Professional Services.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Programming In C++ Spring Semester 2013 Programming In C++, Lecture 1.
Lab 3 Department of Computer Science and Information Engineering National Taiwan University Lab3 - Cross Tools 2014/10/7/ 20 1.
Lesson 6 Operating Systems and Software
Networked Application Architecture Design. Application Building Blocks Application Software Data Infrastructure Software Local Area Network Server Desktop.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
Enabling the ARM Learning in INDIA ARM DEVELOPMENT TOOL SETUP.
RTEMS overview W. Eric Norum Introduction RTEMS is a tool designed specifically for real-time embedded systems The RTEMS product is an executive.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Main Bullet #1 Main Bullet #2 Main Bullet #3 EPICS and CLS September 18, 2009.
ICS – Software Engineering Group 1 Cross Compiling vxWorks on Linux EPICS Collaboration Meeting l May 2002 at BESSY, Germany May 2002 at BESSY,
Guideline: How to build AMSS source code? History: 01/02/ Make Draft 05/02/2010 – Release /02/2010 – Updated.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Developing C/C++ applications with the Eclipse CDT David Gallardo.
CS 444 Introduction to Operating Systems
A U.S. Department of Energy Office of Science Laboratory Operated by The University of Chicago Argonne National Laboratory Office of Science U.S. Department.
® 2-2 Projects 2.1Projects Overview Bootable Projects and VxWorks Configuration Integrated Simulator Downloadable Projects Build Specifications.
1 1999/Ph 514: IOC Development Environment EPICS IOC Development Environment Marty Kraimer APS.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
 Overview › Requirements › Proof of Principal › Issues … › First Step – Wrap Altera NIOS2 GNU Tools › Next Step – Build RTEMS/NIOS GNU Tools › Future.
Managing SX.e and TWL with MARC and Scripts Jeremiah Curtis
UNIX (Linux) Introduction Module-1. OS Kernel In computing, the kernel is the central component of OS. It is a bridge between applications and the actual.
What is a port The Ports Collection is essentially a set of Makefiles, patches, and description files placed in /usr/ports. The port includes instructions.
Disk Layout/Productization Proposal Ron Rechenmacher and Geoff Savage.
National Center for Supercomputing ApplicationsNational Computational Science Grid Packaging Technology Technical Talk University of Wisconsin Condor/GPT.
EPICS Application Development At The Canadian Light Source Glen Wright.
 Linux Mint is a computer operating system designed to work on most modern systems, including typical x86 and x64 PC’s. Linux Mint can be thought of.
RT-LAB Electrical Applications 1 Opal-RT Technologies Use of the “Store Embedded” mode Solution RT-LAB for PC-104.
1 1999/Ph 514: Lab #3A : SNL Lab#3B : Development Environment EPICS Lab #3a State Notation Language.
21 September 2012 GRETINA SWG GRETINA SWG Meeting Carl Lionberger LBNL GRETINA DAQ Implementation.
Connecting LabVIEW to EPICS network
Lecture 7: Overview Microprocessors / microcontrollers.
An Overview of Support of Small Embedded Systems with Some Recommendations Controls Working Group April 14, 2004 T. Meyer, D. Peterson.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
EPICS Noboru Yaamamoto July 11, 2006 for EPICS seminar at VECC,Kolkata Installing EPICS.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
An EPICS IDE Using Eclipse Kenneth Evans, Jr. Presented at the EPICS Collaboration Meeting June 15, 2006 Argonne National Laboratory, Argonne, IL.
Disk Layout/Productization Proposal Ron Rechenmacher and Geoff Savage.
Settings MySQL Database and JDBC configuration Instructor: Sergey Goldman.
김민수 Cortex-M4 Processor - Getting Started with the GNU Compiler Collection(gcc)
 Project Team: Suzana Vaserman David Fleish Moran Zafir Tzvika Stein  Academic adviser: Dr. Mayer Goldberg  Technical adviser: Mr. Guy Wiener.
EPIC S Noboru Yaamamoto July 11, 2006 for EPICS seminar at VECC,Kolkata Installing EPICS.
Stephanie Allison Software Mar 2, 2006 IOC Applications Host Applications Directory Structure Environment Setup Issues.
Computer Basics.
bitcurator-access-webtools Quick Start Guide
Topic 2: Hardware and Software
IOC Application Development / Debugging
Welcome to Linux Chap#1 Hanin Abdulrahman.
EPICS and CLS September 18, 2009.
Computers: Hardware and Software
Getting Started: Developing Code with Cloud9
bitcurator-access-webtools Quick Start Guide
Welcome to Linux Chap#1 Hanin Abdulrahman.
Welcome to Linux Chap#1.
Presentation transcript:

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 IOC application How to build an IOC application How to run an IOC application on various platforms Console interaction with an IOC application (iocsh)

Reference EPICS IOC Application Developers Guide Go to EPICS home page: then follow links, as shown

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”.

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

‘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

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

IOC Software Development Tools EPICS uses the GNU version of make –Almost every directory from the 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’

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

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

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

directory structure Running makeBaseApp.pl from the 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

directory structure after running make Additional directories appear in 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.

IOC startup IOCs read startup commands from a script –Typically ‘st.cmd’ in the /iocBoot/ / 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.

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} 9 10 ## Register all support components 11 dbLoadDatabase("dbd/first.dbd") 12 first_registerRecordDeviceDriver(pdbbase) ## Load record instances 15 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") ## Set this to see messages from mySub 22 #var mySubDebug cd ${TOP}/iocBoot/${IOC} 25 iocInit() ## Start any sequence programs 28 #seq sncExample,"user=norumeHost”

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 /configure/RELEASE file specifies the location of other areas used by this area /iocBoot/ /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