From 715b504da7ea5c6a1fef2b0f8a9fb08a0b0befea Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 17 Jul 2002 01:41:24 +0000 Subject: [PATCH] Moved from $(TOP) --- documentation/BuildingR3.13AppsWithR3.14.html | 298 ++++++++++ .../BuildingR3.13ExtensionsWithR3.14.html | 132 +++++ documentation/ConvertingR3.13AppsToR3.14.html | 302 ++++++++++ .../ConvertingR3.14.0alpha2AppsTobeta1.html | 145 +++++ documentation/KnownProblems.html | 135 +++++ documentation/README.1st | 414 ++++++++++++++ documentation/README.html | 538 ++++++++++++++++++ documentation/README.niCpu030 | 34 ++ 8 files changed, 1998 insertions(+) create mode 100644 documentation/BuildingR3.13AppsWithR3.14.html create mode 100644 documentation/BuildingR3.13ExtensionsWithR3.14.html create mode 100644 documentation/ConvertingR3.13AppsToR3.14.html create mode 100644 documentation/ConvertingR3.14.0alpha2AppsTobeta1.html create mode 100644 documentation/KnownProblems.html create mode 100644 documentation/README.1st create mode 100644 documentation/README.html create mode 100644 documentation/README.niCpu030 diff --git a/documentation/BuildingR3.13AppsWithR3.14.html b/documentation/BuildingR3.13AppsWithR3.14.html new file mode 100644 index 000000000..4c9f19362 --- /dev/null +++ b/documentation/BuildingR3.13AppsWithR3.14.html @@ -0,0 +1,298 @@ + + + + + + + + + Instruction on building existing R3 + + + + + + + +
+

+Building EPICS R3.13 applications with R3.14.0beta1 base

+ +


This document describes how to modify a R3.13 vxWorks application +so that it builds with release R3.14.0beta1.  It describes an easy +way to modify applications subject to the following restrictions: +

+Ultimately applications should be converted to use the new configure rules +so that the OSI features are available. +

+Gnumake clean uninstall

+ +
At the top of the application execute: +
"gnumake clean uninstall"
+to remove all files and directories created by earlier builds.
+ +

+Update RELEASE

+ +
Change  the EPICS_BASE definition to point to +the R3.14 base release. All hardware support and some soft support is now +unbundled. For example the sequencer is unbundled. You must obtain and +build all required unbundled products before you can build the application. +The location of each unbundled product must be specified in <top>/config/RELEASE.
+ +

+Update target arch definitions

+ +
Change any target arch specification in config/CONFIG to new +R3.14 target arch specification. Look in the R3.14 base/bin directory to +see the target arch names. +

For example, in config/CONFIG change +

