警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : Armadillo-440 で Android を使ってみる

対象製品: Armadillo-440

Armadillo-440 液晶モデルで Android を簡単に試す方法を紹介します。動作させる手順は下記のようになります。

  1. microSD を初期化する
  2. オーディオファイルを microSD にコピーする
  3. Anrdoid ユーザーランドを microSD にコピーする
  4. カーネルを書き換える
  5. Anrdoid を起動する
  6. Android を自動的に起動させる

本 Howto で動作させる Android のバージョンは 2.0.1 です。

Armadillo-440 液晶モデル Android ダウンロード

Android対応Linuxカーネル(LCD拡張ボード リビジョンA用) (ver 20110419, 1.66 MB)
Android対応Linuxカーネル(LCD拡張ボード リビジョンB用) (ver 20110419, 1.66 MB)
Androidユーザランド (ver 20100409, 38.1 MB)

変更履歴

  • 2010/04/09: 公開
  • 2010/04/12: Linux カーネルのビルド方法追加
  • 2011/04/19: LCD拡張ボードのリビジョン変更(A400-LCD-Erratum #2への対応)に伴い、タッチスクリーンの位置ずれが発生する問題への対応1

上記のファイルはデモ用です。動作は一切保証されていません。自己責任の上でご利用ください。

1. microSD を初期化する

microSD カードのパーティションを二つに分割し、片方をデータ保存領域として、もう片方を Android ユーザーランドの保存領域として使用します。 データ保存領域には 100MB を割り当て、VFAT ファイルシステムでフォーマットします。 Android ユーザーランド領域には残りの容量を割り当て、ext3 ファイルシステムでフォーマットします。

microSD カードは 1GB 程度以上の容量のものを使用してください。

まずはfdiskコマンドを利用してパーティションを作成します。 Armadillo-440 の標準カーネルと標準ユーザーランドで起動して、以下のようにコマンドを実行してください。


[armadillo ~]# fdisk /dev/mmcblk0

The number of cylinders for this disk is set to 30656.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

まずは、既存のパーティションを全て削除します。


Command (m for help): d
Selected partition 1

次にパーティションを作成します。


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-30656, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-30656, default 30656): +100M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3054-30656, default 3054):
Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-30656, default 30656):
Using default value 30656

最後に、パーティションの変更を microSD に書き込みます。


Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
 mmcblk0: p1 p2
 mmcblk0: p1 p2
Syncing disks.

続いて、作成したパーティンションにファイルシステムを作成します。

まず、パーティション1(データ保存領域) を VFAT ファイルシステムでフォーマットします。


[armadillo ~]# mkdosfs /dev/mmcblk0p1

次に、パーティション2(Android ユーザーランド領域) を ext3 ファイルシステムでフォーマットします。


[armadillo ~]# mke2fs -j /dev/mmcblk0p2

2. オーディオファイルを microSD にコピーする

パーティション1(データ保存領域)をマウントします。


[armadillo ~]# mount -t vfat /dev/mmcblk0p1 /mnt/

/mnt ディレクトリに、mp3 などのオーディオファイルをコピーしてください。

ファイルのコピーが完了したら、/mnt ディレクトリをアンマウントします。


[armadillo ~]# umount /mnt

3. Anrdoid ユーザーランドを microSD にコピーする

パーティション2(Android ユーザーランド領域)をマウントします。


[armadillo ~]# mount /dev/mmcblk0p2 /mnt/

そして、マウントしたディレクトリに移動してから、Androidユーザランドのアーカイブをダウンロードします。


[armadillo ~]# cd /mnt/
[armadillo /mnt]# wget http://armadillo.atmark-techno.com/files/downloads/misc/android/android-2.0.1-a440-20100409.tar.gz

ダウンロードしたアーカイブを展開します。


[armadillo /mnt]# tar xzf android-2.0.1-a440-20100409.tar.gz
[armadillo /mnt]# ls
android/                          lost+found/
android-2.0.1-a440-20100409.tar.gz
[armadillo /mnt]# cd
[armadillo ~]#

4. カーネルを書き換える

Android に対応しているカーネルをダウンロードして、フラッシュメモリに書き込みます。Armadillo-440に接続している LCD拡張ボードのリビジョンによって、適切なカーネルイメージが異なりますので、ファイル名は適宜読み替えてください。romfs ユーザーランドは標準のままで構いません。


