2015年10月25日日曜日

Buffalo WHR2-G54 の分解とフラッシュメモリのバックアップ

インターネット・オークションにて、バッファロー WHR2-G54 を入手しました。私は、型番からてっきり WHR2-A54G54 の兄弟機だと思っていました。しかし読者さんからの情報をいただき、WHR2-A54G54 とは全く別物で、逆にバッファロー BHR-4RV との兄弟機であることを知りました。そこで急遽本機(WHR2-G54)を入手して、内部のボードなどを確認してみました。せっかく分解したこともあり、ついでにフラッシュメモリのバックアップも行なっておきました。
Buffalo BHR-4RV 有線 LAN ルータを入手
http://near-unix.blogspot.jp/2015/10/buffalo-bhr-4rv-lan.html

今回入手したバッファロー WHR2-G54 です。
天頂部のプラパーツはスカイブルーのものが使用されていました。

分解作業

よく見かけるバッファローの筐体で、分解もかなりこなしていますが、やはりガッツリと噛みあった爪を外すのは神経を使います(笑)。今回も無事筐体を開くことができました。そしてボードを取り出して確認してみました。やはり BHR-4RV と同じプリント印刷基盤を使用していました。無線LANカードを取り付ける Mini-PCI ソケットなどが取り付けられているなどの違いがありました。またフラッシュメモリも VPN 機能の有しないことから 4MB と小さなものが搭載されていました。

WHR2-G54 のボード表面の様子です。
WHR2-G54 のボード裏面の様子です。
WHR2-G54 に搭載されていた 4MB フラッシュメモリ(ST M29W320DT)です。

シリアルコンソールと JTAG へピンヘッダを設置

シリアルコンソールの部分はシリアル変換チップ(IC18)のランドパターンの接続も含めて行いました。画像のように IC18 の #8-#9 と #11-#12-#13 をリード線から取り出した銅線でショートしました。そして R531 のところも銅線でショートさせてもよかったのですが、部品取り用の無線 LAN ルータからゼロオームのチップ抵抗を見つけ出して、それを移植することによって接続しました。

シリアル変換チップ(IC18)周辺の加工の様子です。

JTAG 端子側は 16 ピンのスルーホールが用意されていましたが、14 ピンまでしか使用しないことから 14 ピンのピンヘッダを取り付けました。

ピンヘッダの取り付けなどの加工が終わったボードです。
電源ソケットのセンターピン対策も行なっています。

JTAG の動作確認

フラッシュメモリのバックアップの前に JTAG が正常に動作するかプローブ動作を行なってみました。使用したケーブルは、バッファタイプの WIGGLER ケーブルです。
# ./tjtag3 -probeonly /cable:wiggler

================================================
 EJTAG Debrick Utility v3.0.2.1 Tornado-MOD
================================================

Detected IR chain length = 8
Number of device(s) = 1

IDCODE for device 1 is 0x0470417F

Probing bus ... Done

Instruction Length set to 8

CPU Chip ID: 00000100011100000100000101111111 (0470417F)
*** Found a Broadcom BCM4704 Rev 8 CPU chip ***

    - EJTAG IMPCODE ....... : 00000000100000000000100100000100 (00800904)
    - EJTAG Version ....... : 1 or 2.0
    - EJTAG DMA Support ... : Yes
    - EJTAG Implementation flags: R4k MIPS32

Intial value of Control register is 0000000C
Intial value of status register is  00000077
01110111 (00000077)

Status bit 7 Busy Inverted pin 11 = 1
Status bit 6 *Ack          pin 10 = 1
Status bit 5 Paper-out     pin 12 = 1
Status bit 4 Select        pin 13 = 1
Status bit 3 *Error        pin 15 = 0
* means low = true, e.g., *Error

VCC connected
values of Control register after init 0x0000000C
value of status register after init   0x00000077
system reset complete

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ... ... Done
Init PrAcc ... Skipped
Clearing Watchdog ... Done


Chip ID 4704
Chip Rev 8
Package Options 0
Number of Cores 0
Core Revision 79
Core Type 700
Core Vendor ID 80000
Flash Type 700
Flash Type = PFLASH
Dest is bits 0
Flash is byteswapped 0
Endian Type is LE 0
PLL Type 00020000
Enter Flash Probe

Probing Flash at (Flash Window: 0x1fc00000) ...
Done

Flash Vendor ID: 00000000000000000000000000100000 (00000020)
Flash Device ID: 00000000000000000010001011001010 (000022CA)
*** Found a ST 29w320DT 2Mx16 TopB     (4MB) Flash Chip ***

    - Flash Chip Window Start .... : 1FC00000
    - Flash Chip Window Length ... : 00400000
    - Selected Area Start ........ : 00000000
    - Selected Area Length ....... : 00000000



 *** REQUESTED OPERATION IS COMPLETE ***

フラッシュメモリのバックアップ

フラッシュメモリのバックアップは CFE だけの部分とフラッシュメモリ全体のバックアップを行いました。それぞれ二回バックアップを取得して、両者が同じであることを md5 のハッシュで比較して確認しました。もちろん問題なく一致していました。

JTAG でフラッシュメモリをバックアップしているところです。

今後の予定

将来 USB コントローラの移植も予定していますので、ファームウェアには拡張性の高い OpenWrt をインストールする予定です。

0 件のコメント:

コメントを投稿