Name | Last modified | Size | License | |
---|---|---|---|---|
Parent Directory | ||||
MANIFEST | 12-Jan-2018 05:01 | 565 | open | |
MD5SUMS | 12-Jan-2018 05:01 | 147 | open | |
boot.tar.bz2 | 12-Jan-2018 05:01 | 5.6M | open | |
kernel_config | 12-Jan-2018 05:01 | 52.9K | open | |
lava-job-info | 12-Jan-2018 05:01 | 74 | open | |
linaro_android_build_cmds.sh | 12-Jan-2018 05:01 | 3.4K | open | |
linaro_kernel_build_cmds.sh | 12-Jan-2018 05:01 | 1.7K | open | |
pinned-manifest.xml | 12-Jan-2018 05:01 | 41.4K | open | |
source-manifest.xml | 12-Jan-2018 05:01 | 52.5K | open | |
system.tar.bz2 | 26-Feb-2018 15:25 | 155.3M | open | |
userdata.tar.bz2 | 12-Jan-2018 05:01 | 661.7K | open | |
vexpress.img.bz2 | 26-Feb-2018 15:25 | 161.8M | open |
Linaro releases monthly binary images for the ARM Versatile Express including support for A9, A5, A15 (TC1), TC2 (big.LITTLE) CoreTiles and RTSM.
For support matters related to ARM hardware or firmware images downloaded from ARM sites, please contact ARM support
This release includes Linaro Android Jelly Bean and Ubuntu Precise Pangolin for Versatile Express and Real-Time System Model (RTSM). The images are able to boot A5 (using U-Boot), A9 (ATAGS), TC1 and TC2 using UEFI. Sources are also made available so you can build your own images.
About the TC2 Evaluation Build
The TC2 CoreTile is the first example of a big.LITTLE system shipped by ARM and serves as a platform for development and test of big.LITTLE software. TC2 contains a tri-core Cortex-A7 cluster and a dual-core Cortex-A15 cluster linked using the CCI–400 coherent interconnect.
The release integrates big.LITTLE development work which can be traced in the big.LITTLE MP working group git repo . Note: This repository now has two main trees. The first, big-LITTLE-MP-exp-v12, collects experimental patches that have not yet been fully integrated and tested together. The second, and that used for the 12.11 evaluation build is big-LITTLE-MP-master-v12 which includes:
Scheduler modifications to support big.LITTLE
- per-task-load-average-v3-merged: Paul Turner’s patches enabling the calculation of load on a per-task basis.
- task-placement-v2: Morten Rasmussen’s patches using the per-task load to schedule threads on the big or LITTLE cores as appropriate. The patches take into account multiple domains when making decisions on task migration, with ftrace events added for tracking these migrations.
- New: Experimental patches for making load values invariant to frequency settings. This helps reduce the chance of unnecessary up migrations to big cores. Note These patches are configured out in the delivered binaries due to an interaction with the Versatile Express MMC card and a possible effect on boot time which has since been worked around. To enable these patches please update the kernel config to have CONFIG_HMP_FREQUENCY_INVARIANT_SCALE=y and rebuild the kernel.
- New: An initial version of patches from Vincent Guittot which attempt to pack small (low-load) tasks onto the Cortex-A7 cores and also to improving idle balancing
- New: A patch from Thomas Gliexner which supports a IRQ affinity mask being specified in the command line. This can be used to reduce unnecessary IRQ wakeups on Cortex-A15. For instructions see the irqaffinity entry in Documentation/kernel-parameters.txt
- arm-multi_pmu_v2 – enables the use of multiple PMU types or sources, for example profiling across both Cortex-A15 and Cortex-A7 clusters and getting results for CCI.
- scheduler-misc-v1 – miscellaneous scheduler patches complementing the MP work
Platform Support. In addition to the big.LITTLE MP work the TC2 platform support includes:
- CPUidle & CPUfreq support
- hwmon driver allowing, amongst other things, TC2’s power, current and energy measurements to be read through standard sysfs interfaces
- Common clocks implementation
- Regulator driver
- Drivers for previously hard-coded configuration interfaces
- Support self-hosted debugging through idle
- In addition to the CPU PMUs the perf framework supports the CCI-400 PMUs
The following patches are no longer part of the tracked branch as they have been accepted upstream. These will be removed from the release notes in the next cycle.
- per-cpu-thread-hotplug-v3-fixed
- cpu-hotplug-get_online_cpus-v1
- rcu-hotplug-v1
- arm-asymmetric-support-v3-v3.6-rc1
Where To Find More Information
More information on Linaro can be found on our website.
Feedback and Support
Subscribe to the important Linaro mailing lists and join our IRC channels to stay on top of Linaro development.
- Linaro Android Development mailing list
- Linaro Android IRC channel on irc.freenode.net at
#linaro-android
- Bug reports should be filed in Launchpad against the individual packages that are affected. If a suitable package cannot be identified, feel free to assign them to Linaro Android project.
- Questions? ask Linaro.
- Interested in commercial support? inquire at Linaro support
Fixed in this release
Android bugs:
- LP: #1051993 RCU stall on TC2
- LP: #893127 Vexpress: No sound in Android
- LP: #973466 Can’t build Thumb-2 kernels
UEFI bugs:
- LP: #1028319 UEFI: vexpress A5 crashes on boot
- LP: #1067780 UEFI: TC1 is unstable when booted via UEFI
Known Issues
UEFI Bugs:
- LP: #941995 UEFI: Don’t require UUID for MMC cards
- LP: #942155 UEFI: copy/paste doesn’t work over serial port
- LP: #942162 UEFI: vexpress A5 & TC1: No LCD/HDLCD support
- LP: #972623 UEFI: vexpress A9: flash to address zero
- LP: #1029848 UEFI: device tree is global, not per image
Android Bugs:
- LP: #1041153 lockdep error on Android reboot
- LP: #873283 Taking device screenshot using ddms tool fails
- LP: #987172 vexpress: YouTube video playback fails
- LP: #1083175 vexpress: Android: Recorded message is just a harsh loud noise
Generic Landing Team Bugs:
- LP: #1065633 Can’t access CCI on RTSM
- LP: #1074389 Kernel does not boot with LPAE enabled
- LP: #1081945 TC2 Android gives occasional “Error -11 while setting required OPP”
Linaro provides two methods for installing Linaro binary builds:
- Using a pre-built image, which you can download
- Assembling your own image using provided components
Pre-Installation Steps
Before any installation begins, it is important that you ensure your Versatile Express board has the latest firmware and boot loader installed. Please check the “Firmware Update” tab on this page for the latest updates and installation instructions.
Using pre-built image
Prerequisites
- Ubuntu 12.04 64 bit or newer on your desktop PC, which you can download from www.ubuntu.com
- 4GB SD card or larger
- Latest firmware installed onto the Versatile Express. Please see “Firmware Update” tab
- This release pre-built image (vexpress.img.bz2), which you can downloaded from the above list of artifacts or just click here
Installation Steps
- Unzip the downloaded pre-built image
- Insert SD card into your PC and note the assigned
'/dev/sdX'
dmesg
SDCARD=/dev/sdX # sdcard found from dmesg above
bzcat vexpress.img.bz2 | sudo dd bs=64k of=$SDCARD
When the image is created, skip down to the section “Booting the image”.
Note: Windows users may use the Image Writer for Windows
Building a custom image using pre-built components.
Sometimes, you may wish to build your own custom image for a Versatile Express. Perhaps you wish to use a more recent snapshot of the hardware pack for Ubuntu or take the latest Android build. Whatever the reason, you will want to use the Linaro Image Tools to create a custom image.
Using components to generate the image will yield the same functionality found in the pre-built image of the same release.
Prerequisites
- Ubuntu 12.04 64 bit or newer on your desktop PC, which you can download from www.ubuntu.com
- Download Artifacts from above or use the following command in your terminal
wget http://releases.linaro.org/12.12/android/vexpress/boot.tar.bz2
wget http://releases.linaro.org/12.12/android/vexpress/system.tar.bz2
wget http://releases.linaro.org/12.12/android/vexpress/userdata.tar.bz2
- Download Linaro image tools which can be obtained in two ways:
- Method 1: Install them from the Linaro Image Tools PPA
sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install linaro-image-tools
- Method 2: Building from source
wget http://releases.linaro.org/12.12/components/platform/linaro-image-tools/linaro-image-tools-2012.12.tar.gz
- Insert SD card and note the assigned
'/dev/sdX'
or'/dev/mmcblk0'
dmesg | less
Look for a line that looks like the following at the end of the log
[288582.790722] sdc: sdc1 sdc2 sdc3 sdc4 <sdc5 sdc6 >
Or, if your machine uses '/dev/mmcblkX'
, you may see a line line this:
[10770.938042] mmcblk0: p1 p2 p3 p4 < p5 p6 >
WARNING: In the next step, make sure you use /dev/"whatever you see above"
. You can erase your hard drive with the wrong parameter.
- Create media
linaro-android-media-create --mmc /dev/sdX --dev vexpress --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2
Booting the image
After the media create tool has finished executing, remove the SD card from your PC and insert it into the Versatile Express board.
Before you can boot the image you will need to install the UEFI boot loader into NOR flash and update the Versatile MMC card configuration files. The instructions on the Firmware Update tab provide information on how to do this and how to configure UEFI to specify the SD card as a boot device.
Accessing Source Code
Linaro Android JB Source Code
Run the linaro_android_build_cmds.sh, it will download the entire source code for both Android JB and the kernel and attempt to build it.
The pinned and source manifests can be found here:
Kernel Source Code
Obtain the exact kernel source code for this cycle by using the linaro_kernel_build_cmds.sh script to download the source and build it. You can get the kernel configuration from here (listed above)
Compiling Linaro Android RootFS+Kernel
The following simple steps download, install and compile a complete Linaro Android distribution
- Download and install Ubuntu 12.04 64 bit or newer (download)
- Install the following packages:
sudo apt-get install zip curl flex bison build-essential git-core gnupg gperf zlib1g-dev libx11-dev x11proto-core-dev \
gcc-multilib g++-multilib libc6-dev-i386 ia32-libs lib32z-dev gcc-4.5 g++-4.5 cpp-4.5 gcc-4.5-multilib g++-4.5-multilib \
uboot-mkimage uuid-dev openjdk-6-jdk ant lib32ncurses5-dev xsltproc
- Download the Android building script for this release from here or from the list of artifacts listed above.
- Run the script
chmod a+x linaro_android_build_cmds.sh
./linaro_android_build_cmds.sh
Installing Android JB on your board
- Insert SD card and note the assigned
'/dev/sdX'
or'/dev/mmcblk0'
dmesg | less
Look for a line that looks like the following at the end of the log
[288582.790722] sdc: sdc1 sdc2 sdc3 sdc4 <sdc5 sdc6 >
Or, if your machine uses ‘/dev/mmcblkX’, you may see a line line this:
[10770.938042] mmcblk0: p1 p2 p3 p4 < p5 p6 >
WARNING: In the next step, make sure you use /dev/“whatever you see above”. You can erase your hard drive with the wrong parameter.
- Create media
cd android/out/target/product/
sudo linaro-android-media-create --mmc /dev/sdX --dev vexpress --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2
- Insert the SD card into your Versatile Express board and reboot it
If UEFI is already configured to boot a Linaro Android image, it will boot from the SD card. If not, follow the instructions in the section: “Configure UEFI”:https://wiki.linaro.org/ARM/UEFI#Configure_UEFI found on the Linaro wiki.
Compiling and installing your Kernel
Prerequisites
- Download and install Ubuntu 12.04 64 bit or newer (download)
- Install the following packages by typing:
sudo apt-get install gcc-arm-linux-gnueabi curl git u-boot-tools libncurses5-dev
- Create a working subdirectory
- Download the auto build script for this release from the list of artifacts above (the kernel configuration will be automatically downloaded).
- Run the build script
chmod a+x linaro_kernel_build_cmds.sh
./linaro_kernel_build_cmds.sh
Note: When you run menuconfig, make sure you go to System Type -> Versatile Express
platform type and make sure that both options are enabled.
[*] Versatile Express Cortex-A9x4 tile
[*] Device Tree support for Versatile Express platforms
This will mean that the same kernel will run on A5, A9, A15-TC1, A15-TC2 and various RTSM models.
Installing your kernel
This section is common for both Android and Ubuntu
- Create the Device Tree blob if you don’t have one in your Linaro image (note, the A9 Core Tile boots using an ATAGS kernel):
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs
- Insert the SD card containing the Linaro disk image
- Copy the kernel onto the memory card
cp arch/arm/boot/uImage /media/boot/
- Copy the device tree blob
- For A9 CoreTile: no device tree blob is needed
- For A5 CoreTile:
cp arch/arm/boot/vexpress-v2p-ca5s.dtb /media/boot/v2p-ca5s.dtb
- For A15 CoreTile (TC1):
cp arch/arm/boot/vexpress-v2p-ca15-tc1.dtb /media/boot/v2p-ca15-tc1.dtb
- For A15_A7 CoreTile: (TC2):
cp arch/arm/boot/vexpress-v2p-ca15-tc2.dtb /media/boot/v2p-ca15-tc2.dtb
- Eject the memory card
eject /media/boot
- Insert the memory card into the Versatile Express board and power it on
Ensure that you update your Versatile Express board firmware to the latest version. To update your VE board firmware, please follow the instructions below:
- Install the Recovery firmware from the v4.0b VE CD/DVD that came with your Versatile Express
- Connect and mount your Versatile Express motherboard USB mass storage device to your PC
- Download the latest ARM firmware from silver.arm.com
- Unzip the firmware zip to the root of the motherboard mounted drive
- Please contact support@arm.com for any issues related this firmware update
- Download additional Linaro firmware from here
- Unzip the firmware zip to the root of the motherboard mounted drive
- Please contact Linaro for any issues related to this firmware update
- Unmount the Versatile Express motherboard
- Reboot the Versatile Express board
- If the board is configured for UEFI, you will need to configure it to boot from the image that you’ve created. See the UEFI page on the Linaro Wiki for more details on configuring UEFI.
This release was boot tested on RTSM A15×4 and A15×4-A7×4 models. No rigorous testing was carried out. This build is expected to run on other RTSM models.
Prerequisites
- Install the RTSM model(s) you wish to run. You must have a valid license and the environment set up to run models
- Install Linaro image tools
Install Linaro Image Tools
Linaro Image Tools contain scripts that allow you to combine multiple components into a single Android image. The components are:
- boot.tar.bz2 – contains the kernel and boot loaders
- system.tar.bz2 – contains the entire system files and general OS
- userdata.tar.bz2 – contains sample data and tests
There are multiple ways you can get the latest Linaro Image Tools:
- Method 1: Install them from the Linaro Image Tools PPA
sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install linaro-image-tools
- Method 2: Build from source
wget http://releases.linaro.org/12.12/components/platform/linaro-image-tools/linaro-image-tools-2012.12.tar.gz
Create a 2GB image file
RTSM will only deal with file systems up to 2GB in size, however the Linaro pre-built image for Android requires a 4GB filesystem. Therefore, we will build our own image using the pre-built artifacts (displayed above)
The following command downloads all the Android OS components necessary to make up a complete Android image.
wget http://releases.linaro.org/12.12/android/vexpress/boot.tar.bz2
wget http://releases.linaro.org/12.12/android/vexpress/system.tar.bz2
wget http://releases.linaro.org/12.12/android/vexpress/userdata.tar.bz2
Using the linaro-android-media-create
, which is part of the linaro-image-tools
, you can combine all the components into a single image.
linaro-android-media-create --image-file linaro.img --image-size 2000M --dev vexpress --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2
tar jxvf boot.tar.bz2
Run A15×4 model
This example shows how to run the Linaro kernel on a quad core A15 RTSM model:
RTSM_MODEL=$HOME/ARM/RTSM/Linux64_RTSM_VE_Cortex-A15x4/RTSM_VE_Cortex-A15x4
RTSM_BOOTWRAPPER=boot/rtsm/linux-system-semi.axf
RTSM_MMC=linaro.img
RTSM_KERNEL=boot/uImage
RTSM_DTB=boot/rtsm/rtsm_ve-ca15x4.dtb
RTSM_INITRD=boot/uInitrd
RTSM_CMDLINE=" console=tty0 console=ttyAMA0,38400n8 rootwait ro init=/init androidboot.console=ttyAMA0"
$RTSM_MODEL \
$RTSM_BOOTWRAPPER \
-C motherboard.smsc_91c111.enabled=1 \
-C motherboard.hostbridge.userNetworking=1 \
-C motherboard.mmc.p_mmc_file="$RTSM_MMC" \
-C cluster.cpu0.semihosting-cmd_line="--kernel $RTSM_KERNEL --dtb $RTSM_DTB --initrd $RTSM_INITRD -- $RTSM_CMDLINE"
Run A15×4-A7×4 model
This example shows how to run the Linaro kernel on a big.LITTLE RTSM model:
RTSM_MODEL=$HOME/ARM/RTSM/Linux64_RTSM_VE_Cortex-A15x4-A7x4/RTSM_VE_Cortex-A15x4-A7x4
RTSM_BOOTWRAPPER=boot/rtsm/linux-system-semi.axf
RTSM_MMC=linaro.img
RTSM_KERNEL=boot/uImage
RTSM_DTB=boot/rtsm/rtsm_ve-ca15x4-ca7x4.dtb
RTSM_INITRD=boot/uInitrd
RTSM_CMDLINE=" console=tty0 console=ttyAMA0,38400n8 rootwait ro init=/init androidboot.console=ttyAMA0"
$RTSM_MODEL \
-a coretile.cluster0.*=$RTSM_BOOTWRAPPER \
-a coretile.cluster1.*=$RTSM_BOOTWRAPPER \
-C motherboard.smsc_91c111.enabled=1 \
-C motherboard.hostbridge.userNetworking=1 \
-C motherboard.mmc.p_mmc_file=$RTSM_MMC \
-C coretile.dualclustersystemconfigurationblock.CFG_ACTIVECLUSTER=0x3 \
-C coretile.cluster0.cpu0.semihosting-enable=1 \
-C coretile.cluster0.cpu0.semihosting-cmd_line="--kernel $RTSM_KERNEL --dtb $RTSM_DTB --initrd $RTSM_INITRD -- $RTSM_CMDLINE"