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 @@ + + +
+ + + + + +
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:
+
At the top of the application execute: ++ +"gnumake clean uninstall"+to remove all files and directories created by earlier builds.
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.+ +
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.
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 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.
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.
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+
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.+ +
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.o are no longer in base. Remove +references to them in base.dbd and baseLIBOBJS if they are not used in +application.+ +
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).
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. ++depends changes +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 +++to your application config/RELEASE file.EPICS_EXTENSIONS=<full path name to epics extensions directory>+
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 @@ + + +
+ + + + + + +
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.
+
++ ++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. +
++ ++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. +
++ + + 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 @@ + + + + + + + + + ++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) ++to +
RPCFLAGS = -K -1 +
endififeq ($(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" { ++to +
#include "cadefs.h" +
} /* end extern C */#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
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:
+
First do a gnumake clean uninstall in the application's root +directory to remove all files created by earlier builds.+ +
mkdir <top> ++ +
cd <top> +
<full path to R3.14.0beta1 base>/bin/<host_arch>/makeBaseApp.pl +-t example example
cd <oldtop> ++ +
find *App iocBoot -print | cpio -pvmd <fullpath name to new +top>
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.
Change include $(TOP)/config/CONFIG_APP ++ +
to include $(TOP)/configure/CONFIG +Change include $(TOP)/config/RULES_DIRS +
to include $(TOP)/configure/RULES_DIRS
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.
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 ++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. +
#<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 += ComPlace all macro definitions between the include lines. +
Place any rules after the last include line.
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
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+
Remove the lines+ +
++ +++Change ld < <libname>Lib +ld < seq+ +ld < iocCore+
to ld < <libname>.munch +Change load statements for db and dbd files from +
cd startup ++to +
dbLoadDatabase("../../dbd/exampleApp.dbd") +
dbLoadRecords("../../db/dbExample1.db","user=jba") +
dbLoadRecords("../../db/dbExample2.db")cd top ++
dbLoadDatabase("dbd/example.dbd") +
registerRecordDeviceDriver(pdbbase) +
dbLoadRecords("db/dbExample1.db","user=jba") +
dbLoadRecords("db/dbExample2.db")
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.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.+ +
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 .+ +
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.
++ ++ ++ ++
This document describes how to convert a R3.14.0alpha2 application
+so that it builds with release R3.14.0beta1.
+
First do a "gnumake clean uninstall" in the application's +root directory to remove all files created by earlier builds.+ +
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+ +
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)+
Add the new record and dev support libraries to <name>App/src/Makefile, +i.e. add the lines ++ +example_LIBS += recIoc ++and remove any references to iocLibrary, e.g. remove the line +
example_LIBS += softDevIoc +
example_LIBS += testDevIocexample_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
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 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 ++LIBRARY and PROD changes +change PROD += caExample ++
to PROD_HOST += caExample +
and +
change PROD = sncExample +
to PROD_HOST += sncExample
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> ++In the iocBoot/ioc<name>/st.cmd files, +
to PROD_vxWorks = <name> +
or +
remove the lines LIBRARY_vxWorks = <name> +
and PROD_RTEMS = <name> +
and change PROD = <name> +
to PROD_IOC = <name>.change ld < <name>Library.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 +
to ld < <name>.munchcaExample_SRCS += caExample.c+
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 +
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 @@ + + + + + ++
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)) {
+
+
+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;
+
+
+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.
+ +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 ++ +
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)+ +
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.
+ +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.
+ +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 -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.+ +
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.+ +
Please review the COPYRIGHT* files included in the distribution +for legal terms of usage.+ +
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
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.+ +
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.
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.+ +
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.+ +
++ ++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.+
Distribution directory structure:+ base +Root directory of the base istribution +
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
+
++ ++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.
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 ++Do site-specific build configuration +
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). +
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. ++Host configuration +
configure/CONFIG_SITE_ENV Environment variable defaults +
configure/RELEASE TORNADO +2 full path location
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 ++Target configuration +
configure/os/CONFIG.<host>.Common +- Host cross build settings
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 ++R3.13 compatibility configuration +
configure/os/CONFIG.<host>.<target> - Host-target +settings
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 ++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. +
gnumake
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.
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.+ +
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(