PPC版 LinkStation/TeraStation/玄箱での JTAG 利用

Olimex ARM-USB-OCD を用いた LS-HGLAN の修復

基本的には、以下の2ちゃんねる情報どおりにすればよい。

LinkStation と ARM-USB-OCD の結線

2ちゃん情報では、R67に1kΩのチップ抵抗を付けているが、とても無理そうだったので、代わりに AVR 用のヘッダピンの 2pin から Vcc(3.3V) を取り出すようにした。それ以外は同じ。

ARM-USB-OCDSignalLinkStationSignal
1VREFAVR 2pin(Vcc)
2VTARGET
3NTRST4TRST
4GND
5TDI3TDI
6GND
7TMS9TMS
8GND
9TCK7TDI
10GND
11RTCK
12GND
13TDO1TDO
14GND
15RST
16GND
17DBGRQ
18GND
19DBGACK3TDI
20GND16GND

参考

TopJTAG Flash Programmerのインストール

TopJTAG社のWebサイトからダウンロードする。2009-11-27 の時点で既にベータ版ではなくなっていて、Ver. 1.2.0 になっていた。お試し期間が20日あるので、一時的な利用であればライセンスを購入する必要はないかもしれない。ちょっと小金があったのと、最近の円高でドル建てでライセンスを購入してみた。円建てだと 9,750円ほどだったのでどれだけ節約できたやら。

ST M29W324DB

IDE chip が ITE8211 に変更された後期型 LS-HGLAN にはフラッシュROM に ST M29W324DB が使用されているものがある。TopJTAG Flash Programmerで読み込みはできたが、消去ができず、書き込みができなかった。

2ちゃんねる玄人志向「玄箱」で自宅サーバ Part13より

378 名前:193 [sage]: 2009/06/04(木) 22:47:43 ID:??? 
やっちまった。u-boot書き換え失敗した。
初代玄箱に最新版u-boot-2009.03を無理矢理入れようとしたのが間違いだった。
(´・ω・`)

以下、失敗例。

# diff Makefile.org Makefile
1659,1660c1659
< #linkstation_HDLAN_config \
< # Remove this line when HDLAN is fixed
---
> linkstation_HDLAN_config \

linkstation.hは適当に編集

…
dd if=u-boot.bin of=/dev/mtdblock1 bs=1k
…
再起動
…
シリアルでみると以下で止まってる。
U-Boot 2009.03 ( 5月 30 2009 - 13:41:18) LinkStation / KuroBox

CPU:   MPC8245 Revision 1.4 at 196.608 MHz: 16 kB I-Cache 16 kB D-Cache
DRAM:  64 MB
FLASH:  4 MB
        00  0b  1317  0985  0200  ff
        00  0c  1095  0680  0101  ff
        00  0e  1033  0035  0c03  ff
        00  0e  1033  0035  0c03  ff
        00  0e  1033  00e0  0c03  ff

…
JTAG(ARM-USB-OCD)で復旧します。 


379 名前:193 [sage]: 2009/06/04(木) 23:11:31 ID:??? 
ちょっと長くなるのですまんけど、ARM-USB-OCDで復旧する手順を書くよ。
※自作は切り分け面倒だし、安いパラレルポート対応のやつとか
 レガシーデバイスのは買いたくなかったのでARM-USB-OCD買ったよ。

<初代玄箱のJTAG復旧方法>

■必要なもの
・ARM-USB-OCD:1万ぐらい
・1kΩチップ抵抗 × 1
・2550 コネクタ + ピン × 12 (予備で+6ぐらいしておくといいかも)
・適当なケーブル 15cmぐらい × 6
・2550 ピンヘッダ 2列で40個ぐらい × 1

■すること
・ケーブル作成
 両端を 2550コネクタで加工する。6本作るので結構面倒だよ。
 きっと長さはそろえた方がいいよ。
・R67に1kオームの抵抗を半田付け
 繋がらなくてごちゃごちゃやっているときにつけちゃった。
 必要かどうかは正直分からんよ。(細かい作業だったのでとりたくない)
 誰か試してみてくれると助かる。
・ピンヘッダ
 2x8の16個でパッチン切断して、玄箱の基盤に半田付け。
 前に付けたヒートシンクにぶつかるので、裏から付けて
 間違えないようにピンアサインをマジックで基盤に書いたよ。
 ※ピンアサインが逆になってるので注意して。 


380 名前:193 [sage]: 2009/06/04(木) 23:31:54 ID:??? 

■すること
・ARM-USB-OCDのドライバインストール、接続
・作ったケーブルで以下のように接続

KUROBOX ARM-USB-OCD
1 TDO 13
3 TDI 5
4 TRST - (3)使わなくても可
6 detect 1
7 TCK 9
9 TMS 7
13 Vcc -
16 GND 20
13 Vcc -
16 GND 20

KUROBOX(基盤裏につけていることに注意)
玄箱につけたピンを上から見た図
1  3     7  9
A B ■ E F ■ ■ ■
■ C D ■ ■ ■ ■ G
2  4  6              16

ARM-USB-OCDの赤いラインがあってコネクタに▼マークがあるところが1
コネクタの口を正面から見た図
1  3  5  7  9  11 13 15 17 19
D C B F E ■ A ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■ ■ G
2  4                       20



381 名前:193 [sage]: 2009/06/05(金) 17:48:12 ID:??? 
(´・ω・`)激しく崩れた。まーいいか。

