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(機種解析)
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/40837641
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック