2010年11月29日

T555を分解した

T552 は分解写真が既にあるので、T555 だけ分解してみることにした。

気になるのは、まず メモリの容量と bit幅。サイズから見て 16bit x 2 は載せていないと思える。Jz4755 であることは既に確信しているので 気になる点ではない。


裏蓋 :

ツメの位置が 重要なので記録

下側中央から 裏蓋を 押し込んで はずしていく。電源スイッチ側に向けて はずしていって、次は 上側(ボタンがあるほう) 。ある程度浮いたら ボタンを取ってしまう。(壊れやすそうなので)。
コネクタ側 は最後にして ひっぱって裏蓋を取る。

バッテリー:

バッテリーは薄型 幅 42mm 長さ 60mm 厚さ 2mm + ぐらい。
P304259 KYJA11/3.7V と読めるが容量はわからない。

(写真は、基板に貼っていたバッテリーを剥がして、裏蓋側につけなおしたもの。)

バッテリーをはがすと 基板が見えるのだが ... 両面テープを慎重にはがさないと
いけない。水晶に気をつける。

(メモ) 裏蓋側につけなおす場合は、位置を間違えないことが重要だが、バッテリーに ツメの後が少し残っているので 注意すれば問題ない。

あと、組み上げる場合、電源スイッチ と スライダー(?) の 位置を合わせておく必要があるので注意。



(写真撮っていたら、バッテリーの接続部が断線した。写真は切れる前だが、だいぶ傷んでいるのは見てとれる。)

基板には、

    ProjectXA-S3040
    Date: 10/01/09
    Ver.AD-

の印刷。例によって ChipRise 製だ。

基板は 4 ヶ所ネジ留めされている。表面には 液晶があるだけだろうから 今回は取り出さない。

ざっと主要パーツの刻印を読み取ってみる。

  • CPU : JZ4755
  • メモリ: 16bit W9825G6EH-75 x1 (32MB)
  • NAND FLASH : 29F32G08CBAAA
  • FM モジュール: RDA 5807P


つぎは、いつもチェックしているパーツ

  • カップリングコンデンサ: 100 6M -- 100uF ?
  • SOT23-5/6 の IC

    5pin A2IK x 3
    5pin LT45-A (or LTA5-A ?) + コイル

  • コイル付きは、たぶん 1.8V core 電圧用 。
  • A2IK は、XC6219 互換の G9091 ? -- LOD で 最大 300mA もれ電流 65uA 。なぜこんなに沢山使っているのだろうか?

メモリは 32bit ではなく 16bit のようだ(一応裏面にもう1つがある可能性はある)。 想定内ではある。32MB なのは 嬉しい点で メモリを付け替えなくとも あるレベルまでは使える。

回路的にどうなのかは、調べていかないといけないが、Jz4725B と違って ピンがあまるはずだから すなおな設計になっている と 期待したい。

電子工作への応用 .. という点では ボタンが横ならびで 変なところに付いていないし、LCD が飛び出さないし、良さそうな感じではある。

全体的に、A-33 よりはるかに良い感じで気に入った。が、もう作っていないらしいのが残念。

あといくつか写真を載せておく。-- ぜんぶイマイチ。パーツを調べる段階になったらもう一度撮りなおさないと。



USBBOOT してみる



例によって M(Menu) ボタンが USBBOOT 。電源スイッチを OFF にした状態で これを押しながら USB に接続すると JZ4750 と認識される。

まず、USBBOOT の cfg ファイル。... とりあえず a41 の 32M 版と同じでよいような気がする。

で、boot コマンドを入力すると ... stage1 すら全然動かない。

stage1 の ソースを見ると Jz4725B なら 16bit RAM そうでないなら 32bit RAM というコードになっていた。RAM の設定が違えば動かないのは当然ではある。

で、よくわからないので 無理やり Jz4725B と同じにしたら ... やっぱり動かない。

    オリジナルの board_4750.cを見ると、Jz4725B , Jz4750 以外に Jz4755 のコードも入っている。そういえば Jz4725B のコードだけ 取り込んだのだった。

    で Jz4755 のコードは SDRAM 32bit 前提になっている。だから取り込んでも T555 では動かない。どうしたらよいか 検討しなくては。

    -- Jz4755 では 水晶が 24 MHz だったのが原因 だった。config を書き換えたら OK 。 これが違えば USB で通信できない。

    -- 次に NAND FLASH が見えないとかの問題が起きた。

    なんとか動くようにした。

  • usbboot-wk19.tar.gz

    FLASH は、A-33 と同じ。

    usbboot :> nquery 0 0
    CPU data: Boot4750
    ID of No.0 device No.0 flash:
    Vendor ID :0x2c
    Product ID :0xd7
    Chip ID :0x94
    Page ID :0x3e
    Plane ID :0x84
    Operation status: Success!

    GPIO はさっぱり。

    BOOT_SEL は、BOOT_SEL1 (PC31) と PE25 / ADIN1 の組み合わせ。PC30 / PE25 は M(MENU) ボタンを押しても変化せず 共に H 。それで切り分けられる条件は、ADIN1 > 381 で NAND FLASH そうでなければ USBBOOT@24MHz 。 -- ADC が読めないと ボタンの状態が分からないらしい。

posted by すz at 20:37| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

2010年09月30日

A-41 写真集

解析用に写真を取り直した。コメントなどは、Aneca A-41の記事に書く。














posted by すz at 23:01| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

2010年09月27日

P5-5 分解

P5-5 (PMP3100後継機)の記事の続き。

P5-5 を分解してみることにした。どうせ PMP-3100 と同じだろうと思っていたのだが随分違っていた。

まずは、おさらい。




    これが PMP-3100 の中身。CPU が Jz4725(無印)なのと、液晶側に 14pin の謎の IC(おそらくボタン用) があるのが特徴。-- 実をいうと こういうのを解析するのにロジアナが必須だと思いロジアナを買ったのだ。で、練習に分析してみようと思ったわけ。





これが、P5-5 の中身。基板の色が変わって SDRAM,FLASH の配置が変わっている。

そして、14pin の IC がなくなり代わりに 左上に 8pin の IC が付いた。そしてボタンへの配線が すごくシンプルになっている。



