小ネタ 2009-019
マイコンボードBeagleBoardでAndroidを動かしてみる
BeagleBoardというマイコンボードを入手した。ARM Cortex-A8 CPUが搭載されており、Linux系のOSを動作させることができる。
Androidも移植されて動作するらしいので、実際に試してみた。(2009-08-16)
Androidを動作させてみたところ。(赤色の基板がBeagleBoard, その右は大きさ比較用のGoogle Android Dev Phone1)
1. 準備したもの
・BeagleBoard Rev.C
・DC+5V電源アダプタ
・SD-card 2GB
・USB-RS232Cアダプタと、自作ケーブル
・HDMI-DVI変換ケーブル
・DVI表示できるモニタ (あるいは、DVI-VGA変換器XRGB-3とVGAモニタ)
・miniUSB-USB変換コネクタ (W-Zero3[es]用のUSB変換コネクタ等)
・USB接続のマウス、キーボードで消費電力の小さいもの (あるいは外部電源式のUSB-HUBを使った方がよい)
・Linuxが動作するPCとSD-cardリーダー
2. 手順
(1) ビルド済みのBeageBoard用Androidのファイル一式を入手
各所で実験的にBeagleBoardに移植されているが、それを配布しているサイトはあまり多くない。
embinuxというサイトからダウンロードした。メールアドレスの登録が必要だった。
(2) SD-cardの初期設定
Linuxが動作するPCにSD-cardリーダーを接続して、Linux上でSD-cardに必要な初期化作業をする。
fdiskコマンドでパーティションを2つ設定し、mkfsコマンドで初期化する。
FATパーティション側にlinuxのブートローダーを入れる。(FAT32でも動作するかもしれないが、自分はFAT16にした)
ext3パーティション側にAndroidのファイルシステムを入れる。
2GBのうち400MBをFATにして、1.6GBをext3に割り当てた。
こことかこことかここを参考にした。
(3) シリアルコンソールから起動設定 (シリアルケーブルを作って Teratermで115200bpsで接続して使う)
コンソールから入力した設定は以下の通り。
# setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2
video=omapfb.mode=dvi:1280x720MR-24@50 init=/init rootfstype=ext3 rw rootdelay=1
nohz=off androidboot.console=ttyS2
# setenv bootcmd 'mmc init; fatload mmc 0 0x80300000 uImage; bootm 0x80300000'
# saveenv
(4) 起動
パワーオンリセットで、Androidが起動する。
という手順で、動作させることができた。
あらかじめビルドされたもの以外にも自分でビルドして動かすというのも可能らしいので、自分でビルドするのも試してみたい。
自前ビルドのAndroidを動かすのにAndroid Dev Phone1実機のファームウェアを書き換えるのは失敗すると再起不能になるというかなりの危険が伴う。
BeagleBoardであれば、リスクを少なくそれを試すことができる。
自作ハードウェアを接続して、ドライバも自作したりできると楽しそうだ。
その面で参考になりそうな先達や先例は結構多くあったりする
・日本Androidの会 BeagleBoardでAndroidを拡張してみる
・Android自社端末作成中 - Android(アンドロイド)情報-ブリリアントサービス
・Cerevo tech blog - Beagle Board用 ツールチェインとAndroidの起動のおまけ
・部活動録 BeagleBoard
・ことぶ記 SDカードからBeagle Boardをブートする
・なんでも作っちゃう、かも。 Beagle Board関連情報まとめ
・オリジナルのAndroidマシンを自作する Wiiリモコンで操作できるプレゼン・マシンの製作
(後日加筆 2010-09 BeagleBoardに液晶とケースを付けた)
http://www.ohneta.net/wiki/index.php?BeagleBoard で、液晶を取り付けるキットがあると知ったので、入手して組み立ててみた。
しかし、そのままDVI出力が液晶に表示されるわけではなく、ソフトをだいぶいじらないとダメみたいだ。