2011年11月19日土曜日

pandaboardでAndroidことはじめ

pandaboardをひょいっと渡されたので、ひょいっとAndroidでも動かしてみましょうかね。

さてまずは何をすればいいのでしょうか?
パッケージに書かれている pandaboard.org にアクセスしてみましょうか。
何はともあれ、中央あたりにあるGetting Startedに進んでみましょう。

えーと、必要なものは、
・5Vの電源
・SDカード4GB以上
・USB SerialあるいはSerialケーブル
・Ubuntu 10.04 PC(おそらく64bit版を推奨)
・LANケーブル
・miniAのUSBケーブル
・DVIまたはHDMIケーブルと、それに繋がるモニタ
・USBキーボードとUSBマウス

準備できたら(一部なくてもOK)、お次は omappedia.org
色々ありますが、とりあえず pandaboard のリンクを踏みます

めざすは、もちろんAndroidだ(下の方にスクロールして)
あー、手っ取り早く動かしたいのでカンで Project Release

一番新しいのは L27.12.1-P2_Gingerbread_pandroid_rls_v2 ですな。
ダウンロードして解凍してみると、どうやらプリビルド済みのものみたいですね

これをどう使うのかということですが、一つ前に戻り Getting Started に行ってみましょう
つづいて latest release notes を見ることにしましょう

どうやらソースコードの入手方法とビルド手順がかかれているようですね。
ここは後まわしでいいとして、Booting Kernel and Android from SD に飛びましょう

SDカードをUbuntuのPCに挿してフォーマットを行なうようです。
手順の初めからfdiskコマンドでやってみてもいいですが、これを一度に実行できるスクリプトが用意されていますので、こちらを利用するほうが楽々です。

$ wget http://cgit.openembedded.org/cgit.cgi/openembedded/plain/contrib/angstrom/omap3-mkcard.sh
$ chmod a+x omap3-mkcard.sh
(SDカードを挿して認識させ(/dev/sdbとして認識されるとして)、アンマウントした状態にて)
$ sudo ./omap3-mkcard.sh /dev/sdb
シェルプロンプトが戻ってくるまでしばし待ちましょう
これで、"boot"という70MB程のFatパーティションが先頭に、残りは"Angstrom"というext3のパーティションができあがります
途中でエラーが出る場合(予め複数のパーティションがあった場合など)には、一旦gpartedなどで全て消去し、Fat32の一つのパーティションにしておいてから実行すると良いみたいです。

出来上がったら一旦SDカードを抜き差ししてやると自動でマウントされてファイルマネージャーで表示されるんじゃないかと思います。
後は先ほどダウンロードして解凍したプロジェクトリリースの中身をSDカードに書き込むだけです。

$ cd L27.12.1-P2-pandroid_v2
$ ls
boot gfx_license.txt myfs patches powervr_ddk_install.log wlan_license.txt
(bootをbootパーティションに、myfsをAngstromパーティションにコピーしてやりましょう)
$ sudo cp boot/* /media/boot/
$ sudo cp -r myfs/* /media/Angstrom/
(アクセス可能なようにパーミッションを777にする必要があるようです。)
$ sudo chmod -R 777 /media/Angstrom/*
SDカードをアンマウントしてUbuntuから取り外し、pandaboardに挿しましょう。
(アンマウントするときに書き込み完了の処理のため、しばらく時間がかかる場合があります。)

電源を入れる前に、pandaboardをシリアルケーブルでPCと繋ぎましょう。
例えば、Tera Termを使う場合の設定としては、ボーレートを"115200"に変更し、他は多分デフォルトのままでOKと思います。
いちおう設定を載せておきます



そして、いよいよ電源ONです。
ちなみに最低限動かすのに必要と思われる接続はこんな感じ。
・先ほど作成したSDカード
・USBシリアルケーブルでPCと接続。(通信用にTera Term)
・USBキーボードとUSBマウス
・HDMIケーブルでモニタと接続
・5Vの電源を挿す(挿すと電源が入ります)

ええと、起動させてそのまま待っているとシリアルでは、
Texas Instruments X-Loader 1.41 (May 12 2011 - 10:52:12)
mmc read: Invalid size
Starting OS Bootloader from MMC/SD1 ...

U-Boot 1.1.4-L27.13.1^0-dirty (May 12 2011 - 10:48:49)
Load address: 0x80e80000
DRAM:  1024 MB
Flash:  0 kB
Using default environment
In:    serial
Out:   serial
Err:   serial
efi partition table:
efi partition table not found
Net:   KS8851SNL
Hit any key to stop autoboot:  0
booti: cannot find 'boot' partition
Device Serial Number: 7E72002400000001
Fastboot entered...

と、Fastbootモードに入ってしまうようで何も起きない!(それはそれとして覚えておきましょう。)
どうやら"Hit any key to stop autoboot: "と表示されている間に何かキーを打ってubootを止めて、環境変数を手動で入れてやる必要があるみたい。

もう一回起動をやり直しましょう。(ちなみに、上の画像でいうと上下に2つボタンが並んでいるうちの上のボタンがリセットボタンとなっており、こちらを押すことで再起動がかかります)
(略 )
Hit any key to stop autoboot:  5
(ここが0になる前にEnterを入力)
PANDA #
上のように"PANDA #"というプロンプトが表示されれば成功です。

以下、順番に打ち込んでいきましょう。
PANDA # setenv console console=ttyO2,115200n8 androidboot.console=ttyO2
PANDA # setenv memory mem=456M@0x80000000 mem=512M@0xA0000000
PANDA # setenv rootfs root=/dev/mmcblk0p2 rw rootdelay=2 init=/init
PANDA # setenv vmem  vram="32M" omapfb.vram=0:16M
PANDA # setenv display omapdss.def_disp=hdmi consoleblank=0
PANDA # setenv bootargs ${console} ${memory} ${rootfs} ${vmem} ${display}
PANDA # printenv bootargs
bootargs=console=ttyO2,115200n8 androidboot.console=ttyO2 mem=456M@0x80000000 mem=512M@0xA0000000 root=/dev/mmcblk0p2 rw rootdelay=2 init=/init vram="32M" omapfb.vram=0:16M omapdss.def_disp=hdmi consoleblank=0
PANDA # setenv bootcmd 'mmcinit 0;fatload mmc 0 0x80000000 uImage; bootm 0x80000000'

最後にbootです。(ちなみにsaveenvは(現状では)出来ませんので電源ONする度に上記を毎回打ち込む必要があります)
PANDA # boot
mmc read: Invalid size
3246752 bytes read
## Booting image at 80000000 ...
   Image Name:   Linux-2.6.35.7-00148-g6d54618
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3246688 Bytes =  3.1 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK
I2C read: I/O error
Blaze/SDP Board.
Starting kernel ...
(略)
とブートが走り、Androidの起動ロゴ画面の後、見事Android 2.3(Gingerbread)のホーム画面が表示されます!
(初回起動は結構時間がかかります(ずっとAndroidの起動ロゴ画面)ので、気長に待ちましょう)

(アプリのアイコン等の表示も、結構時間がかかります。SDカードからの読み出しだからでしょうか)



とりあえず今回は以上です。次回はもう少し細かく見ていきましょうか

0 件のコメント:

コメントを投稿