Experimental Physics and
Industrial Control System
Sorry for the late reply, I was out last week.|
I haven't had occasion to use EPICS with vxWorks, but
I have encountered and resolved these problems of
undefined symbols and c++ initializers with vxWorks
in a prior life.
We were using vxWorks 5.4, and to make undefined
symbols break at build time instead of run time, our first
solution was to do an additional static link with the vxWorks
image during the build, even though we still loaded
the relocatable app into a booted vxWorks.
This worked, but required some customizing of the vxWorks
build system to create a relocatable object which matched the
boot image. You need to do a partial link to pull the libs you'll
need from the vxWorks libraries, but still generate a relocatable
An easier approach from the vxWorks build system
perspective is to create a target that links your relocatable object
into a bootable vxWorks image. That approach probably wouldn't
work well for EPICS as you'd have to run the vxWorks build after
the EPICS build and find some way to point the vxWorks build at
your relocatable EPICS object file. When I did this, we had a
app with no loadable modules.
Both approaches worked, albeit at different companies, and in both
we eventually started booting a single bootable image with vxWorks
and our app as it shaved some time off the bootup.
However, actually running that bootable image containing both
and our application which included c++ static initializers, required
some changes both to our c++ code and vxworks. The main problem
that the c++ static initializers run much earlier with this
As I recall, we had to change to deferred initialization for c++
that relied on some of the vxWorks services that were not available
the time the initializers were being called. I think we also
the vxworks usrKernel.c file so the initializers would be called
more of the os was up.
Hope this helps.
On 07/01/2013 07:44 AM, Ron Sluiter
On 6/29/2013 12:09 PM, Andrew Johnson
That seems like it might be half-way to us creating a fully bootable image file containing both the IOC application code and the VxWorks OS, but I don't think that would be quite as easy as it might seem because getting initialization right (C++ static initializers for our code) could be tricky. Has anyone ever tried to do that?
I sent a a
message to tech-talk on this topic last month and got no
I have created a bootable image that contains both the VxWorks OS
and an EPICS IOC using Wind River's Workbench, but there have been
run-time problems that I have, to date, not yet diagnosed.
Member Technical Staff
SLAC National Accelerator Lab
2575 Sand Hill Road M/S 10
Menlo Park, CA 94025
- registerRecordDevice... crashes IOC during startup Benjamin Franksen
- Re: registerRecordDevice... crashes IOC during startup Andrew Johnson
- Re: registerRecordDevice... crashes IOC during startup Ron Sluiter
- Navigate by Date:
New version of STAR EPICS Virtual Machine (July 2013) Jiro Fujita
Re: multiple servers on the same (loopback) interface Jameson Graef Rollins
- Navigate by Thread:
Re: registerRecordDevice... crashes IOC during startup Ron Sluiter
Updating the RDB archiver at the STAR experiment L. C. De Silva
ANJ, 20 Apr 2015