2009年6月26日金曜日



f:id:bs-android:20090322095729p:image


日本Androidの会関西支部で、大阪で3回目のAndroidセミナーを行います。



日時


2009/7/4 17:00~19:30


場所


トーコーシティホテル梅田 葵(東)の部屋 (大阪府大阪市北区南森町1-3-19)



大きな地図で見る


定員


54名


参加費


無料


講師


・有限会社シーリス


 有山圭二


・日本Androidの会


 杉本礼彦


 宮川彬央


・株式会社ブリリアントサービス


 藤井洋祐


・エモーションプラス


 原秀樹


講義内容



日本Androidの会 杉本礼彦

「Androidは本当に流行るのか?ビジネス的観点、技術的観点で分析」



ハンズオンではありません。






日本Androidの会 宮川彬央

「AppWidgetでWidgetを作ってみよう!」



ハンズオンです。


パソコン、SDK 1.5が必要です。






株式会社ブリリアントサービス

「AndroidとSQliteと、ときどきオトン」



申し込みフォーム


http://atnd.org/events/847



すでに満席となっていますが、補欠登録も可能ですので、関西方面の方は是非ご登録ください。





日本Androidの会 関西支部 第3回Androidセミナー in 大阪



f:id:bs-android:20090322095729p:image


日本Androidの会関西支部で、大阪で3回目のAndroidセミナーを行います。



日時


2009/7/4 17:00~19:30


場所


トーコーシティホテル梅田 葵(東)の部屋 (大阪府大阪市北区南森町1-3-19)



大きな地図で見る


定員


54名


参加費


無料


講師


・有限会社シーリス


 有山圭二


・日本Androidの会


 杉本礼彦


 宮川彬央


・株式会社ブリリアントサービス


 藤井洋祐


・エモーションプラス


 原秀樹


講義内容



日本Androidの会 杉本礼彦

「Androidは本当に流行るのか?ビジネス的観点、技術的観点で分析」



ハンズオンではありません。






日本Androidの会 宮川彬央

「AppWidgetでWidgetを作ってみよう!」



ハンズオンです。


パソコン、SDK 1.5が必要です。






株式会社ブリリアントサービス

「AndroidとSQliteと、ときどきオトン」



申し込みフォーム


http://atnd.org/events/847



すでに満席となっていますが、補欠登録も可能ですので、関西方面の方は是非ご登録ください。





2009年6月23日火曜日



http://www.ospn.jp/osc2009-kansai/


オープンソースの祭典、OSC 2009 Kansaiに日本Androidの会として参加します。


弊社からは7/11に手作りAndroidケータイを作ってみようというタイトルのセミナーを行います。






開催日時


2009/7/10(金) 10:00~18:00


2009/7/11(土) 10:00~17:00





会場


京都コンピュータ学院 京都駅前校


http://www.kcg.ac.jp/campus/campus/map/image/eki_map.gif


※会場に駐車場はありません。





GoogleMap



大きな地図で見る





参加費


無料





主催


オープンソースカンファレンス実行委員会





共催


京都コンピュータ学院


京都情報大学院大学





企画運営


株式会社びぎねっと



お近くの方は是非ご参加ください!





OSC 2009 Kansaiに参加します



http://www.ospn.jp/osc2009-kansai/


オープンソースの祭典、OSC 2009 Kansaiに日本Androidの会として参加します。


弊社からは7/11に手作りAndroidケータイを作ってみようというタイトルのセミナーを行います。






開催日時


2009/7/10(金) 10:00~18:00


2009/7/11(土) 10:00~17:00





会場


京都コンピュータ学院 京都駅前校


http://www.kcg.ac.jp/campus/campus/map/image/eki_map.gif


※会場に駐車場はありません。





GoogleMap



大きな地図で見る





参加費


無料





主催


オープンソースカンファレンス実行委員会





共催


京都コンピュータ学院


京都情報大学院大学





企画運営


株式会社びぎねっと



お近くの方は是非ご参加ください!





2009年6月18日木曜日



http://www.android-group.jp/index.php?%A5%A4%A5%D9%A5%F3%A5%C8%2FAndroid%20Bazaar%20and%20Conference%202009%20Spring


2009/6/26(金)に日本Androidの会主催のAndroid Bazaar and Conference 2009 Spring、略してABC 2009 Springが開催されます。





日時


2009年6月26日(金) 9:30~19:30 (開場9:00)





会場


国立オリンピック記念青少年総合センター



大きな地図で見る





小田急線参宮橋駅下車徒歩7分/地下鉄千代田線代々木公園駅下車徒歩10分





参加費用


無料!





参加登録


申し込みフォーム





弊社ではB-3の枠でセッションを持っています。


すでに招待講演の枠はかなり応募があるようです。


お申し込みはお早めに!





Android Bazaar and Conference 2009 Spring開催



http://www.android-group.jp/index.php?%A5%A4%A5%D9%A5%F3%A5%C8%2FAndroid%20Bazaar%20and%20Conference%202009%20Spring


2009/6/26(金)に日本Androidの会主催のAndroid Bazaar and Conference 2009 Spring、略してABC 2009 Springが開催されます。





日時


2009年6月26日(金) 9:30~19:30 (開場9:00)





会場


国立オリンピック記念青少年総合センター



大きな地図で見る





小田急線参宮橋駅下車徒歩7分/地下鉄千代田線代々木公園駅下車徒歩10分





参加費用


無料!





参加登録


申し込みフォーム





弊社ではB-3の枠でセッションを持っています。


すでに招待講演の枠はかなり応募があるようです。


お申し込みはお早めに!





2009年6月17日水曜日



HTC Magicを使って、Android Marketから「Google Checkout」を利用してアプリを購入してみました。


その手順をスクリーンショットで掲載します。


※有料アプリを配信している事業者のSimカードを挿さないと有料アプリは購入出来ません。(リストにも出てきません。)


 今回はT-MobileのSimを挿した上でアプリの購入を行っています。



1.「Android Market」を起動します。


f:id:bs-android:20090617112502p:image





2.「FREE」でなはく、値段が付いているアプリを選択します。


f:id:bs-android:20090617113805p:image





3.「Buy」ボタンが表示されるので押してみます。


f:id:bs-android:20090617114036p:image





4.アプリの金額が表示され、登録しているクレジットカード情報が表示されます。


f:id:bs-android:20090617114532p:image





5.一先ず、クレジットカード選択画面を表示してみます。


f:id:bs-android:20090617114559p:image





6.クレジットカード情報登録画面。


今回はすでにPC側で登録済みの為、新規で登録はしませんが、こんな感じで登録が可能になっています。





f:id:bs-android:20090617114821p:image





7.一旦戻り、「Buy now: $0.99」を押して決済します。


f:id:bs-android:20090617114935p:image





8.すると、アプリのダウンロードが始まります。


f:id:bs-android:20090617115428p:image





9.7の決済実行から約2秒後、「Google Checkout」からGmailを受信します。


