NameLast modifiedSizeLicense

Parent Directory Parent Directory
other MANIFEST 13-Jan-2018 00:06 270 open
other MD5SUMS 13-Jan-2018 00:06 285 open
application/x-tar boot.tar.bz2 26-Feb-2018 22:10 8.5M open
other kernel_config 13-Jan-2018 00:06 65.6K open
application/x-sh linaro_android_build_cmds.sh 13-Jan-2018 00:06 8.5K open
text pinned-manifest.xml 13-Jan-2018 00:06 89.0K open
other ramdisk.img 13-Jan-2018 00:06 642.4K open
text source-manifest.xml 13-Jan-2018 00:06 48.9K open
other system.img 26-Feb-2018 22:11 750.0M open
application/x-tar system.tar.bz2 26-Feb-2018 22:11 194.1M open
other userdata.img 26-Feb-2018 22:11 550.0M open
application/x-tar userdata.tar.bz2 26-Feb-2018 22:11 50.6M open
other vexpress.img.bz2 26-Feb-2018 22:11 253.3M open


About the Linaro Confectionary Release for Versatile Express (Aarch32)

The Linaro Confectionary release is based on the AOSP Lollipop Android-5.1.0_r1 version. This reference build is a userdebug variant build, and it contains support allowing full use of the 32-bit ARMv7-A architecture and supports the 32-bit applications, with SELinux enabled by default. The release uses the Linaro Stable Kernel version 3.10. The sources are built using Android (AOSP) GCC 4.8. To disable SELinux pass “selinux=0” as the boot parameter in the UEFI bootargs configuration.

The Android AOSP software provided in this release is functionally tested with CTS version 5.0 and the CTS results are shared with members. The BIONIC component is validated with Android BIONIC tests. Android Monkey tests were run for stress testing. We also added some benchmark test to observe the performance trend in various field.

Sources are also made available so you can build your own images (see the Building from Source tab).

What is new

  • Android source changed to based on the Lollipop Android-5.0.2_r1 version
  • Verified with application-benchmark test on LAVA.

About the Android flavour of Linaro Stable Kernel (LSK)

The kernel used by Linaro Confectionary Release for Versatile Express is the Android flavour Linaro Stable Kernel (LSK), which is produced, validated and released by Linaro and is based on the Linux stable kernel tree. The LSK focuses on quality and stability and is therefore a great foundation for product development. It also includes backports of commonly desired features, provided they meet the quality requirements, and also any bug fixes.

Sources are also made available so you can build your own images (see the ‘Building from Source’).

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
  • Landing Team bug reports should be filed in ‘Bugzilla’ under linaro-android product and Linaro Confectionery Release component.
    • You will need to login to your Linaro account. If you do not have an account or are having problems, email its@linaro.org for help.
  • More general bug reports should be filed in Bugzilla against the individual packages that are affected.
  • Questions? ‘ask linaro’
  • Interested in commercial support? inquire at ‘Linaro Support’

Android Patch Summary

The following list of patches developed by ARM and Linaro engineering teams were applied to get Android booting to UI on the ARMv8-A Juno development platform. These patches can be found on Linaro’s Android Git repositories via file LOLLIPOP-STABLE-PATCHSET. Some of these patches have been submitted to AOSP and are being tracked for acceptance.

Any patches can be contributed through the instructions described Here

Known Issues and Limitations

Known limitations

  • SW rendering for user interface only – there is no hardware accelerated graphics

Known issues

The following known issues are present in this release. Please contact support@linaro.org if you wish to know more information about these issues or have access problems when attempting to view them.

Bug ID Bug title Bug summary
Bug 1069 ethernet is not stable on tc2
Bug 1015 monkey long run test fails on TC2 LCR build
Bug 997 glslparser test suite partially passes on 14.12 LCR some glsl syntax in test are not recognized by Mali driver
Bug 993 EVDEV failures in linaro android kernel test suite on 14.12 LCR build
Bug 224 Corrupted png files can cause crashes in gallery The stock Gallery application crashes when displaying known corrupt PNG files.
Bug 222 Dev Tools crashes on startup Dev Tools app fails to instantiate com.android.development.Development class from /system/app/Development.apk
Bug 64 Test test_pthread_rwlock from bionic libc test suite fails on Juno build – LAVA

