「Armadillo-500FX用開発環境構築」の編集履歴(バックアップ)一覧はこちら

Armadillo-500FX用開発環境構築」(2009/09/28 (月) 23:54:11) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*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){検証中} 未解決問題の中で、今、検証中のものを記載する。 途中経過も書いていければいいな。 現状、検証中はありません。

表示オプション

横に並べて表示:
変化行の前後のみ表示: