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  2014  2015  <20162017  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  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: EPICS/RTEMS Compilation errors
From: Jianxun Yan <[email protected]>
To: Benjamin Franksen <[email protected]>, [email protected]
Date: Mon, 28 Nov 2016 13:40:21 -0500
Thank you, Ben.
The linker flags for RTEMS is something like this

c/src/lib/libbsp/arm/altera-cyclone-v/make/custom/altcycv.inc:CPU_CFLAGS = -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mtune=cortex-a9

And for EPICS is
src/tools/O.RTEMS-altcycv_devkit/epics-base-RTEMS-altcycv_devkit.pc:Cflags: -I${includedir_osi} -I${includedir_osd} -I${includedir_comp} -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mtune=cortex-a9 -DUNIX -DMY_DO_BOOTP=NULL

Both RTEMS & EPICS use -mfloat-abi=hard.

The reason causes the error maybe EPICS base is not compatible with RTEMS 4.11 yet, just like what Andrew Johnson said.

Thanks,
Jay

On 11/28/2016 12:19 PM, Benjamin Franksen wrote:
On 28.11.2016 18:06, Michael Davidsaver wrote:
On 11/28/2016 11:54 AM, Benjamin Franksen wrote:
On 28.11.2016 15:49, Jianxun Yan wrote:
...
Not sure but

   ".../librtemscpu.a uses VFP register arguments, libComTestHarness does
not"

sounds a lot like a mismatch of compiler or linker flags between the BSP
and EPICS.

Also my first guess for what "VFP" means would be "virtual floating
point" i.e. use FP emulation instead of a 'real' FP unit.
VFP = Vector Floating Point aka. hard float.

https://www.arm.com/products/processors/technologies/vector-floating-point.php

The linker is catching an otherwise hard to detect condition where
different object files are compiled with different function calling
conventions (ABI).  In this case whether function arguments are pass in
VFP registers.

The relevant GCC option is '-mfloat-abi=soft|softfp|hard'.  I would
guess that different values were given when building the RTEMS libraries
vs. EPICS Base.

https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gcc/ARM-Options.html#ARM-Options
Thanks for correcting my half-baked guesses. At least I was right that
it has to do with a compiler flag mismatch... ;-)

Cheers
Ben



References:
EPICS/RTEMS Compilation errors Jianxun Yan
Re: EPICS/RTEMS Compilation errors Benjamin Franksen
Re: EPICS/RTEMS Compilation errors Michael Davidsaver
Re: EPICS/RTEMS Compilation errors Benjamin Franksen

Navigate by Date:
Prev: Re: EPICS/RTEMS Compilation errors Andrew Johnson
Next: Re: EPICS/RTEMS Compilation errors Jianxun Yan
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: EPICS/RTEMS Compilation errors Benjamin Franksen
Next: Re: EPICS/RTEMS Compilation errors Andrew Johnson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 28 Nov 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·