Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018 
<== Date ==> <== Thread ==>

Subject: Re: EPICS on vxWorks
From: Andrew Johnson <anj@aps.anl.gov>
To: Amit Chauhan <amit@rrcat.gov.in>, <tech-talk@aps.anl.gov>
Date: Wed, 15 Oct 2014 18:07:27 -0500
Hi Amit,

On 10/15/2014 08:09 AM, Amit Chauhan wrote:
> We are trying to put EPICS on target running vxWorks 6.9.
> 
> We could build EPICS Base 3-14-12-4 for
> CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
> 
> But when I am trying to build the same for :
> CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc604_long

Why are you building that architecture as well? The vxWorks-ppc32 target
binaries can be used on ppc604 cpus, and I recommend using the more
generic target nowadays (as does Wind River I believe).

> we are getting following errors during the  ‘make’ process:
> 
> C:/WindRiver/vxworks-6.9/target/h/stdio.h:349: warning: 'int voprintf(int (*)(...), _Vx_usr_arg_t, const char*, __va_list_tag*)' is deprecated
> (declared at C:/WindRiver/vxworks-6.9/target/h/stdio.h:347)
> ../../../src/libCom/fdmgr/fdmgr.cpp: In member function 'virtual epicsTimerNotify::expireStatus timerForOldFdmgr::expire(const epicsTime&)':
> ../../../src/libCom/fdmgr/fdmgr.cpp:154: error: unable to find a register to spill in class 'FLOAT_REGS'

I get exactly the same error when I try to build that target with
VxWorks 6.9 on a Linux host. With VxWorks 6.8 it builds successfully, so
this has to be related to the change from gcc 4.1.2 to 4.3.3.

> Any clues to solve this issue will be of help.

The only differences between those two targets are some of the flags
given to the compiler; for the ppc604 it gets
    -DCPU=PPC604 -mcpu=604 -mstrict-align -fno-implicit-fp
while for the ppc32 it gets
    -DCPU=PPC32 -mstrict-align

Removing the -fno-implicit-fp flag does seem to fix the build problem
for the ppc604 target, but I haven't tested the resulting code. Without
that flag, gcc is free to make use of floating-point registers to hold
non-fp values, which is a problem if it does that when compiling an
interrupt service routine that does not save the floating-point
registers. That was why we added that flag to our builds in the first
place, although that was with an older compiler version when the flag
was spelled -mno-implicit-fp instead.

If you want to remove it, change the assignment of ARCH_DEP_CFLAGS_4 in
the file base/configure/os/CONFIG.Common.vxWorks-ppc604.

The vxWorks-ppc32 target does currently not use this flag, but I wonder
whether it should. Adding it causes both fdmgr.cpp and epicsTimer.cpp to
fail to build though, so that's a bit of a show-stopper...

- Andrew
-- 
People everywhere confuse what they read in newspapers with news.
-- A. J. Liebling

Replies:
RE: EPICS on vxWorks Amit Chauhan
References:
EPICS on vxWorks Amit Chauhan

Navigate by Date:
Prev: Support for hivolt power supply Emma Shepherd
Next: Re: Support for hivolt power supply Jörn Wüstenfeld
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018 
Navigate by Thread:
Prev: EPICS on vxWorks Amit Chauhan
Next: RE: EPICS on vxWorks Amit Chauhan
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018 
ANJ, 17 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·