CROSS_COMPILER_TARGET_ARCHS = mv167
+to +
CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
+In the iocBoot/*/Makefile files, change +
ARCH=<old arch name>
+to +
ARCH=<new arch name>
+and do a "gnumake" in the iocBoot directory to update the cdCommands +files.
+ +

+State Notation Language changes

+ +
snc is no longer in base. If snc is used in your application, +you must download and build the seq module with baseR3.14.0beta1. See the +Application Developer's Guide to see how to build sequence programs.
+ +
Change +
INSTALLS=seq
+to +
LIBOBJS += $(SEQ_BIN)/seqLibrary.o
+ +


in application src/Makefile.Vx files to link seq library into your +application library,. +
Also add +

SEQ=<full path to seq module directory>
+to config/RELEASE. +
Also remove +
ld < seq
+from the st.cmd files in the iocBoot subdirectories.
+ +

+iocCore changes

+ +
iocCore has been renamed to iocCoreLibrary.o. +
Change +
INSTALLS=iocCore
+to +
LIBOBJS += $(EPICS_BASE_BIN)/iocCoreLibrary.o
+in your application src/Makefile.Vx files . +
Also remove +
ld < iocCore
+from the st.cmd files in the iocBoot subdirectories.
+ +

+Library db changes

+ +
The Db library name was changed to dbStaticHost for host builds +and dbStaticIoc for ioc builds. +
Change +
PROD_LIBS+=Db
+to +
PROD_LIBS+=dbStaticHost
+and +
Db_DIR=$(EPICS_BASE_LIB)
+to +
dbStaticHost_DIR=$(EPICS_BASE_LIB)
+in your application src/Makefile.Host files.
+ +

+VxWorks C++ munched libraries and object files

+ +
Since R3.14 contains C++ code, the build rules were changed +to create a corresponding munched file for every vx object file built. +The objects files can be combined to form libraries but the munched files +must be loaded into vxWorks. In all st.cmd files add the suffix ".munch" +to the ld lines where object files were previously loaded. For example +change +
ld < exampleLib
+to +
ld < exampleLibrary.munch
+
+ +

+recGbl calls

+ +
You may need to add the line  "#include "recGbl.h" +to any source files that have recGbl* calls so that the file will compile +without errors.
+ +

+Record support changes

+ +
The steppermotor, scan, and pid records are no longer in base. +If your application does not use these record types, comment out or remove +references to them in base.dbd and baseLIBOBJS. If these record types are +used by your application you must download and build the modules with R3.14 +base, add appropriate module definitions to your application's config/RELEASE +fileand change the LIBOBJS definitions. For example +
add +
PID=<full path to modules directory>/pid
+to config/RELEASE. +
Remove +
LIBOBJS += $(EPICS_BASE_BIN)/pidRecord.o
+from baseLIBOBJS, +
and add +
LIBOBJS += $(PID_BIN)/pidRecord.o
+to your application src/Makefile. +

You should consider changing any existing old steppermotor records to +the new EPICS  motor +record  module supported by Beamline Controls and Data Acquisition +at APS.

+ +

+RecDynLink.o and devPtSoft changes

+ +
recDynLink.o and devPtSoft.o are no longer in base. Remove +references to them in base.dbd and baseLIBOBJS if they are not used in +application.
+ +

+Hardware support changes

+ +
All hardware support (dev, drv and dbd files) has been unbundled +from base R3.14. This support includes the files symb, symb.dbd, drvHp1404a.o, +drvEpvxiMsg.o, and drvEpvxi.o.  If they are not used in your +application, comment out references to these files in base.dbd and baseLIBOBJS. +

Hardware support files now exist as separate modules available for download +from the EPICS www home page at +ANL. You must now download all the hardware support modules needed +for your application, build the modules with R3.14 base,  add the +appropriate module full path definitions to your application config/RELEASE +file, and change LIBOBJS location definition $(EPICS_BASE_BIN) +to the module definition bin directory in your application src directory +files. +

For example, remove +

LIBOBJS+=$(EPICS_BASE_BIN)/symb
+from baseLIBOBJS and add +
LIBOBJS+=$(SYMB_BIN)/symb
+to your application src/Makefile, +
and add the line +
SYMB=<full path definition for the built module SYMB>
+into your application config/RELEASE file . +

After a gnumake in the symb module followed by a gnumake in the application +config directory, the definitions SYMB_BIN and SYMB_LIB +will be created,  the directory $(SYMB)/include will be added to the +include directories on the compiler command lines  (in the INSTALL_INCLUDES +definition)  and the directory $(SYMB)/dbd will be added to the dbd +search directories on the dbExpand command lines (in the INSTALL_DBDFLAGS +definition).

+ +

+dbLoadtemplate tool changes

+ +
The host tool dbLoadTemplate has been replaced by a new extension, +msi. dbLoadTemplate is still supported on iocs. Build the msi extension +with base R3.14 and change the following definitions in your application +files. +

In config/RULES.Db replace the line +

DBLOADTEMPLATE=$(EPICS_BASE_HOST_BIN)/dbLoadTemplate$(EXE)
+with +
MSI = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/msi$(HOSTEXE) \
+   (EPICS_EXTENSIONS)/bin/$(HOST_OS_CLASS)/msi$(HOSTEXE)) msi$(HOSTEXE))
+and change line: +
@$(DBLOADTEMPLATE) $< > $@
+to +
@$(MSI) $< > $@
+Also, if dbLoadTemplate was used by your application,  add the definition +
+
EPICS_EXTENSIONS=<full path name to epics extensions directory>
+
+to your application config/RELEASE file.
+depends changes +

     Remove any SRCS.c and SRCS.cc definitions in +your application src/Makefile..*files. The depends rule no longer uses +these definitions. + + diff --git a/documentation/BuildingR3.13ExtensionsWithR3.14.html b/documentation/BuildingR3.13ExtensionsWithR3.14.html new file mode 100644 index 000000000..0ff0d73a4 --- /dev/null +++ b/documentation/BuildingR3.13ExtensionsWithR3.14.html @@ -0,0 +1,132 @@ + + + + + + + + + +

+

+Building EPICS R3.13 extensions with R3.14 base

+ +


EPICS R3.13 extensions have both a Makefile and a Makefile.Host +in the build directories and the EPICS R3.13 extension tree has an extensions/config +directory. +

+Preliminary steps for all extensions

+ +
+
  • +Download the latest version (10/25/00) of the extensions/config files, +extensionsConfig.tar.gz,  from the APS EPICS www page.
  • + +
  • +Make certain that you have set the HOST_ARCH environment variable.
  • + +
  • +Set EPICS_BASE in extensions/config/RELEASE to the full path location of +a built R3.14 base.
  • + +
  • +BASE_3_14 is now defined in the base/config/CONFIG_BASE_VERSION.  +The commented BASE_3_14 definition can be removed from extensions/config/RELEASE.
  • +
    + +

    +Building downloaded APS distribution extensions with base R3.14

    + +
    +
  • +Download the latest version (10/25/00) of extensions distributed from the +APS EPICS www page. The latest versions of the extensions should build +with both R3.13 and R3.14. Note that the order of building extensions is +important, i.e. some extensions depend on other extensions being built +first. The extensions/config/CONFIG_EXTENSIONS file contains notes on extension +dependancies and contains a definition of DIRS (used by extensions/src/Makefile) +with the proper order for building the APS distributed extensions.
  • + +
  • +Executing gnumake at the root level of the extensions tree or in the src +directory should build the APS extensions in the proper order.
  • +
    + +

    +Building your extensions with base R3.14

    + +
    +
  • +Library Db renamed
  • + +
    Library Db has been renamed to dbStaticHost in EPICS base R3.14. In +some extensions lib Db is not used and Db can be removed from the USR_LIBS +(or PROD_LIBS) line. If the library is needed ( you get unresolved items +after removing Db), the following lines should be added to Makefile.Host. +
    ifdef BASE_3_14 +
    USR_LIBS += dbStaticHost +
    dbStaticHost_DIR = $(EPICS_BASE_LIB) +
    else +
    USR_LIBS += Db +
    Db_DIR = $(EPICS_BASE_LIB) +
    endif
    + +
  • +Target architecture specifications changed
  • + +
    Since target architecture specifications have been changed (solaris +to solaris-sparc, win32 to win32-x86, ...) Makefile.Host references to +and tests on T_A have to be changed.  In most cases T_A can be replaced +by OS_CLASS.  Since HOST_ARCH will eventually be phased out, it would +be a good idea to change any Makefile.Host references to HOST_ARCH to OS_CLASS +if possible. +
    For example change +
    ifeq ($(T_A),solaris) +
    RPCFLAGS = -K -1 +
    endif
    +to +
    ifeq ($(OS_CLASS),solaris) +
    RPCFLAGS = -K -1 +
    endif
    + +
  • +New ca_set_puser
  • + +
    Statements of the form: ca_puser(chid) = xyz; should to be +changed to:  ca_set_puser(chid,xyz); +
      +
  • +Extern C around includes
  • + +
    Remove any extern "C" braces around #includes of EPICS base header +files. +
    For example change +
    extern "C" { +
    #include "cadefs.h" +
    } /* end extern C */
    +to +
    #include "cadefs.h"
    + +
  • +Infrequently used R3.13 timestamp functions unbundled from base
  • + +
    Some infrequently used R3.13 timestamp functions and macro definitions +have been removed from EPICS base and now exist in a library, ts, created +and installed in the ar extension.  The only ANL distributed extension +that uses these unbundled functions and macros  is cau. The two R3.13 +functions tsStampToText and tsLocalTime along with the definitions TS_TEXT_MONDDYYYY +and TS_TEXT_MMDDYY have been retained in R3.14 for extension compatibility +purposes. +
    If your extension gets undefines for TS_* usage and ts* function calls +when built with R3.14, you must obtain and build the ar extension. Add +an #include for tsSubr.h to your extension source code and add library +ts to PROD_LIBS or USR_LIBS in your Makefile.Host as follows: +
    #include "tsSubr.h" +

    ifdef BASE_3_14 +
    PROD_LIBS += ts +
    ts_DIR = $(EPICS_EXTENSIONS_LIB) +
    endif

    +
    + + + diff --git a/documentation/ConvertingR3.13AppsToR3.14.html b/documentation/ConvertingR3.13AppsToR3.14.html new file mode 100644 index 000000000..1be3ef120 --- /dev/null +++ b/documentation/ConvertingR3.13AppsToR3.14.html @@ -0,0 +1,302 @@ + + + + + + + + + +
    +

    +Converting an EPICS R3.13 application to R3.14.0.beta1

    + +


    This document describes how to convert a R3.13 vxWorks application +so that it builds with release R3.14.0beta1.  It describes procedures +such that: +

    + + + +

    +Gnumake clean uninstall

    + +
    First do a gnumake clean uninstall in the application's root +directory to remove all files created by earlier builds.
    + +

    +Create a new R3.14 application

    + +
    mkdir <top> +
    cd <top> +
    <full path to R3.14.0beta1 base>/bin/<host_arch>/makeBaseApp.pl +-t example example
    + +

    +Copy all *App and iocBoot directories and files to the new <top> directory

    + +
    cd <oldtop> +
    find *App iocBoot -print | cpio -pvmd <fullpath name to new +top>
    + +

    +Modify <top>/configure/RELEASE

    + +
    Copy definitions of external modules excluding EPICS_BASE and +TEMPLATES_TOP from old application RELEASE file. +
    If sequence programs (*.st or *.stt files) exist in your application, +add the SNCSEQ location definition for the R3.14 seq external module +
    SNCSEQ =<full path to seq module top>
    +The R3.14 seq module must exist and be built with EPICS base R3.14.0beta1.
    + +

    +Modify the Makefiles in <top>/*App directories.

    + +
    Change     include $(TOP)/config/CONFIG_APP +
    to     include $(TOP)/configure/CONFIG +

    Change     include $(TOP)/config/RULES_DIRS +
    to     include $(TOP)/configure/RULES_DIRS

    + +

    +Modify the Makefiles in <top>/*App/*Db directories.

    + +
    Remove existing Makefile +
    Rename Makefile.Host to Makefile +
    Modify Makefile as follows: +

    Change     TOP=../../.. +
    to     TOP=../.. +

    Change    include $(TOP)/config/CONFIG_APP +
    to     include $(TOP)/configure/CONFIG +

    Change     include $(TOP)/config/RULES.Db +
    to include $(TOP)/configure/RULES +

    Place all definitions between the include lines. +

    Place any rules after the last include line.

    + +

    +Modify the Makefiles in <top>/*App/src directories.

    + +
    Remove existing Makefile +
    Rename Makefile.Host to Makefile +
    Modify Makefile as follows: +

    Change TOP=../../.. +
    to     TOP=../.. +

    Change     include $(TOP)/config/CONFIG_APP +
    to     include $(TOP)/configure/CONFIG +

    Change     include $(TOP)/config/RULES.Host +
    to     include $(TOP)/configure/RULES +

    Change     PROD_LIBS = <name> +
    to     <prod name>_LIBS = dbStaticHost +
    where  <prod name> is a specifified product to be +built. +

    Change  library name Db to dbStaticHost. +
    Change PROD_LIBS = Db +
    to  <prodname>_LIBS += dbStaticHost +
    and Db_DIR = $(EPICS_BASE_LIB) +
    to     dbStaticHost_DIR = $(EPICS_BASE_LIB) +

    Change     USER_DBDFLAGS +
    to     USR_DBDFLAGS +

    Change     RECTYPES +=  xxxRecord.h +
    to     DBDINC += xxxRecord +

    Change     DBDNAME = <name>App.dbd +
    to     DBD += <name>.dbd +

    Remove all DBDEXPAND  lines. +

    Change  PROD = <prodname> +
    to PROD_HOST = <prodname> +

    Change  SRCS.c += <name> +
    to <prodname>_SRCS += <name> +
    or <libname>_SRCS += <name> +

    Add the contents of Makefile.Vx to Makefile removing the include lines +and the TOP definition.

    + +
    Change     LIBNAME = <libname>Lib +
    to     PROD_vxWorks = <libname> +

    Remove line  -include ../baseLIBOBJS +

    Remove  line    INSTALLS = iocCore seq +

    Change all SRCS.c += ../<name>.c lines +
    to   <prodname>_SRCS += <name>.c +
    if the source files exist in the current directory. +

    Change all *OBJS += <name>.o      +lines +
    to   <prodname>_SRCS += <name>.c +
    or  <prodname>_SRCS += <name>.cc +
    if the c/c++ source files exist in the current directory. +

    Change    LIBOBJS += <seq_program_name>.o      +lines +
    to   <prodname>_SRCS += <seq_program_name>.stt +
    or  <prodname>_SRCS += <seq_program_name>.st +

    Add the lines +

    #<name>_LIBS += seq +
    #<name>_LIBS += pv +
    #seq_DIR    = $(SNCSEQ_LIB) +
    #pv_DIR     = $(SNCSEQ_LIB) +

    <name>_LIBS += recIoc +
    <name>_LIBS += softDevIoc +
    <name>_LIBS += testDevIoc +
    <name>_LIBS += iocsh +
    <name>_LIBS += miscIoc +
    <name>_LIBS += rsrvIoc +
    <name>_LIBS += dbtoolsIoc +
    <name>_LIBS += asIoc +
    <name>_LIBS += dbIoc +
    <name>_LIBS += registryIoc +
    <name>_LIBS += dbStaticIoc +
    <name>_LIBS += ca +
    <name>_LIBS += Com

    +where <name> is the  name in the PROD_vxWorks +definition, and uncomment the first four lines if you have sequence programs +(.st or .stt files) in the current directory. +

    Place all macro definitions between the include lines. +

    Place any rules after the last include line.

    + +

    +Modify the Makefiles in <top>/iocBoot directory.

    + +
    Change include $(TOP)/config/CONFIG_APP +
    to     include $(TOP)/configure/CONFIG +

    Remove the line DIRS += $(wildcard *ioc*) +

    Change include $(TOP)/config/RULES.iocBoot +
    to     include $(TOP)/configure/RULES.iocBoot

    + +

    +Modify the Makefiles in <top>/iocBoot/ioc* directories.

    + +
    Change include $(TOP)/config/CONFIG_APP +
    to     include $(TOP)/configure/CONFIG +

    Change include ARCH = <old arch specification e.g. mv167> +
    to     include ARCH = <new arch specificatio +e.g. vxWorks-68040> +

    Change include $(TOP)/config/RULES.ioc +
    to     include $(TOP)/configure/RULES.ioc +

    Add the following rule at the end of the Makefile. +

    buildInstall: cdCommands
    +
    + +

    +Modify st.cmd in <top>/iocBoot/ioc* directories.

    + +
    Remove the lines
    + +
    +
    +
    ld < seq
    + +
    ld < iocCore
    +
    +Change       ld < <libname>Lib +
    to      ld < <libname>.munch +

    Change  load statements  for db and dbd files from +

    cd startup +
    dbLoadDatabase("../../dbd/exampleApp.dbd") +
    dbLoadRecords("../../db/dbExample1.db","user=jba") +
    dbLoadRecords("../../db/dbExample2.db")
    +to +
    cd top +
    dbLoadDatabase("dbd/example.dbd") +
    registerRecordDeviceDriver(pdbbase) +
    dbLoadRecords("db/dbExample1.db","user=jba") +
    dbLoadRecords("db/dbExample2.db")
    +
    + +

    +Record support changes

    + +
    The steppermotor, scan, and pid records are no longer in base.  +If these records are not used in your application, comment out references +to them in base.dbd. If these record types are used at your site, they  +should be downloaded and built with base R3.14 by your EPICS administrator. +To update the R3.14 location of these record types in your application +you must  add appropriate module definitions to your application's +config/RELEASE file and change the LIBOBJS definitions. +

    For example add

    + +
             PID=<full +path to modules directory>/pid +

    to config/RELEASE. +
    Remove

    + +
             LIBOBJS ++= $(EPICS_BASE_BIN)/pidRecord.o +

    from baseLIBOBJS, and add

    + +
    +
    LIBOBJS += $(PID_BIN)/pidRecord.o
    +to your application src/Makefile.
    + +
    You should consider changing any existing old steppermotor +records to the new EPICS  motor record  module supported by Beamline +Controls and Data Acquisition at APS.
    + +

    +RecDynLink.o and devPtSoft changes

    + +
    recDynLink.o and devPtSoft.o are no longer in EPICS base and +now exist as separate EPICS modules.You must now add the appropriate module +full path definitions to your application config/RELEASE file, and change +LIBOBJS +location definition $(EPICS_BASE_BIN) to the module definition +bin directory in your application src directory files.  See "Hardware +support changes" below for instructions.
    + +

    +Hardware support changes

    + +
    All hardware support (dev, drv and dbd files) except soft support +has been unbundled from base R3.14. This support includes the files symb.dbd, +drvHp1404a.o, drvEpvxiMsg.o, and drvEpvxi.o. If these are not used by your +application, comment out references to them in base.dbd.
    + +
    Hardware support now exists as separate EPICS modules. The +hardware support for your site should be downloaded and built with base +R3.14 by your EPICS administrator. You must now add the appropriate module +full path definitions to your application config/RELEASE file, and change +LIBOBJS +location from $(EPICS_BASE_BIN) to the module  bin directory +in your application src directory files. +

    For example, remove

    + +
             LIBOBJS+=$(EPICS_BASE_BIN)/symb
    + +
    from baseLIBOBJS and add
    + +
             LIBOBJS+=$(SYMB_BIN)/symb
    + +
    to your application src/Makefile, +
    and add the line
    + +
    +
    SYMB=<full path definition for the built module SYMB>
    +
    + +
    into your application config/RELEASE file .
    + +

    +dbLoadtemplate tool changes

    + +
    The host tool dbLoadTemplate has been replace by a new EPICS +extension, msi, which should be downloaded and built with base R3.14 by +your EPICS administrator. dbLoadTemplate is still supported on iocs.  +If, in your application, db files are created from template and substitution +files you should  add the definition +

             EPICS_EXTENSIONS=<full +path name to epics extensions directory> +

    to your application config/RELEASE file.

    + +
    +
     
    + +
    +
    
    +
    +
    + +
      + + diff --git a/documentation/ConvertingR3.14.0alpha2AppsTobeta1.html b/documentation/ConvertingR3.14.0alpha2AppsTobeta1.html new file mode 100644 index 000000000..3d3a19e23 --- /dev/null +++ b/documentation/ConvertingR3.14.0alpha2AppsTobeta1.html @@ -0,0 +1,145 @@ + + + + + + + + + +
    +

    +Converting an EPICS R3.14.0 alpha2 application to beta1

    + +


    This document describes how to convert a R3.14.0alpha2 application +so that it builds with release R3.14.0beta1. +

    +Gnumake clean uninstall

    + +
    First do a "gnumake clean uninstall" in the application's +root directory to remove all files created by earlier builds.
    + +

    +Replace configure/RULES.ioc and configure/Makefile

    + +
    The rules defined in RULES.ioc have changed slightly, and new +applications are now given a wrapper version which just includes $(EPICS_BASE)/configure/RULES.ioc. +The new configure/Makefile contains an additional macro that causes the +contents of the configure/RELEASE file to be checked at build time for +consistency with all the support applications that it references. These +files should be replaced with copies of the new versions from <base>/templates/makeBaseApp/top/configure
    + +

    +Remove baseLIBOBJS

    + +
    Record and device support from base now exists in archive libraries +so baseLIBOBJS is no longer needed and the file and references to it in +the Makefile can be deleted. e.g. remove +
    -include ../baseLIBOBJS
    +and the file baseLIBOBJS. If there are no LIBOBJS definitions in the Makefile, +also remove +
    example_OBJS += $(LIBOBJS)
    +
    + +

    +Libraries recIoc, softDevIoc, and testDevIoc

    + +
    Add the new record and dev support libraries to <name>App/src/Makefile, +i.e. add the lines +
    example_LIBS += recIoc +
    example_LIBS += softDevIoc +
    example_LIBS += testDevIoc
    +and remove any references to iocLibrary, e.g. remove the line +
    example_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary
    +The order of references to base libraries is important so place recIoc +and softDevIoc  before the the other base library references. +

    If you are building on a WIN32 host add the following lines instead: +

    # Use win32 object libs for registered support +
    example_LIBS_win32 += recIocObj +
    example_LIBS_win32 += softDevIocObj +
    example_LIBS_win32 += testDevIocObj +
    example_LIBS_DEFAULT += recIoc +
    example_LIBS_DEFAULT += softDevIoc +
    example_LIBS_DEFAULT += testDevIoc
    +
    + +

    +iocrf renamed to iocsh

    + +
    Change all references to ioccrf in your application src directories +to iocsh e.g. +

    change #include "ioccrf.h" +
    to  #include "iocsh.h" +

    change ioccrf(argv[1]); +
    to  iocsh(argv[1]); +

    and change  ioccrf(NULL); +
    to iocsh(NULL); +

    in <name>App/src/exampleMain.c.

    + +

    +PROD changes

    + +
    PROD targets will now be built for all target architectures. +If a product should be built only for host architectures change PROD to +PROD_HOST .e.g.  in your application src Makefiles +
    change PROD += caExample +
    to  PROD_HOST += caExample +
    and +
    change PROD = sncExample +
    to PROD_HOST += sncExample
    +
    +LIBRARY and PROD changes +
    The meaning of LIBRARY and PROD have now changed. For vxWorks, +LIBRARY now means an archive library, OBJLIB is now a combined object file +(only needed for R3.13 compatibility) and PROD is now a combined object +file with library references resolved and will have a corresponding .munch +file created. Thus, in your application src Makefiles, +
    change LIBRARY_vxWorks = <name> +
    to PROD_vxWorks = <name> +
    or +
    remove the lines LIBRARY_vxWorks = <name> +
    and PROD_RTEMS = <name> +
    and change PROD = <name> +
    to PROD_IOC = <name>.
    +In the iocBoot/ioc<name>/st.cmd files, +
    change ld < <name>Library.munch +
    to ld < <name>.munch
    +A SRCS definition is now required for every PROD  and LIBRARY source +file to determine correct header file dependancies. This is true even if +there is only one source file for the PROD or LIBRARY . Thus, for the PROD +caExample in your src Makefile, add  the line +
     caExample_SRCS += caExample.c
    +
    + +

    +registerRecordDeviceDriver changes

    + +
    The created file registerRecordDeviceDriver.cpp is now used +for all target architectures. Thus in your application src Makefiles +
    change example_SRCS_DEFAULT += example_registerRecordDeviceDriver.cpp +
    to  example_SRCS += example_registerRecordDeviceDriver.cpp +
     
    +
    + +

    +RTEMS-specific pathname changes

    + +
    1. The RTEMS TFTP remote filesystem no longer ignores leading +`../' components in path names.  All st.cmd file lines with path names +of the form dbLoadRecords("../../db/dbExample1.db","user=norume") +
    must be changed to +
    dbLoadRecords("db/dbExample1.db","user=norume") +

    The makeBaseApp.pl script distributed with R3.14-beta1 creates st.cmd +scripts with the proper path names. +

    2. The RTEMS TFTP remote filesystem supports a limited set of chdir +operations. +
    All paths passed to chdir (or to the IOC shell `cd' command) must end +in a `/' +
    character.

    + +
    +
     
    +
    + + + diff --git a/documentation/KnownProblems.html b/documentation/KnownProblems.html new file mode 100644 index 000000000..e4e49dbbb --- /dev/null +++ b/documentation/KnownProblems.html @@ -0,0 +1,135 @@ + + + + + + No title + + + + +

    EPICS base R3.13.0beta1: Known Problems

    + +

    Device Support, which does not implement special_linconv, is broken

    +

    In release beta1 changes were made to allow ESLO EOFF to be +database design fields. Because of changes that were made to aiRecord and +aoRecord device support that does not implement special_linconv +may no longer work.

    +

    To fix aiRecord.c, in init_record replace

    +
        if ((pai->linr == menuConvertLINEAR) && pdset->special_li
    +nconv) {
    +
    +

    by

    +
        if ((pai->eslo==1.0) && (pai->eoff==0.0)) {
    +
    +

    To fix aoRecord.c, in init_record replace

    +
        if ((pao->linr == menuConvertLINEAR) && pdset->special_li
    +nconv) {
    +
    +

    by

    +
        if ((pao->eslo==1.0) && (pao->eoff==0.0)) {
    +
    + +

    CA puts to disabled record

    +

    If a CA client issues a put to a disabled record then, when the record is ena +bled, database puts to the record will not make the record process until a CA pu +t is again issued. The fix is:

    +
    +diff -c -r1.113 dbAccess.c
    +*** dbAccess.c	2002/04/08 14:46:13	1.113
    +--- dbAccess.c	2002/05/02 20:09:18
    +***************
    +*** 614,619 ****
    +--- 614,620 ----
    +  		if(*ptrace) printf("disabled:  %s\n",precord->name);
    +  		/*take care of caching and notifyCompletion*/
    +  		precord->rpro = FALSE;
    ++ 		precord->putf = FALSE;
    +                  callNotifyCompletion = TRUE;
    +  		/* raise disable alarm */
    +  		if (precord->stat==DISABLE_ALARM) goto all_done;
    +
    + +

    casEventMask

    + +

    The multiply-defined fatal error of the type

    +
    ld: fatal: symbol `resTable<casEventMaskEntry,
    +    stringId>::tableSize(void) const' is multiply-defined:
    +    (file ../../../../../lib/solaris-sparc->gnu//libcas.a(caServerI.o)
    +    and file ../../../../../lib/solaris-sparc-> gnu//libcas.a(casEventMask.o));
    +
    + +

    in the build of base can be fixed by removing line 43

    +
    template class resTable < casEventMaskEntry, stringId >;
    +
    + +

    from base/src/cas/generic/casEventMask.cc.

    + +

    config - Old build rules

    + +

    The following files should be added in the base/config directory to allow +builds of R3.13 (Makefile.Host) extensions with beta1.

    +
    win32-x86-borland builds need:
    +File name:   CONFIG.Host.win32-x86-borland
    +File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.Borland
    +File name:   CONFIG_HOST_ARCH.win32-x86-borland
    +File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.Borland
    +File name:   CONFIG_SITE.Host.win32-x86-borland
    +File contents:   -include $(EPICS_BASE)/config/CONFIG_SITE.Host.Borland
    +
    +hpux-m68k builds need:
    +File name:   CONFIG.Host.hpux-m68k
    +File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.hp700
    +File name:   CONFIG_HOST_ARCH.hpux-m68k
    +File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.hp700
    +File name:   CONFIG_SITE.Host.hpux-m68k
    +File contents:   -include $(EPICS_BASE)/config/CONFIG_SITE.Host.hp700
    +
    +osf-alpha builds need:
    +File name:   CONFIG.Host.osf-alpha
    +File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.alpha
    +File name:   CONFIG_HOST_ARCH.osf-alpha
    +File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.alpha
    +
    +sun4-sparc builds need:
    +File name:   CONFIG.Host.sun4-sparc
    +File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.sun4
    +File name:   CONFIG_HOST_ARCH.sun4-sparc
    +File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.sun
    +
    + +

    configure - New build rules

    + +

    The following change is needed for shared library builds on Unix hosts.

    +
    Index: CONFIG_BASE
    +===================================================================
    +RCS file: /net/phoebus/epicsmgr/cvsroot/epics/base/configure/CONFIG_BASE,v
    +retrieving revision 1.32
    +diff -r1.32 CONFIG_BASE
    +8a9
    +> EPICS_BASE_HOST_LIB = $(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)
    + +

    vxWorks TIMEZONE pentium

    + +

    If the name of the timezone has more than a few characters a crash can +occur on pentium vxWorks iocs. See ansiTime in the vxWorks reference manual +for details about TIMEZONE.

    + +

    epicsReadLine

    + +

    src/libCom/osi/os/default/epicsReadline.c used a char variable to hold the +return value from getc(), and compared this against EOF. getc() returns int +not char because ANSI C allows char to be unsigned if the architecture finds +that easier, thus EOF can never be stored in a char on a PowerPC CPU. char +should be changed to int or signed char.

    + +

    RTEMS and NTP

    + +

    The RTEMS startup routine waits until a time synchronization packet is +received from an NTP server. This causes the RTEMS intialization to loop +endlessly if there is no NTP server on the network. This problem has been +fixed in the CVS version by allowing the initialization to time out after a +minute or so and to set the IOC time to January 1, 2001.

    +======= + diff --git a/documentation/README.1st b/documentation/README.1st new file mode 100644 index 000000000..39077c872 --- /dev/null +++ b/documentation/README.1st @@ -0,0 +1,414 @@ +README + + Installation Instructions + + EPICS base + + Release 3.14.0beta1 + +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 for the following targets. If you are trying to build EPICS base on a + different host or for a different target machine you must get the proper + host/target cross compiler and header files and you will have to create + and add the appropriate new 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 platforms (operating system - architecture - ) + + solaris-sparc + solaris-sparc-gnu + linux-x86 + win32-x86 + win32-x86-borland + + Cross compile target platforms (operating system - architecture) + + vxWorks-486 + vxWorks-68040 + vxWorks-68040lc + vxWorks-68060 + vxWorks-ppc603 + vxWorks-ppc604 + vxWorks-pentium + RTEMS-gen68360 + RTEMS-mvme167 + RTEMS-pc386 + +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 definitions of ACC and + CCC in base/configure/os/CONFIG.. 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 or + base/configure/RELEASE. file. You will also need one or + more board support packages. Consult the vxWorks documentation for + details. + + Optional GNU compiler requirement for solaris-sparc and + win32-x86 hosts + If you have state notation language source files (*.st files) which require + c preprocessing before conversion to c source, gcc must be in your path. + +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.htm 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 + + http://www.aps.anl.gov/epics + + 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 istribution + base/config R3.13 compatibility build configuration files + base/config/tools Perl and shell scripts used in the R3.13 build + 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/copyright Text files describing software copyrights + 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/db/test Database access tests + base/src/dbStatic Static database access + base/src/dbtools Database dbLoadTemplate tools + base/src/dev Device support (softDev and testDev) + base/src/gdd General data descriptor + base/src/iocsh Ioc shell command interpreter + 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/cxxTemplates C++ templates and templates tests + 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/taskwd Task watchdog + base/src/libCom/test Test tools (timer, semBinary, semMutex,fdmgr, ?) + base/src/libCom/timer Timer + base/src/libCom/tsDefs R3.13 time stamp definitions and routines + base/src/libCom/ring ringPointer: First in first out circular buffers + base/src/libCom/cppStd epicsList: Lists of pointers to objects + base/src/makeBaseApp Perl tool+templates to create ioc app dvl tree + base/src/makeBaseExt Perl tool+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/startup Scripts for setting up path and environment + + Install directories created by the build: + + base/bin Installed scripts and executables in subdirs + 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 + + base/README* files + README.htm Instructions for setup and building epics base + (i.e. this document) + README.WIN32 Microsoft WIN32 specific instructions + README.cxxTemplates Information about C++ templates in EPICS base + README.niCpu030 NI cpu030 specific instructions + + base/startup directory - contains scripts to set environment and path + EpicsHostArch c shell script to set EPICS_HOST_ARCH env variable + EpicsHostArch.pl perl script to set EPICS_HOST_ARCH env variable + Site.profile bourne shell script to set path and env variables + Site.cshrc c shell script to set path and env variables + borland.bat WIN32 bat file to set path and env variables + win32.bat WIN32 bat file to set path and env variables + + base/configure directory - contains build definitions and rules + CONFIG.CrossCommon Cross build definitions + CONFIG.gnuCommon Gnu compiler build definitions for all archs + CONFIG_ADDONS Definitions for and DEFAULT options + CONFIG_BASE EPICS base tool and location definitions + CONFIG_BASE_VERSION Definitions for EPICS base version number + CONFIG_COMMON Definitions common to all builds + CONFIG_ENV Definitions of EPICS environment variables + CONFIG_SITE Site specific make defintions + CONFIG_SITE_ENV Site defaults for EPICS environment variables + CONFIG Includes configure files and allows variable overrides + RELEASE Location of external products such as Tornado II + RULES Includes appropriate rules file + RULES.Db Rules for database and database definition files + RULES_ARCHS Definitions and rules for building architectures + RULES_BUILD Build and install rules and definitions + RULES_DIRS Definitions and rules for building subdirectories + RULES_JAVA Definitions and rules for java jars and classes + RULES_TOP Rules specific to a dir (uninstall and tar) + Sample.Makefile Sample makefile with comments + + base/configure/os directory - contains os-arch specific definitions + CONFIG.. Specific host-target build definitions + CONFIG.Common. Specific target definitions for all hosts + CONFIG..Common Specific host definitions for all targets + CONFIG.UnixCommon.Common Definitions for Unix hosts and all target + CONFIG..vxWorksCommon Specific host definitions for all vx targets + CONFIG_COMPAT R3.13 arch compatibility definitions + CONFIG_SITE.. Site specific host-target definitions + CONFIG_SITE.Common. Site specific target defs for all hosts + CONFIG_SITE..Common Site specific host defs for all targets + + base/configure/tools directory - contains Perl scripts used for the build + MakeReleae Unix shell script to create a release tar file + convertRelease.pl Performs consistancy checks on RELEASE files + cp.pl This Perl script copies an existing file + installEpics.pl Installs built files into install directories. + makeDependsTargets.pl Creates targets of include dependency files + makeMakefile.pl Creates a Makefile in O. dirs + makeMakefileInclude.pl Creates file to be included by Makefile + mkdir.pl Creates a directory (like Unix mkdir) + mkmf.pl Generates dependencies from include stmnts + munch.pl Creates a ctdt.c file for vxWorks targets + mv.pl Renames an existing file. + replaceVAR.pl Changes CapFast VAR(xxx) to $(xxx) notation + rm.pl Quietly removes an existing file. + +Building EPICS base (Unix and Win32) + + Unpack file + + Unzip and untar the distribution file. Use WinZip on + Windows systems. + + Set environment variable + + Files in the base/startup directory have been provided to help + set required path and other environment variables . + + EPICS_HOST_ARCH + 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. If you are not using the OS vendor's + c/c++ compiler for host builds, you will need another dash + followed by the alternate compiler name (e.g. "-gnu" for GNU + c/c++ compilers on a solaris host or "-borland" for Borland + c/c++ compilers on a WIN32 host) . See configure/CONFIG_SITE + for a list of supported EPICS_HOST_ARCH values. + + PERLLIB + On WIN32, some versions of Perl require that the + environment variable PERLLIB be set to . + + PATH + 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 your path, and the c compiler may require ld in your path. + + Unix LD_LIBRARY_PATH + If you plan to build EPICS base shared libraries instead of + archive libraries, on Unix systems you will need to add + fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) to + your LD_LIBRARY_PATH environment variable. + + Win32 PATH + On WIN32 systems, building shared libraries is the default + setting and you will need to add fullpathname to + $(INSTALL_LOCATION)/bin/$(EPICS_HOST_ARCH) to your path. + Building shared libraries is determined by the value of the + macro SHARED_LIBRARIES in CONFIG_SITE (either YES or NO). + + + 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 target archs. + configure/CONFIG_SITE_ENV Environment variable defaults + configure/RELEASE TORNADO 2 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 build settings + configure/os/CONFIG..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 cross settings + configure/os/CONFIG.. - Host-target settings + + R3.13 compatibility configuration + To configure EPICS base for building with R3.13 extensions + and ioc applications, you must modify the default definitions + in the base/config/CONFIG_SITE* files to agree with definitions + you made in base/configure and base/configure/os files. + + 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 "gnumake clean uninstall" + at the root directory of an EPICS directory structure before + each complete rebuild to ensure that all components will be + rebuilt. + +Multiple host platforms + + 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 + subdirectories and installed into the appropriate separate host/target + install directories. EPICS executables and perl scripts are installed + into the $(INSTALL_LOCATION)/bin/ directories. Libraries are + installed into $(INSTALL_LOCATION)/lib/. The default + definition for $(INSTALL_LOCATION) is $(TOP) which is the root + directory in the distribution directory structure, base. Created object + files are stored in O. 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/c++ cross compiler and target header + files and the base/configure/os directory must have the appropriate + configure files. + +Example application and extension + + A perl tool, makeBaseApp.pl is included in the distribution file. This + script will create a sample application that 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/ directory during the base build. + + Instructions for building and executing the 3.14 example application + can be found in the section "Example Application" of Chapter 2, "New + Features for 3.14", in the "IOC Application Developer's Guide + R3.14.0beta1". The "Example Application" section briefly explains + how to create and build an example application in a user created + directory. It also explains how to run the example application on a + vxWorks ioc or a host system and run an example channel access client + on the host system. + + diff --git a/documentation/README.html b/documentation/README.html new file mode 100644 index 000000000..804c3e53c --- /dev/null +++ b/documentation/README.html @@ -0,0 +1,538 @@ + + + + + + + + +README.htm +
    +

    +Installation Instructions

    + +
    +

    +EPICS base

    + +
    +

    +Release 3.14.0beta1

    + +

    +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 for the following targets. If you are trying to build EPICS +base on a different host or for a different target machine you must get +the proper host/target cross compiler and header files and you will have +to create and add the appropriate new 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 platforms (operating system - architecture - <alternate +c++ compiler>) +
    solaris-sparc +
    solaris-sparc-gnu +
    linux-x86 +
    win32-x86 +
    win32-x86-borland
    +
    + +
    +

    +Cross compile target platforms (operating system - architecture)

    +
    + +
    +
    vxWorks-486 +
    vxWorks-68040 +
    vxWorks-68040lc +
    vxWorks-68060 +
    vxWorks-ppc603 +
    vxWorks-ppc604 +
    vxWorks-pentium +
    RTEMS-gen68360 +
    RTEMS-mvme167 +
    RTEMS-pc386
    +
    + +

    +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 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 or base/configure/RELEASE.<hostarch> +file. You will also need one or more board support packages. Consult the +vxWorks documentation for details. +

    Optional GNU compiler requirement for solaris-sparc  and win32-x86 +hosts +
    If you have state notation language source files (*.st files) which +require c preprocessing before conversion to c source,  gcc must be +in your path.

    + +

    +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.htm 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

    + +
    http://www.aps.anl.gov/epics
    + +

    +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 istribution +
         base/config                  +R3.13 compatibility build configuration files +
         base/config/tools            +Perl and shell scripts used in the R3.13 build +
         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/copyright               +Text files describing software copyrights +
         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/db/test             +Database access tests +
         base/src/dbStatic            +Static database access +
         base/src/dbtools             +Database dbLoadTemplate tools +
         base/src/dev                 +Device support (softDev and testDev) +
         base/src/gdd                 +General data descriptor +
         base/src/iocsh               +Ioc shell command interpreter +
         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/cxxTemplates C++ templates +and templates tests +
         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/taskwd       +Task watchdog +
         base/src/libCom/test         +Test tools (timer, semBinary, semMutex,fdmgr, ?) +
         base/src/libCom/timer        +Timer +
         base/src/libCom/tsDefs       +R3.13 time stamp definitions and routines +
         base/src/libCom/ring         +ringPointer: First in first out circular buffers +
         base/src/libCom/cppStd       +epicsList: Lists of pointers to objects +
         base/src/makeBaseApp         +Perl tool+templates to create ioc app dvl tree +
         base/src/makeBaseExt         +Perl tool+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/startup                 +Scripts for setting up path and environment +

         Install directories created by the +build: +

         base/bin                     +Installed scripts and executables in subdirs +
         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

    + +
    +
  • +base/README* files
  • + +
    README.htm           +Instructions for setup and building epics base +
                         +(i.e. this document) +
    README.WIN32         Microsoft +WIN32 specific instructions +
    README.cxxTemplates  Information about C++ templates in EPICS +base +
    README.niCpu030      NI cpu030 specific +instructions +
      +
  • +base/startup directory - contains scripts to set environment and path
  • + +
    EpicsHostArch       c shell script +to set EPICS_HOST_ARCH env variable +
    EpicsHostArch.pl    perl script to set EPICS_HOST_ARCH +env variable +
    Site.profile        bourne shell +script to set path and env variables +
    Site.cshrc          +c shell script to set path and env variables +
    borland.bat         WIN32 +bat file to set path and env variables +
    win32.bat           +WIN32 bat file to set path and env variables +
      +
  • +base/configure  directory - contains build definitions and rules
  • + +
    CONFIG.CrossCommon    Cross build definitions +
    CONFIG.gnuCommon      Gnu compiler build +definitions for all archs +
    CONFIG_ADDONS         Definitions +for <osclass> and DEFAULT options +
    CONFIG_BASE           +EPICS base tool and location definitions +
    CONFIG_BASE_VERSION   Definitions for EPICS base version +number +
    CONFIG_COMMON         Definitions +common to all builds +
    CONFIG_ENV            +Definitions of EPICS environment variables +
    CONFIG_SITE           +Site specific make defintions +
    CONFIG_SITE_ENV       Site defaults +for EPICS environment variables +
    CONFIG                +Includes configure files and allows variable overrides +
    RELEASE               +Location of external products such as Tornado II +
    RULES                 +Includes appropriate rules file +
    RULES.Db              +Rules for database and database definition files +
    RULES_ARCHS           +Definitions and rules for building architectures +
    RULES_BUILD           +Build and install rules and definitions +
    RULES_DIRS            +Definitions and rules for building subdirectories +
    RULES_JAVA            +Definitions and rules for java jars and classes +
    RULES_TOP             +Rules specific to a <top> dir (uninstall and tar) +
    Sample.Makefile       Sample makefile +with comments +
      +
  • +base/configure/os directory - contains os-arch specific definitions
  • + +
    CONFIG.<host>.<target>      Specific +host-target build definitions +
    CONFIG.Common.<target>      Specific +target definitions for all hosts +
    CONFIG.<host>.Common        +Specific host definitions for all targets +
    CONFIG.UnixCommon.Common    Definitions for Unix +hosts and all target +
    CONFIG.<host>.vxWorksCommon Specific host definitions for all +vx targets +
    CONFIG_COMPAT               +R3.13 arch compatibility definitions +
    CONFIG_SITE.<host>.<target> Site specific host-target definitions +
    CONFIG_SITE.Common.<target> Site specific target defs for all +hosts +
    CONFIG_SITE.<host>.Common   Site specific host defs +for all targets +
      +
  • +base/configure/tools directory - contains Perl scripts used for the build
  • + +
    MakeReleae              +Unix shell script to create a release tar file +
    convertRelease.pl       Performs +consistancy checks on RELEASE files +
    cp.pl                   +This Perl script copies an existing file +
    installEpics.pl         +Installs built files into install directories. +
    makeDependsTargets.pl   Creates targets of include dependency +files +
    makeMakefile.pl         +Creates a Makefile in O.<arch> dirs +
    makeMakefileInclude.pl  Creates file to be included by Makefile +
    mkdir.pl                +Creates a directory (like Unix mkdir) +
    mkmf.pl                 +Generates dependencies from include stmnts +
    munch.pl                +Creates a ctdt.c file for vxWorks targets +
    mv.pl                   +Renames an existing file. +
    replaceVAR.pl           +Changes CapFast VAR(xxx) to $(xxx) notation +
    rm.pl                   +Quietly removes an existing file.
    + +

    +Building EPICS base (Unix and Win32)

    + +
    Unpack file +
    Unzip and untar the distribution file. Use WinZip on Windows +systems.
    +Set environment variables +
    Files in the base/startup directory have been provided to help +set required path and other environment variables . +

    EPICS_HOST_ARCH +
    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. If you are not using the OS vendor's +c/c++ compiler for host +
    builds, you will need another dash followed by the alternate compiler +name (e.g. "-gnu" for GNU c/c++ compilers on a solaris host or "-borland" +for Borland c/c++ compilers on a WIN32 host) .  See configure/CONFIG_SITE +for a list of supported EPICS_HOST_ARCH values. +

    PERLLIB +
    On WIN32, some versions of Perl require that  the environment +variable PERLLIB be set to <perl directory location>.

    + +
    PATH +
    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 your path, +and the c compiler may require ld in your path. +

    LD_LIBRARY_PATH +
    If you plan to build EPICS base shared libraries instead of archive +libraries, on Unix systems you will need to add  fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) +to your LD_LIBRARY_PATH environment variable. +

    PATH +
    On WIN32 systems, building shared libraries is the default setting +and you will need to add  fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) +to your path. Building shared libraries is determined by the value of the +macro SHARED_LIBRARIES in CONFIG_SITE (either YES or NO). +
     

    +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 target archs. +
    configure/CONFIG_SITE_ENV Environment variable  defaults +
    configure/RELEASE        TORNADO +2 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 settings +
    configure/os/CONFIG.<host>.<target>  - Host-target +settings
    +R3.13 compatibility configuration +
    To configure EPICS base for building with R3.13 extensions and ioc +applications , you must modify the default definitions in the base/config/CONFIG_SITE*  +files to agree with definitions you made in base/configure and base/configure/os +files.
    + +

    +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 "gnumake clean uninstall" at the root +directory of an EPICS  directory structure before each complete rebuild +to ensure that all components will be rebuilt.
    +
    + +

    +Multiple host platforms

    + +
    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 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 root directory in the distribution directory structure, base. +Created object files 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/c++ cross compiler and target header +files and the base/configure/os directory must have the appropriate configure +files.
    + +

    +Example application and extension

    + +
    A perl tool, makeBaseApp.pl is included in the distribution +file. This script will create a sample application that 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.
    + +
    Instructions for building and executing the 3.14 example application +can be found in the section "Example Application" of Chapter 2, "New Features +for 3.14", in the  "IOC Application Developer's Guide R3.14.0beta1". +The "Example Application" section briefly explains how to create and build +an example application in a user created <top> directory. It also explains +how to run the example application on a vxWorks ioc or a host system and +run an example channel access client on the host system.
    + + + diff --git a/documentation/README.niCpu030 b/documentation/README.niCpu030 new file mode 100644 index 000000000..0bd292bd8 --- /dev/null +++ b/documentation/README.niCpu030 @@ -0,0 +1,34 @@ + +The CPU030 may need to have the nivxi path set correctly: + From the vxWorks shell type "vxitedit" (you may need to + loading the NI vxitedit package first) + take option 2 + take option 3 + type list + type modify 0 + type in the correct path when promped + (the path should end in nivxi + and should traverse the niCpu030 + directories shipped with the 030 + ie something of the form "???/config/niCPU030/nivxi" + type save + type exit + . + . + . + + see "Getting Started with Your VXIcpu-030" from NI + +You may may need to setup front panel to backplane trigger +routing: + +To take a TTL input and map it to VXI backplane ECL trigger 0 +type in (to the vxWorks shell): + +epvxiRouteTriggerECL(, 1, 0) + +where specifies the card with the +front panel trigger connection. + +johill@lanl.gov +