MIPS Android(JZ4760)用nicoWnnG version 2012.0222.1 独自ビルド版

(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


2012.0325.1版を公開しました。

———————————————————-
MIPS Androidで動作するnicoWnnG
2012/02/22時点での最新版(Version 2012.0222.1)にアップデートしました。

ダウンロード: nicoWnnG-2012.0325.1-mips.apk
ダウンロード: nicoWnnG-2012.0305.2-mips.apk
ダウンロード: nicoWnnG-2012.0222.1-mips.apk

ダウンロード: nicoWnnG-2012.0215.1-mips.apk
ダウンロード: nicoWnnG-2012.0213.4-mips.apk
ダウンロード: nicoWnnG-2012.0213.3-mips.apk
ダウンロード: nicoWnnG-2012.0213.2-mips.apk
ダウンロード: nicoWnnG-2012.0213.1-mips.apk

[注意事項]
この独自ビルド版nicoWnnGの配布にあたり、GORRYさんに許可を取っています。

この独自ビルド版nicoWnnGは、ソースの変更を行っていません。コンパイル時にMIPS/MIPS-R2/MIPS-R2 SoftFloat用のバイナリを作成するようにしただけのものです。
このため、前のバージョンからの変更内容については、オリジナル版を参照願います。

オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。
これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。
といっても、現状のオリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗するので、支障は無いですが・・・

なお、今回の独自ビルド版では、MIPS、MIPS-R2、MIPS-R2 SF用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。

それ以外の機種での動作は未確認です。
とりあえずMIPS-R2用バイナリとMIPS-R2 SF用バイナリを追加してはいますが、AMT-7001搭載のICCO T22とかでは動かない可能性は高そうです。

旧バージョン:
2011.1207.1版
2011.1205.1版
2011.1115.1版
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・Android NDK for MIPS r7mでコンパイルしています。
・MIPS r1用/MIPS r2用/MIPS r2 SF用の3種類のバイナリが含まれています。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えるという邪法を使っています。
・署名が当サイトのものとなっています。

MIPS Android(JZ4760)用nicoWnnG version 2011.1207.1 独自ビルド版

(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


最新のversion 2012.0325.1版を公開しています。

——————————–
MIPS Androidで動作するnicoWnnGを2011/12/08時点での最新版(Version 2011.1207.1)にアップデートしました。

ダウンロード: nicoWnnG-2012.0325.1-mips.apk← 2012/03/27時点での最新版。本来の配布ページはこちらです。)
ダウンロード: nicoWnnG-2012.0222.1-mips.apk (← 2012/02/22時点での最新版。本来の配布ページはこちらです。)

ダウンロード: nicoWnnG-2011.1207.1-mips.apk

[注意事項]
この独自ビルド版nicoWnnGの配布にあたり、GORRYさんに許可を取っています。

この独自ビルド版nicoWnnGは、ソースの変更を行っていません。コンパイル時にMIPS/MIPS-R2用のバイナリを作成するようにしただけのものです。
このため、前のバージョンからの変更内容については、オリジナル版を参照願います。

オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。
これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。
といっても、現状のオリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗するので、支障は無いですが・・・

なお、今回の独自ビルド版では、MIPS、MIPS-R2用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。

それ以外の機種での動作は未確認です。
とりあえずMIPS-R2用バイナリを追加してはいますが、AMT-7001搭載のICCO T22とかでは動かない可能性は高そうです。

旧バージョン:
2011.1205.1版
2011.1115.1版
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・Android NDK for MIPS r6mでコンパイルしています。
・MIPS r1用とMIPS r2用のバイナリが含まれています。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えています。

MIPS Android(JZ4760)用nicoWnnG version 2011.1205.1 独自ビルド版

(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


2012/03/27 追記

最新のversion 2012.0325.1版を掲載しました。

————————————————–
MIPS Androidで動作するnicoWnnGを2011/12/06時点での最新版(Version 2011.1205.1)にアップデートしました。

ダウンロード: nicoWnnG-2012.0325.1-mips.apk
ダウンロード: nicoWnnG-2011.1205.1-mips.apk

[注意事項]
この独自ビルド版nicoWnnGの配布にあたり、GORRYさんに許可を取っています。

この独自ビルド版nicoWnnGは、ソースの変更を行っていません。コンパイル時にMIPS/MIPS-R2用のバイナリを作成するようにしただけのものです。

オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。
これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。
といっても、現状のオリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗するので、支障は無いですが・・・

なお、今回の独自ビルド版では、MIPS、MIPS-R2用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。

それ以外の機種での動作は未確認です。
とりあえずMIPS-R2用バイナリを追加してはいますが、AMT-7001搭載のICCO T22とかでは動かない可能性は高そうです。

旧バージョン:
2011.1115.1版
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・Android NDK for MIPS r6mでコンパイルしています。
・MIPS r1用とMIPS r2用のバイナリが含まれています。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えています。

MIPS Android用にbusyboxをコンパイルする

MIPS Android内のbusyboxでapkを展開しようとすると、以下のエラーがでる。

# busybox unzip ../ni*apk
Archive:  ../nicoWnnG-2011.1115.1-mips.apk
unzip: zip flags 1 and 8 are not supported
#

まぁ、これは、MIPS Androidに限らずARM系でも同じ。
busyboxのコンパイルオプション変更でなんとかならないかなぁ、と調査。

BusyBoxからソースファイルを入手し、コンパイル。

横着してAndroid SDK for MIPS内のコンパイラを使おうとしたら失敗した。
かなり初期段階でエラーがでた。

バイナリ配布のMIPS用クロスコンパイラを探したところ、MIPS DeveloperのCompiler紹介ページで紹介されているCodeSourcery G++ Lite Compilerが良さそうだったので使う。

Sourcery CodeBench Lite 2011.03-93 for MIPS GNU/Linux からAdvanced PackagesのIA32 GNU/Linux TARをダウンロードし、適当なディレクトリに展開した。

$ wget https://sourcery.mentor.com/sgpp/lite/mips/portal/package9055/public/mips-linux-gnu/mips-2011.03-93-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
<略>
$  bzip2 -dc mips-2011.03-93-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2|tar xf -
$ cd mips-2011.03/bin
$ export PATH=`pwd`:$PATH
$

そのあと、busyboxをダウンロードしたディレクトリに移動。

$ make defconfig
$ make menuconfig

menuconfigを使って、いろいろカスタマイズを実施。
「CONFIG_LZOP_COMPR_HIGH」が圧縮率関連のパラメータっぽいなぁ、とyに変更。
「CONFIG_CROSS_COMPILER_PREFIX=”mips-linux-gnu-“」というポイントを忘れずに。
その他変えたポイントは・・・

CONFIG_STATIC=y
CONFIG_CROSS_COMPILER_PREFIX="mips-linux-gnu-"
CONFIG_FEATURE_SEAMLESS_Z=y
CONFIG_LZOP_COMPR_HIGH=y
CONFIG_FEATURE_VI_8BIT=y
CONFIG_TUNE2FS=y

そして「make」
….
できあがり、転送したが、実行できないバイナリだった。

$ file busybox-test
busybox-test: ELF 32-bit MSB executable, MIPS, MIPS64 version 1 (SYSV), for GNU/Linux 2.6.12, statically linked, for GNU/Linux 2.6.12, stripped
$
# ./busybox-test
./busybox-test: 1: Syntax error: "(" unexpected
#

「CONFIG_EXTRA_CFLAGS=”-march=mips32″」も付け加えてみる・・・不可

おかしいなぁ、と探してみると、busyboxのページでバイナリ配布の1.19.0を発見
以下の3種類があった。

$ file *
busybox-mips:   ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
busybox-mips64: ELF 64-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, stripped
busybox-mipsel: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
$

それぞれを、ronzi A3に転送して実行してみる。

# ./busybox-mips
./busybox-mips
./busybox-mips: 1: Syntax error: "(" unexpected
# ./busybox-mips ls
./busybox-mips ls
./busybox-mips: 1: Syntax error: "(" unexpected
# ./busybox-mips64 ls
./busybox-mips64 ls
./busybox-mips64: 1: Syntax error: newline unexpected
# ./busybox-mipsel ls
./busybox-mipsel ls
busybox         busybox-mips    busybox-mips64
 busybox-mipsel
#

実行できたのはbusybox-mipselでした。
つまり「ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV)」のファイルのみ。
そういえば、とsuバイナリを見てみると「su: ELF 32-bit LSB executable, MIPS, MIPS64 version 1 (SYSV), dynamically linked (uses shared libs), stripped」
少なくとも「32-bit LSB」にする必要があるようだ。

$ make CFLAGS="-EL -march=mips32" LDFLAGS="-EL -march=mips32"
<略>
$ file busybox
busybox: ELF 32-bit LSB executable, MIPS, MIPS64 version 1 (SYSV), for GNU/Linux 2.6.12, statically linked, for GNU/Linux 2.6.12, stripped
$

目的とするものが作成されました。

そして、

# ./busybox unzip /sdcard/nico*apk
./busybox unzip /sdcard/nicoWnnG-2011.1115.1-mips.apk
Archive:  /sdcard/nicoWnnG-2011.1115.1-mips.apk
  inflating: META-INF/MANIFEST.MF
  inflating: META-INF/OSAKANAT.SF
  inflating: META-INF/OSAKANAT.RSA
  inflating: assets/and3ime.png
<略>

ということで、無事、apkファイルを展開できるunzip機能をもったbusyboxが完成しました。

これが何のために必要だったのかというと・・・

# ../busybox unzip /sdcard/nicoWnnG-2011.1115.1-mips.apk lib/mips/libnicoWnnGEngDic.so lib/mips/libnicoWnnGJpnDic.so lib/mips/libnicownngdict.so
Archive:  /sdcard/nicoWnnG-2011.1115.1-mips.apk
  inflating: lib/mips/libnicoWnnGEngDic.so
  inflating: lib/mips/libnicoWnnGJpnDic.so
  inflating: lib/mips/libnicownngdict.so
# ls
lib
#

というような感じで、カスタマイズ時に必要なlibファイルの取り出しを自動化できるように、ということだったります。

コンパイルしたバイナリをbusybox-1.19.3-mips.zipに置きました。
中身は「busyboxバイナリ」と「busyboxをコンパイルする際に使う.config」です。

AMT-7001とJz4770/Jz4760の違い?

Action Semiconductor(炬力)のCPUを採用したAndroid端末が、HD8900PRO、ICOO T22とT55以外にあるのかな?と検索してたら、Ingenic(君正)のJz47x0シリーズと、ActionSemicon(炬力)のCPUの違いについて言及している記事を見つけた。

炬力1.3GHz的超纯量MIPS32 74Kf核心,GPU GC800

1.3GHz的超纯量MIPS32 74Kf核心(具浮点单元), L1 Cache 16K/16K, L2 Cache 128K,GPU GC800,DDR3
MIPS与大陆无晶圆半导体业者炬力集成电路设计公司(Actions Semiconductor)合作,将「Honeycomb」的Android 3.0带到炬力集成开发的新款1.3GHz MIPS-Based晶片组上,将Honeycomb移植到MIPS-Based平板电脑。炬力集成的新款高效能系统单晶片(SoC)采用时脉速度为1.3GHz的超纯量MIPS32 74Kf核心(具浮点单元)。除了Android,此晶片亦具备OpenGL ES 2.0的3D绘图处理单元、USB 2.0 OTG、和HDMI 1.3,以及支援多种格式的高画质1080p视讯编解码与其他的先进功能。炬力集成和MIPS科技也共同合作,让此平台实现Adobe Flash Player 10.2对MIPS架构的最佳化设计。

MIPS32 74Kf(浮動小数点演算機能つき)をベースにしたSoCで、周波数は1.3GHz。
OpenGL ES2.0の3Dグラフィック、USB 2.0 OTG接続、HDMI 1.3出力+1080pでの出力
Adobe Flash player 10.2対応

そして、Ingenic(君正) Jz4770に似てない?と聞かれて以下の様な答えが・・・

MIPS宣称仅使用普通设计流程和物理IP,MIPS74K 主频在TSMC 40nm 工艺下能达到2.4GHz以上的主频。MIPS74K正是双发射不对称乱序执行超标量处理器,拥有业界最高单核全速性能。

君正的MIPS架构是自己修改过的,炬力是没有修改的原装MIPS核。JZ4770虽然没有双发射乱序,但性能也已经可以和一般的A8核相抗衡了。现在两家的MIPS核已经不具完全可比性了。

中国語の機械翻訳をかけてみたりすると、おおむね以下の意味なのかな?と想像。

君正のCPUは独自に作られたMIPSコアのCPUである。炬力のCPUは、純正のMIPS74kコアを使ったCPUだ。
純正MIPS74kコアはTSMCの40nmで製造すると2.4GHz以上で動作するポテンシャルがある。
Jz4770は、一般的なARM Coretex-A8コアのものと同じぐらいの性能を持っている。
しかし、1GHz以上にクロックをあげることは難しい。
両者は同じではない。

— 2011/11/17 追記 —
MIPSのページにあるMIPS Multi-Thread and Multi-Coreというプレゼン資料の4ページ目に、標準のMIPS32とMIPS 74Kfの違いがどんな感じなのかが書いてあった。
ベースがMIPS32で、そこにいろいろ命令を追加したのがMIPS 74Kfである、と。

プレゼンの46ページ目には、KDDI R&D LABSが世界で初めてMIPS+Androidをセットトップボックスに採用した、なんて話も。
日本語の記事はここらへん:日経BP ITPRO Android端末が百花繚乱「第5回 HD動画を再生、TransferJetで携帯と連携するKDDI研究所のSTB