※通信状況にもよりますので一概に2秒とは言えません。





f:id:bs-android:20090617115655p:image





10.アプリのダウンロード後、インストールが始まります。


f:id:bs-android:20090617115902p:image





11.インストール完了。


f:id:bs-android:20090617120154p:image





12.アプリ起動の前に「Google Checkout」からのGmailを確認します。


f:id:bs-android:20090617120318p:image





配信状況、数量、商品、価格、支払いクレジットカードの情報が記載されています。





f:id:bs-android:20090617120400p:image





13.またまた戻ってアプリを起動します。


f:id:bs-android:20090617120635p:image





14.無事にアプリが起動しました。


f:id:bs-android:20090617120714p:image






感想は、早い!!!!そして簡単!!!!その二言です。


早くて簡単なのでドンドン買っちゃいそうです。。


なのでかわかりませんが、クーリングオフ制度が設けられているみたいですね。


24時間以内に申請すれば返金に応じてくれるようです。


しかし、買いすぎには注意が必要です(^^;








以上。


By. 勉どろいどチーム 藤田竜史





Android Marketで「Google Checkout」



HTC Magicを使って、Android Marketから「Google Checkout」を利用してアプリを購入してみました。


その手順をスクリーンショットで掲載します。


※有料アプリを配信している事業者のSimカードを挿さないと有料アプリは購入出来ません。(リストにも出てきません。)


 今回はT-MobileのSimを挿した上でアプリの購入を行っています。



1.「Android Market」を起動します。


f:id:bs-android:20090617112502p:image





2.「FREE」でなはく、値段が付いているアプリを選択します。


f:id:bs-android:20090617113805p:image





3.「Buy」ボタンが表示されるので押してみます。


f:id:bs-android:20090617114036p:image





4.アプリの金額が表示され、登録しているクレジットカード情報が表示されます。


f:id:bs-android:20090617114532p:image





5.一先ず、クレジットカード選択画面を表示してみます。


f:id:bs-android:20090617114559p:image





6.クレジットカード情報登録画面。


今回はすでにPC側で登録済みの為、新規で登録はしませんが、こんな感じで登録が可能になっています。





f:id:bs-android:20090617114821p:image





7.一旦戻り、「Buy now: $0.99」を押して決済します。


f:id:bs-android:20090617114935p:image





8.すると、アプリのダウンロードが始まります。


f:id:bs-android:20090617115428p:image





9.7の決済実行から約2秒後、「Google Checkout」からGmailを受信します。


※通信状況にもよりますので一概に2秒とは言えません。





f:id:bs-android:20090617115655p:image





10.アプリのダウンロード後、インストールが始まります。


f:id:bs-android:20090617115902p:image





11.インストール完了。


f:id:bs-android:20090617120154p:image





12.アプリ起動の前に「Google Checkout」からのGmailを確認します。


f:id:bs-android:20090617120318p:image





配信状況、数量、商品、価格、支払いクレジットカードの情報が記載されています。





f:id:bs-android:20090617120400p:image





13.またまた戻ってアプリを起動します。


f:id:bs-android:20090617120635p:image





14.無事にアプリが起動しました。


f:id:bs-android:20090617120714p:image






感想は、早い!!!!そして簡単!!!!その二言です。


早くて簡単なのでドンドン買っちゃいそうです。。


なのでかわかりませんが、クーリングオフ制度が設けられているみたいですね。


24時間以内に申請すれば返金に応じてくれるようです。


しかし、買いすぎには注意が必要です(^^;








以上。


By. 勉どろいどチーム 藤田竜史







http://www.mobile-daigaku.jp/


2009/6/18(木)に弊社近藤がモバイル夜間大学にて、Androidがもたらす未来について講演してきます。


http://www.mobile-daigaku.jp/details_seminar.php?id=00055


よろしければご参加ください。







  • 日時


6/18(木) 20:00~21:30







  • 場所



大きな地図で見る


渋谷区千駄ヶ谷3-52-8 コージュビル4F


※原宿竹下口から徒歩7分


http://context.vc/corp/map.shtml





モバイル夜間大学でAndroidの講演します



http://www.mobile-daigaku.jp/


2009/6/18(木)に弊社近藤がモバイル夜間大学にて、Androidがもたらす未来について講演してきます。


http://www.mobile-daigaku.jp/details_seminar.php?id=00055


よろしければご参加ください。







  • 日時


6/18(木) 20:00~21:30







  • 場所



大きな地図で見る


渋谷区千駄ヶ谷3-52-8 コージュビル4F


※原宿竹下口から徒歩7分


http://context.vc/corp/map.shtml







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



0.始めに


前回、Beaglebord Rev.B5をメインボードに使用しての、環境設定を公開しました。


Rev.C2に関しましても、環境設定方法を確認できましたので、ここに公開いたします。


参加したメンバーは以下の通りです。


<ソフト担当>


株式会社ブリリアントサービス


 技術部 梶谷 亮太、八木 佑馬、河原 豊、藤井 洋祐


某IT関連企業勤務


 S氏


★部品構成


メインボードは、Beagleboard Rev.C2を使用しています。


その他の構成に関しましては、下記URL記載の部品構成を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649


★使用環境


 使用OS:Ubuntu8.10


1.準備


1.1 Android開発環境の設定

・Linux環境


 下記リンクを参考にしてください。


 http://source.android.com/download


 http://d.hatena.ne.jp/bs-android/20090324/1237864332


 ※uboot-mkimageのインストールもしておきます。


 ※ubuntu8.10の場合、synapticマネージャーからインストールできます。


 ※ubuntu8.04の場合、apt-get install uboot-mkimageでインストールしました。





1.2 使用ツール等の設定

・GNU C & C++ Compilersのインストール


 使用するリリースはarm-2007q3-51です。下記リンクからインストールできます。


 http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057


 ※インストールは、TARの解凍形式、インストーラー使用など、ユーザーの好みにしたがって各種用意されています。


  TARを解凍される場合は、インストール場所のパス設定を各自で行ってください。


  (~/.bashrcファイルに$PATHを記述します)





2.Beaglebord用Androidソースの取得


2.1 repoの初期化

まず、ベースとなるAndroidソースDownloadのための下準備を行ないます。


ターミナルウィンドウにコマンドを入力していきます。



$ mkdir mydroid ★名前は任意です。
$ cd mydoroid
~mydroid$ repo init -u git://android.git.kernel.org/platform/manifest.git


上記操作で最新のAndroidソースをmydroidにDownloadする設定を行います。





2.2 ソースの取得準備

Beagleboard Rev.B5環境作成時にも述べた通り、Beagleboard Rev.C2上においてもAndroidを動かす場合、Androidのレポジトリから不要なサブプロジェクトの削除と標準プロジェクト群に含まれないプロジェクトをダウンロードする必要があります。


Beagleboard Rev.C2用に設定ファイルを作成しましたので、これを使用します。


Rev.B5で使用した設定ファイルとの大きな違いは、omap用カーネルの取得先が違うところです。


まずは、omapカーネル以外のソースを取得するために、mydroid/.repo/ に


local_manifest.xml(※ファイル名がlocal_manifest_rev_c2.xmlになっているのでlocal_manifest.xmlに変更してください) を作成します。


local_manifest.xmlの内容は次の通りにします。



<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="external/alsa-lib" name="platform/external/alsa-lib"/>
<project path="external/alsa-utils" name="platform/external/alsa-utils"/>
<project path="hardware/alsa_sound" name="platform/hardware/alsa_sound"/>
</manifest>





2.3 ソースの取得

2.1、2.2の準備が出来れば、Download準備完了です。


ターミナルウィンドウでコマンドを入力していきます。



~mydroid$ repo sync


上記、コマンド実行後、ソース取得が開始されます。


稀に失敗する場合がありますが、その場合、再度上記コマンドを実行してください。





2.4 OMAPカーネルソース取得

Beagleboard Rev.C2で使用するomapカーネルは、”git clone”コマンドを使用して取得します。



$ cd mydroid
~mydroid$ git clone git://labs.embinux.org/repo/kernel.git


更にソースをandroid-2.6.29ブランチに切り替えます。



~mydroid$ cd kernel
~mydroid/kernel$ git checkout -b kernel_android_2.6.29 origin/android-2.6.29


ブランチが切り替わったかを念のため確認します。



~mydroid/kernel$ git branch
android-2.6.27
* kernel_android_2.6.29


kernel_android_2.6.29に「*」がついてればOK。


※git branchは、branchのListを表示するコマンドです。


*がついてるのは、現在作業中のbranchを表しています。





3.パッチの準備


3.1 Linuxカーネル環境構築

Beagleboard Rev.C2においても、Rev.B5同様、ALSAを使用してサウンドを鳴動させることに成功しています。





3.2.1 サウンドデバイスのBuild定義追加

下記URLの3.2.1章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





3.2.2 カーネルコンフィギュレーションの作成

弊社で作成したAndroid、ADB、ALSA、FrameBuffer機能有効化を追加したBeagleboard Rev.C2用カーネルコンフィギュレーションファイルです。


omap3_beagle_android_defconfig(※ファイル名がomap3_beagle_android_defconfig_rev_c2になっているので、omap3_beagle_android_defconfigに変更してください)をmydroid/kernel/arch/arm/configs に保存しておきます。





3.3 Android環境構築

3.3.1 ALSAサウンドドライバ

下記URLの3.3.1章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





3.3.2 Batteryパッチ

下記URLの3.3.2章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





3.3.3 USB EHCIファイルパッチ

ビルドエラー回避のため、usb-ehci.cにパッチを当てます。





※6/20のKernel環境では、ビルドエラーが修正されています。6/20以降に環境を構築される場合は、このパッチは不要となります。





diffファイル usb-ehci.patch


上記Linkからパッチファイルを取得し、ターミナルウィンドでコマンドを入力していきます。



~mydroid$ cd kernel/arch/arm/mach-omap2
~mydroid/kernel/arch/arm/mach-omap2$ patch < usb-ehci.patch


パッチ後のソースファイル


mydroid/kernel/arch/arm/mach-omap2/usb-ehci.c





4.Build


下記URLの4章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





5.Boot用SDカードの作成

下記URLの5章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





6.ADB(デバッガ)

下記URLの6章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649



以上で完了です。





Beagle Board Rev.C2でAndroidを動かす



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



0.始めに


前回、Beaglebord Rev.B5をメインボードに使用しての、環境設定を公開しました。


Rev.C2に関しましても、環境設定方法を確認できましたので、ここに公開いたします。


参加したメンバーは以下の通りです。


<ソフト担当>


株式会社ブリリアントサービス


 技術部 梶谷 亮太、八木 佑馬、河原 豊、藤井 洋祐


某IT関連企業勤務


 S氏


★部品構成


メインボードは、Beagleboard Rev.C2を使用しています。


その他の構成に関しましては、下記URL記載の部品構成を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649


★使用環境


 使用OS:Ubuntu8.10


1.準備


1.1 Android開発環境の設定

・Linux環境


 下記リンクを参考にしてください。


 http://source.android.com/download


 http://d.hatena.ne.jp/bs-android/20090324/1237864332


 ※uboot-mkimageのインストールもしておきます。


 ※ubuntu8.10の場合、synapticマネージャーからインストールできます。


 ※ubuntu8.04の場合、apt-get install uboot-mkimageでインストールしました。





1.2 使用ツール等の設定

・GNU C & C++ Compilersのインストール


 使用するリリースはarm-2007q3-51です。下記リンクからインストールできます。


 http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057


 ※インストールは、TARの解凍形式、インストーラー使用など、ユーザーの好みにしたがって各種用意されています。


  TARを解凍される場合は、インストール場所のパス設定を各自で行ってください。


  (~/.bashrcファイルに$PATHを記述します)





2.Beaglebord用Androidソースの取得


2.1 repoの初期化

まず、ベースとなるAndroidソースDownloadのための下準備を行ないます。


ターミナルウィンドウにコマンドを入力していきます。



$ mkdir mydroid ★名前は任意です。
$ cd mydoroid
~mydroid$ repo init -u git://android.git.kernel.org/platform/manifest.git


上記操作で最新のAndroidソースをmydroidにDownloadする設定を行います。





2.2 ソースの取得準備

Beagleboard Rev.B5環境作成時にも述べた通り、Beagleboard Rev.C2上においてもAndroidを動かす場合、Androidのレポジトリから不要なサブプロジェクトの削除と標準プロジェクト群に含まれないプロジェクトをダウンロードする必要があります。


Beagleboard Rev.C2用に設定ファイルを作成しましたので、これを使用します。


Rev.B5で使用した設定ファイルとの大きな違いは、omap用カーネルの取得先が違うところです。


まずは、omapカーネル以外のソースを取得するために、mydroid/.repo/ に


local_manifest.xml(※ファイル名がlocal_manifest_rev_c2.xmlになっているのでlocal_manifest.xmlに変更してください) を作成します。


local_manifest.xmlの内容は次の通りにします。



<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="external/alsa-lib" name="platform/external/alsa-lib"/>
<project path="external/alsa-utils" name="platform/external/alsa-utils"/>
<project path="hardware/alsa_sound" name="platform/hardware/alsa_sound"/>
</manifest>





2.3 ソースの取得

2.1、2.2の準備が出来れば、Download準備完了です。


ターミナルウィンドウでコマンドを入力していきます。



~mydroid$ repo sync


上記、コマンド実行後、ソース取得が開始されます。


稀に失敗する場合がありますが、その場合、再度上記コマンドを実行してください。





2.4 OMAPカーネルソース取得

Beagleboard Rev.C2で使用するomapカーネルは、”git clone”コマンドを使用して取得します。



$ cd mydroid
~mydroid$ git clone git://labs.embinux.org/repo/kernel.git


更にソースをandroid-2.6.29ブランチに切り替えます。



~mydroid$ cd kernel
~mydroid/kernel$ git checkout -b kernel_android_2.6.29 origin/android-2.6.29


ブランチが切り替わったかを念のため確認します。



~mydroid/kernel$ git branch
android-2.6.27
* kernel_android_2.6.29


kernel_android_2.6.29に「*」がついてればOK。


※git branchは、branchのListを表示するコマンドです。


*がついてるのは、現在作業中のbranchを表しています。





3.パッチの準備


3.1 Linuxカーネル環境構築

Beagleboard Rev.C2においても、Rev.B5同様、ALSAを使用してサウンドを鳴動させることに成功しています。





3.2.1 サウンドデバイスのBuild定義追加

下記URLの3.2.1章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





3.2.2 カーネルコンフィギュレーションの作成

弊社で作成したAndroid、ADB、ALSA、FrameBuffer機能有効化を追加したBeagleboard Rev.C2用カーネルコンフィギュレーションファイルです。


omap3_beagle_android_defconfig(※ファイル名がomap3_beagle_android_defconfig_rev_c2になっているので、omap3_beagle_android_defconfigに変更してください)をmydroid/kernel/arch/arm/configs に保存しておきます。





3.3 Android環境構築

3.3.1 ALSAサウンドドライバ

下記URLの3.3.1章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





3.3.2 Batteryパッチ

下記URLの3.3.2章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





3.3.3 USB EHCIファイルパッチ

ビルドエラー回避のため、usb-ehci.cにパッチを当てます。





※6/20のKernel環境では、ビルドエラーが修正されています。6/20以降に環境を構築される場合は、このパッチは不要となります。





diffファイル usb-ehci.patch


上記Linkからパッチファイルを取得し、ターミナルウィンドでコマンドを入力していきます。



~mydroid$ cd kernel/arch/arm/mach-omap2
~mydroid/kernel/arch/arm/mach-omap2$ patch < usb-ehci.patch


パッチ後のソースファイル


mydroid/kernel/arch/arm/mach-omap2/usb-ehci.c





4.Build


下記URLの4章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





5.Boot用SDカードの作成

下記URLの5章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649





6.ADB(デバッガ)

下記URLの6章を参照してください。


http://d.hatena.ne.jp/bs-android/20090603/1244043649



以上で完了です。





2009年6月13日土曜日



海外からのアクセスも多い為、弊社のAndroid情報の英語ブログを開設しました。


翻訳がつたないところもありますが、頑張ってやっていこうと思います。


English blog is here.



Android information from Japan.

http://bs-android.seesaa.net/






Android情報の英語ブログを開設しました



海外からのアクセスも多い為、弊社のAndroid情報の英語ブログを開設しました。


翻訳がつたないところもありますが、頑張ってやっていこうと思います。


English blog is here.



Android information from Japan.

http://bs-android.seesaa.net/






2009年6月3日水曜日


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

弊社では現在BeagleBoardをベースにしたAndroid端末を作成中です。

形は不恰好ですが、Androidで1台端末をきっちり作る技術の習得を目指しています。

Android 1.5ベースでBeagleBoardでサウンドの鳴動まで確認できている資料を公開いたします。


Beagleboardを使用しての端末作成

株式会社ブリリアントサービス
技術部 藤井 洋祐


0.始めに

現在株式会社ブリリアントサービスは自社端末プロジェクトでAndroid搭載端末を作成中です。
 その際に得たノウハウをここに公開いたします。
 当プロジェクト参加企業および参加者は以下の通りです。

<ハード担当>

Ex.株式会社 http://www.ex-inc.com/

<ソフト担当>

株式会社ブリリアントサービス
  代表  杉本 礼彦
  技術部 梶谷 亮太、八木 佑馬、河原 豊、藤井 洋祐
 某IT関連企業勤務
  S氏

★部品構成

メインボードは、Beagleboard Rev.CRev.B5を使用しています。
その他の構成に関しましては以下の通りです。

分類機能型番
モジュール通信モジュールRX420IN
モジュールGPSFGPMMOUDG
モジュール液晶パネルPD035VX3
モジュール液晶パネルタイミングコントローラーLT035V2PL0-FDR
モジュールタッチコントローラーETP-4000UCG-02
モジュールUSB カメラCMS-V23SETSV
モジュールACアダプタ DC12V 1ANP12-1S1210
モジュール3軸磁気センサMicroMag3
モジュール3軸加速度センサMMA7455L
ICDVIレシーバーTFP401APZP
ICRS232C ドライバ/レシーバMAX3233ECWP
ICI2C接続 汎用IOMCP23017-E/SO
ICUSB HUBTUSB2046BVF
コネクタHDMIコネクタMD60-19P
コネクタピンソケット(メス)40P(2×20) (EXPANSION) 
コネクタピンソケット(メス)10P(2×5) (RS232C) 
コネクタピンソケット(メス)14P(1×14)  (磁気・加速度用) 
コネクタ基板対基板コネクタ (無線LAN用)DF12 (3.0)-30DP-0.5V(86)
コネクタ6pinコネクタ (Audio・内部電源用)S6B-XH-A
コネクタ2pinコネクタ (電池BOX用)S2B-XH-A
コネクタW-SIM用コネクタSCZA1A0100
コネクタFPC31接続コネクタIL-FRR-31S-HF-NI
コネクタΦ3.5mm 標準ステレオジャックMJ-352W-C
コネクタΦ2.1mm標準DCジャックMJ-179P
コネクタUSBレセプタクル (立型:I/F-カメラ・GPS接続用)47500-0000
コネクタUSBコネクタ ミニAB (Beagle-I/F接続)56579-0576
コネクタ4pinコネクタ (電池BOX用)S4B-XH-A
 単4NiH電池 (1100mAh)110AAAHC
 電池ボックスSBH-441AS
 スピーカーCPE403NT18
 マイク (ECM)WM-61A
 Φ3.5ステレオプラグ (アングルタイプ)WTN03F1100ST
 6pinハウジングXHP-6
 2pinハウジングXHP-2
 4pinハウジングXHP-4
 pinヘッダ (Beagle-I/F間接続用) 
 DCプラグ (Beagle電源供給用)MP-136L

★外観イメージ

f:id:bs-android:20090603214849p:image

★使用環境

ubuntu8.10


1.準備

1.1 Android開発環境の設定

・Linux環境
下記リンクを参考にしてください。
http://source.android.com/download
http://d.hatena.ne.jp/bs-android/20090324/1237864332
※uboot-mkimageのインストールもしておきます。
※ubuntu8.10の場合、synapticマネージャーからインストールできます。
※ubuntu8.04の場合、apt-get install でインストールしました。

1.2 使用ツール等の設定

・GNU C & C++ Compilersのインストール
使用するリリースはarm-2007q3-51です。下記リンクからインストールできます。
http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057
※インストールは、TARの解凍形式、インストーラー使用など、ユーザーの好みにしたがって各種用意されています。
TARを解凍される場合は、インストール場所のパス設定を各自で行ってください。
(~/.bashrcファイルに$PATHを記述します)


2.Beaglebord用Androidソースの取得

2.1 repoの初期化

まず、ベースとなるAndroidソースDownloadのための下準備を行ないます。
ターミナルウィンドウにコマンドを入力していきます。
$ mkdir mydroid ★名前は任意です。
$ cd mydoroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
上記操作で、最新のAndroidソースをmydroidにDownloadする設定を行います。

2.2 Omap用カーネルの取得準備

Beagleboard上でAndroidを動かす場合、Androidのレポジトリから不要なサブプロジェクトの削除と標準プロジェクト群に含まれないプロジェクトをダウンロードする必要があります。
そのための設定ファイルを使用します。
mydroid/.repo/ に local_manifest.xml を作成します。
local_manifest.xmlの内容は次の通りにします。

local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remove-project name="kernel/common"/>
  <project path="kernel" name="kernel/omap" revision="refs/heads/android-omap-2.6.29"/>
  <project path="external/alsa-lib" name="platform/external/alsa-lib"/>
  <project path="external/alsa-utils" name="platform/external/alsa-utils"/>
  <project path="hardware/alsa_sound" name="platform/hardware/alsa_sound"/>
</manifest>

2.3 ソースの取得

2.1、2.2の準備が出来れば、Download準備完了です。
ターミナルウィンドウに以下のコマンドを入力します。
$ repo sync
上記、コマンド実行後、ソース取得が開始されます。
稀に失敗する場合がありますが、その場合、再度上記コマンドを実行してください。


3. パッチの準備


3.1 Linuxカーネル環境構築

BeagleBoardはALSA audio driverを使用しています。
ALSA on beagleboardとAndroidとの結合に関しては、色々問題が報告されていますが、ALSAを使用してサウンドを鳴動させることに成功しました。

3.2.1 サウンドデバイスのBuild定義追加

Androidプロジェクトにあるomap kernelは、Beagleboardのサウンドデバイスがビルドできない様になっています。
その為、古いカーネルから差分を抽出し、パッチを当てました。
SND_OMAP_SOC_OMAP3_BEAGLEを設定可能なように以下の記述を追加しました。
※依存関係に注意してください。弊社では、”config SND_OMAP_SOC_N810“の次に追加しました。

mydroid/kernel/sound/soc/omap/Kconfig
追加部分
 config SND_OMAP_SOC_OMAP3_BEAGLE
 tristate "SoC Audio support for OMAP3 Beagle"
 depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_BEAGLE
 select SND_OMAP_SOC_MCBSP
 select SND_SOC_TWL4030
 help
   Say Y if you want to add support for SoC audio on the Beagleboard.

mydroid/kernel/sound/soc/omap/Makefile

beagleboard関連のコンパイル設定を追加。
# OMAP Machine Support
snd-soc-n810-objs := n810.o
snd-soc-omap3beagle-objs := omap3beagle.o
snd-soc-osk5912-objs := osk5912.o
snd-soc-overo-objs := overo.o
snd-soc-omap2evm-objs := omap2evm.o
snd-soc-sdp3430-objs := sdp3430.o
snd-soc-omap3pandora-objs := omap3pandora.o
obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
obj-$(CONFIG_MACH_OMAP2EVM) += snd-soc-omap2evm.o
obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o

3.2.2 カーネルコンフィギュレーションの作成

弊社で作成したAndroid、ADB、ALSA、FrameBuffer機能有効化を追加したカーネルコンフィギュレーションファイルです。
omap3_beagle_android_defconfigをmydroid/kernel/arch/arm/configs に保存しておきます。

3.3 Android環境構築


3.3.1 ALSAサウンドドライバ

2.2章のlocal_manifest.xmlの設定により、ALSAサウンドライブラリなどの関連ファイルが取得できています。
これらのライブラリをAndroidで使用可能にする為にコンフィグを追加する必要があります。

mydroid/build/target/board/generic/BoardConfig.mk
# config.mk
#
# Product-specific compile-time definitions.
#
# The generic product target doesn't have any hardware-specific pieces.
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true
TARGET_NO_RADIOIMAGE := true
HAVE_HTC_AUDIO_DRIVER := true
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true
#BOARD_USES_GENERIC_AUDIO := true ※コメントアウト
しかし、このままでは二重定義によりBuildが失敗します。これの原因も取り除きます。

mydroid/external/alsa-utils/android/aconfig.h
#define DATADIR "/system/usr/share/alsa"

#define rindex strrchr
#define open64 open

/*typedef int off64_t;*/ //この定義をコメントアウト

#undef __swab16
#define __swab16(x)  __arch__swab16((x))

#undef __swab32
#define __swab32(x)  __arch__swab32((x))

3.3.2 Batteryパッチ

当初、BeagleboardでAndroidロゴが表示されるもrebootを繰り返すという現象が発生していました。
調査の結果、boot時に、バッテリーパワーがゼロで返されるということが判明しました。
そこで、/sys/class/power_supply以下の情報を無視して、バッテリーがFULLである様にAndroidに通知し、Low batteryによるpower downを防ぐようにしました。

※現在Beagleboard用のパワーサプライのデバイスドライバが現在存在していない為、暫定措置として常に電池が満タンの状態を返すようにしていますが、今後改善していく予定です。

mydroid/frameworks/base/services/jni/com_android_server_BatteryService.cpp

BatteryServiceがAC,USB,電池のいずれかであっても、常にtrueを返却するように変更。
static void setBooleanField(JNIEnv* env, jobject obj, const char* path, jfieldID fieldID)
{
    const int SIZE = 16;
    char buf[SIZE];
    
    jboolean value = true; //falseをtrueに変更
/* コメントアウト
    if (readFromFile(path, buf, SIZE) > 0) {
        if (buf[0] == '1') {
            value = true;
        }
    }
*/
    env->SetBooleanField(obj, fieldID, value);
}
Batteryの容量、電圧、温度を100%で返却するように変更。
static void setIntField(JNIEnv* env, jobject obj, const char* path, jfieldID fieldID)
{
    const int SIZE = 128;
    char buf[SIZE];
    
    jint value = 100; //0を100に変更
/* コメントアウト
    if (readFromFile(path, buf, SIZE) > 0) {
        value = atoi(buf);
    }
*/
    env->SetIntField(obj, fieldID, value);
}
Battery充電状態をFullで、劣化状態を常に良に設定するように変更。
static void android_server_BatteryService_update(JNIEnv* env, jobject obj)
{
    setBooleanField(env, obj, AC_ONLINE_PATH, gFieldIds.mAcOnline);
    setBooleanField(env, obj, USB_ONLINE_PATH, gFieldIds.mUsbOnline);
    setBooleanField(env, obj, BATTERY_PRESENT_PATH, gFieldIds.mBatteryPresent);
    
    setIntField(env, obj, BATTERY_CAPACITY_PATH, gFieldIds.mBatteryLevel);
    setIntField(env, obj, BATTERY_VOLTAGE_PATH, gFieldIds.mBatteryVoltage);
    setIntField(env, obj, BATTERY_TEMPERATURE_PATH, gFieldIds.mBatteryTemperature);

    env->SetIntField(obj, gFieldIds.mBatteryStatus, gConstants.statusFull); //追加
    env->SetIntField(obj, gFieldIds.mBatteryHealth, gConstants.healthGood); //追加
    env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF("1")); //追加
/* コメントアウト
    const int SIZE = 128;
    char buf[SIZE];
    
    if (readFromFile(BATTERY_STATUS_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf));
    
    if (readFromFile(BATTERY_HEALTH_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf));

    if (readFromFile(BATTERY_TECHNOLOGY_PATH, buf, SIZE) > 0)
        env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf));
*/
}


4. Build


4.1 カーネル環境Build

以下のコマンドを実行してカーネルをビルドします。
 
 $ cd ~/mydroid/kernel
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_android_defconfig
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules <-ADBを使用しない場合は不要

4.2 Android環境Build

以下のコマンドを実行してAndroid環境をビルドします。
$ cd ~/mydroid
$ make


5. Boot用SDカードの作成


5.1 作成方法

以下の情報を参考にさせていただきました。

http://wiki.davincidsp.com/index.php?title=MMC_Boot_Format

http://d.hatena.ne.jp/naka-3/20090128/1233125851

5.2 init.rcの変更

linux、androidの初期化設定ファイルです。

Beagleboardを使用するためファイルシステムが変更されます。そのため初期化パラメータの変更を行ないました。

また、ADB(デバッガ)モジュール*1のロード設定、ALSAドライバの権限変更を追加しました。

※SDカードext3パーティション上のrootにおいてください。

※ADBモジュールのロード設定は以下になります。不要の場合はコメントアウトしてください。

init.rc
### Load some modules using ADB kernel module
    insmod /system/lib/modules/switch_class.ko
    insmod /system/lib/modules/switch_gpio.ko
    insmod /system/lib/modules/g_android.ko


6. ADB(デバッガ)

ADBにてデバッグを行なうためにパッチ、変更をいくつか実施しています。

こちらも合わせて記載させていただきます。ADBが不要であれば、読み飛ばしてください。

6.1 カーネルモジュールのインストール

ADB(デバッガ)を使用する場合、makeによって
mydroid/kernel 以下に生成された*.koファイルを、
SDカードのext3パーティション上に作成した
/system/lib/modules 以下にコピーします。

※カレントディレクトリをmydroid/kernel とし以下のコマンドを入力すれば見つかります。
$ find -name "*.ko" -type f

6.2 init.rcの変更

5.2章にあるADB(デバッガ)モジュールのロード設定を有効にし、SDカードext3パーティションのrootディレクトリにコピーします。

6.3 PC側のUSB設定

HOST PC側でBeagleboardのADBを認識させる必要があります。

そのUSB設定ファイルです。
50-android.rules
SUBSYSTEM=="usb",SYSFS{idVendor}=="18d1",MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="18d1",MODE="0666"
このファイルをPC側の /etc/udev/rules.d にコピーします。その後、以下のコマンドにてchmodしてください。
$ sudo chmod a+rx /etc/udev/rules.d/50-android.rules


7. おまけ

VGA表示させたときの写真です。(さりげなく基板のロゴをアピール)

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

ケースに入った写真
f:id:bs-android:20090603170500j:image
f:id:bs-android:20090603170600j:image
LCD表示
f:id:bs-android:20090604073043j:image
f:id:bs-android:20090604073116j:image


作者プロフィール

藤井 洋祐(ふじい ようすけ)

京都市生まれ。

将来の夢 :世界平和

好きな言葉:学問に王道なし。日々が大切である(小学校の恩師の言葉)


略歴


ジ○リ○ナ東京でお立ち台の全盛時、東京に憧れるも、大阪のソフトハウス入社。
メーカー系ソフトウェア子会社で金融系端末(現金自動支払機)の制御プログラム開発に従事。
そこで、お金を扱う仕事柄からお金の大切さを学ぶ。
上場派遣会社に転職後、上司の「1年間、我慢して」の一言から、携帯メーカーにて作業開始。
そこで杉本 礼彦氏(現、ブリリアントサービス代表)と運命的な出会いを果たすことになる。
彼の生き様に心酔し、良くも悪くも現在に至る。


今回Ex.さんにハードを作成していただいていますが、弊社側がビーグルボード+W-SIMにこだわった為に、大きく不恰好な端末になってしまっています。

2号機は今回のノウハウを活かして、スマートな端末にする予定です。

この端末に興味のある方は
bs_handset@brilliantservice.co.jp(@を半角にしてください。)
にメールをください。

*1:6章を参照してください。

Android自社端末作成中


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

弊社では現在BeagleBoardをベースにしたAndroid端末を作成中です。

形は不恰好ですが、Androidで1台端末をきっちり作る技術の習得を目指しています。

Android 1.5ベースでBeagleBoardでサウンドの鳴動まで確認できている資料を公開いたします。


Beagleboardを使用しての端末作成

株式会社ブリリアントサービス
技術部 藤井 洋祐


0.始めに

現在株式会社ブリリアントサービスは自社端末プロジェクトでAndroid搭載端末を作成中です。
 その際に得たノウハウをここに公開いたします。
 当プロジェクト参加企業および参加者は以下の通りです。

<ハード担当>

Ex.株式会社 http://www.ex-inc.com/

<ソフト担当>

株式会社ブリリアントサービス
  代表  杉本 礼彦
  技術部 梶谷 亮太、八木 佑馬、河原 豊、藤井 洋祐
 某IT関連企業勤務
  S氏

★部品構成

メインボードは、Beagleboard Rev.CRev.B5を使用しています。
その他の構成に関しましては以下の通りです。

分類機能型番
モジュール通信モジュールRX420IN
モジュールGPSFGPMMOUDG
モジュール液晶パネルPD035VX3
モジュール液晶パネルタイミングコントローラーLT035V2PL0-FDR
モジュールタッチコントローラーETP-4000UCG-02
モジュールUSB カメラCMS-V23SETSV
モジュールACアダプタ DC12V 1ANP12-1S1210
モジュール3軸磁気センサMicroMag3
モジュール3軸加速度センサMMA7455L
ICDVIレシーバーTFP401APZP
ICRS232C ドライバ/レシーバMAX3233ECWP
ICI2C接続 汎用IOMCP23017-E/SO
ICUSB HUBTUSB2046BVF
コネクタHDMIコネクタMD60-19P
コネクタピンソケット(メス)40P(2×20) (EXPANSION) 
コネクタピンソケット(メス)10P(2×5) (RS232C) 
コネクタピンソケット(メス)14P(1×14)  (磁気・加速度用) 
コネクタ基板対基板コネクタ (無線LAN用)DF12 (3.0)-30DP-0.5V(86)
コネクタ6pinコネクタ (Audio・内部電源用)S6B-XH-A
コネクタ2pinコネクタ (電池BOX用)S2B-XH-A
コネクタW-SIM用コネクタSCZA1A0100
コネクタFPC31接続コネクタIL-FRR-31S-HF-NI
コネクタΦ3.5mm 標準ステレオジャックMJ-352W-C
コネクタΦ2.1mm標準DCジャックMJ-179P
コネクタUSBレセプタクル (立型:I/F-カメラ・GPS接続用)47500-0000
コネクタUSBコネクタ ミニAB (Beagle-I/F接続)56579-0576
コネクタ4pinコネクタ (電池BOX用)S4B-XH-A
 単4NiH電池 (1100mAh)110AAAHC
 電池ボックスSBH-441AS
 スピーカーCPE403NT18
 マイク (ECM)WM-61A
 Φ3.5ステレオプラグ (アングルタイプ)WTN03F1100ST
 6pinハウジングXHP-6
 2pinハウジングXHP-2
 4pinハウジングXHP-4
 pinヘッダ (Beagle-I/F間接続用) 
 DCプラグ (Beagle電源供給用)MP-136L

★外観イメージ

f:id:bs-android:20090603214849p:image

★使用環境

ubuntu8.10


1.準備

1.1 Android開発環境の設定

・Linux環境
下記リンクを参考にしてください。
http://source.android.com/download
http://d.hatena.ne.jp/bs-android/20090324/1237864332
※uboot-mkimageのインストールもしておきます。
※ubuntu8.10の場合、synapticマネージャーからインストールできます。
※ubuntu8.04の場合、apt-get install でインストールしました。

1.2 使用ツール等の設定

・GNU C & C++ Compilersのインストール
使用するリリースはarm-2007q3-51です。下記リンクからインストールできます。
http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057
※インストールは、TARの解凍形式、インストーラー使用など、ユーザーの好みにしたがって各種用意されています。
TARを解凍される場合は、インストール場所のパス設定を各自で行ってください。
(~/.bashrcファイルに$PATHを記述します)


2.Beaglebord用Androidソースの取得

2.1 repoの初期化

まず、ベースとなるAndroidソースDownloadのための下準備を行ないます。
ターミナルウィンドウにコマンドを入力していきます。
$ mkdir mydroid ★名前は任意です。
$ cd mydoroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
上記操作で、最新のAndroidソースをmydroidにDownloadする設定を行います。

2.2 Omap用カーネルの取得準備

Beagleboard上でAndroidを動かす場合、Androidのレポジトリから不要なサブプロジェクトの削除と標準プロジェクト群に含まれないプロジェクトをダウンロードする必要があります。
そのための設定ファイルを使用します。
mydroid/.repo/ に local_manifest.xml を作成します。
local_manifest.xmlの内容は次の通りにします。

local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remove-project name="kernel/common"/>
  <project path="kernel" name="kernel/omap" revision="refs/heads/android-omap-2.6.29"/>
  <project path="external/alsa-lib" name="platform/external/alsa-lib"/>
  <project path="external/alsa-utils" name="platform/external/alsa-utils"/>
  <project path="hardware/alsa_sound" name="platform/hardware/alsa_sound"/>
</manifest>

2.3 ソースの取得

2.1、2.2の準備が出来れば、Download準備完了です。
ターミナルウィンドウに以下のコマンドを入力します。
$ repo sync
上記、コマンド実行後、ソース取得が開始されます。
稀に失敗する場合がありますが、その場合、再度上記コマンドを実行してください。


3. パッチの準備


3.1 Linuxカーネル環境構築

BeagleBoardはALSA audio driverを使用しています。
ALSA on beagleboardとAndroidとの結合に関しては、色々問題が報告されていますが、ALSAを使用してサウンドを鳴動させることに成功しました。

3.2.1 サウンドデバイスのBuild定義追加

Androidプロジェクトにあるomap kernelは、Beagleboardのサウンドデバイスがビルドできない様になっています。
その為、古いカーネルから差分を抽出し、パッチを当てました。
SND_OMAP_SOC_OMAP3_BEAGLEを設定可能なように以下の記述を追加しました。
※依存関係に注意してください。弊社では、”config SND_OMAP_SOC_N810“の次に追加しました。

mydroid/kernel/sound/soc/omap/Kconfig
追加部分
 config SND_OMAP_SOC_OMAP3_BEAGLE
 tristate "SoC Audio support for OMAP3 Beagle"
 depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_BEAGLE
 select SND_OMAP_SOC_MCBSP
 select SND_SOC_TWL4030
 help
   Say Y if you want to add support for SoC audio on the Beagleboard.

mydroid/kernel/sound/soc/omap/Makefile

beagleboard関連のコンパイル設定を追加。
# OMAP Machine Support
snd-soc-n810-objs := n810.o
snd-soc-omap3beagle-objs := omap3beagle.o
snd-soc-osk5912-objs := osk5912.o
snd-soc-overo-objs := overo.o
snd-soc-omap2evm-objs := omap2evm.o
snd-soc-sdp3430-objs := sdp3430.o
snd-soc-omap3pandora-objs := omap3pandora.o
obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
obj-$(CONFIG_MACH_OMAP2EVM) += snd-soc-omap2evm.o
obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o

3.2.2 カーネルコンフィギュレーションの作成

弊社で作成したAndroid、ADB、ALSA、FrameBuffer機能有効化を追加したカーネルコンフィギュレーションファイルです。
omap3_beagle_android_defconfigをmydroid/kernel/arch/arm/configs に保存しておきます。

3.3 Android環境構築


3.3.1 ALSAサウンドドライバ

2.2章のlocal_manifest.xmlの設定により、ALSAサウンドライブラリなどの関連ファイルが取得できています。
これらのライブラリをAndroidで使用可能にする為にコンフィグを追加する必要があります。

mydroid/build/target/board/generic/BoardConfig.mk
# config.mk
#
# Product-specific compile-time definitions.
#
# The generic product target doesn't have any hardware-specific pieces.
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true
TARGET_NO_RADIOIMAGE := true
HAVE_HTC_AUDIO_DRIVER := true
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true
#BOARD_USES_GENERIC_AUDIO := true ※コメントアウト
しかし、このままでは二重定義によりBuildが失敗します。これの原因も取り除きます。

mydroid/external/alsa-utils/android/aconfig.h
#define DATADIR "/system/usr/share/alsa"

#define rindex strrchr
#define open64 open

/*typedef int off64_t;*/ //この定義をコメントアウト

#undef __swab16
#define __swab16(x)  __arch__swab16((x))

#undef __swab32
#define __swab32(x)  __arch__swab32((x))

3.3.2 Batteryパッチ

当初、BeagleboardでAndroidロゴが表示されるもrebootを繰り返すという現象が発生していました。
調査の結果、boot時に、バッテリーパワーがゼロで返されるということが判明しました。
そこで、/sys/class/power_supply以下の情報を無視して、バッテリーがFULLである様にAndroidに通知し、Low batteryによるpower downを防ぐようにしました。

※現在Beagleboard用のパワーサプライのデバイスドライバが現在存在していない為、暫定措置として常に電池が満タンの状態を返すようにしていますが、今後改善していく予定です。

mydroid/frameworks/base/services/jni/com_android_server_BatteryService.cpp

BatteryServiceがAC,USB,電池のいずれかであっても、常にtrueを返却するように変更。
static void setBooleanField(JNIEnv* env, jobject obj, const char* path, jfieldID fieldID)
{
    const int SIZE = 16;
    char buf[SIZE];
    
    jboolean value = true; //falseをtrueに変更
/* コメントアウト
    if (readFromFile(path, buf, SIZE) > 0) {
        if (buf[0] == '1') {
            value = true;
        }
    }
*/
    env->SetBooleanField(obj, fieldID, value);
}
Batteryの容量、電圧、温度を100%で返却するように変更。
static void setIntField(JNIEnv* env, jobject obj, const char* path, jfieldID fieldID)
{
    const int SIZE = 128;
    char buf[SIZE];
    
    jint value = 100; //0を100に変更
/* コメントアウト
    if (readFromFile(path, buf, SIZE) > 0) {
        value = atoi(buf);
    }
*/
    env->SetIntField(obj, fieldID, value);
}
Battery充電状態をFullで、劣化状態を常に良に設定するように変更。
static void android_server_BatteryService_update(JNIEnv* env, jobject obj)
{
    setBooleanField(env, obj, AC_ONLINE_PATH, gFieldIds.mAcOnline);
    setBooleanField(env, obj, USB_ONLINE_PATH, gFieldIds.mUsbOnline);
    setBooleanField(env, obj, BATTERY_PRESENT_PATH, gFieldIds.mBatteryPresent);
    
    setIntField(env, obj, BATTERY_CAPACITY_PATH, gFieldIds.mBatteryLevel);
    setIntField(env, obj, BATTERY_VOLTAGE_PATH, gFieldIds.mBatteryVoltage);
    setIntField(env, obj, BATTERY_TEMPERATURE_PATH, gFieldIds.mBatteryTemperature);

    env->SetIntField(obj, gFieldIds.mBatteryStatus, gConstants.statusFull); //追加
    env->SetIntField(obj, gFieldIds.mBatteryHealth, gConstants.healthGood); //追加
    env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF("1")); //追加
/* コメントアウト
    const int SIZE = 128;
    char buf[SIZE];
    
    if (readFromFile(BATTERY_STATUS_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf));
    
    if (readFromFile(BATTERY_HEALTH_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf));

    if (readFromFile(BATTERY_TECHNOLOGY_PATH, buf, SIZE) > 0)
        env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf));
*/
}


