2010/12/31
Android NDK r5 と armeabi, 浮動小数命令の種類
Android 端末 ZEN Touch2 は低価格ながら i.MX51 を搭載しており
CPU core は ARM Cortex-A8 であることがわかりました。
ARMv7 アーキテクチャなので ARM11 (ARMv6) 系のスマートフォンより高速に
動作すると考えられます。
・Creative ZEN Touch 2
ところが ZENTouch2 は armeabi-v7a で build した NDK のアプリケーションを
インストールすることができませんでした。
armeabi なら OpenGL ES 2.0 を使っていても実行出来ることが分かっています。
●NDK とアーキテクチャ
現在の Android NDK r5 は 2つの ARM アーキテクチャに対応しています。
armeabi (ARMv5TE) と比べた場合 armeabi-v7a (ARMv7) のメリットは下記の通り。
・1. VFP (fpu) が使用可能。ハードウエアによる浮動小数演算
・2. Thumb-2 命令セット対応
・3. NEON (SIMD) 命令を利用可能。
・4. ARMv6 以降の新しい命令が使用可能。
4. でいえば、例えばスレッド間の同期に使う ldrex, strex 命令があります。
Compare And Swap 等のアトミック命令を作成できるので、これを使って
様々な同期オブジェクトを作ります。
Thumb-2 は Thumb 同様コード容量を抑えつつも、浮動小数演算など ARM (32bit)
相当の命令が利用出来るよう拡張されています。
特にメリットあるのは VFP/NEON かもしれません。
Android でも VFP 前提でネイティブなコードを書くことが可能となります。
●NDK と ARMv7 の浮動小数演算
NDK では armeabi-v7a (ARMv7) の場合少なくとも VFPv3-D16 対応であると
みなしています。
VFPv3 には 2つのバリエーションがあります。
・VFPv3-D16
・VFPv3-D32
VFPv3 は 32個の単精度浮動小数レジスタを持っています。
・単精度 32bit レジスタ s0~s31
・倍精度 64bit レジスタ d0~d15
↑倍精度レジスタと単精度レジスタは上記のように共有されます。
倍精度レジスタは 16個ですがレジスタフィールドは 5bit あるため
命令上は倍精度レジスタを 2倍に増やすことが可能です。
↑このように倍精度レジスタを 2倍に増やしたのが VFPv3-D32 となります。
NEON 命令を実装している場合 128bit の SIMD レジスタが 16個あります。
レジスタは VFP と共有されるため、NEON 命令が使える CPU では自然に
VFPv3-D32 相当となります。
よって Android NDK の場合は armeabi-v7a 選択時は下記の 2種類存在して
いることになります。
(1) VFP のみの場合は VFPv3-D16
(2) NEON 対応時の VFP は VFPv3-D32
実際に調べた結果は下記のとおり
(1) VFP のみ (VFPv3-D16)
・Tegra2 Cortex-A9 MPCore
(2) VFP+NEON (VFPv3-D32)
・Cortex-A8 各種
・Scorpion (Snapdragon)
●armeabi まとめ
armeabi と armeabi-v7a はバイナリを分けることが可能です。
両方のバイナリを含んでいる実行ファイルは fat binary と呼ばれているようです。
ARMv7 時に NEON 命令対応かどうかの判定は x86 の SSE のように実行時に行います。
●abi の指定方法
NDK を使ったコードは、プロジェクトの jni フォルダに配置します。
ここに c/cpp コードと Android.mk を置いて NDK 付属の ndk-build コマンドを
実行します。
例えば NDK 付属サンプルをビルドするなら下記のように実行します。
(Windows + cygwin 利用時に NDK を c:/sdk/android-ndk-r5 に展開したと仮定)
armeabi-v7a を指定するには下記のようにします。
jni フォルダに Application.mk を作成し、下記の 1行を書いておけば
無指定でも armeabi-v7a になります。
下記のように記述すれば両対応の fat binary になります。
NEON 対応で build するには Android.mk に "LOCAL_ARM_NEON := true" を加えます。
Windows 上の cygwin 経由だと make が遅いので、自分で build system を
構築するのもありかもしれません。
●互換性
ARMv7 アーキテクチャの端末でも ARMv5TE の armeabi のバイナリを実行できます。
上位互換性が保たれています。
1. もし armeabi-v7a の lib があればそれを使う。
2. なければ armeabi の lib を読み込む。
ARM11 のように ARMv6 アーキテクチャの場合は常に armeabi (ARMv5TE) が
選択されます。残念ながら ARMv6 の命令や機能は利用できません。
例えば ARM11 の CPU Core で VFP を搭載していたとしても VFP 命令を
活用できないことになります。
同じ ARM11 で比べた場合、c/cpp コード移植時は VFP が使える iOS の方が
高速に動作する可能性があります。
ただしこれはあくまで Android の NDK を使ったアプリケーションの話です。
カーネルや Java コードが ARMv6/VFP の機能を活用していないわけではありません。
●CPU Features
NDK には ARMv7 向けに NEON 対応などの CPU Feature を判定するコードが
付属しています。
ソースを見ると、単に /proc/cpuinfo を読み出して Features の行を見ているだけ
であることがわかります。
"vfp" や "neon" といった文字列そのもので判断しています。
●ZEN Touch2
ZEN Touch2 は Cortex-A8 搭載ですが cpuinfo の Features に "vfp" は
あるものの "neon" が含まれていません。
同じ i.MX51 を搭載している NetWalker も全く同様で "neon" がありませんが
NEON 命令をコンパイルすると実行することが出来ます。
(過去のエントリ参照)
よって ZEN Touch 2 も NEON 命令自体には対応していると考えられます。
Features に "neon" が含まれていないのは i.MX51 の何らかの事情によるもの
でしょうか。
また ZENTouch2 で armeabi-v7a のバイナリを install 出来ない理由も
分かっていません。
関連エントリ
・Android ZEN Touch 2 の CPU/GPU その2
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Tegra2 Cortex-A9 と浮動小数演算
・Snapdragon と浮動小数演算速度
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・NetWalker PC-Z1 Cortex-A8 (ARM) 浮動小数演算の実行速度
CPU core は ARM Cortex-A8 であることがわかりました。
ARMv7 アーキテクチャなので ARM11 (ARMv6) 系のスマートフォンより高速に
動作すると考えられます。
・Creative ZEN Touch 2
ところが ZENTouch2 は armeabi-v7a で build した NDK のアプリケーションを
インストールすることができませんでした。
armeabi なら OpenGL ES 2.0 を使っていても実行出来ることが分かっています。
●NDK とアーキテクチャ
現在の Android NDK r5 は 2つの ARM アーキテクチャに対応しています。
・armeabi ARMv5TE ・armeabi-v7a ARMv7
armeabi (ARMv5TE) と比べた場合 armeabi-v7a (ARMv7) のメリットは下記の通り。
・1. VFP (fpu) が使用可能。ハードウエアによる浮動小数演算
・2. Thumb-2 命令セット対応
・3. NEON (SIMD) 命令を利用可能。
・4. ARMv6 以降の新しい命令が使用可能。
4. でいえば、例えばスレッド間の同期に使う ldrex, strex 命令があります。
Compare And Swap 等のアトミック命令を作成できるので、これを使って
様々な同期オブジェクトを作ります。
Thumb-2 は Thumb 同様コード容量を抑えつつも、浮動小数演算など ARM (32bit)
相当の命令が利用出来るよう拡張されています。
特にメリットあるのは VFP/NEON かもしれません。
Android でも VFP 前提でネイティブなコードを書くことが可能となります。
●NDK と ARMv7 の浮動小数演算
NDK では armeabi-v7a (ARMv7) の場合少なくとも VFPv3-D16 対応であると
みなしています。
VFPv3 には 2つのバリエーションがあります。
・VFPv3-D16
・VFPv3-D32
VFPv3 は 32個の単精度浮動小数レジスタを持っています。
・単精度 32bit レジスタ s0~s31
・倍精度 64bit レジスタ d0~d15
+---------+---------+---------+- -+---------+ | d0 | d1 | d2 | | d15 | +----+----+----+----+----+----+ ~ +----+----+ | s0 | s1 | s2 | s3 | s4 | s5 | | s30| s31| +----+----+----+----+----+----+- -+----+----+
↑倍精度レジスタと単精度レジスタは上記のように共有されます。
倍精度レジスタは 16個ですがレジスタフィールドは 5bit あるため
命令上は倍精度レジスタを 2倍に増やすことが可能です。
+---------+---------+- -+---------+- -+---------+---------+ | d0 | d1 | | d15 | | d30 | d31 | +----+----+----+----+ ~ +----+----+ ~ -+---------+---------+ | s0 | s1 | s2 | s3 | | s30| s31| +----+----+----+----+- -+----+----+
↑このように倍精度レジスタを 2倍に増やしたのが VFPv3-D32 となります。
NEON 命令を実装している場合 128bit の SIMD レジスタが 16個あります。
レジスタは VFP と共有されるため、NEON 命令が使える CPU では自然に
VFPv3-D32 相当となります。
+-------------------+- -+-------------------+- -+-------------------+ | q0 | | q7 | | q15 | +---------+---------+ +---------+---------+ +---------+---------+ | d0 | d1 | ~ | d14 | d15 | ~ | d30 | d31 | +----+----+----+----+ +----+----+----+----+ -+---------+---------+ | s0 | s1 | s2 | s3 | | s28| s29| s30| s31| +----+----+----+----+- -+----+----+----+----+
よって Android NDK の場合は armeabi-v7a 選択時は下記の 2種類存在して
いることになります。
(1) VFP のみの場合は VFPv3-D16
(2) NEON 対応時の VFP は VFPv3-D32
実際に調べた結果は下記のとおり
(1) VFP のみ (VFPv3-D16)
・Tegra2 Cortex-A9 MPCore
(2) VFP+NEON (VFPv3-D32)
・Cortex-A8 各種
・Scorpion (Snapdragon)
●armeabi まとめ
abi arch 浮動小数 SIMD -------------------------------------------------- armeabi ARMv5TE なし なし armeabi-v7a ARMv7 VFPv3-D16 なし armeabi-v7a ARMv7 VFPv3-D32 NEON
armeabi と armeabi-v7a はバイナリを分けることが可能です。
両方のバイナリを含んでいる実行ファイルは fat binary と呼ばれているようです。
ARMv7 時に NEON 命令対応かどうかの判定は x86 の SSE のように実行時に行います。
●abi の指定方法
NDK を使ったコードは、プロジェクトの jni フォルダに配置します。
ここに c/cpp コードと Android.mk を置いて NDK 付属の ndk-build コマンドを
実行します。
例えば NDK 付属サンプルをビルドするなら下記のように実行します。
(Windows + cygwin 利用時に NDK を c:/sdk/android-ndk-r5 に展開したと仮定)
$ cd /cygdrive/c/sdk/android-ndk-r5 $ cd samples/hello-gl2 $ ../../ndk-build
armeabi-v7a を指定するには下記のようにします。
$ ../../ndk-build TARGET_ARCH_ABI=armeabi-v7a
jni フォルダに Application.mk を作成し、下記の 1行を書いておけば
無指定でも armeabi-v7a になります。
# Application.mk APP_ABI := armeabi-v7a
下記のように記述すれば両対応の fat binary になります。
# Application.mk APP_ABI := armeabi armeabi-v7a
NEON 対応で build するには Android.mk に "LOCAL_ARM_NEON := true" を加えます。
Windows 上の cygwin 経由だと make が遅いので、自分で build system を
構築するのもありかもしれません。
●互換性
ARMv7 アーキテクチャの端末でも ARMv5TE の armeabi のバイナリを実行できます。
上位互換性が保たれています。
1. もし armeabi-v7a の lib があればそれを使う。
2. なければ armeabi の lib を読み込む。
ARM11 のように ARMv6 アーキテクチャの場合は常に armeabi (ARMv5TE) が
選択されます。残念ながら ARMv6 の命令や機能は利用できません。
例えば ARM11 の CPU Core で VFP を搭載していたとしても VFP 命令を
活用できないことになります。
同じ ARM11 で比べた場合、c/cpp コード移植時は VFP が使える iOS の方が
高速に動作する可能性があります。
ただしこれはあくまで Android の NDK を使ったアプリケーションの話です。
カーネルや Java コードが ARMv6/VFP の機能を活用していないわけではありません。
●CPU Features
NDK には ARMv7 向けに NEON 対応などの CPU Feature を判定するコードが
付属しています。
ソースを見ると、単に /proc/cpuinfo を読み出して Features の行を見ているだけ
であることがわかります。
"vfp" や "neon" といった文字列そのもので判断しています。
●ZEN Touch2
ZEN Touch2 は Cortex-A8 搭載ですが cpuinfo の Features に "vfp" は
あるものの "neon" が含まれていません。
同じ i.MX51 を搭載している NetWalker も全く同様で "neon" がありませんが
NEON 命令をコンパイルすると実行することが出来ます。
(過去のエントリ参照)
よって ZEN Touch 2 も NEON 命令自体には対応していると考えられます。
Features に "neon" が含まれていないのは i.MX51 の何らかの事情によるもの
でしょうか。
また ZENTouch2 で armeabi-v7a のバイナリを install 出来ない理由も
分かっていません。
関連エントリ
・Android ZEN Touch 2 の CPU/GPU その2
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Tegra2 Cortex-A9 と浮動小数演算
・Snapdragon と浮動小数演算速度
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・NetWalker PC-Z1 Cortex-A8 (ARM) 浮動小数演算の実行速度
2010/12/29
Android ZEN Touch 2 の CPU/GPU その2
以前 Netwalker に似ていると書きましたが本当に Freescale i.MX51 でした。
CPU: Cortex-A8 800MHz
GPU: AMD Z430 166MHz
RAM: 256MB?
RAM 容量は "192MB total" と書かれてますが、同じ i.MX51 の Netwalker の
場合は VRAM を除いた値となっており、かつ meminfo と差が少ないことから
他に VRAM 分確保されている可能性があります。
確証はありません。
周波数はおそらくこの辺。アイドル時 200MHz, 負荷をかけると 800MHz。
関連エントリ
・Android ポータブルプレイヤー ZEN Touch 2 も使ってみた
・Creative ZiiO 7 使ってみた
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Android LuvPad AD100 を1日持ち歩いた
CPU: Cortex-A8 800MHz
GPU: AMD Z430 166MHz
RAM: 256MB?
RAM 容量は "192MB total" と書かれてますが、同じ i.MX51 の Netwalker の
場合は VRAM を除いた値となっており、かつ meminfo と差が少ないことから
他に VRAM 分確保されている可能性があります。
確証はありません。
Linux version 2.6.28 (kernel@localhost.localdomain) (gcc version 4.1.2) #35 CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c5387f CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: ZEN Touch 2 Memory policy: ECC disabled, Data cache writeback On node 0 totalpages: 49152 free_area_init_node: node 0, pgdat c04c7190, node_mem_map c0556000 DMA zone: 96 pages used for memmap DMA zone: 0 pages reserved DMA zone: 12192 pages, LIFO batch:1 Normal zone: 288 pages used for memmap Normal zone: 36576 pages, LIFO batch:7 Movable zone: 0 pages used for memmap Built 1 zonelists in Zone order, mobility grouping on. Total pages: 48768 Kernel command line: console=ttymxc0,115200 init=/init androidboot.console=ttymxc0 MXC IRQ initialized PID hash table entries: 1024 (order: 10, 4096 bytes) Console: colour dummy device 80x30 Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 192MB = 192MB total Memory: 189044KB available (4416K code, 757K data, 248K init) SLUB: Genslabs=12, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Calibrating delay loop... 799.53 BogoMIPS (lpj=3997696) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 688 bytes regulator: core version 0.5 NET: Registered protocol family 16 CPU is i.MX51 Revision 3.0 MXC GPIO hardware Camera module power off IRAM READY mxc_pwm_device registered GGC not detected Using SDMA I.API MXC DMA API initialized ~
*meminfo MemTotal: 189648 kB MemFree: 44072 kB Buffers: 5488 kB Cached: 60248 kB SwapCached: 0 kB Active: 39536 kB Inactive: 75316 kB Active(anon): 25152 kB Inactive(anon): 41320 kB Active(file): 14384 kB Inactive(file): 33996 kB Unevictable: 360 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 49488 kB Mapped: 16036 kB Slab: 5120 kB SReclaimable: 2096 kB SUnreclaim: 3024 kB PageTables: 4380 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 94824 kB Committed_AS: 1147952 kB VmallocTotal: 647168 kB VmallocUsed: 81060 kB VmallocChunk: 540668 kB
*clocks gpu3d_clk-0 axi_a_clk-0 ___TH_ 1 166250000 (166MHz) ~ cpu_clk-0 pll1_sw_clk-0 ______ 1 800000000 (800MHz)
周波数はおそらくこの辺。アイドル時 200MHz, 負荷をかけると 800MHz。
関連エントリ
・Android ポータブルプレイヤー ZEN Touch 2 も使ってみた
・Creative ZiiO 7 使ってみた
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Android LuvPad AD100 を1日持ち歩いた
2010/12/29
Android ポータブルプレイヤー ZEN Touch 2 も使ってみた
Creative ZEN Touch2 はありそうでなかった Android 端末です。
ポータブル Media Player ですが Android OS 2.1 を採用しており、
ネット接続はもちろんアプリケーションの追加もできます。
ちょうど iPod touch の Android 版のようなもの。
・Creative ZEN Touch2
・Creative ZEN Touch2 with GPS
ZEN Touch2 の店頭モデル (8GB) を ZiiO7 と一緒に持ち歩いて使ってみました。
●買うまで最も気になっていたところ
購入前に一番心配&気になっていたのはパフォーマンス面です。
web でもスペックが一切明らかになっておらず未知の状態でした。
ところが実際に店頭で目にしたときは、むしろサイズの方に目が行きます。
・3.2インチと画面が小さいのに本体がスマートフォンサイズ
・厚めのプラスチックで覆われた本体に、液晶面が深い位置に埋まってる
そしてふと冷静に分析します。
すぐ隣の売り場にあった ipod touch と比べたら、サイズも薄さも軽さも
画面サイズも画面解像度もプロセッサパワーもアプリ数もマルチタッチも
センサーもおそらく勝てません。
Creative ZEN Touch2 の良いところは
・高音質な Bluetooth 再生 Pure Wireless Entertainment
・ポイント還元10%の19800円という価格
・背面カメラの画素数
・microSD カードで容量を増やせる
さらに直販の GPS モデルだと
・3G機能なしで買える珍しい GPS/Compass 搭載機
・FMラジオ
も追加。
やっぱりすでに Snapdragon + RAM 512MB クラスの Android スマートフォンを
持っているなら、位置付けとしてはあまり必要性を感じません。
●店頭で触ってわかったこと
逆に店頭で実際に触ってみてわかったのは、予想に反してレスポンスが良かったこと。
意外にきびきび動きます。
内蔵アプリを複数起動しても極端に重くなったりせずちゃんと使えます。
パフォーマンス面の心配はなさそうです。
抵抗膜式のタッチパネルも店頭で触った限りはきちんと反応していました。
大いに悩んだけど、開発機として GPU の詳細が知りたかったので購入に踏み切り
ました。
●CPU/GPU/RAM 容量
詳細はこちら
・Creative ZEN Touch 2 と OpenGL ES 2.0
i.MX51 : Cortex-A8 800MHz, AMD Z430
CPU は予想より強力で GPU も必要十分です。
RAM 容量は 256MB と少ないけれど良く動いています。
・画面サイズが 480x320 と小さい
・電話機能もないし余計なアプリが一切動いていない
ことが原因としてあげられます。
特に余計なアプリが全く入っていないのは非常に良いです。
内蔵機能(アイコン)一覧 : ZiiO7 との対応付け比較
・カレンダーすらない割り切り
・ライブ壁紙もない、使えない
・Home 画面も Android の標準状態
キーボードも一切ない素の状態が非常に気持ちいいです。
ライブ壁紙もなく、パフォーマンスを食う余計な機能を全部取り払った
かのような最小構成が気に入りました。
●タッチパネル
タッチパネルは ZiiO 同様抵抗膜式です。
触れただけでは反応せずわずかに押しこむ力加減が必要です。
指以外でもスタイラスペンなど尖ったもので操作できます。
ZiiO だとほぼ問題なく扱えるのですが ZEN Touch2 は結構ミスが出ます。
画面サイズのが小さいせいかもしれません。
反応が固めの印象で、きちんと力を入れないと反応しないことがあります。
特に設定画面のようなリストのスクロールが難しく、油断するとスライドの
つもりが選択されてしまいます。
一定の圧力を保ったまま移動できずパネルから浮いてしまう瞬間が
あるのでしょう。
もうしばらく使い込みと練習が必要だと感じました。
●Android ボタン
左(下)から [検索] [BACK] [MENU] と並びます。
ZiiO 同様に抵抗膜式タッチパネルの一部です。
[HOME] はさらに一段下(右)にあり、HOME だけ押しこんで反応する物理キー
となっています。
そもそもボタン並びが ZiiO と違います。
バックライトや振動フィードバックはありません。
●リセットボタン
microSD カードスロットのフタを開けると、根元の方にリセット穴があります。
電源ボタンの長押しでは強制切断できないので、トラブルがあったときはこの
リセットボタンを使います。
原因不明ですが、購入直後に数分放置しておいたら、何も操作を受け付けず
固まっていたことが 2度ありました。
出先で細いものが見つからず、リセット出来ずに困ったことがあります。
今ではリセットピンを携帯してます。
●液晶
ZiiO7 より発色が良く見えます。
デザインは横型なのに、液晶は縦持ちで見た時が自然な視野角になります。
HDMI 出力はありませんが、メニューを見ると Video 出力がありそうです。
●アプリ
さすが Android 端末で、徐々にアプリを入れてカスタマイズしていくと
だんだん好みの環境になってきます。
Android マーケットが無いので、LuvPad や ZiiO と同じように
アプリケーションを自分で準備してインストールします。
ZiiO と違い ZiiStore もありません。
やはりアプリのインストールや更新は少々手間がかかるかもしれません。
●最後に
タッチパネルの操作は若干慣れが必要です。
マーケットの利便性を考えると純粋な Android 入門としてはお勧めできません。
ミュージックプレイヤーとしては少々大きめ。
メディアプレイヤーとしては他にも選択肢があります。
ここに Android アプリが動くという価値がどの程度プラスになるかが判断の
境目でしょうか。
個人的には最小構成な点は気に入りました。
ごてごてとカスタマイズされた全部入りスマートフォンよりも良いです。
これで本体サイズがさらに小さいなど、持つことにメリットがあれば面白い
と思います。自分の場合買うために若干勇気が必要でした。
マルチタッチはないけど、本体の入手しやすさを考えると開発機としても
良いかもしれません。
関連エントリ
・Creative ZiiO 7 使ってみた
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Android LuvPad AD100 を1日持ち歩いた
ポータブル Media Player ですが Android OS 2.1 を採用しており、
ネット接続はもちろんアプリケーションの追加もできます。
ちょうど iPod touch の Android 版のようなもの。
・Creative ZEN Touch2
・Creative ZEN Touch2 with GPS
ZEN Touch2 の店頭モデル (8GB) を ZiiO7 と一緒に持ち歩いて使ってみました。
●買うまで最も気になっていたところ
購入前に一番心配&気になっていたのはパフォーマンス面です。
web でもスペックが一切明らかになっておらず未知の状態でした。
ところが実際に店頭で目にしたときは、むしろサイズの方に目が行きます。
・3.2インチと画面が小さいのに本体がスマートフォンサイズ
・厚めのプラスチックで覆われた本体に、液晶面が深い位置に埋まってる
そしてふと冷静に分析します。
ZEN Touch 2 : 120 x 60 x 13mm 122g 3.2inch 480x320 iPod touch 4 : 111 x 58.9 x 7.2mm 101g 3.5inch 960x640
すぐ隣の売り場にあった ipod touch と比べたら、サイズも薄さも軽さも
画面サイズも画面解像度もプロセッサパワーもアプリ数もマルチタッチも
センサーもおそらく勝てません。
Creative ZEN Touch2 の良いところは
・高音質な Bluetooth 再生 Pure Wireless Entertainment
・ポイント還元10%の19800円という価格
・背面カメラの画素数
・microSD カードで容量を増やせる
さらに直販の GPS モデルだと
・3G機能なしで買える珍しい GPS/Compass 搭載機
・FMラジオ
も追加。
やっぱりすでに Snapdragon + RAM 512MB クラスの Android スマートフォンを
持っているなら、位置付けとしてはあまり必要性を感じません。
●店頭で触ってわかったこと
逆に店頭で実際に触ってみてわかったのは、予想に反してレスポンスが良かったこと。
意外にきびきび動きます。
内蔵アプリを複数起動しても極端に重くなったりせずちゃんと使えます。
パフォーマンス面の心配はなさそうです。
抵抗膜式のタッチパネルも店頭で触った限りはきちんと反応していました。
大いに悩んだけど、開発機として GPU の詳細が知りたかったので購入に踏み切り
ました。
●CPU/GPU/RAM 容量
詳細はこちら
・Creative ZEN Touch 2 と OpenGL ES 2.0
i.MX51 : Cortex-A8 800MHz, AMD Z430
CPU は予想より強力で GPU も必要十分です。
RAM 容量は 256MB と少ないけれど良く動いています。
・画面サイズが 480x320 と小さい
・電話機能もないし余計なアプリが一切動いていない
ことが原因としてあげられます。
特に余計なアプリが全く入っていないのは非常に良いです。
内蔵機能(アイコン)一覧 : ZiiO7 との対応付け比較
ZEN Touch2 ZiiO 7inch --------------------------------------------------- Explorer ZiiExplorer PAA PAA Setup Info Setup Info ZiiO Space ZiiO Space アラーム 時計 カメラ カメラ ギャラリー ZiiPhoto/ZiiVideo ブラウザ ブラウザ メール メール ユーザーズガイド ユーザーズガイド 音楽 ZiiMusic 音声レコーダー ZiiMicrophone 設定 設定 電卓 電卓 ZiiAcademy Audible RSSリーダー ZiiStore カレンダー タスクマネージャー メモ帳 --------------------------------------------------- Android キーボード Android キーボード Google Pinyin Hanwang Handwriting IME ---------------------------------------------------
・カレンダーすらない割り切り
・ライブ壁紙もない、使えない
・Home 画面も Android の標準状態
キーボードも一切ない素の状態が非常に気持ちいいです。
ライブ壁紙もなく、パフォーマンスを食う余計な機能を全部取り払った
かのような最小構成が気に入りました。
●タッチパネル
タッチパネルは ZiiO 同様抵抗膜式です。
触れただけでは反応せずわずかに押しこむ力加減が必要です。
指以外でもスタイラスペンなど尖ったもので操作できます。
ZiiO だとほぼ問題なく扱えるのですが ZEN Touch2 は結構ミスが出ます。
画面サイズのが小さいせいかもしれません。
反応が固めの印象で、きちんと力を入れないと反応しないことがあります。
特に設定画面のようなリストのスクロールが難しく、油断するとスライドの
つもりが選択されてしまいます。
一定の圧力を保ったまま移動できずパネルから浮いてしまう瞬間が
あるのでしょう。
もうしばらく使い込みと練習が必要だと感じました。
●Android ボタン
左(下)から [検索] [BACK] [MENU] と並びます。
ZiiO 同様に抵抗膜式タッチパネルの一部です。
[HOME] はさらに一段下(右)にあり、HOME だけ押しこんで反応する物理キー
となっています。
そもそもボタン並びが ZiiO と違います。
バックライトや振動フィードバックはありません。
●リセットボタン
microSD カードスロットのフタを開けると、根元の方にリセット穴があります。
電源ボタンの長押しでは強制切断できないので、トラブルがあったときはこの
リセットボタンを使います。
原因不明ですが、購入直後に数分放置しておいたら、何も操作を受け付けず
固まっていたことが 2度ありました。
出先で細いものが見つからず、リセット出来ずに困ったことがあります。
今ではリセットピンを携帯してます。
●液晶
ZiiO7 より発色が良く見えます。
デザインは横型なのに、液晶は縦持ちで見た時が自然な視野角になります。
HDMI 出力はありませんが、メニューを見ると Video 出力がありそうです。
●アプリ
さすが Android 端末で、徐々にアプリを入れてカスタマイズしていくと
だんだん好みの環境になってきます。
Android マーケットが無いので、LuvPad や ZiiO と同じように
アプリケーションを自分で準備してインストールします。
ZiiO と違い ZiiStore もありません。
やはりアプリのインストールや更新は少々手間がかかるかもしれません。
●最後に
タッチパネルの操作は若干慣れが必要です。
マーケットの利便性を考えると純粋な Android 入門としてはお勧めできません。
ミュージックプレイヤーとしては少々大きめ。
メディアプレイヤーとしては他にも選択肢があります。
ここに Android アプリが動くという価値がどの程度プラスになるかが判断の
境目でしょうか。
個人的には最小構成な点は気に入りました。
ごてごてとカスタマイズされた全部入りスマートフォンよりも良いです。
これで本体サイズがさらに小さいなど、持つことにメリットがあれば面白い
と思います。自分の場合買うために若干勇気が必要でした。
マルチタッチはないけど、本体の入手しやすさを考えると開発機としても
良いかもしれません。
関連エントリ
・Creative ZiiO 7 使ってみた
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Android LuvPad AD100 を1日持ち歩いた
2010/12/28
Creative ZiiO 7 使ってみた
ZiiO7 を 1日使ってみました。
ZiiO は Creative の Tablet 型 Android 端末です。
・Creative ZiiO 7
●大きさ
Galaxy Tab のレビューによくある「ちょうどいい大きさ」に納得といった感じです。
・10インチほど重くない、片手で持って疲れない重さ
・スマートフォンより画面が大きい、解像度は低いが情報量が多くタッチしやすい
基本はタブレットですが、7インチサイズは持ちやすさと軽さのバランスが
とれた位置にあると感じました。
●タッチパネル
買った直後は失敗だったかと一瞬後悔したのがタッチパネルです。
店頭でも十分試したし、感圧型、抵抗膜式だと頭では分かっていたけど電源投入
直後の ID 登録画面ではまりました。
・開封直後のタッチパネルは食いつきが良く滑りが悪い
・タッチパネルのキャリブレーション前なのでタッチ位置がかなりずれていた
「設定 → サウンド&画面設定 → Touch screen calibration」で
キャリブレーションしたり、設定などを行っているうちに力の入れ具合が
分かってきます。
・ホーム画面の空きエリアなど、タッチボタンでないところは静電式みたいに
指の押し付けでスライド可能。軽くスライドしても反応。
・リスト画面など全面タッチ可能なボタン部分のスクロールは間違ってタッチになる。
爪を立て気味にして素早くスライドするとミスしづらい。
・ブラウザのリンクやソフトキーボードなど小さいボタンは爪で軽く押せるので
狭いエリアに対して確実に操作できる。
慣れると比較的スムーズに使えています。保護シートはなしです。
特にソフトキーボードとの相性は良いと感じました。
縦持ちで QWERTY キーボードが押しやすい大きさとなり、両手の親指の先端で
押すようにすればかっちり反応します。
LOOX U/G90 など、抵抗膜タイプでもマルチタッチ可能なパネルはありますが
残念ながら ZiiO はシングルタッチのみです。
●ボタン
Android ボタンは左から [検索] [HOME] [MENU] [戻る]。
液晶部と同じタッチパネルの一部です。
ここは未だに正確な操作できず、ミスして何度か押し直すことがあります。
設定で振動のフィードバックがありますので、ON にしていれば多少ましに
なるようです。ただ振動よりモーター音が気になるかも。
またバックライトがないので暗いところでは識別が困難です。
触ってわかるようなシールを貼るなど、改善のため工夫が必要かもしれません。
●電源ボタン
電源も少々押しづらいボタンです。
スリープからの復帰が遅いので、反応していないと思って何度も押してしまう
ことがあるからです。
一度カチッと押したら2~3呼吸ほど待つのが正解。
タイミングが分かるまでは何度も押してしまい、場合によってはデジタイザが
反応しなくなり強制シャットダウンしなければならないことがありました。
ZiiO7 は電源ボタン長押しで強制シャットダウンです。
(ZEN Touch2 は長押しシャットダウンが出来ず、microSD スロットの横の
リセット穴を使います。リセットピンの携帯が必須。)
LuvPad は何らかのボタンが押されてよく電源が入ってしまうことがあります。
ZiiO7 の電源は勝手に押されることがなく、他のボタンでもスリープから
復帰しないので大丈夫そうです。
●画面
やはり視野角が狭く、縦持ちだと若干左右の見え方の違いが気になります。
ただ比較的画面が小さいせいか、LuvPad よりはあらが目立ちません。
水平に置いても画面の回転が暴れることがなく HOME 画面も回転ロックできます。
解像度は 800x480 で決して高くなく発色も浅めです。
まだ試していませんが HDMI 出力が付いています。
ZEN Touch2 の方は HDMI でなく Video 出力があるようです。
●ソフトウエアなど
HOME 画面も独自で多数の Zii アプリが揃っています。
この点最小限のアプリしか含まれていない ZEN Touch2 とは大きく違います。
Android 端末として使うなら、最初にある程度ソフトウエアの導入が必要でしょう。
ZiiO Space は Simeji の導入や AndroApp, Andronavi へ導いてくれますが
やはり Android マーケットが無いのは手間がかかります。
ZiiStore という独自ストアもありますが登録本数は多くありませんでした。
●最後に
難点は HOME/MENU/BACK ボタンが押しづらいことと液晶の質。
縦持ちだと右からみると濃く見えて、左からは全体的に薄くなります。
マーケットアプリもないのでアプリの導入や更新は簡単ではありません。
それでも個人的には持ち歩きたくなる端末です。
本体も薄型で抵抗膜式なのにスムーズに操作できてブラウザも見易いサイズ。
ソフトキーボードも程よい大きさで押しやすかったので、モバイルルータと
セットで活躍しそうです。
関連エントリ
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・Android LuvPad AD100 を1日持ち歩いた
2010/12/27
Creative ZEN Touch 2 と OpenGL ES 2.0
Tablet 型の ZiiO に対して ZEN Touch2 はポータブルプレイヤー型です。
言ってしまえば Android 版 iPod touch のようなもの。
・Creative ZEN Touch 2
スペックは当初 ZMS-05 かと思って全く期待していなかったのですが、
どうやら違うようです。

