目次
はじめに
JTAGを使うためにかなり安い値段でAliExpressで買いました。
中華製ALTERA USB Blasterを買った
— Unagi Dojyou (@Unagi_Dojyou) August 13, 2023
これでJ-Linkのレンタルをしなくていい
372円だったけど、どれくらい使えるのやら… pic.twitter.com/6xztlypxMy
とりあえず分解してみる
ネジすらなく簡単に開きました。驚いたことに中身はスカスカでした。CH552Gというチップ(データシート(自鯖ミラー))が一つだけ入っていていました。もっと、バッファとか入っていると思っていました。
ピンアサイン
USB Blasterのピンアサインは下の写真のようです。
URoad-Home2+(一般的なMIPSのJTAGのピンアサイン)との変換ケーブルを適当に作成しました。
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をしてみると
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です。
TDOの様子が若干おかしく、電圧が立ち上がり切っていなかったり、立ち上がりが遅かったりします。プルアップをしてみたり、直列に抵抗を挿入して見たりしてみましたがだめでした。
解決
USB Blaster内部のICと出力の間に挟まっている抵抗(22Ω)が悪さをしていました。これをショートさせたところ、OpenOCDが正常に動作するようになりました。
おわりに
晴れてJTAGデバッガを1台入手することができました。これで友人からJ-Linkを借りる必要がなくなります。まあ、かなり信頼性に難有りですが…