Instructions for https://android-build.linaro.org/builds/~linaro-android//

Get artifacts

Scroll down to the ‘Downloads’ section

Click on each link to download:

  • boot.tar.bz2
  • system.tar.bz2
  • userdata.tar.bz2

Get linaro image tools

Run these commands to get all the dependencies for linaro-image-tools and the tip of linaro-image-tools

  $ sudo add-apt-repository ppa:linaro-maintainers/tools
  $ sudo apt-get update
  $ sudo apt-get install linaro-image-tools

If you’re using a released build (with a -release or from releases.linaro.org), skip this step.
If you’re using a “tip” build do not skip the step and do the following:

  $ sudo apt-get install bzr
  $ bzr branch lp:linaro-image-tools

Create media (SD card)

Disable automount (instructions provided for Gnome)

  $ TMP1=$(dconf read /org/gnome/desktop/media-handling/automount)
  $ TMP2=$(dconf read /org/gnome/desktop/media-handling/automount-open)
  $ dconf write /org/gnome/desktop/media-handling/automount false
  $ dconf write /org/gnome/desktop/media-handling/automount-open false

Insert an SD card

Run ‘dmesg’

$ dmesg

Look for a line that looks like the following at the end of the log

[288582.790722]  sdc: sdc1 sdc2 sdc3 sdc4 < sdc5 sdc6 >

WARNING In the next step, make sure you use /dev/“whatever you see above”.
You can erase your hard drive with the wrong parameter.

Run linaro image tools

$ linaro-android-media-create --mmc /dev/sdc --dev <BOARD> --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

If you’re using tip of linaro image tools

$ ./linaro-image-tools/linaro-android-media-create --mmc /dev/sdc --dev <BOARD> --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

To find run linaro-android-media-create with a -h and read the help.

Restore automount

  $ dconf write /org/gnome/desktop/media-handling/automount $TMP1
  $ dconf write /org/gnome/desktop/media-handling/automount-open $TMP2

Remove the SD card from the device writer and plug it into the board.

Check console output

Plug in an USB-to-serial converter and run minicom

$ minicom -D /dev/ttyUSB0 -w -C minicom.txt

Instructions for https://android-build.linaro.org/builds/~linaro-android//

Get artifacts

Scroll down to the ‘Downloads’ section

Save linaro_android_build_cmds.sh to where you’d like to make your build.

Run the build script

The linaro_android_build_cmds.sh script will download the source and create the build.

  $ chmod +x linaro_android_build_cmds.sh
  $ ./linaro_android_build_cmds.sh -h #To print the script usage

Most commonly used build options:

  $ ./linaro_android_build_cmds.sh -t #To build from the tip of the branch without overlay
  $ ./linaro_android_build_cmds.sh -t -o <overlay> #To build from the tip of the branch with provided overlay
  $ ./linaro_android_build_cmds.sh -m <pinned_manifest> -o <overlay> #To reproduce an exact build from pinned manifest
  $ ./linaro_android_build_cmds.sh -t -l <login-id> #Provide login/access ID to clone and build code from linaro-private repositories

Get linaro image tools

Run these commands to get all the dependencies for linaro-image-tools and the tip of linaro-image-tools

  $ sudo add-apt-repository ppa:linaro-maintainers/tools
  $ sudo apt-get update
  $ sudo apt-get install linaro-image-tools
If you’re using a released build (with a -release or from releases.linaro.org), skip this step. If you’re using a “tip” build do not skip the step and do the following: $ sudo apt-get install bzr $ bzr branch lp:linaro-image-tools

Create media (SD card)

Disable automount (instructions provided for Gnome)

  $ TMP1=$(dconf read /org/gnome/desktop/media-handling/automount)
  $ TMP2=$(dconf read /org/gnome/desktop/media-handling/automount-open)
  $ dconf write /org/gnome/desktop/media-handling/automount false
  $ dconf write /org/gnome/desktop/media-handling/automount-open false

Insert an SD card

Run ‘dmesg’

$ dmesg

Look for a line that looks like the following at the end of the log

[288582.790722]  sdc: sdc1 sdc2 sdc3 sdc4 < sdc5 sdc6 >

WARNING In the next step, make sure you use /dev/“whatever you see above”.
You can erase your hard drive with the wrong parameter.

