Articles tagged with: Panda Board

Firefox OS ビルド for Panda board

こんにちは。アスカ・クリエイションの石原です。

今回はPanda board向けにFirefox OSをビルドすることに挑戦したいと思います。

前回のエミュレータビルドで開発環境が構築できていることを前提に進めたいと思います。

まず、Panda boardを開発マシンにUSBで接続するためにudevルールを追加します。これはAndroidのソースビルドで追加した手順と同じです。

/etc/udev/rules.d/に51-android.rulesを作成し、以下の内容を書き込みます。OWNERは開発マシンにログインしているユーザー名で良いようです。

# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="ishihara"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="ishihara"

 

さらに、Panda board向けにビルドするには以下のパッケージをビルドマシンに導入する必要がありますのでインストールしておきます。

$ sudo apt-get install libnspr4-dev

 

次にビルドターゲットをPanda boardに設定します。前回取得したソースツリーに移動し、以下を実行します。

$ cd B2G
$ ./config.sh pandaboard

 

これが初期のソース取得でなければ、以下のコマンドでソースツリー全体を更新できます。

git pull
./repo sync

 

ソースツリーが更新されるまでしばらく待ちます。無事完了したらビルドを実行します。

$ ./build.sh -j4

 

しかし、ここでエラーになりました。imgtec-panda-imm76i-67545da7.tgzというファイルのチェックサムエラーのようです。これはプロプライエタリなグラフィックスドライバのファイルで、Androidのソースビルド時にも手動で追加していましたので見覚えがあります。ですが、現在Googleのサイト上(https://developers.google.com/android/nexus/drivers#panda)で公開されているこのドライバファイルはファイル名が変わっていますので、修正します。

~/B2G/device/ti/panda/download-blobs.shの「PANDA_BLOBS=”imgtec-panda-imm76i-67545da7.tgz”」をコメントアウトし以下の様に書き換えます。

#PANDA_BLOBS=”imgtec-panda-imm76i-67545da7.tgz”
PANDA_BLOBS=”imgtec-panda-20120430-67545da7.tgz”

ファイル名を変更しただけではチェックサムがえらーになるので、~/B2G/device/ti/panda/blob-shasums のファイル名も書き換えます。なお、書式はsha-1チェックサム、スペース、?、ファイル名ですので、前述のGoogleのドライバサイトより別のドライバファイルを使用したいときは、download-blobs.shとblob-shasumsのファイル名及び、チェックサムの値を書き換えることで対応できるようです。

* 2013/4/26現在の最新ソースコードでは上記の不具合は修正済みとなっておりました。

さて、ビルドが無事通りましたら、いよいよPanda boardに焼き込んでみます。

焼き込む手順はAndroidをソースビルドして焼いたときと同じような手順を踏みます。

まず、fastbootをビルドします。

$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make fastboot

 

Panda boardに電源ケーブルやマウス、キーボード、ディスプレイ、miniUSBケーブルで開発PCと接続し、SDカードを外した状態で以下を実行します。

$ device/ti/panda/usbboot device/ti/panda/bootloader.bin

 

次に、SDカードを挿入し、以下を実行します。

$ fastboot oem format
$ fastboot flash xloader device/ti/panda/xloader.bin
$ fastboot flash bootloader device/ti/panda/bootloader.bin
ここまで正常に完了したら以下のコマンドで実際に焼き込みます。
$ ./flash.sh

 

書き込みが無事終わったら電源を入れ直して再起動します。

2013-04-26_12-15-51_787

 

起動しましたが、画面の向きが縦になっており、キーボードやマウスが効かないようです。少し調整が必要そうですね。

今回はここまでです。

 

Share

Androidソースビルド Panda Board カーネルビルド

こんにちは。アスカ・クリエイション 石原繁彦です。

前回のAndroidのソースビルドに引き続きPanda Board用にカーネルをビルドしてみます。

カーネルビルドができるようになればカーネルの設定を変更できるのでデバイスドライバを追加するなどが可能になります。

AOSPの以下のページに情報がありますので、これを参考に進めます。

 

http://source.android.com/source/building-kernels.html

まず以下を実行します。

$ git clone https://android.googlesource.com/device/ti/panda
$ cd panda
$ git log kernel

 

PandaboardはOmapですのでOmapのカーネルソースを取得します。

$ git clone https://android.googlesource.com/kernel/omap.git

 

コンパイルのためのツールチェインを取得し、パスを通します。

$ git clone https://android.googlesource.com/platform/prebuilt
$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

 

クロスビルドのための環境変数を設定します。

$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-

 

カーネルソースをチェックアウトします。ブランチはandroid-omap-panda-3.0を使用します。

$ cd omap
$ git checkout remotes/origin/android-omap-panda-3.0

 

panda_defconfigでカーネル設定を行い、ビルドします。

$ make panda_defconfig
$ make -j4

 

正常に終了するとarch/arm/boot/zImageができます。これがカーネルになります。前回の記事で取得したAndroidソースのdevice/ti/panda/kernelにコピーします。

$ cp omap/arch/arm/boot/zImage ~/panda_work/device/ti/panda/kernel

 

これで、システムをビルドし、焼き込むことでビルドしたカーネルが使用できます。AndroidのSettings ->About tabletにてカーネルのバージョンやビルド日時で確認できます。

2013-02-21_20-39-08_548

続いて、カーネルの設定を変更してみます。Linuxカーネルの設定変更にmenuconfigを使いたいので、libncurses-devをインストールしておきます。

$ sudo apt-get install libncurses-dev

 

カーネルソースツリーで以下を実行します。

$ make menuconfig

Screenshot_from_2013-02-21 16:55:41

今回はUSB WEBカメラを使用可能にしてみます。

Device Driver —>Multimedia support —>Video For Linux

Device Driver —>Multimedia support —>Video capture adapters —>V4L USB devices —> USB Video Class

それぞれチェックします。モジュールではなくカーネルに組み込みたいので<M>ではなく<*>にします。

これで良いはずですが、drivers/media/video/omapgfxのビルドでエラーとなります。linux/videodev.hの不整合のようですが、とりあえずこのドライバをビルドから外します。

Device Driver —>Multimedia support —>Video capture adapters —>V4L USB devices —> OMAP V4L2-GFX driver

セーブしてmenuconfigを終了し、makeします。正常終了したらデバイスに書き込み、USB Webカメラを接続し/dev/video0ができていたら成功です。

カメラの確認には工学院大学金丸研究室様で同じようなことをされていましたので、アプリのソースを頂き、動作させてみました。

/dev/video0のパーミッションを666に変更してアプリを実行させてみたところ、うまく動作しました。(工学院大学金丸研究室様ありがとうございます)

2013-02-21_20-51-22_143

 

カーネル設定を変更できるとAndroidの可能性が広がりますね。

今回はここまでです。

Share

Androidソースビルド&Panda Boardで動かす

こんにちは。アスカ・クリエイション 石原繁彦です。

今回は前回行ったAndroidのソースビルドの続きでビルドしたイメージをPanda Boardで動かしてみたいと思います。

2013-02-21_20-38-29_587

 

Panda BoardはARM系アーキテクチャのTexas Instruments社OMAPを採用した開発ボードです。スペックはこちら

早速ですが、まず前準備として開発マシンがUSB接続されたPanda Boardを認識できるよう/etc/udev/rules.d/に51-android.rulesを作成し、以下の内容を書き込みます。OWNERはビルドに使用しているマシンのログインアカウントを指定すれば良いようです。


# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="ishihara"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="ishihara"

 

ビルド環境は前回構築したものを使用します。ソースツリーに関しては、今回はPanda Board向けのjb-mr1-dev-plus-aospブランチを使ってみようと思います。新たに作業ディレクトリを作成しソースを取得し直してビルドします。

$ mkdir panda_work

$cd panda_work

 

特定のブランチを指定してソースを取得するには -bオプションを使用します。

$ repo init -u https://android.googlesource.com/platform/manifest -b jb-mr1-dev-plus-aosp

 

-jオプションを付けると並列同期できるようです。

$ repo sync -j4

 

~/panda_work/device/ti/panda/READMEに後の手順が書かれていますので、これを参考に進めてみます。

プロプライエタリなドライバのバイナリファイルを取得する必要があるようです。下記リンクから最新のpanda用ドライバをダウンロードします。現時点では20120807が最新でした。

https://developers.google.com/android/nexus/drivers?hl=ja#panda

ソースのルートで以下を実行して取得します。

$ wget https://dl.google.com/dl/android/aosp/imgtec-panda-20120807-c4e99e89.tgz

 

このtgzファイルを展開するとスクリプトファイルが出てくるので実行します。

$ tar -zxvf imgtec-panda-20120807-c4e99e89.tgz
$./extract-imgtec-panda.sh

 

途中ライセンスの同意が求められるので同意します。これによってソースツリーのvendor以下にファイルが取得されます。

ここで、Panda Boardの電源アダプタ、mini-USBポートと開発マシンを接続し、USBキーボード、マウス、HDMI(DVI出力)、LANケーブル(必須ではない)を接続します。

まずfastbootをビルドします。


$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make fastboot

 

ビルドが正常に完了したらPanda BoardのSDカードが入っていない状態で以下を実行します。

$ device/ti/panda/usbboot device/ti/panda/bootloader.bin

 

コマンドが正常終了したら4GB以上のSDカードを挿入し以下を実行します。

$ fastboot oem format
$ fastboot flash xloader device/ti/panda/xloader.bin
$ fastboot flash bootloader device/ti/panda/bootloader.bin

 

ここまで正常に完了したら全体をビルドします。ビルドターゲットはfull_panda-userdebugを指定します。なおlunchコマンドをオプション無しで実行すると指定可能なターゲットの一覧が表示され選択できます。

$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make -j4

 

ビルドが正常に完了したら、Panda BoardのGPIO_121のボタンを押しながらPWRON_RESETを押すことでfastbootで起動し、ビルドしたファイルシステムを書き込みます。


$ fastboot erase cache
$ fastboot flash userdata
$ fastboot flashall

 

これでシステムが書き込まれたはずです。システム起動後、以下を実行して日時を合わせます。


adb shell date $(date +%s)

 

LANを接続している場合、以下を実行してLAN設定を行います。


adb shell dhcpcd eth0

 

2013-02-20_18-15-56_910

 

Unfortunately, System UI has Stoppedというダイアログが出てOKを押しても、数秒後に同じダイアログの表示を繰り返すという不具合がありましたが、壁紙を適当なLive wallpaperに変更することで、とりあえず現象は治まりました。

2013-02-20_20-09-52_4292013-02-20_20-10-31_786

 

 

ちなみにPanda Boardのシリアルポートがシリアルコンソールになっていますので、PCとシリアルケーブルで接続してターミナルエミュレータでコンソールにアクセスできます。ボーレートは115200です。

wifiも接続できました。bluetoothも周囲のデバイスを検知していたので使用できそうです。

今回はここまでです。次回はカーネルのビルドに挑戦しようと思います。

 

Share