ラベル ポーティング の投稿を表示しています。 すべての投稿を表示
ラベル ポーティング の投稿を表示しています。 すべての投稿を表示

2010年5月20日木曜日



EMMA Mobileとは


EMMA Mobileとは旧NECエレクトロニクス社から発売された、携帯機器向けマルチメディアプロセッサです。


EMMA Mobileは以下の種類があります。




  • 高機能化と低消費電力化を追求した1シリーズ


    • 1-D:MobileDDR SDRAM(512Mbit)をパッケージに内蔵しセットの小型化、外部RAMとの高速インタフェースの設計が不要でユーザの基板設計を容易とする。

    • 1-S:Mobile DDR SDRAMとの外部I/Fを持ち、大容量メモリを利用することで大規模なソフトウェアを実行できる。



  • HDコンテンツ再生とグラフィックス処理機能の高機能化と低消費電力化を追求したEVシリーズ


    • EV1:HDコンテンツ再生機能を搭載する基本機能版。

    • EV2:マルチコアCPUと3Dグラフィックスを搭載する高性能版。







今回はこのEMMA Mobile 1のHDK上でAndroidを動かす方法について説明します。


ルネサスエレクトロニクス社HPにスタートアップガイドがありますので、そちらを見て頂ければ確実なのですが全て英語で書かれています。





実行環境:


Ubuntu(64ビット上の8.04)


VMware上のUbuntuでも可





下準備:


作業用ディレクトリとして<SDK_WORK>という名前のディレクトリを作成します。(任意の名前で結構です)


EMMA Mobile 1 HDK付属のCDやルネサスエレクトロニクスのHPにあるEMMA Mobile 1用SDKファイルを<SDK_WORK>の下に作ったarchivesディレクトリにコピーして下さい。


/home/ユーザ/<SDK_WORK>/archives


f:id:bs-android:20100519144942j:image





1.ビルドの準備


Androidのビルド手順

ビルドに必要なパッケージをインストールして下さい。



# sudo apt-get install sun-java5-jdk
# sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
# sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so
# sudo apt-get install git-core gnupg


ソースファイル取得のためにrepoというgitのマネージャツールをダウンロードし、実行権限を与えます。



# mkdir bin
# curl http://android.git.kernel.org/repo >~/bin/repo
# chmod a+x ~/bin/repo


ここで~/binにパスを通すため一度ログアウトします。





ソースファイル取得用のディレクトリ「mydroid」を作成し、mydroidに移動してrepo環境を初期化します。



# mkdir mydroid
# cd mydroid
# repo init -u git://android.git.kernel.org/platform/manifest.git


名前やメールアドレスを聞かれますが、入力してもしなくても構いません。次に色分け表示するか聞かれるのでy/nお好きな方を選んで下さい。


初期化が終了すると次はソースファイルを取得し、makeコマンドを入力します。



# repo sync
# make





Android Open Sourceの取得



  • Androidの取得


<SDK_WORK>ディレクトリに移動し、mydroid-1.6r1ディレクトリを作りそこへ移動します。



# cd <SDK_WORK>
# mkdir mydroid-1.6r1
# cd mydroid-1.6r1


Androidを取得します。



# repo init -u git://android.git.kernel.org/platform/manifest.git -b android-1.6_r1
# repo sync


ここまでの作業を終わらせた段階での<SDK_WORK>ディレクトリの中は以下のようになります。


f:id:bs-android:20100519144943j:image







  • ALSAの取得


alsa-libの取得



# git clone git://android.git.kernel.org/platform/external/alsa-lib.git
# cd alsa-lib
# git checkout -b origin/donut 7d7fc0e490064bd5


alsa_soundの取得



# git clone git://android.git.kernel.org/platform/hardware/alsa_sound.git
# cd alsa_sound
# git checkout -b origin/donut 64ff6838637d2285


上記で得たファイルをそれぞれ以下の場所へ移動して下さい。




  • alsa-lib :<SDK_WORK>/mydroid-1.6r1/external


f:id:bs-android:20100519144944j:image




  • alsa_sound :<SDK_WORK>/mydroid-1.6r1/hardware


f:id:bs-android:20100519144945j:image


*ALSAのファイルが無いとAndroid file systemをビルドする時エラーが発生します。





2.ビルド手順


ブートローダー、ファイルシステム、カーネルのビルドの方法を説明します。





ブートローダーのビルド手順

(1)ビルドのために必要な環境をセット


カレント・ディレクトリ構成を前もって採用するために「set.sh」を修正して下さい。



# cp <SDK_WORK>/archives/set.sh .
# . ./set.sh





(2)SDKの中にある“EM1_android_bootloader.tar.gz”を展開



# cd <SDK_WORK>
# tar zxf archives/EM1_android_bootloader.tar.gz


“u-boot”ディレクトリの下にファイルが展開されます。





(3)“u-boot”ディレクトリに移動



# cd u-boot





(4)eMMCのためのbootloaderの構築



# make clobber
# make em1_emmc_config_dkit
# make


U-Bootの構築が完了すると、”u-boot”ディレクトリの中に”u-boot-emmc.bin”が出来ます。





Android File Systemのビルド手順

(1)Android File SystemをEMMA Mobile 1用に変更


SDKの中にある“change-1.6r1_YYMMDD.tar.gz”を展開します。(YYMMDDは日付情報)



# cd <SDK_WORK>
# tar zxf archives/change-1.6r1_YYMMDD.tar.gz


“change-YYMMDD”ディレクトリの下にファイルが展開されます。


“change-YYMMDD”ディレクトリの中身を<SDK_WORK>/mydroid-1.6r1にコピー・上書きします。



# tar cv -C ./change-YYMMDD . | tar xv -C ./mydroid-1.6r1





(2)EMMA Mobile 1 SDKのOMFライブラリを適用


“EM1_SDK_Android_OMF_Vxx_xx_xx_xx.tar.gz”を展開します。



# tar zxf archives/EM1_SDK_Android_OMF_Vxx_xx_xx_xx.tar.gz


“mydroid_omf”ディレクトリの下に展開されます。


“mydroid_omf”の中身を<SDK_WORK>/mydroid-1.6r1にコピー・上書きします。



# tar cv -C ./mydroid_omf . | tar xv -C ./mydroid-1.6r1





(3)ビルドを実行


”mydroid-1.6r1”ディレクトリに移動しAndroid File Systemを構築します。



# cd mydroid-1.6r1
# make


構築されると、以下の場所にFile Systemが作られます。


Mydroid-1.6r1/out/target/product/em1/





(4) File Systemのファイルを圧縮



# cd out/target/product/em1/
# tar zcf ~/tmp-fs.tar.gz system data root


圧縮ファイルの転送先として任意のディレクトを指定して下さい。上記の例ではユーザーホームディレクトリを指定しています。





Androidのカーネルの構築方法

(1)SDKの中の「mkimage」に実行属性を加える



# cp <SDK_WORK>/archives/mkimage <SDK_WORK>
# chmod +x <SDK_WORK>/mkimage
# export PATH=$PATH:<SDK_WORK>





(2)カーネルのソースコードの展開



# cd <SDK_WORK>
# tar zxf archives/kernel_2.6.29-tagnname.tar.gz


ファイルは”kernel”ディレクトリの下に展開されます。


“kernel”ディレクトリの下のファイルを<SDK_WORK>/mydroid-1.6r1にコピー・上書きします。



# tar cv ./kernel | tar xv -C ./mydroid-1.6r1





(3)カーネルをEMMA Mobile 1用に変更


SDKの中の”change-kernel-em1-YYMMDD.tar.gz”を展開します。(YYMMDDは日付データ)



# tar zxf archives/change-kernel-em1-YYMMDD.tar.gz


“change_linux_em1”の下にファイルは展開されます。


“change_linux_em1”ディレクトリの下にあるファイルを”mydroid-1.6r1/kernel”にコピー・上書きします。



# tar cv -C ./change_linux_em1 . | tar xv -C ./mydroid-1.6r1/kernel





(4)ビルドのために必要な環境をセット


カレント・ディレクトリ構成を前もって採用するために「set.sh」を修正して下さい。



# cp <SDK_WORK>/archives/set.sh .
# . ./set.sh





(5)カーネルコンフィギュレーションをコピー