Run linaro image tools

$ linaro-android-media-create --mmc /dev/sdc --dev <BOARD> --boot out/target/product/<BOARD>/boot.tar.bz2 --system out/target/product/<BOARD>/system.tar.bz2 --userdata out/target/product/<BOARD>/userdata.tar.bz2

If you’re using tip of linaro image tools

$ ./linaro-image-tools/linaro-android-media-create --mmc /dev/sdc --dev <BOARD> --boot out/target/product/<BOARD>/boot.tar.bz2 --system out/target/product/<BOARD>/system.tar.bz2 --userdata
out/target/product/<BOARD>/userdata.tar.bz2

Restore automount

  $ dconf write /org/gnome/desktop/media-handling/automount $TMP1
  $ dconf write /org/gnome/desktop/media-handling/automount-open $TMP2

Remove the SD card from the device writer and plug it into the board.

Check console output

Plug in an USB-to-serial converter and run minicom

$ minicom -D /dev/ttyUSB0 -w -C minicom.txt

Ensure that you update your Versatile Express board firmware to the latest version. To update your VE board firmware, please follow the instructions below:

  • Clone the Linaro Versatile Express Firmware repository
  • Connect and mount your Versatile Express motherboard USB mass storage device to your PC
  • Remove all of the existing files from the USB mass storage device
  • Copy the Linaro Firmware to the board

For example:

