518 lines
16 KiB
HTML
518 lines
16 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||
"http://www.w3.org/TR/html4/loose.dtd">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||
<title>EPICS Release baseR3.14 </title>
|
||
</head>
|
||
|
||
<body lang="en">
|
||
|
||
<center>
|
||
<h1>EPICS Release base 3.14.1</h1>
|
||
|
||
<h1>Dec 16 2002</h1>
|
||
|
||
<h2>Changes since beta2</h2>
|
||
</center>
|
||
|
||
<p><strong>function - New Database Definition Keyword</strong></p>
|
||
|
||
<p>dbStaticLib and related programs now accept a new keyword in DBD files:</p>
|
||
<pre>function(name)</pre>
|
||
|
||
<p>Where '<span style="font-family: courier">name</span>' is the name of a
|
||
function with "C" linkage that is included in the IOC binary. This function
|
||
will be automatically registered with the registry at the same time as the
|
||
record/device/driver tables, and is intended to make using subroutine records
|
||
much easier on non-vxWorks systems.. Prior R3.14 releases required there to
|
||
be a static registration routine for such subroutines.</p>
|
||
|
||
<p>dbStaticLib has two additional routines to support this, dbDumpFunction()
|
||
and dbWriteFunctionFP(). dbDumpFunction has been added to the iocsh command
|
||
table.</p>
|
||
|
||
<p><strong>iocsh</strong></p>
|
||
|
||
<p>When executing commands from a script file, iocsh now echoes each command
|
||
to the terminal before execution. This makes it much easier to see where
|
||
errors are being reported.</p>
|
||
|
||
<p><strong>Solaris build requirement</strong></p>
|
||
|
||
<p><span style="font-family: courier">uname</span> must be defined for builds
|
||
on solaris hosts because it is used to determine the solaris version.</p>
|
||
|
||
<p><strong>RULES.Db</strong></p>
|
||
|
||
<p>A <span style="font-family: courier">*[</span><span
|
||
style="font-family: courier">nn</span><span
|
||
style="font-family: courier">].</span><span
|
||
style="font-family: courier">db</span> file will be created from an <span
|
||
style="font-family: courier">*.template</span> and a <span
|
||
style="font-family: courier">*[nn].substitutions</span> file ,where <span
|
||
style="font-family: courier">nn</span> has a value between 0 and 99.</p>
|
||
|
||
<p><strong>Support for 64 bit long</strong></p>
|
||
|
||
<p>Many changes were made to support architectures on which a long is a 64
|
||
bit integer. The basic change was to change:</p>
|
||
<ul>
|
||
<li>long => epicsInt32 for anything that might get transfered to/from
|
||
network buffers</li>
|
||
<li>unsigned long => epicsUInt32 for anything that might get transfered
|
||
to/from network buffers</li>
|
||
</ul>
|
||
|
||
<p>The changes include the following:</p>
|
||
<ul>
|
||
<li>cvtFast</li>
|
||
<li>xxxRecord.h NOTE: In addition to the changes for long all enum fields
|
||
are now epicsEnum16</li>
|
||
<li>dbStaticLib</li>
|
||
<li>db_access</li>
|
||
<li>dbConvert and dbFastLinkConv</li>
|
||
</ul>
|
||
|
||
<p><strong>Hardware Link Definitions</strong></p>
|
||
|
||
<p>The various parts of hardware link definitions now accept HEX values,
|
||
e.g.</p>
|
||
<pre>field(INP,"L0 A1 C0 S0xa @")</pre>
|
||
|
||
<p>NOTES:</p>
|
||
<ul>
|
||
<li>This may not be compatible with Database Configuration Tools</li>
|
||
<li>If records are written via dbStaticLib the falues will NOT be written
|
||
in HEX.</li>
|
||
</ul>
|
||
|
||
<p><strong>dbDumpFldDes</strong></p>
|
||
|
||
<p>A macro has been defined so that client code can be written that is
|
||
compatible between 3.13 and 3.14.</p>
|
||
|
||
<p><span style="font-weight: bold">epicsMutex for posix</span></p>
|
||
<ul>
|
||
<li>No longer supports epicsMutexLockWithTimeout. This was done to allow a
|
||
more efficient posix implementation.</li>
|
||
<li>If PTHREAD_MUTEX_RECURSIVE is provided then the implementation uses
|
||
only pthread_mutex. This is much faster (2 to 3 times as fast) as the
|
||
previous implementation.</li>
|
||
</ul>
|
||
|
||
<p><strong>Mac OS X</strong></p>
|
||
|
||
<p>Now supported as development platform and as IOC.</p>
|
||
|
||
<p><strong>RTEMS</strong></p>
|
||
|
||
<p>Additional RTEMS-pc386 network drivers are available</p>
|
||
|
||
<p><strong>iocsh</strong></p>
|
||
|
||
<p>Configurable iocsh command-line editing support (none, readline,
|
||
libtecla)</p>
|
||
|
||
<center>
|
||
<h2>Changes since beta1</h2>
|
||
</center>
|
||
|
||
<p><strong>dbCommon.dbd</strong></p>
|
||
|
||
<p>Field UDF now has a promptgroup. This allows users to set UDF false via
|
||
DCTs.</p>
|
||
|
||
<p><strong>errlog</strong></p>
|
||
|
||
<p>errlog no longer contains an atexit that calls errlogFlush. This did not
|
||
work on all operating systems. cantProceed, iocsh, and ca_task_exit all call
|
||
errlogFlush. Other applications may also have to call if before
|
||
terminating.</p>
|
||
|
||
<p><strong>mbboRecord</strong></p>
|
||
|
||
<p>mbboRecord now implements method cvt_dbaddr for the VAL field. If no state
|
||
vales or state strings are defined then it sets field_type and dbr_field_type
|
||
to DBF_USHORT.</p>
|
||
|
||
<p><strong>timeStamp changes</strong></p>
|
||
|
||
<p>Changes have been made to:</p>
|
||
<ul>
|
||
<li>Allow device support to set the time stamp (field TIME) of a
|
||
record.</li>
|
||
<li>Allow a record to receive it's time stamp from another record,</li>
|
||
</ul>
|
||
|
||
<p>epicsTime.h now has the definitions:</p>
|
||
<pre>#define epicsTimeEventBestTime -1
|
||
#define epicsTimeEventDeviceTime -2</pre>
|
||
|
||
<p>These are values for the TSE field of dbCommon.</p>
|
||
<ul>
|
||
<li><strong>epicsTimeEventBestTime</strong> means that code supplying the
|
||
time stamp should get the most accurate time possible. Currently this
|
||
only has meaning on vxWorks and if drvTS is supplying the time via some
|
||
hardware timing system. It means get the latest time from the hardware
|
||
system rather than from the vxWorks tick time. drvTs previously accepted
|
||
a hardcoded value of -1.</li>
|
||
<li><strong>epicsTimeEventDeviceTime</strong> means that recGblGetTimeStamp
|
||
doesn't modify the time field. This allows device support to supply the
|
||
time stamp.</li>
|
||
</ul>
|
||
|
||
<p>If the <strong>TSEL</strong> field refers to the <strong>TIME</strong>
|
||
field of a record then <strong>recGblGetTimeStamp</strong> sets
|
||
<strong>TIME</strong> equal to the time it gets from the record the
|
||
<strong>TSEL</strong> references. This works for both database and channel
|
||
access links. In this case field TSE is not used.</p>
|
||
<pre> </pre>
|
||
|
||
<p><strong>aiRecord and aoRecord: Setting eoff=egul</strong></p>
|
||
|
||
<p>Instead of init_record executing code like</p>
|
||
<pre> if ((pai->linr == menuConvertLINEAR) && pdset->special_linconv) {
|
||
pai->eoff = pai->egul;
|
||
}</pre>
|
||
|
||
<p>It now executes:</p>
|
||
<pre> if ((pai->eslo==1.0) && (pai->eoff==0.0)) {
|
||
pai->eoff = pai->egul;
|
||
}</pre>
|
||
|
||
<p>aoRecord has a similar change</p>
|
||
|
||
<p>This was done so that old device support which does not implement
|
||
special_linconv still works.</p>
|
||
|
||
<p><strong>CA puts to disabled record</strong></p>
|
||
|
||
<p>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. This is fixed.</p>
|
||
|
||
<p><strong>TPRO - trace processing</strong></p>
|
||
|
||
<p>If dbProcess is called recursively by different tasks, it did not properly
|
||
handle TPRO. Consider the following database:</p>
|
||
<pre>record(ao,"mrkao") {
|
||
field(OUT,"mrkai CA")
|
||
field(TPRO,"1")
|
||
}
|
||
record(ai,"mrkai") {
|
||
field(TPRO,"1")
|
||
}</pre>
|
||
|
||
<p>If a channel access put is sent to mrkao, no message is issued when mrkai
|
||
is processed.</p>
|
||
|
||
<p>This is now fixed.</p>
|
||
|
||
<p><strong>TSconfigure</strong></p>
|
||
|
||
<p>If in your st.cmd file you issue the command.</p>
|
||
|
||
<p>TSconfigure(0,0,0,0,0,0,1)</p>
|
||
|
||
<p>And set the TSE field of any record to a non zero value, then a crash will
|
||
occur when recGblGetTimeStamp is called.</p>
|
||
|
||
<p>This is now fixed.</p>
|
||
|
||
<p><strong>calcoutRecord</strong></p>
|
||
|
||
<p>nsev not sevr must be checked to decide if dbPutLink should be called.</p>
|
||
|
||
<p><strong>dbCa</strong></p>
|
||
|
||
<p>Whenever a connection is made, a request to retrieve the control, display,
|
||
and alarm linits and the precision and units is automatically issued.
|
||
Previously this was only done if dbCaGetAttributes was called. This it is no
|
||
longer necessary to call dbCaGetAttributes.</p>
|
||
|
||
<p><strong>calcPerform</strong></p>
|
||
|
||
<p>This now returns a non zero value if the result is nan (not a number).</p>
|
||
|
||
<p><strong>Record Name Length</strong></p>
|
||
|
||
<p>The size of the name field has been expanded from 29 to 61, i.e. record
|
||
names can now have 60 characters.</p>
|
||
|
||
<p><strong>iocInit</strong></p>
|
||
|
||
<p>initialProcess is now called before interruptAccept. This means that
|
||
initial processing will be done before periodically scanned and I/O Inter
|
||
scanned records start processing.</p>
|
||
|
||
<p><strong>ellLib</strong></p>
|
||
|
||
<p>Casts have been removed that suppressed valuable error messages</p>
|
||
|
||
<p><strong>mbbiRecord</strong></p>
|
||
|
||
<p>All existing manipulations of UDF in process() are removed and udf is set
|
||
FALSE when the raw value is successfully read.</p>
|
||
|
||
<p><strong>selRecord</strong></p>
|
||
|
||
<p>In do_sel udf is not set false at the beginning. If selm has an invalid
|
||
value recGblSetSevr(psel,SOFT_ALARM,MAJOR_ALARM) is called.</p>
|
||
|
||
<p><strong>cdCommands file</strong></p>
|
||
|
||
<p>Fixed a bug and revised the use of the IOCS_APPL_TOP setting in an
|
||
application's <top>/configure/CONFIG file (which specifies the path to
|
||
<top>as seen by the IOC) to apply the same modifications to all paths output
|
||
in the cdCommands file.</p>
|
||
|
||
<p><strong>dbStaticLib</strong></p>
|
||
|
||
<p>All routines with Recdes of Fielddes in their name are obsolete and
|
||
removed. A new routine dbDumpField replaces dbDumpFldDes.</p>
|
||
|
||
<center>
|
||
<h2>Changes since alpha2</h2>
|
||
</center>
|
||
All changes for release 3.13.5 that also apply to 3.14 have been made.
|
||
|
||
<p><b>devAiSoftRaw and devAoSoftRaw</b></p>
|
||
|
||
<p>A new state is defined for the LINR field. The name is "SLOPE", which
|
||
allows any device type to be used with manual settings of the EOFF and ESLO
|
||
fields. With this setting, the device support's special_linconv() routine is
|
||
only called when LINR=LINEAR.</p>
|
||
|
||
<p>The RTEMS TFTP remote filesystem driver now supports a limited form of the
|
||
chdir() system call. One restriction is that all pathnames passed to chdir()
|
||
must end in a / character, so IOC shell commands to change directories must
|
||
be given as</p>
|
||
|
||
<p>cd ../db/</p>
|
||
|
||
<center>
|
||
<h1>EPICS Release base 3.14.0alpha2</h1>
|
||
</center>
|
||
Since the alpha1 release some major changes were made to the build system, to
|
||
some of the libCom facilities, and to the iocsh facilities.
|
||
|
||
<p>The unbundled version of the sequencer has been build and tested with this
|
||
release. You must obtain a version of the sequencer that has been built
|
||
against alpha2.</p>
|
||
|
||
<p>A verion of the HPlanGpib support has been built and tested with this
|
||
release. Again you must obtain a version that builds with alpha2.</p>
|
||
|
||
<p>A new update to the Application Developer's Guide is available for this
|
||
release.</p>
|
||
|
||
<h3>Build changes</h3>
|
||
<ul>
|
||
<li>Operating system independant builds are now done in an O.Common
|
||
subdirectory and then installed instead of being performed directly in an
|
||
install directory.</li>
|
||
<li>Build definition names (e.g. RECTYPES, MENUS, DBDNAME, and BPTS) have
|
||
been changed to specify the name of the file to be created and installed
|
||
instead of the source file name.</li>
|
||
<li>All db and dbd related definitions and rules have been moved into
|
||
base/configure/RULES.Db file. The rules now allow multiple dbd files and
|
||
registerRecordDeviceDriver files to be created in a single Makefile.</li>
|
||
<li>"gnumake depends" no longer depends on a complete buildInstall.</li>
|
||
</ul>
|
||
|
||
<h3>Converting alpha1 applications to alpha2</h3>
|
||
Build modifications in alpha2 require the following changes to existing R3.14
|
||
applications.
|
||
<ul>
|
||
<li> Remove the now unused RULES files</li>
|
||
<li><ul>
|
||
./configure/RULES.Db <br>
|
||
./configure/RULES.registerRecordDeviceDriver <br>
|
||
</ul>
|
||
</li>
|
||
<li>Delete the following line in ./configure/RULES
|
||
<ul>
|
||
<br>
|
||
include $(TOP)/configure/RULES.registerRecordDeviceDriver</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li> In <top>/configure/Makefile change
|
||
<ul>
|
||
<br>
|
||
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(T_A) $@ $(TOP)</ul>
|
||
</li>
|
||
to
|
||
<ul>
|
||
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@
|
||
$(TOP) <br>
|
||
</ul>
|
||
and add the line
|
||
<ul>
|
||
<br>
|
||
depends: install <br>
|
||
</ul>
|
||
to the bottom of the Makefile.
|
||
<ul>
|
||
</ul>
|
||
</ul>
|
||
<ul>
|
||
<li>In all *App/*Db/Makefileschange
|
||
<ul>
|
||
<br>
|
||
include $(TOP)/configure/RULES.Db</ul>
|
||
</li>
|
||
to
|
||
<ul>
|
||
include $(TOP)/configure/RULES</ul>
|
||
<li>In all *App/src/Makefile files
|
||
<ul>
|
||
</ul>
|
||
</li>
|
||
change DBDNAME = <name>App to DBD += <name>
|
||
<ul>
|
||
</ul>
|
||
and remove the line <br>
|
||
|
||
<ul>
|
||
DBDEXPAND = <name>Include.dbd <br>
|
||
</ul>
|
||
NOTE: If any of your *App/*Db/Makefiles contain "DBDNAME =" lines you
|
||
should make these same changes in that *Db dirctory. <br>
|
||
|
||
<ul>
|
||
<li>In all *App/src/Makefile Makefiles</li>
|
||
</ul>
|
||
<ul>
|
||
</ul>
|
||
change RECTYPES=<name>.h to DBDINC+=<name>
|
||
<ul>
|
||
</ul>
|
||
change MENUS=<name>.h to DBDINC+=<name></ul>
|
||
<ul>
|
||
change BPTS to DBD
|
||
|
||
<p>change INSTALLDB to DB</p>
|
||
|
||
<p>change DBDINSTALL to DBD <br>
|
||
</p>
|
||
<li>In all example *App/src/Makefile files change
|
||
<ul>
|
||
<br>
|
||
example_SRCS_DEFAULT += registerRecordDeviceDriver.c</ul>
|
||
</li>
|
||
to
|
||
<ul>
|
||
example_SRCS_DEFAULT += <name>_registerRecordDeviceDriver.cpp <br>
|
||
</ul>
|
||
where <name> is the base name of a <name>.dbd file which was
|
||
created from a <name>Include.dbd file and which will be loaded in a
|
||
st.cmd or stcmd.host script (e.g. example). <br>
|
||
|
||
<ul>
|
||
<li>In ./iocBoot/ioc<name>/st.cmd files change</li>
|
||
</ul>
|
||
<br>
|
||
|
||
<ul>
|
||
dbLoadDatabase("dbd/exampleApp.dbd")</ul>
|
||
to
|
||
<ul>
|
||
dbLoadDatabase("dbd/example.dbd") <br>
|
||
</ul>
|
||
<li>In <top>/iocBoot/ioc<name>/stcmd.host files change
|
||
<ul>
|
||
<br>
|
||
dbLoadDatabase("../../dbd/exampleApp.dbd",0,0)</ul>
|
||
</li>
|
||
to
|
||
<ul>
|
||
dbLoadDatabase("../../dbd/example.dbd",0,0)</ul>
|
||
</ul>
|
||
|
||
<h3>EPICS_HOST_ARCH changes</h3>
|
||
GNU compiler builds are now determined by the value of EPICS_HOST_ARCH and
|
||
are no longer specified in CONFIG_SITE. All references to the ANSI (ACC/GCC)
|
||
and CPLUSPLUS (CCC/G++) macros have been removed. <br>
|
||
|
||
|
||
<h3>libCom</h3>
|
||
Most of the library routines and files starting with the prefix osi have been
|
||
changed to start with epics. Several also had major changes to their user
|
||
interface. See the latest version of the Application Developer's Guide for
|
||
details. <br>
|
||
|
||
|
||
<center>
|
||
<h2>EPICS Release base 3.14.0alpha1 Notes</h2>
|
||
</center>
|
||
|
||
<p><br>
|
||
</p>
|
||
|
||
<p>This is the first release of 3.14. This is the first release that supports
|
||
iocCore on platforms besides vxWorks.</p>
|
||
|
||
<p>iocCore is now supported on the following platforms:</p>
|
||
<ul>
|
||
<li>vxWorks</li>
|
||
<br>
|
||
Tornado II is required.
|
||
<ul>
|
||
<li>RTEMS</li>
|
||
</ul>
|
||
<br>
|
||
An open source real time operating system. It has been tested on MVME167
|
||
and MC68360 processors. RTEMS also supports powerPC.
|
||
<ul>
|
||
<li>solaris</li>
|
||
</ul>
|
||
<br>
|
||
Has been tested on solaris 2.6 and solaris 8 with Sun workshop 6.0 (C++
|
||
5.2). Sun workshop 5.0 (C++ 5.0) will not compile this version of EPICS.
|
||
<ul>
|
||
<li>Linux</li>
|
||
</ul>
|
||
<br>
|
||
Has been tested on Redhat x86 platforms.
|
||
<ul>
|
||
<li>winNT</li>
|
||
</ul>
|
||
<br>
|
||
Testing has been done with visual C++ 6.0.</ul>
|
||
A new version of the Application Developers Guide is available. The following
|
||
gives links to the new Application Developer's Guide and to RTEMS information.
|
||
|
||
<p>http://www.aps.anl.gov/epics/modules/base/R3-14.php</p>
|
||
|
||
<p>Most of the Application Developer's Guide has only minor changes. The
|
||
following are new.</p>
|
||
<ul>
|
||
<li>Chapter 2 describes the new features for 3.14.</li>
|
||
<li>Chapter 4 describes the build facility for 3.14</li>
|
||
<li>Chapters 19 and 20 describe libCom, which was not previously
|
||
documented.</li>
|
||
</ul>
|
||
|
||
<p><br>
|
||
It must be emphasized that this is an alpha release.</p>
|
||
<ul>
|
||
<li>Please don't use it for existing operational systems</li>
|
||
<li>Don't build your operational CA clients with it.</li>
|
||
<li>The APIs for new components in libCom are still evolving so if you use
|
||
them be prepared for changes.</li>
|
||
<li>HPUX - No support currently because we could not find good support for
|
||
multithreading.</li>
|
||
</ul>
|
||
Building Applications
|
||
<ul>
|
||
<li>For new applications see Chapters 2 (New Features) and Chapter 4 (Build
|
||
Facility) of the Application Developer's Guide.</li>
|
||
<li>For existing applications the old config rules are still supported.
|
||
Some changes, however, are needed. Documentation is being prepared and
|
||
will appear in these release notes sooon.</li>
|
||
</ul>
|
||
</body>
|
||
</html>
|