カーネルソースディレクトリの下にある”dot.config_dkit”ファイルを”.config”にコピーします。



# cd <SDK_WORK>/mydroid-1.6r1/kernel
# cp dot.config-dkit .config





(6)ビルドを実行


“mydroid-1.6r1/kernel”に移動しカーネルを構築します。



# cd <SDK_WORK>/mydroid-1.6r1/kernel
# make


成功すると以下の場所にカーネルイメージ(uImage)が作られます。(*)


mydroid-1.6r1/kernel/arch/arm/boot/uImage


また、モジュールファイルは次の場所に作られます。


mydroid-1.6r1/kernel/arch/arm/mach-mp200/inter_dsp.ko


mydroid-1.6r1/kernel/drivers/avc/mp200_avc.ko





(*) もしuImageファイルが作成されなければ、以下を実行してもう一度(6)をして下さい。



# export PATH=$PATH:/home/ユーザ/<SDK_WORK>/





Android File Systemの作成

(1)ファイルシステム「tmp-fs.tar.gz」を抽出して、下記のように構成を変更して下さい。



# mkdir <SDK_WORK>/android-fs
# cd <SDK_WORK>/android-fs
# tar zxf ~/tmp-fs.tar.gz
# mv data root
# mv system root
# mv root/* ./
# rmdir root





(2)モジュールファイルを追加します


カーネルがカーネルなどの変更により再度構築されている場合は、ファイル以下にコピーしてください。また、モジュールを加える場合は、ファイルをコピーして下さい。



# cp ~/<SDK_WORK>/mydroid-1.6r1/kernel/arch/arm/mach-mp200/inter_dsp.ko lib/modules/
# cp ~/<SDK_WORK>/mydroid-1.6r1/kernel/drivers/avc/mp200_avc.ko lib/modules/





(3)属性変更



# chmod +r system/usr/keychars/*
# sudo chown -R 1001:1000 ./





(4)圧縮



# sudo tar zcf ../android-fs.tar.gz ./





3.実行方法


EMMA Mobile 1 HDKの中のeMMC-NANDへAndroidブートイメージユニット(ブートローダ、カーネル、Android File System)を書き込む方法、そしてAndroidを起動する方法を説明します。





ホストPCにコンソール画面を表示するためにHDKの”CON”コネクタにUSBケーブルを挿入し、ホストPCと接続して下さい。


ホストPCではターミナルソフトを使ってコンソール画面を見ます。TeraTerm等のソフトをインストールし、以下のように設定して下さい。





  • ボーレート:115200

  • Data:8bit

  • Parity:none

  • Stop Bit:1Bit

  • Flow Control:none






(1)eMMCを書き直すためのSDカードを作成


a)microSDカード(2Gバイト程度の容量)をFAT16でフォーマットします。


b)microSDカードへ「emmctools」ディレクトリーの下のファイルを格納します。(emmctoolsは付属CD等の中にあります)


f:id:bs-android:20100519144946j:image





(2)Androidブートイメージの格納


a)(1)によって作られた「emmc」に次のファイルを格納します。




  • u-boot-emmc.bin 以下の場所に作られたブートローダ


(/home/ユーザ/<SDK_WORK>/u-boot/u-boot-emmc.bin)




  • uImage 以下の場所に作られたカーネルイメージ


(/home/ユーザ/<SDK_WORK>/mydroid-1.6r1/kernel/arch/arm/boot/uImage)




  • android-fs.tar.gz 以下の場所に作られたAndroid File System


(/home/ユーザ/<SDK_WORK>)


SDカードの中は以下のような構成になります。



 SDカード:


  |


  |cramfs


  |install.sh


  |param.bin


  |sdboot.bin


  |uboot-sd.bin


  |uImage


  |


  ∟emmc


    uImage


    u-boot-emmc.bin


    android-fs.tar.gz






(3)書き直し


a)SDブートにセットするために、EMMA Mobile 1 HDKのディップスイッチ・DSW1(bootmode)をセットします。



"DSW1-1" : ON


"DSW1-2" : ON



"DSW1-3": OFF


"DSW1-4" : ON




b)HDKのスロットルにmicroSDカードを挿入し、HDKの電源を入れ、ホストPCにコンソール画面が表示されるようにします。


c)以下のようなメッセージが表示されればeMMCブート環境の構築が成功したことを意味します。



---------------------


- install complete! –


---------------------


Welcome to Wind River Linux


Please press Enter to activate this console.



d)HDKの電源を切り、microSDカードを取り出します。





(4)eMMCブートでAndroidをスタート


a)eMMCブートするために、EMMA Mobile 1 HDKのディップスイッチ・DSW1(bootmode)をセットします。



"DSW1-1" : ON


"DSW1-2" : ON



"DSW1-3" : ON


"DSW1-4" : OFF




b)HDKの電源を入れ、ホストPCにコンソール画面が表示されるようにします。


c)電源を入れて3秒以内にコンソール画面で何らかのキーを入力し、コンソールディスプレイからの入力を可能にして下さい。以下のコマンドを入力した後、HDKを再起動しSDKを再起動して下さい。


もし起動後3秒以内に何らかのキーを入力出来なければ、Linuxが起動しカーネルパニックを起こします。このような場合、HDKの”reset”スイッチを押しSDKを再起動して下さい。再起動後、再び3秒以内に何らかのキーを入力して下さい。



EM1# setenv ext3cmd setenv bootargs root=/dev/mmcblk0p3 noinitrd init=/init console=ttyS0,115200n8n SELINUX_INIT=no mem=32M@0x30000000 mem=32M@0x34000000 mem=32M@0x36000000 rw video=qfb: ip=none rootfstype=ext3 rootwait\;bootm 30007fc0
EM1# saveenv


このセッティングはAndroid File Systemをスタートさせるためです。このセッティングを一度行っていれば、このセッティングは毎回必要ではありません。初期設定に戻したい場合は、下記コマンドをタイプしてください。



EM1# setenv ext3cmd setenv bootargs root=/dev/mmcblk0p3 noinitrd init=/linuxrc console=ttyS0,115200n8n SELINUX_INIT=no mem=32M@0x30000000 mem=32M@0x34000000 mem=32M@0x36000000 rw video=qfb: ip=none rootfstype=ext3 rootwait\;bootm 30007fc0
EM1# saveenv


d)HDKの再起動


数秒後Androidが起動します。





以上でEMMA Mobile 1 HDK上でのAndroid構築は終了です。主にmake時にエラーが発生して困ったのですが、原因はPATHがきちんと通っていなかったせいなので、その点に注意すれば難しくないと思います。





補足:


EMMA Mobile 1 HDK上のキーとAndroidのキーは以下と一致します。



SW2:Volume Down


SW3:Up


SW4:Volume Up


SW6:right


SW7:select


SW8:left


SW9:Screen Off


SW10:down


SW12:Back


SW13:menu



by:おおき





EMMA Mobile 1 HDK 上でAndroidを動かす



EMMA Mobileとは


EMMA Mobileとは旧NECエレクトロニクス社から発売された、携帯機器向けマルチメディアプロセッサです。


EMMA Mobileは以下の種類があります。




  • 高機能化と低消費電力化を追求した1シリーズ


    • 1-D:MobileDDR SDRAM(512Mbit)をパッケージに内蔵しセットの小型化、外部RAMとの高速インタフェースの設計が不要でユーザの基板設計を容易とする。

    • 1-S:Mobile DDR SDRAMとの外部I/Fを持ち、大容量メモリを利用することで大規模なソフトウェアを実行できる。



  • HDコンテンツ再生とグラフィックス処理機能の高機能化と低消費電力化を追求したEVシリーズ


    • EV1:HDコンテンツ再生機能を搭載する基本機能版。

    • EV2:マルチコアCPUと3Dグラフィックスを搭載する高性能版。







今回はこのEMMA Mobile 1のHDK上でAndroidを動かす方法について説明します。


ルネサスエレクトロニクス社HPにスタートアップガイドがありますので、そちらを見て頂ければ確実なのですが全て英語で書かれています。





実行環境:


Ubuntu(64ビット上の8.04)


VMware上のUbuntuでも可





下準備:


作業用ディレクトリとして<SDK_WORK>という名前のディレクトリを作成します。(任意の名前で結構です)


