Wiiリモコンで操作できるプレゼン・マシンの製作(1) ―― オリジナルのAndroidマシンを自作する
tag: 組み込み ディジタル・デザイン
技術解説 2009年9月11日
本稿では市販の組み込み評価ボードを使用して,オリジナルのAndroidマシンを作ってみたいと思います.最終的にはWiiリモコンで操作可能なプレゼン・マシンを目指しますが,工夫次第でいろいろな用途のシステムを作れると思います.使用しているパーツはすべて,「Digi-Key」や「Amazon」などのWebサイトから入手できます.連載1回目の今回は機器や環境を用意して,実際にAndroidを起動するまでを説明します.(編集部)
※ 本稿で使用するパッチ・ファイルはこちらからダウンロードできます.
● BeagleBoardで自分だけのAndroidマシンを作ろう!
米国Texas Instruments社の「BeagleBoard」が発売されてから約1年が経過しました.BeagleBoardは同社のプロセッサ「OMAP3530」を積んでおり,さらにDSP(Digital Signal Processor)やディジタル映像出力,さまざまなインターフェースを備える強力な評価ボードが149ドルという低価格で入手できることから,一躍いろいろな人に愛用されるボードとなりました.この間,さまざまな人がBeagleBoardにAndroidをポーティングして独自のAndroidマシンを作り上げています.
本稿ではあらためて,BeagleBoardでAndroidを起動させる方法を解説します.Androidのビルド環境を作るところからAndroidの起動までをおさらいした上で,Wiiリモコンを動作させるためにBluetoothデバイス・ポーティングやAndroidに標準で入っていないミドルウェアのポーティングを実施します.そして,オリジナルのAndroidマシンを作りたいと思います.
写真1 製作するWiiリモコンで操作できるプレゼン・マシン
1.使用する機器や環境の準備
● BeagleBoardと周辺機器を準備する
BeagleBoard本体は米国Digi-Key社のWebサイトで購入可能です.本稿で使用するデバイスのうち,Digi-Keyで購入可能なものを表1に,Amazonや家電量販店などで購入可能なものを表2に示します.
表1 Digi-Keyで購入可能な機器
表2 Amazonや家電量販店などで購入可能な機器
● 開発環境を準備する
開発環境としては,Ubuntu Linux(32ビットx86)の6.06以降(8.10以上推奨)がインストールされたパソコンを用意してください.WindowsにインストールしたVMwareなどを使用しても構いません.
Ubuntuのコマンド・ラインで以下を順に実行していきます.
まずは,apt-getコマンドでAndroidのビルドの際に必要なパッケージのインストールを先に済ませておきましょう.
$ sudo apt-get install -y git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
Kernelイメージはu-bootが扱えるuImage形式にする必要があるため,以下のパッケージもインストールしておきます.
$ sudo apt-get install -y uboot-mkimage
シリアル・コンソールの端末エミュレータとして使用するC-Kermitをインストールします.ほかに使い慣れたものがあれば,この手順は飛ばしてください.
$ sudo apt-get install -y ckermit
Androidのソース・コードの取得にはgitコマンドのラッパ・スクリプトであるrepoを使用するため,curlコマンドで取得しておきます.
$ mkdir ~/bin
$ curl http://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
repoスクリプトを配置したディレクトリをbashのサーチ・パスに追加します.
$ echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
$ source ~/.bashrc
●ソース・コードを準備する
Androidのソース・コードはプロジェクトごとにgitレポジトリで管理されており,repoスクリプトを使用して複数のレポジトリからソースを一括取得します.レポジトリは本家のandroid.kernel.orgのものを使用します.
$ mkdir ~/mydroid && cd ~/mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git ※1
$ repo sync
※1 repoスクリプトは内部でgitコマンドを実行しており,初回実行時のみgitコマンドの初期設定として,名前とメール・アドレスの入力を求められます.
OMAP用のAndroid KernelはBeagleBoardのAndroidポーティングで有名なlabs.embinux.orgのものを使用することにします(※2).標準のmanifestに含まれていないレポジトリはlocal_manifest.xmlに追加することで取得できます.Android KernelのソースとALSA(Advanced Linux Sound Architecture)関連のソースを取得するため,"~/mydroid/.repo/" 配下に以下の内容でlocal_manifest.xmlファイルを作成します.
※2 labs.embinux.orgでもAndroidのポーティング方法やソース・コードを公開しています.ここで公開されているUserlandのソース・コードは多少古めなので,本稿ではこれは使用せずに本家の最新版のUserlandのソース・コードを使用しています.また,本家でもOMAP用のAndroid Kernelを公開していますが,本稿執筆時点ではBeagleBoard用のデフォルト・コンフィグレーションが入っていないため,Android Kernelのソース・コードに関してのみlabs.embinux.orgのものを使用することにしました.
再度"repo sync"を実行し,local_manifest.xmlの内容で追加のソースを取得します.
$ repo sync