2008年2月21日木曜日

Armadillo-500へのAndroidポーティング手順



今回はArmadillo-500へAndroidをポーティングする手順の詳細を解説します。




  1. 開発環境を整える


    1. クロスコンパイル環境を整える


      1. VMWarePlayerをダウンロードしてインストールします。

      2. アットマークテクノさんのArmadillo開発者サイトから、クロスコンパイル環境の入ったATDE (vmwareイメージ)をダウンロードします。

      3. ダウンロードしたzipファイルを解凍し、vmxファイルを開きます。※VMWarePlayerをインストールしていれば関連付けられているはずです。

      4. ここを参考にカーネルのコンパイルができるようにします。※Armadillo-9の部分はArmadillo-500に置き換えてください。

  2. カーネルを2.6.23にする


    1. 上記で構築できるArmadillo-500のカーネルは2.6.18なので、そのままではAndroidは動きません。2.6.23のカーネルにする必要があります。http://www.kernel.org/pub/linux/などから2.6.23のソースを取得します。

    2. Armadillo-500の差分抽出の為、http://www.kernel.org/pub/linux/から2.6.18のソースも取得しておきます。

    3. linux-2.6.18、linux-2.6.18-at3(手順1-1-4でダウンロードしたもの)、linux-2.6.23の3種類環境ができるのでlinux-2.6.23へlinux-2.6.18とlinux-2.6.18-at3の差分をマージしていきます。※driver/mmc関連はディレクトリ構造やヘッダ構成がかなり変わっている為、手に負えない場合はマージしないで置いてもAndroidは動くので、Androidの起動を優先させるなら、マージをとばしてもよいでしょう。その他のコンパイルエラーが出た場合は気合で直します。

    4. 手順1-1-4で作成したlinux-2.6.xのシンボリックリンクを削除し*1、マージしたlinux-2.6.23にシンボリックリンクを張っておきます。*2

    5. make configで手順1-1-4と同じようにmake configします。この時、未設定のものに対していろいろ聞かれますが、とりあえずEnter押しっぱなしでデフォルト設定で抜けても大丈夫です。*3

    6. マージした環境をコンパイルし、バイナリを焼いてブートするか確認します。

    7. make menuconfigを実行してKenrnel FeaturesのEABIのコンパイルオプションを選んで、再度コンパイルします。他の設定を変更するとブートしなくなることがあるので、あまりいじらないほうがよいでしょう。*4

    8. バイナリを焼いてブートするか確認しておきます。

  3. Android差分のマージ


    1. BennoさんのAndroid.diffファイルを使用して上記のマージした環境に以下のようにしてパッチを当てます。※一部でrejファイルが出来るので、手動でマージします

    2. make menuconfigでlow memory killer*5とopen binder*6にチェックを入れておきます。

    3. コンパイルし、カーネルを焼いて動作するかどうか確認します。

これでAndroidを起動する為の下地が整いました。

もっと簡単な方法があるのですが、それは後日書きます。

次回はユーザーランドの構築方法について解説します。



*1:atmark-distのディレクトリで rm linux-2.6.x

*2:同じくatmark-distのディレクトリで ln -sv ../linux-2.6.23 linux-2.6.x

*3:こちらでマージした環境ではブート時にpccardまわりでNULLアクセスが発生してkernel panicになりました。make menuconfigの"General setup--->Choose SLAB allocator"でSLOBを選択することでpanicを回避することが出来るようです。

*4:原因は不明。EABIに対応できていないものがある模様。

*5:Device Drivers--->Misc devices--->Low Memory Killer ・・・なくても動きますが、パフォーマンスが恐ろしく低下します。

*6:Device Drivers--->Character devices--->OpenBinder IPC Driver




記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...