中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ

投稿者: | 2月 6, 2024

目次

はじめに

JTAGを使うためにかなり安い値段でAliExpressで買いました。

とりあえず分解してみる

ネジすらなく簡単に開きました。驚いたことに中身はスカスカでした。CH552Gというチップ(データシート(自鯖ミラー))が一つだけ入っていていました。もっと、バッファとか入っていると思っていました。

中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
REV.C USB BLASTER
CH552G
分解したところ(表)
中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
分解したところ(裏)

ピンアサイン

USB Blasterのピンアサインは下の写真のようです。

中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
ALTERA USB Blaster Rev.c POWER ACT
Altera USB Blasterのピンアサイン
(クリックすると引用元のサイトに飛びます。)

URoad-Home2+(一般的なMIPSのJTAGのピンアサイン)との変換ケーブルを適当に作成しました。

中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
ALTERA USB Blaster Rev.c
作成した変換ケーブル

OpenOCDと組み合わせて使ってみるが…

デバッグするボードはURoad-Home2+です。以前(URoad-Home2+を分解してみた4~JTAGでファームウェアダンプ~)にJ-Linkを使ってフラッシュのダンプを取りました。
使用したOpenOCDは0.11.0です。使用した、インターフェースのコンフィグファイルはこれを使用しました。0.12.0用と0.11.0用で若干異なるので気をつけてください。ボードのコンフィグファイルを適当に用意して、

sudo openocd -s ./ -f altera-usb-blaster.cfg -f atheros_ar9344.cfg -c "adapter speed 100"

などで実行して、他のターミナルでtelnet localhost 4444で接続して、haltをしてみると

中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
unagidojyou@ud-pc7-ubuntu:~/500GB/uroadhome2/Jtag$ sudo openocd -s ./ -f altera-usb-blaster.cfg -f atheros_ar9344.cfg -c "adapter speed 100"
Open On-Chip Debugger 0.11.0
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
test_ar9344_uart0_tx
adapter speed: 100 kHz

Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : usb blaster interface using libftdi
Info : This adapter doesn't support configurable speed
Info : JTAG tap: ar9344.cpu tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0)
Info : starting gdb server for ar9344.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'telnet' connection on tcp/4444
MIPS32 with MIPS16 support implemented
target halted in MIPS32 mode due to debug-request, pc: 0x87f92b20
configuring uart0..
send message: hallo world
Info : dropped 'telnet' connection
^Cshutdown command invoked
haltを実行してみたところ(OpenOCDを実行したコンソール)
中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
unagidojyou@ud-pc7-ubuntu:~$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
Failed to enter Debug Mode!
Halt timed out, wake up GDB.
timed out while waiting for target halted

> exit
Connection closed by foreign host.
haltを実行してみたところ(telnet側)

Failed to enter Debug Mode!
Halt timed out, wake up GDB.
timed out while waiting for target halted
だそうです。正常にHaltできなかったようです。しかしながら、URoad-Home2+側は動作を停止していました。

原因探求

もし、配線が間違えてたりすると、haltを実行する前にErrorやWarningがいっぱい出るはずなので配線のミスでは無いはずです。信号がうまく送受信できていなさそうな雰囲気です。とりあえず、オシロスコープで波形を観測してみて見ます。CH1がTCK、CH2がTMS、CH3がTDO、CH4がTDIです。

中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
オシロスコープ 信号 波形
CH3(TDO)の様子が若干おかしい
中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
オシロスコープ 信号 波形
CH3(TDO)の様子が若干おかしい

TDOの様子が若干おかしく、電圧が立ち上がり切っていなかったり、立ち上がりが遅かったりします。プルアップをしてみたり、直列に抵抗を挿入して見たりしてみましたがだめでした。

解決

USB Blaster内部のICと出力の間に挟まっている抵抗(22Ω)が悪さをしていました。これをショートさせたところ、OpenOCDが正常に動作するようになりました。

中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
REV.C USB BLASTER
CH552G
ICとTDOの間の抵抗R4を短絡した
中華製ALTERA USB BlasterとOpenOCDを使ってJTAGデバッグ
正常にOpenOCDが動作しているところ

おわりに

晴れてJTAGデバッガを1台入手することができました。これで友人からJ-Linkを借りる必要がなくなります。まあ、かなり信頼性に難有りですが…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)