↑下から LuvPad AD100, ZiiO7, 上左DesireX06HT, 上右 ZEN Touch 2
Desire の方が一回り小さい。
●デバッガの接続
LuvPad や ZiiO7 と同じように直接 Android SDK の中の
usb_driver/android_winusb.inf
を書き換えました。3機種分の定義は下記のとおり。
[Google.NTx86] と [Google.NTamd64] の最後に上の 11行を追加しています。
●GPU と CPU
ZMS-05 は ARM9 (ARMv5TE) dual のはずですが、ZEN Touch2 は
ARMv7 アーキテクチャ 800MHz のようです。
GPU も完全に予想外で AMD Z430 (Adreno 200) でした。
・Mobile CPU/GPU
過去に調べた結果(上)と比較すると、Ubuntu 上ですが NetWalker
i.MX515 の結果によく似てます。
周波数から見ても CPU は Coretex-A8 の可能性が高いです。
RAM 容量はおそらく 256MB 程度と思われます。
●NDK
ARMv7 ですが march=armv7-a では apk が install できなかったので
armv5te でビルドを通しました。
メジャーな GPU なせいか、ZMS-08 と違いすんなり GLES 2.0 も動きました。
ZiiO 7inch の結果はこちら
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
2010/12/29 3:29 追記: Freescale i.MX51 確定。Netwalker と同じです。
関連エントリ
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・OpenGL ES 2.0 世代の Mobile GPU
・Android LuvPad AD100 を1日持ち歩いた
言ってしまえば Android 版 iPod touch のようなもの。
・Creative ZEN Touch 2
スペックは当初 ZMS-05 かと思って全く期待していなかったのですが、
どうやら違うようです。

