mbr-bootを作成してみる

NOVO7 Basicのfirmwareに入っていたx-bootのソースファイルからronzi A3で動くものを作ってみようと試みた。
目的としては、Cruz Tablet T301やNOVO7 BASICのように、SDカードに載せたupdate.zipからアップデートできないかなー、とか、そんなの感じで。

コンパイル手法は・・・
「make 機種名」で初期設定を行い
「make release_config」でデバグ系設定を取り除き
「make」でコンパイルを実行する
というものである。

ronzi A3の中を見ていると機種名として「lynx」とあったため、その関連と思われる設定を試した。

まず「nand」と「msc」という2種類のbootローダがあり、ronzi a3で必要なmbr-xbootを作成するのは、「msc」の方であった。

lynxのmsc向け設定は以下の3種類があり、コンパイルし書き込んで見たら、それぞれブラックアウトで起動してこなかった。
・lynx_msc_config
・lynx_jz4760b_msc_config
・lynx_jz4760b13_msc_config

画面が出てこないということは液晶操作系がうまくいっていないからかと判断。
とりあえず画面サイズである480×272を設定している箇所がどこかにないか調査。

boot/lcd/jz4760_lcd.c 内で設定されており、「CONFIG_JZ4760_ANDROID_LCD_AUO_A043FL01V2」という定数が指定されている場合に有効になる箇所に「480, 272」といった記載があることを発見。

この定数を定義しているのは「lepus_msc_config」の時のみだけであったため、「make lepus_msc_config」で作成してみたが、結果は変わらず。
「lepus_jz4760b_msc_config」は液晶コントローラが違うが、「make lepus_jz4760b_msc_config」で初期設定を行った後、手動でinclude/config.hに「#define CONFIG_JZ4760_ANDROID_LCD_AUO_A043FL01V2 1」を記載し、試行してみたがブラックアウト。

分解写真を見ると、液晶は「KD43G18-40NM-A1」らしい。
似た型番としえは「CONFIG_JZ4760_ANDROID_LCD_KD50G2_40NM_A2」というのがある。

型番の命名規則は以下のようになっているとのこと。(メーカであるK&DKD50G2-40NM-A2仕様書)
KD+「インチ」+「Productor Type」+「型番」-「インタフェースのPIN数」+「タッチパネルかどうか」+「LCDタイプ」-「レビジョン」

Productor Type: D=Digital photo frame DVD、G=GPS、M=MP、P=Mobil-Phone
タッチパネルかどうか: T=タッチパネル、N=Notタッチパネル
LCDタイプ: A=AUO、 M=CMO、 C=CPT、 P=PVI、 L=LG、 W=Wintek、 H=HSD、 T=Topply、 Y=Hydis、 I=Hitach、 S=Sharp

ということなので、GPS向けタッチパネル無しのCMO製の液晶を積んだモジュール、ということになるはずなんだけど、タッチパネル無しって・・・?

調べてみると「lepus_jz4760b_msc_config」が「CONFIG_JZ4760_ANDROID_LCD_KD50G2_40NM_A2」だったので、「make lepus_jz4760b_msc_config」で書き込んで見たが、かわらず。
次にboot/lcd/jz4760_lcd.c内のCONFIG_JZ4760_ANDROID_LCD_KD50G2_40NM_A2に関する定義で「800×600」を設定している箇所を「480×272」に変更したが、状況は変わらず。

それと平行して、どうやったらupdate.zipからのfirmware適用ができるのかを調べてみた。
発動条件が、ボリュームUPキーを押しながら電源ONということだったので、機種毎の設定があるinclude/configs/のファイルを見比べた。
その結果、「GPIO_KEY_VOLUME_INC」がボリュームUPキーの定義で、NOVO7 Basicの設定ファイルであろうnpm701.hでは「XBOOT_SEL_RCVR_KEY」に関連づけられていた。
もう1つ、「XBOOT_SEL_FAST_KEY」という機能は、ボリュームDOWNキーに割り当てられている。

