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  <20092010  2011  2012  2013  2014  2015  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  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: New EPICS architecture: ARM EABI
From: Michael Abbott <[email protected]>
To: EPICS Tech Talk <[email protected]>
Date: Wed, 18 Feb 2009 09:00:34 +0000 (GMT)
The attached patch adds the appropriate configure/os files to support the 
ARM EABI architecture.  The new target is called linux-arm_gnueabi (sorry 
about the clunky name).

The ARM EABI is a newer ABI (Application Binary Interfac), I think the E 
stands for Embedded.  The principal advantage of the ARM EABI is that it 
supports soft floating point: for an embedded system this can make a huge 
difference (unless you've already taken a lot of care to avoid using 
floating point in the first case -- a little tricky in the case of 
EPICS...)

This architecture is nearly identical to the original linux-arm (old ABI) 
architecture, with the following differences:

 - different name (of course)
 - different compiler.  Here I've named the compiler 
	arm-xscale-linux-gnueabi 
   but any arm-*-linux-gnueabi prefix should serve.
 - different floating point format: another advantage of EABI is that 
   (emulated) floating point numbers are in proper IEEE-754 format.

To build an ARM EABI toolchain I recommend crosstool-ng, which can be 
downloaded from
	http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool
If you select the arm-unknown-linux-gnueabi sample, you'll get an NPTL 
compatible C library as well, which on an ARM v5 (eg, XScale) I strongly 
recommend.
diff -urN base-3.14.9-original/configure/os/CONFIG.Common.linux-arm_gnueabi base-3.14.9/configure/os/CONFIG.Common.linux-arm_gnueabi
--- base-3.14.9-original/configure/os/CONFIG.Common.linux-arm_gnueabi	1970-01-01 01:00:00.000000000 +0100
+++ base-3.14.9/configure/os/CONFIG.Common.linux-arm_gnueabi	2009-02-13 09:29:38.000000000 +0000
@@ -0,0 +1,26 @@
+# CONFIG.Common.linux-arm_gnueabi
+#
+# This file is maintained by the build community.
+#
+# Definitions for linux-arm_gnueabi target builds
+# Sites may override these definitions in CONFIG_SITE.Common.linux-arm_gnueabi
+#-------------------------------------------------------
+
+# Include definitions common to all Linux targets
+include $(CONFIG)/os/CONFIG.Common.linuxCommon
+
+ARCH_CLASS = arm
+
+ifeq ($(BUILD_CLASS),CROSS)
+    GNU_TARGET = arm-xscale-linux-gnueabi
+
+    # prefix of compiler tools
+    CMPLR_SUFFIX =
+    CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
+
+    # Provide a link-time path for shared libraries
+    SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
+
+    # Provide a link-time path for products
+    PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
+endif
diff -urN base-3.14.9-original/configure/os/CONFIG.linux-x86.linux-arm_gnueabi base-3.14.9/configure/os/CONFIG.linux-x86.linux-arm_gnueabi
--- base-3.14.9-original/configure/os/CONFIG.linux-x86.linux-arm_gnueabi	1970-01-01 01:00:00.000000000 +0100
+++ base-3.14.9/configure/os/CONFIG.linux-x86.linux-arm_gnueabi	2009-02-13 09:29:38.000000000 +0000
@@ -0,0 +1,24 @@
+# CONFIG.linux-x86.linux-arm_gnueabi
+#
+# Definitions for linux-x86 host - linux-arm_gnueabi target builds
+# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-arm_gnueabi
+#-------------------------------------------------------
+
+# Include common gnu compiler definitions
+include $(CONFIG)/CONFIG.gnuCommon
+
+GNU_DIR = /usr
+
+# CROSS_CPPFLAGS=
+# STATIC_BUILD=YES
+# SHARED_LIBRARIES=NO
+
+# Copied from x86.x86
+STATIC_LDFLAGS_YES= -Wl,-Bstatic
+STATIC_LDFLAGS_NO= 
+STATIC_LDLIBS_YES= -Wl,-Bdynamic
+STATIC_LDLIBS_NO= 
+
+SHRLIB_LDFLAGS +=  -shared -fPIC
+LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC
+
diff -urN base-3.14.9-original/configure/os/CONFIG_SITE.linux-x86.linux-arm_gnueabi base-3.14.9/configure/os/CONFIG_SITE.linux-x86.linux-arm_gnueabi
--- base-3.14.9-original/configure/os/CONFIG_SITE.linux-x86.linux-arm_gnueabi	1970-01-01 01:00:00.000000000 +0100
+++ base-3.14.9/configure/os/CONFIG_SITE.linux-x86.linux-arm_gnueabi	2009-02-13 09:32:16.000000000 +0000
@@ -0,0 +1,10 @@
+#  CONFIG_SITE.linux-x86.linux-arm_gnueabi
+#
+# Site specific definitions for linux-x86 host - linux-arm target builds
+#-------------------------------------------------------
+
+# Diamond:
+GNU_DIR = /dls_sw/targetOS/x-tools/gcc-4.3.2-glibc-2.7/arm-xscale-linux-gnueabi
+
+# anj@aps:
+#GNU_DIR = /local/anj/cross-arm/gcc-3.4.5-glibc-2.3.6/arm-linux

Navigate by Date:
Prev: First turn Orbit find using DBPM or other measurement technique Kiman Ha
Next: cap5 Perl library GOURNAY Jean-Francois
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: First turn Orbit find using DBPM or other measurement technique Kiman Ha
Next: cap5 Perl library GOURNAY Jean-Francois
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·