Difference between revisions of "BBench-gem5"
(→Building Your Own Android File System and Kernel) |
m (→Building Your Own Android File System and Kernel) |
||
Line 33: | Line 33: | ||
# Mount the image: <code>sudo mount -o loop,offset=32256 android_ics_arm.img /mnt/ics</code>. | # Mount the image: <code>sudo mount -o loop,offset=32256 android_ics_arm.img /mnt/ics</code>. | ||
# Copy the root/ and system/ folders to the mounted image: | # Copy the root/ and system/ folders to the mounted image: | ||
− | ## <code>cp -a path_to_android_src/out/target/product/armboard_v7a/root /mnt/ics</code> | + | ## <code>cp -a path_to_android_src/out/target/product/armboard_v7a/root/* /mnt/ics</code> |
− | ## <code>cp -a path_to_android_src/out/target/product/armboard_v7a/system /mnt/ics/system</code> | + | ## <code>cp -a path_to_android_src/out/target/product/armboard_v7a/system/* /mnt/ics/system</code> |
# Unmount the image: <code>sudo umount /mnt/ics</code> | # Unmount the image: <code>sudo umount /mnt/ics</code> | ||
Now the image should be ready to run. | Now the image should be ready to run. | ||
+ | |||
+ | Now, to build the 2.6.35 kernel. | ||
+ | # Get the kernel source from: <code>git clone git://linux-arm.org/linux-2.6-armdroid.git -b 2.6.35-armdroid</code> | ||
+ | # Get the 2.6.35 config file packaged with the linux kernel above. | ||
+ | # Copy it to the kernel source directory as .config. | ||
+ | # Build the kernel source: <code>make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -jn vmlinux</code> | ||
== Publications == | == Publications == |
Revision as of 13:07, 4 June 2012
This page provides everything you need to get Android, and BBench, working on gem5. BBench is a new web-page rendering benchmark; you can read about it here: BBench. We have provided pre-compiled disk images and an Android kernel, as well as step-by-step instructions on how to get Android running on gem5 using the ARM ISA.
Contents
[hide]Running BBench on Android with gem5
Everything required to run BBench on gem5 is provided in the next section. You will need the kernel and the disk image (containing BBench).
- Get gem5 from the Repository
- Download the basic full system files from the Download page and build gem5 for the ARM ISA according to these instructions Compiling_M5
- Point the
M5_PATH
environment variable to this location. E.g, typeexport M5_PATH=/path_to_gem5_system/system/
- Download and uncompress the ARM/Android Kernel and place it in the /path_to_gem5_system/system/binaries directory
- Download and uncompress the Android Disk Image and place it in the /path_to_gem5_system/system/disks directory
- Run
/path_to_gem5_root/build/ARM/m5.fast configs/example/fs.py -b bbench --kernel=vmlinux.smp.mouse.arm
to run BBench on Android using ARM. Invoke from/path_to_gem5_root
.
Note: These instructions and images are only for Android on the ARM ISA.
Android Full-System Files
These files contain everything you need to get Android, and BBench, up and running on gem5.
- 2.6.35 version kernel -- Pre-compiled Android kernel and config file.
- Disk Image -- Disk image with a pre-compiled Android Gingerbread file system. This disk image contains all of the files generated during initial boot, as well as a self-terminating version of BBench and BusyBox.
- Clean Gingerbread Disk Image -- Disk image containing only the pre-compiled Android Gingerbread file system. This disk image contains no benchmarks and has never been booted.
Building Your Own Android File System and Kernel
This section gives step-by-step instructions for building a gem5 compatible Ice Cream Sandwich (ICS) disk image.
- Initialize your build environment and download the Android source.
- Get a copy of the Armdroid patches using the following command:
git clone git://linux-arm.org/armdroid.git
. - Copy the arm device files into the Android device folder:
cp path_to_armdroid/fs/src/IceCreamSandwich/Android-ICS-device-arm.tar.bz2 path_to_android_src/device/
. Then, untar it. - Copy the Armdroid patches to the appropriate Android source directory. These directories can be inferred from the patch file itself.
- Apply those patches by changing to the directories in which the patches were copied and running the command:
git apply *.patch
. - Change into the Android source root directory and build using:
make PRODUCT-armboard_v7a-eng -jn
. - Create a blank image using the gem5img.py utility:
./gem5img.py init android_ics_arm.img 1024
. - Create a mountpoint:sudo mkdir /mnt/ics
- Mount the image:
sudo mount -o loop,offset=32256 android_ics_arm.img /mnt/ics
. - Copy the root/ and system/ folders to the mounted image:
-
cp -a path_to_android_src/out/target/product/armboard_v7a/root/* /mnt/ics
-
cp -a path_to_android_src/out/target/product/armboard_v7a/system/* /mnt/ics/system
-
- Unmount the image:
sudo umount /mnt/ics
Now the image should be ready to run.
Now, to build the 2.6.35 kernel.
- Get the kernel source from:
git clone git://linux-arm.org/linux-2.6-armdroid.git -b 2.6.35-armdroid
- Get the 2.6.35 config file packaged with the linux kernel above.
- Copy it to the kernel source directory as .config.
- Build the kernel source:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -jn vmlinux
Publications
If you use BBench in your work please cite our IISWC 2011 paper:
A. Gutierrez, R.G. Dreslinski, T.F. Wenisch, T. Mudge, A. Saidi, C. Emmons, and N. Paver. Full-System Analysis and Characterization of Interactive Smartphone Applications. IEEE International Symposium on Workload Characterization, pages 81-90, Austin, TX, November 2011.