[armadillo ~]# netflash -nkusr /dev/flash/kernel http://armadillo.atmark-techno.com/files/downloads/misc/android/linux-a400-android-20110419b.bin.gz

上記コマンドを実行すると、リブートします。リブート後は Android 対応カーネルが動作しています。

5. Anrdoidを起動する

手動でコマンドを実行して、Android を起動してみます。

まず、Armadillo-440 液晶モデルの標準ユーザーランドでは Xfbdev が起動しているので、Android を起動する前に終了しておきます。


[armadillo ~]# killall Xfbdev

次に、microSD カードのパーティション2(Android ユーザーランド領域) を /mnt ディレクトリにマウントします。


[armadillo ~]# mount /dev/mmcblk0p2 /mnt/

最後に chroot コマンドを利用して Android の環境に入って起動します。起動ロゴが表示されてから、Android のホームスクリーンが立ち上がります。


[armadillo ~]# chroot /mnt/android /init

6. Android を自動的に起動させる

次のように /etc/config/rc.local を編集することで Android が自動的に起動するようにできます。


[armadillo ~]# vi /etc/config/rc.local

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin

killall Xfbdev
mount /dev/mmcblk0p2 /mnt/
chroot /mnt/android /init

編集したあと、実行権限を付けて flatfsd コマンドでファイルを保存します。


[armadillo ~]# chmod +x /etc/config/rc.local
[armadillo ~]# flatfsd -s

次回起動時から、Android が自動で起動するようになります。

サポート状況

v20100409では、以下のデバイスを使用することができます。

  1. 有線LAN

  2. オーディオ

  3. microSD カード

また、パワーマネジメント機能が有効になっており、スクリーンブランク時にスリープモードに移行します。

既知の問題点

v20100409では、以下の問題点があります。

  1. スリープ後にオーディオ機能が使用できなくなる

    スリープからの復帰後に、オーディオ機能が使用できなくなります。スクリーンブランクしないようにするには、「Settings」->「Sound & display」->「Screen timeout」を開き、”Never timeout” を選択してください。

  2. Web ブラウザからファイルをダウンロードすることができない

    Web ブラウザからファイルをダウンロードして、microSD カードのデータ保存領域に書き込むことができません。オーディオファイルなどは、事前に microSD カードのデータ保存領域に保存してください。

Appendix 1: カーネルイメージのビルド

本 Howto で使用した Linux カーネルイメージを生成するためのソースコードアーカイブは以下から入手することができます。

Android対応Linuxカーネルソースコードアーカイブ(LCD拡張ボード リビジョンA用) (ver 20110419)

Android対応Linuxカーネルソースコードアーカイブ(LCD拡張ボード リビジョンB用) (ver 20110419)

ソースコードアーカイブからイメージをビルドするには、作業用 PC で以下のようにコマンドを実行します。

LCD拡張ボード リビジョンAを使用している場合


[PC ~]$ tar xzvf linux-2.6.26-at14-android-20110419a.tar.gz
[PC ~]$ cd linux-2.6.26-at-android/
[PC ~]$ make armadillo400_android_defconfig
[PC ~]$ make CROSS_COMPILE=arm-linux-gnueabi-
[PC ~]$ gzip -c arch/arm/boot/Image > linux.bin.gz

LCD拡張ボード リビジョンBを使用している場合


[PC ~]$ tar xzvf linux-2.6.26-at14-android-20110419b.tar.gz
[PC ~]$ cd linux-2.6.26-at-android/
[PC ~]$ make armadillo400_android_defconfig
[PC ~]$ make CROSS_COMPILE=arm-linux-gnueabi-
[PC ~]$ gzip -c arch/arm/boot/Image > linux.bin.gz

linux.bin.gz がカーネルイメージです。

Appendix 2: パッチ

標準カーネルとの差分は、以下から取得できます。変更点の確認などにご利用ください。

Armadillo-440用標準Linuxカーネル(linux-2.6.26-at14)とAndroid対応Linuxカーネル(LCD拡張ボード リビジョンA用)との差分 (ver 20110419)

Android対応Linuxカーネル(LCD拡張ボード リビジョンA用)とAndroid対応Linuxカーネル(LCD拡張ボード リビジョンB用)の差分 (ver 20110419)

  • LCD拡張ボードのリビジョン判別方法及び、エラッタの詳細はArmadillo-400シリーズリビジョン情報をご参照ください。