JTAG情報サイト

 

特殊電子回路

MITOUJTAGとはサービス/サポート事例、Q&A導入のメリットJTAG技術情報

[トップ ページ][MITOUJTAGとは][製品ラインナップ][SH2A用JTAG ICEサポートページ]

 

平成22年5月13日

    SH-2A用JTAG ICEここはSH-2A用JTAG ICEのサポートページです。

    このページで紹介するJTAG ICEは、CQ出版の雑誌「Interface」誌の

    2010年6月号に付録のSH2A基板(FRK-SH2A)でのみ動作するものです。

    まだ多機能ではありませんがこれから発展させていくつもりです。だから、未来があります。

     

    このソフトウェアは、当社のお客様への日ごろの感謝をこめて無償で提供します。

    ※MITOUJTAG 2.x 、Spartan-6評価ボード、J-Writerをご利用のお客様を対象とさせていただきます。

    Pocket JTAG Cableのみご購入のお客様やMITOUJTAGの旧バージョンをご利用のお客様も無償でお使いいただけるようなプランを開発中です。

〜 このページ内の目次 〜

このデバッガは、CQ出版様とは無関係に当社独自で開発しております。

お問い合わせなさらないようにしてください。

    更新情報

     ・対応JTAGケーブルに、「Spartan-6で作るUSB-JTAG」を追加しました(平成21年5月13日)

     ・対応JTAGケーブルに、「万能JTAGプログラマ J-Writer」を追加しました(平成21年5月12日)

    次の更新ではV850ES、SH-2への対応を行います。ご期待ください。

SH2用JTAG ICEとは

     JTAG ICE(ジェイタグアイス)とは、JTAGという通信を使ってCPUの中のコアにアクセスし、レジスタやメモリの読み書きをしたり、ステップ実行をさせるといった、強力なデバッグツールです。

     自分で作ったプログラムをデバッグするには、モニタプログラムという方法もありますが、モニタプログラムは常にROMかRAMのどこかに常駐していなければなりませんし、本来ユーザが使えるはずのメモリの多くを使ってしまいます。また、オンチップのUSBでは、マイコンが暴走したときにも使えるかどうかは定かでありません。

     それに対してJTAG ICEを使ったデバッグ方法では、SH2AのRAMといったユーザリソースを全く必要としないのが大きな特徴です。また、USBやRS232ではなくJTAGという専用の通信線を使いますので、USBやRS232Cのポートはユーザが自由に使えるように残されています。

     そのため、最終的なリリースをする状態に近い状態でのデバッグができるようになります。

     ここで紹介するSH2用JTAG ICEを使うと、XILINXやALTERAのパラレルケーブル、または当社製のPocket JTAG Cabke、またはSpartan-6評価ボードを用いて、SH2A付録基板のJTAGデバッグができるようになります。

JTAG ICEの画面イメージ

 

circle21_purple.gif JTAGデバッグとは

     JTAGデバッグとは、JTAGといわれている4本の配線を使ってCPUとパソコンの間で通信をし、CPUのレジスタやメモリの読み書きをしたり、ステップ実行をさせることができる技術です。JTAGデバッグをさせるシステムをJTAGデバッガといいます。

     JTAGデバッガを使うと、CPUの動作を任意の場所で止めたり、レジスタやメモリの内容を読み書きすることができるようになります。

circle21_purple.gif モニタ方式と比べると

     RS232Cのシリアル通信を使うモニタ方式と比べて、次のようなメリットがあります。

      ■ モニタプログラムが裏で常駐しない

      ■ 全メモリ空間(ROM、RAM)が、ユーザ用に使える

      ■ COMポートを、ユーザアプリケーションで自由に使用できる

      ■ ハードウェアブレークポイントが4つまで設定できる

SH2用JTAGデバッガの機能

     現在のところ、Interface2010年付録基板のCPU(SH7262)に対して、以下の操作を行うことができます。

      ■ CPUの停止と再開(リスタート)

      ■ メモリの読み書き

      ■ レジスタの読み書き

      ■ シングルステップ実行

      ■ ハードウェアブレークポイント設定

     

     また、本デバッガは、上記の機能を組み合わせることで以下の機能を実現しています。

      ■ SH2Aへのリセット(対応不明)

      ■ 実行しているプログラムの逆アセンブル

      ■ 任意のアドレスへのジャンプ

      ■ メモリダンプ

      ■ ソフトウェアブレークポイント(対応不明)

      ■ ELFファイル(GCCで作成した実行形式ファイル)のダウンロード

      ■ GDBとの接続(GDB Stub機能)受け付けによるリモート操作。

     

     本デバッガは、上記の機能だけを備えたシンプルなものですが、Windowsのネイティブプログラムで動作しますので、非常に機敏かつ快適に動作します。C言語のソースコードレベルでのデバッグが行いたい場合には、Insightというデバッガと接続して行うこともできます。

     

