スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

組み込みAndroidポータブル #9

第9章 Androidポーティングに挑戦(2)

ビーグル君とお散歩を目指すプロジェクト。
前回からの続きで、Android 2.3(GingerBread)をビルドしてBeagleBoardxMに入れます。
120507_Beagleboard.png


全体の流れ
前回(1)、(2)が終わりました。今回は(3)から最後までダーっとやります。
簡単に言うと、"images"というフォルダを作り、ビルドしたモノをそこにどんどん放り込みます。
最後にシェルスクリプトを使ってmircroSDに書き込む という流れです。

(1)事前準備
(2)Source CodeとDevKitをダウンロード

(3)作業準備
(4)MLOを作成
(5)u-bootを作成
(6)KernelをビルドしてuImageを作成
(7)Andoridをビルドしてrootfsを作成
(8)boot script作成と解像度変更
(9)microSDカードへ書き込み
(10)起動


(3)作業準備
"myGingerBread"というフォルダを作成します。
その下に"images"というフォルダを作成します。

mkdir myGingerBread
cd myGingerBread
mkdir images


前回ダウンロードした2つのファイルをドラッグ&ドロップでmyGingerBreadへ移動します。

マウスで作業


以下のコマンドを実行して2つとも解凍

tar zxvf TI_Android_GingerBread_2_3_4Sources.tar.gz
tar zxvf TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz


"TI_Android_GingerBread_2_3_4Sources"へ移動し
readmeというファイルに従ってコマンドを実行

cd TI_Android_GingerBread_2_3_4Sources
./.repo/repo/repo sync --local-only


以下コマンドを実行しPATHを通す

export PATH=~/myGingerBread/TI_Android_GingerBread_2_3_4Sources/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

これで、ビルド作業に入れます。


(4)MLOを作成
"x-loader"フォルダへ移動

cd x-loader


クロスコンパイルを実行

make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3beagle_config
make CROSS_COMPILE=arm-eabi-


"x-loader.bin"というファイルができるので、DevKitの中にある"signGP"というプログラムを使ってMLOを作成する

../../TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/signGP/signGP ./x-load.bin


"x-load.bin.ift"というファイルができるので、"images"フォルダへ移動し、名前を"MLO"に変更する

mv x-load.bin.ift ../../images/MLO



(5)u-bootを作成
"u-boot"フォルダへ移動しビルド

cd ../u-boot/
make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3_beagle_config
make CROSS_COMPILE=arm-eabi-


"u-boot.bin"というファイルができたので、"images"フォルダへコピー

cp u-boot.bin ../../images/


母艦PC直下の"/usr/bin"フォルダに、"tools"フォルダの下にある"mkimage"をコピー
これはkernel imageを発生させるのに必要

cd tools
cp mkimage ~/bin



(6)KernelをビルドしてuImageを作成
"kernel"フォルダへ移動

cd ../../kernel


ビルドする。 このとき最後の "-5"というオプションは母艦PCのCPUコア数 + 1 の値にすると速く実行できる。
CPUコアの調べ方は、"cat /proc/cpuinfo"などで調べられる。

make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig
make ARCH=arm CROSS_COMPILE=arm-eabi- -j5 uImage


"arch/arm/boot"の下に"uImage"ファイルが出来たので、"images"フォルダへコピー

cd arch/arm/boot
cp uImage ../../../../../images/
cd ../../../../



(7)Andoridをビルドしてrootfsを作成
Android File Systemをビルドします。 先ほどと同様にCPUコア数+1 を-jオプションで追加
ちなみに1時間弱放置していたら、いつの間にか出来ていました。

make TARGET_PRODUCT=beagleboard OMAPES=5.x -j5


Android File Systemが作られた位置へ移動

cd out/target/product/beagleboard


"android_rootfs"というフォルダを作成して、その中に"root"フォルダの中身 と "system"フォルダ をコピー

mkdir android_rootfs
cp -r root/* android_rootfs
cp -r system android_rootfs


圧縮して"rootfs.tar.bz2"というファイル名にした後、"images"フォルダへコピー

sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
cp rootfs.tar.bz2 ../../../../../images/



(8)boot script作成と解像度変更
DevKitへ移動し、"mkbootscr"を実行

cd ~/BeagleBoard/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr/
./mkbootscr


"boot.script"というファイルが出来るので、編集する

sudo emacs boot.script


以下を入力して保存。 ここで解像度を480x272にしています。

mmc init
fatload mmc 1 80200000 uImage
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init omap_vout.vid1_static_vrfb_alloc=y omapfb.mode=dvi:480x272MR-24 omapdss.def_disp="dvi" vram=8M omapfb.vram=0:8M'
bootm 0x80200000


"boot.scr"を作成して、"images"フォルダへコピー

sudo ./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n BeagleBoard -d boot.script boot.scr
cp boot.scr ../../../images/



(9)microSDカードへ書き込み
シェルスクリプトを"images"フォルダへコピー

cd ../mk-mmc
cp mkmmc-android.sh ../../../images/


さあ、これで役者はそろいました!
書き込む microSDカードを母艦PCへ繋ぎます。
ドライブの場所を確認してください。
システム→Administration→ディスク・ユーティリティ でわかります。
もしくは、dfコマンドでも確認できます。
エレバカの母艦の場合は "/dev/sdc" ということが分かりました

cd ../../../images
LANG=C sudo ./mkmmc-android.sh /dev/sdc MLO u-boot.bin uImage boot.scr rootfs.tar.bz2

書き込みが終了したら、microSDカードをBeagleBoardxMへ挿入!


(10)起動
電源オン!
120507_android1.jpg


とりゃー!
120507_android2.jpg
おおー!
ドロイド先生登場! しかも2体もいらっしゃる! 恐れ入ります!

120507_android3.jpg
ロゴ出ました!


120507_android4.jpg
ログイン画面!

120507_android5.jpg
マウスでログイン!

120507_android6.jpg
ランチャー画面!

ちょっと、画像が乱れている?
そんな小さな事は気にしてはいけない!
とりあえず成功だ! 今夜は良い夢が見られそうだ

続く



参考にしたサイト
知らんがな  ← こちらのサイトを激しく参考にさせていただきました!
TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide


追伸
以前に参考書を見ながらやってましたが、数時間要するダウンロードに何度も失敗し、上手く行きませんでした。
根幹となる部分は変わりませんが、ダウンロード先のURLなどは、変更が激しいので最新の情報をキャッチする必要があります。
ここに書いた情報もいつの日か古くなってしまうときが来ると思いますが、参考にされる方は めげずに頑張ってください。必ず解決策があります。


スポンサーサイト

comment

管理者にだけ表示を許可する

03 | 2017/04 | 05
Su Mo Tu We Th Fr Sa
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
プロフィール

エレクトリックバカ

Author:エレクトリックバカ

ポケコンでプログラミングに目覚め、PICマイコンで電子工作に希望を抱き、来たるべきUGDの時代を夢見て眠る。
そんな うだつが上がらないサラリーメン。
先生、電子工作はおやつに入りますか?




Electric Baka

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。