EMMA Mobile 1 HDK付属のCDやルネサスエレクトロニクスのHPにあるEMMA Mobile 1用SDKファイルを<SDK_WORK>の下に作ったarchivesディレクトリにコピーして下さい。


/home/ユーザ/<SDK_WORK>/archives


f:id:bs-android:20100519144942j:image





1.ビルドの準備


Androidのビルド手順

ビルドに必要なパッケージをインストールして下さい。



# sudo apt-get install sun-java5-jdk
# sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
# sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so
# sudo apt-get install git-core gnupg


ソースファイル取得のためにrepoというgitのマネージャツールをダウンロードし、実行権限を与えます。



# mkdir bin
# curl http://android.git.kernel.org/repo >~/bin/repo
# chmod a+x ~/bin/repo


ここで~/binにパスを通すため一度ログアウトします。





ソースファイル取得用のディレクトリ「mydroid」を作成し、mydroidに移動してrepo環境を初期化します。



# mkdir mydroid
# cd mydroid
# repo init -u git://android.git.kernel.org/platform/manifest.git


名前やメールアドレスを聞かれますが、入力してもしなくても構いません。次に色分け表示するか聞かれるのでy/nお好きな方を選んで下さい。


初期化が終了すると次はソースファイルを取得し、makeコマンドを入力します。



# repo sync
# make





Android Open Sourceの取得



  • Androidの取得


<SDK_WORK>ディレクトリに移動し、mydroid-1.6r1ディレクトリを作りそこへ移動します。



# cd <SDK_WORK>
# mkdir mydroid-1.6r1
# cd mydroid-1.6r1


Androidを取得します。



# repo init -u git://android.git.kernel.org/platform/manifest.git -b android-1.6_r1
# repo sync


ここまでの作業を終わらせた段階での<SDK_WORK>ディレクトリの中は以下のようになります。


f:id:bs-android:20100519144943j:image







  • ALSAの取得


alsa-libの取得



# git clone git://android.git.kernel.org/platform/external/alsa-lib.git
# cd alsa-lib
# git checkout -b origin/donut 7d7fc0e490064bd5


alsa_soundの取得



# git clone git://android.git.kernel.org/platform/hardware/alsa_sound.git
# cd alsa_sound
# git checkout -b origin/donut 64ff6838637d2285


上記で得たファイルをそれぞれ以下の場所へ移動して下さい。




  • alsa-lib :<SDK_WORK>/mydroid-1.6r1/external


f:id:bs-android:20100519144944j:image




  • alsa_sound :<SDK_WORK>/mydroid-1.6r1/hardware


f:id:bs-android:20100519144945j:image


*ALSAのファイルが無いとAndroid file systemをビルドする時エラーが発生します。





2.ビルド手順


ブートローダー、ファイルシステム、カーネルのビルドの方法を説明します。





ブートローダーのビルド手順

(1)ビルドのために必要な環境をセット


カレント・ディレクトリ構成を前もって採用するために「set.sh」を修正して下さい。



# cp <SDK_WORK>/archives/set.sh .
# . ./set.sh





(2)SDKの中にある“EM1_android_bootloader.tar.gz”を展開



# cd <SDK_WORK>
# tar zxf archives/EM1_android_bootloader.tar.gz


“u-boot”ディレクトリの下にファイルが展開されます。





(3)“u-boot”ディレクトリに移動



# cd u-boot





(4)eMMCのためのbootloaderの構築



# make clobber
# make em1_emmc_config_dkit
# make


U-Bootの構築が完了すると、”u-boot”ディレクトリの中に”u-boot-emmc.bin”が出来ます。





Android File Systemのビルド手順

(1)Android File SystemをEMMA Mobile 1用に変更


SDKの中にある“change-1.6r1_YYMMDD.tar.gz”を展開します。(YYMMDDは日付情報)



# cd <SDK_WORK>
# tar zxf archives/change-1.6r1_YYMMDD.tar.gz


“change-YYMMDD”ディレクトリの下にファイルが展開されます。


“change-YYMMDD”ディレクトリの中身を<SDK_WORK>/mydroid-1.6r1にコピー・上書きします。



# tar cv -C ./change-YYMMDD . | tar xv -C ./mydroid-1.6r1





(2)EMMA Mobile 1 SDKのOMFライブラリを適用


“EM1_SDK_Android_OMF_Vxx_xx_xx_xx.tar.gz”を展開します。



# tar zxf archives/EM1_SDK_Android_OMF_Vxx_xx_xx_xx.tar.gz


“mydroid_omf”ディレクトリの下に展開されます。


“mydroid_omf”の中身を<SDK_WORK>/mydroid-1.6r1にコピー・上書きします。



# tar cv -C ./mydroid_omf . | tar xv -C ./mydroid-1.6r1





(3)ビルドを実行


”mydroid-1.6r1”ディレクトリに移動しAndroid File Systemを構築します。



# cd mydroid-1.6r1
# make


構築されると、以下の場所にFile Systemが作られます。


Mydroid-1.6r1/out/target/product/em1/





(4) File Systemのファイルを圧縮



# cd out/target/product/em1/
# tar zcf ~/tmp-fs.tar.gz system data root


圧縮ファイルの転送先として任意のディレクトを指定して下さい。上記の例ではユーザーホームディレクトリを指定しています。





Androidのカーネルの構築方法

(1)SDKの中の「mkimage」に実行属性を加える



# cp <SDK_WORK>/archives/mkimage <SDK_WORK>
# chmod +x <SDK_WORK>/mkimage
# export PATH=$PATH:<SDK_WORK>





(2)カーネルのソースコードの展開



# cd <SDK_WORK>
# tar zxf archives/kernel_2.6.29-tagnname.tar.gz


ファイルは”kernel”ディレクトリの下に展開されます。


“kernel”ディレクトリの下のファイルを<SDK_WORK>/mydroid-1.6r1にコピー・上書きします。



# tar cv ./kernel | tar xv -C ./mydroid-1.6r1





(3)カーネルをEMMA Mobile 1用に変更


SDKの中の”change-kernel-em1-YYMMDD.tar.gz”を展開します。(YYMMDDは日付データ)



# tar zxf archives/change-kernel-em1-YYMMDD.tar.gz


“change_linux_em1”の下にファイルは展開されます。


“change_linux_em1”ディレクトリの下にあるファイルを”mydroid-1.6r1/kernel”にコピー・上書きします。



# tar cv -C ./change_linux_em1 . | tar xv -C ./mydroid-1.6r1/kernel





(4)ビルドのために必要な環境をセット


カレント・ディレクトリ構成を前もって採用するために「set.sh」を修正して下さい。



# cp <SDK_WORK>/archives/set.sh .
# . ./set.sh





(5)カーネルコンフィギュレーションをコピー


カーネルソースディレクトリの下にある”dot.config_dkit”ファイルを”.config”にコピーします。



# cd <SDK_WORK>/mydroid-1.6r1/kernel
# cp dot.config-dkit .config





(6)ビルドを実行


“mydroid-1.6r1/kernel”に移動しカーネルを構築します。



# cd <SDK_WORK>/mydroid-1.6r1/kernel
# make


成功すると以下の場所にカーネルイメージ(uImage)が作られます。(*)


mydroid-1.6r1/kernel/arch/arm/boot/uImage


また、モジュールファイルは次の場所に作られます。


mydroid-1.6r1/kernel/arch/arm/mach-mp200/inter_dsp.ko


mydroid-1.6r1/kernel/drivers/avc/mp200_avc.ko





(*) もしuImageファイルが作成されなければ、以下を実行してもう一度(6)をして下さい。



# export PATH=$PATH:/home/ユーザ/<SDK_WORK>/





Android File Systemの作成

(1)ファイルシステム「tmp-fs.tar.gz」を抽出して、下記のように構成を変更して下さい。



# mkdir <SDK_WORK>/android-fs
# cd <SDK_WORK>/android-fs
# tar zxf ~/tmp-fs.tar.gz
# mv data root
# mv system root
# mv root/* ./
# rmdir root





(2)モジュールファイルを追加します


カーネルがカーネルなどの変更により再度構築されている場合は、ファイル以下にコピーしてください。また、モジュールを加える場合は、ファイルをコピーして下さい。



