「Armadillo-500FX用開発環境構築」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
*Armadillo-500 FX用開発環境構築
**概略
Armadillo-500 FX上で動作するAndroidのビルド環境構築について記載する。
記載、および、動作確認には、cupcakeバージョンを対象としている。
バージョンによっては、不要な手順もある。
**目次
-&link_anchor(Armadillo-500FX){Armadillo-500 FXについて}
-&link_anchor(環境構築目標){環境構築目標}
-&link_anchor(ファイル取得){ファイル取得}
-&link_anchor(ファイル配置){ファイル配置}
-&link_anchor(カーネル修正){カーネル修正}
-&link_anchor(ユーザ空間修正){ユーザ空間修正}
-&link_anchor(追加ファイル){追加ファイル}
-&link_anchor(パス設定){パス設定}
-&link_anchor(ビルド方法){ビルド方法}
-&link_anchor(ビルドスクリプト){ビルドスクリプト}
-&link_anchor(ビルド生成物){ビルド生成物}
-&link_anchor(未解決問題){未解決問題}
-&link_anchor(以降検証中){以降検証中}
----
**&anchor(Armadillo-500FX,option=nolink){Armadillo-500 FXについて}
Armadillo-500fxは、組込み向けの開発キットになる。
言い方を変えると、「高いおもちゃ」ということ。
仕様等の詳細は、公式となる[[Atmark Technoの紹介ページ>>http://www.atmark-techno.com/products/armadillo/a500fx]]を見てください。
**&anchor(環境構築目標,option=nolink){環境構築目標}
Armadillo-500fx用の環境を作る上での目標をまとめておく。
テーマは、「手軽に、かっこよく」ってことで。
以下に、具体的な目的をまとめておく。
-コマンドひとつで、カーネル+ユーザ層がビルドできるようにする
-eeepc701用のビルドで採用されているように、vendor配下を作ってみる
-生成物を焼きやすい形にまとめるようにする
-いろいろ手順が簡単になるようにする
**&anchor(ファイル取得,option=nolink){ファイル取得}
環境を作成する上で元となるソースの取得方法について記載する。
取得するソースは、2種類に分かれる。
-AndroidのLinuxカーネル部分以外のソース
-Linuxカーネル部分のソース
***Androidのカーネル部分以外のソース
いわゆる、Androidのソースと言われる部分。
いつからか、カーネルが同時に取得できなくなったので、カーネル以外と記載している。
(Armadillo-500fxでは、カーネルも構築する必要があるためである。)
+[[Android開発環境構築]]の手順の中で、ソース取得準備まで実施する
+&link_anchor(ソース取得方法1,page=Android開発環境構築){ソース取得方法(repo)}にあるように、repoコマンドでソースを取得する
+-ビルドできるバージョンを使うため、”repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake"等バージョン指定を実施する
+-その後、"repo sync "を実施する
***Linuxカーネル部分のソース
Linuxカーネルの部分を取得する。
この部分が主にハードウェア用のカスタマイズが必要な部分となる。
また、GPLライセンスに縛られているため、どこかで取得できる。
今回は、Armadillo-500fxが対象となるので、公式から取得する。
+ブラウザ等で、[[Armadillo-500 FXダウンロード>>http://armadillo.atmark-techno.com/armadillo-500-fx/downloads]]を開く
+Linuxカーネルを取得(確認当時、v2.6.26-at6 でした)
**&anchor(ファイル配置,option=nolink){ファイル配置}
ダウンロードしたソースの配置について記載する。
以降の説明用には、この節で記載したフォルダ構成で記載する。
+”repo init”、"repo sync"を実行したフォルダを「cupcake」とする
+-「cupcake」配下に、「bionic」、「framework」等のフォルダがあることになる
+ダウンロードしたカーネルファイルを展開する
+-展開すると、「linux-2.6.26-at6」というフォルダができる
+展開したフォルダの名称を「kernel」と変更する
+-「kernel」配下に、「drivers」等のフォルダがあることになる
+「cupcake」フォルダの中に、「kernel」フォルダを移動する
+-「cupcake/framework/base」、「cupcake/kernel/drivers/usb」等の階層となる
-注意事項
--階層の説明はわかりづらいかも・・。できたら、絵を追加したい。
--取得バージョンによっては、例で示すフォルダが存在しない場合がある。
**&anchor(カーネル修正,option=nolink){カーネル修正}
ダウンロードしたカーネルファイルには、Android用の修正が適用されていない状態である。
その為、Android用の修正を実施するために、修正パッチの適用を実施する。
+Android用パッチを取得する
++ブラウザ等で、公式ファイルブラウザ内の[[android directory>>http://armadillo.atmark-techno.com/filebrowser/misc/android]]を開く
++「linux-2.6.26-at-android-tmp-081210.patch」をダウンロードする
+カーネルにパッチを適用する
++カーネルフォルダ(cupcake/kernel)内に、ダウンロードしたpatchを移動する
++端末で、カーネルフォルダ(cupcake/kernel)内に移動する
++端末で、「patch -p1 < linux-2.6.26-at-android-tmp-081210.patch」を実施し、パッチを適用する
+ATDEを使用しない為、Makefileを一部修正する
++「cupcake/kernel/arch/arm/plat-mxc/sdma/Makefile」をテキストエディタで開く
++「KBUILD_CFLAGS := -I$(KBUILD_SRC)/arch/arm/plat-mxc/sdma/iapi/include \」の行を修正する
++-「:=」の部分を「+=」に変更する
-注意事項
--patchの使い方は、うる覚え。試した人は結果ください(汗)
--Makefileの修正については、以下を参照ください。
---[[「Armadillo:04247」 「PATCH」 armadillo-500: make O= building >>http://lists.atmark-techno.com/pipermail/armadillo/2009-May/004247.html]]
**&anchor(ユーザ空間修正,option=nolink){ユーザ空間修正}
Armadillo-500fxでのcupcake版ビルドで、ユーザ空間で必要な修正について記載する。
カーネル、Androidバージョンの組合せに依存して発生する。
他の組合せだと不要かもしれない。
-Armadillo-500fxで動かす場合のcupcake版での問題点
--起動時、バッテリ状態が取得できない為、ローバッテリだと判断して、電源OFFしてしまう
-対策方法(例:実際できないかも・・)
-+電源管理アプリでダミー値で処理する
-+framework層(java層)でダミー値を返す
-+JNI層(Linuxアプリ層)でダミー値を返す
-+カーネル層でダミー値を返す
framework層とJNI層は、ほぼ同等で、java好きか、C++好きかになる。
ここでは、JNI層での修正方法を示す。
+対象となるファイルをテキストエディタで開く
+-”cupcake/frameworks/base/services/jni/com_android_server_BatteryService.cpp”
+バッテリ状態を返す関数の復帰値を変更する
++getBatteryStatus()
++-”gConstants.statusUnknown”を常に返すように変更
++getBatteryHealth()
++-”gConstants.healthUnknown”を常に返すように変更
++readFromFile()
++-bufに文字列”Unknown”(NULL終端付)を入れて、sizeを復帰値とした
++-(bufの領域は、自分できちんと確認してね・・壊れてるかも)
++setBooleanField()
++-関数readFromFile()をコールし、結果で判断するif処理を削除
++-変数valueを常にtrueに変更
++-(要するに、readFromFile()のコールを削除して、value固定化)
++setIntField()
++-関数readFromFile()をコールし、結果で判断するif処理を削除
++-変数valueを常に1に変更
++-(要するに、readFromFile()のコールを削除して、value固定化)
-注意事項
--上記修正は、重複もありそうだけど、良しとした。
--JNI層での修正に関しては、[[EeePc porting - Instructions for last codebase>>http://groups.google.com/group/android-porting/browse_thread/thread/8857e976d066ccd4]]を参考にして実施。
--framework層での修正は、[[Android 1.5 on Zaurus>>http://androidzaurus.seesaa.net/article/116995835.html]]に修正差分がある。(試してないけど・・)
**&anchor(追加ファイル,option=nolink){追加ファイル}
ビルド時に、”TARGET_PRODUCT=armadillo500fx_dev”等と指定する為、vendor配下に追加するファイルについて記載する。
他の機種(eee_701等)と合わせる為、以下の階層にファイルを作成する
-”cupcake/vendor/atmarktechno/armadillo500fx_dev”
--(これじゃなくても良さそうだけど・・なんとなく・・)
+格納するフォルダを作成する
+-上記の”cupcake/vendor/atmarktechno/armadillo500fx_dev”
+格納フォルダ内にファイルを作成する
++Android.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のAndroid.mkをコピー
+++-コメントのみなので、不要である可能性有り
++AndroidBoard.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のAndroidBoad.mkをコピー
+++Armadillo-500 FX用に修正
++++KERNEL_DEFCONFIGに指定するファイルを変更
++++-(qsd8650_defconfig→armadillo500fx_dev_android_defconfig)
++++キーボードマップファイルの指定ファイルを変更
++++-(surf_keypad.kl→tuttle2.kl)
++++-(surf_keypad.kcm→tuttle2.kcm)
++++ブート用のビルド設定を削除
++++-”include vendor/qcom/$(TARGET_PRODUCT)/boot/Android.mk”を削除
++++init.rcのコピー設定を追加
++++-”PRODUCT_COPY_FILES +=$(LOCAL_PATH)/init.rc:root/init.rc”を追加
++++-(正しいか不明)
++AndroidProducts.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のAndroidProducts.mkをコピー
+++Armadillo-500 FX用に修正
+++-(qsd8250_surf.mk→armadillo500fx_dev.mk)
++armadillo500fx_dev.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://android.git.kernel.org/platform/vendor/htc/dream-open.git”でサンプルを取得
+++上記取得ファイルの中のhtc_dream.mkをコピー
+++ファイル名を”armadillo500fx_dev.mk”へ変更
+++Armadillo-500 FX用に修正
+++-変数”PRODUCT_NAME”を変更
+++--(htc_dream→armadillo500fx_dev)
+++-変数”PRODUCT_DEVICE”を変更
+++--(dream-open→armadillo500fx_dev)
+++-変数”PRODUCT_MANUFACTURER”の記載を削除
++BoardConfig.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
++-デバイスに合わせてフラグ設定をまとめている?
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のBoardConfig.mkを参考に作成する
+++-デバイス依存部の削除とブート関連記載の削除
+++-(基本、genericで、カーネルビルドだけ付加した形かな)
+++以下がArmadillo-500 FX用の設定
+++-TARGET_NO_BOOTLOADER := true
+++-TARGET_NO_KERNEL := false(カーネルビルド用)
+++-TARGET_NO_RADIOIMAGE := true
+++-BOARD_USES_GENERIC_AUDIO := true
+++-USE_CAMERA_STUB := true
+++-TARGET_BOOTIMAGE_USE_EXT2 := true(たぶん、不要)
+++-TARGET_USERIMAGES_USE_EXT2 := true(たぶん、不要)
++init.rc
++-起動時に、initから参照される設定ファイル
++-initでのコマンド解釈ルールにより、動作する
++-必須ではない為、”.mk”内にコピー用の記載が必要。
++-デフォルトだと、"cupcake/system/core/rootdir"内のファイルになる?
++--(要確認)同名ファイルが他に存在?
++--(要確認)環境変数”TARGET_PROVIDES_INIT_RC”が影響?
+++デフォルトファイルから、”yaffs2”の記載がある行を”#”でコメントアウト
+++-マウント設定、権限設定があるので、見直しの必要有り
++system.prop
++-設定ファイル(よくわかっていない)
++-予想:特定用途のライブラリ、インタフェイスの設定
+++"cupcake/build/target/board/generic"内からコピー
++tuttle2.kcm
++-キーボードマップ関連(よくわかっていない)
+++"cupcake/build/target/board/generic"内からコピー
++tuttle2.kl
++-キーボードマップ関連(よくわかっていない)
+++"cupcake/build/target/board/generic"内からコピー
+カーネルをビルドする為に、"cupcake/kernel"配下にファイルを追加する
++AndroidKernel.mk
+++”git clone git://codeaurora.org/kernel/msm.git”でサンプルを取得
+++-カーネル一式なので、重たいかも・・
+++AndroidKernel.mkをcupcake/kernel内にコピー
-サンプル
--2と3のサンプルを添付ファイルとしてアップ([[armadillo_cust.tar.gz>http://www42.atwiki.jp/melodroid?cmd=upload&act=open&pageid=17&file=armadillo_cust.tar.gz]])
--ライセンスとか問題あったら、指摘してください
-注意事項
--”.mk”の記載ルールがはっきりとわかっていない為、間違ってるかも
--現状、不明なファイルについては、generic時に使用されるファイルを使用
--当初、書込みファイル自体不明だった為、不要な設定も含まれているかも
**&anchor(パス設定,option=nolink){パス設定}
Armadillo-500FXは、CPUがARMとなっている。
一方で、ビルドマシンとしては、x86を想定している。
上記のため、クロスコンパイラ用のパスを追加する必要がある。
その為のパス設定について記載する。
-クロスコンパイラの場所
--cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/
--cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/
--cupcake/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/
-パス設定の追加
-+"cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/”へのシンボリックリンクを作成する(以下、arm-eabi-4.2.1を作成したリンクとする)
-+-端末で、"ln -s"コマンドを使う
-+-上記手順は不要な場合がある
-+端末上で、"PATH=$PATH:arm-eabi-4.2.1"として、PATHへ追加する
-+-毎回書くのはめんどくさいので、.bashrc とか、ビルドスクリプトに入れると良い
**&anchor(ビルド方法,option=nolink){ビルド方法}
ビルド方法を記載する。
+端末で、”cupcake”フォルダまで、移動する
+"export TARGET_PRODUCT=armadillo500fx_dev"とコマンドを入力する
+"make"とコマンドを入力する
**&anchor(ビルドスクリプト,option=nolink){ビルドスクリプト}
ビルドの為のスクリプトを紹介しておく
ビルドの為の設定が面倒くさい為に作成した。
+”build_dev.sh”を作成
+-名前はなんでも良い
+-(あくまで、参考程度・・)
++パス設定を記載
++環境設定を記載(例:"export TARGET_PRODUCT=armadillo500fx_dev")
++ビルドコマンドを記載(”make”等)
上記ファイルを作成すると、ビルドは以下の手順で良い
+端末で、"cupcake"フォルダに移動する
+". build_dev.sh"とコマンドを入力する
**&anchor(ビルド生成物,option=nolink){ビルド生成物}
上記ビルド構築環境でのビルド生成物について記載する
-ビルド生成物作成フォルダ
--cupcake/out/target/product/armadillo500fx_dev
-Armadillo書込み対応ファイル/フォルダ
--カーネル
---cupcake/out/target/product/armadillo500fx_dev/kernel(以降、$KERNEL)
--ユーザランド
---cupcake/out/target/product/armadillo500fx_dev/root(以降、$ROOT)
---cupcake/out/target/product/armadillo500fx_dev/system(以降、$SYSTEM)
-Armadillo-500 FXへの書込み
-+$KERNELをhermit等でカーネル領域に書き込む
-+ROMのユーザ領域には、[[Armadillo開発者サイト>>http://armadillo.atmark-techno.com/howto/try-android-on-armadillo]]にある[[Atmark Distユーザランド>>http://armadillo.atmark-techno.com/files/downloads/misc/android/romfs-a500fx-android-tmp-081030.img.gz]]を書き込む
-+Androidユーザ層を構築する
-++ローカルに"android"フォルダを作成する
-++$ROOTのフォルダ/ファイルを”android”内にコピー
-++$SYSTEMのフォルダ/ファイルを”android/system”内にコピー
-+構築したユーザ層をArmadillo-500 FXの/dev/sda1に書き込む
-+-/dev/sda1への書込みは、[[Armadillo開発者サイト>>http://armadillo.atmark-techno.com/howto/try-android-on-armadillo]]を参照してください
-注意事項
--構築するアプリ等に依存して、別途dataフォルダの考慮が必要になる
**&anchor(未解決問題,option=nolink){未解決問題}
未解決な問題について記載する
+ビルド生成物の操作方法
+”chroot”を使わないArmadillo-500FXのAndroid起動方法
+各種、環境変数の影響
+キーマップファイルの効果
+.mkファイル内のAndroid特有コマンド
何かあれば、書き込みます・・。
**&anchor(以降検証中,option=nolink){以降検証中}
未解決問題の中で、今、検証中のものを記載する。
途中経過も書いていければいいな。
現状、検証中はありません。
*Armadillo-500 FX用開発環境構築
**概略
Armadillo-500 FX上で動作するAndroidのビルド環境構築について記載する。
記載、および、動作確認には、cupcakeバージョンを対象としている。
バージョンによっては、不要な手順もある。
**目次
-&link_anchor(Armadillo-500FX){Armadillo-500 FXについて}
-&link_anchor(環境構築目標){環境構築目標}
-&link_anchor(ファイル取得){ファイル取得}
-&link_anchor(ファイル配置){ファイル配置}
-&link_anchor(カーネル修正){カーネル修正}
-&link_anchor(ユーザ空間修正){ユーザ空間修正}
-&link_anchor(追加ファイル){追加ファイル}
-&link_anchor(パス設定){パス設定}
-&link_anchor(ビルド方法){ビルド方法}
-&link_anchor(ビルドスクリプト){ビルドスクリプト}
-&link_anchor(ビルド生成物){ビルド生成物}
-&link_anchor(未解決問題){未解決問題}
-&link_anchor(検証中){検証中}
----
**&anchor(Armadillo-500FX,option=nolink){Armadillo-500 FXについて}
Armadillo-500fxは、組込み向けの開発キットになる。
言い方を変えると、「高いおもちゃ」ということ。
仕様等の詳細は、公式となる[[Atmark Technoの紹介ページ>>http://www.atmark-techno.com/products/armadillo/a500fx]]を見てください。
**&anchor(環境構築目標,option=nolink){環境構築目標}
Armadillo-500fx用の環境を作る上での目標をまとめておく。
テーマは、「手軽に、かっこよく」ってことで。
以下に、具体的な目的をまとめておく。
-コマンドひとつで、カーネル+ユーザ層がビルドできるようにする
-eeepc701用のビルドで採用されているように、vendor配下を作ってみる
-生成物を焼きやすい形にまとめるようにする
-いろいろ手順が簡単になるようにする
**&anchor(ファイル取得,option=nolink){ファイル取得}
環境を作成する上で元となるソースの取得方法について記載する。
取得するソースは、2種類に分かれる。
-AndroidのLinuxカーネル部分以外のソース
-Linuxカーネル部分のソース
***Androidのカーネル部分以外のソース
いわゆる、Androidのソースと言われる部分。
いつからか、カーネルが同時に取得できなくなったので、カーネル以外と記載している。
(Armadillo-500fxでは、カーネルも構築する必要があるためである。)
+[[Android開発環境構築]]の手順の中で、ソース取得準備まで実施する
+&link_anchor(ソース取得方法1,page=Android開発環境構築){ソース取得方法(repo)}にあるように、repoコマンドでソースを取得する
+-ビルドできるバージョンを使うため、”repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake"等バージョン指定を実施する
+-その後、"repo sync "を実施する
***Linuxカーネル部分のソース
Linuxカーネルの部分を取得する。
この部分が主にハードウェア用のカスタマイズが必要な部分となる。
また、GPLライセンスに縛られているため、どこかで取得できる。
今回は、Armadillo-500fxが対象となるので、公式から取得する。
+ブラウザ等で、[[Armadillo-500 FXダウンロード>>http://armadillo.atmark-techno.com/armadillo-500-fx/downloads]]を開く
+Linuxカーネルを取得(確認当時、v2.6.26-at6 でした)
**&anchor(ファイル配置,option=nolink){ファイル配置}
ダウンロードしたソースの配置について記載する。
以降の説明用には、この節で記載したフォルダ構成で記載する。
+”repo init”、"repo sync"を実行したフォルダを「cupcake」とする
+-「cupcake」配下に、「bionic」、「framework」等のフォルダがあることになる
+ダウンロードしたカーネルファイルを展開する
+-展開すると、「linux-2.6.26-at6」というフォルダができる
+展開したフォルダの名称を「kernel」と変更する
+-「kernel」配下に、「drivers」等のフォルダがあることになる
+「cupcake」フォルダの中に、「kernel」フォルダを移動する
+-「cupcake/framework/base」、「cupcake/kernel/drivers/usb」等の階層となる
-注意事項
--階層の説明はわかりづらいかも・・。できたら、絵を追加したい。
--取得バージョンによっては、例で示すフォルダが存在しない場合がある。
**&anchor(カーネル修正,option=nolink){カーネル修正}
ダウンロードしたカーネルファイルには、Android用の修正が適用されていない状態である。
その為、Android用の修正を実施するために、修正パッチの適用を実施する。
+Android用パッチを取得する
++ブラウザ等で、公式ファイルブラウザ内の[[android directory>>http://armadillo.atmark-techno.com/filebrowser/misc/android]]を開く
++「linux-2.6.26-at-android-tmp-081210.patch」をダウンロードする
+カーネルにパッチを適用する
++カーネルフォルダ(cupcake/kernel)内に、ダウンロードしたpatchを移動する
++端末で、カーネルフォルダ(cupcake/kernel)内に移動する
++端末で、「patch -p1 < linux-2.6.26-at-android-tmp-081210.patch」を実施し、パッチを適用する
+ATDEを使用しない為、Makefileを一部修正する
++「cupcake/kernel/arch/arm/plat-mxc/sdma/Makefile」をテキストエディタで開く
++「KBUILD_CFLAGS := -I$(KBUILD_SRC)/arch/arm/plat-mxc/sdma/iapi/include \」の行を修正する
++-「:=」の部分を「+=」に変更する
-注意事項
--patchの使い方は、うる覚え。試した人は結果ください(汗)
--Makefileの修正については、以下を参照ください。
---[[「Armadillo:04247」 「PATCH」 armadillo-500: make O= building >>http://lists.atmark-techno.com/pipermail/armadillo/2009-May/004247.html]]
**&anchor(ユーザ空間修正,option=nolink){ユーザ空間修正}
Armadillo-500fxでのcupcake版ビルドで、ユーザ空間で必要な修正について記載する。
カーネル、Androidバージョンの組合せに依存して発生する。
他の組合せだと不要かもしれない。
-Armadillo-500fxで動かす場合のcupcake版での問題点
--起動時、バッテリ状態が取得できない為、ローバッテリだと判断して、電源OFFしてしまう
-対策方法(例:実際できないかも・・)
-+電源管理アプリでダミー値で処理する
-+framework層(java層)でダミー値を返す
-+JNI層(Linuxアプリ層)でダミー値を返す
-+カーネル層でダミー値を返す
framework層とJNI層は、ほぼ同等で、java好きか、C++好きかになる。
ここでは、JNI層での修正方法を示す。
+対象となるファイルをテキストエディタで開く
+-”cupcake/frameworks/base/services/jni/com_android_server_BatteryService.cpp”
+バッテリ状態を返す関数の復帰値を変更する
++getBatteryStatus()
++-”gConstants.statusUnknown”を常に返すように変更
++getBatteryHealth()
++-”gConstants.healthUnknown”を常に返すように変更
++readFromFile()
++-bufに文字列”Unknown”(NULL終端付)を入れて、sizeを復帰値とした
++-(bufの領域は、自分できちんと確認してね・・壊れてるかも)
++setBooleanField()
++-関数readFromFile()をコールし、結果で判断するif処理を削除
++-変数valueを常にtrueに変更
++-(要するに、readFromFile()のコールを削除して、value固定化)
++setIntField()
++-関数readFromFile()をコールし、結果で判断するif処理を削除
++-変数valueを常に1に変更
++-(要するに、readFromFile()のコールを削除して、value固定化)
-注意事項
--上記修正は、重複もありそうだけど、良しとした。
--JNI層での修正に関しては、[[EeePc porting - Instructions for last codebase>>http://groups.google.com/group/android-porting/browse_thread/thread/8857e976d066ccd4]]を参考にして実施。
--framework層での修正は、[[Android 1.5 on Zaurus>>http://androidzaurus.seesaa.net/article/116995835.html]]に修正差分がある。(試してないけど・・)
**&anchor(追加ファイル,option=nolink){追加ファイル}
ビルド時に、”TARGET_PRODUCT=armadillo500fx_dev”等と指定する為、vendor配下に追加するファイルについて記載する。
他の機種(eee_701等)と合わせる為、以下の階層にファイルを作成する
-”cupcake/vendor/atmarktechno/armadillo500fx_dev”
--(これじゃなくても良さそうだけど・・なんとなく・・)
+格納するフォルダを作成する
+-上記の”cupcake/vendor/atmarktechno/armadillo500fx_dev”
+格納フォルダ内にファイルを作成する
++Android.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のAndroid.mkをコピー
+++-コメントのみなので、不要である可能性有り
++AndroidBoard.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のAndroidBoad.mkをコピー
+++Armadillo-500 FX用に修正
++++KERNEL_DEFCONFIGに指定するファイルを変更
++++-(qsd8650_defconfig→armadillo500fx_dev_android_defconfig)
++++キーボードマップファイルの指定ファイルを変更
++++-(surf_keypad.kl→tuttle2.kl)
++++-(surf_keypad.kcm→tuttle2.kcm)
++++ブート用のビルド設定を削除
++++-”include vendor/qcom/$(TARGET_PRODUCT)/boot/Android.mk”を削除
++++init.rcのコピー設定を追加
++++-”PRODUCT_COPY_FILES +=$(LOCAL_PATH)/init.rc:root/init.rc”を追加
++++-(正しいか不明)
++AndroidProducts.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のAndroidProducts.mkをコピー
+++Armadillo-500 FX用に修正
+++-(qsd8250_surf.mk→armadillo500fx_dev.mk)
++armadillo500fx_dev.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
+++”git clone git://android.git.kernel.org/platform/vendor/htc/dream-open.git”でサンプルを取得
+++上記取得ファイルの中のhtc_dream.mkをコピー
+++ファイル名を”armadillo500fx_dev.mk”へ変更
+++Armadillo-500 FX用に修正
+++-変数”PRODUCT_NAME”を変更
+++--(htc_dream→armadillo500fx_dev)
+++-変数”PRODUCT_DEVICE”を変更
+++--(dream-open→armadillo500fx_dev)
+++-変数”PRODUCT_MANUFACTURER”の記載を削除
++BoardConfig.mk
++-Android版Makefileみたいなもの(呼ばれる順番不明)
++-デバイスに合わせてフラグ設定をまとめている?
+++”git clone git://codeaurora.org/platform/vendor/qcom/qsd8250_surf.git”でサンプルを取得
+++上記取得ファイルの中のBoardConfig.mkを参考に作成する
+++-デバイス依存部の削除とブート関連記載の削除
+++-(基本、genericで、カーネルビルドだけ付加した形かな)
+++以下がArmadillo-500 FX用の設定
+++-TARGET_NO_BOOTLOADER := true
+++-TARGET_NO_KERNEL := false(カーネルビルド用)
+++-TARGET_NO_RADIOIMAGE := true
+++-BOARD_USES_GENERIC_AUDIO := true
+++-USE_CAMERA_STUB := true
+++-TARGET_BOOTIMAGE_USE_EXT2 := true(たぶん、不要)
+++-TARGET_USERIMAGES_USE_EXT2 := true(たぶん、不要)
++init.rc
++-起動時に、initから参照される設定ファイル
++-initでのコマンド解釈ルールにより、動作する
++-必須ではない為、”.mk”内にコピー用の記載が必要。
++-デフォルトだと、"cupcake/system/core/rootdir"内のファイルになる?
++--(要確認)同名ファイルが他に存在?
++--(要確認)環境変数”TARGET_PROVIDES_INIT_RC”が影響?
+++デフォルトファイルから、”yaffs2”の記載がある行を”#”でコメントアウト
+++-マウント設定、権限設定があるので、見直しの必要有り
++system.prop
++-設定ファイル(よくわかっていない)
++-予想:特定用途のライブラリ、インタフェイスの設定
+++"cupcake/build/target/board/generic"内からコピー
++tuttle2.kcm
++-キーボードマップ関連(よくわかっていない)
+++"cupcake/build/target/board/generic"内からコピー
++tuttle2.kl
++-キーボードマップ関連(よくわかっていない)
+++"cupcake/build/target/board/generic"内からコピー
+カーネルをビルドする為に、"cupcake/kernel"配下にファイルを追加する
++AndroidKernel.mk
+++”git clone git://codeaurora.org/kernel/msm.git”でサンプルを取得
+++-カーネル一式なので、重たいかも・・
+++AndroidKernel.mkをcupcake/kernel内にコピー
-サンプル
--2と3のサンプルを添付ファイルとしてアップ([[armadillo_cust.tar.gz>http://www42.atwiki.jp/melodroid?cmd=upload&act=open&pageid=17&file=armadillo_cust.tar.gz]])
--ライセンスとか問題あったら、指摘してください
-注意事項
--”.mk”の記載ルールがはっきりとわかっていない為、間違ってるかも
--現状、不明なファイルについては、generic時に使用されるファイルを使用
--当初、書込みファイル自体不明だった為、不要な設定も含まれているかも
**&anchor(パス設定,option=nolink){パス設定}
Armadillo-500FXは、CPUがARMとなっている。
一方で、ビルドマシンとしては、x86を想定している。
上記のため、クロスコンパイラ用のパスを追加する必要がある。
その為のパス設定について記載する。
-クロスコンパイラの場所
--cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/
--cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/
--cupcake/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/
-パス設定の追加
-+"cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/”へのシンボリックリンクを作成する(以下、arm-eabi-4.2.1を作成したリンクとする)
-+-端末で、"ln -s"コマンドを使う
-+-上記手順は不要な場合がある
-+端末上で、"PATH=$PATH:arm-eabi-4.2.1"として、PATHへ追加する
-+-毎回書くのはめんどくさいので、.bashrc とか、ビルドスクリプトに入れると良い
**&anchor(ビルド方法,option=nolink){ビルド方法}
ビルド方法を記載する。
+端末で、”cupcake”フォルダまで、移動する
+"export TARGET_PRODUCT=armadillo500fx_dev"とコマンドを入力する
+"make"とコマンドを入力する
**&anchor(ビルドスクリプト,option=nolink){ビルドスクリプト}
ビルドの為のスクリプトを紹介しておく
ビルドの為の設定が面倒くさい為に作成した。
+”build_dev.sh”を作成
+-名前はなんでも良い
+-(あくまで、参考程度・・)
++パス設定を記載
++環境設定を記載(例:"export TARGET_PRODUCT=armadillo500fx_dev")
++ビルドコマンドを記載(”make”等)
上記ファイルを作成すると、ビルドは以下の手順で良い
+端末で、"cupcake"フォルダに移動する
+". build_dev.sh"とコマンドを入力する
**&anchor(ビルド生成物,option=nolink){ビルド生成物}
上記ビルド構築環境でのビルド生成物について記載する
-ビルド生成物作成フォルダ
--cupcake/out/target/product/armadillo500fx_dev
-Armadillo書込み対応ファイル/フォルダ
--カーネル
---cupcake/out/target/product/armadillo500fx_dev/kernel(以降、$KERNEL)
--ユーザランド
---cupcake/out/target/product/armadillo500fx_dev/root(以降、$ROOT)
---cupcake/out/target/product/armadillo500fx_dev/system(以降、$SYSTEM)
-Armadillo-500 FXへの書込み
-+$KERNELをhermit等でカーネル領域に書き込む
-+ROMのユーザ領域には、[[Armadillo開発者サイト>>http://armadillo.atmark-techno.com/howto/try-android-on-armadillo]]にある[[Atmark Distユーザランド>>http://armadillo.atmark-techno.com/files/downloads/misc/android/romfs-a500fx-android-tmp-081030.img.gz]]を書き込む
-+Androidユーザ層を構築する
-++ローカルに"android"フォルダを作成する
-++$ROOTのフォルダ/ファイルを”android”内にコピー
-++$SYSTEMのフォルダ/ファイルを”android/system”内にコピー
-+構築したユーザ層をArmadillo-500 FXの/dev/sda1に書き込む
-+-/dev/sda1への書込みは、[[Armadillo開発者サイト>>http://armadillo.atmark-techno.com/howto/try-android-on-armadillo]]を参照してください
-注意事項
--構築するアプリ等に依存して、別途dataフォルダの考慮が必要になる
**&anchor(未解決問題,option=nolink){未解決問題}
未解決な問題について記載する
+ビルド生成物の操作方法
+”chroot”を使わないArmadillo-500FXのAndroid起動方法
+各種、環境変数の影響
+キーマップファイルの効果
+.mkファイル内のAndroid特有コマンド
何かあれば、書き込みます・・。
**&anchor(検証中,option=nolink){検証中}
未解決問題の中で、今、検証中のものを記載する。
途中経過も書いていければいいな。
現状、検証中はありません。