| 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パッケージで可視化しました。以下に添付します。