ViXS XCode 4210搭載のMIPS Android?


調べてみたら、ViXS社というところからも、Android用途にMIPSコアを使用したCPUが出ているようだ。

MIPS社プレスリリースから:Android™プラットフォーム、ネットワーク家電機器向けのMIPS®アーキテクチャで更に勢いを増す MIPS-Based™ ViXS XCode®4210チップセットで動作するAndroidをCOMPUTEXで公開
ViXS社プレスリリースから一例:ViXS Systems Announces XCode 4210 Set-top Box Security Certification with Conax

ここで使われているものは、XCode 4210というチップ。
製品紹介のページにある過去のプレスリリース内容をみると、タブレット向けではなく、ボックスタイプ向けの模様。

ただ、いまのところ、ボックスタイプとしても発売されている例は無いようだ。
今後に期待。

— 2012/07/19 追記 —
ソニーから発売されたnasneに採用されたようですね。
インプレスAV Watch:「nasne」のハードウェアをチェック。分解してみた

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」です。

courier-imapをアップデートしようと思ったら・・・


今使っているqmail+vpopmail+courier-imapを最新版にしようと、依存性とか確認してみた。

すると・・・courier-imapが内部的に使う認証モジュールcourier-authlibにて問題発生。
現状は「0.63.0」ですが、「0.60.4よりvchkpwモジュールが削除」とのこと・・・
vchkpwモジュールというのがvpopmailと連動するためのモジュールなのでアップデート不可。

・・・・・・・・そういえば、そうでした。
すっかり忘れていましたよ^^;;;

しっかし、そうなると、代替策をどうするかなぁ・・・
LDAPモジュール or mysqlモジュールを使うようにいろいろシステム変更をする、ということになるのかな

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

MIPS用suバイナリ ver3.0.1


GUIアプリからroot権限操作を行う場合、ChainsDDさんのSuperuser.apk+suバイナリが必要になる。

Superuser.apkは普通のAndroidアプリだが、suバイナリの方はARMアーキテクチャ用となっている。
じゃぁ、MIPSアーキテクチャ用のsuバイナリを用意しよう!
ということで、用意しました。

su-3.0.1.zip

zip内のsuファイルを/system/xbin/su もしくは/system/bin/su に置いてください。
そして、「chmod 6755 /system/xbin/su」もしくは「chmod 6755 /system/bin/su」と権限を与えてください。

ちなみに、Githubで公開されているソースは、ver 3.0.1のしかないようなので、このバージョンになっています。

Superuser.apkの方は公式のhttp://downloads.androidsu.com/superuser/Superuser-3.0.6-efgh-signed.zipをダウンロードしてください。
そして、system\app\Superuser.apkを使ってください。
注意点としては、Superuser.apkの中で、suバイナリのバージョンチェックとアップデートを行うことができますが、これをやってしまうと、suが動かなくなる、という点です。
それさえ注意すれば、問題なく動くかと思います。

ただ、これを使ってもRootexplorerは期待通りの動作をしてくれなかったり・・・
/systemに移動して「Mount R/W」ボタンを押しても、なにも動いてくれない・・・
どこら辺に問題があるかなぁ・・・