ちなみにピンアサインはここを参考にさせてもらったよ。ありがとう。
http://f30.aaa.livedoor.jp/~umino/pukiwiki.php?Linkstation%2FJTAG

肝心のアプリだけど、以下を全部試した/試そうとしたんだけど…
・jtag(無料)
 ARM-USB-OCDに対応してない。
・urjtag(無料)
 ARM-USB-OCDに対応してるけど、detectflashでエラーになっっちゃったので
 旧パッチみながらsrc弄ってlinux上やcygwinでコンパイルしたけど駄目だった。
・OpenOCD(無料)
 対応しているのはARMだけ。
・H-JTAG
 玄箱のFlashに対応してない。
・OCDemon Flash Memory Programmer
 ARM-USB-OCDが見つからなかった。アンインストール不可になった。
・Universal Scan
 使おうとしたら変なメールだそうとするのでレジストしなかった。
・MITOUJTAG
 体験版すら手に入らず
・JtagKeyTool(Asagao)
 使い方がさっぱり。
・Cable Server 0.1 for Xilinx Impact
 ARM-USB-OCDに対応してない。

探しまくってTopJTAGってソフト見つけたよ。
This pre-release (BETA) version is available free for a limited period: it expires on 1 October 2009.
ってことでベータ版なので自由に使えるらしい。
かなり安定しているし、色々試した中でも一番使いやすい。
何よりARM-USB-OCDに対応してるし玄箱のFlashに対応してる。
パラメータ関係はかなり苦労したけど、玄箱、FLASHのデータシートとにらめっこして何とか解決。
(姉妹ソフトもいい感じ) 


382 名前:193 [sage]: 2009/06/05(金) 17:50:18 ID:??? 
■すること(続き)

・TopJTAG Flash Programmerのインストール
http://www.topjtag.com/flash-programmer/

・BSDLファイルのダウンロード(MPC8241R1BBSDLね)
http://www.freescale.com/webapp/sps/site/overview.jsp?code=DRPPCBSDLFLS

・TopJTAG Flashの設定
メニューのSetup押して設定開始。

【JTAG Chainタブ】
 ・「Examine the chain...」ボタンを押して「Generic FTDI FT2232」,
 「Olimex OpenOCD JTAG A」、「6MHz」を選択する。
 ※勝手に見つけてくれる。「Manufacture」,「IDCODE」はそもそも玄箱が返さない仕様なのでn/aでOK
 ・JTAG Chainの「BSD file : CLICK HERE TO SET」をおして、さっき落としたBSDLファイルをロードする。

【Flash arrayタブ】
 ・「8-bit (1 chip x 8 bit)」と「16-bit capable in 8-bit~」を選択
 ・「Use Unlock~」にチェックを入れる。
 後はデフォルトでOKのはず。ちなみに「16-bit~」ではまりまくった。



