Discussion:
[yocto] GCC on ARM
Gary Thomas
2017-03-31 04:07:25 UTC
Permalink
[slightly off-topic]

I work with a number of embedded ARM devices, all with different
processors, hence somewhat different tuning and build directories:
Raspberry-Pi (1,2,3 - mostly 3):
TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4 callconvention-hard cortexa7"
build dirs:
tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi
BeagleBoneBlack:
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
build dirs:
tmp/work/armv7ahf-neon-poky-linux-gnueabi
i.MX6:
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard cortexa9"
build dirs:
tmp/work/cortexa9hf-neon-poky-linux-gnueabi
tmp/work/cortexa9hf-neon-mx6qdl-poky-linux-gnueabi
tmp/work/cortexa9t2hf-neon-mx6qdl-poky-linux-gnueabi

What I'm wondering is, except for the obvious programs that use SoC specific
functions like the IPU/GPU on the i.MX6, how different are these really? So
much so that they have to all have unique binaries? Surely I could build
busybox or python and run the same binary on all three?
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
--
Khem Raj
2017-03-31 05:07:27 UTC
Permalink
Post by Gary Thomas
[slightly off-topic]
I work with a number of embedded ARM devices, all with different
TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4
callconvention-hard cortexa7"
tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
tmp/work/armv7ahf-neon-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard cortexa9"
tmp/work/cortexa9hf-neon-poky-linux-gnueabi
tmp/work/cortexa9hf-neon-mx6qdl-poky-linux-gnueabi
tmp/work/cortexa9t2hf-neon-mx6qdl-poky-linux-gnueabi
What I'm wondering is, except for the obvious programs that use SoC specific
functions like the IPU/GPU on the i.MX6, how different are these really? So
much so that they have to all have unique binaries? Surely I could build
busybox or python and run the same binary on all three?
You can chose a least common denominator and use that as DEFAULTTUNE for
all your machines. May be like armv7at2-neon
Gary Thomas
2017-03-31 05:33:14 UTC
Permalink
Post by Khem Raj
Post by Gary Thomas
[slightly off-topic]
I work with a number of embedded ARM devices, all with different
TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4
callconvention-hard cortexa7"
tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
tmp/work/armv7ahf-neon-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard cortexa9"
tmp/work/cortexa9hf-neon-poky-linux-gnueabi
tmp/work/cortexa9hf-neon-mx6qdl-poky-linux-gnueabi
tmp/work/cortexa9t2hf-neon-mx6qdl-poky-linux-gnueabi
What I'm wondering is, except for the obvious programs that use SoC specific
functions like the IPU/GPU on the i.MX6, how different are these really? So
much so that they have to all have unique binaries? Surely I could build
busybox or python and run the same binary on all three?
You can chose a least common denominator and use that as DEFAULTTUNE for
all your machines. May be like armv7at2-neon
That's good to know, thanks.

What would I be giving up? Anything of substance/importance?
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
--
Khem Raj
2017-03-31 17:22:25 UTC
Permalink
Post by Gary Thomas
Post by Khem Raj
Post by Gary Thomas
[slightly off-topic]
I work with a number of embedded ARM devices, all with different
TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4
callconvention-hard cortexa7"
tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
tmp/work/armv7ahf-neon-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard cortexa9"
tmp/work/cortexa9hf-neon-poky-linux-gnueabi
tmp/work/cortexa9hf-neon-mx6qdl-poky-linux-gnueabi
tmp/work/cortexa9t2hf-neon-mx6qdl-poky-linux-gnueabi
What I'm wondering is, except for the obvious programs that use SoC specific
functions like the IPU/GPU on the i.MX6, how different are these really? So
much so that they have to all have unique binaries? Surely I could build
busybox or python and run the same binary on all three?
You can chose a least common denominator and use that as DEFAULTTUNE for
all your machines. May be like armv7at2-neon
That's good to know, thanks.
What would I be giving up? Anything of substance/importance?
I doubt anything. Optimizations are oversell.
Andre McCurdy
2017-03-31 18:41:24 UTC
Permalink
Post by Khem Raj
Post by Gary Thomas
[slightly off-topic]
I work with a number of embedded ARM devices, all with different
TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4
callconvention-hard cortexa7"
tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
tmp/work/armv7ahf-neon-poky-linux-gnueabi
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard cortexa9"
tmp/work/cortexa9hf-neon-poky-linux-gnueabi
tmp/work/cortexa9hf-neon-mx6qdl-poky-linux-gnueabi
tmp/work/cortexa9t2hf-neon-mx6qdl-poky-linux-gnueabi
What I'm wondering is, except for the obvious programs that use SoC specific
functions like the IPU/GPU on the i.MX6, how different are these
really?
These tuning features refer to the CPU core only - not the rest of the
SoC. Any differences in GPU etc are not relevant.
Post by Khem Raj
Post by Gary Thomas
So
much so that they have to all have unique binaries? Surely I could build
busybox or python and run the same binary on all three?
CPU cores are generally backwards compatible. The Raspberry-Pi 3
(armv7ve) could run binaries created for the other two (armv7a), but
not necessarily the other way around. e.g. armv7ve adds support for
integer division in HW, which isn't supported by armv7a, so if busybox
contains any integer division operations (which it almost certainly
does) then a busybox binary built for Raspberry-Pi 3 would fail to run
on the other two.
Post by Khem Raj
You can chose a least common denominator and use that as DEFAULTTUNE for
all your machines. May be like armv7at2-neon
The common denominator for the examples above would include hardfloat, ie:

DEFAULTTUNE = "armv7athf-neon"
Post by Khem Raj
--
_______________________________________________
yocto mailing list
https://lists.yoctoproject.org/listinfo/yocto
--

Loading...