Product Info

Hardware Summary

ProcessorFreescale i.MX31
RAMDDR SDRAM 128MB
NOR Flash32MB
SSDIntel ZU-130 1GB
SD/MMC2 slots
USBHigh Speed x 2, Full Speed x 1
Key Pad24 keys
LCD5.7 inch VGA with touch panel
W-SIMsupported

Software Summary

Linux Kernel2.6.26
development environmentATDE, Atmark Dist

Price

128,100 JPY

Availability

Now on sale!

Armadillo-500 FXの製品情報と開発環境、マニュアルの公開

Google Android

Armadillo-500 FXでAndroidを使ってみる

Armadillo-500 FXでAndroidを使ってみる

Linuxカーネル、Atmark Distユーザランド、Androidユーザランド、および導入手順が公開されてます。

Emulator Skins

Start Android emulator with "-skin A500FX" option after extracting the following ZIP file into (SDK Location:)/tools/lib/images/skins directory.

Screenshots

screenshot.png

initlogo.rle

起動時にロゴを表示(Jingによる画面キャプチャ)

/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

boot animation

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);

Bootchart

Androidのinitプログラムのソースを見てみると、bootchartの機能が含まれていました。早速試してみました。詳細は、system/core/init/README.BOOTCHART に書いてあります。

bootchart対応のinitをコンパイルする。

これは、環境変数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 として置きます。

bootchart機能を有効にして起動して、ログを採取する。

たとえば以下の操作で、先頭に"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パッケージで可視化しました。以下に添付します。

bootchart.png

bootchartの関連情報

Related Information

  • Some geeks have already succeeded running Google Android on this platform.

添付ファイル: filebootchart.png 2333件 [詳細] filescreenshot.png 2366件 [詳細] fileA500FX.zip 2625件 [詳細]