↑下から LuvPad AD100, ZiiO7, 上左DesireX06HT, 上右 ZEN Touch 2
Desire の方が一回り小さい。
●デバッガの接続
LuvPad や ZiiO7 と同じように直接 Android SDK の中の
usb_driver/android_winusb.inf
を書き換えました。3機種分の定義は下記のとおり。
;NVIDIA Tegra (LuvPad) %SingleAdbInterface% = USB_Install, USB\VID_0955&PID_7000 %CompositeAdbInterface% = USB_Install, USB\VID_0955&PID_7100&MI_01 ; ; Creative ZiiO7 %SingleAdbInterface% = USB_Install, USB\VID_2350&PID_0102 %CompositeAdbInterface% = USB_Install, USB\VID_2350&PID_0102&MI_01 ; ; Creative ZEN Touch2 %SingleAdbInterface% = USB_Install, USB\VID_041E&PID_4166 %CompositeAdbInterface% = USB_Install, USB\VID_041E&PID_4166&MI_01
[Google.NTx86] と [Google.NTamd64] の最後に上の 11行を追加しています。
●GPU と CPU
ZMS-05 は ARM9 (ARMv5TE) dual のはずですが、ZEN Touch2 は
ARMv7 アーキテクチャ 800MHz のようです。
Processor : ARMv7 Processor rev 5 (v7l) BogoMIPS : 199.88 Features : swp half thumb fastmult vfp edsp CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc08 CPU revision : 5 Hardware : ZEN Touch 2 Revision : 51030 Serial : 0000000000000000
GPU も完全に予想外で AMD Z430 (Adreno 200) でした。
・Mobile CPU/GPU
過去に調べた結果(上)と比較すると、Ubuntu 上ですが NetWalker
i.MX515 の結果によく似てます。
周波数から見ても CPU は Coretex-A8 の可能性が高いです。
RAM 容量はおそらく 256MB 程度と思われます。
●NDK
ARMv7 ですが march=armv7-a では apk が install できなかったので
armv5te でビルドを通しました。
メジャーな GPU なせいか、ZMS-08 と違いすんなり GLES 2.0 も動きました。
GL_VERSION: OpenGL ES 2.0 GL_RENDERER: AMD Z430 GL_VENDOR: Advanced Micro Devices, Inc. GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.00
Extension: GL_AMD_compressed_3DC_texture GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_AMD_tiled_rendering GL_EXT_texture_filter_anisotropic GL_EXT_texture_type_2_10_10_10_REV GL_EXT_bgra GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_NV_fence TextureFormat 16 tc[00]=87f9 GL_3DC_X_AMD tc[01]=87fa GL_3DC_XY_AMD tc[02]=8c92 GL_ATC_RGB_AMD tc[03]=8c93 GL_ATC_RGBA_EXPLICIT_ALPHA_AMD tc[04]=87ee GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD tc[05]=8d64 GL_ETC1_RGB8_OES tc[06]=8b90 GL_PALETTE4_RGB8 tc[07]=8b91 GL_PALETTE4_RGBA8 tc[08]=8b92 GL_PALETTE4_R5_G6_B5 tc[09]=8b93 GL_PALETTE4_RGBA4 tc[10]=8b94 GL_PALETTE4_RGB5_A1 tc[11]=8b95 GL_PALETTE8_RGB8 tc[12]=8b96 GL_PALETTE8_RGBA8 tc[13]=8b97 GL_PALETTE8_R5_G6_B5 tc[14]=8b98 GL_PALETTE8_RGBA4
ZiiO 7inch の結果はこちら
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
2010/12/29 3:29 追記: Freescale i.MX51 確定。Netwalker と同じです。
関連エントリ
・Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
・OpenGL ES 2.0 世代の Mobile GPU
・Android LuvPad AD100 を1日持ち歩いた
2010/12/26
Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0
ZiiO 7inch 手に入れました。
・Creative ZiiO 7
LuvPad のように回線契約なしに買える Android タブレットです。
特徴は比較的安価なこと。8GB モデルで 24800円。
その代わり抵抗膜式タッチパネルを使っておりマルチタッチも非対応です。
LuvPad と違い HOME 画面は独自で、さまざまな Zii アプリケーションが用意
されています。
●気がついたことなど簡単に
・HDMI端子あり
・Android マーケット無し
・ボタン類もタッチ式、抵抗膜パネルの一部
・タッチパネルのキャリブレーション
設定 → サウンド&画面設定→ Touch screen calibration
・ZiiAcademy というブックリーダー付き。
・タスクマネージャーが最初から入ってる
・RAM 512MB
・タッチパネル反応は慣れると良好
使用感などは後ほど
●デバッガの接続
adb 接続は下記のページを参考にさせていただきました。
・でじものがたり Creative ZiiO 7"のフォント変更(再度更新)
同様の手順を以前 LuvPad の時も行いました。下記のページも参考になります。
・Developing on a Device
●NDK と GPU
CPU はごく普通の Cortex-A8 1GHz です。
もちろん NEON + VFPv3-D32 です。
GPU は ZiiLabs のオリジナル。
テストプログラムを走らせてみました。
Tegra2 のように DXT 対応です。
ETC も使えます。
・頂点テクスチャあり
・shader binary format あり
自前のアプリを移植しましたがシェーダーを読み込んだところで止まります。
ndk サンプルの hello-gl2 も Shader の Link error が出て描画されず
まだうまく動いていません。
GL ES 1.1 のアプリは動いているようです。
速度はものすごく速いといった印象はないです。
OS の違いもあるかもしれません。
●GPU 等のまとめ
これまで試した GPU や CPU をまとめました。
・OpenGL ES 2.0 モバイル GPU CPU
Android 端末の一覧をこちらに作ってみました。WindowsCE 一覧 の続きのようなもの。
・Android 端末一覧
関連エントリ
・OpenGL ES 2.0 世代の Mobile GPU
・Android LuvPad AD100 を1日持ち歩いた
・Creative ZiiO 7
LuvPad のように回線契約なしに買える Android タブレットです。
特徴は比較的安価なこと。8GB モデルで 24800円。
その代わり抵抗膜式タッチパネルを使っておりマルチタッチも非対応です。
LuvPad と違い HOME 画面は独自で、さまざまな Zii アプリケーションが用意
されています。
●気がついたことなど簡単に
・HDMI端子あり
・Android マーケット無し
・ボタン類もタッチ式、抵抗膜パネルの一部
・タッチパネルのキャリブレーション
設定 → サウンド&画面設定→ Touch screen calibration
・ZiiAcademy というブックリーダー付き。
・タスクマネージャーが最初から入ってる
・RAM 512MB
・タッチパネル反応は慣れると良好
使用感などは後ほど
●デバッガの接続
adb 接続は下記のページを参考にさせていただきました。
・でじものがたり Creative ZiiO 7"のフォント変更(再度更新)
同様の手順を以前 LuvPad の時も行いました。下記のページも参考になります。
・Developing on a Device
●NDK と GPU
CPU はごく普通の Cortex-A8 1GHz です。
もちろん NEON + VFPv3-D32 です。
GPU は ZiiLabs のオリジナル。
テストプログラムを走らせてみました。
GL_VERSION: OpenGL ES 2.0 GL_RENDERER: ZMS-08 GL_VENDOR: ZiiLABS GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.0
Extension: GL_OES_read_format GL_OES_compressed_paletted_texture GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_matrix_get GL_OES_point_size_array GL_OES_point_sprite GL_EXT_texture_compression_dxt GL_EXT_texture_compression_dxt1 GL_ZIILABS_fog_mask GL_EXT_texture_lod_bias GL_EXT_blend_func_separate GL_OES_blend_func_separate GL_APPLE_texture_2D_limited_npot GL_OES_query_matrix GL_OES_draw_texture GL_OES_element_index_uint GL_OES_matrix_palette GL_OES_extended_matrix_palette GL_OES_compressed_ETC1_RGB8_texture GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_depth32 GL_OES_stencil8 GL_OES_mapbuffer
tc[00]=8b90 GL_PALETTE4_RGB8 tc[01]=8b91 GL_PALETTE4_RGBA8 tc[02]=8b92 GL_PALETTE4_R5_G6_B5 tc[03]=8b93 GL_PALETTE4_RGBA4 tc[04]=8b94 GL_PALETTE4_RGB5_A1 tc[05]=8b95 GL_PALETTE8_RGB8 tc[06]=8b96 GL_PALETTE8_RGBA8 tc[07]=8b97 GL_PALETTE8_R5_G6_B5 tc[08]=8b98 GL_PALETTE8_RGBA4 tc[09]=8b99 GL_PALETTE8_RGB5_A1 tc[10]=8d64 GL_ETC1_RGB8_OES tc[11]=83f0 GL_COMPRESSED_RGB_S3TC_DXT1_EXT tc[12]=83f1 GL_COMPRESSED_RGBA_S3TC_DXT1_EXT tc[13]=83f2 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT tc[14]=83f3 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
Tegra2 のように DXT 対応です。
ETC も使えます。
VertexShader constant: 128 FragmentShader constant: 16
・頂点テクスチャあり
・shader binary format あり
自前のアプリを移植しましたがシェーダーを読み込んだところで止まります。
ndk サンプルの hello-gl2 も Shader の Link error が出て描画されず
まだうまく動いていません。
GL ES 1.1 のアプリは動いているようです。
速度はものすごく速いといった印象はないです。
OS の違いもあるかもしれません。
●GPU 等のまとめ
これまで試した GPU や CPU をまとめました。
・OpenGL ES 2.0 モバイル GPU CPU
Android 端末の一覧をこちらに作ってみました。WindowsCE 一覧 の続きのようなもの。
・Android 端末一覧
関連エントリ
・OpenGL ES 2.0 世代の Mobile GPU
・Android LuvPad AD100 を1日持ち歩いた
2010/12/08
OpenGL ES 2.0 世代の Mobile GPU
iOS, Android 共に数多くの端末が登場していますが、CPU は ARM アーキテクチャ、
GPU は OpenGL ES 2.0 世代でほぼ統一されています。
iOS の場合 ES 2.0 世代の GPU は 1種類のみ。
Android の場合は調べてみると予想以上に多彩なことがわかります。
完全に 2強(+1)のデスクトップ GPU と違い、まるで DirectX 初期の頃のように
さまざまなメーカーが参入しています。
ATI/AMD のモバイルチップだった Imageon Z430/460 は、Qualcomm になってから
名称が変更されているようです。
・Qualcomm Adreno developer
・Wikipedia Imageon
・Wikipedia Snapdragon (processor)
Adreno のステートを見ると、テクスチャの ATC サポートなど ATI の影響が
残っています。
現行のスマートフォンでは Adreno 200 を搭載した QSD8x50 が多いですが、
HTC Desire HD 001HT の QSD8255 など、今後 Adreno 205 搭載機も
増えてくると思われます。
Z430(200?) が思ったよりも速度を引き出しづらい特性だったので 205 には
期待しています。
昨日ニュースに出ていた Creative の ZiiO は独自のプロセッサ ZMS-08 を
採用しています。
・クリエイティブ、Androidメディアプレーヤーを国内販売
・Zii LABS
開発はあの 3DLABS (ZiiLABS) なので気になる存在です。
進化速度が速いので、モバイル向け GPU の 3D 性能も大きく向上していく
ものと予想されます。
GPU は OpenGL ES 2.0 世代でほぼ統一されています。
iOS の場合 ES 2.0 世代の GPU は 1種類のみ。
Android の場合は調べてみると予想以上に多彩なことがわかります。
完全に 2強(+1)のデスクトップ GPU と違い、まるで DirectX 初期の頃のように
さまざまなメーカーが参入しています。
iOS: CPU Cortex-A8 GPU PowerVR SGX 535
Android OS: CPU ARM11 ARMv6 (MSM7227) Cortex-A8 ARMv7 (S5PC110/ZMS-08) Scorpion ARMv7 (Snapdragon) Cortex-A9 ARMv7 (Tegra2) GPU Adreno 200 (Snapdragon QSD8x50/MSM7227) Adreno 205 (Snapdragon QSD8x55) PowerVR SGX 540 (S5PC110) Tegra 250 GPU (Tegra2) ZMS-08 GPU (ZMS-08)
ATI/AMD のモバイルチップだった Imageon Z430/460 は、Qualcomm になってから
名称が変更されているようです。
・Qualcomm Adreno developer
・Wikipedia Imageon
・Wikipedia Snapdragon (processor)
Adreno のステートを見ると、テクスチャの ATC サポートなど ATI の影響が
残っています。
現行のスマートフォンでは Adreno 200 を搭載した QSD8x50 が多いですが、
HTC Desire HD 001HT の QSD8255 など、今後 Adreno 205 搭載機も
増えてくると思われます。
Z430(200?) が思ったよりも速度を引き出しづらい特性だったので 205 には
期待しています。
昨日ニュースに出ていた Creative の ZiiO は独自のプロセッサ ZMS-08 を
採用しています。
・クリエイティブ、Androidメディアプレーヤーを国内販売
・Zii LABS
開発はあの 3DLABS (ZiiLABS) なので気になる存在です。
進化速度が速いので、モバイル向け GPU の 3D 性能も大きく向上していく
ものと予想されます。
2010/12/07
Android OS 2.3 と NDK r5
新しい Android OS 2.3 Gingerbread が公開され、同時に SDK も新しくなりました。
特に嬉しいのが NDK の強化。NDK r5 がリリースされています。
・Android SDK
Native 向け API が大幅に追加されたようで、従来 Java + JNI 経由で受け取って
いた入力関係、Java でないと初期化出来なかった EGL 関連も Native code で
記述できるようになっています。
下記の NativeActivity の例を見ると C だけで書かれているのがわかります。
・NativeActivity
NDK を使うとデバッグが大変だったので、gdb が含まれるようになったのもかなり
重要なポイントでしょう。
C/C++ の利点はプラットフォームの垣根を越えた共通言語であること。
ライブラリやツールをシェアし、core 部分を移植しやすくするという意味でも
C/C++ のサポート強化は歓迎です。
ndk-build の使い方は r4 と同じですが、内部のディレクトリ構成は結構変わって
いるようです。
自分で build system を構築している場合は少々手を入れる必要があります。
関連エントリ
・Snapdragon と浮動小数演算速度
・Android NDK r3 と OpenGL ES 2.0
特に嬉しいのが NDK の強化。NDK r5 がリリースされています。
・Android SDK
Native 向け API が大幅に追加されたようで、従来 Java + JNI 経由で受け取って
いた入力関係、Java でないと初期化出来なかった EGL 関連も Native code で
記述できるようになっています。
下記の NativeActivity の例を見ると C だけで書かれているのがわかります。
・NativeActivity
NDK を使うとデバッグが大変だったので、gdb が含まれるようになったのもかなり
重要なポイントでしょう。
C/C++ の利点はプラットフォームの垣根を越えた共通言語であること。
ライブラリやツールをシェアし、core 部分を移植しやすくするという意味でも
C/C++ のサポート強化は歓迎です。
ndk-build の使い方は r4 と同じですが、内部のディレクトリ構成は結構変わって
いるようです。
自分で build system を構築している場合は少々手を入れる必要があります。
関連エントリ
・Snapdragon と浮動小数演算速度
・Android NDK r3 と OpenGL ES 2.0