The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)
ARM
Contents |
ARM in Mer
Mer uses and discusses ARM technology extensively - however the terminology is complex and certainly confusing to newcomers.
This page is intended as a very simple introduction and an aide to clarifying the ARM terminology that may be encountered.
ARM CPUs are used in more embedded and integrated hardware than X86 and that hardware is developed under license by a variety of companies.
This has lead to some important issues:
- Large variety of ARM cores with varying instruction sets
- Lots of SoCs : System on a Chip (ie tightly integrated graphics, I/O etc).
- Code compiled for one ARM system is not likely to work on another
- Mixing code compiled with different ‘extensions’ may not work (this is particularly important with shared libraries)
Confusingly there are a lot of names/numbers for these variations - and the names/numbers are not always used in an obvious manner:
Eg the Nokia N9 uses an OMAP 3630 and “Cortex-A8” … which is an ARMv7 architecture. In the OBS it’s scheduled in the armv8el scheduler, Mer on this system uses hardfp and thumb extensions and produces armv7hl rpms…. Obvious eh?
The “v” numbers: ARMv1 … ARMv8 and the non-v numbers : ARM11, ARM7, Cortex-A8
The “v” numbers refer to generations of ARM architectures and broadly reflects extensions to instruction sets and introductions of new subsystems.
The non-v numbers are essentially just a marketing name within the architecture.
See the table on this page for the relationship between eg : ARMv3 and ARM6, ARM7
Thumb
The Thumb and Thumb2 extensions allow code can be compiled in a denser format that will (See also the schedulers in the OBS used in Mer.)
Floating point
Some ARM chips have floating point unit(s) - either VFP or NEON (NEON includes VFP support)
SoCs - OMAP, Snapdragon, Tegra, Exynos
Rather than referring to the specific ARM chip, the SoC name and number is sometimes used. Eg an OMAP 3630 contains a “Cortex-A8”
Qemu
Qemu is used to emulate ARM instructions on a non-ARM system (typically a PC). This emulation is suitable for build purposes but does not emulate enough hardware for effective application QA.
OBS
Build names
Mer builds are named armv7hl, armv7l etc
- arm …
- v7 refers to the architecture
- h indicates that it utilizes the floating point registers for passing arguments between functions, the so-called hardfp ABI
- l indicates that the it is little endian
- t refers to that it uses thumb2
- n refers to that it uses NEON extensions
OBS Schedulers
The OBS provides a number of uniquely named schedulers but these are not named appropriately for Mer and we use armv7el scheduler for armv6l, armv7l builds and armv8el scheduler for armv7hl.