Frequently Asked Questions
Using resources from Linaro
Linaro provide a number of resources for ARM open source development from the Downloads section.
These resources are useful both for customers developing new ARM based hardware and for customers evaluating ARM based systems using commonly available development platforms.
This page attempts to provide an overview of these resources and answer some of the common questions. Where appropriate we use ARM's own Versatile Express based hardware and Fast Model / RTSM platforms as examples.
Support for Linaro deliverables
Linaro is a not for profit engineering organisation and deliverables are provided with no entitlement to support (from either Linaro or ARM).
Linaro packaged builds and components
Linaro provides two main classes of resource
- Packaged Evaluation Builds
Packaged Evaluation Builds
LEB stands for Linaro Evaluation Build. These are full system images built using the latest stable releases of Linaro versions of development tools, Linux kernel, GCC, etc. They provide users with a fast access to a working software stack without the need to build components from source. For more information see the Linaro FAQ What are Linaro Evaluation Builds? from the Downloads page.
Android and Ubuntu Linux builds (LEBs) are available for ARM Versatile Express platforms. More information is available by following the "DOWNLOAD FOR" link for Versatile Express, this provides:
- Release Notes: On supported features and bugs
Binary Image Installation: The simplest use case is to extract the provided <.img> file directly to an SDcard (alternatively the Linaro Media create tools can be used)
- Building from Source: There are various reasons why customers may wish to re-build or modify the supplied components (usually the Linux kernel) from sources. This tab provides information on the configs and GIT branch used to generate the binaries in the LEB release
- Firmware Update: Information on configuring the Versatile Express hardware and the UEFI bootloader
- Fast Model / RTSM: Specific instructions for customers using ARM's Versatile Express Model.
There is also a LEB demonstrating a Linux software stack running on the ARMv8 Foundation Model.
LEBs will shortly be replaced by Engineer and Member builds. Engineering builds are created according to requirements from the different Working Groups at Linaro. Memeber builds are specific builds as agreed between Linaro Members and their Landing Teams. These Member builds may re-use Engineering builds as a base, but then tailored based on the Member’s requirements.
The following are components released by Linaro which include additional patches that are being pushed in respective upstream project:
GCC – An optimised version of the GNU Compiler Collection. GCC is the default Compiler for Linux. The version available from Linaro includes additional patches queued for upstream, such as support and tuning for newer ARM processors, such as Cortex-A15. Linaro provide prebuilt native and cross GCC binaries for Linux and Windows hosts.
GDB – An optimised version of the GNU Debugger. GDB is the software debugger for Linux.
Binutils – An optimised version of GNU Binutils, including binary tools like the ld linker on Linux.
QEMU – A maintained version of QEMU as open source machine emulator and virtualiser.
Linux Kernel – There are a several Linux kernel trees available from Linaro aimed at different aspects. These are discussed in more detail below.
U-boot – a version of the latest stable release with patches queued for upstream.
UEFI – a version of the latest stable release including patches queued for upstream.
KVM – a version of the latest release including patches queued for upstream.
Filesystems – various options of filesystems built using Linaro based artefacts like Linaro’s GCC version etc. See below for details on what is contained.
Nano – Provides a very minimum rootfs that's contains a fully function support for apt (the package management system used by Debian and Ubuntu). This image only provides console support, and should be used in case you want a fast and small image to develop and verify the kernel and system functionality.
Developer – As developers often need a minimum-console based image with extra developer tools integrated by default, the developer rootfs was created. This image is based on Nano, but also deploying a working toolchain, debuggers and also additional development and profiling tools needed by kernel and system developers. This is being phased out (as of when?)?
Desktop – The Ubuntu Desktop rootfs is basically a stock Ubuntu Desktop environment, with a few extra packages and configs to make it customized for Linaro. This image should provide the exact same environment one would find with usual Ubuntu installations, with Unity, Firefox and all the components available in the Ubuntu CD images.
ALIP – ALIP is a small distribution used for bringing up ARM boards by ARM internally and by various customers. It provides a small and fast filesystem that can be used with ARM's Versatile models and hardware platforms, without the extra complexity from a complete desktop stack. Older prebuilt ALIP images have previously been available directly from the ARM website or supplied with product deliverables. Currently ALIP is based on LXDE (Lubuntu), with lightdm, X11 and chromium as the default graphic applications.
Open Embedded – The Open Embedded builds provided are aimed solely for those that wish to test against ARM’s upcoming ARMv8 Architecture. The OE builds contain the latest work on the artefacts listed above, and is used testing ARMv8 only.
Android - Linaro produces an Android build based on the latest code available from the upstream AOSP (Android Open Source Project). The Linaro build of Android differs from Google’s build as it uses outputs from Linaro, like GCC, UEFI, etc., and is synced with AOSP at least once a month.
Linaro Linux kernel trees & Device Tree
Linaro maintain many Linux kernel trees where most are focused on internal development work. The work from these trees is consolidated into linux-linaro-tracking before being queued for submission upstream. For most purposes <git://git.linaro.org/kernel/linux-linaro-tracking.git> is the resource to use, unless you have specific requirements for work from the development trees.
There is a corresponding <git://git.linaro.org/kernel/linaro-aarch64.git> for ARM v8 work.
Linaro kernels (with the exception of Cortex-A9) are built to use device tree, allowing one common kernel config for all Versatile Express variants. For more information on ARM SoC Linux support and device tree see the ARM SoC Checklist from Free Electrons.
Device tree files for Versatile Express are supplied with the Linaro Evaluation builds. They are also maintained directly by ARM and available here.
When would I go to kernel.org and when would I use Linux kernels from Linaro?
The main motivations for using Linaro kernels in your development work are:
- To take advantage of content/modifications not yet available upstream (for example the evolving support for ARM's big.LITTLE MP scheduler).
- As a means of better upstreaming changes. By submitting patches against Linaro’s kernels to the Linaro Developer mailing list, a much higher quality patch review can be carried out as members of different subsystems will be able to review simultaneously.
However generally customers working on shipping product are encouraged to use the latest stable Linux kernel from kernel.org.
The industry is moving towards using UEFI as the defacto boot loader on all architectures. It is recommended to use UEFI wherever possible. UEFI is supported on ARM's Versatile Express platform and used with the Linaro Evaluation builds uboot is still available from Linaro and includes support for some existing devices, but is no longer maintained.
Boot sequence overview
Exact boot sequence is platform specific and subject to change. The following high level description applies to the Versatile Express LEB package, at time of writing. Specific instructions can be found with the relevant LEB.
Supplied <.img> file used to create a /boot and /rootfs partition on an SDcard. The /boot partition contains a device tree blob (dtb), kernel and initrd. The /rootfs partition contains a filesystem
- UEFI bootloader installed to Versatile Express NOR flash
- Boot Device entry created to load the kernel, dtb and initrd into RAM
- UEFI writes the supplied kernel arguments into the device tree before launching the kernel. The kernel will mount the initrd filesystem, before running further configuration scripts and mounting the main rootfs
big.LITTLE and Versatile Express TC2
ARM's Versatile Express V2P-CA15-CA7 (TC2) platform allows customers to evaluate big.LITTLE systems. Here are two broad approaches for big.LITTLE switching:
- big.LITTLE MP
Cluster Migration and the Linaro Virtualizer Example
Linaro host an ARM Virtualizer software example that demonstrates cluster migration capability on a coherent dual cluster system, composed of a Cortex-A7 cluster and a Cortex-A15 cluster here.
The supplied example uses a simple bare-metal kernel payload, which the user can take as a basis for integrating with a real software stack. A pseudo random switch (i.e. not one based on loading and/or DVFS) instigates the move between clusters.
Developers need to download an evaluation copy of Fast Models/RTSM to run this example.
Aims to add support into the Linux scheduler for non symmetric heterogeneous systems. This work is being coordinated by Linaro with a view to providing upstreamed support towards the end of 2013.
Preliminary support is now available in linux-linaro-tracking.git and the current (12.11) LEB for Versatile express. This includes support for running a big.LITTLE MP kernel on ARM's Versatile V2P-CA15-CA7 (TC2) platform.
Note that this kernel has hard dependencies on specific versions of the Versatile boot monitor and DCC (daughter card controller) firmware. These are specified in the Firmware tab of the LEB build.
Real-Time Kernel patches
At present Linaro does not provide a Real Time kernel. It is however possible to build a Linux kernel with PREEMPT_RT enabled using upstream sources available from here, in combination with the kernel configuration detailed in the “Building from Source” tab on the Versatile Express Download page.
Hard Floating point changes and library compatibility
GCC and filesystems provided by Linaro are now configured to use hard floating point libraries and linkage for ARMv7-A by default. e.g.:
arm-linux-gnueabihf-gcc -march= armv7-a test.c -o test
If you are cross compiling applications for Linaro filesystems you must make sure that you have updated GCC to a recent hard float variant and rebuilt your application. Some older toolchains still use soft floating point linkage.
Note: There are limitations relating to soft VFP (emulation) support. The supplied libraries only include ARMv4T soft float multilib to cover building baremetal applications like u-boot. So a valid build option is:
arm-linux-gnueabihf-gcc test.c -marm -march=armv4t -mfloat-abi=soft -o test
Where do I find ARM Architecture v8 deliverables?
Linaro released ARMv8 images to enable developers to start using Linux with ARMv8 platforms (Fast Models/RTSM) here.
The link above provides access to a software model, prebuilt toolchain, kernel and filesystem for early access to exploration and development of the ARM v8 architecture.
ARM/FAQ (last modified 2015-10-06 11:17:14)