# cp ~/<SDK_WORK>/mydroid-1.6r1/kernel/arch/arm/mach-mp200/inter_dsp.ko lib/modules/
# cp ~/<SDK_WORK>/mydroid-1.6r1/kernel/drivers/avc/mp200_avc.ko lib/modules/





(3)属性変更



# chmod +r system/usr/keychars/*
# sudo chown -R 1001:1000 ./





(4)圧縮



# sudo tar zcf ../android-fs.tar.gz ./





3.実行方法


EMMA Mobile 1 HDKの中のeMMC-NANDへAndroidブートイメージユニット(ブートローダ、カーネル、Android File System)を書き込む方法、そしてAndroidを起動する方法を説明します。





ホストPCにコンソール画面を表示するためにHDKの”CON”コネクタにUSBケーブルを挿入し、ホストPCと接続して下さい。


ホストPCではターミナルソフトを使ってコンソール画面を見ます。TeraTerm等のソフトをインストールし、以下のように設定して下さい。





  • ボーレート:115200

  • Data:8bit

  • Parity:none

  • Stop Bit:1Bit

  • Flow Control:none






(1)eMMCを書き直すためのSDカードを作成


a)microSDカード(2Gバイト程度の容量)をFAT16でフォーマットします。


b)microSDカードへ「emmctools」ディレクトリーの下のファイルを格納します。(emmctoolsは付属CD等の中にあります)


f:id:bs-android:20100519144946j:image





(2)Androidブートイメージの格納


a)(1)によって作られた「emmc」に次のファイルを格納します。




  • u-boot-emmc.bin 以下の場所に作られたブートローダ


(/home/ユーザ/<SDK_WORK>/u-boot/u-boot-emmc.bin)




  • uImage 以下の場所に作られたカーネルイメージ


(/home/ユーザ/<SDK_WORK>/mydroid-1.6r1/kernel/arch/arm/boot/uImage)




  • android-fs.tar.gz 以下の場所に作られたAndroid File System


(/home/ユーザ/<SDK_WORK>)


SDカードの中は以下のような構成になります。



 SDカード:


  |


  |cramfs


  |install.sh


  |param.bin


  |sdboot.bin


  |uboot-sd.bin


  |uImage


  |


  ∟emmc


    uImage


    u-boot-emmc.bin


    android-fs.tar.gz






(3)書き直し


a)SDブートにセットするために、EMMA Mobile 1 HDKのディップスイッチ・DSW1(bootmode)をセットします。



"DSW1-1" : ON


"DSW1-2" : ON



"DSW1-3": OFF


"DSW1-4" : ON




b)HDKのスロットルにmicroSDカードを挿入し、HDKの電源を入れ、ホストPCにコンソール画面が表示されるようにします。


c)以下のようなメッセージが表示されればeMMCブート環境の構築が成功したことを意味します。



---------------------


- install complete! –


---------------------


Welcome to Wind River Linux


Please press Enter to activate this console.



d)HDKの電源を切り、microSDカードを取り出します。





(4)eMMCブートでAndroidをスタート


a)eMMCブートするために、EMMA Mobile 1 HDKのディップスイッチ・DSW1(bootmode)をセットします。



"DSW1-1" : ON


"DSW1-2" : ON



"DSW1-3" : ON


"DSW1-4" : OFF




b)HDKの電源を入れ、ホストPCにコンソール画面が表示されるようにします。


c)電源を入れて3秒以内にコンソール画面で何らかのキーを入力し、コンソールディスプレイからの入力を可能にして下さい。以下のコマンドを入力した後、HDKを再起動しSDKを再起動して下さい。


もし起動後3秒以内に何らかのキーを入力出来なければ、Linuxが起動しカーネルパニックを起こします。このような場合、HDKの”reset”スイッチを押しSDKを再起動して下さい。再起動後、再び3秒以内に何らかのキーを入力して下さい。



EM1# setenv ext3cmd setenv bootargs root=/dev/mmcblk0p3 noinitrd init=/init console=ttyS0,115200n8n SELINUX_INIT=no mem=32M@0x30000000 mem=32M@0x34000000 mem=32M@0x36000000 rw video=qfb: ip=none rootfstype=ext3 rootwait\;bootm 30007fc0
EM1# saveenv


このセッティングはAndroid File Systemをスタートさせるためです。このセッティングを一度行っていれば、このセッティングは毎回必要ではありません。初期設定に戻したい場合は、下記コマンドをタイプしてください。



EM1# setenv ext3cmd setenv bootargs root=/dev/mmcblk0p3 noinitrd init=/linuxrc console=ttyS0,115200n8n SELINUX_INIT=no mem=32M@0x30000000 mem=32M@0x34000000 mem=32M@0x36000000 rw video=qfb: ip=none rootfstype=ext3 rootwait\;bootm 30007fc0
EM1# saveenv


d)HDKの再起動


数秒後Androidが起動します。





以上でEMMA Mobile 1 HDK上でのAndroid構築は終了です。主にmake時にエラーが発生して困ったのですが、原因はPATHがきちんと通っていなかったせいなので、その点に注意すれば難しくないと思います。





補足:


EMMA Mobile 1 HDK上のキーとAndroidのキーは以下と一致します。



SW2:Volume Down


SW3:Up


SW4:Volume Up


SW6:right


SW7:select


SW8:left


SW9:Screen Off


SW10:down


SW12:Back


SW13:menu



by:おおき





2008年10月24日金曜日



Armadillo-500上のAndroidでUSBカメラの画像をアプリで表示させる方法をまとめましたので公開します。


Androidのソースコード公開前に作成したものの為、Androidから直接デバイスを使用しない方法を使っています。


今後、Androidから直接USBカメラを使用させる方法も探っていきます。


では、早速。







環境依存部分は便宜読み替えて下さい。


開発環境を整える


以前、このブログで紹介した方法でいけると思います。


※不明点があれば質問ください。


カーネルビルド


今回使用するカメラはUVCカメラなのでV4Lを有効化してビルドします。



atmark@atde:~/atmark-dist-20080617$ make menuconfig

  ~中略~

Device Drivers--->
Multimedia devices--->
<*> Video For Linux
< > Enable Video For Linux API 1 (DEPRECATED)
< > Enable Video For Linux API 1 compatible Layer
< > Video capture adapters --->

  ~中略~

atmark@atde:~/atmark-dist-20080617$ make


Video For Linuxだけにチェックをつけて他のチェックは外さないとコンパイルエラーが出ることがあるので注意してください。


UVCドライバビルド


Linux UVC driver and tools(http://linux-uvc.berlios.de/)にUVCドライバコードがあります。


コードはSubversionリポジトリにあるのでSubversionをインストールしてからダウンロードします。



atmark@atde:~$ sudo apt-get install subversion
Password:

  ~中略~

atmark@atde:~$ svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk

  ~中略~

atmark@atde:~$ mv trunk uvcvideo
atmark@atde:~$ cd uvcvideo
atmark@atde:~/uvcvideo$ mv Makefile Makefile.org

  ~中略~


すんなりビルドできないかもしれないので以下のMakefileに入れ替えてビルドしてみて下さい。


/home/atmark/uvcvideo/Makefile



PWD := $(shell pwd)

ROOTDIR ?= ../atmark-dist-20080617

ROMFSDIR = $(ROOTDIR)/romfs

include $(ROOTDIR)/.config
include $(ROOTDIR)/config.arch

MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

LINUXDIR = $(CONFIG_LINUXDIR)
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}

obj-m := uvcvideo.o
uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o uvc_status.o uvc_isight.o

all: uvcvideo

