1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 <2016> 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 <2016> 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== 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 thisc/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 issrc/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-OptionsThanks for correcting my half-baked guesses. At least I was right that it has to do with a compiler flag mismatch... ;-) Cheers Ben