Cruz Tablet T301の設定ファイルであるtablet_p2.hでは、「XBOOT_SEL_RCVR_KEY」は「GPIO_SW1=VOL ADD=ボリュームUP」に割り当てられており、「XBOOT_SEL_FAST_KEY」については未定義になっている。

さて、ronzi A3について見てみる。lynx.hかlepus.hのどちらがそうなのかによって、状況が違う。
lynx.hでは「XBOOT_SEL_RCVR_KEY」は「GPIO_KEY_MAIN」、おそらくMAINキーとはHOMEボタンに割り当てられている。
「XBOOT_SEL_FAST_KEY」は「GPIO_KEY_VOLUME_INC」に割り当てられているが、存在はしていない。

lepus.hでは「XBOOT_SEL_RCVR_KEY」は「GPIO_KEY_VOLUME_DEC」、ボリュームDOWNボタン
「XBOOT_SEL_FAST_KEY」は「GPIO_KEY_VOLUME_INC」、ボリュームUPボタンに割り当てられている。

このことから、ronzi A3は、やっぱりlynxなんじゃないかなーとは思う。

で、これを見る限りでは、ronzi A3でも、ちゃんとupdate.zipを作ってやれば、アップデートできる可能性があるのではないかと思う。

(recovery.img.cpioはsplit_bootimg.plでkernelとcpio.gzに分離できた。)

NOVO7 BasicにAndroid 3.2

2011/11/13追記: すzさんのところでNovo7 basic 用 Android 2.2カスタムファームウェアが公開されています。
————————–
[ROM发布] 【Novo7 普及版固件】君正MIPS热风来袭,2.2 3.2两版固件周末突击发布新版本公测!! で配布されているイメージは、update.zipの方はAndroid 2.2.1だけど、もう1つの方はAndroid 3.2っぽい。

転載:Android 3.2 for NOVO7 Basic
転載:Android 2.2 for NOVO7 Basic / update.zip version

それぞれのbuild.propを比べると以下のような違いがある。

@@ -1,60 +1,53 @@
 # begin build properties
 # autogenerated by buildinfo.sh
-ro.build.id=FRG83
-ro.build.display.id=npm701-eng 2.2.1 FRG83 eng.szhao.20111029.043636 test-keys
-ro.build.version.incremental=eng.szhao.20111029.043636
-ro.build.version.sdk=8
+ro.build.id=MASTER
+ro.build.display.id=npm701-eng 3.2 MASTER eng.jbbi.20111029.114136 test-keys
+ro.build.version.incremental=eng.jbbi.20111029.114136
+ro.build.version.sdk=13
 ro.build.version.codename=REL
-ro.build.version.release=2.2.1
-ro.build.date=Sat Oct 29 05:09:13 CST 2011
-ro.build.date.utc=1319836153
+ro.build.version.release=3.2
+ro.build.date=Sat Oct 29 11:48:44 CST 2011
+ro.build.date.utc=1319860124
 ro.build.type=eng
-ro.build.user=szhao
-ro.build.host=szhao-desktop
+ro.build.user=jbbi
+ro.build.host=dsqiu-10
 ro.build.tags=test-keys
-ro.product.model=npm701
+ro.product.model=Novo7Basic
 ro.product.brand=npm701
 ro.product.name=npm701
 ro.product.device=npm701
 ro.product.board=
 ro.product.cpu.abi=mips
-ro.product.manufacturer=ingenic
+ro.product.manufacturer=unknown
 ro.product.locale.language=zh
 ro.product.locale.region=CN
-ro.wifi.channels=
+ro.wifi.channels=13
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
 ro.build.product=npm701
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=npm701-eng 2.2.1 FRG83 eng.szhao.20111029.043636 test-keys
-ro.build.fingerprint=npm701/npm701/npm701/:2.2.1/FRG83/eng.szhao.20111029.043636:eng/test-keys
+ro.build.description=npm701-eng 3.2 MASTER eng.jbbi.20111029.114136 test-keys
+ro.build.fingerprint=npm701/npm701/npm701:3.2/MASTER/eng.jbbi.20111029.114136:eng/test-keys
+ro.build.characteristics=tablet
 # end build properties
 #
