ネット上を検索すると、E3000 には二箇所の JTAG 端子(JB1, JB3)があることが判明しました。JB1 の方はヘッダーパットと呼ばれるプローブの針で接触させるものです。そして JB3 は、いわゆるピンヘッダを取り付けるためのスルーホール(10 ピン)となっていました。この JB3 の方へ、ピンヘッダを取り付けて、JTAG ケーブルを接続するようにしました。
(当初は JB1 の端子の方しか認識していなかったので、いろいろ準備が必要だと思っていたので、本日の作業は出来ないと思っていました。)
参考 URL
DD-WRT Forum -- Help unbricking aLinksys E3000
http://www.dd-wrt.com/forum/viewtopic.php?t=78407&postdays=0&postorder=asc&start=30&sid=ff112e29919b357c610aca7be4878057
DD-WRT Forum -- 610 V2 - E3000 jtag
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=75073
JB3 のスルーホールは、ハンダで埋められている状態であったので、このハンダを取り除くことから始めました。そして 10 ピンのピンヘッダをハンダ付けしました。
JB3 の JTAG 用ランドの様子です。 JB3 is as follows nTRST 1 2 GND TDI 3 4 GND TDO 5 6 GND TMS 7 8 GND TCK 9 10 GND |
JTAG 用にピンヘッダを取り付けたところです。 |
この RC27 〜 RC31 までの 5 個の抵抗器は、すぐ傍にあるシールドケースの中に存在していました。シールドケースの上部の爪二箇所をまっすぐに直して、蓋を引き上げるのですが、内部にあるチップの熱を逃がすための放熱ラバーとがっちりと固着していて、なかなか蓋を開けることができませんでした。
JTAG 用の抵抗器(RC27 〜 RC31)のパターンが存在するシールドケースの中の様子です。 |
まず最初にチップ抵抗器をハンダ付けしようと格闘しました。チップ抵抗器は、先日電源を間違って装着したことで破損してしまった WHR-AMG54 のプリント印刷基盤から取り外しました。抵抗値は不明です。そして出来るだけ小さなものを選んでみましたが、写真のようにチップ抵抗器の方がかなり大きいのです。
RC30 のところへチップ抵抗器をハンダ付けしてみましたが、チップ抵抗器の大きさが全然大きい状態でした。 |
チップ抵抗器を取り付けることを諦めて、ハンダでブリッジをして接続しようと試みましたが、今度はハンダブリッジをしてくれないのです。いつもは簡単にブリッジしてしまうような場所なのですが、何故か上手く行きません。
そこでリード線の芯線を使って接続することにしました。時間は掛かりましたが、無事5箇所のランドを接続することができました。これら一連のハンダ付け作業は、ルーペを使いながらの作業でしたので、本当に目が疲れてしまいました(笑)。
これで JTAG ケーブルを接続してみると、JTAG によるアクセスができているようでした。
# ./tjtag3 -probeonly
==============================================
EJTAG Debrick Utility v3.0.1 Tornado-MOD
==============================================
Probing bus ... Done
Instruction Length set to 8
CPU Chip ID: 00010100011100010110000101111111 (1471617F)
*** Found a Broadcom BCM4716 Rev 1 CPU chip ***
- EJTAG IMPCODE ....... : 00000000000000000000100110000000 (00000980)
- EJTAG Version ....... : 1 or 2.0
- EJTAG DMA Support ... : Yes
- EJTAG Implementation flags: R4k MIPS32
Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ...... Done
Clearing Watchdog ... Done
Probing Flash at (Flash Window: 0x1fc00000) ...
Done
*** Unknown or NO Flash Chip Detected ***
*** REQUESTED OPERATION IS COMPLETE ***
JTAG 用のソフトウェアには、Puppy Linux で使用可能な Linux32 版の TJTAG 3.0.1 を使用しました。フラッシュメモリ(MX29LV640EBTI-70G)を自分で認識出来ないようで、オプションとして /fc:46 を設定しました。フラッシュメモリの番号は、バージョンによって異なりますので、使用するバージョンのヘルプで確認をしてから設定をしてください。
ここまでくれば、後は CFE 部分を書き込んでしまえばなんとかなる!・・・と思っていました。
Linksys E3000 用の CFE.BIN
DD-WRT Forum -- Cfe collection project -See Pg 9 for FTP server info
http://www.dd-wrt.com/phpBB2/viewtopic.php?p=666073
# ./tjtag3 -flash:cfe /fc:46
==============================================
EJTAG Debrick Utility v3.0.1 Tornado-MOD
==============================================
Probing bus ... Done
Instruction Length set to 8
CPU Chip ID: 00010100011100010110000101111111 (1471617F)
*** Found a Broadcom BCM4716 Rev 1 CPU chip ***
- EJTAG IMPCODE ....... : 00001000000000000000000000010010 (08000012)
- EJTAG Version ....... : 1 or 2.0
- EJTAG DMA Support ... : Yes
- EJTAG Implementation flags: R4k MIPS32
Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ...... Done
Clearing Watchdog ... Done
Manual Flash Selection ... Done
Flash Vendor ID: 00000000000000000000000011000010 (000000C2)
Flash Device ID: 00000000000000000010001011001011 (000022CB)
*** Manually Selected a MX29LV640B 4Mx16 BotB (16MB) Flash Chip ***
- Flash Chip Window Start .... : 1c000000
- Flash Chip Window Length ... : 01000000
- Selected Area Start ........ : 1f000000
- Selected Area Length ....... : 00040000
*** You Selected to Flash the CFE.BIN ***
=========================
Flashing Routine Started
=========================
Total Blocks to Erase: 0
Loading CFE.BIN to Flash Memory...
[ 0% Flashed] 1f000000: 10000817 00000000 00000000 00000000
[ 0% Flashed] 1f000010: 00000000 00000000 00000000 00000000
↓
↓
[ 0% Flashed] 1f0001e0: 00000000 00000000 00000000 00000000
[ 0% Flashed] 1f0001f0: 00000000 00000000 00000000 00000000
・・・ここで中断してしまいます!・・・
しかし JTAG で CFE を書き込んでくれないのです。書き込み始めてすぐに、0x1f0001ff のところで、何故か書き込みが停止してしまうのです。 /noreset や /noemw , /nocwd , /nobreak などのオプションを設定してみましたが、どれもダメでした。
現在は、原因が解らず困っている状況です(涙)。
今後、書き込めない理由を探してみたいと思っています。
Hi, Sir:
返信削除Could you please show me your jtag cable? I have one works on linksys wrt54g but on e3000, any advice would be appreciated
Thanks
Joe