入手方法

    ダウンロード

     

     

     

    インストール

    上のURLからダウンロードしたexeファイルをクリックしてください。

     

    使用期限について

    使用期限は平成22年6月1日までです。それまでには、次のバージョンをリリースするでしょう。

     

使い方

    SH2A基板(FRK-SH2A)とJTAGケーブルの接続方法

     以下、特殊電子回路製のPocket JTAG Cableを使用する場合で話を進めます。(J-Writerの場合も同じです。)

     FRK-SH2AのH-UDI用コネクタ「CN1」にはJTAGの信号線が出力されています。この信号線の配置は下の図のようになっています。Pocket JTAG CableにはVCC、GND、TCK、TDI、TDO、TMS、INIT、SRSTと記された8本の線がありますので、SH2基板の対応する場所に接続してください。注意すべき点は以下の点です。

      ○ SH基板のASEMD(9番ピン)は、GNDに落とす。

      ○ SH基板のnASEBはどこにもつながない。

      ○ SH基板のnTSRTはPocket JTAG CableのINIT端子につなぐ。

      ○ SH基板のnRSTはPocket JTAG CableのSRST端子につなぐ。

SH7144ボードのJTAG配線

     接続を行うと次の写真のようになります。SH2A基板上のコネクタに、ちらっと赤くみえているのが、ASEMDと隣のGND接続するジャンパです。これを接続しないとデバッガが使用できるモードになりません。

     

     

    一本一本接続するのが面倒な場合は、下の写真のようなXILINX14pin↔H-UDI変換ケーブルを使うと便利です。

     

     

    XILINX互換ケーブルの作り方

     XILINXのParallel Cable IIIは比較的簡単に自作することができます。
     詳しくは下記のページをご参照ください。

    Parallel Cable III (DLC 5) Schematic

     

     もし、XILINXやALTERAのパラレルケーブルなど、nTRSTやnRST用の信号が用意されていないJTAGケーブルを使用する場合は、TRSTとRSTに押しボタンスイッチを接続し、電源投入後、JTAG ICEを起動する前に両方の端子をGNDに落としてください。

     

     JTAGコネクタを接続し終えたら、SH2Aボードに電源を入れる準備をしてください。

     これで、JTAGデバッグのためのハードウェアの準備は完了です。

     

    起動方法

     デスクトップにある下の図のアイコンをクリックしてください。

    (アイコンの絵が7144のままですね。いずれ直します・・)

     次の図に示した画面が開きますので、Pocket JTAG Cableを使う場合は、そのままデフォルトの状態で「OK」ボタンを押します。「ビッグエンディアン」と書かれたチェックボックスはチェックしたままにしてください。

     ※ 「内蔵ROM上のプログラムをデバッグする」のチェックボックスは、どちらでも構いません。(動作に影響ありません)

     ※ SH7262以外にもいくつかのCPUの名前が出ていますが、本デバッガではSH7262しか使えません。

     

     

    操作方法

     上の起動操作を行って、SH2がJTAGで認識されると、下の図のような画面になります。

    CPUの動作が停止したところ

    上のような画面にならない場合は、JTAGコネクタの接続や、ターゲットボードの電源を確認してください。

     

    トラブルシューティング

      (この問題は5月12日にリリースされたバージョンβ2で解決されました)

     

    もし、起動時にアドレスFFFFFFFFで停止してしまう場合は、次のようにしてください。

    アドレスFFFFFFFFで停止したところ

     

    これは、次のような理由によるものと考えられます。

     @ CPUにリセットがかかった

     A JTAGデバッガから起動の命令を送られた

     B CPUは起動しようとして、アドレス0番地の内容を読み出した

     C 外付けバスには何もつながっていないので、アドレス0番地の内容はFFFFFFFFである。

     D CPUはFFFFFFFF番地にジャンプし、例外が発生して停止した

    この現象が起こる原因は、JTAGデバッガと、シリアルROMブートの相性がよくないためです。

     

    解決方法は2つ考えれます。

    まずは、デバッガ起動前に通常動作をさせる方法です。

     @-1 ASEMDのジャンパを外す、またはH-UDIのコネクタを外す

     @-2 基板のUSBコネクタを抜き差しし、CPUにリセットをかける

     @-3 ASEMDのジャンパをつなぐ、あるいはH-UDIのコネクタをつないで、デバッガを起動する。

    もうひとつの方法は、FFFFFFFF番地で停止してもいいので、JTAGデバッガからCPUレジスタを初期設定する方法です。

     A-1 適当な実行ファイルを1C000000番地からダウンロードする

     A-2 VBR(例外テーブルのベースアドレスを保持するレジスタ)を1C000000にセットする

     A-3 シングルステップ実行を何ステップか行って、FFFFFFFF番地に飛ばないことを確認する

     

     この問題は、JTAG ICEの次のリリースで根本的に解決することにします。

     

     

     CPUとの接続に成功すると、SH2AのCPUコアにはリセットがかかり、JTAGを通じて強制的に停止させられた状態になります。

     SH2AのCPUコアが停止した状態では、各種のデバッグコマンドを発行させることができます。

    ツールバーの説明

     各ボタンの機能を以下に簡単に説明します。

     

    リセット

     本来はCPUをリセットさせるためのボタンですが、本ICEでは実装されていません。

     

    CPUの動作再開

     JTAG ICEでメモリの内容を読み書きなどする場合は、CPUは一旦停止した状態になります。

     その停止状態を解除して、再度スタートさせるためのボタンです。ファンクションキーのF9でも同様の動作が行えます。

     

    CPUの動作停止

     任意のタイミングでCPUの動作を停止させることができます。

     

    シングルステップ実行

     CPUのコアを、アセンブラの命令単位で1命令ずつ実行させ、プログラムカウンタやレジスタの値を調べることができます。

     ファンクションキーのF8でも同様の動作が行えます。

     

    メモリダンプ

     StartADDRに指定したアドレスから、指定した長さだけ、メモリの内容をダンプします。

     

    レジスタウィンドウ表示
     SH2のレジスタを表示します。

     

    ADDRに指定した番地へジャンプ

     StartADDRと書かれたボックスに指定された番地へプログラムカウンタを移動させます。

     

    GDBスタブを起動する
     TCPポートの2159番地を開き、GDBからの接続を待ち受けるモードにします。

     

画面の見方

     本デバッガの画面は次の図のように構成されています。

    画面の見方の説明

     

    逆アセンブルウィンドウ
     CPUのアドレスカウンタの現在の値の前後の命令を逆アセンブルして表示します。

      このデバッガはSH-4AやSH2のものを改良して作られていますので、

      SH2Aで登場した命令のいくつかのものは解読できない可能性があります。

      いずれSH-2A専用の命令にも対応します。

     

    レジスタウィンドウ
     現在のCPUのレジスタの値が表示されます。ステップ実行や動作の停止を行った際には自動で更新されます。

     前回調べた値から変化している場合は、赤い色で表示されます。

     なお、このウィンドウの値を編集すると、レジスタの値を変更できます。

     

    メッセージウィンドウ
     各種のメッセージと、メモリのダンプなどを表示します。

     

    スタックウィンドウ
     スタックの値を表示します。

     

    ハードウェアブレークポイントウィンドウ

     ハードウェアブレークポイントに設定されたアドレスと、有効無効を表示します。

     各ウィンドウは不必要ならば閉じてしまっても構いません。

     

GDBとの接続方法

     本デバッガは、GNUデバッガ(GDB)から接続を受けることができます。

     この様子を図で表すと、下の図のようになります。

    GDBからのJTAGデバッグの仕組み

     GDBやInsightは、C言語のソースコードを用いた比較的高度なデバッグを行うことができますが、JTAGシーケンスを出力することはできません。GDBやInsightはGDBプロトコルと呼ばれるコマンド群を出力します。

     一方、SH2AはGDBプロトコルを解釈することができません。

     そこで、本デバッガが間に入って、そのGDBプロトコルを解釈してSH2Aが理解できるJTAGシーケンスに変換し、SH2Aへ送ります。

     このようにして、GDBからSH2をJTAGでデバッグすることができるようになります。

     GDBと本デバッガの接続はTCP/IPを使用します。相手先のアドレスはlocalhostとしてください。ポートは2159番に固定されています。

    Insightの画面

circle21_purple.gif ご意見・ご質問

 

ご意見・ご質問はJTAGひろばにて承ります。

 

 

 

Copyright(C) 2010 TokushuDenshiKairo Inc. All rights reserved.
info@tokudenkairo.co.jp