383 名前:193 [sage]: 2009/06/05(金) 17:52:10 ID:??? 
【Signal Pinsタブ】
 MPC8245UM.pdfみながら設定したけどここが一番苦労したよ。
 データシートには記載があるので設定してるけど
 Flash 4Mしか積んでないのに32Mまで指定できるようになっちゃうからA22~A24まではいらないかも。

 設定が多いのでコンフィグファイルそのもの。
 何となく設定して保存して~.topflashファイルをテキストエディタで開いて同じになっていればOK

  <Pins>
    <SignalPin Name="CE" Device="0" PortName="RCS0_L" PortIndex="-1" Inverted="0"/>
    <SignalPin Name="OE" Device="0" PortName="FOE_L" PortIndex="-1" Inverted="0"/>
    <SignalPin Name="WE" Device="0" PortName="WE_L" PortIndex="-1" Inverted="0"/>
    <SignalPin Name="A0" Device="0" PortName="SDMA0" PortIndex="-1"/>
    <SignalPin Name="A1" Device="0" PortName="SDMA1" PortIndex="-1"/>
    <SignalPin Name="A2" Device="0" PortName="SDMA" PortIndex="2"/>
    <SignalPin Name="A3" Device="0" PortName="SDMA" PortIndex="3"/>
    <SignalPin Name="A4" Device="0" PortName="SDMA" PortIndex="4"/>
    <SignalPin Name="A5" Device="0" PortName="SDMA" PortIndex="5"/>
    <SignalPin Name="A6" Device="0" PortName="SDMA" PortIndex="6"/>
    <SignalPin Name="A7" Device="0" PortName="SDMA" PortIndex="7"/>
    <SignalPin Name="A8" Device="0" PortName="SDMA" PortIndex="8"/>
    <SignalPin Name="A9" Device="0" PortName="SDMA" PortIndex="9"/>
    <SignalPin Name="A10" Device="0" PortName="SDMA" PortIndex="10"/>
    <SignalPin Name="A11" Device="0" PortName="SDBA0" PortIndex="-1"/>
    <SignalPin Name="A12" Device="0" PortName="PAR_AR" PortIndex="7"/>
    <SignalPin Name="A13" Device="0" PortName="PAR_AR" PortIndex="6"/>
    <SignalPin Name="A14" Device="0" PortName="PAR_AR" PortIndex="5"/>
    <SignalPin Name="A15" Device="0" PortName="PAR_AR" PortIndex="4"/>
    <SignalPin Name="A16" Device="0" PortName="PAR_AR" PortIndex="3"/>
    <SignalPin Name="A17" Device="0" PortName="PAR_AR" PortIndex="2"/>
    <SignalPin Name="A18" Device="0" PortName="PAR_AR" PortIndex="1"/>
    <SignalPin Name="A19" Device="0" PortName="PAR_AR" PortIndex="0"/>
    <SignalPin Name="A20" Device="0" PortName="SDBA1" PortIndex="-1"/>
    <SignalPin Name="A21" Device="0" PortName="SDMA" PortIndex="11"/>
    <SignalPin Name="A22" Device="0" PortName="SRESET_L" PortIndex="-1"/>
    <SignalPin Name="A23" Device="0" PortName="TBEN" PortIndex="-1"/>
    <SignalPin Name="A24" Device="0" PortName="CHKSTOP_IN_L" PortIndex="-1"/>
    <SignalPin Name="D0" Device="0" PortName="MDH" PortIndex="7"/>
    <SignalPin Name="D1" Device="0" PortName="MDH" PortIndex="6"/>
    <SignalPin Name="D2" Device="0" PortName="MDH" PortIndex="5"/>
    <SignalPin Name="D3" Device="0" PortName="MDH" PortIndex="4"/>
    <SignalPin Name="D4" Device="0" PortName="MDH" PortIndex="3"/>
    <SignalPin Name="D5" Device="0" PortName="MDH" PortIndex="2"/>
    <SignalPin Name="D6" Device="0" PortName="MDH" PortIndex="1"/>
    <SignalPin Name="D7" Device="0" PortName="MDH" PortIndex="0"/>
  </Pins>

【Static Pinsタブ】
 色々試しまくったけど、結局何もいらないみたい。
 (´・ω・`)



384 名前:193 [sage]: 2009/06/05(金) 17:55:23 ID:??? 
・設定保存してINFOボタンを押してみる
 ちゃんとCFIの情報がとれればOK
・READボタンを押してu-bootが格納されてるアドレス300000から458752バイト読み込んでみる。
 u-bootとか文字列見つかればOk。
 ※1分ぐらいで読み込めるはずだよ。4Mだったら10~15分ぐらいで読み込めるよ。
・読み込んだデータをとりあえずセーブする。
・u-boot-lsppchd-flash-1.2.0-r2.binを準備。(無ければ外人さんのサイトから落として)
・読み込みボタンを押してu-boot-lsppchd-flash-1.2.0-r2.binを読み込む
・Programボタンを押して
 Erase Optionを「300000h - 36FFFFh」を削除するように設定。
 Verifyも設定して、「Ignore the data~」に「300000」を設定して実行する。
 10分ぐらいだったかで終了するよ。
・再起動してシリアル接続でu-bootの環境変数を修正する。
・reset…復活\(^O^)/

長文失礼しました。 

ST Micro社の FlashROM

LinkStation/TeraStation/玄箱には何種類かの FlashROM が使われているが、STMicro社のROMはちょっと厄介だ。

urjtag + ARM-USB-OCD

この組み合わせでは M29W320DT は認識されなかった。

# /opt/bin/jtag

UrJTAG 0.10 #1502
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable ARM-USB-OCD 
Connected to libftdi driver.
jtag> detect
IR length: 8
Chain length: 1
Device Id: 0 (0x0000000000000000)
chain.c(149) Part 0 without active instruction
chain.c(200) Part 0 without active instruction
chain.c(149) Part 0 without active instruction
jtag> include motorola/mpc8241/1.2
Warning: line 279 exceeds 100 characters, clipped
Warning: line 281 exceeds 100 characters, clipped
   Using default bus width 8
jtag> endian big
jtag> instruction SAMPLE/PRELOAD
jtag> shift ir
jtag> shift dr
jtag> dr
110110110000110001011111000010000000000000000000000000000000000000000000000010000000000000010000000000001111010101110000000000000000000000000000000010000000000000000000000000000000000000000011111010100000000110001101111111111110010101100000000000000000000100100000000000011000010110111111111111011111101111010001111011000101100000001001011111110000001111110111111000001010110110001100101010011101000000000000000000000000000000000000000000000111111111010011111010001110011001111101111111000000000000000000000
jtag> instruction EXTEST
jtag> shift ir
jtag> initbus mpc824x
   Using default bus width 8
Initialized bus 1, active bus 0
jtag> detectflash 0xFFC00000
dev ID=00ff   man ID=00ff
amd_detect: mid ff, did ff
Flash not found!

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-25 (火) 22:02:04 (3557d)