Processor | Freescale i.MX31 |
RAM | DDR SDRAM 128MB |
NOR Flash | 32MB |
SSD | Intel ZU-130 1GB |
SD/MMC | 2 slots |
USB | High Speed x 2, Full Speed x 1 |
Key Pad | 24 keys |
LCD | 5.7 inch VGA with touch panel |
W-SIM | supported |
Linux Kernel | 2.6.26 |
development environment | ATDE, Atmark Dist |
128,100 JPY
Now on sale!
Armadillo-500 FXの製品情報と開発環境、マニュアルの公開
Armadillo-500 FXでAndroidを使ってみる
Linuxカーネル、Atmark Distユーザランド、Androidユーザランド、および導入手順が公開されてます。
Start Android emulator with "-skin A500FX" option after extracting the following ZIP file into (SDK Location:)/tools/lib/images/skins directory.
/initlogo.rleを置いておけば表示されます。 RGB888のRAW形式の画像を用意すれば、Androidのソースの build/tools/rgb2565 にあるツールを以下のように使えば作ることができます。RGB888のRAW形式の画像は、GIMPなどで生成できます。
$ rgb2565 -rle < RGB888のRAWデータ > initlogo.rle
なお、rgb2565は、以下の手順でmakeできます。
$ cd (repoで構築したTOPディレクトリ) $ . build/envsetup.sh $ cd build/tools/rgb2565 $ mm
Androidは、意外とHVGA Portraitの画面サイズを前提とした処理があるのですが、そのうちの1つにboot animationがあります。たとえばVGAサイズの画面サイズを持つ機器で動かすと、Android君の場所がずれます。このボードでもずれてしまうので、取り急ぎ直してみました。以下、パッチです。直したファイルは、frameworks/base/libs/surfaceflinger/BootAnimation.cpp になります。バリバリにVGA Landscapeに依存しています:-)
diff --git a/libs/surfaceflinger/BootAnimation.cpp b/libs/surfaceflinger/BootAnimation.cpp index e9e34c3..ab60c1a 100644 --- a/libs/surfaceflinger/BootAnimation.cpp +++ b/libs/surfaceflinger/BootAnimation.cpp @@ -223,19 +223,19 @@ bool BootAnimation::android() float fade = i / float(steps); glColor4f(1, 1, 1, fade*fade); glClear(GL_COLOR_BUFFER_BIT); - glDrawTexiOES(0, 0, 0, mAndroid[0].w, mAndroid[0].h); + glDrawTexiOES(160, 0, 0, mAndroid[0].w, mAndroid[0].h); eglSwapBuffers(mDisplay, mSurface); } // draw last frame glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glDisable(GL_BLEND); - glDrawTexiOES(0, 0, 0, mAndroid[0].w, mAndroid[0].h); + glDrawTexiOES(160, 0, 0, mAndroid[0].w, mAndroid[0].h); eglSwapBuffers(mDisplay, mSurface); // update rect for the robot - const int x = mWidth - mAndroid[1].w - 33; + const int x = mWidth - mAndroid[1].w - 33 - 160; const int y = (mHeight - mAndroid[1].h)/2 - 1; const Rect updateRect(x, y, x+mAndroid[1].w, y+mAndroid[1].h);
Androidのinitプログラムのソースを見てみると、bootchartの機能が含まれていました。早速試してみました。詳細は、system/core/init/README.BOOTCHART に書いてあります。
これは、環境変数INIT_BOOTCHARTを'true'にしてbuildするだけです。以下、手順です。
$ cd (repoで構築したTOPディレクトリ) $ . build/envsetup.sh $ cd system/core/init/ $ export INIT_BOOTCHART=true $ mm
(repoで構築したTOPディレクトリ)/out/target/product/generic/root/init にプログラムが生成されるので、これをAndroidのrootfsで /init として置きます。
たとえば以下の操作で、先頭に"1"という文字列を含む /data/bootchart というファイルを生成します。
adb shell 'echo 1 > /data/bootchart'
再起動すると、/tmp/bootchartに、ログが生成されます。
defaultでは、起動から約2分後にログ採取は止まります。そのあと、ホストPCから専用スクリプト(system/core/init/grab-bootchart.sh) でログを吸い上げます。 bootchart.tgzというファイルが生成されるので、例えばbootchartのサイトで画像などに変換します。 今回は、bootchartのサイトでrenderingしようとするとtimeoutしてしまうので、Debian/Lemmyのbootchart-viewパッケージで可視化しました。以下に添付します。