Installation Instructions
EPICS base
Release 3.14.0alpha1
What
is EPICS base?
The Experimental Physics and
Industrial Control Systems (EPICS) is an extensible set of software components
and tools with which application developers can create a control system. This
control system can be used to control accelerators, detectors, telescopes, or
other scientific experimental equipment. EPICS base is the set of core
software, i.e. the components of EPICS without which EPICS would not function.
EPICS base allows an arbitrary number of target systems, IOCs (input/output
controllers), and host systems, OPIs (operator interfaces) of various types.
What
is new in this release?
This version of EPICS base contains significant
changes and offers major improvements in functionality over previous versions.
Please check the RELEASE_NOTES file in the distribution for description of
changes and release migration details.
Copyright
Please review the COPYRIGHT* files included in the
distribution for legal terms of usage.
Supported
platforms
Currently this version of EPICS base has been built
on the following hosts and targets. If you are trying to build EPICS base on a
different host or for a different target machine you must have the proper
host/target cross compiler and header files and you will have to add the
appropriate configure files to the base/configure/os/directory. You can start
by copying existing configuration files in the configure/os directory and then
make changes for your new platforms.
Host target platforms (operating system –
architecture - <alternate c++ compiler>)
solaris-sparc
linux-x86
win32-x86
win32-x86-borland
Cross compile target platforms (operating system -
architecture)
vxWorks-486
vxWorks-68040
vxWorks-68040lc
vxWorks-68060
vxWorks-ppc604
vxWorks-pentium
RTEMS-gen68360
RTEMS-mvme167
Supported
compilers
This version of EPICS
base has been built and tested using the host vendor's C and C++ compilers as
well as the GNU gcc and g++ compilers. The GNU cross-compilers have been used
for all cross-compiled targets. You may need the host vendor's C++ compiler in your search path to
do EPICS builds. Check the definitions of ACC and CCC in
base/configure/os/CONFIG.<host>.<host> or the definitions for GCC
and G++ if ANSI=GCC and CPLUSPLUS=GCC are specified in CONFIG_SITE.
Software
requirements
GNU make
You must use GNU make, gnumake, for any EPICS builds. Set your path so that a gnumake version 3.70
or later is available.
Perl
You must have perl version 5.0 or later installed. The configure
files do not specify the perl full pathname.
You need the perl executable in your search path.
Unzip and tar (Winzip on
WIN32 systems)
You
must have tools available to unzip and untar the EPICS base distribution file.
Tornado 2.0
You
must have Tornado 2.0 installed if any of your target systems are vxWorks
systems. Tornado 2.0 provides the
cross-compiler and header files needed to build for these target systems. The full
path location to Tornado 2.0 must be specified in the base/configure/RELEASE
file. You will
also need one or more board support packages. Consult the vxWorks documentation
for details.
Host
system storage requirements
The GNU zipped tar file is approximately 1.4 MB in
size. The unzipped untarred distribution source tree is approximately 6 MB. The
build created files for each host take approximately 40 MB and the build
created files for each target take approximately 10 MB.
Documentation
EPICS documentation is
available on the WWW via the EPICS home page at APS: URL http://www.aps.anl.gov/Epics
This README.html is in the base
distribution file and will be available on the IOC software R3.14 EPICS WWW page
which can be accessed from the APS EPICS home page.
WWW
pages
EPICS home page at APS
Other WWW sites
Additional information on
EPICS can be found at the various other WWW links on the EPICS home page at
APS.
Mailing Lists
There are five EPICS mailing lists provided by APS.
See The EPICS home page for subscription instructions.
Directory
Structure
Distribution directory structure
base Root
directory of the base distribution
base/configure Operating system independent build config
files
base/configure/os Operating system dependent build config files
base/configure/tools Perl and shell scripts used in
the build
base/config R3.13
compatibility build configuration files
base/src All
epics base source code in subdirectories
base/src/as Access security
base/src/bpt Break
point table
base/src/ca Channel
access
base/src/cas Channel
access server
base/src/db Database
access
base/src/dbStatic Static
database access
base/src/dbtools Database
dbLoadTemplate tools
base/src/dev Device
support
base/src/gdd General
data descriptor
base/src/libCom General
purpose library code in subdirectories
base/src/libCom/bucketLib Hash bucket
base/src/libCom/calc Algebraic
expression interpreter
base/src/libCom/cvtFast Fast
number to string conversion
base/src/libCom/dbmf Memory
management for frequent alloc/free
base/src/libCom/ellLib EPICS
double linked list
base/src/libCom/env Default
EPICS environment settings
base/src/libCom/error Error
handling definitions and routines
base/src/libCom/fdmgr File
descriptor manager
base/src/libCom/freeList Memory
management using free lists
base/src/libCom/gpHash General
purpose hash table
base/src/libCom/logClient Logging
client
base/src/libCom/macLib Macro
substitution handler
base/src/libCom/misc Miscellaneous
utilities
base/src/libCom/osi Operating
system independent code
base/src/libCom/osi/os Operating
system dependant code in subdirectories
base/src/libCom/test Test
tools (timer, semBinary, semMutex,fdmgr, …)
base/src/libCom/timer Timer
base/src/libCom/taskwd Task
watchdog
base/src/libCom/cxxTemplatesC++ templates
base/src/libCompat EPICS
base R3.13 compatibility code
base/src/makeBaseApp Perl tool
and templates to create application dvl tree
base/src/makeBaseExt Perl tool
and templates to create extension dvl tree
base/src/misc Miscellaneous
(coreRelease, iocInit, asSub*)
base/src/rec Record
support
base/src/registry EPICS
support function registry
base/src/rsrv Channel
access ioc resource server library
base/src/toolsComm Code for
the build tools antelope and e_flex
base/src/util Utilities
(ca_test, iocLogServer, startCArepeater)
base/src/vxWorks R3.13
compatibility code specific to vxWorks
base/src/iocsh Ioc
shell command interpreter
base/startup Scripts
for setting up path and environment
Install directories created by the build
base/bin Installed
scripts and executables in subdirectories
base/lib Installed
libraries in arch subdirectories
base/dbd Installed
data base definitions
base/include Installed
header files
base/include/os Installed
os specific header files
base/templates Installed
templates
Build
related components (this section needs work)
base/README* files
base/startup files
.cshrc
EpicsHostArch
epics.bat
.bashrc
…
base/configure
base/config
Building
EPICS base (Unix and Win32)
Unpack file
Unzip and untar the
distribution file. Use WinZip on Windows systems.
Set environment variable
Before you can build or use EPICS R3.14, the environment variable EPICS_HOST_ARCH
must be defined. A perl script EpicsHostArch.pl in the base/startup directory
has been provided to help set EPICS_HOST_ARCH. You should have EPICS_HOST_ARCH
set to your host operating system followed by a dash
and then your host architecture, e.g. solaris-sparc.
Check path requirements
As already mentioned, you must have the perl executable and you
may need C and C++ compilers in your search path. For building base you also
must have echo in your search path. For Unix host builds you also need touch,
cpp, cp, rm, mv, and mkdir in your search path and /bin/chmod must exist. On
some Unix systems you may also need ar and ranlib in you path.
Do
site-specific build configuration
Site configuration
To configure EPICS, you may want to modify the default definitions
in the following files:
configure/CONFIG_SITE - Build choices. Specify your
targets architectures.
configure/CONFIG_SITE_ENV -
Set your environment variable definitions
configure/RELEASE -
TORNADO full path location
Host configuration
To configure each host system, you may override the default
definitions by adding a new file with override definitions into the
configure/os directory. The new file should have the same name as the
distribution file to be overridden except with CONFIG in the name changed to
CONFIG_SITE.
configure/os/CONFIG.<host>.<host> - Host build settings
configure/os/CONFIG.<host>.Common - Host cross build settings
Target configuration
To configure each target system, you may override the default
definitions by adding a new file with override definitions into the
configure/os directory. The new file should have the same name as the
distribution file to be overridden except with CONFIG in the name replaced by
CONFIG_SITE.
configure/os/CONFIG.Common.<target> - Target cross build settings
configure/os/CONFIG.<host>.<target> - Host-target build settings
Build EPICS base
After configuring the build you should be able to
build EPICS base by issuing the following commands in the distribution’s root
directory (base) -
gnumake clean
uninstall
gnumake
The command "gnumake
clean uninstall" will remove all files and directories generated by a
previous build. The command "gnumake" will build and install
everything for the configured host and targets.
It is recommended that you
do a “make clean uninstall” at the root directory of an EPICS directory structure before each complete
rebuild to ensure that all components will be rebuilt.
You can build using a single EPICS directory structure on multiple
host systems and for multiple cross target systems. The intermediate and binary
files generated by the build will be created in separate system subdirectories
and installed into the appropriate separate host/target install directories.
EPICS executables and perl scripts are installed into the
$(INSTALL_LOCATION)/bin/<arch> directories. Libraries are installed into
$(INSTALL_LOCATION)/lib/<arch>. The default definition for
$(INSTALL_LOCATION) is $(TOP) which is the rootdirectory in the directory
structure, base. Temporary objects are stored in O.<arch> source
subdirectories, This allows objects for multiple cross target architectures to
be maintained at the same time. To build EPICS base for a specific host/target
combination you must have the proper host/target c++ cross compiler and target
header files and the base/configure/os directory must have the appropriate
configure files.
Examples
A perl tool, makeBaseApp.pl is included in the
distribution file. This script will create a sample application that then can
be built and then executed to try out this release of base. Also, a perl
script, makeBaseExt.pl, is included in the distribution file. This script will
create a sample extension that can be built and executed. The makeBaseApp.pl
and makeBaseExt.pl scripts are installed into the install location
bin/<hostarch> directory during the base build.
Example
base application (Unix and Windows)
This section briefly explains how to create an
example IOC application in a directory <top>, naming the application
firstApp and the ioc directory ioctarget.
Check Environment variable
Execute the command: echo $EPICS_HOST_ARCH (Unix) or
set EPICS_HOST_ARCH (Windows)
This should display
your workstation architecture, for example solaris-sparc
or win32-x86. If you get an "Undefined variable" error, you should set EPICS_HOST_ARCH to your
host operating system followed by a dash and then your host architecture, e.g.
solaris-sparc. The perl
script EpicsHostArch.pl in the base/startup directory has been provided to help
set EPICS_HOST_ARCH.
Create example Application
Execute the commands:
mkdir
<top>
cd
<top>
<base>/bin/<hostarch>/makeBaseApp.pl
-t example first
<base>/bin/<hostarch>/makeBaseApp.pl
-i -t example target
When prompted for architecture, give one of the
CROSS_COMPILER_TARGET_ARCHS values specified in base/configure/CONFIG_SITE.
<base>/bin/<hostarch>/makeBaseApp.pl
-i -t example host
When prompted for architecture, give the host
architecture, EPICS_HOST_ARCH, value.
where:
<top> is any directory
name you chose,
<base> is the full
path name to EPICS base, and
<hostarch> is your
host architecture (i.e. the output of the echo command above).
Windows Users Note:
Perl scripts are invoked with the command perl <scriptname> on
win95/NT. Perl script names are case sensitive. For example to create an
application on WIN95/NT:
perl
C:\epics\base\bin\win32\makeBaseApp.pl -t example first
Inspect Files
Spend some time looking at the files that appear
under <top>. Do this BEFORE building.
Build
In directory <top>
execute the command: gnumake
Inspect Files
Again look at all the files that appear under
<top>.
Execute the host application
In directory <top>/iocBoot/iochost execute the
command:
../../bin/<hostarch>/example stcmd.hos
Try some of the shell commands (e.g. dbl or dbpr
<recordname>) described in the "IOC Test Facilities" chapter of
the Application Developer's Guide.
Execute the channel access application
While the host application
is running, execute the command:
<mytop>/bin/<hostarch>/caExample
<user>:calcExample
where <mytop> is the full path name to your
application top directory.
Execute a vxWorks target application
First kill the host application so there will be no
channel access record name conflicts because you will be loading the same
database onto the target system.
Set boot parameters
The next step is to set the IOC boot parameters via
the console serial port on your IOC. Life is much easier if you find out how to
connect the serial port to a window on your workstation.
The vxWorks boot parameters
look something like the following:
boot device : xxx
processor
number : 0
host name : xxx
file name : <full path to board
support>/vxWorks
inet on ethernet (e) : xxx.xxx.xxx.xxx:<netmask>
inet on backplane (b) :
host inet (h) : xxx.xxx.xxx.xxx
gateway inet (g) :
user (u) : xxx
ftp password (pw) (blank =
use rsh): xxx
flags (f) : 0x0
target name (tn) : <hostname for this inet
address>
startup script (s) : <top>/iocBoot/ioctarget/st.cmd
other (o) :
The actual values for each field are site and IOC
dependent. Two fields that you can change at will are the vxWorks boot image and
the location of the startup script.
Note that the full path name for the correct board
support boot image must be specified. If bootp is used the same information
will need to be placed in the bootp host's configuration database instead.
Boot
You are now ready to boot your IOC. When your boot
parameters are set properly, just press the reset button on your IOC, or use
the @ command to commence booting. You will find it VERY convenient to have the
console port of the IOC attached to a scrolling window on your workstation.
Test
Try some of the shell commands (e.g. dbl or dbpr
<recordname>) described in the "IOC Test Facilities" chapter of
the Application Developer's Guide.
Execute the channel access application
While the target application is running, on a
workstation in the same subnet at the target system, execute the command:
<mytop>/bin/<hostarch>/caExample
<recordname>
where <mytop> is the full path name to your
application top directory.