EPICS Controls 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  2019  2020  2021  2022  2023  2024  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  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: EPICS on vxWorks
From: Andrew Johnson <[email protected]>
To: Amit Chauhan <[email protected]>, <[email protected]>
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  2019  2020  2021  2022  2023  2024 
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  2019  2020  2021  2022  2023  2024 
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 ·