SH2用JTAG ICEサポートページ

平成18年8月1日

 ここはSH2用JTAG ICEのサポートページです。

 このページで紹介するJTAG ICEは、CQ出版の雑誌「Interface」誌の2006年6月号に付録のSH2基板でのみ動作するものです。

〜 このページ内の目次 〜

 


circle21_purple.gif SH2用JTAG ICEとは

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

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

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

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

 ここで紹介するSH2用JTAG ICEを使うと、XILINXやALTERAのパラレルケーブルを用いて、SH2付録基板のJTAGデバッグができるようになります。

JTAG ICEの画面イメージ

    circle21_purple.gif JTAGデバッグとは

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

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

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

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

      • モニタプログラムが裏で常駐しない
      • 全メモリ空間(ROM、RAM)が、ユーザ用に使える
      • COMポートを、ユーザアプリケーションで自由に使用できる
      • ハードウェアブレークポイントが4つまで設定できる

circle21_purple.gif SH2用JTAGデバッガの機能

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

    • CPUの停止と再開(リスタート)
    • メモリの読み書き
    • レジスタの読み書き
    • シングルステップ実行
    • ハードウェアブレークポイント設定

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

    • SH2へのリセット
    • 実行しているプログラムの逆アセンブル
    • 任意のアドレスへのジャンプ
    • メモリダンプ
    • ソフトウェアブレークポイント
    • ELFファイル(GCCで作成した実行形式ファイル)のダウンロード
    • GDBとの接続(GDB Stub機能)受け付けによるリモート操作。

 本デバッガは、以上の機能を備えたシンプルなものですが、Windowsのネイティブプログラムで動作しますので、非常に機敏かつ快適に動作します。

 C言語のソースコードレベルでのデバッグが行いたい場合には、Insightというデバッガと接続して行うこともできます。

circle21_purple.gif 入手方法

 平成18年8月1日をもって、ダウンロードは終了させていただきました。ご利用ありがとうございました。

 最新版は、Interface誌9月号(平成18年7月26日発売)に収録されていますので、是非ともInterface誌をお求め下さい。

 使用期限について

    バージョン1.1ならびにバージョン1.2には試用期限はありません。

circle21_purple.gif 使い方

    circle21_purple.gif XILINX互換ケーブルの作り方

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

Parallel Cable III (DLC 5) Schematic

    circle21_purple.gif RS232C-JTAGケーブルの作り方

     RS232Cを使ったJTAG接続アダプタを作りかたを紹介します。

     このアダプタを作るには、R8CマイコンかARM7マイコンを使用します。R8Cマイコンはトランジスタ技術2005年4月号の付録基板を、ARMマイコンはデザインウェーブマガジン2006年3月号付録を使います。

     これらのARM基板またはR8C基板にはRS232Cのコネクタや汎用のI/Oポートがありますので、D-SUBコネクタやケーブルを接続するだけで、簡単にRS232C-JTAG変換装置を作ることができます。

     RS232C-JTAGアダプタで使用するARMもしくはR8Cマイコンのファームウェアは、トランジスタ技術誌2006年5月号またはInterface誌2006年9月号のCD-ROMに収録されています。

     アダプタの作り方は、詳しくは下記のURLを参照してください。