4. Build


4.1 カーネル環境Build

以下のコマンドを実行してカーネルをビルドします。
 
 $ cd ~/mydroid/kernel
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_android_defconfig
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules <-ADBを使用しない場合は不要

4.2 Android環境Build

以下のコマンドを実行してAndroid環境をビルドします。
$ cd ~/mydroid
$ make


5. Boot用SDカードの作成


5.1 作成方法

以下の情報を参考にさせていただきました。

http://wiki.davincidsp.com/index.php?title=MMC_Boot_Format

http://d.hatena.ne.jp/naka-3/20090128/1233125851

5.2 init.rcの変更

linux、androidの初期化設定ファイルです。

Beagleboardを使用するためファイルシステムが変更されます。そのため初期化パラメータの変更を行ないました。

また、ADB(デバッガ)モジュール*1のロード設定、ALSAドライバの権限変更を追加しました。

※SDカードext3パーティション上のrootにおいてください。

※ADBモジュールのロード設定は以下になります。不要の場合はコメントアウトしてください。

init.rc
### Load some modules using ADB kernel module
    insmod /system/lib/modules/switch_class.ko
    insmod /system/lib/modules/switch_gpio.ko
    insmod /system/lib/modules/g_android.ko


6. ADB(デバッガ)

ADBにてデバッグを行なうためにパッチ、変更をいくつか実施しています。