git clone git://git.linaro.org/arm/vexpress-firmware.git
rm -rf /media/VEMSD/*
cp -R vexpress-firmware/* /media/VEMSD

Once you have finished copying the firmware over:

  • Safely unmount the Versatile Express motherboard
  • Reboot the Versatile Express board
  • At the ARM Boot Loader “Cmd> “ prompt, type the following commands:
Cmd> flash
Cmd> eraseall
Cmd> exit
Cmd> reboot
  • You may need to configure UEFI to boot from the image that you’ve created. See the UEFI page on the Linaro Wiki for more details on configuring UEFI.
  • You may want to set /media/VEMSD/config.txt AUTORUN to TRUE to be make the CoreTile boot from power on.
  • For TC2, you should set the DIP swich closest to the black reset button down so that the Boot Monitor runs the boot script on power on.
  • Versatile Express version 5.2 contains the original firmware and documentation for the Versatile Express platform
  • Please contact support@arm.com for any issues related their firmware
  • Please contact Linaro for any issues related to booting this release on the Versatile Express platform.


Using TC2 as an A7-only or A15-only board

Configure the Firmware

It is possible to configure a TC2 development board as an A7 or A15 only board. To do this, the developer should modify the /SITE1/HBI0249A/board.txt file on the Versatile Express firmware drive, usually mounted at /media/VEMSD.

The relevant register is CFGREG6 on pages 78-81 of the following TRM:
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0503e/DDI0503E_v2p_ca15_a7_tc2_trm.pdf

You should add the following setting in board.txt:

SCC: 0x018 0x1FFFFFFF     ; CFGRW6 - Reset register default (both clusters active)
- or -
SCC: 0x018 0x00001FFF     ; CFGRW6 - A15-only config
- or -
SCC: 0x018 0x1FFFF000     ; CFGRW6 - A7-only config

Remember to update TOTALSCCS, eg, if it was 32 and you’ve added one register, it becomes 33:

TOTALSCCS: 33                   ;Total Number of SCC registers

Configure the Device Tree

Once the hardware is booting as an A7 or A15 only board, next you need to remove the unused CPU nodes from the device tree.

In the kernel source tree, edit arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts and remove the unused CPUs from this section:

   cpus {
        #address-cells = <1>;
        #size-cells = <0>;
       cpu2: cpu@2 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            reg = <0x100>;
            cluster = <&cluster1>;
            core = <&core2>;
            clock-frequency = <800000000>;
            cci-control-port = <&cci_control2>;
        };
       cpu3: cpu@3 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            reg = <0x101>;
            cluster = <&cluster1>;
            core = <&core3>;
            clock-frequency = <800000000>;
            cci-control-port = <&cci_control2>;
        };
       cpu4: cpu@4 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            reg = <0x102>;
            cluster = <&cluster1>;
            core = <&core4>;
            clock-frequency = <800000000>;
            cci-control-port = <&cci_control2>;
        };
       cpu0: cpu@0 {
            device_type = "cpu";
            compatible = "arm,cortex-a15";
            reg = <0>;
            cluster = <&cluster0>;
            core = <&core0>;
            clock-frequency = <1000000000>;
            cci-control-port = <&cci_control1>;
        };
       cpu1: cpu@1 {
            device_type = "cpu";
            compatible = "arm,cortex-a15";
            reg = <1>;
            cluster = <&cluster0>;
            core = <&core1>;
            clock-frequency = <1000000000>;
            cci-control-port = <&cci_control1>;
        };
    };

Next, you need to remove the GIC entries that are associated with the removed CPUs, eg:

   gic: interrupt-controller@2c001000 {
        compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
        #interrupt-cells = <3>;
        #address-cells = <0>;
        interrupt-controller;
        reg = <0 0x2c001000 0 0x1000>,
              <0 0x2c002000 0 0x1000>,
              <0 0x2c004000 0 0x2000>,
              <0 0x2c006000 0 0x2000>;
        interrupts = <1 9 0xf04>;
       gic-cpuif@0 {
            compatible = "arm,gic-cpuif";
            cpuif-id = <0>;
            cpu = <&cpu0>;
        };
       gic-cpuif@1 {
            compatible = "arm,gic-cpuif";
            cpuif-id = <1>;
            cpu = <&cpu1>;
        };
       gic-cpuif@2 {
            compatible = "arm,gic-cpuif";
            cpuif-id = <2>;
            cpu = <&cpu2>;
        };
       gic-cpuif@3 {
            compatible = "arm,gic-cpuif";
            cpuif-id = <3>;
            cpu = <&cpu3>;
        };
       gic-cpuif@4 {
            compatible = "arm,gic-cpuif";
            cpuif-id = <4>;
            cpu = <&cpu4>;
        };
    };

Finally, you need to re-compile the DTS file and copy it to the SD card used to boot the system, eg:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs
cp arch/arm/boot/dts/vexpress-v2p-ca15_a7.dtb /media/boot/v2p-ca15-tc2.dtb

This release was boot tested on FVP A15×4 and A15×4-A7×4 models. No rigorous testing was carried out. This build is expected to run on other models. No UEFI binary exists for A15-A7 models; in this case, the A15 binary can be used, but the A7 CPUs will not be available

Prerequisites

  • Install the 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/latest/components/platform/linaro-image-tools/linaro-image-tools-${YYYY}.${MM}.tar.gz

Create a 2GB image file

Fast Models 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/latest/android/vexpress-lsk/boot.tar.bz2
wget http://releases.linaro.org/latest/android/vexpress-lsk/system.tar.bz2
wget http://releases.linaro.org/latest/android/vexpress-lsk/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 Fast Models with UEFI

The instructions for running UEFI on the various models are very similar. The two differences are the UEFI binary and the model used. Follow the model specific instruction below, then proceed to the generic instructions in the section “Run the model with UEFI”. Make sure that the model binary is on your path, or alter the MODEL variable definition to include the path to the binary.

Run A9×4 model with UEFI

MODEL=FVP_VE_Cortex-A9_MPx4
UEFI=boot/rtsm/uefi_rtsm_ve-ca9x4.bin

Run A15×1 model with UEFI

MODEL=FVP_VE_Cortex-A15x1
UEFI=boot/rtsm/uefi_rtsm_ve-ca15.bin

Run A15×2 model with UEFI

MODEL=FVP_VE_Cortex-A15x2
UEFI=boot/rtsm/uefi_rtsm_ve-ca15.bin

Run A15×4 model with UEFI

MODEL=FVP_VE_Cortex-A15x4
UEFI=boot/rtsm/uefi_rtsm_ve-ca15.bin

Run the model with UEFI

touch uefi-vars.fd # create the file if it doesn't already exist
$MODEL \
-C motherboard.flashloader0.fname=$UEFI \
-C motherboard.flashloader1.fname=uefi-vars.fd \
-C motherboard.flashloader1.fnameWrite=uefi-vars.fd \
-C motherboard.mmc.p_mmc_file=linaro.img \
-C motherboard.pl011_uart0.unbuffered_output=true \
-C motherboard.smsc_91c111.enabled=1 \
-C motherboard.hostbridge.userNetworking=1