uvcvideo:
@echo "Building USB Video Class driver..."
@sh svn-version.sh > version.h 2>/dev/null
@$(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=$(PWD) modules

clean:
-rm -f *.o *.ko .*.cmd .*.flags *.mod.c Module.symvers version.h
modules.order
-rm -rf .tmp_versions


カーネルモジュールを作成します。



atmark@atde:~/uvcvideo$ make

  ~中略~

atmark@atde:~/uvcvideo$ ls -l

  ~中略~

-rw-r--r-- 1 atmark atmark 68024 XXXX-XX-XX XX:XX uvcvideo.ko


Sourcery G++ Lite 2007q3-51 for ARM GNU/Linuxをインストール(ARMクロスコンパイラ)


CodeSourceryからARMクロスコンパイラを取得します。


http://www.codesourcery.com/gnu_toolchains/arm/portal/release313


から IA32 GNU/Linux Tar を選択し、ダウンロード後に展開します。



atmark@atde:~$ tar xvfj arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2


uvccaptureの展開


HP(http://www.quickcamteam.net/software/linux/v4l2-software/uvccapture)から


uvccaptureを取得してホームで展開して下さい。


展開したフォルダ名を webcamd にして下さい。


添付のwebcamd化ファイルを webcamd にコピーして下さい。


v4l2uvc.hで定義している構造体vdInに下記定義を追加して下さい。



 int init;


uClibc-0.9.29ビルド


この時はまだAndroidのC言語ライブラリ(bionic)が公開されてなかったので、uClibcで代用しました。


コンフィギュレーションは以下の通りです。


Linux kernel headerの場所ですが一度ビルドしたカーネルでないとヘッダが足りません。



atmark@atde:~$ wget http://www.uclibc.org/downloads/uClibc-0.9.29.tar.bz2

  ~中略~

atmark@atde:~$ tar xvfj uClibc-0.9.29.tar.bz2

  ~中略~

atmark@atde:~$ cd uClibc-0.9.29
atmark@atde:~/uClibc-0.9.29$ make menuconfig

  ~中略~

 Target Architecture
   => arm
  Target Architecture Features and Options
   => Target ABI
    => EABI
   
   => Target Processor Endianness
    => Little Endian
    
   => Linux kernel header Location
    => /home/atmark/linux-2.6.18-at8/include

  ~中略~

atmark@atde:~/uClibc-0.9.29$ export PATH=$PATH:/home/atmark/arm-2007q3/bin



コンパイルエラーが出る場合は Rules.mak を以下のように修正してみて下さい。


Rules.mak



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
366:#CFLAGS := -include $(top_builddir)include/libc-symbols.h \
367:# $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
368:# -fno-builtin -nostdinc -I$(top_builddir)include -I.
369:CFLAGS := -include $(top_builddir)include/libc-symbols.h \
370: $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
371: -fno-builtin -I$(top_builddir)include -I.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


コンパイルします。



atmark@atde:~/uClibc-0.9.29$ make CROSS=arm-none-linux-gnueabi-

  ~中略~

atmark@atde:~/uClibc-0.9.29$ cp ./lib/crt1.o ../webcamd/crt1.o
atmark@atde:~/uClibc-0.9.29$ cp ./lib/crti.o ../webcamd/crti.o
atmark@atde:~/uClibc-0.9.29$ cp ./lib/crtn.o ../webcamd/crtn.o
atmark@atde:~/uClibc-0.9.29$ tar cfz uclibc.tar.gz lib
atmark@atde:~/uClibc-0.9.29$ su
Password:
root@atde:/home/atmark/uClibc-0.9.29# mkdir /usr/arm-linux-uclibc
root@atde:/home/atmark/uClibc-0.9.29# cp uclibc.tar.gz /usr/arm-linux-uclibc/uclibc.tar.gz
root@atde:/home/atmark/uClibc-0.9.29# cd /usr/arm-linux-uclibc
root@atde:/usr/arm-linux-uclibc# tar xvfz uclibc.tar.gz
root@atde:/usr/arm-linux-uclibc# exit


gcc 4.2.1のソースからソフトウェア浮動小数点コードの取得


gnuから gcc 4.2.1のソースコードを取得し展開して下さい。


下記フォルダにあるコードを webcamd フォルダへコピーして下さい。



 gcc-4.2.1/gcc/config/asm/lib1funcs.asm
 gcc-4.2.1/gcc/config/asm/ieee754-df.S
 gcc-4.2.1/gcc/config/asm/ieee754-sf.S


uvccaptureをwebcamdとしてビルド



atmark@atde:/usr$ cd ~/webcamd
atmark@atde:~/webcamd$ ./buildwebcamd


cameraアプリの展開


Tom Gibara氏のLive Camera Previews in AndroidのSocketCameraを使用したアプリ"camera.apk"をAndroid側で使用します。


SocketCameraに与えるパラメータは以下の通り。




  • アドレス:127.0.0.1

  • ポート:8080

  • 画像の横幅:320

  • 画像の縦幅:240


ビルドしたアプリを実機に展開


ビルドした物をSDカード、httpサーバーからDLする等で下記の様に実機上で展開して下さい。




  • uClibcライブラリ


ファイル:uclibc.tar.gz



root@android:/# mkdir /usr/arm-linux-uclibc
root@android:/# /bin/cp /sdcard/uclibc.tar.gz /usr/arm-linux-uclibc/uclibc.tar.gz
root@android:/# tar xvfz uclibc.tar.gz




  • uvcvideo.koモジュール


ファイル:uvcvideo.ko



root@android:/# mkdir /lib/modules
root@android:/# /bin/cp /sdcard/uvcvideo.ko /lib/modules/uvcvideo.ko




  • webcamdデーモン


ファイル:webcamd



root@android:/# mkdir /usr/webcamd
root@android:/# cp /sdcard/webcamd /usr/webcamd/webcamd




  • Android cameraアプリ


ファイル:camera.apk



root@android:/# /bin/cp /sdcard/camera.apk /data/app/camera.apk


セットアップ


uvcvideo.koをロードしてwebcamdを起動すれば準備完了です。



root@android:/# cd /lib/modules
root@android:/# insmod uvcvideo.ko
root@android:/# cd /usr/webcamd
root@android:/# ./webcamd&


cameraアプリ起動


Androidのランチャにcameraアプリがあるので起動させます。


f:id:bs-android:20081025131904j:image





Armadillo-500上のAndroidでカメラプレビューする方法



Armadillo-500上のAndroidでUSBカメラの画像をアプリで表示させる方法をまとめましたので公開します。


Androidのソースコード公開前に作成したものの為、Androidから直接デバイスを使用しない方法を使っています。


今後、Androidから直接USBカメラを使用させる方法も探っていきます。


では、早速。







環境依存部分は便宜読み替えて下さい。


開発環境を整える


以前、このブログで紹介した方法でいけると思います。


※不明点があれば質問ください。


カーネルビルド


今回使用するカメラはUVCカメラなのでV4Lを有効化してビルドします。



atmark@atde:~/atmark-dist-20080617$ make menuconfig

  ~中略~

Device Drivers--->
Multimedia devices--->
<*> Video For Linux
< > Enable Video For Linux API 1 (DEPRECATED)
< > Enable Video For Linux API 1 compatible Layer
< > Video capture adapters --->

  ~中略~

atmark@atde:~/atmark-dist-20080617$ make


Video For Linuxだけにチェックをつけて他のチェックは外さないとコンパイルエラーが出ることがあるので注意してください。


UVCドライバビルド


Linux UVC driver and tools(http://linux-uvc.berlios.de/)にUVCドライバコードがあります。


コードはSubversionリポジトリにあるのでSubversionをインストールしてからダウンロードします。



atmark@atde:~$ sudo apt-get install subversion
Password:

  ~中略~

atmark@atde:~$ svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk

  ~中略~

atmark@atde:~$ mv trunk uvcvideo
atmark@atde:~$ cd uvcvideo
atmark@atde:~/uvcvideo$ mv Makefile Makefile.org

  ~中略~


すんなりビルドできないかもしれないので以下のMakefileに入れ替えてビルドしてみて下さい。


/home/atmark/uvcvideo/Makefile



PWD := $(shell pwd)

ROOTDIR ?= ../atmark-dist-20080617

ROMFSDIR = $(ROOTDIR)/romfs

include $(ROOTDIR)/.config
include $(ROOTDIR)/config.arch

MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

LINUXDIR = $(CONFIG_LINUXDIR)
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}

obj-m := uvcvideo.o
uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o uvc_status.o uvc_isight.o

all: uvcvideo

uvcvideo:
@echo "Building USB Video Class driver..."
@sh svn-version.sh > version.h 2>/dev/null
@$(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=$(PWD) modules

clean:
-rm -f *.o *.ko .*.cmd .*.flags *.mod.c Module.symvers version.h
modules.order
-rm -rf .tmp_versions


カーネルモジュールを作成します。



atmark@atde:~/uvcvideo$ make

  ~中略~

atmark@atde:~/uvcvideo$ ls -l

  ~中略~

-rw-r--r-- 1 atmark atmark 68024 XXXX-XX-XX XX:XX uvcvideo.ko


Sourcery G++ Lite 2007q3-51 for ARM GNU/Linuxをインストール(ARMクロスコンパイラ)


CodeSourceryからARMクロスコンパイラを取得します。


http://www.codesourcery.com/gnu_toolchains/arm/portal/release313


から IA32 GNU/Linux Tar を選択し、ダウンロード後に展開します。



atmark@atde:~$ tar xvfj arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2


uvccaptureの展開


HP(http://www.quickcamteam.net/software/linux/v4l2-software/uvccapture)から


uvccaptureを取得してホームで展開して下さい。


展開したフォルダ名を webcamd にして下さい。


添付のwebcamd化ファイルを webcamd にコピーして下さい。


v4l2uvc.hで定義している構造体vdInに下記定義を追加して下さい。



 int init;


uClibc-0.9.29ビルド


この時はまだAndroidのC言語ライブラリ(bionic)が公開されてなかったので、uClibcで代用しました。


コンフィギュレーションは以下の通りです。


Linux kernel headerの場所ですが一度ビルドしたカーネルでないとヘッダが足りません。



atmark@atde:~$ wget http://www.uclibc.org/downloads/uClibc-0.9.29.tar.bz2

  ~中略~

atmark@atde:~$ tar xvfj uClibc-0.9.29.tar.bz2

  ~中略~

atmark@atde:~$ cd uClibc-0.9.29
atmark@atde:~/uClibc-0.9.29$ make menuconfig

  ~中略~

 Target Architecture
   => arm
  Target Architecture Features and Options
   => Target ABI
    => EABI
   
   => Target Processor Endianness
    => Little Endian
    
   => Linux kernel header Location
    => /home/atmark/linux-2.6.18-at8/include

  ~中略~

atmark@atde:~/uClibc-0.9.29$ export PATH=$PATH:/home/atmark/arm-2007q3/bin



コンパイルエラーが出る場合は Rules.mak を以下のように修正してみて下さい。


Rules.mak



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
366:#CFLAGS := -include $(top_builddir)include/libc-symbols.h \
367:# $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
368:# -fno-builtin -nostdinc -I$(top_builddir)include -I.
369:CFLAGS := -include $(top_builddir)include/libc-symbols.h \
370: $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
371: -fno-builtin -I$(top_builddir)include -I.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


コンパイルします。



atmark@atde:~/uClibc-0.9.29$ make CROSS=arm-none-linux-gnueabi-

  ~中略~

atmark@atde:~/uClibc-0.9.29$ cp ./lib/crt1.o ../webcamd/crt1.o
atmark@atde:~/uClibc-0.9.29$ cp ./lib/crti.o ../webcamd/crti.o
atmark@atde:~/uClibc-0.9.29$ cp ./lib/crtn.o ../webcamd/crtn.o
atmark@atde:~/uClibc-0.9.29$ tar cfz uclibc.tar.gz lib
atmark@atde:~/uClibc-0.9.29$ su
Password:
root@atde:/home/atmark/uClibc-0.9.29# mkdir /usr/arm-linux-uclibc
root@atde:/home/atmark/uClibc-0.9.29# cp uclibc.tar.gz /usr/arm-linux-uclibc/uclibc.tar.gz
root@atde:/home/atmark/uClibc-0.9.29# cd /usr/arm-linux-uclibc
root@atde:/usr/arm-linux-uclibc# tar xvfz uclibc.tar.gz
root@atde:/usr/arm-linux-uclibc# exit


gcc 4.2.1のソースからソフトウェア浮動小数点コードの取得


gnuから gcc 4.2.1のソースコードを取得し展開して下さい。


下記フォルダにあるコードを webcamd フォルダへコピーして下さい。



 gcc-4.2.1/gcc/config/asm/lib1funcs.asm
 gcc-4.2.1/gcc/config/asm/ieee754-df.S
 gcc-4.2.1/gcc/config/asm/ieee754-sf.S


uvccaptureをwebcamdとしてビルド



atmark@atde:/usr$ cd ~/webcamd
atmark@atde:~/webcamd$ ./buildwebcamd


cameraアプリの展開


Tom Gibara氏のLive Camera Previews in AndroidのSocketCameraを使用したアプリ"camera.apk"をAndroid側で使用します。


SocketCameraに与えるパラメータは以下の通り。




  • アドレス:127.0.0.1

  • ポート:8080

  • 画像の横幅:320

  • 画像の縦幅:240


ビルドしたアプリを実機に展開


ビルドした物をSDカード、httpサーバーからDLする等で下記の様に実機上で展開して下さい。




  • uClibcライブラリ


ファイル:uclibc.tar.gz



root@android:/# mkdir /usr/arm-linux-uclibc
root@android:/# /bin/cp /sdcard/uclibc.tar.gz /usr/arm-linux-uclibc/uclibc.tar.gz
root@android:/# tar xvfz uclibc.tar.gz




  • uvcvideo.koモジュール


ファイル:uvcvideo.ko



root@android:/# mkdir /lib/modules
root@android:/# /bin/cp /sdcard/uvcvideo.ko /lib/modules/uvcvideo.ko




  • webcamdデーモン


ファイル:webcamd



root@android:/# mkdir /usr/webcamd
root@android:/# cp /sdcard/webcamd /usr/webcamd/webcamd




  • Android cameraアプリ


ファイル:camera.apk



root@android:/# /bin/cp /sdcard/camera.apk /data/app/camera.apk


セットアップ


uvcvideo.koをロードしてwebcamdを起動すれば準備完了です。



root@android:/# cd /lib/modules
root@android:/# insmod uvcvideo.ko
root@android:/# cd /usr/webcamd
root@android:/# ./webcamd&


cameraアプリ起動


Androidのランチャにcameraアプリがあるので起動させます。


f:id:bs-android:20081025131904j:image





2008年7月28日月曜日



お待たせしました。


大分時間がたってしまいましたが、以前アットマークテクノの人にいただいていたサウンドを再生させるためのパッチファイルの動作検証が終わり、ひとまず身の回りが落ち着いたので公開致します。


サウンドのパッチファイル


解凍するとファイルが2つ含まれているので、両方共当ててカーネルをコンパイルしてください。


#menuconfigなどでOSSをオンにしておく必要があると思います。


そして、コンパイルしたカーネルを焼いた実機を起動させてから、



rm /dev/eac


としてAndroidが使用するサウンドデバイスを削除します。


そして



ls -al /dev/dsp
crw------- 1 root root 14, 3 Dec 31 19:01 /dev/dsp


としてドライバのメジャー番号とマイナー番号を確認しておきます。


そして、確認したメジャー番号とマイナー番号を使って/dev/eacを作り直します。



mknod /dev/eac c 14 3


これだけで音が鳴るようになるはずです。


Ambientという音楽プレイヤーを使ってSDカードのmp3ファイルを再生させるのが楽だと思います。


これはArmadillo-500での方法ですが、他のボードやZaurusにも応用可能だと思います。


他のデバイスでも成功したらフィードバックを頂けるとありがたいです。


グッドラック!





Androidでサウンド再生を可能にするパッチ



お待たせしました。


大分時間がたってしまいましたが、以前アットマークテクノの人にいただいていたサウンドを再生させるためのパッチファイルの動作検証が終わり、ひとまず身の回りが落ち着いたので公開致します。


サウンドのパッチファイル


解凍するとファイルが2つ含まれているので、両方共当ててカーネルをコンパイルしてください。


#menuconfigなどでOSSをオンにしておく必要があると思います。


そして、コンパイルしたカーネルを焼いた実機を起動させてから、



rm /dev/eac


としてAndroidが使用するサウンドデバイスを削除します。


そして



ls -al /dev/dsp
crw------- 1 root root 14, 3 Dec 31 19:01 /dev/dsp


としてドライバのメジャー番号とマイナー番号を確認しておきます。


そして、確認したメジャー番号とマイナー番号を使って/dev/eacを作り直します。



mknod /dev/eac c 14 3


これだけで音が鳴るようになるはずです。


Ambientという音楽プレイヤーを使ってSDカードのmp3ファイルを再生させるのが楽だと思います。


これはArmadillo-500での方法ですが、他のボードやZaurusにも応用可能だと思います。


他のデバイスでも成功したらフィードバックを頂けるとありがたいです。


グッドラック!





2008年4月29日火曜日



このブログに今まで書いてきた方法で、基本的にはArmadillo-500にAndroidをポーティングすることが可能ですが、上手くいっておられない方もいらっしゃるようです。


どこまで行っているかの状況と、どこでつまづいているかを教えていただければ、我々で力になれるかもしれませんので、差支えがなければ、情報共有の為にも当ブログのコメントに書き込みくださいませ。


また、公開に差支えがある場合は個別のメールをいただければ、対応を検討いたしますので、query@brilliantservice.co.jp(@半角にしてください)までご連絡ください。


メールの件名には


[ポーティング]


の文字を入れていただければ助かります。





Armadillo-500にAndroidをポーティングする方法について



このブログに今まで書いてきた方法で、基本的にはArmadillo-500にAndroidをポーティングすることが可能ですが、上手くいっておられない方もいらっしゃるようです。


どこまで行っているかの状況と、どこでつまづいているかを教えていただければ、我々で力になれるかもしれませんので、差支えがなければ、情報共有の為にも当ブログのコメントに書き込みくださいませ。


また、公開に差支えがある場合は個別のメールをいただければ、対応を検討いたしますので、query@brilliantservice.co.jp(@半角にしてください)までご連絡ください。


メールの件名には


[ポーティング]


の文字を入れていただければ助かります。





2008年4月4日金曜日



Androidが俄かに忙しくなってまいりました。


先ほどGoogleデベロッパー交流会に参加を申し込みましたので、そこでの内容も勉強会に反映したいのと、デベロッパー交流会の前日では人が集まりにくいと思いますので、勉強会の日程を後ろにずらそうと思います。


既にご応募いただいた方は申し訳ありません。


日程が調整でき次第、当ブログにて連絡いたします。





Androidポーティング勉強会の開催日を変更します



Androidが俄かに忙しくなってまいりました。


先ほどGoogleデベロッパー交流会に参加を申し込みましたので、そこでの内容も勉強会に反映したいのと、デベロッパー交流会の前日では人が集まりにくいと思いますので、勉強会の日程を後ろにずらそうと思います。


既にご応募いただいた方は申し訳ありません。


日程が調整でき次第、当ブログにて連絡いたします。





2008年4月1日火曜日



開催日時


2008/4/23(水) 15:00~17:00


初旬に開催予定でしたが、ずれ込んでしまいました。すいません。





開催場所


http://www.tokocityhotel.co.jp/umeda/conference/index.html


トーコーシティホテル梅田の2F桜の間です。


地下鉄の場合は南森町駅の2番出口下車です。


Googleマップ





参加費用


2000円





定員


最大20名くらいを想定しています。





用意していただくもの


特にありませんが、Armadillo-500を持参いただければAndroidをその場でポーティングいたします。


※ポーティングに使用するSDKはm5-rc15の予定。


※安藤恐竜さんが来られたらザウルスにもポーティングしてもらえるかもしれません(?)。





内容(予定)




  • Androidをポーティングする方法


    • ポーティングの手順をポーティング時に引っかかった罠とともに解説します



  • Armadillo-500によるAndroidデモ

  • Androidが今後業界に与えそうな影響

  • (Armadillo-500にその場でAndroidをポーティング※持参した方がおられた場合)

  • 質疑応答他、参加者間での情報共有タイム


#途中で休憩10分くらい挟もうと思います。





応募方法


kondo@brilliantservice.co.jp(@を半角にしてください)


まで



件名     :20080423-Android勉強会参加希望
氏名     :
ふりがな   :
メールアドレス:
お勤め先(任意):

をお知らせください。


#複数参加の場合でも1通にまとめていただいて構いません。


人数が多い場合は抽選にさせていただくかもしれません。


※多すぎる場合は場所の変更も考えます。





締め切り


4/16迄











勉強会開催後にご飯でも行きましょう。(もちろん自由参加です)





Androidポーティング勉強会の開催日程と場所が決定しました



開催日時


2008/4/23(水) 15:00~17:00


初旬に開催予定でしたが、ずれ込んでしまいました。すいません。





開催場所


http://www.tokocityhotel.co.jp/umeda/conference/index.html


トーコーシティホテル梅田の2F桜の間です。


地下鉄の場合は南森町駅の2番出口下車です。


Googleマップ





参加費用


2000円





定員


最大20名くらいを想定しています。





用意していただくもの


特にありませんが、Armadillo-500を持参いただければAndroidをその場でポーティングいたします。


※ポーティングに使用するSDKはm5-rc15の予定。


※安藤恐竜さんが来られたらザウルスにもポーティングしてもらえるかもしれません(?)。





内容(予定)




  • Androidをポーティングする方法


    • ポーティングの手順をポーティング時に引っかかった罠とともに解説します



  • Armadillo-500によるAndroidデモ

  • Androidが今後業界に与えそうな影響

  • (Armadillo-500にその場でAndroidをポーティング※持参した方がおられた場合)

  • 質疑応答他、参加者間での情報共有タイム


#途中で休憩10分くらい挟もうと思います。





応募方法


kondo@brilliantservice.co.jp(@を半角にしてください)


まで



件名     :20080423-Android勉強会参加希望
氏名     :
ふりがな   :
メールアドレス:
お勤め先(任意):

をお知らせください。


#複数参加の場合でも1通にまとめていただいて構いません。


人数が多い場合は抽選にさせていただくかもしれません。


※多すぎる場合は場所の変更も考えます。





締め切り


4/16迄











勉強会開催後にご飯でも行きましょう。(もちろん自由参加です)





2008年3月27日木曜日



4月前半にAndroidのポーティング情報の勉強会を大阪で開催したいと思います。


Armadillo-500に載せたAndroidのデモも行う予定です。


Armadillo-500を持参いただければ、その場で持参していただいたArmadillo-500にAndroidをポーティングすることも可能です。


参加希望の方は


kondo@brilliantservice.co.jp(@を半角にしてください)


まで、氏名、連絡先をご連絡ください。


参加費用は会場使用費用を参加人数で割ったものにする予定です。


参加資格は特にありませんので、法人、個人は問いません。


日程と開催場所の詳細が決まり次第、当ブログでご連絡させていただきます。





Androidポーティング情報勉強会を開催します



4月前半にAndroidのポーティング情報の勉強会を大阪で開催したいと思います。


Armadillo-500に載せたAndroidのデモも行う予定です。


Armadillo-500を持参いただければ、その場で持参していただいたArmadillo-500にAndroidをポーティングすることも可能です。


参加希望の方は


kondo@brilliantservice.co.jp(@を半角にしてください)


まで、氏名、連絡先をご連絡ください。


参加費用は会場使用費用を参加人数で割ったものにする予定です。


参加資格は特にありませんので、法人、個人は問いません。


日程と開催場所の詳細が決まり次第、当ブログでご連絡させていただきます。





2008年3月18日火曜日



2008/3/10の記事で公開したパッチファイルではエラーが出る状態でした。





修正版を公開いたします。


linux-2.6.18-at3へのAndroidパッチ修正版


m5-rc14のカーネルに対応したパッチも近日中に公開したいと思います。





2.6.18へのAndroidパッチ修正



2008/3/10の記事で公開したパッチファイルではエラーが出る状態でした。





修正版を公開いたします。


linux-2.6.18-at3へのAndroidパッチ修正版


m5-rc14のカーネルに対応したパッチも近日中に公開したいと思います。





2008年3月17日月曜日



buildrootで構築したユーザーランドにAndroidのSDKから吸い出したユーザーランドを盛り込み済みのイメージファイルを公開いたします。


分割ファイルその1


分割ファイルその2


分割ファイルその3


3つともすべてダウンロードして



cat android_m3-rc37a.img.tar.bz2a* > android_m3-rc37a.img.tar.bz2
tar xjvf android_m3-rc37a.img.tar.bz2


として結合してから解凍してください。


※公開ファイルを設置しているGoogle Page Creatorの制限で1ファイルが10Mまでのため、分割しています。


NANDでブートさせ、以下のようにNANDを初期化しておきます。



flasherase_all /dev/mtd7
fdisk /dev/mtdblock7
mke2fs -j /dev/mtdblock7
mount /dev/mtdblock7 /mnt


SDカードかwgetを使ってNANDのルートにandroid_m3-rc37a.imgを置きます。


そして以下のようにしてNANDに書き込みます。



mkdir /rfs
mount -o loop /mnt/android_m3-rc37a.img /rfs
(cd /rfs; tar cf - *) | (cd /mnt; tar xf -)
sync
umount /rfs
umount /mnt


あとはrebootして、hermit上で以下のようにします。



setenv root=/dev/mtdblock7 noinitrd init=/init console=ttymxc0
b


DHCPの環境でLANケーブルをさしていればAndroidが起動し、


ネットワークもきちんと認識してくれるはずです。


DHCPが動いていない場合やLANケーブルをささない場合は


/etc/init.rcの中の



exec /sbin/udhcpc


をコメントアウトして置いてください。


ネットワークを認識しなくなりますが、起動するようにはなります。





Androidユーザーランドイメージ(buidroot構築環境入り)



buildrootで構築したユーザーランドにAndroidのSDKから吸い出したユーザーランドを盛り込み済みのイメージファイルを公開いたします。


分割ファイルその1


分割ファイルその2


分割ファイルその3


3つともすべてダウンロードして



cat android_m3-rc37a.img.tar.bz2a* > android_m3-rc37a.img.tar.bz2
tar xjvf android_m3-rc37a.img.tar.bz2


として結合してから解凍してください。


※公開ファイルを設置しているGoogle Page Creatorの制限で1ファイルが10Mまでのため、分割しています。


NANDでブートさせ、以下のようにNANDを初期化しておきます。



flasherase_all /dev/mtd7
fdisk /dev/mtdblock7
mke2fs -j /dev/mtdblock7
mount /dev/mtdblock7 /mnt


SDカードかwgetを使ってNANDのルートにandroid_m3-rc37a.imgを置きます。


そして以下のようにしてNANDに書き込みます。



mkdir /rfs
mount -o loop /mnt/android_m3-rc37a.img /rfs
(cd /rfs; tar cf - *) | (cd /mnt; tar xf -)
sync
umount /rfs
umount /mnt


あとはrebootして、hermit上で以下のようにします。



setenv root=/dev/mtdblock7 noinitrd init=/init console=ttymxc0
b


DHCPの環境でLANケーブルをさしていればAndroidが起動し、


ネットワークもきちんと認識してくれるはずです。


DHCPが動いていない場合やLANケーブルをささない場合は


/etc/init.rcの中の



exec /sbin/udhcpc


をコメントアウトして置いてください。


ネットワークを認識しなくなりますが、起動するようにはなります。





2008年3月10日月曜日



2008/2/20の記事に書いたようにカーネル2.6.23でなくてもAndroidのポーティングに成功しています。





Armadillo-500のリリースカーネルソース(linux-2.6.18-at3)へのパッチを作成しましたので公開いたします。


linux-2.6.18-at3へのパッチ





簡単に言ってしまえば、Android特有のドライバを追加して、


OpenBinderとlow memory killerのコンパイルエラーを取るだけです。





diffファイルでは


/drivers/binder/binder.c


/drivers/misc/lowmemorykiller


をAndroidカーネルのものから書き換えています。


#大したことはやっていませんが、差分が気になる方はdiffを取ってみてください。





この方法だとArmadillo-500付属のカーネルをほとんどいじらないため、SDカードも苦労せずに使用できてオススメです。


なお、このパッチで動くAndroidのSDKはm3-rc37aです。


それ以外のヴァージョンでは確認していませんのでご注意ください。





また、紹介した方法ではファイルシステムにext3を使用していますが、


ext3のままだとNANDのバッドブロックの管理を行っていないため、長期間の使用には向きません。





2.6.18にAndroidをポーティングする



2008/2/20の記事に書いたようにカーネル2.6.23でなくてもAndroidのポーティングに成功しています。





Armadillo-500のリリースカーネルソース(linux-2.6.18-at3)へのパッチを作成しましたので公開いたします。


linux-2.6.18-at3へのパッチ





簡単に言ってしまえば、Android特有のドライバを追加して、


OpenBinderとlow memory killerのコンパイルエラーを取るだけです。





diffファイルでは


/drivers/binder/binder.c


/drivers/misc/lowmemorykiller


をAndroidカーネルのものから書き換えています。


#大したことはやっていませんが、差分が気になる方はdiffを取ってみてください。





この方法だとArmadillo-500付属のカーネルをほとんどいじらないため、SDカードも苦労せずに使用できてオススメです。


なお、このパッチで動くAndroidのSDKはm3-rc37aです。


それ以外のヴァージョンでは確認していませんのでご注意ください。





また、紹介した方法ではファイルシステムにext3を使用していますが、


ext3のままだとNANDのバッドブロックの管理を行っていないため、長期間の使用には向きません。





2008年3月5日水曜日



先ほど前回のエントリにちらつきが直らないとコメントを入れたところですが、昨晩ちらつきが直っていたようです。


原因は表示オフセットを切り替える時にipuを毎回初期化していたからでした。


freescaleのドライバのもともとの不具合のようです。


近々パッチを公開いたします。





Armadillo-500のちらつきが直りました



先ほど前回のエントリにちらつきが直らないとコメントを入れたところですが、昨晩ちらつきが直っていたようです。


原因は表示オフセットを切り替える時にipuを毎回初期化していたからでした。


freescaleのドライバのもともとの不具合のようです。


近々パッチを公開いたします。







Armadillo-500のちらつき対策パッチを公開いたします。


ご活用ください。


ちらつき対策パッチ


drivers/video/mxc/mxcfb.cに適用してください。


これで目が疲れなくてすみます。





Armadillo-500のちらつき対策パッチ



Armadillo-500のちらつき対策パッチを公開いたします。


ご活用ください。


ちらつき対策パッチ


drivers/video/mxc/mxcfb.cに適用してください。


これで目が疲れなくてすみます。





2008年2月29日金曜日



いよいよAndroidを起動させます。

・・・といきたいところですが、前回のユーザーランドの構築部分では

デバイスファイルの準備が不十分です。

Androidのキー入力は/dev/input/event0~を監視していますが、

Armadillo-500標準のnorのユーザーランドには/dev/event0~に入力デバイスが割り当てられています。

以下のように事前にNANDにデバイスノードを作成しておく必要があります。

Androidの起動



いよいよAndroidを起動させます。

・・・といきたいところですが、前回のユーザーランドの構築部分では

デバイスファイルの準備が不十分です。

Androidのキー入力は/dev/input/event0~を監視していますが、

Armadillo-500標準のnorのユーザーランドには/dev/event0~に入力デバイスが割り当てられています。

以下のように事前にNANDにデバイスノードを作成しておく必要があります。

2008年2月25日月曜日



今回はAndroid用のユーザーランドの構築方法を解説します。

ユーザーランドのファイル群はAndroidエミュレーターから吸い出したものを使用します。

他にも方法はありますが、比較的簡単だと思われる方法を紹介していきます。

Android用のユーザーランドの構築



今回はAndroid用のユーザーランドの構築方法を解説します。

ユーザーランドのファイル群はAndroidエミュレーターから吸い出したものを使用します。

他にも方法はありますが、比較的簡単だと思われる方法を紹介していきます。

2008年2月21日木曜日

2008年2月20日水曜日



Androidをポーティングしようと決まったのは12月初旬でした。

すでに各所でハードウェアにポーティングが行われ、Zaurusにも載っているという記事が出てきていて、早くポーティングしなければという思いが強くなっていたため、ボードの選定を急ぎました。


Androidポーティング始動



Androidをポーティングしようと決まったのは12月初旬でした。

すでに各所でハードウェアにポーティングが行われ、Zaurusにも載っているという記事が出てきていて、早くポーティングしなければという思いが強くなっていたため、ボードの選定を急ぎました。


Related Posts Plugin for WordPress, Blogger...