こちらも合わせて記載させていただきます。ADBが不要であれば、読み飛ばしてください。

6.1 カーネルモジュールのインストール

ADB(デバッガ)を使用する場合、makeによって
mydroid/kernel 以下に生成された*.koファイルを、
SDカードのext3パーティション上に作成した
/system/lib/modules 以下にコピーします。

※カレントディレクトリをmydroid/kernel とし以下のコマンドを入力すれば見つかります。
$ find -name "*.ko" -type f

6.2 init.rcの変更

5.2章にあるADB(デバッガ)モジュールのロード設定を有効にし、SDカードext3パーティションのrootディレクトリにコピーします。

6.3 PC側のUSB設定

HOST PC側でBeagleboardのADBを認識させる必要があります。

そのUSB設定ファイルです。
50-android.rules
SUBSYSTEM=="usb",SYSFS{idVendor}=="18d1",MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="18d1",MODE="0666"
このファイルをPC側の /etc/udev/rules.d にコピーします。その後、以下のコマンドにてchmodしてください。
$ sudo chmod a+rx /etc/udev/rules.d/50-android.rules


7. おまけ

VGA表示させたときの写真です。(さりげなく基板のロゴをアピール)

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

ケースに入った写真
f:id:bs-android:20090603170500j:image
f:id:bs-android:20090603170600j:image
LCD表示
f:id:bs-android:20090604073043j:image
f:id:bs-android:20090604073116j:image


作者プロフィール

藤井 洋祐(ふじい ようすけ)

京都市生まれ。

将来の夢 :世界平和

好きな言葉:学問に王道なし。日々が大切である(小学校の恩師の言葉)


略歴


ジ○リ○ナ東京でお立ち台の全盛時、東京に憧れるも、大阪のソフトハウス入社。
メーカー系ソフトウェア子会社で金融系端末(現金自動支払機)の制御プログラム開発に従事。
そこで、お金を扱う仕事柄からお金の大切さを学ぶ。
上場派遣会社に転職後、上司の「1年間、我慢して」の一言から、携帯メーカーにて作業開始。
そこで杉本 礼彦氏(現、ブリリアントサービス代表)と運命的な出会いを果たすことになる。
彼の生き様に心酔し、良くも悪くも現在に至る。


今回Ex.さんにハードを作成していただいていますが、弊社側がビーグルボード+W-SIMにこだわった為に、大きく不恰好な端末になってしまっています。

2号機は今回のノウハウを活かして、スマートな端末にする予定です。

この端末に興味のある方は
bs_handset@brilliantservice.co.jp(@を半角にしてください。)
にメールをください。

*1:6章を参照してください。
Related Posts Plugin for WordPress, Blogger...