-# system.prop for npm701
+# system.prop for generic sdk
 #

 rild.libpath=/system/lib/libreference-ril.so
-rild.libargs=-d /dev/ttyS3
+rild.libargs=-d /dev/ttyS0

-ro.sf.lcd_density=160
+#
+# H/W composition disabled
+#
+debug.sf.hw=0

-persist.sys.language=zh
-persist.sys.country=CN
-persist.sys.localevar=
-persist.sys.timezone=Asia/Shanghai

 #
 # ADDITIONAL_BUILD_PROPERTIES
 #
-ro.config.notification_sound=OnTheHunt.ogg
-ro.config.alarm_alert=Alarm_Classic.ogg
-media.stagefright.enable-player=true
-media.stagefright.enable-meta=true
-media.stagefright.enable-scan=true
-media.stagefright.enable-http=true
-ro.kernel.android.checkjni=0
+ro.kernel.android.checkjni=1
 ro.setupwizard.mode=OPTIONAL
-dalvik.vm.dexopt-flags=m=y,v=n,o=a
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
-dalvik.vm.heapsize=24m
+dalvik.vm.heapsize=40m

その他、system.imgやboot.imgの構成を見る限り、Android 3.2系であるのは間違いなさそうです。

ただ、heapsizeが40mになっているので、ronzi a3などのRAM 256MBマシンで動かすにはかなりきつそうです。

NOVO7 Basicのfirmware?

2011/11/13追記: すzさんのところでNovo7 basic 用 Android 2.2カスタムファームウェアが公開されています。
————————–
検索していたら、NOVO7 basicっぽいfirmwareを配布しているところを発見した。
まぁ、恒例のimp3.netなんですが・・・

[ROM发布] 【Novo7 普及版固件】君正MIPS热风来袭,2.2 3.2两版固件周末突击发布新版本公测!!
転載:Android 3.2 for NOVO7 Basic
転載:Android 2.2 for NOVO7 Basic / update.zip version

どうやらsdcardにupdate.zipを置いて、ボリュームupボタンを押しながらリセットボタンを押し、「ainol艾诺」ロゴがでたところで、ボリュームupボタンを離すと、アップデートが開始されるようだ。
この手法はAndroidスマートフォンでよくあるアップデート手法。
もしかすると、boot loader関連が改良されているのかもしれない。
(それとも、ronzi A3でも実はできるのか?)

従来通りのUSBBoottoolによるアップデートもできるようです。
こちらの場合は、ボリュームDOWNボタンを押すようです。

ただ、単体で実行できる方は「Novo7Basic_android2.2_20111029.7z」という穏当な名前ですが、USBBoottool版が「Android3.2_Novo7_Basic_1029.rar」などという謎のファイル名に・・・

ダウンロード速度が非常に遅いので中身の確認は、明日ですかねぇ・・・

— 2011/11/01 追記 —
update.zipは、android一般的な形式のupdate.zipではありますが、イメージファイルを直接書き込む感じの形式でした。
書き込むのはmbr-xboot.bin, boot.img,system.imgだけで、それ以外はない、というのがちょっと驚きです。

ui_print("Setup your device...");

ui_print("update xboot....");
package_extract_file("mbr-xboot.bin", "/tmp/mbr-xboot.bin");
inand_write_raw("/tmp/mbr-xboot.bin","xboot");

ui_print("update boot.img....");
set_progress("2");
show_progress("0.1", 1);
package_extract_file("boot.img", "/tmp/boot.img");
inand_write_raw("/tmp/boot.img","boot");
show_progress("0.1", 1);

#package_extract_file("userdata.img", "/tmp/userdata.img");
#inand_write_raw("/tmp/userdata.img","data");

ui_print("update system.img....");
set_progress("9");
set_progress("9");
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
show_progress("0.02", 1);
package_extract_file("system.img", "/sdcard/system.img");
inand_write_raw("/sdcard/system.img","system");
show_progress("0.1", 1);

