Name | Last modified | Size | License | |
---|---|---|---|---|
Parent Directory |
Linaro releases monthly binary Android images and associated sources for the AArch64 models.
This is the Linaro Android release for ARMv8 FVP Base Models. The objective of this release is to build and boot Android as 32 bit rootfs and continue building and running Linux as 64bit. The release is based on Android AOSP July 13th 2014 snapshot, Linux Stable Kernel 3.10 (LSK) from Linaro and boots on the new FVP Base AEMv8 model 0.8 build 5202 using UEFI EDK II as boot loader. The sources are also made available so you can build your own images. The Android sources are compiled for 32bit rootfs with Linaro GCC 4.9 toolchain.
The lastest available CTS package version 4.4 is compiled for 32bit Android user space and have tried running maximum number of tests possible. Few tests fail due to model limitation. Detailed CTS results is made available to members seperately through the juice mailing list.
About the ARMv8 Android Release
This release is port of Android to the AArch64 architecture for Fast Models, there is a similar release for Juno (ARM’s ARMv8 Hardware platform).
The main purpose of this release is to provide our members a pre-integrated and validated Android software distribution based on LSK, Android AOSP master (32bit user space) and built with latest GCC 4.9 for Fast Models to go to production faster with existing set of applications and limited certification hurdles.
Android AOSP Patches – Summary :
The following list of patches developed by ARM and Linaro engineering teams were applied to Android AOSP dated July 13th 2014 to get Android booting to UI on ARMv8 Fast Models. These patches can be found on Linaro’s Android Git repositories. NOTE: Few of these patches are not applicable to run Android in 32bit user space, they are specific to Juno hardware and 64bit user space.
- Revert Hide tolower_tab and toupper_tab on LP64
- build tarballs, set default runtime and zygote config in device config files
- CtsVerifier: Add dependency of android.test.runner
- security: add CtsTestStubs.apk as prerequisite apk
- Increase timeouts
- svc: add netd command
- svc netd: add one command to set both interface and nameserver
- Increase timeouts
- Don’t write to the tty in init to avoid the cursor
- bionic libc test: remove test of test_vfprintf_leak
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
- NONE
Known issues
- CTS failures are observed for few packages. Detailed CTS report is available to members for reference.
Instructions for https://android-build.linaro.org/builds/~linaro-android-restricted/armv8-juice-lsk/
Prerequisites
Get artifacts
To get the build artifacts you must be part of the linaro-android-restricted launchpad group. Contact “Philip Colmer”
Run the build
You’ll need the latest ARM FVP Base models and a license to use the models. Follow the instructions at https://collaborate.linaro.org/display/ITS/FlexLM+and+Fast+Models for the same.
Get artifacts
Scroll down and click on ‘Downloads’
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
You can also use the tip of linaro-image-tools from http://git.linaro.org/infrastructure/linaro-image-tools.git
How to run Juice images on FVP models
Create mmc image to be used on ARM FVP Base AEMv8 models
Run linaro image tools
$ linaro-android-media-create --image_file mmc.img --image_size 2000M --dev vexpress --system system.tar.bz2 --userdata userdata.tar.bz2 --boot boot.tar.bz2
If you’re using tip of linaro image tools
$ ./linaro-image-tools/linaro-android-media-create --image_file mmc.img --image_size 2000M --dev vexpress --system system.tar.bz2 --userdata userdata.tar.bz2 --boot boot.tar.bz2
Extract the preboot files
tar -jxvf boot.tar.bz2
Setup the runtime environment
$ export ARMLMD_LICENSE_FILE="8224@localhost" $ ssh -L 8224:localhost:8224 -L 18224:localhost:18224 -N $USER@flexlm.linaro.org
Running the models (verified on FVP Base model build 5602)
$ cd boot $ /path/to/FVP_Base_AEMv8A-AEMv8A/models/Linux64_GCC-4.1/FVP_Base_AEMv8A-AEMv8A \ -C pctl.startup=0.0.0.0 \ -C bp.secure_memory=0 \ -C cluster0.NUM_CORES=1 \ -C cluster1.NUM_CORES=1 \ -C cache_state_modelled=0 \ -C bp.pl011_uart0.untimed_fifos=1 \ -C bp.secureflashloader.fname=fvp_bl1.bin \ -C bp.flashloader0.fname=fvp_fip.bin \ -C bp.virtioblockdevice.image_path=mmc.img
Console redirection
To redirect the console open a terminal and run
telnet 127.0.0.1 5000
Set UEFI configuration, update kernel/ramdisk path and bootargs
Stop the UEFI boot process and configure it for FVP models:
$ telnet 127.0.0.1 -debug 5000 -e ^z
Telnet escape character is ‘b’.
Telnet escape character is ‘^Z’.
Trying 127.0.0.1…
setsockopt (SO_DEBUG): Permission denied
Connected to 127.0.0.1.
Escape character is ‘^Z’. 7 seconds
[1] Linaro disk image on virtio
[2] Shell
[3] Boot Manager
Start: 3
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 2
[1] Linaro disk image on virtio
Update entry: 1
File path of the EFI Application or the kernel: kernel
Has FDT support? [y/n] y
Add an initrd: [y/n] y
File path of the initrd: ramdisk.img
Arguments to pass to the binary: console=ttyAMA0 earlyprintk=pl011,0×1c090000 amba-clcd.mode=VGA
Description for this new Entry: Linaro disk image on virtio
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 5
[1] Linaro disk image on virtio
[2] Shell
[3] Boot Manager
Start: 1 PEI 1122 ms DXE 259 ms BDS 8 ms
Total Time = 1390 ms[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.10.40-04438-g6a78140 (pundiramit@flying-dutchman) (gcc version 4.9 20140514 (prerelease) (GCC) ) #1 SMP Mon Jun 2 14:50:25 IST 2014
Black screen
The boot screen has been disabled to speed up booting. This means you may not see anything on the CLCD terminal for a while depending on the performance of the machine the model is running on. For example a first boot on a 2 GHz machine with 32 GB of RAM took 20 minutes. Subsequent boots should take approximately half the time to boot.
Attaching ADB
ADB on FVP Base models is supported over the network. Follow the instructions here https://wiki.linaro.org/Internal/Projects/Juice/SetupNetworkingOnModelsUsingBridges to setup networking and use adb.
Prerequisites
To clone the sources you must be able to ssh to git.linaro.org and be part of the big-little-switcher-private group. Contact “Philip Colmer”
How to download and build Android sources
Recommended method to do a linaro android build is to use linaro android build script(linaro_android_build_cmds.sh). You can download this script from the Downloads section of the build page. Use this script to do a complete ARMv8 Android build for FVP models from scratch. If you prefer to do it manuaaly then follow the “Get the source” and “Build” instructions below.
Get the source
$ sudo add-apt-repository ppa:linaro-maintainers/tools
$ sudo apt-get update
$ sudo apt-get install gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc openjdk-7-jdk openjdk-7-jre vim-common python-parted python-yaml wget uuid-dev
$ curl "https://android.git.linaro.org/gitweb?p=tools/repo.git;a=blob_plain;f=repo;hb=refs/heads/stable" > repo
$ chmod +x repo
$ ./repo init -u ssh://$USER@linaro-private.git.linaro.org/srv/linaro-private.git.linaro.org/android/manifest.git -b linaro-android-14.10-release -m armv8-juice-lsk.xml
$ sed -i "s/linaro-big-little-switcher-bot/$USER/" .repo/manifest.xml
$ ./repo sync # this may take some time
Build
$ export CPUS=`grep -c processor /proc/cpuinfo`
$ export TARGET_PRODUCT=juice
$ export TARGET_BUILD_VARIANT=eng
$ . build/envsetup.sh
$ make -j${CPUS} boottarball systemtarball userdatatarball
Get linaro image tools
Run these commands to get all the dependencies for linaro-image-tools
$ sudo add-apt-repository ppa:linaro-maintainers/tools $ sudo apt-get update $ sudo apt-get install linaro-image-tools
You can also use the tip of linaro-image-tools from http://git.linaro.org/infrastructure/linaro-image-tools.git
How to run Juice images on FVP models
Create mmc image to be used on ARM FVP Base AEMv8 models
Run linaro image tools
$ linaro-android-media-create --image_file mmc.img --image_size 2000M --dev vexpress --system system.tar.bz2 --userdata userdata.tar.bz2 --boot boot.tar.bz2
If you’re using tip of linaro image tools
$ ./linaro-image-tools/linaro-android-media-create --image_file mmc.img --image_size 2000M --dev vexpress --system system.tar.bz2 --userdata userdata.tar.bz2 --boot boot.tar.bz2
Extract the preboot files
tar -jxvf boot.tar.bz2
Setup the runtime environment
$ export ARMLMD_LICENSE_FILE="8224@localhost" $ ssh -L 8224:localhost:8224 -L 18224:localhost:18224 -N $USER@flexlm.linaro.org
Running the models (verified on FVP Base model build 5602)
$ cd boot $ /path/to/FVP_Base_AEMv8A-AEMv8A/models/Linux64_GCC-4.1/FVP_Base_AEMv8A-AEMv8A \ -C pctl.startup=0.0.0.0 \ -C bp.secure_memory=0 \ -C cluster0.NUM_CORES=1 \ -C cluster1.NUM_CORES=1 \ -C cache_state_modelled=0 \ -C bp.pl011_uart0.untimed_fifos=1 \ -C bp.secureflashloader.fname=fvp_bl1.bin \ -C bp.flashloader0.fname=fvp_fip.bin \ -C bp.virtioblockdevice.image_path=../mmc.img
Console redirection
To redirect the console open a terminal and run
telnet 127.0.0.1 5000
Set UEFI configuration, update kernel/ramdisk path and bootargs
Stop the UEFI boot process and configure it for FVP models:
$ telnet 127.0.0.1 -debug 5000 -e ^z
Telnet escape character is ‘b’.
Telnet escape character is ‘^Z’.
Trying 127.0.0.1…
setsockopt (SO_DEBUG): Permission denied
Connected to 127.0.0.1.
Escape character is ‘^Z’. 7 seconds
[1] Linaro disk image on virtio
[2] Shell
[3] Boot Manager
Start: 3
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 2
[1] Linaro disk image on virtio
Update entry: 1
File path of the EFI Application or the kernel: kernel
Has FDT support? [y/n] y
Add an initrd: [y/n] y
File path of the initrd: ramdisk.img
Arguments to pass to the binary: console=ttyAMA0 earlyprintk=pl011,0×1c090000 amba-clcd.mode=VGA
Description for this new Entry: Linaro disk image on virtio
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 5
[1] Linaro disk image on virtio
[2] Shell
[3] Boot Manager
Start: 1 PEI 1122 ms DXE 259 ms BDS 8 ms
Total Time = 1390 ms[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.10.40-04438-g6a78140 (pundiramit@flying-dutchman) (gcc version 4.9 20140514 (prerelease) (GCC) ) #1 SMP Mon Jun 2 14:50:25 IST 2014
Black screen
The boot screen has been disabled to speed up booting. This means you may not see anything on the CLCD terminal for a while depending on the performance of the machine the model is running on. For example a first boot on a 2 GHz machine with 32 GB of RAM took 20 minutes. Subsequent boots should take approximately half the time to boot.
Attach ADB
ADB on FVP Base models are supported over network. Follow the instructions here https://wiki.linaro.org/Internal/Projects/Juice/SetupNetworkingOnModelsUsingBridges to setup networking and use adb.
How to run Juice images on Juno
Plug in the USB stick and flash Juice images on that USB device
Run ‘dmesg’ and find out correct USB /dev node.
$ 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/sdX --dev vexpress --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/sdX --dev vexpress --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2
Now unplug the USB stick and connect it to Juno and boot from it.
Configure Juno boot time UEFI configuration
Copy Preboot firmwares (bl1.bin and fip.bin) from boot.tar.bz2 to
Select USB device's boot partition to boot from while "Selecting the boot device". Change kernel in UEFI to "kernel" in the boot partition Change ramdisk in UEFI to "ramdisk.img" in the boot partition Change bootargs to "console=ttyAMA0,115200 earlyprintk=pl011,0x7ff80000"
Note: There is a bug in UEFI where you won’t see USB disk partitions while selecting the boot device. You have to press ESCAPE at “Select the boot device” menu item and then continue.
It should get your Juno board up and running.