ブログネタ
Android に参加中!
master ブランチ同様に WiFi と Bluetooth が動作する環境を、
android-4.0.4_r1.2 ベースで作成する手順。
x-loader、u-boot、kernel もソースからビルドして環境を作るようにした。
ビルド環境は Ubuntu-12.04 64bit版での Android ビルド環境 を使用。
AOSP から Android のソースコードをダウンロード
  • 作業用のフォルダを作成する(場所はホーム直下でなくて良い)
  • $ mkdir ~/panda_work
    $ export PANDA_WORK=~/panda_work
    $ mkdir ~/panda_work/android
    $ export ANDROID_ROOT=~/panda_work/android
  • android-4.0.4_r1.2 のソースコードを取得する
  • $ cd $ANDROID_ROOT
    $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.4_r1.2
    $ repo sync
  • PandaBoard binaries for Android 4.0.4 のダウンロードと展開
  • $ wget https://dl.google.com/dl/android/aosp/imgtec-panda-imm76i-67545da7.tgz
    $ tar zxvf imgtec-panda-imm76i-67545da7.tgz
    $ ./extract-imgtec-panda.sh

android-4.0.4_r1.2 から変更する内容
  • 必要なファイルのダウンロードと展開
  • $ wget http://android-development-environment.googlecode.com/files/panda.ics.patch.tar.bz2
    $ tar jxvf panda.ics.patch.tar.bz2
  • device/ti/panda に master ブランチの内容をマージ
  • $ git apply panda.ics.patch/0001-merge-master-to-device-ti-panda.patch
  • master ブランチから hardware/ti/wlan と hardware/ti/wpan をマージ
  • $ tar jxvf panda.ics.patch/hardware_ti_wlan.tar.bz2 -C hardware/ti/
    $ tar jxvf panda.ics.patch/hardware_ti_wpan.tar.bz2 -C hardware/ti/
  • ALOG* を使用している箇所を LOG* に変更
  • master ブランチでは LOG* の定義が ALOG* に変更されてるため、必要。
    $ git apply panda.ics.patch/0003-Change-ALOG-to-LOG.patch
  • external/wpa_supplicant_8 に master ブランチの内容をマージ
  • $ git apply panda.ics.patch/0004-enable-wifi.patch
  • コンソールの権限を root にする
  • 変更しないと、シリアルコンソールで繋いでも権限無くて /data の下とか見れない。
    $ git apply panda.ics.patch/0005-change-console-permission.patch
  • build/core/definitions.mk に master ブランチの内容をマージ
  • Ubuntu 11.10 以上でビルドする時に必要。
    Ubuntu 11.04 以下でビルドする時は不要だが、あっても悪さはしない。
    $ git apply panda.ics.patch/0006-Enable-android-build-for-Ubuntu-11.10-and-Ubuntu-12..patch
  • HM-TL10T/HM-TL7T のタッチパネルを使うための変更
  • $ git apply panda.ics.patch/0007-Enable-TouchScreen-HM-TL10T-and-HM-TL7T.patch
  • ビルドして出来たイメージを SD カードに書き込む為のスクリプトを追加
  • $ git apply panda.ics.patch/0008-add-mksdcard_pandaboard.sh.patch

x-loader、u-boot、kernel の作成
  • 環境変数の設定
  • $ export ARCH=arm
    $ export CROSS_COMPILE=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
  • x-loader のビルド
  • $ cd $PANDA_WORK
    $ git clone git://git.omapzoom.org/repo/x-loader.git
    $ cd x-loader
    $ git checkout -b omap4_dev origin/omap4_dev
    $ make omap4430panda_config
    $ make ift
    $ cp -a MLO $ANDROID_ROOT/device/ti/panda/xloader.bin
  • u-boot のビルド
  • $ cd $PANDA_WORK
    $ git clone git://git.omapzoom.org/repo/u-boot.git
    $ cd u-boot
    $ git checkout -b omap4_dev origin/omap4_dev
    ブートパラメータを変更する
    $ wget http://android-development-environment.googlecode.com/files/0001-change-bootarges.patch
    $ git apply 0001-change-bootarges.patch
    $ make omap4430panda_config
    $ make
    ※make -j4、make -j8 等で並列化してビルド可能。
    $ cp -a u-boot.bin $ANDROID_ROOT/device/ti/panda/bootloader.bin
  • kernel のビルド
  • $ cd $PANDA_WORK
    $ git clone https://android.googlesource.com/kernel/omap.git kernel
    $ cd kernel
    $ git checkout -b android-omap-panda-3.0 origin/android-omap-panda-3.0
    $ git checkout 52f476403350050beb0dff135a55c06c9e7a82a9
    HM-TL10T/HM-TL7T のタッチパネルを使うための変更。
    $ wget http://android-development-environment.googlecode.com/files/0001-Enable-TouchScreen-HM-TL10T-and-HM-TL7T.patch
    $ git apply 0001-Enable-TouchScreen-HM-TL10T-and-HM-TL7T.patch
    $ make panda_defconfig
    $ make
    ※make -j4、make -j8 等で並列化してビルド可能。
    $ cp -a arch/arm/boot/zImage $ANDROID_ROOT/device/ti/panda/kernel

Android のビルドから PandaBoard、PandaBoard ES の起動まで
  • Android のビルド
  • $ cd $ANDROID_ROOT
    $ source build/envsetup.sh
    $ lunch full_panda-userdebug
    $ make
    ※make -j4、make -j8 等で並列化してビルド可能。
  • SD カードへイメージの書き込み
  • SD カードは 4GB 以上のものを使用する事。
    $ LANG=C sudo ./mksdcard_pandaboard.sh /dev/sdX $ANDROID_ROOT
    /dev/sdX は SD カードのデバイスファイルを指定する。
  • Android の起動
  • PandaBoard や PandaBoard ES に SD を差して電源を入れれば Android が起動する。
    映像出力は DVI の方から。(HDMIではない)
    HM-TL10T や HM-TL7T を繋げば、タッチパネルでの操作が可能。
    ICS でのタッチパネルは ICS な PandaBoard でタッチパネル付き液晶(HM-TL10T)を使う を参照。

PandaBoard で Android 4.0.4_r1.2 が動作してる様子。
device-2012-05-20-122820device-2012-05-20-122838device-2012-05-20-122846device-2012-05-20-123006device-2012-05-20-123116