#ui_print("update userdata.img....");
show_progress("0.1", 1);
show_progress("0.1", 1);
show_progress("0.1", 1);
show_progress("0.1", 1);
#package_extract_file("userdata.img", "/tmp/userdata.img");
#inand_write_raw("/tmp/userdata.img","data");

show_progress("0.1", 1);
ui_print("Done.");
set_progress("10");
show_progress("0.1", 1);

system.imgの中には、boot.img,recovery.cpio.imgとuserdata.imgが含まれていますが、おそらく、使われてはいないでしょう。
Android一般的の話であればupdate.zip適用時は/data領域(つまりuserdata.img)は初期化されないことになっているので、そういう作りになっているのかな?と思います。

で、今回の注目点は、パッケージを作り間違えたのか、x-bootというディレクトリの中に、x-bootのソースファイルっぽいものが含まれているというところです。

マザーボードの種類を示しているx-boot/boot/board/というディレクトリを見ると

# ls -l x-boot/boot/board/
合計 64
-rw-r--r-- 1 root root 1462  7月 30 12:21 Makefile
drwxr-xr-x 3 root root 4096 11月  1 09:48 altair
drwxr-xr-x 3 root root 4096 11月  1 09:48 crater
drwxr-xr-x 3 root root 4096 11月  1 09:48 lepus
-rw-r--r-- 1 root root 2810  7月 30 12:21 lib_board.a
drwxr-xr-x 3 root root 4096 11月  1 09:48 lynx
drwxr-xr-x 3 root root 4096 11月  1 09:48 maple
drwxr-xr-x 3 root root 4096 11月  1 09:48 npm701
drwxr-xr-x 3 root root 4096 11月  1 09:48 pisces
drwxr-xr-x 3 root root 4096 11月  1 09:48 pt701_8
drwxr-xr-x 3 root root 4096 11月  1 09:48 px7_2r
drwxr-xr-x 3 root root 4096 11月  1 09:48 pyxis
drwxr-xr-x 3 root root 4096 11月  1 09:48 tablet_8II
drwxr-xr-x 3 root root 4096 11月  1 09:48 tablet_p2
drwxr-xr-x 3 root root 4096 11月  1 09:48 z800
drwxr-xr-x 3 root root 4096 11月  1 09:48 zorroo
#

また、それらのボードに関する設定はinclude/configsディレクトリで行われているようです。

#ls -l x-boot/include/configs
合計 276
-rw-r--r-- 1 root root 12074  7月 30 12:21 altair.h
-rw-r--r-- 1 root root  5909  7月 30 12:21 apus.h
-rw-r--r-- 1 root root  5778  7月 30 12:21 aquila.h
-rw-r--r-- 1 root root 13296  7月 30 12:21 crater.h
-rw-r--r-- 1 root root  2168  7月 30 12:21 jz4760_common.h
-rw-r--r-- 1 root root  3384  7月 30 12:21 jz4770_common.h
-rw-r--r-- 1 root root 17047  7月 30 12:21 lepus.h
-rw-r--r-- 1 root root 16895  7月 30 12:21 lynx.h
-rw-r--r-- 1 root root 19281  7月 30 12:21 maple.h
-rw-r--r-- 1 root root 19100  7月 30 12:21 npm701.h
-rw-r--r-- 1 root root 16051  7月 30 12:21 pisces.h
-rw-r--r-- 1 root root 11442  7月 30 12:21 pt701.h
-rw-r--r-- 1 root root 15187  7月 30 12:21 pt701_8.h
-rw-r--r-- 1 root root 16185  7月 30 12:21 px7_2r.h
-rw-r--r-- 1 root root 15829  7月 30 12:21 pyxis.h
-rw-r--r-- 1 root root 15187  7月 30 12:21 tablet_8II.h
-rw-r--r-- 1 root root 15658  7月 30 12:21 tablet_p2.h
-rw-r--r-- 1 root root 13367  7月 30 12:21 z800.h
-rw-r--r-- 1 root root 18260  7月 30 12:21 zorroo.h
#