これが、そのあたりの写真。例によって 8pin IC の刻印が消されている。

    pin #8 は GND 。pin #1 は コンデンサがつながっているので VCC だと思う。... PIC のような気がする。
    それはともかく、6 本の I/O ピンでいったいをしているのだろう? ボタンという可能性はまだある。ADC があれば、多重化できる。(PIC なら ADCは pin #3,#5,#6,#7) -- ボタンの配線がシンプルになっているので 合っているかも。

T1 のマークが TxD 。その下の 平行な 2 本線が I2C(SCK,SDA の順)
あと、他の写真。



FM モジュールと イヤホンジャック周り。FMモジュールは、SP3767AHN の刻印。カップリングコンデンサが、47uF/10V になっている。

I2C(左から SCK,SDA の順)が平行なまま伸びてきていて、103(10KΩ)でプルアップされ FM モジュールに接続されている。



コイルがあるあたり。コイルとその近くの SOT23-5 は、core 電圧用。空きパターンは、バックライト電源の昇圧用?

T2 がある。これは何?



SOT23 がやたらあるところ。8pin ICはバッテリー制御用?

SOT23 の刻印は、M21 6620 MO 1AM(x2), あと SOT23-5 の LB26

下の A106 は(たぶん)タンタルコンデンサで 10uF 。その左上の黒いのはコイル? そしてコイルの先は LB26 の pin #1 。

8pin IC の刻印ははっきり見えるが、読めない。XX690M 。XX は 11 のような形をしているが 11 とは思えない。



最後に CPU 周り。一応。

部分写真は、はっきり刻印が撮れた。ちょっと A-41 とか A-33 もがんばってみよう。

ところで、スピーカーとバッテリーのケーブルは取ってしまった。
どこにつなぐのか忘れないようにメモ。

  • 左端中央 四角で囲んであるところ + がスピーカー(青) - がスピーカー(赤)。
  • 右端中央にも おなじような四角がある。おなじようにスピーカーを接続。
  • 左端の 四角の左。+とー が見える。これが バッテリー

posted by すz at 06:13| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

2010年09月21日

SDRAM換装に挑戦

SDRAMの換装方法(案)という記事を書いたが、いよいよそれを実践してみようと思う。

予定では、

  • ターゲットは、A-41 。

  • 32MBを まずやって、いまくいけばもうひとつを 64MB 化する。

      不安材料は、工作技術以外には、電源。-- 16MB と比べれば 32MB,64MB は大食い。しかも A-41 はあまり電源は強くなさそう。

  • ケースから出さずに、バッテリーを外して作業するつもり

だったのだが...

まずは、SDRAM を外す作業。

興味から買っていて死蔵しているサンハヤトの表面実装部品取り外しキット SMD-21 を使う。

キットには、低音ハンダの他に特殊フラックスとハンダ吸い取り線が付いている。特殊フラックスは、注射器のようなタイプで、一回使った後の保存に不安があったので、今回は普通の無洗浄フラックスにしてみた。

両面テーブでLCDに貼られているバッテリーを外して作業するつもりだったのだが、両面テーブが強力でLCDを壊しかねないので、ケースから取り出して作業することにした。バッテリーは、電線を基板から外すだけにした。



外した後、低音ハンダを吸い取り、1回普通のハンダを盛ってまた吸い取っている。(低音ハンダを残さないようにするため。)

その後、アルコールを綿棒に付けて掃除した後の状態。

そういえば、A11 。16MB では NC の A11 の線があるかチェック .. 右下 (写真では 左下) から GND A4,A5,A6,A7,A8,A9,A11 .. 配線されている。大丈夫そうだ。



次に、aliexpress で購入した SDRAM の足が曲がっていないかチェック。-- OK そうだ。



これが、SDRAM を 付けた後。

付けようとしたときに、気がついたのだが、64MB だった。
まぁどうせ後で付けるんだからと思い、そのまま進めることにした。

ハンダ付けは、半田ごてで押さえるだけにした。

で、目視でチェックして、電源を入れてみた。

全然動かない。

原因が、ハンダ付け不良なのか、電源なのかもわからない。

切り分けるために USBBOOT を試すことにした。USBBOOT は、どんな回路でも動作するように、低クロックで立ち上がるはず。それで立ち上がるなら、電源が原因のはず。

.. ということで、ケースに一旦戻し やってみた。

... 中途半端に動く。USB は認識されるのだが、不明なデバイスになる。

たぶんハンダ付け不良。

それはともかく、バッテリーを外した状態で USB に挿して立ち上がるものなのかどうか確認していなかった。

というわけで、もうひとつもバラすことにした。

で、まず確認。-- 普通に立ち上がる。

ついでにこちらも換装してしまうことにした。



今回は、ランドに残すハンダを多めにしてみた。

    ところで、表面実装部品取り外しキットでは、16cm の低温ハンダ x 5 で、約1,500ピン分取り外しができることになっている。

    今回 2 つで 1 本の 1/2 ほど消費した。54pin x 2 だから 110 ピン (1/10 で 110 ピン) -- 少々使いすぎかもしれない。

    使いすぎると 低温ハンダの除去が面倒なのだ。少し慣れたから次回はもっと少なくできるだろう。

    2 つやってみての所感。

    とりはずしは、15W のハンダごてでやったが、特に問題なかった。問題はその後。ハンダ除去がなかなか 面倒。

    ハンダ除去後、とても汚くなる。残っているのかどうかもはっきりしないので、清掃は必須。綿棒とアルコール(手持ちの 無水エタノール)で十分だった。

    注意したことは、低温ハンダが 他のパーツにつかないようにすること。少々混み合っているので、角のところを 丁寧に。(ハンダ除去も)



一応チェック。今回は間違いなく 32MB 。

そしてハンダ付け -- ハンダ付け不良がないように念入りにすることにした。

で、電源を入れる。やっぱり動かない。何回かやってみたところ 1回だけ立ち上がった。

ハンダ付けが十分でなく、接触不良のようなことになっているのか? それともやはり電源なのか?

ケースに入れ USBBOOT をしてみたところ、ちゃんと 認識された。
何度かやってみたが、ここまでは問題ない。

... ケースに入れてしまったので まずは、どこまで動くのか確認しようと思う。

    stage1 は動く。その後の stage2 のロードは終わるが、制御を渡したあと帰ってこない。-- アドレス線 のどれかが 不良?

ちゃんと動くのであれば、電源を強化しなくてはならない。どう強化すべきなのかの参考にするため、記念写真。


(A-41 1号機 64MB)


(A-41 2号機 32MB)

電源IC について

    写真を良くみると .. MicroSD の左の SOT23-5 は A2IK 、コイルの下にある SOT23-5 は A18T と印字されている。

      コイルは、10uH 。周りにダイオードがない。
      同期整流タイプの電圧下降型 DC/DC には、TOREX
      XC9236A18CMR とか FAN5307S18 とか SC189 とかがある。
      いずれもピン配置は同じで

         (1) Vin Lx (5)
      (2) GND
      (3) EN Vout (4)

      たぶん、これもそうだろう。10uH を使っているということは、あまり高いスイッチング周波数ではなく 1MHz 台ではないか?

    A2IK は、G9091 ? (G9091 は、LOD で 最大 300mA もれ電流 65uA )。互換性があるのは XC6204 , XC6219 らしい。( 最大 300mA のタイプは 型番に E 〜 H が付く)

    出力は 5番ピンだから、そこの先 .. 右上の 大きめのコンデンサが出力につくコンデンサ。入力は 1 ピンで たぶん 左の 下から 2 番目の小さめなコンデンサが 入力に付くコンデンサ。

    A2IK が CPU, SDRAM をはじめとする 3.3V を供給しているのだろう。

    基板右下に SOT23 と SOT23-5 が見える。SOT23 は D2E と読めるが、SOT23-5 は写真ではわからないが T25a と印字されている。

    そして SOT23-5 の右のチップ、これだけ黒い -- コンデンサではなく コイルかも知れない。

    D2E は 1個入りダイオード(RB491D とか)。 SOT23-5 は LCD バックライト用の 昇圧型 DC/DC コンバータ IC かも知れない。

    近くに 4R7 がある。電流測定用? 他には 4.7K(472),10K(103) だけ。

    たとえば、FAN5333A なら、

       (1) SW Vin (5)
    (2) GND
    (3) FB /SHDN (4)

    というピン配置(他のICもこの配置が多い)。 (2) に GND が来ているように見えるし、(1) からダイオードの方に太めの線が伸びている。-- たぶん合っている。

    FB の電圧は、110mVで、4R7 だと 23mA 。

      だが ... そうなると リポ電池 充電用の IC はどこにある?

      SOT23-5 は、全部で 3 個あるが、どれも 充電用ではなさそうだ。バックライトの PWM はわざわざ RxD 機能兼用の PWM3 を使って 兼用機能のない PWM5 はなにか別の目的に使っている。... いやな予感がしてきた。

    • A-33 について:
      A33 にも 3 つの SOT23-5 の IC が付いている。ひとつはインダクタ(100) の横にあるやつで、D19m と印字されている。印字は違うが、1.8V 用以外にはありえない。あとのふたつは A2JB だった。ひとつは LED 専用のレギュレータ?
      -- それはともかく、双子のようなマシンだし やはり 充電用 IC は見つからない。
      相当に不安を感じる。どんな回路で充電しているのか解析しないと ..

    ついでなので、スピーカーアンプについて。SDRAM の左にある 8ピンのICがアンプ(BTL)。写真では全く印字が見えないが LN4890 らしい。これは、Neo Slim 3000 に載っている XPT4890 互換らしい。... といっても互換品は沢山あり、LM4890, TPA2005D1 など。

    さらについで。目立つ FMラジオの空きパターン。これのピン配置

    (5) GND 3.3V (6)
    (4) R-LINE W/R (7)
    (3) L-LINE MODE(L) (8)
    (2) NC SCL (9)
    (1) ANT SDA (10)

  • SCL/SDA が、2.2K(222) でプルアップされているようだ。少々低抵抗値 10K にすべきでは? (ちなみに、実際に FMラジオが付いている Neo Slim 3000 では 4.7K(472) でプルアップ。付いていない A-33 は プルアップのパターンだけ。)

    ちなみに、SCL/SDA は 4mA のクラスの I/O ピンで Typ. なら L 7.4mA / H 10.2mA 流せることになっている。... ここに LED を つなげて デバックするのも良いかも知れない。

  • I2C なら 8 番の MODE が L レベルになっているはず。ライン入力は、付けるデバイスから数字をとると 115 mVr(フルレンジとは限らない)。
  • 3.3V は、FET スイッチ 経由かも知れない。どれだけ電流を取れるか不明。
  • FM モジュールは、なぜか bottom view 基準で番号が付いていて、上下が逆になる。


32MB 化したマシン(2 号機、識別シール 黄色) が動いた !



写真を見ていたら、JZ4725B の足にハンダが 飛んでいた。
これを 細いものでゴリゴリして外したら ... 立ち上がった。

あとは、64MB 機 (1 号機 識別シール 緑) 。

写真を見ると、左側はハンダ付けされているように見えない。ハンダの盛りが少ないのに 押さえるだけなのは無理があった。( すこしランドに ハンダを盛っておけば良かった)

ハンダ付けをちゃんとすれば動くかも知れない。

    ちなみに .. 今回の電子工作は、かなりテキトーにやっている。それは、1回 2回の失敗ならまた買えばよいと思っているから。

    今回のような ショートが起きたら、IC が破壊されるかも知れない。失敗したくないなら、やはりちゃんとチェックすべき。

    今回はテキトーだといっても 一応 気を付けたことはある。ちょっと書いておくと

    • バッテリーは必ず外す。
      電源スイッチがあるといっても RTC は通電されている。今回のようにショートしたところが RTC 周りだと結構やばい。
    • 外す際、力をかけない
      ランドが剥がれたらもう失敗確定。決して力をかけて外さない。
    • SDRAM を付ける前に ランド間のブリッジをチェックする。
      ブリッジがあると SDRAM を付けたあとではどうにもならない。いまはデジカメがあるので、(ちゃんと撮れるなら)写真のほうがわかりやすい。
    • 清掃する。
      写真をとっても良くわからないかも知れないので、綺麗にしておく。
      よく見ると、ハンダが玉になって 基板に付いていたりする。こういうのを取っておくためにも、綿棒を使って綺麗にする。


64MB 化したマシン(1 号機、識別シール 緑) が動いた !


SDRAM のハンダをつけ直したら立ち上がった。ケースにいれたところ、また動かなくなったので、再度やりなおしたら動いた。ケースに入れても OK 。



実をいうと、バッテリーを取り付けるあたりが、ホットボンドで汚いので、地道に取り除いたりしていた。ついでに、FM モジュールのパターンにハンダを盛ったりも。



さらに水晶周りも、ゴム系の接着剤で汚かったので剥がしたりもしてた。写真では、32.768 が見えている。右の水晶は、12.000。ちょっとやりすぎて足が外れたりしたので、つけ直している。

12.000 の 刻印 は下向きにしてしまったので見えない。

このマシンを Linux の移植ベースにしようと思う。

.. とか書きつつも既にこんな状態




デバッグ用に 1608サイズLED(,)を付けた ボードを作り それに接続するつもり。

    よく考えたら、2.2K のプルアップが付いている。H レベルで点灯するようにすると プルアップで点灯してしまうかも知れない。
    それに、I2C は、Hi-Z と Lレベルで通信する。H レベルにするのは、まずいケースがあるかも知れない。。

    L で点灯するようにした。電流制限抵抗は、 300Ωにした。
    ( 3.3 - 1.7 ) / 300 : 5.3mA の計算なのだが、これでも明るすぎる。1KΩでも良いのかも知れない。


シリアル TxD は使わない。引き出すのは出来そうだが耐久性に難がある。あと、シリアルに頼らないデバッグに挑戦したい。

改造メモ

電子工作で、どんな改造をしてみたいかのメモ:

  • カップリング コンデンサ の付け替え (A-33)
    47uF を 100uF にする。
    低音が出るようになるか 見てみたい。
    P5-5 も 47uF でダメだが 抵抗の変更も合わせてする必要あり。

  • SDRAM 換装 (A-33)
    調子に載って A-33 も改造する。2 台の A-33 のうち 1 台は 32MB に。
    バッテリーのもちは、確実に悪くなるが Linux を動かしたい以上 やむを得ない。
    残り 1 個の 64MB は温存。Linux が動いたものの中で選択。

  • I2C のプルアップ抵抗の取り外し(A-41)
    忘れていた。A-41 の 2.2KΩ を 外して 10KΩにするか 、外したままにする。( A-33 は付いていない -- どうするか考えて統一しよう)

  • I2C 引き出し (P5-5)
    まずは、不明なFM ラジオモジュールの解析ができるか練習。
    うまくいけば、謎IC の解析にも挑戦。

  • SDRAM 換装 (8bit-64MBx2)
    これはあきらめてはいない。が、Linux が動き 実際に 64MB で不足するところまで来たら考える。
    候補は、2 段にするスペースがある P5-5 か A-33/A-41(新たに買うかも) 。(Neo Slim 3000は液晶が上に載るので無理)

  • E705A の USBBOOT アダプタ。
    買ってはみたが死蔵状態。USBBOOT は、USB デバイスの線を外に引き出さないと不可能。分解しなくとも 端子は出ている。この端子をどうやって引き出すか悩んでいたが、microSD/SDカード 変換を分解すると、使えそうな 端子が出てきた。
     - SDカードソケットの端子使ったほうが良いかも。ソケットは、100均 の SDカードリーダー分解しても取り出せる。

    これも PMPでLinuxが動いた後の話。


追記: ところで、増やした RAM は、オリジナルのファームウェアで役に立つのだろうか?

基本的には、役に立たない。なぜなら 汎用マシンではないからだ。搭載されているメモリで動作するように作られているわけだし、それ以上は使おうとしても使えない。

ただし、DISK のキャッシュ (PMPだから MicroSD/SDカードのキャッシュ)があり先読みしているとすれば、役に立つかもしれない。実際 MicroSD/SDカード から動画を再生すると、時々息継ぎみたいな現象が起きる。これが直ると嬉しいといえば嬉しい。

それはともかく、次のことをしなければ、使えるものも使えないだろう。

  • SDRAM の設定。Jz47xx では EMC に対して行う。設定しなければ、メモリは使えない。通常この処理は ブートローダの仕事。なぜならば、カーネルを ロードするために 必要だからだ。そして、設定を変えることはできない。
  • メモリ量の カーネルへの通知。カーネルによっては自分で調べるかも知れないのだが、通常そのような無駄なことはしない。もちろんブートローダの仕事。


さて、こういうことを調べるにはどうしたらよいのだろう?

まずは、ブートローダを逆アセンブルしなければならない。バイナリの逆アセンブルは厳しいので、一旦アセンブラを通す。

  • 適当な Cファイルを作って、-S オプションで アセンブラソースを作る。
  • バイナリを 変換する プログラム( or スクリプト)をつくり、
       .byte  0xXX,0xXX,0xXX ... 
    という形式にする。
  • 最初に作ったアセンブラソースの 中身を抜いて 変換したデータと入れ替える。
  • コンパイルして、mipsel-linux-objdump -d で逆アセンブルする。

こういう手順で作れるのだが ... それをどうやってみるのか?


  • EMC の BASE アドレス は、0xb3010000 である。
  • mips では 32bit を一度にロードすることはできず、

    lui 0x3b01

    という風にする。
  • 逆アセンブルしたものに対して 0x3b01 というパターンを探す。


探してみると A-41 では 9 ヶ所出てきた。... そういえば Neo Slim 3000 は 32MB だ。どうなっているのだろう? .. と思い見てみると ... 8 ヶ所。そのうち 前の 4ヶ所は アドレスが一致。

ソースのベースが同じなのだろう。設定自体は たぶん簡単で バッチも作れそう。... だが、カーネルへの通知は難しい。2 つのブートローダを完全に理解できれば、あるいは可能かも知れない。

posted by すz at 02:04| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

2010年09月02日

P5-5 (PMP3100後継機)

以前 PMP3100 を勢いで買ったのだが、予想に反して Jz4725(無印)だった。

Jz4725(無印) も Jz4725Bも おなじようなものだと思っていたのだが、調べるうちに 全然違うことが分かってきた。Jz4725(無印) は、Jz4740 ファミリーで、Jz4725B は Jz4750 ファミリー。
Port のマッピングが ファミリーで 全然違うので、Jz4725(無印) と Jz4740 は同じカーネルにできる可能性があるが、 Jz4725(無印) と Jz4725B は同じにできない。




そのうち、後継機の P5-5 が FocalPriceから出たので気になっていた。DealExtreme で PMP3100として売られているのも実は P5-5 だと知ったので、ひとつ入手しておくことにした。

    後継機と言っても ハードウェアは、CPU を載せ替えて、ボタン や スイッチなどの印字を 妥当なものに修正しただけに思える。
    -- 最初の PMP3100 は、HOLD, ON/OFF の表示が逆 。あと、2つめの イヤホンジャックに AV-OUT と印字されていた。
    CPU を載せ替えるのは、たぶん入手できなくなったから。
    ファームウェアも前のが動かないし、刷新することになったのだろう。

なにかものを作る場合、だれも持っていなさそうな aneca をターケットにするより 数が出て 安定供給されそうな P5-5 をターゲットにしたほうが良いのだ。

aneca は自分が気に入ったからターゲットにするのだが、気が済んだら P5-5 もターゲットにしたいと思う。

まだ入手しただけだが、Jz4725B なのは確認できた。あとはメモリサイズを一応確認してみる。ついでにメモリが 32MB になったりしてると嬉しい。


    ちょっと USBBOOT で確認

    usbboot :> nquery 0 0
    CPU data: Boot4750
    ID of No.0 device No.0 flash:
    Vendor ID :0xec
    Product ID :0xd5
    Chip ID :0x14
    Page ID :0xb6
    Plane ID :0x74


    4K Page の K9XXG08UXM (2GB) だった。

    次は RAM サイズ。USBBOOT の cfg ファイルに

    BUSWIDTH = 16
    BANKS = 4
    ROWADDR = 13
    COLADDR = 9

    という設定がしてあって

    SDRAM Total size is 32 MB, work in 4 bank and 16 bit mode

    というメッセージがでる。で、この情報を元に CPU の SDRAM 設定をする。CPU は、32MB だと思ってアクセスするわけだが、実際に 16MB しかない場合、データ が 循環する。bank が 上位 2 bit になるので、8MB が実は 4MB + 同じデータの 4MB ということになる。

    W9812G6PH-6 を使っていて 16MB しかないのが明らかな A-41 でまずは確認。

    0x81c00dd4 : 00 00 1c 3c 2c 60 9c 27 21 e0 99 03 d0 ff bd 27
    0x81800dd4 : 00 00 1c 3c 2c 60 9c 27 21 e0 99 03 d0 ff bd 27

    次に A5-5 。... 結果はまったく同じだった。これで RAM 容量は 16MB だと分かった。

    ところで、... 16MB 用のマシン に 64MB の RAM を入れるとどうなるのだろう? OK そうなのだが、A12(pin 18) に配線されているのが条件。PMP3100 だが写真を見ると SDRAM の方に配線されているから 問題ないはず。


よくよく考えると、16MB では DINGUX 並のことはできない。RAM の換装が必須だが 電子工作が趣味ならともかく、普通の人が RAM の換装などできるはずがない。そうすると ターゲットにする意味がなくなってしまう。 -- ただ、このマシンは 裏蓋をあけるとすぐ RAM にアクセスでき、周りにスペースもあるので 換装自体は 最もやりやすい。最初に RAM 換装してみようと 思っているマシンだったりする。

GPIO の 解析


    簡単そうなのが、microSD のセンスと イヤホンのセンスだったので同じことをやってみる。


    初期状態
    PAPIN: 0000ffff
    PBPIN: 823f5f0c
    PCPIN: ffdfdcff
    PDPIN: fd7fffff

    microSD なし PCPIN: ffdfdcff
    microSD あり PCPIN: ffcfdcff
    ありで PC20 が L に変化

    phone1 あり -- 変化なし
    phone2 あり -- 変化なし


    分かったのは、microSD のみ。デフォルトの pullup を落とすとかしないと分からないのだろうか? それとも コントローラ経由?

    さて PC10 からの PWM は 110111 (MSB が PC15)のビット列。
    これを見るとバックライトは、PC13/PWM3/UART-RxD のように思える。
    実際やってみると当たり。-- まぁこれは 選択枝がないようなもの。... それはともかく、コントーラの制御に UART を使っているものとばかり思っていたのだが違うのかも知れない。


すぐわかるのはここまで。他はどうしよう。

    課題1 PHONE1/PHONE2 のセンス

    Linux が動いてからでも遅くない。とりあえずパス。

    課題2 ボタンの制御

    これはどうやったら分かるのだろう? 配線もわからなければ、制御するための プロトコルも分からない。

    こういうのに近いものがあるとすれば ... A-330 のワイヤレスコントローラか。受信部にマイクロコントローラが付いているところから よく知られているコントローラ互換のように思えるのだが ...

    ロジアナ使うにしても できることは、コントローラ自体の PIN の変化が分かるだけ。分析すれば どのように制御しているかは分かるだろう。で、GPIO がどう配線されているかを見つけるのはどうしよう。... テスターで頑張ればなんとかなるか。

    課題3 スピーカー出力切り替え

    これも 後回しで問題ない。

    課題4 PHONE の ポップノイズ対策 (ないと思うがあるかも知れない)

    課題5 LCD の制御

    LCD のつなぎ方は、割と決まっている。特に 2.8 inch なら A-320 などと 同じはず。-- と思ったが、A-320 の 新しいタイプ ILI9331 は SLCD(SmartLCD: HSYNC/VSYNC を使わない) 接続だそうだ。

    確かめてみることはできるだろう。DINGUX の hwinit を参考にすれば 良さそうだ。... ソースコードの情報は、dingoo-linux の ここ。svn でダウンロードできる。


    課題6 MicroSD の CS

    MSC1 は、CLK/CMD/D0 のみ。CS は GPIO でやることになっているようだ。そうすると PIN を見つけないと MicroSD が使えない。

    これは基本機能なので重要だ。なんとか見つけないと。... と思ったのだが、どうも SPI モードとは違うらしく 上記の線だけで良いのかも。


付録 PMP3100(旧機種) の基板写真


P5-5 JZ4725B ピンアサイン表 (作成中)

凡例 : x 割り当てに選択の余地がないピン
o A-41 固有の割り当てで判明したピン
? 不明なピン

Jz4725B

? 2 PD18 LCD_PCK(LCD)

? 48 PC15 PWM5

? 54 PC20 WAIT(SRAM)
? 55 PC22 CS2/MSC0_D3

o 57 PC13 PWM3/UART0_RxD(UART)
o 58 PC12 PWM2/UART0_TxD(UART) T1
? 59 PC11 PWM1/I2C_SCK(I2C)
? 60 PC10 PWM0/I2C_SDA(I2C)

? 68 ADIN1

x 84 PPRST(RTC)
o 85 PB31 WKUP(RTC)
x 86 PWRON(RTC)

x 100 BOOT_SEL0
x 101 BOOT_SEL1
? 102 PD23 LCD_SPL(LCD)
? 103 PD22 LCD_CLS(LCD)

? 105 PD25 LCD_REV(LCD)

? 107 PD24 LCD_PS(LCD)
x 108 PD20 LCD_VSYNC(LCD)
x 109 PD19 LCD_HSYNC(LCD)
? 110 PD18 LCD_DE(LCD)
? 111 PD17 LCD_D17(LCD)
? 112 PD16 LCD_D16(LCD)



P5-5 JZ4725B 判明ピン
バックライト:
o 57 PC13 PWM3/UART0_RxD(UART) H で ON
microSD センス:
o 54 PC20 WAIT(SRAM) L で microSD あり


JZ4725B 調査対象ピン

制御候補

? 48 PC15 PWM5/A18(SRAM)

専用機能
? 57 PC13 PWM3/UART0_RxD(UART)
? 58 PC12 PWM2/UART0_TxD(UART)
? 59 PC11 PWM1/I2C_SCK(I2C)
? 60 PC10 PWM0/I2C_SDA(I2C)
? 68 ADIN1

電源制御
x 84 PPRST(RTC)
x 85 PB31 WKUP(RTC)
x 86 PWRON(RTC)

GPIO 候補
? 54 PC20 WAIT(SRAM)
? 102 PD23 LCD_SPL(LCD)
? 103 PD22 LCD_CLS(LCD)
? 105 PD25 LCD_REV(LCD)
? 107 PD24 LCD_PS(LCD)
? 111 PD17 LCD_D17(LCD)
? 112 PD16 LCD_D16(LCD)
+ UART ?
posted by すz at 01:30| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

aneca A-33

またもや買ってしまった。





今度は、aneca A-33 -- FocalPrice だと 37.80 ドル

実際に買ったところは、everbuying で もうちょっと安い 33.93 ドル。-- まぁ有名でないし勧められるかどうかわからないので、ForcalPrice の方を先に紹介しておく。

追記 10/10/15: everbuying は売り切れた。

    2-3 回利用してみたが、対応は悪くない。ただ 品切れになったから姉妹ショップから買えとか変なことを言ってきたりする。安いのも B級品とかで 品質が悪いのかも知れない。
    あと、受け取りまで やたら時間がかかる。20 日以上が普通で FocalPrice よりひどいかも。

33.93 ドルだと 87 円換算で 3000円を切るレベルの値段。これで 16:9 400x240 のディスプレイと FLASH 4GB のモデルが手に入る。

ただ、これは FM ラジオもスピーカーも付いていないようだ。で、なぜかストップウォッチが付いている。

    使わないものは、ないほうがスッキリする。ただ FM ラジオのパターンは線を引き出すために付いていて欲しい。-- taobao で売っているのには、FM が付いているからパターンはあるようだ。ちなみに、バッテリーは 600mAH だそうだ。

ボタンは、サイドに 5 つと、液晶面に 1 つ。A-41 より 1 つ多い。

電源スイッチも反対側のサイドに付いている。たぶん例によってハードスイッチ。-- 開発するには、ソフトで電源を切るタイプ(A-320 など)より便利。

A-41 と同じ背景だし おなじ Jz4725B なのだろう。メモリは 16MB のはず。(PMP 機能だけならそれ以上は積まないだろう)

aneca でのファームウェアはカスタマイズのレベルが高かった。これも同じはず。

    ひどい日本語が修正されているし、カレンダーもまとも。
    フォントのサイズも変更されてて、ちゃんと見栄え良く画面に収めるようにしている。
    あと SJIS で埋め込んだ ID3タグがちゃんと表示されるし、EBOOK も UTF-8 なら表示される。(.. これは P5-5 でも OK だからFWのベースに入っているのだろう)
    メニューもなにか増えている。ロックができたりするし。

H.264 は無理だが xvid 程度の動画を見たり、mp3 を聞くなら実用として使っても便利そう。

改造とかの面でいうと、スイッチの配置からみて ボードはたぶん 筐体 の半分ぐらいで 取り出した場合コンパクトで良さそう。あと、液晶面のスイッチの周りになにか仕込むスペースがありそう。

... というわけで A-41 より気に入りそうな感じ。

こんな感じで、気に入りそうだとすぐ買ってしまっている。そのかわり Andoid とか Arduno(電子工作むけのボード)は、買わないのだ。これでよいのだ。(実は Android は1つ購入。だが、当面これだけの予定)

追記:入手できた。

大きさは、縦 9.8cm 幅 5.1cm 厚さ 1.0cm 。

    ちょっと iphone とかのサイズ比較。(ケースが使えるかの判断用)
     iphone4 : 115.2 mm x 58.6 mm x 9.3 mm
     ipod touch2 : 110mm x 61.8 mm x 8.5 mm
     ipod touch4 : 110mm x 58.9 mm x 7.2 mm

スイッチは左サイド 下 に電源スイッチ(スライドSW) 。右サイドに +/- , ←/→ , PLAY/PAUSE の 5 個。と液晶面 下に 1つ (M)。ケースはプラスチック。サイドは メッキしたプラスチック。

まずは、機能の確認。A-41 とまったく同じ。ストップウォッチなどないし、スピーカも付いている。電源スイッチも同じでただちに電源OFF にできる。あと気がついたのだが PLAY/PAUSE ボタンの長押しでシャットダウンする。そして、その状態から PLAY/PAUSE ボタンで電源ON する。

CPU は、予想どおり JZ4725B 。Mと書いてある 液晶面のボタンを押しながらUSBに挿すことで USBBOOT になる。


ケースはプラスチックで嵌め合わせ。精度は良さそうなのだが、なぜかサイドに隙間がある。おかげで分解は簡単で、裏蓋が簡単に外れた。



見ると バッテリーは 650mAH で A-41 と同じものが使われている。

(拡大)

基板は、A-41 より少し大きい感じ。スピーカーのところが U字型に切り抜かれている。FM ラジオモジュール用のパターンもある。あと、メモリは 16MB。

製造は、2010/8月 って 最近なのか。あ、下のコイルが欠けている。(よくあることだが、ちと残念)。メモリは、W9812G6PH-6 で FLASH は、29F32G08CBAAA とマーク (Micron MT29F32G08 ?)。

    メモリを換装するには、基板をはずさないといけない。ネジが 2 つあるのでそれを外すのか? 液晶を含めまるごと外れるような気がするのだが ...

    ここから先の分解は、ちょっと慎重にならないとマズそう。液晶のところを見たいのだが ... 今回はパス。

    ちなみに、もうひとつの方も裏蓋を開けているのだが、やはり 2010/8 月。箱が違ったので 1つは古いと思ったのだが違った。

    あとで気がついたのだが、簡単とか言いながら 裏から見て 左中央のツメを折ってしまっている。-- 破片が見つからないし、スキマがあったのはこれが原因かも知れず、最初からだったかも。あと、microSD が入っているとひっかかって裏蓋をはずせない。すぐ忘れてやってしまうので要注意。

A-41 と同じような感じ。回路的にもほぼ同じなのだろう。解析は楽そうだ。

満充電になると、充電のアニメーションが止まることに気がついた。充電中に電圧を測定しても満充電かどうか分からないはずなので、充電IC の 状態をセンスするために GPIO が割り当てられているはず。

    A-41 も調べてみたが、どうも同じようだ。PLAY/PAUSE ボタンでの 電源 ON/OFF も同じだった。-- そういえば WKUP ピンが割り当てられているのだった。 WKUP は、サスペンド/ハイバネーションからの復帰ができる。ハイバネーションといっても 状態をセーブしてなけれれば電源ON と同じ。

    この電源 ON/OFF 機能を知らなかったのだが、P5-5 も同じだった。Neo Slim 3000 にも 機能は付いていた。(OFF はできるが ON でハングアップする)。ボタンは、P5-5 が SELECT の位置 (電源マークあり) 。Neo Slim 3000 は L ボタン(これも電源マーク)

    それはともかく、普段は PLAY/PAUSE ボタンで 電源 ON/OFF するようにしていれば、アラーム機能も付けられるわけか。
    (ちなみに、ハイバネーションは電源 OFF と大差ないから消費電力は気にしなくて良い)

少々使ってみた。液晶は 3inch 432x240 。視野角は予想より狭い。
H.264 の 動画の再生は 400x226@30fps でも音ズレするのだが、動きが少ない場面ではちゃんと再生できている。640x360@24fps も見てみたが、明らかに遅くスローモーションのようになる。どうもフレームスキップはしてないようだ。

    Jz47xx は、SIMD 命令(XMU) を使ったソフトコーディック。いままで買った JZ4725B の挙動は全部同じなので コードが共通なのだろう。Jz47xx の潜在能力はもう少しあると思えるので、自作ソフトが動かせるようになったらチューニングしてみたい。
    あと、オーバークロックもしてみたい。180nm プロセスのJz4740 は 400MHz+αで動作するようだが、Jz4725B は、160nm でオーバークロック耐性が高いはず。400 x 180/160 = 450 なので 450MHz+α で動くかも知れない。

不具合はちょっとある。USB の接触が悪く。接続が切れたりする。これは、使っているうちに良くなるかも。

実は 2 つ買ったのだが、1 つはいくら充電しても 充電が進まないことが判った。バッテリーには過放電保護が付いているようだし 膨らんでもいないので、劣化が理由ではないかも知れない。-- 充電回路が変なのか?

    一晩充電したら、充電完了した。バッテリーが弱っていて予備充電状態が長かったのかも。

    追記: 接触は問題ないようだ。バッテリーも弱っている感じではない。

もうひとつ気になることがある。電源SW OFFで接続すると バックライトがチラつく。電源SW ON にすると それが収まる。この現象は両方で起きる。

電源スイッチが入っていると バッテリーからも電源供給するような回路でも入っているのだろうか?

    バックライトがちらつくのは、バッテリーの残量低下でも起きた。どうも 4 つあるうちの 1つ 2つが、電圧が低下すると消えるようだ。ちなみにバックライトは 並列で 昇圧回路は入っていないため、電圧の影響をうけやすい。

所感:

  • 基本は、A-41 と同じだが、表示できる面積と情報量が多い。Linux を動かす前提なら、情報量が多い方が嬉しい。
  • Bluetooth を付けてみたい。その前提ならプラケースの方が加工も楽だし、電波を通すし都合が良い。ケースは嵌めるだけなので、スライドさせる A-41 より 加工の自由度が高そう。

    ちなみに、デバイスを付けるとしても I2C しか I/O がない。シリアルさえ使えない。Bluetooth を付けるにも スレーブコントローラが必要。 こういうものでも、司令塔にはなれるので、ロボットとかの 制御に使えるかもしれない。
  • オーバクロックの面では、A-41 も A-33 も CPU の上の空間は空いている。P5-5 は バッテリーがあり、Neo Slim 3000 はすぐ LCD。SDRAM に関しても同じ。アルミケースの A-41 の方が放熱はしやすいが、A-33 も ケースに穴を空けてしまえば ヒートシンクさえ付けられるので 問題ない。
  • LCD の視野角が狭いのが残念。まぁ無理を言っても仕方ないし ..

    しばらく使って..

  • A-41 と比べてみたら低音が出ていないし、同じボリュームでも音が小さめ。-- カップリングコンデンサが 47uF になってたりしている。

  • メニューの移動で音が聞こえる。電源が弱いようだ。(A-41 は聞こえない)

  • A-41 は、持ち歩くとき ボタンを誤って押してしまうことが結構あったのだが、これはボタンがサイドだからかあまりない。

    サウンドは問題あるが、こちらのほうが使い勝手が良いようだ。

これと A-41 を本命として Linux の移植をしていきたい。

    換装用 メモリは、32MB 多数 と 64MB 2 個を確保。

    Linux を動かすマシンは 32MB 以上にするつもり。

    64MB は 開発に使うマシン優先。ひとつは、A-41 にしたい。

    -- 64MB は消費電流が大きいうえに、133MHz で クロックアップ耐性が低い。メモリが足りるなら 32MB にしたい。

さて、そろそろ簡単なところを解析.

NAND FLASH :


usbboot :> nquery 0 0
CPU data: Boot4750
ID of No.0 device No.0 flash:
Vendor ID :0x2c
Product ID :0xd7
Chip ID :0x94
Page ID :0x3e
Plane ID :0x84


Page ID から 消去ブロック 512KB / ページサイズ 4KB 。
Plane ID から 16Gb プレーン x 2 = 4GB 。

ということが分かる。

バックライト は、PC13 (PWM3) で A-41 と同じだった。
あと、MENU と PLAY/PAUSE 以外の ボタンのどれを押しても PD17 が L になるのも、A-41 と同じ。


    default:
    PAPIN: 00008f83
    PBPIN: 823f7b3c
    PCPIN: ffdfdcff
    PDPIN: ffffffff

    M button:
    PDPIN: ffffffff (not pressed)
    PDPIN: ffdfffff (pressed)

    PLAY/PAUSE button:
    PBPIN: 823f7b3c (not pressed)
    PBPIN: 023f7f3c (pressed)

    MicroSD
    PCPIN: ffdfdcff (not inserted)
    PCPIN: ffcfdcff (inserted)


    A-33 JZ4725B 判明ピン
    バックライト:
    o 57 PC13 PWM3/UART0_RxD(UART) H で ON (A-41 と同じ)
    microSD センス:
    o 54 PC20 WAIT(SRAM) L で microSD あり (A-41 と同じ)
    ボタン MENU "M" :
    o PD21 LCD_DE(LCD) 押し下げで L (A-41 と同じ)
    ボタン PLAY/PAUSE "⇒II" :
    PB31 WKUP(RTC) 押し下げで L (A-41 と同じ)
    スピーカーAMP :
    PD18 LCD_DE(LCD)
    LCD : ILI9326 16bit SmartLCD 接続
      LCD RESET : PD23 LCD_SPL(LCD) (A-41 と同じ)
      LCD CS : PD22 LCD_CLS(LCD) (A-41 と同じ)

    要調査:
  • PHONE センス
    -- A-41 にはあったが、見つからない。なしでも実装できるようだからないのかも。
    カップリングコンデンサは、J476 になっている。周りの抵抗は 470 x2 と 330 x 2 。よく分からないものの 小容量 コンデンサ を使えるようにするための抵抗 と MIX 用?

      A-41 と同じイヤホンで比べてみたのだが、明らかに低音が出ていない。47uF ではダメで最低 100uF でないと。-- いずれ付け替えるつもり。

      あと、電源も弱いようだ。メニューを移動したとき、CPU が動作する音が聞こえる。-- まるで一昔前のパソコン。A-41 は聞こえない。

  • スピーカースイッチ
  • 満充電センス
    -- 存在しそうなことは分かった。しばらく使って GPIO の差分を見てみる。→ GPIO には変化なし -- 違うのか?
  • microSD CS (不要)
    -- Programming Manual に 1bit モードの記述がある .. ドライバもサポートしている(CONFIG_JZ4750_MSC1_BUS_1)。GPIO はどうも HOTPLUG_PIN (上記 MicroSD センス)のみを使うようだ。
  • スイッチセンス (+/ー/←/→ ) (PD17 - ADC?)
    -- ADC が使えるのは、Linux が動いた後なので解析は先延ばし。
  • LCDの接続。
    -- 接続自体は済みなので不要といえば不要。HSYNC/VSYNC を使う接続(Normal LCD)なら 初期化の方法だけ分かれば良い。コントローラを使う SLCD の接続(Smart LCD)なら コントローラの詳細を知る必要がある。

    追記:Smart LCD 接続。コントローラも判明。432x240 の ILI2326 。
    CS/RESET は、GPIO を使うが
     LCD RESET = 102 PD23 LCD_SPL(LCD)
     LCD CS = 103 PD22 LCD_CLS(LCD)
    だということが分かった。(A-41 も 同じピン割り当て)


追記:再度分解

液晶の接続を見るために再度分解した。

やはりネジは外す必要があった。あと、LCD の一部が弱く接着されていた。それ以外に固定しているものはなかった。




これは、全部を外したあとのケース。どうなっているか記録。



液晶は、0.8mm ピッチ 40 pin だった。HUARUI T-0052-B というものらしい。-- なんか NC が多い。
コンデンサ(CXX)やダイオード(DX) ばかりで抵抗がない。
バス幅などの設定はないようだ。
写真をじっくりみると、線が集中しているところ(8-30)、18pin 分と 7pin 分に分類できかも。-- 上の接続部分を見ると、そこで間がある 。通常 液晶の接続部は、COG の LSI と 1:1 に対応している。間があるということは、信号的にも分類が変わるかも知れない。要するに 18pin 分が DB0-17 ではないか?
それはともかく、LSI 上の配列と信号の配列には相関性がある。ILI9325/ILI9326 ともに LSI の配列は、

RESET
VSYNC
HSYNC
DOTCLK
DEN (0: enable RGB interface )
Data bus (DB17-DB0)
RD
WR
RS
CS

の順で並んでいる。A-41 のコネクタもこの順。おそらく A-33 も順番だけは、これとほぼ同じはず。

いくつか分かったのでメモ

1 o NC (YU)
2 o NC (XL)
3 o NC (YD)
4 o NC (XR)
5 o GND
6 (RESET ?)
7 o NC
8 (CS?)
9 (RS?)
10 VCC ?
11 (WR?)
12 (RD?)
13 o GND (DB0?)
14-21 DB1-8?
22 o GND (DB9?)
23-30 DB10-17?
31 ?
32 o NC → GND
33 NC
34 ?
35 o GND
36 o LED-A
37 o LED-K → GND
38 o LED-K → GND
39 o LED-K → GND
40 o LED-K → GND


  • HSYNC/VSYNC/DOTCLK/DEN を入れるには信号線が足りない。
  • GND に接続されているピンの関係から DB1-8,DB10-17 の位置を推測した。上記の順と逆順なら、8-12 に CS/RS/WR/RD の順で配置されていそう。そうなると 31-34 のあたりは、LCD によっては、DEN/DOTCLK/HSYNC/VSYNC が配置されているのかも。
  • ILI9326 とか ILI系なのは間違いなさそうだ。あとは、6,8-12,14-21 をロジアナで調べればはっきりするはず。



    これはボタンのところ。一応記録。ボタンに関係するものは、2-3 個のように思えるのに沢山載っている。よく見ると Power 系のデバイス -- 大きなコンデンサや ダイオード 三端子のなにかがある。



    再組み立てに失敗。液晶がずれた。そういえば、ネジもつけ忘れた。で、やり直してみたが、似たような感じになってしまった。

    -- SDRAM をつけたら真面目に組むことにして 当面このままにしよう。
    -- 全部はばらしていないもうひとつの方も 左と下が 1mm ほどずれている。よくよく考えれば、基板を固定すれば LCD の位置はほとんど変えられない。もともとだったとして納得しよう。

    追記:写真集(1号機)

    いくつかパーツを外している。(12MHz Xtal , スピーカアンプ横コンデンサ , カップリングコンデンサ, スピーカー, バッテリー , LCD)

      現在不動状態
    • 写真を取るために、ホットボンドを剥がしたりしていたら、クリスタルの足がもげてしまった。小型の 12MHz の水晶はどこにも売っていなくて焦ったが、使わなくなったカードリーダに入っていた。
    • スピーカーアンプ横コンデンサも 清掃でもげてしまった。
    • それ以外に、32.768 kHz 水晶のランドが剥離。となりの 10MΩ(106) に付けている。
    • (判らないが)スピーカー 用の端子も剥離しかけ。(ハンダ吸い取り線でやってしまった。)
    • カップリングコンデンサは交換途中。
    • 動かないので、LCD を剥がしてしまった。ちょっと乱暴にやったのとハンダ吸い取り線での清掃で、LCD の端子も 剥離しかけがいくつかある。

      動いても LCD を付けないで、調査用にするつもり。
       - 予備を発注 (3,4号機)












    ランド剥離したところについてのメモ


      この 2カ所だが、スピーカーアンプのところは 完全には剥離していない。今後 スピーカを使うつもりもないのだが 一応 瞬間接着剤かなにかで貼りつけておこうと思う。
      問題は 32.768 kHz 水晶。どうも CPU との間を切ってしまっているように見える。

      CPU の 水晶の PIN は、この写真の 右の方 -- ランドしか見えていないピン(81:RTCLK) その左どなり(82:RTCLKO)。

      コンデンサは、106 の下と 左上の白いやつ。CPUから来た線が、 上のコンデンサ,水晶,106(の左端子) に分かれるところを剥がしてしまったらしい。ちなみに 下のコンデンサは、水晶の足と106 と接続した上で 右の抵抗(222)を通して CPU(82:RTCLKO)に接続されている。


    追記:写真集(2号機)




    2号機 も改造した。内容は、バッテリーを外してコネクタを付け、ケース側に 別のバッテリーを接続するというもの。スピーカーも外している。

    • 注意! 中華バッテリー自体危険なものであり、改造はさらに危険な行為。十分な知識とリスクの覚悟がなければ 扱ってはいけない。
       参考:別記事「中華バッテリーについて」

    • 付けたバッテリーは、BC50 (750mAH , $2.46) 2 個並列。

        BC70 (1000mAH, $3.13) というのもある。厚みが 4mm → 6mm と増えるが 底面は同じサイズ(45mm x 37mm) のようだ。
        BC50/BC70 は、端子が横方向なので、ニコイチで向かい合わせることができて都合が良い。

      並列と言っても、保護回路を外して生のバッテリーにした上で、並列にし、別の保護回路を付けている。
       - 別の保護回路にしているのは、元の保護回路は、他の中華バッテリーと違うので信用できないと思ったから。
        実際やばいようだ。
       - わざわざこうやって並列にしているのは、むき出しにしたケース間の電位差をなくすため。ただし、ケースは (+) 側なので、結局絶縁が必要。
       - 工作する際は、ショートに気を付けている。とくに生のバッテリーがショートすると超危険(燃えたり、爆発さえする恐れあり)。
       - 並列にする際には、 抵抗で一回接続して、電圧が同じにしている。
       - 容量が 1500mAH になった計算だが、本当に それぐらいありそう。起動しっぱなし (アイドル、LCD OFF) で 36H ぐらいもった。

    • 青緑なのは、0.3mm 厚 SMDプロトタイピング基板 (100円)
       - 合わせ目を隠す + バッテリーのガードが目的。

    • 金色なのは、ポリミドテープ ($2.19)
       - 絶縁と バッテリーの汚れ(のりで汚い)を隠すのが目的。

    • ケーブルは、スピーカー用の穴を広げて そこから内部に配線。

    • ケースにバッテリーを付けたのは、内部に回路を仕込めるスペースを確保する目的もある。

    • 出来上がりの サイズを見ると 底面が 45mm x 80mm -- A-44 にも合うようにできそう。今度は、BC70 で試してみよう。 (買えなかったし、やばそうな気もするのでパス)

    • 電圧を調べてみた。
       - シャットダウン 3.44V
       - 満充電 4.17V
      ちゃんと制御できているようだ。
    • 動画再生時間 は、(明るさ 4で) 6 時間ちょっと。
    • 時計が出ている画面で backlight ON (明るさ 4) だと 9時間30分 (+α)

      • LED Off だと 36H で ON だと 9.5H 。実際に 1500mAH とすると、Off 42mA / On 158mA で 差が 116mA もある。昇圧はしておらず 4 個なので LED は たぶん 60mA ぐらい。
      • フル稼働だと 6.3H として 238mA 。LED ON からの 増加は 80mA 。

        適当な計算だが、目安にはなるとおもう。

  • posted by すz at 01:02| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

    2010年06月25日

    Aneca A-41

    focalprice.com で PMP を見ていると Neo slim 3000 と同じ画面のものがあるのに気がついた。

    いろいろ見ているとどうも Aneca というところの製品が多い。

    明らかに同じ画面なのが、A-33 , A-41, A-9 。ちょっとカスタマイズしただけっぽいのが、A-7 , A-32 。

      ちなみに Aneca のサイトを見てみると、A-32 には CPU が 4725B と書いてある。おそらく全部 Jz47xx なのだろう。タッチパネルでない安いモデルは、Jz4725 (か新しいのは Jz4725B) だろう。上位機はわからない。H.264 サポート してたら Jz4755 とかかも知れないが Ingenic に OTG はない。OTG と書いてあるのは違うのだろう。

      あと A-39 と A-57 は、RK2706 系列だそうだ。全部が J47xx ではないようだ。





    これは、その中でも気になった Aneca A-41。 -- 33.8 ドルと安いのも良いのだが、2.4 inch でコンパクト(5cm x 9cm x 1cm) なのが良い。

    電子工作のベースに都合がよさそうなので欲しくなった。

    ちなみに、黒もあるのだが、メニューが違う。旧製品なのか?

      ところで、この A-41 をググってみると focalprice より安いところが見つかった。everbuying.com というところで A-41が 30.24 ドル。free-shipping なのは同じ。--- どうも Aneca 全般が安いようだ。-- 有名ではないようだからリスクはあるが、ここにしようかと思う。

      ちなみに A-33 というのも良さそう。400x240 で 4GB 内蔵で 33.93 ドル。4GB なら A-41 でも 33.81ドルだから お得な感じ。

        追記 10/10/15: everbuying は、A-41(2GB , 黒/ピンク) , A-33 とも売り切れた。

      もうひとつ気になるのは、A-56。 45.79 ドルとちょっと高めだが 400x240 タッチスクリーン。ひょっとして VX747 もどき? JZ4740 なら欲しい。-- これは違った RK2605A だった。

      追記: 結局注文したのだが、shipping のオプションに +10 ドルのやつと +15 ドルのやつがあった。free-shipping は 7 日〜 27日(だったか)かかるそうで船便かも知れない。

      とりあえず記録:
      6/25 注文
      6/30 shipped になり追跡番号が載った RTxxxxxxxxxHK (国際通常書留)
      7/2 日本郵便のサイトに追跡情報が載った 7/2 香港 で引き受け
      7/5 国際交換支店から発送
      7/6 国際交換支店に到着 -- 通関検査待ち
      7/8 受け取り


    さて、最近こんなものばかり集めるようになってしまった。A-41 でいったい何がしたいのか? 良くわからなくなったので整理してみる。

    CPU は Jz4725 , RAM は 8MB or 16MB を想定している。もし、CPU が違ったなら 以下は論外なので注意。

    所有しているのは、Neo Slim 3000 と PMP-3100 。(A330 もあるが、とりあえずは 対象外)。ソフトを作って遊ぶにはこれらで十分なのだ。なのにもかかわらず違うものが欲しいわけだ。

    不満のひとつは、外観がゲーム機だということ。全然別のことをしていても、ゲームをしているように見えるのがちょっと嫌。だから持ち歩くには、できたら タッチパネルタイプか MP3 タイプのほうが嬉しい。

    なので、A-56 とか A-41 が気になった。--- これがたぶん いちばんの理由。

    次の理由は、電子工作観点。外観がゲーム機だと ボタンのスペースの分基板が大きくなる。単なる CPU ボードとして見れば コンパクトなほうが嬉しい。

    で、なにをしたいのか。

    まずは、普通のPMP レベルの機能を組み込んだ装置に仕立てたい。そうしておけば、欲しい機能を自分で組み込めるし、チューニングしたりして より実用的にできたりする。Jz4725 クラスでも 360p の H.264 ぐらいは 表示できてもおかしくないはず。

    次に入れたい機能は、アラーム時計の機能。これを入れるには、おそらくサスペンドをサポートした上で RTC の API を組み込まないといけない。回路的に サスペンドしても無意味なほど消費電流が多いかも知れないのだが ... まぁやってみないことには。

    あと、PC 接続時の環境。普通電源 Off の状態で USB に接続すると勝手に電源が入る。このときに別の環境が立ち上がるようにしておいて、スタンドアローンのときとは違うものになるようにしたい。

    たとえば PC に画面を飛ばす機能 ... これは PC から USB を介してメモリを抜ければ それで良いはず。DMA もできるはずで PMP 側に負荷はかからない。逆も簡単なはず。これを作るのに X やら VNC やらは使わない。できれば USBBOOT のプロトコルに仕込んで ブートローダでも使いたいところ。

    あとキーボードも使えるようにするとか。で、このコネクションを壊さずに ネットワークとして接続できると 嬉しい。

    まぁこういうのは、Neo Slim 3000 と共通だしそっちでやるかも。

    電子工作観点だと まずはメモリの換装。256Mbit の SDRAM なら壊れた 玄箱から取ってこれる。8bit 幅の 512Mbit x2 はリスキーなので、その後。

    あと BlueTooth は付けたい。シリアルで接続できるモジュールがお手軽で良さそうなのだが、シリアルが空いているとは限らない。空いていても信号を引き出せるとは限らないし悩ましいところ。それに装置の値段に吊り合わないぐらい高かったりするし。

      bluetooth は、wii 用が安い。それは こっちの記事に書いた。
      ただ、これが使えるようになったとしても問題がある。筐体に入れるスペースが全くない。裏蓋アルミだし、工夫するにも難しいところがある。ううむ。

    ついでに書くと いろいろなセンサーも。I2C ならなんとかなりそうだし、こっちのほうがお手軽か。

    CPU ボードとして見た場合、液晶を外すことになる。そうしないと十分な信号線を引き出せない。

      デバイスを bus に接続する場合、SRAM インターフェイスを使うものらしい。で SRAM インターフェイスは、ほとんど SDRAM と共用。CS1/CS2 を使って 切り分けるのだが CS1/CS2 も NAND FLASH と共用。 -- NAND FLASH を 2 個載せた場合は、この方法は使えないということだが、まぁ SDRAM のピンから 手配線で 信号線を 引き出したくはないので パス。

      LCD を使う場合は、Smart LCD を使うと write は、キューイング付きの DMA が使えて高速にできる。 read は GPIO を使うしかなく遅い。

      割り込みは、GPIO なら割り込みに設定できるらしく、心配いらない。

    ... まぁ CPU ボードとして使うには ちょっと I/O が貧弱で 高速なデバイスが使えそうにないのが残念。

    しかし... 30.24 ドル(paipalのレートが 92円ぐらいだから 2800円弱) で バッテリーと LCD が付いた CPUボードが入手できるわけで、コストパフォーマンスはすごく良い。

      ちょっと taobao で検索してみた。ANECA ではヒットしないが、安耐克 で見つかった。

      2GB が 155 元/4GB が 200 元 だった(どちらも送料含まず)。1 元 15円とすると 2300円/ 3000円ぐらい。思ったよりは中国国内との価格差が小さい。... というか 4GB は逆転しているような。

      ところで、こちらのスペックには FM ラジオ( 87.5-108MHz)が載っている。-- すくなくとも I2C ( と linein ) は簡単に引き出せそうだ。

      ところで mahdi T552 265元 が気になる。
      4GB 4 inch 480x272 液晶 そして CPU は Jz4755 。

      ここのレビュー分解写真がある。jz4755 なのは 間違いない。

        売っているところをひとつ見つけた。ここ 値段は、$79.80 。Free shipping だが、 Registered Airmail $15.74 というのを見ると不安になる。Express Shipping (3-5 days) - $16.74 が良さそう。-- それはともかく 高い。もっと安いところはないものか。

        ちょっと計算してみた。
        taobao 代行業者の グッズエイト を通すと ... ( 265元 + 中国国内送料 約20元 + EMS送料 60元 ) x 15.5(元→円) + 手数料 500円 = 約 5800円。( これ以外に振込料金 )。

        一方、 ownta.com で Free shipping で妥協すると $79.80 x 83.5 = 約 6700円 。

        思ったほどは安くなかった。... だが、数種類のものをまとめ買いするなら 代行業者は格安かも。

      微星(msi) MT-V656 というのも Jz4755 だそうだ。3 inch で、4GB が 230 元。タッチパネルのように見えるがどこにも書いていないし、画面がボタンタイプと同じようだから違うのだろう。TV-OUT は 付いているし、H.264 は当然のようにサポートしている。

      ちなみに、タッチパネルの MT-V660 というのも出ているが、こちらは RK2806 。値段も 100 元以上高いようだ。

      .. なかなか色々あるようだが、1 万円近くなってしまうと Android のほうが良さそうに思えてくる。とりあえずは安物でいいか。

      MP4 プレイヤー と CPU の対応表を見つけた

      これを見ると、Jz47xx は少ない。


    A-41 到着:

    備品は、イヤホン、USB ケーブル、AC アダプタ(USB 口)

    ちょっと使ってみた範囲では、Neo Slim 3000 とほぼ同じ。ただし ボタンの数が違うので操作性は違う。手持ちの H.264 FLV は 再生するが、やはり音ずれ。

    ボタンの数は 5 つ (M , ←, →, II , VOL) -- クリック感がある。HOLD はない。電源スイッチ Off ですぐ切れるのも Neo Slim 3000 と同じ。

    あと FM はメニューになかった。

    電源OFF の状態で、M ボタンを押しながら PC の USB に挿し込むことで USBBOOT になった。デバイスは Jz4750 として見えているから Jz4725B だろう。

    本体の裏蓋は アルミ。ネジ 1 つを外しスライドさせることで外せる。(microSD をいれていると引っかかる。注意)



    メインボードは、全体の 3/5 ぐらいを占める。(サイズは 54mm x 45mm ) 空いているところはバッテリーのスペース(30mm)。あと、メインボードを U字型に切り取って スピーカが1つ はめ込まれている。

    CPU は 予想通り Jz4725B 。メモリは W9812G6PH-6 (128M bit = 16MB) 。NAND FLASH は表からは見えない。

    FM はモジュールを付けるためのパターンだけがあった。ここから I2C を引き出すのは簡単(なはず)。ただし I2C ではなく SPI での制御かも知れない。未確認なので 決めつけないほうが良いかも知れない。

      その他コメント:
      イヤホンジャックの近くに C107 とマークされた コンデンサが2つ載っている。カップリングコンデンサ 100uF 。値は十分で低音がでないという問題はなさそうだが、たぶん積層セラミックなので 音が歪む。 。-- 黒いパッケージでもタンタルがあることが分かった。そして 3216 / 6.3V は 100uF まである。例えば Rohm の TCTAL0J107M8R 10個で 840円。( ちなみに 47uF の TCA0J476M8R は、10個で 345円 -- だいぶ値段が違う。)

      5本の IC は、右下の 2つと、右上 スピーカーの下の 1 つ。あとスピーカーの左に 8本足。
      右下の2つのうち左のそばに インダクタがあることから これが主電源用(1.8V)の 電源IC だろう。右下の上は USB の近くだから たぶん充電制御用 IC 。右上のもうひとつは、たぶん LCD バックライト用 で、8 本足は スピーカーアンプ。

      それ以外には、3端子の IC がほとんどない。スピーカの下に 1 つ見えるだけ。-- これは何か分からない。ダイオードかも知れないし、レギュレータかも知れない。あるいは、スイッチの機能の MOS FET かも。マークが読めればだいたい判明するが、写真ではちゃんと写っていない。

      写真を撮り直した。
    • 1号機: 64MB 換装後の基板
    • 2号機: 32MB 換装後の基板
      部品がもうすこしはっきり見える。

      MicroSD の左の SOT23-5 は A2IK 、コイルの下にある SOT23-5 は A18T 。

        A2IK は、G9091 ? (G9091 は、LOD で 最大 300mA もれ電流 65uA )。互換性があるのは XC6204 , XC6219 らしい。( 最大 300mA のタイプは 型番に E 〜 H が付く)
        出力は 5番ピンだから、そこの先 .. 右上の 大きめのコンデンサが出力につくコンデンサ。入力は 1 ピンで たぶん 左の 下から 2 番目の小さめなコンデンサが 入力に付くコンデンサ。

        A18T はコイルが付いているし、数字から 1.8V の core 電圧用の 電圧下降型 DC/DC コンバータ IC 。

          周りにダイオードがないから たぶん同期整流型で、Torex XC9236 , Fairchild FAN5307 , Semtech SC189と同じ ピン配置。

             (1) Vin Lx (5)
          (2) GND
          (3) EN Vout (4)

        100uF の周り には、330 (33Ω) が 4 つある。あと 472(4.7K) が 2 つ。2 個セットの抵抗はこれぐらいか。




    バッテリーは、3.7V/650mAH model:YZ453046 (43mm x 29mm) 。ケーブルが付いている基板の裏には、なにかチップが載っている。過放電保護ぐらいはしてそうだ。サイズがぴったりなので、将来交換するときに代替品を探すのに苦労するかも知れない。

      これを殻割りしたらどうかな。5cm x 3.3cm x 0.5cm だから 無理かも。でも、2.38 ドルだし試す価値はあるかも。
      あるいは これ 2.46 ドル 4.5cm x 3.8cm x 0.5cm -- こっちは幅がきつそう。
      置けるスペースは、最大 45mm x 30mm どちらも無理そう。

    まぁこんなものだろう。JZ4725B なのはちょっと嬉しい。メモリは少ないが 必要なら交換するつもりだから無問題。

    ところで 2.4 インチ LCD はどういう接続になっているのだろう? コントローラ内蔵の いわゆる Smart LCD なのだろうか?それとも Jz47xx では一般的な ビデオタイプなんだろうか?

    これを調べるには まずメインボードを外さないといけない。

    メインボードは、3 つのネジ穴があるが、ネジは 1 つしか付いていない。いいかげんだなと思いながらネジを外したが、取れる気配がない。よくよく見たら 基板に ツメが 左右 2 つあってそれで ケースに固定されていた。ちなみに基板はすごく薄い。0.8mm かそれ以下。

    ツメを外したところ、LCD とバッテリーが付いたままで外れた。



    ボタン周りをみたところ、予想どおり タクトスイッチだった。だが予想外なことに タクトスイッチの空きパターンが沢山ある。
    ○マークつきが 4 つあり、それと重なるように超小型のタクトスイッチのパターンも配置されている。

    どうもいくつかの製品をカバーしているようだ。-- だが 2.4 inch の製品など他には無いような..

      同じ信号のボタンの配置を変えられるだけなら魅力はないが、もし使っていない信号が引き出されているなら 電子工作で使えるかも知れない。覚えておこう。

      その他のコメント:

      7002 とマークされた 3端子の IC と、t1A 99 と読める 3端子の IC が2つ使われている。7002 は Nch MOS FET の 2N7002 ? t1A は、NPN Tr ?




    さて液晶側を見てみる。液晶の裏は、薄いシートが貼ってあるだけ。バックライトの光が透き通るところから(まともな)反射板ですらない。

    そこにバッテリーが(相当に強力な)両面テープで貼りつけてある。剥がすと シートが剥がれそうなので、ちょっと浮かして覗くぐらいにしておいた。

    LCD は例によって 0.8mm ピッチのコネクタが基板に直付け。pin 数は 40pin 以下のようだ。たぶん 36 pin 。

      思い出した。2.4 inch のフォトフレームに付いていた
      AF240E1-36B V2.0(R1) DOU // AF240E1-36C V1.0(R2) DOU
      と同じようなものかも知れない。結局ピン配置は分からなかったし機能も分からなかった。
      そういえば、そのとき見つけた "Universal Firmware" というやつは、LCD の型番じゃなく コントローラのID を入力していた。
      動くように接続されているわけだから 事情は同じかも知れない。
      ふうむ。型番らしきものはフレキにあったから、それをメモって コントローラのID を知ることが最初のステップか。

      これと同じっぽい。型番の一部しか覚えていないのだが ...240T36... となってた。そうか 9325 なのか。

      ちなみに、9325 とは、ILI9325 のこと。aitendo で売ってた TFT液晶モジュール(2.4"/Touch付き) もコントローラ自体は同じ。ただしピン配置が違うし、使える機能も違う(はず)。

      36pin タイプの データシートが見つかった。型番は、"MB-TFT-24-S3D-S", "TS024HAADD02-00", "MI0240JT" ググレば 見つかるはず。


      1-3 NC
      4 IM3(0: 16bit 1:18bit)
      5 NC
      6 RESET
      7 VSYNC
      8 HSYNC
      9 DOTCLK
      10 DEN (0: enable RGB interface )
      11-28 Data bus (DB17-DB0)
      29 RD
      30 WR
      31 RS
      32 CS
      33 GND
      34 VCC
      35 LED_K
      36 LED_A

    • 3 つデータシートを見つけてどれも同じなので、間違いなさそう。
    • 1-3,5 pin の NC は、果たしてそうなのかどうか ... 。IM0-IM2 が割当たっていてもおかしくない。... とか思ったが、写真を見れば、シルクでの説明付きのジャンパが。
    • ポイントは DEN で、Smart LCD と ビデオタイプの動作を切り替える。
    • ちなみに LED は 4直列 とかで高電圧。

    • Smart LCD 制御ということは分かった。-- それならば、LCD の CS/RESET が分れば制御できる。テスターで調べたところ
       LCD RESET = 102 PD23 LCD_SPL(LCD)
       LCD CS = 103 PD22 LCD_CLS(LCD)
      だということが分かった。

    • 追記:写真を取り直した。


      chiprise Ver.AC / Date:10/02/02 / Project:XA2418

      と印字されている。これが基板のバージョン。ググると chiprise は様々な PMP で 見られるみたいだ。実際にボードを設計・製造しているメーカー?

      それはともかく、その上の配線パターン。付き合わせると VSYNC/HSYNC/DOTCLK が くっついていて、WR/RS/CS がちゃんと配線されている。... ということは SmartLCD だ。ちなみに DB16/DB17/RD もくっついている。

      どうやって初期化するのか調べる必要がある。ILI9325 or ILI9328 が有力だが、他のコントローラかも知れない。


    そんなことより驚いたのが、NAND FLASH 。1 個しか付いていないのだが、2個目のパターンがあって 端子が スピーカーをまたいでいる。-- 要するに IC の端子の間の部分が切り取られている。ひょっとして、2 個使う製品では U 字型には切り抜かないのだろうか?



    追記: バッテリーのケーブルを外せば 開くことができる。開いたので記念写真。汚れがひどいので 一応清掃。



    こちらは 2 台目。違う液晶が使われていた。

    ちょっと SXD0002 でググってみたら、aj262_v9 2010.1.13 というボードに使われていたことが分かった。さらに aj262_v9 2010.1.13 と FPC でググると ..

    aj262-v8 LCD: FPC-TTHJ17UO - 9328

    というのが見つかった。まぁよくわからないが、とりあえず ILI9328 を仮定しておこう。(コントローラが重要なのは SmartLCD 接続のとき )

    ちょっと USBBOOT してみる

    usbboot :> nquery 0 0
    CPU data: Boot4750
    ID of No.0 device No.0 flash:
    Vendor ID :0xec
    Product ID :0xd5
    Chip ID :0x14
    Page ID :0xb6
    Plane ID :0x74
    Operation status: Success!

    まぁこれは 4K Page の K9XXG08UXM であることを示している。

    次にボタン

    usbboot :> gpior
    gpio_read:
    CPU data: Boot4750
    PAPIN: 00000000
    PBPIN: 823f7d0c
    PCPIN: ffdfdcff
    PDPIN: ffffffff
    --- M button ---
    usbboot :> gpior
    gpio_read:
    CPU data: Boot4750
    PAPIN: 00000000
    PBPIN: 823f7c6c
    PCPIN: 7fdfdcff
    PDPIN: ffdfffff
    ---- > button ---
    usbboot :> gpior
    gpio_read:
    CPU data: Boot4750
    PAPIN: 00000000
    PBPIN: 023f758c
    PCPIN: ffdfdcff
    PDPIN: fffdffff
    ---- < button ----
    usbboot :> gpior
    gpio_read:
    CPU data: Boot4750
    PAPIN: 00000000
    PBPIN: 823f766c
    PCPIN: ffdfdcff
    PDPIN: fffdffff
    --- II buttun ---
    usbboot :> gpior
    gpio_read:
    CPU data: Boot4750
    PAPIN: 00000000
    PBPIN: 023f7c2c
    PCPIN: ffdfdcff
    PDPIN: ffffffff
    --- VOL button ----
    usbboot :> gpior
    gpio_read:
    CPU data: Boot4750
    PAPIN: 00000000
    PBPIN: 823f7d8c
    PCPIN: ffdfdcff
    PDPIN: fffdffff

    うーん実を言うと良くわからない。

    PB31 WKUP(RTC) が 1 → 0 : > と II
    PC31 BOOT_SEL1(USB-BOOT 設定)が 1 → 0 : M
    PD17 LCD_D17(LCD) が 1 → 0 : < と > と VOL
    PD21 LCD_DE(LCD) が 1 → 0 : M

    なんか マトリックスになっているような感じ。マトリックスなら片側が 出力でないと わからないだろうし ...

    それにしても ... WKUP をうまく絡めて来るな。

    LCD のバックライト

      PCPIN: ffdfdcff

      で、PC15-11 は、1101 となっているわけだ。

      PC13 だけ L になっているので怪しいと見て

      gpios 77 0

      としたところ (77 は PC (32 x 2) + 13 ) バックライトが点灯した。

      で、この PC13 の機能は、UART_RxD 。UART は使えないということ。逆に考えると UART_RxD まで使っているということは、空いているポートはないのかも知れない。


    センス系。

      よくよく考えると microSD の抜き差し や イヤホンの抜き差しを 検出するのに PORT を使っているはずで、これは簡単に 特定できる。先に 調べておいたほうが良さそうだ。


      micro SD あり PCPIN: ffcfdcff
      micro SD なし PCPIN: ffdfdcff

      イヤホンあり PDPIN: fdffffff
      イヤホンなし PDPIN: ffffffff

      これで

      microSD あり: WAIT/PC20 が L レベル
      イヤホンあり: LCD_REV/PD25 が L レベル

      というのが判明した。


    ボタンの解析その2

      上記の結果ボタンを押すとなにか変化があるポートは、BOOT_SEL1 を除くと

      PB31 WKUP(RTC) が 1 → 0 : > と II
      PD17 LCD_D17(LCD) が 1 → 0 : < と > と VOL
      PD21 LCD_DE(LCD) が 1 → 0 : M

      それを除いた候補のポートは、

      48 PC15 PWM5/A18(SRAM) (出力では?)
      102 PD23 LCD_SPL(LCD)
      103 PD22 LCD_CLS(LCD)
      107 PD24 LCD_PS(LCD)
      112 PD16 LCD_D16(LCD)

      いろいろなパターンを試してみたのだが、M を押すと いつでも PD21 が L になっている。-- たぶん M は専用 PORT なのだろう。

      PB31 WKUP(RTC) も II を押すといつでも L 。これも専用なのだろう。( >で変化すると書いたが間違い )

      のこるボタンは 3 つのみ。
      この 3 つの何を押しても PD17 が L になる。

      変化する以上ボタンに関係するのは確かだが、どういう意味があるのだろう?

      もしや ... PD17 は共通出力で 出力 H にすべきなのを 出力にしていないから、スイッチに負けて L になっているのではないか?

      だとすると、PD17 を 出力 H にすれば、なにか変化するはず ... と思ったのだが、なにも PORT は変化しない。よもや、ADC で受けているとか。--- ADC は 2 つあって 1つはバッテリーの電圧測定と決まっているが、もう1つは未使用のはず。

      これもまぁいいや。2 つ分かっただけでも収穫。-- デバッグに利用できる。

    バッテリー充電回路の謎

      (写真は、A41写真集を参照)
      表側の写真で 5pin 以上の IC が何に使われているか見当が付いたのだが、その中に バッテリー充電用 IC は含まれていない。バッテリー充電用の回路すら表側にはなさそうな感じ。

      専用IC なら なにもしなくても充電されるので安心なのだが ... 使っていないとなると、どうやって充電しているのか調べる必要あある。

      で、裏側(液晶面)の写真を見ると ... SOT23 が 4 つある。左から A5sSH , t1A(99) , t1A(99), 7002 。

      A5sSH の資料は見つからなかったのだが、A1sSH = AO3401, A2sSH = AO3402 らしいのだ。そうすると A5sSH は AO3405 かも知れない。AO3405 は Pch MOS FET 。

      t1A(99) は、たぶん 1A だけ読んで 一般的な NPN Tr 。

      7002 は 2N7002 (Nch MOS FET) ?

      まぁよく分からないのだが、充電を On/Off できるとすれば、Pch MOS FET が必要で、A5sSH が怪しい。... そうだとして、PORT は何が割りあたるのか? PWM できる ピンを使うのではないか? だとすれば PWM5 ?

      あと気になるのが、USB 横の ダイオード(S4) + 1R5 。安物のフォトフレームは、ダイオード + 4R7 という簡易充電回路で、常に充電するしろものだった。これは、満充電が検出できるから 充電を Off できるはずなのだが、充電そのものは、ダイオード(S4) + 1R5 なのかも知れない。

      あと、満充電が検出できるためには、充電中は、バッテリーを使用しないのが条件のはず。これは バッテリー と 外部電源に それぞれダイオードが入っていれば実現できる。

        A-33 について
        A-33 も兄弟機なので 同じような感じ。ただし表にほとんど載っている。

        8pin 4890
        SOT23-5 A2JB A2JB D19m(+インダクタ)
        SOT23 7002 A5sSH t1A(99) , t1A(99)裏





    A-41 JZ4725B ピンアサイン表 (作成中)

    凡例 : x 割り当てに選択の余地がないピン
    o A-41 固有の割り当てで判明したピン
    . A-41 固有の割り当てだが不明なピン
    ? 不明なピン

    Jz4725B

    ? 2 PD18 LCD_PCK(LCD)

    ? 48 PC15 PWM5

    o 54 PC20 WAIT(SRAM)
    x 55 PC22 CS2/MSC0_D3

    o 57 PC13 PWM3/UART0_RxD(UART)
    o 58 PC12 PWM2/UART0_TxD(UART)
    o 59 PC11 PWM1/I2C_SCK(I2C)
    o 60 PC10 PWM0/I2C_SDA(I2C)

    o 85 PB31 WKUP(RTC)

    x 100 BOOT_SEL0
    x 101 BOOT_SEL1
    o 102 PD23 LCD_SPL(LCD) (LCD RESET)
    o 103 PD22 LCD_CLS(LCD) (LCD CE)

    o 105 PD25 LCD_REV(LCD)

    ? 107 PD24 LCD_PS(LCD)
    x 108 PD20 LCD_VSYNC(LCD) = SLCD WR
    x 109 PD19 LCD_HSYNC(LCD) = SCLD RS
    ? 110 PD18 LCD_DE(LCD) (SPEAKER ?)
    . 111 PD17 LCD_D17(LCD)
    ? 112 PD16 LCD_D16(LCD)



    A-41 JZ4725B 判明ピン
    バックライト:
    o 57 PC13 PWM3/UART0_RxD(UART) H で ON
    イヤホンセンス:
    o 105 PD25 LCD_REV(LCD) L でイヤホンあり
    microSD センス:
    o 54 PC20 WAIT(SRAM) L で microSD あり
    ボタン "M"
    o PD21 LCD_DE(LCD) 押し下げで L
    ボタン "II"
    PB31 WKUP(RTC) 押し下げで L
    LCD RESET :
    PD23 LCD_SPL(LCD) SLCD インターフェイス
    LCD CS :
    PD22 LCD_CLS(LCD) SLCD インターフェイス
    SPEAKER :
    PD18 LCD_DE(LCD) (? A-33 と同じなら)
    JZ4725B 調査対象ピン

    制御候補

    ? 48 PC15 PWM5/A18(SRAM)

    専用機能
    o 57 PC13 PWM3/UART0_RxD(UART)
    o 58 PC12 PWM2/UART0_TxD(UART)
    o 59 PC11 PWM1/I2C_SCK(I2C)
    o 60 PC10 PWM0/I2C_SDA(I2C)
    ? 68 ADIN1

    電源制御
    x 84 PPRST(RTC)
    o 85 PB31 WKUP(RTC)
    x 86 PWRON(RTC)

    GPIO 候補
    o 54 PC20 WAIT(SRAM)
    o 102 PD23 LCD_SPL(LCD)
    o 103 PD22 LCD_CLS(LCD)
    o 105 PD25 LCD_REV(LCD)
    ? 107 PD24 LCD_PS(LCD)
    ? 110 PD18 LCD_DE(LCD) (SPEAKER ?)
    . 111 PD17 LCD_D17(LCD)
    ? 112 PD16 LCD_D16(LCD)

    関連記事:
    posted by すz at 18:25| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

    2010年06月07日

    Neo Slim 3000 が文鎮に

    分解した Neo Slim 3000 を元に戻すことにした。

    といってもちょっとだけ改造。青と赤のLEDを外す。光り方が安っぽい上に、PORT で制御するようになっていないので役に立たない。 dingoo なんかも LED が付いていないし。-- ハンダこての二丁使いで外すのは楽勝にできた。

    次に外したバッテリーやらスピーカーの線をハンダ付けして、組み付け。ボタンが引っ掛かり気味だったので 靴磨き用のシリコンを塗っておいた。

    さて、動作確認。このときは問題なく立ち上がった。-- バッテリーを外していたので時間が設定されていない。時間を設定して一旦電源を落とす。

    次に USB につなげてみたのだが、画面がまくらなまま何も起きない。

    ちょっとあせったのだが、→ボタンを押しての USB 接続で USBBOOT になることが確認できた。

    一旦 USBBOOT にして電源スイッチを ON 。これで USB を抜き差ししても普通に USBBOOT になる。--- どうも電源周りは異常ないようだ。

    よくわからないのだが、ファームウェアアップデートの最中に電源を切るようなことをしたとしか思えない。確か ファームウェアを U-Disk に置いていたから アップデートが動く可能性はあった。

    まぁファームウェアが壊れただけなら問題ない。ちょうど USBBOOT を改造して、元のファームウェアバックアップして戻せるようにしようとしていた所だし、生きている二号機もある。改造に精を出すことにしよう。

    ... というわけで usbboot の調査。

    まず USBBOOT は データ用に IN,OUT 2つの bulk エンドポイントを持っている。コントロール エンドポイントに コマンドを送り それにしたがって データ用エンドポイントを使って送受信する。

    送受信できるデータの量は 最大 1MB 。制限があるが、これだけのバッファを確保している。チェックは特にしていないからこれ以上のデータを送るとどこか壊れる。ホスト側でチェックしないといけない。

    NAND FLASH に書くコマンドは、NAND_PROGRAM。 これにはオプションがあって OOB_ECC を指定すると データ以外に OOB も書いてくれる。転送フォーマットは データ(1page) oob ... の繰り返し。

    これに対応する 読み込みコマンドは NAND_READ_RAW 。これにも OOB_ECC オプションがある。

    HOST 側は

    Usage: nprog (1) (2) (3) (4) (5)
    (1) start page number
    (2) image file name
    (3) device index number
    (4) flash index number
    (5) image type must be:
    -n: no oob
    -o: with oob no ecc
    -e: with oob and ecc

    という風に nprog を使って書き込みができる。-e オプションで oob の書き込みもできる。

    ただし ファイルへ 読み込むコマンドはない。NAND_READ_RAWをするコマンド nreadraw はあるのだが 16 進ダンプするのみだし OOB_ECC も指定できない。なにより遅い。1 page に 1秒ぐらいかかる。あくまで目でみるためのもの。

    ... というわけで nreadraw を参考に 新しいコマンドを作る予定。

    仕組みは分かったし どう改造すれば良いかも分かった。
    ... さて、実はもう一つ作りたい機能がある。

    それは、シリアルがわりに使える機能。仕組みは上で書いたとおりなので Neo slim 3000 のプログラムから データをたれながす訳にはいかない。ホストからポーリングする必要がある。

    ... でどうするか。

    コマンドを追加して、メッセージのサイズと場所をホストに教えられるようにする。メッセージがなければ サイズ 0 。

    HOST はメッセージがあれば メモリーを読み込む。

    ... とまぁこんな風に考えてみたのだが ... 調べてみるとメモリーを読み込むコマンドがない。

    どうも 全部作らないといけないようだ。ならば、メモリーを読み込むコマンドを作り、オプションとしてメッセージを指定できるようにしたほうが楽かも知れない。

    仕様が変だと思われるかも知れないが メモリ空間、メッセージ用空間という考え方ならそれほど変でもない。ついでなので GPIO 空間というのを作っても良いかも知れない。GPIO も出力は設定できるが 読み込むコマンドがないのだ。

    追記:

    FLASH の内容をファイルにセーブする機能は出来た。だが、書き込む nprog が何故かちゃんと動いてくれない。イレースは 出来るから壊れていないと思うのだが ... 正しく書き込めないところが出ている。... ううむ 困った。

    ... やはりデバッグできないと困るので、シリアルで出力した内容を表示できるようにした。


      usbboot :> msg
      CPU data: Boot4750
      msg_read: 298 (1000)
      address is : 0x81C00000
      Address offset is: 0x01C00000
      GOT correct to : 0x81C06C40
      Init UDC
      GET_CPU_INFO: 0xFBBBFF7F
      GET_CPU_INFO: 0xFBBBFF7F
      Configuration: DS_hand_t!
      Borad_init! 0x00004750
      GET_CPU_INFO: 0x00004750
      SET ADDRESS: 0x00000000
      DATA_LENGTH: 0x00001000
      --- end
      usbboot :> msg
      CPU data: Boot4750
      msg_read: 79 (1000)
      0x00004750
      SET ADDRESS: 0x00000000
      DATA_LENGTH: 0x00001000orrect to : 0x81
      --- end


    こんな感じ。4KB までバッファに溜められて、msg コマンドでそれを表示。

    ポーリングして自動で 出そうかと思ったが、面倒なので とりあえずパス。

    ついでに GPIO の 値も調べられるようにして、ボタンの割り当てが分かった。

    なにも押さない状態:

      PAPIN: 0000bcdb
      PBPIN: 823f0401
      PCPIN: ffdf7cff
      PDPIN: ffffffff

    この状態で ボタンを押すと該当ビットが 0 になる。

      L: B31
      R: D4
      up: D0
      down: D1
      left: D2
      right: D3
      ▲(up) : D11
      ×(down) : D10
      ■(left): D12
      ◯(right): D9
      power: NONE

    Lボタンだけ LCD と共用になっていない。-- WKUP というピンで サスペンドからの復帰に使える。

      ちなみに、LCD の データが有効でないとき、ボタンの値を読むことができるが、正しい値を読むには、最後に LCD のデータを出力してから 少々時間が必要。end of frame interrupt というのがあるようなので、これを イネーブルして、割り込みでボタンの状態を見るようにするのだろう。イネーブルするには LCDCTRL レジスタ を操作する。

    あと、SDRAM の内容をダンプする機能を作れば、だいたいデバッグできそう。(これで Jz4740 が Jz4750 として見えてしまう問題も解決できるはず )

    ところで、GPIO のまとめで書いた ピンのマッピングは Jz4725 のデータシートを見て書いたのだが、Jz4725B と ポートのアサインが全然違うことが分かった。面倒なことだが、見直さないと。

    追記: 原因は分かった

    書き込めない原因はわかった。


      GET_CPU_INFO: 0x00004750
      SET ADDRESS: 0x00000280
      DATA_LENGTH: 0x00000080
      Request : NAND_PROGRAM!Skip a write fail block
      ... finished.

    stage2 のプログラムがエラーを検出している。-- コードを見るとNAND の チップがエラーを返していたのだった。

      NAND 側のデータシートを見ると ...
      READ_STATUS コマンドを発行して、データバスに出てきたデータ
      busy flag (か FRB) をチェックせよみたいなことが書いてある。

      チェックはしているようなのだが、GPIO の Port を決め打ちで書いてある。... よくよく見てみると FRB の Port は、JZ4740/JZ4725 では PC30 , JZ4750/JZ4755/JZ4725B では PC27 だった。気まぐれに Port 番号の割り当てを変更したのではなく、アーキテクチャによって Port 番号が決まっているようだ。

    なんども書いているわけではないから、製造時から bad block だったのかも知れない。安物だから bad block の率が高いのを安く仕入れているかも知れないし、有り得そうな話だ。

    そうなると ... bad block を使わないようにする仕組みが必要になる。

    U-Disk は、FAT でフォーマットしてあって何度も書き換えるから UBI なのだろう。

    それは良い。立ち上がってからの話だし。フォーマットする 機能もあるし。

    まず問題は、root これは ファームウェアのほとんどを占めるはずだから 60MB ぐらい。jffs2 を使ったり yaffs2 を使ったり するのに違いない とあたりは付けたものの offset と size がわからないとどうにもできない。

    しかし、それ以前の問題もあった。bad block を回避するために カーネルや ブートローダまで 固定の位置に置いてないのかも知れないということ。

    低レベルのプログラムで bad block を回避するために、例えば使っている データがあるブロックのリストを作って書いておくとか .. そういうことをしているはず。

    確かに 2 台のマシンの nand を バックアップしたデータは 、結構違う。だが、2 台の差分ぐらいで データ構造がちゃんと分かるかというと疑問。

    いったん復活させたかったのだが、労力ばかり多くなりそうなので 復活は打ち切り、サラのマシンとして扱おうと思う。

    さて、次にやりたいことは?

    ひとつは、Jz4740/Jz4725 で usbboot を使ったときに 正しく 認識できるようにすること ( なぜか Jz4750 と表示され 動作が不安定 ) -- 済

    もうひとつは、neo slim 3000 の ブートローダを なんとかすること。LCDにメッセージも出したいし、USBBOOT で動かしたときは、USB から メッセージを取り出せるようにしたい。

    .. その前にプログラムを ロードして実行する機能を確認しないと。

    とりあえず ... ここまでの成果

    • usbboot-qi.tar.gz -- QI から取ってきたオリジナル(ベース)
    • usbboot-wk2.patch.gz -- ここまでの修正パッチ
    • usbboot-wk2.tar.gz -- tarball (configure 済みで サイズがでかい )

    • JZ4725B 対応

      ingenic のオリジナルをベースに 変更。( ちなみに ingenic オリジナルには JZ4760 対応が入っている )

    • コマンドの追加

      ndump (NAND FLASH をファイルに書き出す)
      gpior (GPIO の ピンの値を表示 )
      msg (シリアルに出した内容の取得)
      mread (SDRAM のダンプ )

    • fw_args.cpu_id の値(0x4750/0x4740) は、USB の プロダクトID から取ることにした。もう誤認しないはず。


    ちょっと、どんな風に NAND FLASH を使おうか検討してみる。

    • まず、最初にブートする領域は 2 つある。最初の 8KB と次の 8KB 。最初のブロックが ECC エラーなら次のブロックからブートする。どちらにも同じ内容の stage1 ブートローダを書き込むことにしよう。

    • で、 8KB のどこかに パラメータブロックを置く。できれば fw_args と互換性がある形にしたい。これを見ればクロックやメモリの初期化が正しくできる。ロードする FLASH の アドレス変換をするテーブル(8KB) を作ることにして、1 エントリ 16bit とすれば 8KB で 4096個 入る。ブロックを 8KB にしてしまえば、全体で 32MB まで管理できる。

      ここの領域には、zImage と initrd を置く。32MB あれば複数の組みを置ける。普段使うものと、インストーラは置ける必要が出てきそうなので、ブートセレクタ機能がいりそう。

    • 残りの部分は rootfs と U-DISK 。両方とも UBI にして、上位に普通のファイルシステム。rootfs は ext3 で U-DISK は FAT32 とか。1 つの UBI にできると 全体を使って ウェアレベリングできるから swap とか書き換えの多い データも置きやすくなる。

      ... UBI の上に パーティション作れると良いのだが... あ、device-mapper とか使えば良いのか。md でも良さそうだし。

    • UBI 前提にしてしまうと、rootfs にブートローダがアクセスできないし、USBBOOT を使って UBI にアクセスするのも難しそう。
      -- そうなると インストーラカーネルを使って 初期化できないといけなくなる。

      実際に作ってみると違うものになりそうだが、こんな感じでどうだろう。

    • メモ1: 電源を入れたときに USB が刺さっていたら ... インストーラカーネルを動かして、そうでなければ通常のカーネルにしたらどうか。

    • メモ2:FATファイルシステムではダメなのか?

      まず先頭がいきなり書けなかった場合に対処できていない。ルートディレクトリや ファイルアロケーションテーブルも 基本的に固定の場所(全体をずらすことは可能だが、一般的でない)。

      仕様をわずかに変えたものは 既にFAT ではないし、かえって混乱しそうなのでやめたほうが無難。

      書き換えるには、消去ブロックサイズ ( 128 ページ )を一旦消して書き換える。ただし、未書き込みの部分に書く場合は ページ単位で書ける。--- この特徴なら 先頭の 128 ページ(4K ページだと 512KB) はあまり書き換えないように ファイルアロケーションテーブル相当は 512KB 以降に割り当てたほうが良さそうだ。

      もちろんこの領域はあまり書き換えないのが前提なわけだが、先頭ブロックが壊れるのはとても困るので、考慮は必要だろう。













    posted by すz at 00:55| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

    2010年05月24日

    PMP-3100,A-330入手

    勢いで買ってしまった PMP-3100,A-330が来た。

    実をいうとこれらの小ささにまず驚いた。3.5 inch の Neo Slim 3000 を先に買っていたわけだが、なんとなく ひと周り小さいだけかと思っていたが、随分大きさが違う。あと意外だったのは、両方とも時計機能がないこと。Chip に RTC の機能はあるし、Neo Slim 3000 も時計があったので当然あるものとばかり思っていた。 -- ひょっとして、RTC に電源供給されていないのだろうか?ちょっと不安だったりする。

    A-330 の分解写真とかレビューは、

    にあるので割愛。DINGUX が動くらしいので リファレンスマシンとして使おうかと思っている。


    さて問題の PMP-3100 。これは、一体どういうものだろう?

    ちょっと使ってみたのだが、ファームウェアの機能はおそまつ。動画は、音ズレするし、エミュレータは GBA のみ。-- あまり使いものにならない印象。バッテリーの容量も少ないだろうし、実用として使いたい人にはまったく勧めることができない。しかし、Linux を移植してみたりして遊ぶには良い素材かもしれない。

    次に USB-BOOT -- とりあえずは、A-330 で試す。電源 OFF の状態で B ボタン を押しながら USB に接続すると

    • JZ4740 USB BOOT Device

    と認識される。もとの状態にするには、リセットボタンを押す。

    PMP-3100 の方は、リセットボタンがない。元に戻せないならただちに分解してバッテリーを外す覚悟でやってみた。

    電源 OFF の状態で START ボタンを押しながら USB に接続すると ..

    • JZ4740 USB BOOT Device

    と認識された。で、USB を抜けば電源が切れた。なんのことはない。電源を OFF にできるから RESET ボタンは不要だったわけだ。

    ... ということは Neo slim 3000 もそうなのか? 

    やってみたところ 同じように電源が切れた。

    これで、ハードの改造なしでいろいろ試せそうだということは分かった。-- たとえ文鎮にしてしまっても電源だけ切って後日リベンジとかも可能。

    さて一応分解してみる。

    ... 驚いたことに、CPU は Jz4725 (無印) だった。Jz4740 か!と期待してしまったので残念な結果だ。メモリには SAMSUNG K4S281632I-UC75 と印字されている。128Mbit -- 16MB だ。-- なんかダメダメだ。

    ちなみに TV-OUT 周りの回路は裏にはない。おそらく表側なのだろう。... といってもスペースがないはず。謎だ。

    あとバッテリーは、3.7V 800mAH 。これはそんなものだろう。

    Jz4725(無印) は良いのだが、メモリが 16MB しかないのは残念。Linux で遊ぶにもちょっと厳しい。

      Jz4725 の無印と B の違いは、SD の 速度と、USB-BOOT の仕様ぐらいなはず。だからあまり気にならない。メモリは 256Mbit のものに換装する手はあるが、面倒だしコストが余分にかかる。

      新しいはずなのに ... 残念なスペックだ。

    残るは、電子工作での素材か。液晶を剥がして 別のなにかをつなぐとか... 1mm ピッチのはずだから 線を引き出すのは楽かも知れない。

    ... というわけで PMP-3100 はお蔵入り。Neo slim 3000 でいろいろ出来るようになったら復活させるかも。

    とりあえず、記念写真。



    ケースを開けたところ。スピーカとかバッテリーのケーブルの接続場所の確認用。



    バッテリー 3.7V 800mAH



    基板のみの写真。バッテリー固定のための両面テーブ が SDRAMと FLASH の上に貼りつけてあった。この跡を綺麗にしようとゴシゴシしたら、IC の 印字も一部消えてしまった。

    ところで、シリアルの線が出ている。... ということは、なにかの機能でつかっているということだ。それは何?

      シリアルは、57,58 ピン。CPU の下側 の右のエリアで 1 本だけスルーホールに消えている線があるがこれが 57 ピン。58 ピンはすこし下まで伸びてからスルーホール。



    基板を外して表の写真。右下の 14pin の IC は印字が消されている。... ボタン処理用の IC だと思うのだが ... なにか見当がつかない。I2C の GPIO だったり、ワンチップマイコンだったりしそう。 それにしても TV OUT 用の IC は見えない。やはり謎。ひょっとして Neo Slim 3000 も TV OUT がついているのだろうか?

      通信にシリアルを使っているのではないかとも思える。例の 57,58 ピンが、14 pin の IC に接続されているかも。

    それはそうと基板には、

      SmartChip
      SC928M105_V0.2
      2009.12.26

    なんて印字がある。



    ボタンの裏側。もとに戻すときの参考用。

    オリジナルのファームウェアも使い物にならないし、壊しても惜しくないので、逆に開発用にしようかとも思ったのだが、ボタン処理用の IC があると解析するのが嫌だなぁ。

    追記:PMP-3100 の後継機




    focalprice から PMP-3100の後継機 が出ている。

    見て分かるのは、

    • ファームウェアが Neo Slim 3000 のと同じ見栄えになった。
    • ON/OFF や HOLD → の表記 が逆になっていたのが訂正された
    • AV OUT の表記が ヘッドホンマーク + FM に変更 (これも訂正)

    こんなかんじ。ひょっとしたら CPU が JZ4725 → JZ4725B に変更されたかも知れない。

      理由は JZ4725 は製造していないと思うから。CPU の変更にともなって ファームウェアの バージョンアップを余儀なくされたのかも知れない。さらにいうと ファームウェアが変わったために メモリも 増えることになったかも知れない

    まぁ何も変わっていないのかも知れないのだが ... 少なくとも 時計機能は付いているので、良くはなった。


    追記: dealextreme の PMP-3100 は P5-5 だった。

    水色 全部箱に P5-5 と書いてある。
    ユーザ投稿の写真を見れば、時計も出ている。

    レビューには、There is an alarm clock なんて書いてあるが、さすがに アラーム機能は無理だろう。それはともかく、ファームウェアのベースが neo slim 3000 や aneca A-41 と同じに なったのなら、GBA 以外のエミュレータ機能はともかく、PMP としてはまぁ使えるはず。

    追記: とりあえず入手した。CPU は Jz4725B になっていた。これはすぐわかる。(電源OFFで)右の ESC ボタンを押しながら USB に挿すと JZ4750 USB Boot Device と出る。(Jz4725 なら JZ4740 USB Boot Device)

    メモリのサイズが増えているかどうかは いろいろやってみないとわからない。-- たぶん USBBOOT の cfg を大きい方に間違うと動かないから分かるはず。



    posted by すz at 19:40| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

    2010年04月15日

    Neo Slim 3000 GPIO まとめ

    dingoo-linux は A-320 の GPIO の解析を ここでまとめている。

    同じようにまとめておかないと、よくわからなくなるので、ここを使って記録していこうと思う。

    まず、Neo Slim 3000 は Jz4725B を使用している。128 ピンもある LQFP なのだが、SDRAM や LCD など 決まったピン割り当てがあるので、自由になるピンは意外に少ない。

    例えば、自由になりそうな PWM は、PC15/PWM5 のみ。ここから LCD のバックライトが これに割り当たっているのではないかと推測できる。

      実際に PC15/PWM5 であった。初期状態は L 。これを H にすると バックライトが点灯。


    それ以外でも 自由になりそうな GPIO は 数本しかないようだ。これだけ厳しいと ボタンを LCD のデータ線と共有するのも理解できる。

    ちなみに 最低限度必要そうな GPIO は、

    • ボタン -- 詳細不明だが、LCD のデータ(PD0-PD15)と共用
    • スピーカー アンプ ON/OFF
    • バックライト LED ON/OFF (+PWM)
    • SDカード CS
    • DC電源のセンス
    • アナログスティック制御 (たぶん GPIO 1つと ADC 1つ)
    • LED 左 (赤) (ハード結線)
    • LED 右 (青) (ハード結線)
    • 電源スイッチのセンス (WKUP/PB31のはず)
    • 電源 OFF (PWRON のはず)

    ぐらいか。GPIO で 5 個必要そうだが、自由になりそうな GPIO の数も(TxD/RxDを除くと) 8個 しかない。

    上記以外でも GPIO を使っている可能性がある。思いつくのは、

  • POPノイズ低減
    Ben-NanoNote の回路図をみたが イヤホンを直結せずに MOS FET スイッチを入れていた。MOS FET らしきものはないようだから、可能性はなさそうだ。
  • ソフト I2c
    FM ラジオの制御を I2Cインターフェイスではなく GPIO で行っている可能性がある。GPIO が余っていればそうしてもおかしくはない。... のだが、よく考えたら FM ラジオモジュールの裏まで I2C の線が来ているのは確認済み。わざわざ別の線を付ける理由はないので、I2C を普通に使っているはずだ。

    補足:

    LED は ソフトで制御していなかった。USB-BOOT の時点で点灯している。
    電源の制御自体も GPIO ではなく専用の線がある。

    左右 LED メモ:



    右のLED, 左のLED の順。両方 左から アノード-カソード。LED のサイズは 1608。

    右のLED は青で抵抗が 102(1KΩ)、左のLED は赤で 201(200Ω)。抵抗が逆ではないかというのはサテオキ、左に注目すると太い線 - 抵抗 - LED と接続されている。この太い線はたぶん USB から供給される 5V そのもので GPIO で 供給されているかどうかを GPIO でセンスしているはず。

    FMラジオモジュールメモ:



    チップは違うが、FMレシーバモジュール(AR1010)を ストロベリーリナックスで扱っている。データシートを見るとピンアサインは、

    1 アンテナ (右上)
    2 N.C.
    3 L-OUT
    4 R-OUT
    5 GND (右下)
    6 VCC (左下)
    7 Write/Read
    8 Busmode (L: I2C / H: SPI)
    9 Clock
    10 Data (左上)

    となっている。(左右逆の番号割り当てなので注意) SPI を使うピンの余裕などないとすれば、I2C を使っているはずで、それは Busmode の電圧で判断できる。ピンアサインが合っているとすれば、6(VCC) と 8 が同じではないのでたぶん GND -- なら I2C のはず。 L-OUT/R-OUT はアナログなので、LINEIN に入るのではないかと思えるが、未確認。

    I2C でアクセスするレジスタの仕様は AR1000 なら サンプルコードから推測できる。使用している RDA5807P と互換性があるのかどうかは不明。RDA5800C なら aitendo で扱っているのでデータシートは入手できる。仕様が RDA5807P と近いことは想像できるが、どれぐらい違うのかは不明。

    ところで、RDA5800C はデータシートの情報だけでは 動かないそうだ。→ 参考
    ChaN さんのサンプルプログラムを参照しないと扱えない。RDA5807P は、データシートすら入手できていない。なかなか使うのは難しそうだ。まぁこういうのは最後にしたほうが良さそう。

    アナログスティック周り:

    ADC が 1 つしかないのに、2個必要になるアナログスティックをつなげているのが不思議だったのだが.. どうも SOT23 のIC が 3つあるところに接続されているようだ。



    IC の マークは、A2sSH , As1SH, WW1 -- 調べてみるとどうも A2sSH が Nch MOS FET(AO3402 互換?), A1sSH が Pch MOS FET(AO3401 互換?), WW1 が ショットキーバリア ダイオード2 個入り(BAT54C 互換?) らしい。

    実際の回路はわからないが、この組み合わせなら 1つの GPIO で切り替えられそうだ。

    電子工作しているとデスクリート IC が相対的に高いので、アナログ SW などを使ったりするのだが、こうやって 3 つも使っているのを見ると恐ろしく単価が低いのかも知れない。

    LED ドライバ周り:



    この IC が バックライト LED 用の DC/DC コンバータ。1番 pin がダイオードに接続されていて LX 。2 番 pin が GND 。裏には 22uH のインダクタ。12 Ωと低い抵抗値の抵抗があり、電流制限用に思える。バックライト LED は、 2 並列 2 直列 みたいだから 40mA ぐらい流すはず。そう仮定すると FB の電圧は 12 x 0.04 = 0.48V となるが、ちょっと中途半端。

    それはともかく、どうも aitendo で扱っている XZ5121のような IC のようだ。..とすると PWM 制御用の GPIO は 4 番 pin に接続されているはず。-- 0 Ωのジャンパが入っていたりしてどうもそれっぽい。

    ところで、XZ5121 のように OVP 端子がある IC でないと 定電流駆動は危険。LCD なしだと電圧が上がりすぎて コンデンサや IC そのものが壊れてしまう。まぁ大丈夫だと思うが 一応コンデンサの両端の電圧をチェックしておいた方が良いかも知れない。

      あまり信用できないテスターなのだが、5V ぐらいだった。とりあえずは大丈夫そうだ。


    電源制御のピンについて:

    RTC には、次のようなピンがある。


    84 PPRST(RTC) - power on reset / reset
    85 WKUP(RTC)/PB31 - wakeup signal after power down
    86 PWRON(RTC) - power on/off control of main power.


    WKUP は普通 電源ボタンに接続されるようだ。で PWRON は 出力で 電源ON は L レベル。--- GPIO を探さなくとも 電源を切ることができるのはありがたい。

    PPRST は いわゆるリセット。だがスイッチはないので、パワーオンリセット だけしか使えない。

    ... ブートプログラムやカーネルのテストで途中で暴走したりすれば、リセットもできず 電源も切れないことになりそうだ。WDT - Watch Doc Timer 機能は RTC に あるが、最初はなにもないところから始めるし --- バッテリーがない方が便利そうだ。ある程度まで行けば 、(Reset がわりの)電源断に頼らないようにできるだろうが...

      WDT reset がかかって立ち上がってきたときに、電源スイッチが Off側だったら電源を切るとかすれば、安心できるか。

      そういう対策は必要だが、それを作るまで裸のままというのもどうかと思う。よくよく考えれば バッテリーの線にスイッチを付けてしまえば、ソフトで対応しなくともバッテリー自体は切れる。

      RESET をどう引き出すか悩んでいたのだが、これなら電子工作としては難しくないし ... これでいいや。

    Nand Flash メモ:

    ピンをどういう風に接続するのものなのか Board_Design_Guide から

    49 PC9 A16(SRAM)/AL(NAND) → ALE
    50 PC8 A15(SRAM)/CL(NAND) → CLE
    51 PC29 FWE(NAND) → WE#
    52 PC28 FRE(NAND) → RE#
    53 PC27 FRB(NAND) → R/B#
    55 PC22 CS2(SRAM) → CE# (?)
    56 PC21 CS1(SRAM) → CE# (?)

    + DATA D0 - D7


    NAND FLASH 用のピンは全部使っているようだ。それに加えて CS1 or CS2 を CE# に接続するらしい。で、NAND FLASHは 空きパターンもあるから たぶん CS1/CS2 両方使っている。

    そういえば... 不要になった eeePC の 4GN/8GB SSD モジュールがいくつかある。K9GAG08U0M が 2 つ載ったやつと 4 つ載ったやつ。

    0.5mm ピッチなので 0.8mm ピッチの SDRAM より載せ替えが難しいが覚えておこう。4GB にもできるかも知れない。-- だからといって格別便利になったりはしないと思うが 壊した時修理できる可能性がある。自分でカーネルを作ったりすれば愛着が湧いたりするので、重要かも。

    SDRAM メモ:

    SAKC も参照してみたが、次の配線になるはず。

    10 PB16 DCS(SDRAM) → CS#
    11 PB17 RAS(SDRAM) → RAS#
    12 PB18 CAS(SDRAM) → CAS#
    13 PB19 SDWE(SDRAM)/BUFD → WE#
    14 PB20 WE0(SDRAM) → DQML
    15 PB21 WE1(SDRAM) → DQMU
    16 PB24 CKO(SDRAM) → CLK
    17 PB25 CKE(SDRAM) → CKE

    D0-D15 → D0-D15
    A0-A12 → A0-A12
    A13 → BA0
    A14 → BA1

    空いているピンなどはないようだ。ちなみに、512Kbit の SDRAM にしたとしても同じピンアサイン。

    そういえば、512Mbit (16MB x 8bit x 4bank) の SDRAM x 2 なら 2 段マウントで 128MB になるかも。0.8mm ピッチとはいえ 8bit 分ジャンパしなければならないから工作的に難しいが Jz4725B が対応しているかどうかぐらいは調べておこう。

      Jz4725(B) 自身は Column 12bit /raw 13bit/4 bank まで対応している。上の SDRAMは column 11bit / raw 13 bit 。

      この設定は、ブートローダで行う。linux カーネルは基本触らない。ブートローダがメモリにロードするわけで そのときには設定済みでないといけないわけだ。

      RESET 時の設定というものもある。上位アドレスはつかえないが、とりあえず下位だけはアクセスできるような設定のようだ。

      実をいうと チップ取りを目的に 512MB の SO-DIMM を買ってしまった。中古でなく新品が3000円ぐらいだったのだが、中身は 8bit の HYB39S512800A x 8 だった。いずれトライしてみたい。

      ところで 元々付いている SDRAM は、256Mb (4M x 16bit x 4bank)。column 9bit/row 13bit 。

      ついでに書いておくと BANK は常に最上位ビット。したがって Jz4725(B) はインターリーブできない。


    LCD用ピンアサイン:

    2 PD18 LCD_PCK(LCD)
    108 PD20 LCD_VSYNC(LCD)
    109 PD19 LCD_HSYNC(LCD)
    110 PD21 LCD_DE(LCD)
    LCD_D0 - D15 => R5G6B5

    GPIO候補

    102 PD23 LCD_SPL(LCD)
    103 PD22 LCD_CLS(LCD)
    105 PD25 LCD_REV(LCD)
    107 PD24 LCD_PS(LCD)
    111 PD17 LCD_D17(LCD)
    112 PD16 LCD_D16(LCD)

    LCD 用のピンは全部は使っていない。使っていないピンは GPIO として使われているはず。



    そのあたりの写真。右から 97,98... と並んでいる。
    102,103 は見えない。105 ,107 はすぐ上でスルーホール。111,112 も見えない。



    裏からみた写真。上に伸びているのが BOOT_SEL1 で 右のスルーホール。で、105,107 がその右に並んでいるはずなのだが、裏からみても見えない。

    Smart LCD 用のピンについて :

    電子工作ネタになるが、高速な I/O をしたいとするならば、LCD のコネクタを使う以外にないので、ちょっと調査してみた。

      Smart LCD は、コマンドがあるタイプの LCD 。コマンドかデータは (9bit シリアル以外は) RS 線で 指定する。サポートしている機能は、データを一方的に送るのみで READ 系はサポートしていない。必要なら GPIO を操作して読み込めということだろう。

      サポートしている Smart LCD はパラレル以外に シリアルも。


      109 PD19 LCD_HSYNC(LCD) → SLCD_RS
      108 PD20 LCD_VSYNC(LCD) → SLCD_CS
      2 PD18 LCD_PCK(LCD) → SLCD_CLK (Serial Only)
      113 PD15 LCD_D15(LCD) → SLCD_DATA (Serial Only)


      Smart LCD を使う場合は、LCD のピンが上のように切り替わる。LCD のピンが切り替わるだけだから、改造して LCD のコネクタの先に別の装置を接続するようなときに、Smart LCD も直結できる。パラレルなら SLCD_LCK しか物理的には余らないが、コマンドが 16bit とは限らないので、FPGA などを使う場合 RS を使って多重化できる。また、シリアルを使えば、D0-D14 が別の目的に使えることになる。

      ちなみに、LCD でも 8bit-Serial RGB というモードもある。D0-D7 に R/G/B を順番に出力していくモードで、D8-D15 を別の目的に使える。(ちなみに このタイプは、Ben-NanoNote で使われている)

      あと IPU を使用する場合、サポートできるフレームバッファのフォーマットは R8G8B8 とか R5G6B5 とかに限られる。smart LCD の場合好きなように使うと IPU が使えないかも知れないので注意。


    TV OUT 用のピンについて :

    JZ4725B のデータシートには TV エンコーダの機能などない。ボードを見ても TV OUT 用のチップは載っていない。

    にも関わらず、TV OUT のメニューがあったりする。また、"PMP-3000" という ベースが同じ 製品 の仕様には TV OUT があったりする。

    さらに "PMP-3100" は、"PMP-3000" より少しだけ高い価格で JZ4725B を使っていると思えるのだが、TV OUT 用のコネクタまで持っている。

    また、Linux などでは JZ4725B は JZ4750L として管理している。そして、JZ4750 , JZ4755 は TV エンコーダというハードウェアを持っていたりする。

    これはどういうことだろう? ちょっと気になったりしている。

    SDカードセンス:

    カードを入れてみると GPIO の状態が変わった。PD14 が L になっている。

    おどろいたことに、SD カードのセンスなんてものまで LCD の出力と共用していた。

    まとめ



      Neo Slim 3000 JZ4725B ピンアサイン表 (作成中)

      凡例 : x 割り当てに選択の余地がないピン
      o Neo Slim 3000 固有の割り当てで判明したピン
      ? 不明なピン

      Jz4725 Jz4725B
      x 1 PD0 LCD_D0(LCD)
      x 2 PD18 LCD_PCK(LCD)
      x 3 GND
      x 4 VDDCORE(1.8V)
      x 5 PB3 A3(SDRAM)
      x 6 PB2 A2(SDRAM)
      x 7 PB1 A1(SDRAM)
      x 8 PB0 A0(SDRAM)
      x 9 PB10 A10(SDRAM)
      x 10 PB16 DCS(SDRAM)
      x 11 PB17 RAS(SDRAM)
      x 12 PB18 CAS(SDRAM)
      x 13 PB19 SDWE(SDRAM)/BUFD
      x 14 PB20 WE0(SDRAM)
      x 15 PB21 WE1(SDRAM)
      x 16 PB24 CKO(SDRAM)
      x 17 PB25 CKE(SDRAM)
      x 18 PB12 A12(SDRAM)
      x 19 PB11 A11(SDRAM)
      x 20 GND
      x 21 VDDCORE(1.8V)
      x 22 PB9 A9(SDRAM)
      x 23 PB8 A8(SDRAM)
      x 24 VDDIO(3.3V)
      x 25 GND
      x 26 PB7 A7(SDRAM)
      x 27 PB6 A6(SDRAM)
      x 28 PB5 A5(SDRAM)
      x 29 PB4 A4(SDRAM)
      x 30 PB13 A13(SDRAM)
      x 31 PB14 A14(SDRAM)
      x 32 PA8 D8(SDRAM)
      x 33 PA9 D9(SDRAM)
      x 34 PA10 D10(SDRAM)
      x 35 PA11 D11(SDRAM)
      x 36 PA12 D12(SDRAM)
      x 37 PA13 D13(SDRAM)
      x 38 PA14 D14(SDRAM)
      x 39 PA15 D15(SDRAM)
      x 40 PA0 D0(SDRAM)
      x 41 PA1 D1(SDRAM)
      x 42 PA2 D2(SDRAM)
      x 43 PA3 D3(SDRAM)
      x 44 PA4 D4(SDRAM)
      x 45 PA5 D5(SDRAM)
      x 46 PA6 D6(SDRAM)
      x 47 PA7 D7(SDRAM)
      ? 48 PC15 PWM5
      x 49 PB16 A16(SRAM)/AL(NAND)
      x 50 PB15 A15(SRAM)/CL(NAND)
      x 51 PC29 FWE/MSC0_D1
      x 52 PC28 FRE/MSC0_D0
      x 53 PC27 FRB/MSC0_D2
      ? 54 PC20 WAIT(SRAM)
      x 55 PC22 CS2/MSC0_D3
      x 56 PC21 CS1
      ? 57 PC13 PWM3/UART0_RxD(UART)
      ? 58 PC12 PWM2/UART0_TxD(UART)
      ? 59 PC11 PWM1/I2C_SCK(I2C)
      ? 60 PC10 PWM0/I2C_SDA(I2C)
      x 61 PD28 MSC1_D0(MSC)
      x 62 PD26 MSC1_CLK(MSC)
      x 63 PD27 MSC1_CMD(MSC)
      x 64 EXCLK(CPM)
      x 65 EXCLKO(CPM)
      x 66 VDDIO(3.3V)
      x 67 PBAT/ADIN0
      ? 68 ADIN1
      x 69 VSSADC(CPM)
      x 70 VDDADC(CPM)
      x 71 AVDDPLL(CPM)
      x 72 AVSSPLL(CPM)
      x 73 VDDPLL(CPM)
      x 74 VSSPLL(CPM)
      x 75 VDDA(USB)
      x 76 RREF(USB)
      x 77 VDDUSB(USB)
      x 78 DM0(USB)
      x 79 DP0(USB)
      x 80 VSSUSB(USB)
      x 81 RTCLK(RTC)
      x 82 RTCLKO(RTC)
      x 83 VDDRTC(RTC)
      x 84 PPRST(RTC)
      x 85 PB31 WKUP(RTC)
      x 86 PWRON(RTC)
      x 87 VDDHP(CODEC)
      x 88 RHPO(CODEC)
      x 89 VSSHP(CODEC)
      x 90 LHPO(CODEC)
      x 91 VDDLHP(CODEC)
      x 92 VSSCDC(CODEC)
      x 93 VDDCDC(CODEC)
      x 94 VREF(CODEC)
      x 95 VDDCDC2(CODEC)
      x 96 VSSCDC2(CODEC)
      x 97 LLINEIN(CODEC)
      x 98 RLINEIN(CODEC)
      x 99 MICIN(CODEC)
      x 100 BOOT_SEL0
      x 101 BOOT_SEL1
      ? 102 PD23 LCD_SPL(LCD)
      ? 103 PD22 LCD_CLS(LCD)
      x 104 VDDIO(3.3V)
      ? 105 PD25 LCD_REV(LCD)
      x 106 GND
      ? 107 PD24 LCD_PS(LCD)
      x 108 PD20 LCD_VSYNC(LCD)
      x 109 PD19 LCD_HSYNC(LCD)
      x 110 PD18 LCD_DE(LCD)
      ? 111 PD17 LCD_D17(LCD)
      ? 112 PD16 LCD_D16(LCD)
      x 113 PD15 LCD_D15(LCD)
      x 114 PD14 LCD_D14(LCD)
      x 115 PD13 LCD_D13(LCD)
      x 116 PD12 LCD_D12(LCD)
      x 117 PD11 LCD_D11(LCD)
      x 118 PD10 LCD_D10(LCD)
      x 119 PD9 LCD_D9(LCD)
      x 120 PD8 LCD_D8(LCD)
      x 121 PD7 LCD_D7(LCD)
      x 122 PD6 LCD_D6(LCD)
      x 123 PD5 LCD_D5(LCD)
      x 124 PD4 LCD_D4(LCD)
      x 125 GND
      x 126 PD3 LCD_D3(LCD)
      x 127 PD2 LCD_D2(LCD)
      x 128 PD1 LCD_D1(LCD)



      Neo Slim 3000 判明ピン

        バックライトの制御
      48 PC15 PWM5/A18(SRAM)
        SDカードのセンス
      114 PD14 LCD_D14(LCD)
        "L" ボタン
      85 PB31 WKUP(RTC)
        "R" ボタン
      124 PD4 LCD_D4(LCD)
        "↑" ボタン
      1 PD0 LCD_D0(LCD)
        "↓" ボタン
      128 PD1 LCD_D1(LCD)
        "←" ボタン
      127 PD2 LCD_D2(LCD)
        "→" ボタン
      126 PD3 LCD_D3(LCD)
      101 BOOT_SEL1
        "▲" ボタン
      117 PD11 LCD_D11(LCD)
        "×" ボタン
      118 PD10 LCD_D10(LCD)
        "■" ボタン
      116 PD12 LCD_D12(LCD)
        "○" ボタン
      119 PD9 LCD_D9(LCD)

      Neo Slim 3000 調査対象ピン

      バックライトの制御候補

      ? 48 PC15 PWM5/A18(SRAM)

      専用機能
      ? 57 PC13 PWM3/UART0_RxD(UART)
      ? 58 PC12 PWM2/UART0_TxD(UART)
      ? 59 PC11 PWM1/I2C_SCK(I2C)
      ? 60 PC10 PWM0/I2C_SDA(I2C)
      ? 68 ADIN1

      電源制御
      x 84 PPRST(RTC)
      x 85 PB31 WKUP(RTC)
      x 86 PWRON(RTC)

      GPIO 候補
      ? 54 PC20 WAIT(SRAM)
      ? 102 PD23 LCD_SPL(LCD)
      ? 103 PD22 LCD_CLS(LCD)
      ? 105 PD25 LCD_REV(LCD)
      ? 107 PD24 LCD_PS(LCD)
      ? 111 PD17 LCD_D17(LCD)
      ? 112 PD16 LCD_D16(LCD)
      + UART ?
  • posted by すz at 21:39| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

    2010年04月07日

    Neo Slim 3000入手

    Neo Slim 3000が入手できた。

    すぐに分解したいところだが、不良品だったりすると困るし取り敢えず動作確認など。


    • 備品

      USB A-miniB ケーブル (1m ぐらい)
      8cm CD
      USB Aメス ACアダプタ
      インナータイプ イヤホン

      AC アダプタは、プラグ折りたたみ式のコンパクトタイプ。イヤホンも端子が金色で、少々グレードが高い。

      CDの中はあまり見ていない。PDF マニュアルもあったが、Web 版と同じみたいだし。

    • 本体インターフェイス

      オーディオミニジャック
      USB miniB コネクタ
      DCジャック (たぶん 例の EIAJ#1 もどき)
      SDスロット (push-push)

      電源スイッチ スライドSW(ON/OFF)
      ボタン 4方向 A,B,X,Y, L(電源マーク),R(OK)
      アナログスティック
      スピーカー(モノラル)

      筐体は3枚におろせる構造。裏面に 4ヶ所 小さな +ネジ。

      ボタンは、透明なカバーに印刷された紙が入っていて質感が低い。充電ランプ(赤,左), 電源ランプ(青,右)の光がもれる。均一にもれるわけではないので残念な感じ。

      他の部分の質感はよい。

    メニューシステム


    まぁ二度と使えない可能性もあるので、どういうものかチェックだけはしておこうと思う。

    基本的に、サンコー AV BANK (マニュアル)と同じシステムのようだ。


      92 名前:名無しさん@お腹いっぱい。[] 投稿日:2010/02/07(日) 19:53:21 ID:vebL0otX
      サンコーのAV BANK ATLMPB4G を買ってみた。画面がそれなりに大きいので、
      老眼が始まった私には、動画の字幕を読むのは楽でよい。液晶も結構きれい。

      ただ、以下の点が気になる。
      ・変な日本語(「を探している」、「は、工場出荷時の設定を復元する」 主語がない・・・)
         ⇒割と中国製なんかにありがち まぁ、意味は想像できるので愛嬌と思えば特に問題なし
      ・PCからはずしたときに、「を探している」が出て待ちが長い
      ・ID3タグにきちんと対応してない? ID3タグを読んでアルバム検索できない。(複数アルバムをフォル
       ダに分けて入れると、なぜか1曲だけアルバム分類されたり変な動きをする)
         ⇒フォルダに分けてフォルダをアルバムとしての再生すれば実用上は回避可能だが
      ・Ebookは、青空文庫のテキストを表示しようとすると文字化け スクロールすると勝手にリセット
         ⇒取説に「非対応」とあった・・・ ばおーはOKなのに
      ・音楽再生時間が、定格でも6時間と短め

       言語対応がダメ。この液晶サイズでこの値段、動画メイン使用なら悪くはないかって感じ。

    のレビューを見て気がついた。「を探している」、「は、工場出荷時の設定を復元する」が同じ。

    日本語が変だし英語を想像しないと理解できない。しょうがないので、言語をEnglish にすることにした。

    • Toolbox
       System Stetti(文字切れ)
        Desktop Set
         - タイムゾーンの設定はここ(重要)
        Animate Set
        Resume Background
        Boot Option
          - 電源 On で Top レベルにするか、前の状態にするかの設定
        Timing Shutdown
          - デフォルトは Off
        Backlight Luminace
          - 明るさ 5 段階
        Backlight Time
          - デフォルト Off 。バックライトが 切れたら Lボタンで復帰。
        Languages
        System Function
         Device Infomation
          - Device Model の確認や 容量の確認とか
          - ここに JZ4725 と出る。
          - SDカードの容量も出るが文字が重なって読めない。
         Recover System
         Format U Disk
          - U Disk とは内蔵FLASH のこと
         Updating ...
          - U Disk の / に (解凍した)NEO_UPDATE.BIN を置く。
         Test Screen
       World Clock
       Calendar
          - 日本語の設定だと意味不明
    • E-Book
          - エンコーディングを設定できる。UTF-8 が無難?
          - CP932 が SJIS の意味。
    • File Manager
    • Radio
          - Background の設定あり
    • Music
          - SJIS で入れた ID3タグは文字化けしていない。
          - ...いつのまにか文字化けするようになった。
          - 日本語で「更新プログラムのメディ」の実行が必要。
          - E-Book のエンコーディングも関係あるかも。
          - Background の設定あり
    • Video
          - 手持ちの Xvid なら普通に見れた
          - ファイル単位のスキップ ↑(前)↓(後)
    • Recoder
    • Picture
    • Game

    • メインメニュー基本操作

        →  なし
        ←  選択(○ と同じ?)
        ↑  項目移動(UP)
        ↓  項目移動(DOWN)
        ○  選択
        ×  もどる
        ■  なし
        ▲  なし

    • プレー中の基本操作

      Video/Music

        →  音量UP
        ←  音量DOWN
        ↑  ファイルスキップ(前)
        ↓  ファイルスキップ(次)
        ○  PAUSE
        ×  メニュー
        ■  なし
        ▲  なし

      Radio

        →  音量UP
        ←  音量DOWN
        ↑  チューニング(周波数DOWN :逆になっている)
        ↓  チューニング(周波数UP)
        ○  チャンネル切り替え
        ×  メニュー
        ■  なし
        ▲  なし

    • その他

      電源 は、入れて 5 秒ぐらいで立ち上がる。オフはすぐ切れ シャットダウンしているような感じがしない。

      そういえば、操作のロックがない。なにかのキーの組み合わせなのだろうか?


    まぁこんな感じ。

    文字が重なって読めないとか、バックグラウンドと重なって読めないとか日本語の訳語以前の問題もあるし、メニューシステム自体も全体的に未完成な印象でアップデートに期待。

    各機能は、細かいところに不満が出たりするがどうにもならない。

    分解



    そろそろ分解したいが、チェックしたいのは


    • CPU の確認 -- ほんとうに JZ4725 なのか?
    • メモリの確認 -- 何MB なのか
    • FLASH の確認 -- チップの種類
    • バッテリーの容量と電圧
    • BOOT_SEL(ブートの設定)の接続
      BOOT_SEL0  101 
      BOOT_SEL1 100
    • シリアルの接続
      UART0_TxD   58 
      UART0_RxD 57
    • ボタンの接続
      面倒


    これぐらいか。さぁ分解。



    まず、4つのネジを外して裏蓋をはずすと 基板の裏がみえるようになる。このj点で外れる部品は、(裏蓋と)ネジ4 つと電源スイッチのツマミのみ。ちなみに基板の色は青、

    基板の裏には、SDカードコネクタなどのコネクタ類すべてがある。あと、バッテリーが両面テープで貼られている。

    あと目に付くのは、いくつかの空きパターン。ひとつは FLASH2 と書いてあり 4GB モデル用なのだろう。あと (よくわからない)18 pin と 10pin の TSSOP のパターンが重なるように配置されている。外付け DAC かアンプなのだろう。

    あとマイクと アナログスティックが見える。アナログスティックは基板をくり抜いてマウントされている。裏蓋もここの部分に台が付いていて強度上の配慮がされている。ちなみに、B10K と印字がある。

    あとは、水晶も見える。水晶は、表なのだが基板がくり抜かれている。表側はほとんどスペースがないのだろう。

    裏側は、バッテリーが一番背が高い。それ以外はガラガラなので、薄い基板を仕込むことはできそうだ。

    次に進む。基板は、真ん中の枠に 4つのネジで固定されている。
    ネジを外すとまず枠が外れる。枠をはずすと基板を取り出せた。

    まず、ボタンのパーツが自由になって外れるので、回収しておく。次にフレキ。フレキはコネクタで止まっているのでロックを外して抜いておく。あとスピーカーが邪魔。なくても困らないので、基板から外してしまった。元にもどすためにはハンダ付けが必要になった。



    さてようやく基板の表が見えるようになった。基板にはシルクで、

      Neo Slim 3000(1022) - 2009.12.17

    とマークされている。ここで書くことはこのロットのみの話ということ。



    CPU には、JZ4725B と書いてある。あまり意味がないが、一応 SDXC 対応の新しいタイプだ。

      この書き方は相当に語弊がある。正確には、SDカード規格2.0 にしたがって 最大クロックを80MHzを上げたということ。Jz4725(無印) は、SDカード規格1.01 で最大クロックは 20MHz だった。

      前のSD規格は、50MHzまでだったはずなので、80MHz で動くとすれば SDXC カード。ただし 1bit で I/O するので、普通のSDHCカードの最高速より遅い。(80Mbps / 200Mbps) 。また Jz4725(無印) は、最大 20MHz で 規格より大分下だったので、それと比べれば 普通のSDHCカードも高速になる。... といっても カードの性能の 1/4 にしかならない。




    肝心の SDRAM には、EM63A165TS-6G と書いてある。ググると 16M x 16 -- 32MB だ。予想より容量が大きく嬉しい。



    FLASH は、H27UAG8T2ATR-BC 。FMラジオは、RDA5807P と水晶が載った 10pin のモジュール。あとは アンプの XPT4890。電源用とかいくつか IC があるが 8pin 未満。

      データシートはみつからなかったが、スペックは(一応)見つけた。(Hynix_Product_Catalogue.pdf より)
    • H27UAG8T2A 41nm
    • 電圧 3.3V
    • 容量 2G x 8bit
    • Page Program 4KB + (128B or 224B ??)
    • Block Erase 512KB
    • Stack Mono (?)

      - 41nm で 32Gbit のは、4KB + 224B と書いてあったが、16Gbit もそうなのかが不明。
      - Stack の意味も分かっていないが、一応メモ。



    LCD は 0.5mm ピッチで 54pin。型番がフレキに印刷でてあるのだが LED のフレキで隠れて全部読めない。 B3xxW1MV1 。

    これではググることさえ出来ない。

      追記:
      B334W1MV1 だった。が、全然ヒットしない。

      CFAF320240F-T-TS というのが、似ているといえば似ている。0.5mm ピッチ 50pin だし、フレキにチップがいくつか載っているのも似ている。ただ、4線のフレキが メインのフレキに付いていないところが違うし、ストレートでないのも違う。

      まぁ取り外して電子工作につかうことは 今はほとんど考えていないのでピンアサインはあまり重要ではない。コントローラICが分かれば良い。

      ところで、Jz4725B の LCD 用のピンは、

      LCD_D0 〜 LCD_D17 / SLCD_DAT0 〜 SLCD_DAT17
      LCD_PCLK / SLCD_CLK
      LCD_VSYNC / SLCD_CS
      LCD_HSYNC / SLCD_RS
      LCD_CLS
      LCD_SPL
      LCD_DE
      LCD_PS
      LCD_REV


      VIDEO 出力のように PCLK(dot clock)/HSYNC/VSYNC/ を送るタイプの LCD と コントローラにコマンドとデータを送る タイプの smart LCD を制御できるのだが、54pin も信号線がある LCD は、たぶん両方サポートしている。どっちを使うかは接続できまりモジュールだけ分かっても決まらない。

      それぞれメリット/デメリットがあるので、どちらを選ぶかは、設計するひとの考え方で決まる。

      チップメーカの Ingenic が Linux のパッチを出していて、ドライバのソース自体は入手済みかもしれない。ちょっと調べてみよう。

    ここまでのまとめ



    • CPU の確認 -- ほんとうに JZ4725 なのか?

      JZ4725B

    • メモリの確認 -- 何MB なのか

      EM63A165TS-6G -- 32MB

    • FLASH の確認 -- チップの種類

      H27UAG8T2ATR-BC

      裏に空きパターンも

    • FMラジオ

      RDA5807P モジュール (10pin)

    • バッテリーの容量と電圧

      403759 900mAh 3.7V

    • LCDの種類・コントローラ

      不明

    • BOOT_SEL(ブートの設定)の接続
      BOOT_SEL0  101 
      BOOT_SEL1 100

      SEL0 はプルアップ? SEL1 は線が伸びていて、なにか使っている。
      11 で FLASH からのブート。01 で USB-BOOT 。

    • I2C・シリアルの接続
      I2C_SDA     60
      I2C_SCK 59

      18pin の空きパターンに接続。4.7K でプルアップ済。

      UART0_TxD 58
      UART0_RxD 57

      不明

    • ボタンの接続
      LCD と共用。詳細不明。


    ちゃんと基板を調べられているわけではないのだが、コネクタの類が見つからない。外に引き出したいのは、I2C,シリアル,USB-BOOT 設定(BOOT_SEL1/PC31)

    BOOT_SEL1 がボタンと共用されていれば、あるボタンを押すことで USB-BOOT になるかも知れない。もしそうであれば、無改造で Fファームウェアの改造にトライできそうだ。そうでなければ面倒。失敗したら終わりなので、なんとかして改造することを考えなければならない。

      Jz4725B データシート (2009/07/07)は、PC31 が GPIO として使えるような記述だが、Programming Manual では GPIO として使えないような記述になっている。別の pinアサインの PDF (v3) にも GPIO の記述がない。ボタンと共用を期待するのは厳しいかも。ただボタンの接続によっては、パラレルでつなげられるかも。

    I2Cやシリアルは、ファームウェアの改造を始めるのに必要というものではない。基本的に電子工作観点。ただ、シリアルがあれば立ち上げメッセージを見たりログできるので効率が違う。

    基板+バッテリーの状態で、USB につなげてみた。赤と青の LED が、L,R ボタンの近くにあるが、ちゃんと光るし接続もできる。



    LED は、赤がまぶしい。指向性がないからケース内部まで照らしてしまうようだ。なにか黒いもので覆って ボタンだけを照らすようにしたいところ。黒いもので思いつくのはプチルゴムの両面テープとか。

      赤のそばの電流制限抵抗は、201 の刻印で 200Ω。青のそばの電流制限抵抗は、102 の刻印で 1KΩ。両方間違いでは?と思える値。-- 抵抗が逆になっているのではないだろうか?

      いじって遊んでみることにしたので、予備器も 複数購入したのだが、LED の不良率が高い。両方点くのは分解したこいつだけ。他のは片方しか点かない。まぁ下品というか安っぽいかんじで、LED を 交換したくなるから良いのだけれども ... ちなみに他のところの不良はなかった。

      不良のLED を自分で直すとすれば ...

      1) 抵抗を入れ替える。
      2) LED を 横にマウント。
      3) ブチルゴムの両面テープでマスク

      かなぁ。もし LED を壊してしまったり、なくしてしまったら 秋月の 1608の LED と交換かな。赤は 端子が表面に出ているので 付けやすいが 黄/オレンジは難しい。青はないので 2012を無理やり付けるしかないか。抵抗をなくしたら ... ちょっと困る 1608 の抵抗は揃えていない。2012 ならあるのだが .. 。1608 は 秋月で リールなら買える。2500 個! 500 円。マルツだと 10個52円

    それはともかく、Ingenic JzSOC USB-DISK というふうに見えていて DISK のサイズは 1736MB 。FLASH 全部を見せているわけではないようだ。

    とりあえずは、こんなところ。

    追記: I2C は分かった、DACかもと書いた空きパターンに接続されていた。空きパターンは、1.27mm ピッチ(?)。ここから引き出して AVR とか I2C スレーブになれる マイコンやデバイスに接続できる。



    となりの シリアルは、外側にパターンが伸びていないので不明。無接続かも知れない。... 無接続なら 引き出すことは可能だが、0.4mm ピッチだし相当に厳しい。私には無理。

    BOOT_SEL0 は、Jz4725B のそばでプルアップしている様に見える。BOOT_SEL1 は、配線が伸びていて何か使っているようだ。USB-BOOT できる可能性がある。

    そういえば TVOUT だがメニューにあるものの、それ用の IC がない。TVOUT はできないはず。メニューで選んでしまうと操作できなくなるかも知れないし危険。

    追記:54pin の LCD のデータシートを探してみた。

    54pin だということが分かったので、探してみた。
    ヒットしたのが

    • LTV350QV-F04
    • AM480272H3TMQW
    • WXCAT35-TG3
    • T2432C13VR01
    • MB-TFT-35-S4-S

    とりあえず、LED と GND に着目してみてみると 全部

    • 1,2 -- LED カソード
    • 3,4 -- LED アノード
    • 53,54 -- GND

    だった。なにかデファクトスタンダードみたいなのがあるようだ。
                         HSYNC   VSYNC   DOTCLK RESET   CS
      LTV350QV-F04 36 37 38 8 9
      AM480272H3TMQW 36 37 38 - -
      WXCAT35-TG3 42 43 44 14 15
      T2432C13VR01 36 37 38 8 9
      MB-TFT-35-S4-S 36 37 38 8 9


    AM480272H3TMQW は名前から想像できるように 480x272 で、他のと違う。

    とりあえず、違う 2つを外して もうすこし別の信号もチェック。

               CS    SDL   SDI  DATA  DataEn 
      LTV350QV-F04 9 10 11 12-35 52
      T2432C13VR01 9 10 11 12-35 52
      MB-TFT-35-S4-S 9 10 11 12-35 52


    どうも一緒のようだ。これだと仮定して、たとえば HSYNC に信号が接続されているか.. 接続されているならどの信号か? という観点で見ればだいたい判るはず。



    よく見てみよう。左の ところ 4pin 分つながっている。これは丁度 39-40 の VDD(analog),VCC(diginal) にあたる。左端の 2pin も GND に接続しているように見えるし、右が 1 番ピンということになる。

    その右 38 から DOTCLK,VSYNC,HSYNC,R7... R0 という並び順。8pin が接続されていて 3 pin が同じ信号。... ということは smart LCD でなく Video タイプの LCD。3pin が同じ信号ということは Red は 6bpp か 5bpp 。次に 6pin 分接続されていて、その先はよくわからない。まぁ Green は少なくとも 6bpp ということだけはわかる。こんな風に 接続をおっていって、R5G6B5 の 16bpp ということが判った。

    これで少なくとも「どういうドライバを使うのか?」ということは分かったわけだ。ただし、バックライトを点灯する方法は分からない。これについても 明るさ調整できるようだから、おそらく PWM のどれかという仮定はできる。

      追記:aitendo から 3.5 inch LCD [LQ035NC111] が発売されている。データシートもある。
      これが、かなり似ている。

    さてボタンの追跡。



    これは、R ボタン周り。5 つのボタンがあって、それに対して 6つの 103(10KΩ) の抵抗が付いている。たぶんプルアップかブルダウン。ちがうとおもうが あるいは直列かも知れない。それはともかく、6 つの信号が 右端で VIA (スルーホール) に消えている。ここで裏をみて 追って行くわけだ。

    裏はちょうどバッテリーで隠されている。バッテリーをずらした写真は、これ。



    それに対応する表側も撮り直した。



      バッテリーは邪魔なので、外してしまった。ちなみに、バッテリーも LCD もない状態でも USB に接続したらアクセスできた。当面はこの裸の状態で 使おうと思う。


    よーく見る。上の写真の 上部 の 7 本の横のラインのうち 上の 6本が、Rボタンの ところの 6 つの 103につながっている。で,一番上の 1 つを除く 5 つが LCD 用のデータ線とつながっている。

    上の 1本は、VIA で消えているわけだが、表の部分は LCD のコネクタの下で分からない。見えないところで、おなじように LCD のデータ線とつながっているのかも知れない。

    ところで、裏面で 1本単独の縦のラインがある。これは、BOOT_SEL1 。これも同じように LCD 用のデータ線につながり、どこかのボタンの線ともつながっているのかも。

    さて、こういうデザインだとすると、Linux の LCD ドライバで対応しなければボタンの情報は取れない。ひょっとして、リファレンスデザインで既にそうなっているのかも。ここらでドライバのソースを見てみた方が良いかもしれない。

    USB-BOOT



    電源OFF の状態で → ボタンを押しながら USB を接続すると USB-BOOT になることが判った。

    「JZ4750 USB BOOT Device」というデバイスとして認識される。

    まだ詳しくはわからないが、ここでプログラムをアップロードすればそれが動作するのだろう。

    まず最初にやりたいのは、FLASH の吸出しと書き戻し。それさえ出来るようになれば、大分不安が解消される。

    まずは、xburst-toolsで何が出来るか調べて、これのビルド環境をつくることから始めてみよう。

    とりあえず nandprog の README を読んでみた。linux 環境で動作すると書いてあり、ビルドするには mipsel-linux-gcc が必要とも書いてある。

    詳しくは、NandProgrammer_Manual.pdfを読めとも。

    でも ftp.ingenic.cn には全然アクセスできない。qi-hardware.com は ingenic オリジナルのものも含めて ちゃんと最新のものがあるみたいだから、こっちを頼ろう。

    とりあえずは、ダウンロードして README を見ていった。どうも usbboot で FLASH に書き込むことができるようだ。


    • /etc/xburst-tools/usbboot.cfg を用意する。
    • usbboot -c "boot"
    • usbboot -c "nprog 0 u-boot-nand.bin 0 0 -n"
    • usbboot -c "nprog 2048 uImage 0 0 -n"

    こんな感じで使うものらしい。コードを見ると、usb_get_ingenic_cpu() という 関数があってそれで処理を切り分けている。それは USB のプロトコルで 教えてもらうもののようで、かならずしも 実際のCPUと同じである必要はないようだ。

    "boot" コマンドを実行すると、プログラムを送り込んでそれが動作するように思える。stage1 と stage2 があって、動作するにも段階があるようだ。動作すると、何がおきるのか?

    stage2 のコードには usb のディスクリプタの記述がある。... ということは自分で usb を扱っている。ここまでくればプログラム次第でなんでも出来るのだろう。

    stage2 で、定義されているコマンドは、

      VR_GET_CUP_INFO
      VR_SET_DATA_ADDRESS
      VR_SET_DATA_LENGTH
      VR_FLUSH_CASHES
      VR_PROGRAM_STAT1
      VR_PROGRAM_STAT2
      VR_NOR_OPS
      VR_NAND_OPS
      VR_CONFIGRATION
      VR_SDRAM_OPS


    どうも SDRAM に書き込んで 実行することもできるようだ。ただし、コマンドを発行する側も合わせて対応しているかどうか見る必要がある。

    残念ながら、READ するコマンドはないように思える。... 作ればなんでも出来そうだが

      どうも読むべきは、USB_Boot_Tool_Manual_1.4_EN.pdf らしい。直接リンクはしないが、これならググれば見つかる。


    ... そんなことより どうやってプログラムが動いたことを確認しよう。LED のアクセス方法を知るのが先か?

    • LCDを動かせれば、LED も必要ないのかも知れないが、LCD そのものも デバッグしないといけないだろう。あと LCD では情報を人が目で見るしかなく、記録できない。これはデバッグ時には面倒になる。

    • USB も良いのだが、ドライバーが切り替わると 接続しなおさないといけなさそうで 厳しい。usbboot などプログラムと組みにすれば、問題ないような気もする。が、作るのが面倒そう。

    • 電子工作を前提にすれば、I2C 経由で情報を書き込むとかはできる。メモリに書き込んで後で読み込むこともできるだろうし、シリアルに変換してホストに送ることもできるだろう。

    • どれも一長一短のような気がする。シリアルが便利なのだが、それも電子工作前提になるし他の人には勧められない。

    • 使えるものなら USB が一番良いような気がしてきた。専用プログラムならあたかも シリアルに接続されているように見せることも可能そうだし。できるかどうか分からないが検討してみよう。


    こういう話題の続きは別途記事にしようと思う。さて、提供されている NEO_UPDATE.BIN の構造はどういうものなのだろう? それが分かれば dual-boot といったことも可能だろうし、FLASH に書き込む方法も分かるかも知れない。書き込む方法さえ分かれば吸い出す必要などなくなる。

    まず、NEO_UPDATE.BIN 自体は 67MB ほど。U-DISK として見えている部分は 1736MB で見えていない部分が、200MB はある。

    まず、NEO_UPDATE.BIN が圧縮されているのかどうか? 圧縮済みなら このファイルを圧縮しても 小さくならないので判断できる。

    gzip をかけてみると 23 MB ほどに圧縮できることから 基本的に圧縮されていないようだ。だからといって FLASH の RAW イメージともあまり思えない。FLASH の容量との差が大きすぎる。


      ちょっと調べてみたが、RAW イメージかも。先頭 150KB 程は Ingenic 社が提供しているブートローダのようだ。uC/OS-II というメッセージが見える。続く部分は、ファイルシステムのようにも見える。だが、どういうファイルシステムか分からない。ひょっとして yaffs2 とか?

        dump してみたが、特徴がある形式で、yaffs2 とも思えない。カーネルソースをチェックしてみると UBI という ウェアレベリングのレイヤーがあり それに最適化された UBIFS というものがあるようだ。どうも UBIFS っぽい。

      それはともかく、RAW イメージならば FLASH の先頭かどこかに書くことで 元に戻せるのかも知れない。

      そんなことより開発環境。どうしよう。dingoo-linuxのダウンロードページにある dingux_toolchain_20091022.tar.bz2 でいいかという気になっている。


    ちょっとメモ:「遊星より愛をこめて」より

    usbboot に関する解析記事を発見。だいぶ分かってきているのだが、rockbox の usbboot とか A-320 についてとか知らないので関連情報が役にたった。

    バッテリーの制御IC


    例外はあるかも知れないが、中華PMPというものは、充電中は必ず電源が入る。たとえ電源スイッチを OFF にしていても電源が入ってしまう。そして無意味にバッテリーのイメージを表示して充電中を示すアニメーションまでしてくれる。そして、これも例外ではなかった。

    そんなことをする理由は、コストを下げるために自分で電源管理をするからだと思っていた。

    しかし、充電を制御するIC は意外と安いものだった。それでも使わないのだろうと勝手に思っていたのだが Onda VX747 は、TQ7051 という IC (LTC4054 互換,pdf) を使っていることを RockBoxのページで知った。

    となれば、こいつも使っていておかしくない。真面目に調べてみることにした。

    電源用の IC は、SOT23-5 とか SOT23-6 という 5,6 ピンの ものが多い。そして、必要なのは 主電源用の 1.8V,3.3V とバックライト用、バッテリー充電用の 4つ。

    探すとちょうど 4 つある。そのなかでそれらしいのがこれ。

      ちまみに、1つだけ 6ピンで LCDのコネクタのそば。残りの 2つは並んでいてそのうちの 1 つにはインダクタが付いている(おそらく 1.8V)。
      ついでなので書いておくと写真下の8ピンがスピーカ用アンプ。 XPT4890 という IC で 1W BTL。LM4890, TPA2005D1 と互換。



    LT4054 互換なら、2 番ピンが GND 。3,4 番ピンが 電源とバッテリー。-- 一応それらしく見える。1番ピンは STAT で 無接続で問題ない。特徴は、5番ピンで 2KΩぐらいの抵抗が接続される。写真ではよくわからないが、2.7KΩが接続されている。

    場所も バッテリーのリード線のちょうど裏でそれらしい。

    たぶん LTC4054 互換で間違いないのだろう。だとすれば電源を接続すれば勝手に充電してくれる。プログラムを作って制御する必要はない。

      追記: チップの表面に 55b9 と印字がある。これでググると ビットした。充電IC で間違いない。

      ちなみに、4.2V ±1% で充電する。C/10 になったら充電を停止する機能がある。(電圧が下がれば)再充電。 あと電圧が低い場合 2.9V になるまで 電流を制限しての充電機能もある。

      LT4054 と同じだが、それより劣るようなものもあるので とりあえず安心。

    これは嬉しい。バッテリーを外さなくてもデバッグできるし、管理用のドライバも不要。ただ電圧を監視すれば良い。

    あとは、電源スイッチを Off すると電源が切れるのか、自分で制御して電源を切るのかの調査が必要。電源を自分で切るのなら切り方が分からないとバッテリーが空になってしまう。

    ちなみに、ちゃんと電源を切っているのはほぼ確か。USB を接続するとパワーオンリセットで USB-BOOT にできるから間違いなさそう。電源スイッチも Off にすると直ちに Off になる。シャットダウンしている様子がないので、機械的な電源スイッチだと思う。

      オートで電源 OFF できるのを忘れていた。機械的な電源スイッチではないかも。OFF する方法を見付けないと。

    スピーカ用アンプのメモ:

    XPT4890 という IC で 1W BTL。LM4890, TPA2005D1 と互換。と書いてしまったが、互換なのは LM4890 で 1W 。TPA2005D1 は PWM で 1.4W 。ピンアサインは互換性がある。どうもルーツは、MC34119っぽい。よく見るとピン互換性がある。MC34119 は 250mW だがだいぶ進化しているようだ。

    ついでにメモ: aitendo で扱っている TMPA2055DM(2.7W) もピン的には互換。ただし、TPA2005D1 と違って 普通の D級アンプなので、出力に LC フィルターが必要。
    posted by すz at 02:15| Comment(0) | TrackBack(0) | Jz47xx(機種解析)