RS232CでJTAG

    circle21_purple.gif USBで接続したい

     最近のノートパソコンなどはパラレルポートを備えていないものが多くなっています。そのようなPCではパラレルケーブルを使用することができませんので、USBを使うことになります。

     USB-JTAGケーブルは、前述のRS232C-JTAGと市販のUSB-RS232C変換アダプタを組み合わせることで自作することができます。

     具体的ば、パソコンのUSBポートに市販のUSB-RS232C変換アダプタを接続し、雑誌付録マイコンボードをつかってRS232CからJTAGにプロトコル変換します。

     ただし、この方法では非常に動作速度が遅くなってしまいます。

     そこで、廉価なUSB-JTAG変換アダプタとして、PocketJTAGというUSB-JTAGアダプタを開発しました。

     まもなく販売を開始する見込みですのでどうぞご検討ください。

     なお、このUSB-JTAGアダプタはSH2用JTAG ICE専用ではなく、「包括的JTAGサポートソフトウェア MITOUJTAG」で使用することができるものです。

    img1.jpg

     PocketJTAG 予価29,800円(税別)
    特殊電子回路株式会社製

    お問い合わせは info@tokudenkairo.co.jp まで

    circle21_purple.gif SH2基板とJTAGケーブルの接続方法

     以下、XILINXのParallel Cable IVを使用する場合で話を進めます。

     SH2ボードのコネクタJ3にJTAGの信号線が出力されています。この信号線の配置は下の図のようになっています。XILINXのParallel CableにはVCC、GND、TCK、TDI、TDO、TMSと記された6本の線がありますので、SH2基板の対応する場所に接続していきます。ASEBREAKやRESETなどは接続しなくても構いません。

    SH7144ボードのJTAG配線

     接続を行うと次の写真のようになります。

     XILINXのケーブルでJTAG接続したところの写真

     なおInterface付録のSH2ボードは、DBGMD端子がデフォルトでプルアップされていますので、JTAGデバッグ可能な状態になっています。もしDBGMDを改造してプルダウンにしている場合は元に戻すようにしてください。

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

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

    circle21_purple.gif キーコード

     SH2デバッガを使用するには、原則としてキーコードというものを設定しなければいけません。

     キーコードはSH2 7144FのH'00000020番地に書き込まれた32ビットの値です。

     キーコードを設定するというのは、H'FFFFFFFF以外の値を設定することを意味します。
     したがって、キーコードがH'FFFFFFFFの場合は、キーコードは未設定であるといいます。
     フラッシュROMはデフォルトでH'FFなので、消去後は必ず未設定になります。

     キーコードを書き込むには、FDT(Flash Development Tool)というツールを使って、RS232C経由でフラッシュROMに書き込まなければなりません。

     

     なお、このSH2デバッガはキーコードが未設定の状態でも起動することができます。ただし未設定の場合は起動時にフラッシュROMを消去してしまいます。
     フラッシュROMの書き換え回数は100回までと規定されているので、キーコードを設定することを強くお勧めします。

     なお、本デバッガは評価用に作られているため、キーコードはH'C91F0606に固定されています。この値を変更することはできません。詳細はInterface誌をご覧下さい。

     ソフトウェアの準備

     SH2の7144は、アドレス0番地の付近はジャンプテーブルとして使用されています。その中で、アドレス0x20番地の場所は「(システム予約)」とされています。本デバッガを用いてJTAGデバッグを行うには、この場所に0xC91F0606という、マジックワードを書き込む必要があります。
     もし、そこに書かれて値が0xC91F0606でない場合、JTAGデバッガが起動する際にフラッシュメモリの内容が全部消去されてしまいます。したがって、他人の作ったプログラムを了承を得ずに勝手にデバッグすることができないようになっています。

    ベクタテーブルの説明

    HEWでの設定 HEWを用いて開発する場合、デフォルトの設定では、HEWがいろいろなファイルを自動生成すると思います。

    その中にあるvecttbl.cを編集します。右の図のようにvecttbl.cを開いてください。


    そして、INT_Vectors[]を定義している中で、8番のReservedとなっている場所を編集し、Dummyを(0xC91F0606)と書き換えてください。

    HEWでの設定

    GCCの場合も同様に、スタートアップルーチンなどで定義しているベクタテーブルの8番を設定してください。

     インストール

     Interface誌9月号付録のCD-ROM、または上記のURLからダウンロードしたexeファイルをクリックしてください。

     

     起動方法

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

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

     FDT(Flash Development Tool)などを用いてROM上にプログラムをダウンロードしている場合は、「内蔵ROM上のプログラムをデバッグする」のチェックボックスをONにしてください。

     内蔵ROMが空の場合は、「内蔵ROM上のプログラムをデバッグする」のチェックボックスはOFFにしてください。

    img1.png

     

    circle21_purple.gif 操作方法

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

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

     もし上のような画面にならない場合は、JTAGコネクタの接続や、ターゲットボードの電源、そしてアドレス0x20番地のキーコードを確認してください。

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

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

    ツールバーの説明

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

    • リセット
      本来はCPUをリセットさせるためのボタンですが、本ICEでは実装されていません。
    • CPUの動作再開
      JTAG ICEでメモリの内容を読み書きなどする場合は、CPUは一旦停止した状態になります。その停止状態を解除して、再度スタートさせるためのボタンです。ファンクションキーのF9でも同様の動作が行えます。
    • CPUの動作停止
      任意のタイミングでCPUの動作を停止させることができます。
    • シングルステップ実行
      CPUのコアを、アセンブラの命令単位で1命令ずつ実行させ、プログラムカウンタやレジスタの値を調べることができます。ファンクションキーのF8でも同様の動作が行えます。
    • メモリダンプ
      StartADDRに指定したアドレスから、指定した長さだけ、メモリの内容をダンプします。
    • レジスタウィンドウ表示
      SH2のレジスタを表示します。
    • ADDRに指定した番地へジャンプ
      StartADDRと書かれたボックスに指定された番地へプログラムカウンタを移動させます。
    • GDBスタブを起動する
      TCPポートの2159番地を開き、GDBからの接続を待ち受けるモードにします。

    circle21_purple.gif 画面の見方

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

    画面の見方の説明

    • 逆アセンブルウィンドウ
      CPUのアドレスカウンタの現在の値の前後の命令を逆アセンブルして表示します。
    • レジスタウィンドウ
      現在のCPUのレジスタの値が表示されます。ステップ実行や動作の停止を行った際には自動で更新されます。前回調べた値から変化している場合は、赤い色で表示されます。なお、このウィンドウの値を編集すると、レジスタの値を変更できます。
    • メッセージウィンドウ
      各種のメッセージと、メモリのダンプなどを表示します。
    • スタックウィンドウ
      スタックの値を表示します。
    • ハードウェアブレークポイントウィンドウ
      ハードウェアブレークポイントに設定されたアドレスと、有効無効を表示します。

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

    circle21_purple.gif GDBとの接続方法

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

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

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

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

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

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

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

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

    Insightの画面

circle21_purple.gif ご意見・ご質問

ご意見・ご質問はこちら。

arrow007.gif ご意見・ご要望フォーム arrow016.gif

掲示板はこちら

 


Copyright(C) 2004 Nahitech Inc. All rights reserved.
info@tokudenkairo.co.jp