と、まだ見ぬ機種がいろいろいるようです。
現状判明しているのは、以下の3種類です。
lynx=ronzi A3系
z800=怪しい中華Android携帯
tablet_p2=Cruz Tablet T301
xam5001=IQQ M1なんだけど、リストにない・・・
npm701=NOVO7 Basic
Ramos V65Proは、「ro.product.device=V65PRO」と設定されているが「ro.build.fingerprint」ではlynxとなっているので、lynxの類型である可能性が大きい。
build.propの違いについては、Jz4760系Androidのbuild.propの違いに追加しました。

起動時に使用されるロゴ画像は以下のディレクトリにあります。

# ls -l x-boot/boot/logo/
合計 292
-rw-r--r-- 1 root root 51812  7月 30 12:21 AMT_800x480.rle
-rw-r--r-- 1 root root 36468  7月 30 12:21 jz_1024_768.rle
-rw-r--r-- 1 root root 36468  7月 30 12:21 jz_800_480.rle
-rw-r--r-- 1 root root 93200  7月 30 12:21 novo7_1.rle
-rw-r--r-- 1 root root 14260  7月 30 12:21 pt701_8.rle
-rw-r--r-- 1 root root 14260  7月 30 12:21 tablet_8II.rle
-rw-r--r-- 1 root root 36580  7月 30 12:21 tablet_p2.rle
#

なんと、Jz47x0だけではなく、CPUがAMTのものについてのロゴも含まれています。
ただ、他のディレクトリにはAMTに直接関係しそうなファイル名のは見当たりません。

電源off時に表示される充電ロゴ、というのは、おそらく、x-boot/include/charge_logo.hで定義されているものなんでしょう。

Jz4760系Androidのbuild.propの違い

firmwareが容易に展開できたJz4760搭載Android機種とJz4770搭載Android機種のbuild.propを比較してみた。(2011/11/01:NOVO7 Basicについて追加)

対象機種
・ronzi A3
・Cruz Tablet T301
・IQQ M1
・Ramos V65PRO
・NOVO7 Basic

比較のベースはronzi A3 20110503版のbuild.prop。

機種ごとに違って当然である項目以外にある、パラメータの差異は以下のようになった。

・「dalvik.vm.dexopt-flags」の値
ronzi A3, Cruz, V65PRO: dalvik.vm.dexopt-flags=m=y,v=n
IQQ M1,NOVO7 Basic: dalvik.vm.dexopt-flags=m=y,v=n,o=a

v=nは-Xverify:none
o=aは-Xdexopt:all
o=vもしくは、o=を指定しない場合は-Xdexopt:verified
m=yがよく分からない。

たぶん「m=y,v=n,o=a」が適切そうな気がするが、カスタムfirmwareでは「m=y,v=n」にしている。

・「ro.kernel.android.checkjni」の値
ronzi A3: ro.kernel.android.checkjni=1
それ以外: ro.kernel.android.checkjni=0
開発中は「1」で、普通は「0」ということなので、カスタムfirmwareでは「0」を採用。

・「ro.sf.lcd_density」の値
ronzi A3, Cruz: 設定無し
IQQ M1, V65PRO, NOVO7 Basic: ro.sf.lcd_density=160
カスタムfirmwareでは「160」としているが、120か130ぐらいでもいいかな?というところ。

・製品の地域設定
中国製品は以下
ro.product.locale.language=zh
ro.product.locale.region=CN
アメリカ製品は以下
ro.product.locale.language=en
ro.product.locale.region=US
カスタムfirmwareではアメリカ設定を採用

・地域やタイムゾーン設定 その2
設定されている場合がある
persist.sys.language=
persist.sys.country=
persist.sys.localevar=
persist.sys.timezone=
カスタムfirmwareでは、この設定は使っていない。

以下は資料。

ベースとなるronzi A3 20110503版のbuild.prop

# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=FRG83
ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
ro.build.version.incremental=eng.android.20110503.162254
ro.build.version.sdk=8
ro.build.version.codename=REL
ro.build.version.release=2.2.1
ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
ro.build.date.utc=1304414073
ro.build.type=eng
ro.build.user=android
ro.build.host=android-desktop
ro.build.tags=test-keys
ro.product.model=lynx
ro.product.brand=lynx
ro.product.name=lynx
ro.product.device=lynx
ro.product.board=
ro.product.cpu.abi=mips
ro.product.manufacturer=ingenic
ro.product.locale.language=zh
ro.product.locale.region=CN
ro.wifi.channels=
ro.board.platform=
# ro.build.product is obsolete; use ro.product.device
ro.build.product=lynx
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
# end build properties
#
# system.prop for lynx
#

rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyS2

#ro.sf.lcd_density=240

#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
media.stagefright.enable-player=true
media.stagefright.enable-meta=true
media.stagefright.enable-scan=true
media.stagefright.enable-http=true
ro.kernel.android.checkjni=1
ro.setupwizard.mode=OPTIONAL
dalvik.vm.dexopt-flags=m=y,v=n
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
dalvik.vm.heapsize=24m

ronziA3のbuild.propとCruz Tablet T301のbuild.propの違い

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=T301-eng 2.2.1 FRG83 eng.szhao.20110513.013344
+ro.build.version.incremental=eng.szhao.20110513.013344
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=Fri May 13 02:02:22 CST 2011
+ro.build.date.utc=1305223342
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=szhao
+ro.build.host=szhao-desktop
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=T301
+ro.product.brand=tablet_p2
+ro.product.name=tablet_p2
+ro.product.device=tablet_p2
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
-ro.product.locale.language=zh
-ro.product.locale.region=CN
+ro.product.locale.language=en
+ro.product.locale.region=US
 ro.wifi.channels=
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
-ro.build.product=lynx
+ro.build.product=tablet_p2
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
+ro.build.description=T301-eng 2.2.1 FRG83 eng.szhao.20110513.013344
+ro.build.fingerprint=T301/tablet_p2/tablet_p2/:2.2.1/FRG83/eng.szhao.20110513.013344:eng/test-keys
 # end build properties
 #
-# system.prop for lynx
+# system.prop for tablet_p2
 #

 rild.libpath=/system/lib/libreference-ril.so
@@ -47,7 +47,7 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
 dalvik.vm.dexopt-flags=m=y,v=n
 net.bt.name=Android

ronziA3のbuild.propとIQQ M1のbuild.propの差

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=xam5001-eng 2.2.1 FRG83 eng.clivia.20110713.174656 test-keys
+ro.build.version.incremental=eng.clivia.20110713.174656
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=2011年 07月 13日 星期三 17:52:14 CST
+ro.build.date.utc=1310550734
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=clivia
+ro.build.host=ubuntu
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=xam5001
+ro.product.brand=xam5001
+ro.product.name=xam5001
+ro.product.device=xam5001
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
@@ -24,19 +24,23 @@
 ro.wifi.channels=
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
-ro.build.product=lynx
+ro.build.product=xam5001
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
+ro.build.description=xam5001-eng 2.2.1 FRG83 eng.clivia.20110713.174656 test-keys
+ro.build.fingerprint=xam5001/xam5001/xam5001/:2.2.1/FRG83/eng.clivia.20110713.174656:eng/test-keys
 # end build properties
 #
-# system.prop for lynx
+# system.prop for xam5001
 #

 rild.libpath=/system/lib/libreference-ril.so
 rild.libargs=-d /dev/ttyS2

-#ro.sf.lcd_density=240
+ro.sf.lcd_density=160
+persist.sys.language=zh
+persist.sys.country=CN
+persist.sys.localevar=
+persist.sys.timezone=Asia/Shanghai

 #
 # ADDITIONAL_BUILD_PROPERTIES
@@ -47,9 +51,9 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
-dalvik.vm.dexopt-flags=m=y,v=n
+dalvik.vm.dexopt-flags=m=y,v=n,o=a
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
 dalvik.vm.heapsize=24m

