Login

ARM The Architecture For The Digital World  

Linux Support for the ARM Architecture

Linux Penguin LogoLinux is an open source operating system running on all major processor architectures, including ARM processors. It is supported by a large group of engineers contributing back into the open source (similar process to the FSF's GNU tools). This makes Linux a very dynamic and fast moving operating system.
 
 


Key benefits of Linux on ARM 

  • Complete scalable operating system providing a reliable multi-tasking environment
  • Based on an open source model (GPL)
  • Leverage a wide range of UNIX and open source applications
  • Early availability on ARM processor-based platforms
  • Used in many ARM technology-based designs including networking and wireless products
  • Broad support through open discussion forums

Linux Operating System Development

ARM contributes support for RealView® development platforms and tools to the main Linux kernel. The other tabs contain Linux kernel images, patches and utilities to run Linux on ARM processors and RealView platforms. Linux is the version of Linux running on processors with a Memory Management Unit (MMU). Processors without MMU can run a modified version of Linux called uClinux. The uClinux tab provides pre-built uClinux images for specific ARM processors.

Please refer to kernel.org for new versions of the Linux kernel and new developments. Public forums are available to review patches and information related to Linux development on ARM, links are also available from the following Wiki site . Source and binary versions of the GNU GCC compiler are available from CodeSourcery as well as discussion groups.

LinaroLinaro™ has been created as a company to bring together the open source community and the electronics industry to jointly work on key projects, deliver open source tools, reduce fragmentation and provide common foundations for Linux based distributions and stacks to work with. More information is available from the Linaro website.

Additionally, ARM works with the open source community and Linux distributions as well as commercial Linux partners including:

ARM does not provide generic Linux support, please refer to the following FAQ for more information.


Overview

The filesystem images available on this page include a set of applications tested with ARM RealView® platforms. More complete filesystems can be built using information and packages supplied on www.linaro.org.

The 2.6 Linux kernel provided on these pages include support for the following processors:

The following components are provided to support these platforms:

  • Boot loader: U-Boot
  • Pre-built Linux kernel, including sources and a binary image
  • Configuration files for building the kernel
  • Filesystem with pre-built utilities and applications
  • Notes describing Linux installation

Pre-built Kernel Images


 Platform \ Images

 U-Boot

 Linux Images

 RealView Versatile PB926/AB926Versatile ABVersatile PBVersatile AB-PBconfig
 RealView EB and PB RealViewRealView-v6config
RealView-v6-smpconfig
 RealView PB-A8RealViewRealView-v7-thumbconfig
 RealView PBX-A9** RealViewRealView-v7-smp-thumbconfig
Versatile ExpressVersatile ExpressVExpress-v7-smp-thumb, config
Versatile Expressuse boot-loader provided with the platform VExpress-Cortex-A5/A15-smp-thumb, config
VExpress-Cortex-A15-smp-LPAE-thumb, config

A copy of the mkImage utility used to produce U-Boot images is available from the following link.

Patch-2.6.38-arm1.gz (1.5MB) should be used against kernel.org 2.6.38 kernel source tree to produce the binary kernel images supplied on this page. This patch includes support for running the Linux kernel in Thumb-2 state on ARMv7 processors.

The kernel provided with this release is compiled with EABI support and supports running of Thumb-2 based applications, handling of VFP and NEON registers. 

The Linux kernel include support for the following Primecells:

  • UART (PL010, PL011), Interrupt Controller (VIC, GIC), KMI (PL050), RTC (PL030), Timers
  • VGA/LCD (PL110), AACI (PL041), VFP, Ethernet (PL092), LAN9118, LAN91C111, MMC
  • L2CC (PL220, PL310), USB

U-Boot binaries available for download on this page have been compiled from the following Sources. Patches are also contributed to the U-Boot project list.

Pre-built Filesystem Images

The following images can be used with each ARM platform:

Please consult the README file in the ARM Embedded Linux repository with regard to access to the source code of these packages. Information about ARM public GIT repositories is available at the following location.

These images have been generated using GCC 4.5.1 and GNU libc 2.11.

(**) Note that on RealView PBX-A9 not all of the cores on this board have NEON. When running applications with NEON, one should check which CPU these are executed on. The pre-built ARMv6 cramfs should run without problem on this platform.

Licensing

The source code used to build these binary packages is available under the terms of the GNU Public License. This software is provided with NO WARRANTY, to the extent permitted by applicable law. The software is provided "as is" without warranty of any kind, either expressed or implied, including the implied warranties of merchantability or fitness for a particular purpose.

Note

Only pre-built images for ARM processors from ARMv5T onwards are provided on this page. Images for ARMv4 processors, marked with an asterisk (*) in the above processor list, can be built from source.


Overview

Processors without an MMU can run a modified version of Linux called uClinux. The filesystem images and patches provided on this page include support for uClinux including a set of applications tested with ARM RealView platforms. These are available for the following ARM processors:

Please refer to www.uclinux.org for more information, documentation, mailing lists and additional resources. The table below contains pre-built uClinux image for ARM RealView platforms for ARM1156 and Cortex-R4.

 Platform \ Images

 U-Boot

 uClinux kernel Image

 RealView

RealView

RealView-v6-nommuconfig
RealView-v7-nommu-thumbconfig

Patch-2.6.35-arm1.gz (187 KB) contains necessary changes to be applied against 2.6.35 kernel source tree to produce binary uClinux kernel images. These kernel images have been produced using GNU GCC 4.3.2.

The following filesystem images can be used with the supplied uClinux kernel images:  

  • Base cramfs (2.5 MB) - Base uClinux applications and libraries cramfs image
  • Thumb-2 cramfs (3 MB) - Thumb-2 uClinux applications and libraries cramfs image

The uClinux filesystem images were produced from BuildRoot.

Licensing

The source code used to build these binary packages is available under the terms of the GNU Public License. This software is provided with NO WARRANTY, to the extent permitted by applicable law. The software is provided "as is" without warranty of any kind, either expressed or implied, including the implied warranties of merchantability or fitness for a particular purpose.


Overview

AndroidAndroid is a software stack for mobile devices using the Linux kernel and applications. The Android SDK provides the tools and APIs to develop applications on Android platforms using the Java programming language. Android applications run in their own process with their own instance of the Dalvik Virtual Machine (VM). Dalvik is a register-based virtual machine (as opposed to JVM which is a stack-based virtual machine) and executes classes compiled by a Java-like language compiler. Performance-critical applications can be written in native code using the Android NDK which is a companion tool to the SDK. ARM software enablement blog section includes entries on how to setup and run Android on ARM platforms (see the following article).

This page includes information and sample instructions on how to build and run Android on ARM RealView® platforms using Linux kernel versions available from http://www.arm.com/linux. Both GIT version-control system and the Repo tool built on top of GIT are used to manipulate the source code.

In addition, the ARM Solution Center for Android (SCA) offers resources to developers who are new to Android or to ARM. 

Pre-built kernel images

 Platform \ Images U-Boot Linux Kernel Image
 RealView PB-A8 RealView PB-A8-uImage, config
 RealView PBX-A9 RealView PBX-uImage, config
PBX-noNeon-smp-uImage, config
 Versatile Express Versatile Express

 VExpress-uImage-mp, config-mp

The armdroid1 patch is to be applied on 2.6.38 vanilla kernel. The source tree is also available on the following git repo.

The following image is a pre-built (plain) 2.6.38 Linux kernel for Cortex-A5 core tile on Versatile Express with corresponding config file.

A set of detailed instructions on how to build Android for ARM RealView platforms are available on the Linux-arm.org Wiki page complementing recent blog posts.

Licensing

The source code used to build these binary packages is available under the terms of the GNU Public License. This software is provided with NO WARRANTY, to the extent permitted by applicable law. The software is provided "as is" without warranty of any kind, either expressed or implied, including the implied warranties of merchantability or fitness for a particular purpose.


Other ARM products suitable for use with Linux include:

Processors and Related Technology

Graphics

Software Development


GNU Tools Overview

ARM contributes to the GNU compiler project to track the evolution of the ARM architecture and CPU roadmap, to ensure availability of a high-quality GNU toolchain for ARM.

This toolchain supports all current ARM architectures and processors (including the Thumb-2 instruction set and ARM Architecture v7) with a roadmap to support future processors and architectures.

The toolchain complies to the latest ARM Application Binary Interface, and can hence interwork with ARM RealView Development Suite or any other ABI-compliant toolchain. Users can take advantage of the optimized codesize and performance of a commercial, professional toolchain from ARM together with code built using Open Source tools.

Updated verions of the GNU GCC compiler can be accessed from Linaro at the following locations:

 
Maximise