264 lines
10 KiB
HTML
264 lines
10 KiB
HTML
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="Author" content="jba">
|
|
<meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
|
|
</head>
|
|
<body>
|
|
|
|
<h2>
|
|
Converting an EPICS R3.13 application to R3.14.0alpha2</h2>
|
|
This document describes how to convert a R3.13 vxWorks application so that
|
|
it builds with release R3.14.0alpha2. It describes procedures such
|
|
that:
|
|
<ul>
|
|
<li>
|
|
The application uses the configure rules which are new to R3.14.</li>
|
|
</ul>
|
|
|
|
<ul>
|
|
<li>
|
|
The OSI (Operating System Independent) features of R3.14 are available,
|
|
i.e. iocCore products can be build for vxWorks as well as other platforms,
|
|
e.g. solaris and linux.</li>
|
|
</ul>
|
|
|
|
<h3>
|
|
Gnumake clean uninstall</h3>
|
|
First do a gnumake clean uninstall in the application's root directory
|
|
to remove all files created by earlier builds.
|
|
<h3>
|
|
Create a new R3.14 application</h3>
|
|
|
|
<blockquote>mkdir <top>
|
|
<br>cd <top>
|
|
<br>/home/phoebus/JBA/epics/base/bin/solaris-sparc/makeBaseApp.pl -t example
|
|
example</blockquote>
|
|
|
|
<h3>
|
|
Copy all *App and iocBoot directories and files to the new <top> directory</h3>
|
|
|
|
<blockquote>cd <oldtop>
|
|
<br>find *App iocBoot -print | cpio -pvmd <fullpath name to new top></blockquote>
|
|
|
|
<h3>
|
|
Modify <top>/configure/RELEASE</h3>
|
|
|
|
<blockquote>Copy definitions of external modules excluding EPICS_BASE and
|
|
TEMPLATES_TOP from old application release file.
|
|
<br>If sequence programs (*.st or *.stt files) exist in your application,
|
|
add the SNCSEQ location definition for the R3.14 seq external module
|
|
<blockquote>SNCSEQ =<full path to seq top></blockquote>
|
|
The R3.14 seq module must exist and be built with EPICS base R3.14.0alpha2.</blockquote>
|
|
|
|
<h3>
|
|
Modify the Makefiles in <top>/*App directories.</h3>
|
|
|
|
<blockquote>Change include $(TOP)/config/CONFIG_APP
|
|
<br>to include $(TOP)/configure/CONFIG
|
|
<p>Change include $(TOP)/config/RULES_DIRS
|
|
<br>to include $(TOP)/configure/RULES_DIRS</blockquote>
|
|
|
|
<h3>
|
|
Modify the Makefiles in <top>/*App/*Db directories.</h3>
|
|
|
|
<blockquote>Remove existing Makefile
|
|
<br>Rename Makefile.Host to Makefile
|
|
<br>Modify Makefile as follows:
|
|
<p>Change TOP=../../..
|
|
<br>to TOP=../..
|
|
<p>Change include $(TOP)/config/CONFIG_APP
|
|
<br>to include $(TOP)/configure/CONFIG
|
|
<p>Change include $(TOP)/config/RULES.Db
|
|
<br>to include $(TOP)/configure/RULES
|
|
<p>Place all definitions between the include lines.
|
|
<p>Place any rules after the last include line.</blockquote>
|
|
|
|
<h3>
|
|
Modify the Makefiles in <top>/*App/src directories.</h3>
|
|
|
|
<blockquote>Remove existing Makefile
|
|
<br>Rename Makefile.Host to Makefile
|
|
<br>Modify Makefile as follows:
|
|
<p>Change TOP=../../..
|
|
<br>to TOP=../..
|
|
<p>Change include $(TOP)/config/CONFIG_APP
|
|
<br>to include $(TOP)/configure/CONFIG
|
|
<p>Change include $(TOP)/config/RULES.Host
|
|
<br>to include $(TOP)/configure/RULES
|
|
<p>Change PROD_LIBS = Db
|
|
<br>to PROD_LIBS = dbStaticHost
|
|
<p>Change Db_DIR = $(EPICS_BASE_LIB)
|
|
<br>to dbStaticHost_DIR = $(EPICS_BASE_LIB)
|
|
<p>Change USER_DBDFLAGS
|
|
<br>to USR_DBDFLAGS
|
|
<p>Change RECTYPES += xxxRecord.h
|
|
<br>to DBDINC += xxxRecord
|
|
<p>Change DBDNAME = <name>.dbd
|
|
<br>to DBD += <name>.dbd
|
|
<p>Remove all DBDEXPAND lines.
|
|
<p>Add the contents of Makefile.Vx to Makefile removing the include lines
|
|
and the TOP definition.</blockquote>
|
|
|
|
<blockquote>Change LIBNAME = <libname>
|
|
<br>to LIBRARY_vxWorks = <libname>
|
|
<p>Add the line <libname>_OBJS = $(LIBOBJS)
|
|
<p>Change INSTALLS = iocCore seq
|
|
<br>to
|
|
<blockquote><libname>_OBJS_vxWorks += $(EPICS_BASE_BIN)/iocCoreLibrary
|
|
<br><libname>_OBJS_vxWorks += $(SNCSEQ_BIN)/seqLibrary
|
|
<br><libname>_OBJS_vxWorks += $(SNCSEQ_BIN)/pvLibrary
|
|
<br><libname>_OBJS_vxWorks += $(SNCSEQ_BIN)/pvCaLibrary</blockquote>
|
|
Change include ../baseLIBOBJS
|
|
<br>to -include ../baseLIBOBJS
|
|
<p>Change SRCS += <srcname>.c
|
|
<br>to <libname>_SRCS += <srcname>.c
|
|
<p>Rename your sequence programs from <name>.st to <name>.stt
|
|
if they do not need c preprocessing before conversion.
|
|
<p>Change LIBOBJS += <seq_program_name>.o
|
|
lines
|
|
<br>to <libname>_SRCS += <seq_program_name>.stt
|
|
<br>or <libname>_SRCS += <seq_program_name>.st
|
|
<p>Place all macro definitions between the include lines.
|
|
<p>Place any rules after the last include line.</blockquote>
|
|
|
|
<h3>
|
|
Modify the Makefiles in <top>/iocBoot directory.</h3>
|
|
|
|
<blockquote>Change include $(TOP)/config/CONFIG_APP
|
|
<br>to include $(TOP)/configure/CONFIG
|
|
<p>Remove the line DIRS += $(wildcard *ioc*)
|
|
<p>Change include $(TOP)/config/RULES.iocBoot
|
|
<br>to include $(TOP)/configure/RULES.iocBoot</blockquote>
|
|
|
|
<h3>
|
|
Modify the Makefiles in <top>/iocBoot/ioc* directories.</h3>
|
|
|
|
<blockquote>Change include $(TOP)/config/CONFIG_APP
|
|
<br>to include $(TOP)/configure/CONFIG
|
|
<p>Change include ARCH = <old arch specification e.g. mv167>
|
|
<br>to include ARCH = <new arch specificatio
|
|
e.g. vxWorks-68040>
|
|
<p>Change include $(TOP)/config/RULES.ioc
|
|
<br>to include $(TOP)/configure/RULES.ioc</blockquote>
|
|
|
|
<h3>
|
|
Modify st.cmd in <top>/iocBoot/ioc* directories.</h3>
|
|
|
|
<blockquote>Remove the lines</blockquote>
|
|
|
|
<blockquote>
|
|
<blockquote>
|
|
<pre>ld < seq</pre>
|
|
|
|
<pre>ld < iocCore</pre>
|
|
</blockquote>
|
|
Change ld < <libname>
|
|
<br>to ld < <libname>Library.munch
|
|
<p>Change load statements for db and dbd files from
|
|
<blockquote>cd startup
|
|
<br>dbLoadDatabase("../../dbd/exampleApp.dbd")
|
|
<br>dbLoadRecords("../../db/dbExample1.db","user=jba")
|
|
<br>dbLoadRecords("../../db/dbExample2.db")</blockquote>
|
|
to
|
|
<blockquote>cd top
|
|
<br>dbLoadDatabase("dbd/example.dbd")
|
|
<br>registerRecordDeviceDriver(pdbbase)
|
|
<br>dbLoadRecords("db/dbExample1.db","user=jba")
|
|
<br>dbLoadRecords("db/dbExample2.db")</blockquote>
|
|
</blockquote>
|
|
|
|
<h3>
|
|
Record support changes</h3>
|
|
|
|
<blockquote>The steppermotor, scan, and pid records are no longer in base.
|
|
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.
|
|
<p>For example add</blockquote>
|
|
|
|
<blockquote> PID=<full
|
|
path to modules directory>/pid
|
|
<p>to config/RELEASE.
|
|
<br>Remove</blockquote>
|
|
|
|
<blockquote> LIBOBJS +=
|
|
$(EPICS_BASE_BIN)/pidRecord.o
|
|
<br>from baseLIBOBJS,
|
|
<br>and add</blockquote>
|
|
|
|
<blockquote> LIBOBJS +=
|
|
$(PID_BIN)/pidRecord.o
|
|
<br>to your application src/Makefile.</blockquote>
|
|
|
|
<blockquote>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.</blockquote>
|
|
|
|
<h3>
|
|
RecDynLink.o and devPtSoft changes</h3>
|
|
|
|
<blockquote>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.</blockquote>
|
|
|
|
<h3>
|
|
Hardware support changes</h3>
|
|
|
|
<blockquote>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.</blockquote>
|
|
|
|
<blockquote>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.
|
|
<p>For example, remove</blockquote>
|
|
|
|
<blockquote> LIBOBJS+=$(EPICS_BASE_BIN)/symb</blockquote>
|
|
|
|
<blockquote>from baseLIBOBJS and add</blockquote>
|
|
|
|
<blockquote> LIBOBJS+=$(SYMB_BIN)/symb</blockquote>
|
|
|
|
<blockquote>to your application src/Makefile,
|
|
<br>and add the line</blockquote>
|
|
|
|
<blockquote>
|
|
<blockquote>SYMB=<full path definition for the built module SYMB></blockquote>
|
|
</blockquote>
|
|
|
|
<blockquote>into your application config/RELEASE file .</blockquote>
|
|
|
|
<h3>
|
|
dbLoadtemplate tool changes</h3>
|
|
|
|
<blockquote>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
|
|
<p> EPICS_EXTENSIONS=<full
|
|
path name to epics extensions directory>
|
|
<p>to your application config/RELEASE file.</blockquote>
|
|
|
|
<blockquote>
|
|
<blockquote> </blockquote>
|
|
|
|
<blockquote>
|
|
<pre></pre>
|
|
</blockquote>
|
|
</blockquote>
|
|
|
|
<br>
|
|
</body>
|
|
</html>
|