ronzi A3のbuild.propとRamos V65のbuild.propの差

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.leo_lee.20110610.103429 test-keys
+ro.build.version.incremental=eng.leo_lee.20110610.103429
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=2011年 06月 10日 星期五 10:48:34 CST
+ro.build.date.utc=1307674114
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=leo_lee
+ro.build.host=jetserver-desktop
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=Ramos V65PRO
+ro.product.brand=Ramos
+ro.product.name=Ramos V65PRO
+ro.product.device=V65PRO
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
@@ -26,8 +26,8 @@
 # ro.build.product is obsolete; use ro.product.device
 ro.build.product=lynx
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
+ro.build.description=lynx-eng 2.2.1 FRG83 eng.leo_lee.20110610.103429 test-keys
+ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.leo_lee.20110610.103429:eng/test-keys
 # end build properties
 #
 # system.prop for lynx
@@ -36,7 +36,7 @@
 rild.libpath=/system/lib/libreference-ril.so
 rild.libargs=-d /dev/ttyS2

-#ro.sf.lcd_density=240
+ro.sf.lcd_density=160

 #
 # ADDITIONAL_BUILD_PROPERTIES
@@ -47,9 +47,10 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
 dalvik.vm.dexopt-flags=m=y,v=n
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
 dalvik.vm.heapsize=24m
+persist.sys.timezone=Asia/Shanghai

ronzi A3のbuild.propとNOVO7 Basicのbuild.propの差

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=npm701-eng 2.2.1 FRG83 eng.szhao.20111029.043636 test-keys
+ro.build.version.incremental=eng.szhao.20111029.043636
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=Sat Oct 29 05:09:13 CST 2011
+ro.build.date.utc=1319836153
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=szhao
+ro.build.host=szhao-desktop
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=npm701
+ro.product.brand=npm701
+ro.product.name=npm701
+ro.product.device=npm701
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
@@ -24,19 +24,24 @@
 ro.wifi.channels=
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
-ro.build.product=lynx
+ro.build.product=npm701
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/te
st-keys
+ro.build.description=npm701-eng 2.2.1 FRG83 eng.szhao.20111029.043636 test-keys
+ro.build.fingerprint=npm701/npm701/npm701/:2.2.1/FRG83/eng.szhao.20111029.043636:en
g/test-keys
 # end build properties
 #
-# system.prop for lynx
+# system.prop for npm701
 #

 rild.libpath=/system/lib/libreference-ril.so
-rild.libargs=-d /dev/ttyS2
+rild.libargs=-d /dev/ttyS3

-#ro.sf.lcd_density=240
+ro.sf.lcd_density=160
+
+persist.sys.language=zh
+persist.sys.country=CN
+persist.sys.localevar=
+persist.sys.timezone=Asia/Shanghai

 #
 # ADDITIONAL_BUILD_PROPERTIES
@@ -47,9 +52,9 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
-dalvik.vm.dexopt-flags=m=y,v=n
+dalvik.vm.dexopt-flags=m=y,v=n,o=a
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
 dalvik.vm.heapsize=24m

MIPS Android NOVO7普及版

艾诺(ainol)のNOVO7普及版がJz4770搭載だという話が出てきた。
メーカーページ:智拥双星 艾诺NOVO7普及版报价599より

CPU Jz4770 1GHz
GPU Jz4770内蔵のGC860
メモリ 512MB
OS: Android 2.2
液晶 7インチ 800*400、静電式5点認識マルチタッチ
カメラ フロントに30万画素、バックに200万画素?
HDMI出力あり
値段は599元

艾诺NOVO7普及版君正核心MIPS架构测试に分解図を含め、いろんな写真がある。

ちなみにNOVO7は、すでにCPUにAllwinner A10を使用したNOVO7领先版(NOVO7 Advanced)というのがでているが、それとは別物。
メーカページ(智拥双全 艾诺平板NOVO7领先版发布)にも7インチで静電式5点認識という点以外は共通点ないよ、という書いてあります。