BBench-gem5
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.
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.