JP2000284985A - デバッグシステム及び情報記憶媒体 - Google Patents

デバッグシステム及び情報記憶媒体

Info

Publication number
JP2000284985A
JP2000284985A JP11092428A JP9242899A JP2000284985A JP 2000284985 A JP2000284985 A JP 2000284985A JP 11092428 A JP11092428 A JP 11092428A JP 9242899 A JP9242899 A JP 9242899A JP 2000284985 A JP2000284985 A JP 2000284985A
Authority
JP
Japan
Prior art keywords
information
execution
trace
program
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11092428A
Other languages
English (en)
Other versions
JP3775462B2 (ja
Inventor
Makoto Kudo
真 工藤
Tsutomu Nakayama
力 中山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP09242899A priority Critical patent/JP3775462B2/ja
Publication of JP2000284985A publication Critical patent/JP2000284985A/ja
Application granted granted Critical
Publication of JP3775462B2 publication Critical patent/JP3775462B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】 【課題】 少ない端子で量産チップ上でのリアルタイム
トレースを実現し、絶対分岐発生以前に関してもトレー
ス情報の生成が可能で、絶対分岐発生のステータス情報
が絶対分岐命令実行によるものか割り込みによるものか
を判別可能なデバッグシステム及び情報記憶媒体を提供
することにある。 【解決手段】 本デバッグシステムのトレース情報生成
部27は実行開始アドレス及びターゲットのCPUで実
行されるプログラムの機械語命令列情報に基づき、絶対
分岐命令発生以前のトレース情報を生成することができ
る。またトリガポイントアドレス及び前記機械語命令列
を把握するための情報に基づき、絶対分岐命令発生以前
のトレース情報を生成することもできる。また当該絶対
分岐発生が割り込み発生によるものか否かを、プログラ
ムの機械語命令列を把握するための情報に基づき判別可
能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デバッグシステム
及びデバッグシステムに用いる情報記憶媒体に関する。
【0002】
【背景技術及び発明が解決しようとする課題】近年、ゲ
ーム装置、カーナビゲーションシステム、プリンタ、携
帯情報端末などの電子機器に組み込まれ、高度な情報処
理を実現できるマイクロコンピュータに対する需要が高
まっている。このような組み込み型のマイクロコンピュ
ータは、通常、ターゲットシステムと呼ばれるユーザボ
ードに実装される。このターゲットシステムを動作させ
るソフトウェアの開発を支援するためにICE(In-Cir
cuit Emulator)と呼ばれるソフトウェア開発支援ツー
ルが広く使用されている。
【0003】さて、このようなICEとしては、従来、
図1に示すようなCPU置き換え型と呼ばれるICEが
主流を占めていた。このCPU置き換え型ICEでは、
デバッグ時にターゲットシステム300からマイクロコ
ンピュータ302を取り外し、その代わりにデバッグツ
ール304のプローブ306を接続する。そして、この
デバッグツール304に、取り外したマイクロコンピュ
ータ302の動作をエミュレートさせる。また、このデ
バッグツール304に、トレース情報の取得やデバッグ
のために必要な種々の処理を行わせる。
【0004】しかしながら、このCPU置き換え型IC
Eでは、マイクロコンピュータ302の内部動作周波数
が上がるとプローブ306やトレース情報を格納するバ
ッファで生じる信号の遅延によりリアルタイムトレース
が困難になる。
【0005】このような問題を解決するために量産チッ
プ上でリアルタイムトレースを可能にするシステムの開
発が行われている。このとき、トレース情報としてアド
レスバス等の情報をリアルタイムにトレースバッファに
格納しようとすると数十本の専用端子が必要となる。こ
こにおいて、係る端子はデバッグ時のみ必要な物で、エ
ンドユーザーにとっては不要なものであるから、より少
ないほうが好ましい。
【0006】そこで、本出願人はリアルタイムトレース
を実現するためのトレース情報を専用4端子に出力し、
このトレース情報からリアルタイムトレースを可能にす
るシステムを開発している。
【0007】具体的には毎クロック毎にCPUの実行ス
テータス情報を3端子に出力し、また絶対分岐命令等に
より絶対分岐が発生すると続く27クロックサイクルで
分岐先のPC値をシリアルに1端子に出力する。絶対分
岐命令とはプログラムの実行中にレジスタの値等によっ
て分岐先のアドレスが決まる命令であり、命令コードか
らは分岐先を判断することができない命令である。従っ
て絶対分岐命令が発生するとプログラムの命令コードか
ら分岐先が分からないため分岐先のPC値を出力するこ
とでトレースが可能となる。
【0008】ところが、ターゲットシステムは絶対分岐
が発生するまでプログラムカウンタの値を出力しないた
め、この間のプログラムカウンタ値を把握できずにトレ
ース情報が生成できないという問題点があった。
【0009】また本出願人の開発中のターゲットシステ
ムはデバッグ用端子を極力少なくするため、絶対分岐命
令により絶対分岐が発生した場合と割り込みにより絶対
分岐が発生した場合とを区別せずに、いずれも絶対分岐
命令実行を示すステータス情報を出力していた。このた
め絶対分岐命令実行のステータス情報の場合、それが命
令実行によるものか割り込みによるものか区別できない
という問題点があった。
【0010】本発明は、以上のような技術的課題に鑑み
てなされたものであり、その目的とするところは、少な
い端子で量産チップ上でのリアルタイムトレースを実現
し、トレース情報の生成が可能なデバッグシステム及び
情報記憶媒体を提供することにある。より詳しくは絶対
分岐発生以前に関してもトレース情報の生成が可能なデ
バッグシステム及び情報記憶媒体を提供すること、また
絶対分岐発生のステータス情報が絶対分岐命令実行によ
るものか割り込みによるものかを判別可能なデバッグシ
ステム及び情報記憶媒体を提供することにある。
【0011】
【課題を解決するための手段】本発明は、CPUの実行
状態が通常命令実行、絶対分岐命令実行、相対分岐命令
実行のいずれに属するかを判別するためのステータス情
報と絶対分岐命令の分岐先アドレスを出力するターゲッ
トシステムのトレース情報を出力するデバッグシステム
であって、ターゲットシステムから前記ステータス情報
を受け取って上書きしないでメモリに蓄積する手段と、
当該デバッグシステムが有しているターゲットシステム
の実行開始アドレス及びターゲットのCPUで実行され
るプログラムの機械語命令列を把握するための情報に基
づき、絶対分岐命令発生以前のトレース情報を生成する
トレース情報生成手段と、を含むことを特徴とする。
【0012】また本発明に係る情報記憶媒体は前記手段
を実現するための情報を含むことを特徴とする。
【0013】ここにおいてターゲットシステムが実行す
るプログラムの機械語命令列を把握するための情報と
は、2進法や16進法で表された機械語の命令コード列
でもよいし、機械語の命令コード列をニーモニックコー
ドで表した命令コード列でもよい。少なくともターゲッ
トシステムのCPUが実行する機械語の命令列が把握で
きるものであればよい。
【0014】本発明ではターゲットシステムから受け取
ったステータス情報を上書きしないでトレースメモリに
蓄積する。このため、特に範囲指定トレース等を行わな
い場合には、実行開始からのステータス情報がトレース
メモリの先頭から蓄積されている。このため、当該デバ
ッグシステムはターゲットシステムの実行開始アドレス
及びターゲットシステムで実行されたプログラム内容に
基づき、前記メモリに蓄積開始後で絶対分岐命令発生以
前のトレース情報を生成することができる。
【0015】本発明によれば、少ないデバッグ用端子し
か有しないターゲットシステムのデバッグを行う際に
も、絶対分岐命令の実行以前のトレース情報が生成でき
ないといった制約を受けることなく、実行範囲全体のト
レース情報をえることができる。
【0016】すなわち本発明のデバッグシステムは少な
いデバッグ情報からでも通常のICE等と同様のトレー
ス情報が作成可能であるため、ターゲットシステムのデ
バッグ用端子の削減を可能にし、ターゲットシステムの
コスト削減に貢献できるという効果も有する。
【0017】なお、前記実行開始アドレス及びターゲッ
トシステムで実行されたプログラム内容は予めデバッグ
システム内に保持しておいてもよいし、後で取得しても
よい。
【0018】例えばデバッグシステムからターゲットシ
ステムの実行開始アドレスを指定して実行させるような
場合には、指定した実行開始アドレスを保持しておくよ
うにすることが好ましい。また、デバッグシステムから
ターゲットシステムに実行用のプログラムをロードする
ような場合には、ロードじたプログラム内容をデバッグ
システム内に保持しておくようにすることが好ましい。
【0019】本発明は CPUの実行状態が通常命令実
行、絶対分岐命令実行、相対分岐命令実行のいずれに属
するか及びトリガポイントにマッチしたか否かを判別す
るためのステータス情報と絶対分岐命令の分岐先アドレ
スを出力するターゲットシステムのトレース情報を出力
するデバッグシステムであって、ターゲットシステムか
ら前記ステータス情報を受け取って、メモリに蓄積する
手段と、メモリに蓄積されたステータス情報がトリガポ
イントにマッチしていることを示している場合に、当該
デバッグシステムが有しているトリガポイントアドレス
及びターゲットが実行するプログラムの機械語命令列を
把握するための情報に基づき絶対分岐命令発生以前のト
レース情報を生成するトレース情報生成手段とを含むこ
とを特徴とする。
【0020】また本発明に係る情報記憶媒体は前記手段
を実現するための情報を含むことを特徴とする。
【0021】ここにおいてターゲットが実行するプログ
ラムの機械語命令列を把握するための情報とは、2進法
や16進法で表された機械語の命令コード列でもよい
し、機械語の命令コード列をニーモニックコードで表し
た命令コード列でもよい。少なくともターゲットマシン
が実行する機械語の命令コード列が把握できるものであ
ればよい。
【0022】またトリガポイントは複数ある場合でもよ
い。トリガポイントは出力する範囲を指定するために用
いられ、指定された範囲のステータス情報を出力する場
合でもよい。また範囲指定には関係なく、トリガポイン
トにマッチしたか否かの情報を出力する場合でもよい。
【0023】メモリに蓄積されたステータス情報にはト
リガポイントにマッチしたか否かの情報が含まれてい
る。このため、当該デバッグシステムが有しているトリ
ガポイントアドレス及びターゲットシステムで実行され
たプログラム内容に基づき、前記メモリに蓄積開始後で
絶対分岐命令発生以前のトレース情報を生成することが
できる。
【0024】本発明によれば、少ないデバッグ用端子し
か有しないターゲットシステムのデバッグを行う際に
も、絶対分岐命令の実行以前のトレース情報が生成でき
ないといった制約を受けることなく、実行範囲全体のト
レース情報をえることができる。
【0025】すなわち本発明のデバッグシステムは少な
いデバッグ情報からでも通常のICE等と同様のトレー
ス情報が作成可能であるため、ターゲットシステムのデ
バッグ用端子の削減を可能にし、ターゲットシステムの
コスト削減に貢献できるという効果も有する。
【0026】なお、前記トリガポイントアドレス及びタ
ーゲットシステムで実行されたプログラム内容は予めデ
バッグシステム内に保持しておいてもよいし、後で取得
してもよい。
【0027】例えばデバッグシステムからターゲットシ
ステムのトリガポイントアドレスを指定して実行させる
ような場合には、指定したトリガポイントアドレスを保
持しておくようにすることが好ましい。また、デバッグ
システムからターゲットシステムに実行用のプログラム
をロードするような場合には、ロードしたプログラム内
容をデバッグシステム内に保持しておくようにすること
が好ましい。
【0028】本発明は CPUの実行状態が通常命令実
行、絶対分岐発生、相対分岐命令実行のいずれに属する
かを判別するためのステータス情報と絶対分岐命令の分
岐先アドレスを出力するターゲットシステムのトレース
情報を出力するデバッグシステムであって、ターゲット
システムから前記ステータス情報を受け取ってメモリに
蓄積する手段と、前記メモリに蓄積されたステータス情
報が絶対分岐発生を示していた場合に、当該絶対分岐発
生が割り込み発生によるものか否かを、プログラムの機
械語命令列を把握するための情報に基づき判別してトレ
ース情報を生成するトレース情報生成手段とを含むこと
を特徴とする。
【0029】また本発明に係る情報記憶媒体は前記手段
を実現するための情報を含むことを特徴とする。
【0030】ここにおいてターゲットが実行するプログ
ラムの機械語命令列を把握するための情報とは、2進法
や16進法で表された機械語の命令コード列でもよい
し、機械語の命令コード列をニーモニックコードで表し
た命令コード列でもよい。少なくともターゲットマシン
が実行する機械語の命令コード列が把握できるものであ
ればよい。
【0031】絶対分岐は一般に絶対分岐命令が実行され
た場合や割り込みがあった場合に発生する。ここにおい
て割り込みとはプログラム分岐の一種であるが分岐命令
によるものではなくコンピュータのハードウエアの信号
によって分岐するものである。本発明のターゲットシス
テムではデバッグ用の端子を減らすために、割り込みに
よって絶対分岐が起こった場合と分岐命令によって絶対
分岐が起こった場合とを区別せずにいずれも絶対分岐発
生のステータス情報を出力している。
【0032】従ってステータス情報と絶対分岐先のアド
レスのみからでは、絶対分岐命令が実行されたのか割り
込みが発生したのか判別できずトレース情報の生成が困
難である。
【0033】しかし本発明では、絶対分岐命令実行を示
すステータスに対応したプログラムの機械語命令列が、
実際に絶対分岐命令であるか否かを自動的に調べて前記
判別を行うことで、トレース情報の生成を可能としてい
る。
【0034】本発明によれば、少ないデバッグ用端子し
か有しないターゲットシステムのデバッグを行う際に
も、絶対分岐命令と割り込みの発生の区別を行いトレー
ス情報を生成することができる。すなわち本発明のデバ
ッグシステムは少ないデバッグ情報からでも通常のIC
E等と同様のトレース情報が作成可能であるため、ター
ゲットシステムのデバッグ用端子の削減を可能にし、タ
ーゲットシステムのコスト削減に貢献できるという効果
も有する。
【0035】なお、ターゲットシステムが実行するプロ
グラムの機械語命令列を把握するための情報は予めデバ
ッグシステム内に保持しておいてもよいし、後で取得し
てもよい。
【0036】例えばデバッグシステムからターゲットシ
ステムに実行用のプログラムをロードするような場合に
は、ロードしたプログラム内容をデバッグシステム内に
保持しておくようにすることが好ましい。
【0037】本発明のデバッグシステムは ターゲット
が実行するプログラムの機械語命令列を把握するための
情報を予め記憶しているプログラム情報記憶手段をさら
に含み、前記トレース情報生成手段が、プログラム情報
記憶手段に記憶された前記プログラムの機械語命令列を
把握するための情報を用いてトレース情報を生成する事
を特徴とする。
【0038】また本発明に係る情報記憶媒体は前記手段
を実現するための情報を含むことを特徴とする。
【0039】本発明によれば、トレース情報生成の度に
ターゲットシステムのメモリを読む必要がないので、タ
ーゲットシステム実行中でもトレース情報の生成が可能
になる。またトレース情報の生成のための処理時間を大
幅に削減することができる。
【0040】
【発明の実施の形態】以下、本発明の好適な実施形態に
ついて図面を用いて詳細に説明する。
【0041】1.本実施形態の構成の概要 まず本実施形態の構成について図2を用いて説明する。
【0042】図2に示すように、デバッグ対象となるタ
ーゲットシステムであるマイクロコンピュータ10は、
CPU(中央処理ユニット)12、実行情報出力部1
4、内部メモリ16を含む。
【0043】ここで実行情報出力部16は、リアルタイ
ムトレースを実現するための実行情報を専用4端子に出
力する。具体的には毎クロック毎にCPUの命令実行ス
テータス情報を3端子(DST[2:0])に出力し、
PC絶対分岐実行が発生すると続く27クロックサイク
ルで分岐先のPC値(DPCO)をシリアルに1端子に
出力する。
【0044】また内部メモリ16にはターゲットシステ
ムで実行されるプログラム等が記憶されている。
【0045】また本実施形態のデバッグシステム20
は、ターゲットであるマイクロコンピュータに直接接続
されるデバッグツール21と、当該デバッグツールと接
続されたホストコンピュータ23で構成されている。
【0046】デバッグツール21は実行情報取得部2
2,ターゲットメモリ書き込み部28を含み、ホストコ
ンピュータ23はプログラム情報記憶部26、トレース
情報生成部27,プログラム情報書き込み部29を含ん
でいる。
【0047】実行情報取得部22は、3ビットのDST
[2:0]と、分岐先のPC(プログラムカウンタ)値
を表すDPCOを内部のトレースメモリ24に格納す
る。トレース範囲が指定されている場合には、その範囲
のDST[2:0]とDPCOをトレースメモリに格納
する。
【0048】なお分岐先PCは下位ビットから1ビット
ずつシリアルに出力されるため、全ビット出力される前
に新たな絶対分岐が発生すると、絶対分岐先のアドレス
情報の一部しかを受けとれないことになる。
【0049】ターゲットメモリ書き込み部28は、ター
ゲットシステムの内部メモリ16にプログラムをロード
したり、ターゲットシステムのメモリのプログラムを書
き換えたりする機能を有し、TXD/RXDライン(双
方向通信ライン)を介してマイクロコンピュータ10の
内部メモリ14に書き込むデータを送信する。
【0050】プログラム情報記憶部26は、ターゲット
システムの内部メモリ16に記憶されたプログラムと同
一のプログラムの機械語コード列を記憶する。
【0051】トレース情報生成部27は、ターゲットシ
ステムから絶対分岐先アドレスの一部を受け取った場合
に、ターゲットシステムが実行するプログラムが存在す
るアドレス領域に関する情報及びターゲットシステムか
ら受けとったステータス情報の少なくとも一方に基づ
き、前記絶対分岐先アドレスの一部以外の部分を特定し
てトレース情報を生成する処理を行う。さらに受け取っ
た絶対分岐先のアドレス情報の一部を下位ビットとする
候補アドレス群を抽出し、ターゲットシステムから受け
取ったステータス情報の配列と、候補アドレス群に含ま
れる所与の候補アドレスにより特定される機械語コード
列から予測されるステータス情報の配列と比較して絶対
分岐先のアドレス情報を特定する処理を行う。
【0052】また当該デバッグシステムが有しているタ
ーゲットシステムの実行開始アドレス及びターゲットの
CPUで実行されるプログラムの機械語コード列に基づ
き絶対分岐命令発生以前のトレース情報を生成する処理
を行う。
【0053】またメモリに蓄積されたステータス情報が
トリガポイントにマッチしていることを示している場合
には、当該デバッグシステムが有しているトリガポイン
トアドレス及びターゲットが実行するプログラムの機械
語コード列に基づき、絶対分岐命令発生以前のトレース
情報を生成する処理を行う。
【0054】前記メモリに蓄積されたステータス情報が
絶対分岐発生を示していた場合には、当該絶対分岐発生
が割り込み発生によるものか否かを、プログラムの機械
語コード列に基づき判別してトレース情報を生成する処
理を行う。
【0055】またトレース情報生成に際しては、プログ
ラム情報記憶部26に記憶されたプログラムの機械語コ
ード列を用いる。
【0056】プログラム情報書き込み部29は、ターゲ
ットシステムのメモリにロードしたプログラムと同一の
プログラムを前記プログラム情報記憶部26にロードし
たり、ターゲットシステムのメモリに記憶されているプ
ログラムコードを読み出して前記プログラム情報記憶部
26に書き込んだり、前記プログラム情報記憶部26に
記憶されたプログラムをターゲットシステムのプログラ
ムと同内容になるよう書き換えたりする処理を行う。
【0057】2.ターゲットシステムが出力するステー
タス情報の内容 図3はDST[2:0]の出力値(以下DST情報とい
う)とCPUの命令実行状態の関係を表した図である。
ここにおいてPC相対分岐命令とはプログラム中に明示
的に記述されたアドレスに分岐する命令であり、命令コ
ードから分岐先を判断可能である。またPC絶対分岐命
令とはプログラムの実行中にレジスタの値によって分岐
先のアドレスが決まる命令であり、命令コードからは分
岐先を判断することができない。
【0058】従って本実施の形態ではPC絶対分岐命令
が発生すると分岐先のPC値(DPCO)を出力するこ
とでトレースを可能としている。
【0059】即ちマイクロプロセッサが命令をアドレス
の順番に実行している時(DST情報が000又は10
0である場合)には、プログラムカウンタがどこまで進
んだか分かるのでプログラムの命令コードからトレース
が可能である。また、マイクロプロセッサがPC相対分
岐命令を実行した時(DST情報が001又は101で
ある場合)にも、プログラムの命令コードから分岐先が
分かるのでトレースが可能である。
【0060】しかし、マイクロプロセッサがPC絶対分
岐命令を実行した時(DST情報が010又は110で
ある場合)には、プログラムの命令コードから分岐先が
分からないため、DST情報のみではトレースができな
い。そこで、係る場合に分岐先のPC値(DPCO)を
出力することでトレースを可能としているのである。
【0061】3.分岐先アドレスを特定するための処理 ターゲットシステムは、前記PC値をシリアルに1端子
に出力しているので、絶対分岐命令が連続又は数命令間
隔で実行されると、PC値の情報が途中で途切れてしま
いトレースができないという問題点があった。
【0062】そこで本実施の形態では、PC値の一部の
情報しかえることが出来ない場合でも後述するマップ情
報と前記DST情報に基づき絶対分岐の分岐先PC値を
特定できるように、トレース情報生成部27は以下に説
明するような分岐先アドレスを特定するための処理を行
っている。
【0063】図4(A)(B)は絶対分岐先のアドレス
を特定するための候補アドレス群の抽出について説明す
るための図である。
【0064】図4(A)の310は、DPCO信号から
得られたPC値の情報を16進数で表したものである。
PC値は下位のビットから1ビットずつ27ビット出力
されるが、この間に新たな絶対分岐が発生したら、そこ
で新たな絶対分岐先のPC値が出力されるため、先に出
力されていたPC値はそこで途切れてしまう。
【0065】310は下位12ビット分の情報312で
PC値が途切れてしまい、上位のビット情報314、3
16が得られていない状態である。このような場合、先
頭の4ビット316(16進コードなので1桁)を0と
すると絶対分岐先の候補となるPC値は216=6553
6個となる(図4(A)320参照)。従って、実際の
PC値を特定することは困難である。
【0066】そこで本実施の形態では、図4(B)に示
すようにターゲットシステムのCPUが接続されている
メモリのマップ情報330を、デバッグシステムのパラ
メタファイル340に格納しておく。マップ情報330
とはプログラムが存在するアドレスに関する情報であ
り、例えばマップ情報330は、ターゲットのCPUに
RAM1、IROM、RAM2が接続されており、RA
M1の0−7FF番地、IROMの80000−80F
FF番地、RAM2の90000−9FFFF番地にプ
ログラムが格納されていることを示している。
【0067】PC値の下位12ビットの情報が図4
(A)と同じく802番地であるとすると、RAM1の
中には候補はなく、IROMでは80802番地が候補
となり、RAM2では90802〜9F802の16個
が候補となり、全部で候補数は17となる(図4(B)
の340参照)。
【0068】図5(A)〜(C)はマップ情報から抽出
した候補群からの絶対分岐先のアドレスを特定する処理
について説明するための図である。図5(A)は、トレ
ースメモリ24に格納されている絶対分岐命令実行以降
のDST情報350を示している。
【0069】図5(B)は、マップ情報により特定され
た候補群の一つである80802番地以降の命令コード
360と当該命令コードの命令の種類370と当該命令
コードが実行された場合に出力されるであろうDST情
報380を表している。
【0070】また、図5(C)は、マップ情報により特
定された候補群の一つである90802番地以降の命令
コード390と当該命令コードの命令の種類400と当
該命令コードが実行された場合に出力されるであろうD
ST情報410を表している。他の候補群についても図
5(B)(C)と同様に出力が予想されるであろうDS
T情報列を生成して、図5(A)のトレースメモリ24
のDST情報350と比較処理を行う。そして同じであ
れば、当該候補が分岐先アドレスとして特定される。こ
こでは、図5(B)の80802番地以降の命令実行に
より出力されるDST情報列が図5(A)のトレースメ
モリ34のDST情報350と一致するので、8080
2番地を分岐先アドレスとして特定する。
【0071】図6、図7、図8は、絶対分岐が短い間隔
で発生しDPCOからプログラムカウンタ値が全ビット
出力されない場合に分岐先アドレスを特定する処理の動
作例を示すフローチャート図である。
【0072】まず図6を用いて不完全PC値の解析処理
の全体の流れについて説明する。
【0073】不完全PC値の解析処理の開始にあたり、
まず候補PC値(ulWorkPc)、候補数(ulExpectNum)
の初期設定を行う(ステップS10)。
【0074】そしてループA(ステップS20〜S4
0)でパラメタファイルでマップ情報を定義してあるメ
モリの個数分、マップ情報を利用した候補PC検索処理
(ステップS30)を行う。例えば図4(B)において
は、パラメタファイル340において、RAM1、IR
OM、RAM2の3つのメモリのマップ情報が定義され
ているので、3回候補PC値検索処理を行うことにな
る。この候補PC値検索処理で、候補PC値(ulWorkP
c)、候補数(ulExpectNum)が更新される。
【0075】ループAが終了すると、設定された候補数
(ulExpectNum)が1か否か判断する。そして候補数(u
lExpectNum)=1であれば、1つのPC値に特定された
と判断し、候補PC値特定処理で更新された候補PC値
(ulWorkPc)を、実際にCPUが実行したアドレスと
し、トレースデータの生成処理を行う(ステップS5
0、S60)。
【0076】次に図7を用いて、マップ情報を利用した
候補PC検索処理(図6のステップS30)の詳細な処
理例について説明する。
【0077】マップ情報で定義されたメモリの先頭アド
レスをDPCO信号の出力ビット数だけ右にシフトした
ものを、開始アドレス(ulMapTopAddr)にセットする。
また、マップ情報で定義されたメモリの終了アドレスを
DPCO信号の出力ビット数だけ右にシフトしたもの
を、終了アドレス(ulMapBottomAddr)にセットする。
【0078】例えば図4(A)(B)で説明したように
DPCO信号の出力が12ビットである場合(図4
(A)の312参照)には、RAM2の先頭アドレス9
0000を12ビットだけ右にシフトした00090を
開始アドレス(ulMapTopAddr)にセットする。またRA
M2の最後尾アドレス9FFFFを12ビットだけ右に
シフトした0009Fを終了アドレス(ulMapBottomAdd
r)にセットする。なお、先頭アドレス90000、最
後尾アドレス9FFFFは16進数で表記しているた
め、一桁で4ビット分のDPCO信号を表している。
【0079】そしてループBで開始アドレス(ulMapTop
Addr)から終了アドレス(ulMapBottomAddr)まで以下
の処理を繰り返す(ステップS120〜S170)。例
えば図4(B)の場合、00090から0009Fまで
16回繰り返すことになる。
【0080】まず、開始アドレス(ulMapTopAddr)をD
PCO信号の出力ビット数だけ左にシフトしたものに、
DPCOから得られた出力中のPC値を足したものを処
理対象PC値(ulPC)にセットする(ステップS13
0)。
【0081】そして命令コード上で処理対象PC値(ul
PC)以降の命令値を取り出すためのワークアドレス(un
WorkAddr)に処理対象PC値(ulPC)をセットする(ス
テップS140)。
【0082】例えば図4(B)において、最初の開始ア
ドレス(ulMapTopAddr)をは、00090である。従っ
てこれをDPCO信号の出力ビット数である12ビット
だけ左にシフトさせると09000となる。これにDP
COから得られた出力中のPC値である000802を
足した090802が処理対象PC値(ulPC)としてセ
ットされる。
【0083】そして処理対象PC値(ulPC)に対してD
ST情報を利用したPC値特定処理を行う(ステップS
150)。
【0084】そして次のループに備えて、開始アドレス
(ulMapTopAddr)を更新しておく(ステップS16
0)。図4(B)では開始アドレス(ulMapTopAddr)が
更新されて00091となる。
【0085】次に図8を用いて、DST情報を利用した
PC値特定処理(図7のステップS150)の詳細な処
理例について説明する。
【0086】ループCでDPCO信号の出力ビット数だ
け以下の処理を繰り返す(ステップS210〜S25
0)。本実施の形態では1クロック毎にDPCOが1ビ
ット出力されるので絶対分岐命令が発生してから概ねD
PCO信号の出力ビット数だけそれ以降の命令が実行さ
れているため、DPCO信号の出力ビット数だけそれ以
降の命令の実行状態を表すDST情報がトレースメモリ
に格納されることになるからである。
【0087】例えば図4(B)ではDPCO信号の出力
ビット数が12ビットであるので、ステップS220か
らS240までの処理が12回繰り返されることにな
る。
【0088】まず比較対象DSTコード(ucKindCode)
に、ワークアドレス(unWorkAddr)が指すプログラム上
の命令コードを実行した場合に出力されるであろうDS
T信号を代入する(ステップS220)。例えば図5
(B)においてワークアドレス1(362)は分岐無し
命令であるaddを指しているので、分岐無し命令が実行
された場合に出力されるであろうDST情報’000’
を比較対象DSTコード(ucKindCode)に代入する。
【0089】そしてトレースメモリ上の対応するDST
信号と前記比較対象DSTコードと(ucKindCode)比較
して一致していなければ当該処理対象PC値は求める絶
対分岐先のPC値ではないとしてループCを抜ける(ス
テップS230)。
【0090】一致している場合には命令コード上の次の
命令コードを取り出すために、ワークアドレス(unWork
Addr)を次の命令コード位置に位置づける(ステップS
240)。αは次の命令に移行するための命令サイズで
ある。例えば図5(B)において1命令が2バイトの場
合、ワークアドレス1(362)からワークアドレス2
(364)に位置づける。
【0091】そしてDPCO信号の出力ビット数だけル
ープCが実行された場合には、候補PC値以降の命令コ
ードが実行された場合のDST信号とトレースメモリに
格納されたDST信号がすべて一致したことになるの
で、当該処理対象PC値(ulPC)が求める絶対分岐先の
アドレスであるとして、処理対象PC値(ulPC)を候補
PC値(ulWorkPc)にセットする。また候補数(ulExpe
ctNum)をインクリメントする(ステップS260)。
【0092】4.ターゲットシステムを停止させること
なくトレース機能を実現するための処理 本実施の形態ではターゲットシステムの実行を停止させ
ることなくトレース情報を生成するために、ターゲット
システムの内部メモリに記憶されたプログラムの機械語
命令列(以下プログラム情報という)をホストコンピュ
ータのプログラム情報記憶部26に記憶させている。
【0093】このようにする事により、例えばトレース
メモリ上のDST信号と比較する前記比較対象DSTコ
ード(ucKindCode)にを、プログラム情報記憶部26に
記憶されたプログラム情報から作成することができる。
従ってトレース情報を生成する際にターゲットシステム
の内部メモリ16を読む必要がないので、ターゲットシ
ステムの実行を停止させることなくトレース情報を生成
することができる。
【0094】また、ターゲットシステムの内部メモリ1
6を読む必要がないのでトレース情報生成のための処理
時間を大幅に短縮することができる。
【0095】本実施の形態ではターゲットシステムの内
部メモリ16に記憶されたプログラム情報であってトレ
ースに使うものをホストコンピュータのプログラム情報
記憶部26に記憶させるために、プログラム情報書き込
み部29は以下のような処理を行っている。
【0096】図9はターゲットシステムの内部メモリに
プログラムをロードする場合の動作例を説明するための
フローチャート図である。
【0097】本実施の形態ではターゲットシステムの内
部メモリにプログラムをロードする際に、当該プログラ
ムのトレース予定がある場合にはターゲットシステムの
内部メモリにロードしたプログラム内容をプログラム情
報記憶部に書き込む(ステップS310、S320、S
330)。
【0098】図10は、ターゲットシステムの内部のプ
ログラムを書き換える場合の動作例を説明するためのフ
ローチャート図である。
【0099】本実施の形態ではターゲットシステムの内
部メモリのプログラムを書き換える際に、当該プログラ
ムのトレース予定がある場合には前記プログラム情報記
憶部に記憶されたプログラムの対応箇所をターゲットシ
ステムのプログラムと同内容に書き換える(ステップS
410、S420、S430)。
【0100】図11は、プログラムをロードせずに、既
にターゲットシステムの内部メモリにある場合の動作例
について説明するためのフローチャート図である。
【0101】当該プログラムのトレースを行う場合に
は、マップ情報からプログラムが格納されているメモリ
のスタートアドレスとエンドアドレスを特定する(ステ
ップS510、S520)。そしてターゲットシステム
の内部メモリのスタートアドレス、エンドアドレスで特
定されている内容を読み込み、プログラム情報記憶部に
書き込む(ステップS530)。
【0102】5.絶対分岐命令発生以前のプログラムカ
ウンタ解析処理 図12は絶対分岐命令発生以前のプログラムカウンタ解
析処理について説明するための図である。図12は、タ
ーゲットシステムで命令i1、i2、…が実行されて、
そのステータス情報DST1〜DST12がトレースメ
モリに蓄積されている様子を表している。本実施の形態
ではターゲットシステムは絶対分岐命令を実行するまで
プログラムカウンタ値を出力しないので、命令i9が実
行されるまでプログラムカウンタ値は出力されない。従
って絶対分岐発生以前に実行された命令i1〜命令i8
については、実行位置の特定ができずトレース情報が作
成できないという問題点があった。
【0103】そこで本実施の形態では、トレースメモリ
に蓄積された先頭ステータス情報DST1に対応する命
令実行の際のプログラムカウンタを特定するために以下
のような構成を採用している。
【0104】すなわち、範囲指定トレースを行わない場
合には、例えばプログラムの実行開始位置を指定して実
行させる際に、デバッグシステムで実行開始アドレスを
取得しておく。そしてトレースメモリに上書きしないオ
ーバーライト無しモードにおいて、ターゲットシステム
から出力されるステータス情報を蓄積する。
【0105】ここにおいて、範囲指定トレースを行わな
い場合には、ターゲットシステムは実行したすべての命
令についてステータス情報であるDST情報を出力す
る。従ってトレースメモリの先頭に蓄積されているDS
T情報DST1は、前記実行開始アドレスに対応する命
令が出力したものと特定できる。
【0106】また本実施の形態のターゲットシステムは
先頭アドレスとエンドアドレスをトリガアドレスとして
セットすることにより、先頭アドレスからエンドアドレ
スまでの命令に対応したステータス情報のみを出力させ
る範囲指定トレースを行うことができる。このときデバ
ッグシステムで、ターゲットシステムにセットしたトリ
ガアドレスをあらかじめ取得しておく。
【0107】係る範囲指定トレースを行う場合には、ト
レースメモリの先頭に蓄積されているDST情報DST
1は、先頭アドレスとして指定したトリガアドレスに対
応する命令が出力したものと特定できる。
【0108】図13は、トレースメモリに蓄積されてい
る最も古いデータ出力時のプログラムカウンタを解析す
る処理の動作例を表したフローチャート図である。
【0109】範囲指定トレースを行う場合には、候補P
C(ulPC)に先頭アドレスであるトリガアドレス1を
セットする(ステップS610、S620)。
【0110】また範囲指定トレースを行わない場合でト
レースメモリにオーバーライトしない場合には、候補P
C(ulPC)にトレース開始直前のプログラムカウンタ
値をセットする(ステップS630、S640)。な
お、トレース開始直前のプログラムカウンタ値には、こ
れから実行する命令のアドレス値がセットされている。
【0111】そして候補PC(ulPC)を、トレースメ
モリの最も古いステータス情報に対応した命令のアドレ
ス値として、トレース情報を生成する(ステップS65
0)。
【0112】6.ハードウエア割り込みの判別処理 図14は、絶対分岐命令実行を示すステータス情報が命
令実行によるものかハードウエア割り込みによるものか
を判別する処理について説明するための図である。
【0113】図14の1410に示すようにトレースメ
モリに格納されているステータス情報が絶対分岐命令の
実行を示すものである場合には、通常の絶対分岐命令実
行によるものである場合とハードウエア割り込みによる
ものである場合がある。
【0114】そこで本実施の形態では、プログラム情報
記憶部に記憶されているプログラムの機械語命令列の情
報と比較して、前記ステータス情報が通常の絶対分岐命
令実行によるものであるかハードウエア割り込みによる
ものであるかを判別している。
【0115】トレースメモリに格納されているトレース
情報に対応する命令の機械語命令列がi1、i2…とす
ると、1410のステータス情報が通常の絶対分岐命令
実行によるものである場合には対応する機械語命令は1
420のi3となる。このi3が絶対分岐命令でない場
合には、1410のステータス情報は通常の絶対分岐命
令実行によるものでなくハードウエア割り込みによるも
のであることが判別できることになる。
【0116】図15は、絶対分岐命令実行を示すステー
タス情報が命令実行によるものかハードウエア割り込み
によるものかを判別する処理の動作例について説明する
ためのフローチャート図である。
【0117】トレースメモリに蓄積されているDST情
報の個数だけループAの処理を行う(ステップS710
〜S760)。
【0118】DST情報が絶対分岐命令の実行を示して
いる場合には、まず当該DST情報出力の際のプログラ
ムカウンタが示すアドレスを解析する(ステップS72
0,S730)。そして、解析結果のプログラムカウン
タが示すアドレスの命令コードが絶対分岐命令でない場
合にはハードウエア割り込み発生箇所とし、データに登
録する(ステップS740,S750)。
【0119】7.ターゲットシステムとデバッグツール
の構成例 図16に本実施形態のマイクロコンピュータ及びデバッ
グシステムの詳細な構成例を示す。図16に示すよう
に、マイクロコンピュータ1020は、CPU102
2、BCU(バス制御ユニット)1026、内部メモリ
(ミニモニタROM1042及びミニモニタRAM10
44以外の内部ROM及び内部RAM)1028、クロ
ック生成部1030、ミニモニタ部1040(第1のモ
ニタ手段)、実行情報出力部1050を含む。
【0120】ここでCPU1022は、種々の命令の実
行処理を行うものであり、内部レジスタ1024を含
む。内部レジスタ1024は、汎用レジスタであるR0
〜R15や、特殊レジスタであるSP(スタックポイン
タレジスタ)、AHR(積和結果データの上位レジス
タ)、ALR(積和結果データの下位レジスタ)などを
含む。
【0121】BCU1026はバスを制御するものであ
る。例えば、CPU1022に接続されるハーバードア
ーキテクチャのバス1031や、内部メモリ1028に
接続されるバス1032や、外部メモリ1036に接続
される外部バス1033や、ミニモニタ部1040、実
行情報出力部1050などに接続される内部バス103
4の制御を行う。
【0122】またクロック生成部1030は、マイクロ
コンピュータ1020内で使用される各種のクロックを
生成するものである。クロック生成部1030はBCL
Kを介して外部のデバッグツール1060にもクロック
を供給している。
【0123】ミニモニタ部1040は、ミニモニタRO
M1042、ミニモニタRAM1044、制御レジスタ
1046、SIO1048を含む。
【0124】ここで、ミニモニタROM1042には、
ミニモニタプログラムが格納される。本実施形態では、
このミニモニタプログラムは、GO、リード、ライトな
どのシンプルでプリミティブなコマンドの処理のみを行
うようになっている。このため、ミニモニタROM42
のメモリ容量を例えば256バイト程度に抑えることが
でき、オンチップデバッグ機能を持たせながらマイクロ
コンピュータ1020を小規模化できるようになる。
【0125】ミニモニタRAM1044には、デバッグ
モードへの移行時に(ユーザプログラムのブレーク発生
時に)、CPU1022の内部レジスタ1024の内容
が退避される。これにより、デバッグモードの終了後に
ユーザプログラムの実行を適正に再スタートできるよう
になる。また内部レジスタの内容のリード等を、ミニモ
ニタプログラムが持つプリミティブなリードコマンド等
で実現できるようになる。
【0126】制御レジスタ1046は、各種のデバッグ
処理を制御するためのレジスタであり、ステップ実行イ
ネーブルビット、ブレークイネーブルビット、ブレーク
アドレスビット、トレースイネーブルビットなどを有す
る。ミニモニタプログラムにより動作するCPU102
2が制御レジスタ1046の各ビットにデータをライト
したり、各ビットのデータをリードすることで、各種の
デバッグ処理が実現される。
【0127】SIO1048は、マイクロコンピュータ
1020の外部に設けられたデバッグツール1060と
の間でデータを送受信するためのものである。SIO1
048とデバッグツール1060との間は、TXD/R
XD(データ送受信ライン)で接続されている。
【0128】実行情報出力部1050は、リアルタイム
トレース機能を実現するためのものであり、CPUの実
行状態を表すステータス情報であるDST情報(DST
[2:0])及びPC絶対分岐が発生した際の分岐先の
PC(プログラムカウンタ)値(DPCO)を実行情報
として専用4端子を介して外部に出力する。
【0129】実行情報出力部1050とデバッグツール
1060との間は、CPU1022の命令実行のステー
タス情報を出力する3本のDST[2:0]と、絶対分
岐先のPC(プログラムカウンタ)値をシリアルに1ビ
ットずつ出力する1本のDPCOという4本のラインで
接続されている。
【0130】デバッグツール1060はメインモニタ部
1062、実行情報取得部1064を含み、パーソナル
コンピュータ等により実現されるホストシステム106
6に接続される。
【0131】メインモニタ部106は、ホストシステム
1066から入力されるデバッグコマンドをプリミティ
ブコマンドに変換(分解)するための処理を行う。そし
て、メインモニタ部1062が、プリミティブコマンド
の実行を指示するデータをミニモニタ部1040に送信
すると、ミニモニタ部1040が、指示されたプリミテ
ィブコマンドを実行するための処理を行うことになる。
【0132】また、実行情報取得部1064は、3ビッ
トのDST[2:0]と、分岐先のPC(プログラムカ
ウンタ)値を表すDPCOを内部のトレースメモリ11
04に格納する。トレース範囲が指定されている場合に
は、その範囲のDST[2:0]とDPCOをトレース
メモリに格納する。
【0133】次に本実施の形態で、デバッグシステムか
らマイクロコンピュータの内部メモリにプログラムをロ
ードしたり、内部メモリの情報を書き換える構成につい
て説明する。
【0134】図17に示すように、本実施形態では、マ
イクロコンピュータ1020が、CPU(中央処理ユニ
ット)1022及び本実施形態の要部であるミニモニタ
部(第1のモニタ手段)1040を含む。また、マイク
ロコンピュータ1020の外部にはメインモニタ部(第
2のモニタ手段)1062が設けられている。ここでメ
インモニタ部1062は、例えばホストコンピュータ1
066などが発行したデバッグコマンドをプリミティブ
コマンドに変換(分解)するための処理を行う。また、
ミニモニタ部1040は、メインモニタ部1062との
間でデータを送受信する。そして、ミニモニタ部104
0は、実行するプリミティブコマンドを、メインモニタ
部1062からの受信データに基づいて決定し、プリミ
ティブコマンドを実行するための処理を行う。
【0135】ここで、メインモニタ部1062の変換処
理の対象となるデバッグコマンドとしては、プログラム
ロード、GO、ステップ実行、メモリライト、メモリリ
ード、内部レジスタライト、内部レジスタリード、ブレ
ークポイント設定、ブレークポイント解除などのコマン
ドを考えることができる。メインモニタ部1062は、
これらの多様で複雑なデバッグコマンドを、例えばG
O、ライト(デバッグモード時におけるメモリマップ上
の所与のアドレスへのライト)、リード(メモリマップ
上の所与のアドレスからのリード)などの、シンプルで
プリミティブなコマンドに変換する処理を行う。このよ
うにすることで、ミニモニタ部1040の処理を行うミ
ニモニタプログラムの命令コードサイズを格段に小さく
することができる。
【0136】これにより、デバッグシステムからマイク
ロコンピュータの内部メモリにプログラムをロードした
り、内部メモリの情報を書き換えることができる。すな
わちターゲットシステムであるマイクロコンピュータに
プログラムロードを行う場合や、メモリライトを行う場
合には、ホストコンピュータから、これらのデバッグコ
マンドを発行することになる。
【0137】8.プリミティブコマンドへの変換 図18(A)(B)(C)(D)に、各種のデバッグコ
マンドをプリミティブコマンドへ変換する処理について
模式的に示す。
【0138】例えば図18(A)に示すように、(AD
D・・・、SUB・・・、AND・・・、OR・・・、
XOR・・・、LD.W・・・)という12バイトのプ
ログラムを80010h番地にロードするというデバッ
グコマンドが発行されたとする。この場合、このプログ
ラムロードコマンドは、ライト(80010h、ADD
・・・、SUB)、ライト(80014h、AND・・
・、OR・・・)、ライト(80018h、XOR・・
・、LD.W・・・)という3つのプリミティブなライ
トコマンドに変換される。即ち、ミニモニタプログラム
が、この3つのプリミティブなライトコマンドを実行す
ることで、プログラムロードコマンドが実現されるよう
になる。
【0139】また図18(B)に示すようにステップ実
行コマンドというデバッグコマンドが発行されたとす
る。すると、このステップ実行コマンドは、図16の制
御レジスタ1046のステップ実行イネーブルビットへ
のライトコマンドとGOコマンドに変換される。即ち、
ミニモニタプログラムが、このプリミティブなライトコ
マンドとGOコマンドを実行することで、ステップ実行
コマンドが実現されるようになる。
【0140】また図18(C)に示すように内部レジス
タリードコマンドというデバッグコマンドが発行された
とする。すると、この内部レジスタリードコマンドは、
メモリマップ上のミニモニタRAM44(内部レジスタ
の内容の退避先)からのリードコマンドに変換される。
即ち、ミニモニタプログラムが、このプリミティブなリ
ードコマンドを実行することで、内部レジスタリードコ
マンドが実現されるようになる。内部レジスタライトコ
マンド、メモリリードコマンド、メモリライトコマンド
も同様にして実現される。
【0141】また図18(D)に示すようにトリガアド
レスをブレークポイントとして設定するブレークポイン
ト設定コマンドというデバッグコマンドが発行されたと
する。すると、このブレークポイント設定コマンドは、
制御レジスタ1046のブレークイネーブルビット及び
ブレークアドレスビットへのライトコマンドに変換され
る。即ち、ミニモニタプログラムが、このプリミティブ
なライトコマンドを実行することで、ブレークポイント
設定コマンドが実現されるようになる。
【0142】このように本実施形態では、複雑で多様な
デバッグコマンドが、プリミティブでシンプルなリー
ド、ライト、GOコマンドに変換される。そして、ミニ
モニタプログラムは、このプリミティブなリード、ライ
ト、GOコマンドを実行するだけでよいため、ミニモニ
タプログラムの命令コードサイズは非常に小さくなる。
この結果、ミニモニタROM1042のメモリ容量も小
さくでき、小さなハードウェア規模でオンチップデバッ
グ機能を実現できるようになる。
【0143】9.デバッグツールの構成例 図19にデバッグツール1060の構成例を示す。
【0144】CPU1090は、ROM1108に格納
されるプログラムを実行したり、デバッグツール106
0の全体の制御を行うものである。送受信切替部109
2は、データの送信と受信とを切り替えるためのもので
ある。クロック制御部1094は、CPU1090のS
CLK端子、アドレスアップカウンタ1100、トレー
スメモリ1104に供給するクロックを制御するもので
ある。このクロック制御部1094には、マイクロコン
ピュータ1020(SIO1048)からのBCLKが
入力される。クロック制御部1094は周波数検出回路
1095、分周回路1096を含む。周波数検出回路1
095は、BCLKの周波数が属する周波数範囲を検出
して、その結果を制御レジスタ1098に出力する。ま
た分周回路1096での分周比は制御レジスタ1098
により制御される。即ちCPU1090により実行され
るメインモニタプログラム(メインモニタROM110
に格納)が、制御レジスタ1098からBCLKの周波
数範囲を読み出す。そして、メインモニタプログラム
は、この周波数範囲に応じた最適な分周比を決定し、こ
の分周比を制御レジスタ1098に書き込む。そして、
分周回路1096は、この分周比でBCLKを分周して
SMC2を生成し、CPU1090のSCLK端子に出
力する。
【0145】アドレスアップカウンタ1100は、トレ
ースメモリのアドレスをカウントアップするためのもの
である。セレクタ1102は、ライン1122(アドレ
スアップカウンタ1100が出力するアドレス)とライ
ン1124(アドレスバス1120からのアドレス)の
いずれかを選択し、トレースメモリ1104のアドレス
端子にデータを出力する。またセレクタ1106は、ラ
イン1126(図16の実行情報出力部1050の出力
であるDST[2:0]、DPCO)とライン1128
(データバス1118)のいずれかを選択し、トレース
メモリ1104のデータ端子にデータを出力したり、デ
ータ端子からデータを取り出す。
【0146】ROM1108はメインモニタROM11
10(図16のメインモニタ部1062に相当)を含
み、メインモニタROM1110には、メインモニタプ
ログラムが格納される。このメインモニタプログラム
は、図18(A)〜図18(D)で説明したように、デ
バッグコマンドをプリミティブコマンドに変換するため
の処理を行う。RAM1112は、CPU1090のワ
ーク領域となるものである。
【0147】RS232Cインターフェース1114、
パラレルインターフェース1116は、図16のホスト
コンピュータ1066とのインターフェースとなるもの
であり、ホストシステム1066からのデバッグコマン
ドはこれらのインターフェースを介してCPU1090
に入力されることになる。クロック生成部1118は、
CPU1090を動作させるクロックなどを生成するも
のである。
【0148】次に本実施形態でのリアルタイムトレース
処理について簡単に説明する。本実施形態では、図16
のCPU1022の命令実行のステータス情報を表す3
ビットのDST[2:0]と、分岐先のPC値を表すD
PCOをトレースメモリ1104に蓄える。そして、ト
レースメモリ1104に蓄えられたデータと、ホストコ
ンピュータ1066のプログラム情報記憶部に記憶され
たユーザプログラムの機械語命令列の情報とに基づい
て、トレースデータを生成する。このようにすること
で、マイクロコンピュータ1020とデバッグツール1
060との間の接続ラインの本数を少なくしながら、リ
アルタイムトレース機能を実現することが可能になる。
【0149】ユーザプログラム実行モードにおいては、
ライン1122が選択され、セレクタ1102を介して
アドレスアップカウンタ1100の出力がトレースメモ
リ1104のアドレス端子に入力される。また、ライン
1126が選択され、セレクタ1106を介してDST
[2:0]、DPCOがトレースメモリ1104のデー
タ端子に入力される。ここでアドレスアップカウンタ1
100には、まず最初に、データバス1118、アドレ
スバス1120を用いてCPU1090により図20
(A)に示すようなスタートアドレスが設定される。ま
たアドレスアップカウンタ1100のST/SP(開始
/停止)端子には、トレース範囲を特定するDST
[2]のラインが接続される。そして図20(B)に示
すように、DST[2]のラインに第1のパルス130
が入力されると、アドレスアップカウンタ1100のア
ドレスアップカウントが開始する。そして、DST
[2]のラインに第2のパルス132が入力されると、
アドレスアップカウンタ1100のアドレスアップカウ
ントが停止し、トレース動作が停止する。このようにし
て、所望のトレース範囲でのデータ(DST[2:
0]、DPCO)をトレースメモリ1104に蓄えるこ
とが可能になる。
【0150】一方、ユーザプログラム実行モードからデ
バッグモードに移行すると、ライン1124が選択さ
れ、セレクタ1102を介してアドレスバス1120か
らのアドレスがトレースメモリ1104のアドレス端子
に入力される。またライン1128が選択され、セレク
タ1106を介してトレースメモリ1104からのデー
タがデータバス1118に出力される。これにより、ト
レースメモリ1104に蓄えられたデータ(DST
[2:0]、DPCO)を、デバッグモード時にCPU
1090(メインモニタプログラム)が読み出すことが
可能になる。そして、読み出されたデータとユーザープ
ログラムの機械語命令列の情報とに基づいて、トレース
データを生成することが可能になる。
【0151】なお、本発明は本実施形態に限定されず、
本発明の要旨の範囲内で種々の変形実施が可能である。
【0152】例えば本実施の形態では、デバッグシステ
ムの機能を実現する手段がデバッグツールとホストコン
ピュータに分散して設けられている場合を例にとり説明
したががこれに限られない。デバッグツールとホストコ
ンピュータのいずれか一方にすべて機能を実現する手段
を設けてデバッグシステムを実現するようにしてもよ
い。
【0153】また本実施の形態では、ターゲットシステ
ムから分岐先のPC値が1ビットずつシリアルに出力さ
れる場合を例にとり説明したがこれに限られない。分岐
先PC出力用の端子を数ビット分用意しておいて数ビッ
トずつシリアルに出力するような場合でもよい。
【0154】また本実施の形態では二つのトリガアドレ
スで範囲指定トレースを行う場合を例にとり説明したが
これに限られない。例えば、トリガポイントが一つまた
が3つ以上設定されている場合でもよいし、トリガポイ
ントによって範囲指定を行わない場合でもよい。
【0155】またマイクロコンピュータやデバッグツー
ルの構成も本実施形態で説明したものに限定されず、種
々の変形実施が可能である。
【図面の簡単な説明】
【図1】CPU置き換え型のICEの例を示す図であ
る。
【図2】本実施形態の構成について説明するための図で
ある。
【図3】DST[2:0]の出力値とCPUの命令実行
状態の関係を表した図である。
【図4】図4(A)、図4(B)は絶対分岐先のアドレ
スを特定するための候補アドレス群の抽出について説明
するための図である。
【図5】図5(A)〜図5(C)はマップ情報から抽出
した候補群からの絶対分岐先のアドレスの特定処理につ
いて説明するための図である。
【図6】絶対分岐が短い間隔で発生しDPCOからプロ
グラムカウンタ値が全ビット出力されない場合に分岐先
アドレスを特定する処理の動作例を示すフローチャート
図である。
【図7】絶対分岐が短い間隔で発生しDPCOからプロ
グラムカウンタ値が全ビット出力されない場合に分岐先
アドレスを特定する処理の動作例を示すフローチャート
図である。
【図8】絶対分岐が短い間隔で発生しDPCOからプロ
グラムカウンタ値が全ビット出力されない場合に分岐先
アドレスを特定する処理の動作例を示すフローチャート
図である。
【図9】ターゲットシステムの内部メモリにプログラム
をロードする場合の動作例を説明するためのフローチャ
ート図である。
【図10】ターゲットシステムの内部のプログラムコー
ドを書き換える場合の動作例を説明するためのフローチ
ャート図である。
【図11】プログラムをロードせずに、既にターゲット
システムの内部メモリにある場合の動作例について説明
するためのフローチャート図である。
【図12】絶対分岐命令発生以前のプログラムカウンタ
解析処理について説明するための図である。
【図13】トレースメモリに蓄積されている最も古いデ
ータ出力時のプログラムカウンタを解析する処理の動作
例を表したフローチャート図である。
【図14】絶対分岐命令実行を示すステータス情報が命
令実行によるものかハードウエア割り込みによるものか
を判別する処理について説明するための図である。
【図15】絶対分岐命令実行を示すステータス情報が命
令実行によるものかハードウエア割り込みによるものか
を判別する処理の動作例について説明するためのフロー
チャート図である。
【図16】マイクロコンピュータ、デバッグシステムの
構成例を示す機能ブロック図である。
【図17】本実施の形態におけるデバッグコマンドの実
行処理について説明するための図である。
【図18】図18(A)〜図18(D)は、デバッグコ
マンドをプリミティブコマンドへ変換(分解)する処理
について説明するための図である。
【図19】デバッグツールの詳細な構成例を示す機能ブ
ロック図である。
【図20】DST[2]とトレース範囲の関係を示す図
である。
【符号の説明】
10 マイクロコンピュータ 12 CPU(中央処理ユニット) 14 実行情報出力部 16 内部メモリ 20 デバッグシステム 22 実行情報取得部 24 トレースメモリ 26 プログラム情報記憶部 27 トレース情報生成部 28 ターゲットメモリ書き込み部 29 プログラム情報書き込み部 1020 マイクロコンピュータ 1022 CPU 1024 内部レジスタ 1026 BCU 1028 内部メモリ 1030 クロック生成部 1036 外部メモリ 1040 ミニモニタ部 1042 ミニモニタROM 1044 ミニモニタRAM 1046 制御レジスタ 1048 SIO 1050 実行情報出力部 1060 デバッグツール 1062 メインモニタ部 1064 実行情報取得部 1066 ホストコンピュータ 1090 CPU 1092 送受信切替部 1094 クロック制御部 1095 周波数検出部 1096 分周回路 1098 制御レジスタ 1100 アドレスアップカウンタ 1102 セレクタ 1104 トレースメモリ 1106 セレクタ 1108 ROM 1110 外部モニタROM 1112 RAM 1114 RS232Cインターフェース 1116 パラレルインターフェース 1118 クロック生成部

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 CPUの実行状態が通常命令実行、絶対
    分岐命令実行、相対分岐命令実行のいずれに属するかを
    判別するためのステータス情報と絶対分岐命令の分岐先
    アドレスを出力するターゲットシステムのトレース情報
    を出力するデバッグシステムであって、 ターゲットシステムから前記ステータス情報を受け取っ
    て上書きしないでメモリに蓄積する手段と、 当該デバッグシステムが有しているターゲットシステム
    の実行開始アドレス及びターゲットのCPUで実行され
    るプログラムの機械語命令列を把握するための情報に基
    づき、絶対分岐命令発生以前のトレース情報を生成する
    トレース情報生成手段と、 を含むことを特徴とするデバッグシステム。
  2. 【請求項2】 CPUの実行状態が通常命令実行、絶対
    分岐命令実行、相対分岐命令実行のいずれに属するか及
    びトリガポイントにマッチしたか否かを判別するための
    ステータス情報と絶対分岐命令の分岐先アドレスを出力
    するターゲットシステムのトレース情報を出力するデバ
    ッグシステムであって、 ターゲットシステムから前記ステータス情報を受け取っ
    て、メモリに蓄積する手段と、 メモリに蓄積されたステータス情報がトリガポイントに
    マッチしていることを示している場合に、当該デバッグ
    システムが有しているトリガポイントアドレス及びター
    ゲットが実行するプログラムの機械語命令列を把握する
    ための情報に基づき絶対分岐命令発生以前のトレース情
    報を生成するトレース情報生成手段と、 を含むことを特徴とするデバッグシステム。
  3. 【請求項3】 CPUの実行状態が通常命令実行、絶対
    分岐発生、相対分岐命令実行のいずれに属するかを判別
    するためのステータス情報と絶対分岐命令の分岐先アド
    レスを出力するターゲットシステムのトレース情報を出
    力するデバッグシステムであって、 ターゲットシステムから前記ステータス情報を受け取っ
    てメモリに蓄積する手段と、 前記メモリに蓄積されたステータス情報が絶対分岐発生
    を示していた場合に、当該絶対分岐発生が割り込み発生
    によるものか否かを、プログラムの機械語命令列を把握
    するための情報に基づき判別してトレース情報を生成す
    るトレース情報生成手段と、を含むことを特徴とするデ
    バッグシステム。
  4. 【請求項4】 請求項1乃至3のいずれかにおいて、 ターゲットが実行するプログラムの機械語命令列を把握
    するための情報を予め記憶しているプログラム情報記憶
    手段をさらに含み、 前記トレース情報生成手段が、 プログラム情報記憶手段に記憶された前記プログラムの
    機械語命令列を把握するための情報を用いてトレース情
    報を生成する事を特徴とするデバッグシステム。
  5. 【請求項5】 CPUの実行状態が通常命令実行、絶対
    分岐命令実行、相対分岐命令実行のいずれに属するかを
    判別するためのステータス情報と絶対分岐命令の分岐先
    アドレスを出力するターゲットシステムのトレース情報
    を出力するデバッグシステムを制御するためのコンピュ
    ータが読みとり可能な情報記憶媒体であって、 ターゲットシステムから前記ステータス情報を受け取っ
    て上書きしないでメモリに蓄積する手段と、 当該デバッグシステムが有しているターゲットシステム
    の実行開始アドレス及びターゲットのCPUで実行され
    るプログラムの機械語命令列を把握するための情報に基
    づき絶対分岐命令発生以前のトレース情報を生成するト
    レース情報生成手段と、 を実現するために必要な情報を含むことを特徴とする情
    報記憶媒体。
  6. 【請求項6】 CPUの実行状態が通常命令実行、絶対
    分岐命令実行、相対分岐命令実行のいずれに属するか及
    びトリガポイントにマッチしたか否かを判別するための
    ステータス情報と絶対分岐命令の分岐先アドレスを出力
    するターゲットシステムのトレース情報を出力するデバ
    ッグシステムを制御するためのコンピュータが読みとり
    可能な情報記憶媒体であって、 ターゲットシステムから前記ステータス情報を受け取っ
    て、メモリに蓄積する手段と、 メモリに蓄積されたステータス情報がトリガポイントに
    マッチしていることを示している場合に、当該デバッグ
    システムが有しているトリガポイントアドレス及びター
    ゲットが実行するプログラムの機械語命令列を把握する
    ための情報に基づき絶対分岐命令発生以前のトレース情
    報を生成するトレース情報生成手段と、 を実現するために必要な情報を含むことを特徴とする情
    報記憶媒体。
  7. 【請求項7】 CPUの実行状態が通常命令実行、絶対
    分岐発生、相対分岐命令実行のいずれに属するかを判別
    するためのステータス情報と絶対分岐命令の分岐先アド
    レスを出力するターゲットシステムのトレース情報を出
    力するデバッグシステムを制御するためのコンピュータ
    が読みとり可能な情報記憶媒体であって、 ターゲットシステムから前記ステータス情報を受け取っ
    てメモリに蓄積する手段と、 前記メモリに蓄積されたステータス情報が絶対分岐発生
    を示していた場合に、当該絶対分岐発生が割り込み発生
    によるものか否かを、プログラムの機械語命令列を把握
    するための情報に基づき判別してトレース情報を生成す
    るトレース情報生成手段と、 を実現するために必要な情報を含むことを特徴とする情
    報記憶媒体。
  8. 【請求項8】 請求項5乃至7のいずれかにおいて、 ターゲットが実行するプログラムの機械語命令列を把握
    するための情報を予め記憶しているプログラム情報記憶
    手段をさらに含み、 前記トレース情報生成手段が、 プログラム情報記憶手段に記憶された前記プログラムの
    機械語命令列を把握するための情報を用いてトレース情
    報を生成するために必要な情報を含むことを特徴とする
    情報記憶媒体。
JP09242899A 1999-03-31 1999-03-31 デバッグシステム及び情報記憶媒体 Expired - Fee Related JP3775462B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP09242899A JP3775462B2 (ja) 1999-03-31 1999-03-31 デバッグシステム及び情報記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP09242899A JP3775462B2 (ja) 1999-03-31 1999-03-31 デバッグシステム及び情報記憶媒体

Publications (2)

Publication Number Publication Date
JP2000284985A true JP2000284985A (ja) 2000-10-13
JP3775462B2 JP3775462B2 (ja) 2006-05-17

Family

ID=14054178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09242899A Expired - Fee Related JP3775462B2 (ja) 1999-03-31 1999-03-31 デバッグシステム及び情報記憶媒体

Country Status (1)

Country Link
JP (1) JP3775462B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010123050A (ja) * 2008-11-21 2010-06-03 Renesas Technology Corp 半導体装置
US7817293B2 (en) 2005-01-07 2010-10-19 Infoprint Solutions Company, Llc Trace and debug tool for high speed printer systems

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020140380A (ja) 2019-02-27 2020-09-03 ローム株式会社 半導体装置及びデバッグシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7817293B2 (en) 2005-01-07 2010-10-19 Infoprint Solutions Company, Llc Trace and debug tool for high speed printer systems
JP2010123050A (ja) * 2008-11-21 2010-06-03 Renesas Technology Corp 半導体装置

Also Published As

Publication number Publication date
JP3775462B2 (ja) 2006-05-17

Similar Documents

Publication Publication Date Title
US6922795B2 (en) Microcomputer, electronic equipment, and debugging system
US6075941A (en) Microcomputer
US6662314B1 (en) Microcomputer including program for rewriting data in an internal flash memory
US6094730A (en) Hardware-assisted firmware tracing method and apparatus
US20030046610A1 (en) Microcomputer and debugging system
JPH11282720A (ja) マイクロコンピュータ、電子機器及びデバッグシステム
US20060010282A1 (en) Method and apparatus to boot a system by monitoring an operating status of a NAND flash memory
US20030093612A1 (en) Microcomputer
US6708289B1 (en) Microcomputer, electronic equipment and debugging system
US6760864B2 (en) Data processing system with on-chip FIFO for storing debug information and method therefor
US20060075310A1 (en) Microcomputer and trace control method capable of tracing desired task
US20050060690A1 (en) Microprocessor system with software emulation processed by auxiliary hardware
JP2000284985A (ja) デバッグシステム及び情報記憶媒体
CN116737078A (zh) 一种快速闪存读写系统、方法、设备及介质
JPH1078887A (ja) デバッグシステム及びデバッグ方法
JPH11282714A (ja) 情報処理装置及び電子機器
US20050086454A1 (en) System and methods for providing a debug function built-in type microcomputer
JP3741187B2 (ja) デバッグシステム及び情報記憶媒体
JP2000284984A (ja) デバッグシステム及び情報記憶媒体
CN114546746A (zh) 一种芯片调试的方法、装置、电子设备及存储介质
JP3741182B2 (ja) マイクロコンピュータ、電子機器及びデバッグシステム
US20230314513A1 (en) In-circuit emulator device
JP2005251217A (ja) マイクロコンピュータ、電子機器及びデバッグシステム
JP2967741B2 (ja) Cpu互換性テスト装置
JP2009009201A (ja) デバッグ装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051026

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20051220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060214

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090303

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100303

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100303

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120303

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120303

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130303

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140303

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees