JP2018128767A - デバッグシステム及び半導体装置 - Google Patents

デバッグシステム及び半導体装置 Download PDF

Info

Publication number
JP2018128767A
JP2018128767A JP2017020311A JP2017020311A JP2018128767A JP 2018128767 A JP2018128767 A JP 2018128767A JP 2017020311 A JP2017020311 A JP 2017020311A JP 2017020311 A JP2017020311 A JP 2017020311A JP 2018128767 A JP2018128767 A JP 2018128767A
Authority
JP
Japan
Prior art keywords
execution
program
counter value
address
start address
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.)
Pending
Application number
JP2017020311A
Other languages
English (en)
Inventor
真 吉田
Makoto Yoshida
真 吉田
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2017020311A priority Critical patent/JP2018128767A/ja
Priority to US15/840,437 priority patent/US10496521B2/en
Publication of JP2018128767A publication Critical patent/JP2018128767A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】デバッグシステム及び半導体装置の回路構成を簡略化すること。
【解決手段】ブレーク回路は、対象プログラムの実行中のプログラムカウンタ値が実行開始アドレス以下、又は、実行開始アドレスより大きく、かつ、複数のブレークポイントに対応する複数のアドレスのうち最も小さいアドレス以上の場合に、対象プログラムの実行を中断し、デバッグ制御部は、対象プログラムの実行中断時に、プログラムカウンタ値が複数のブレークポイントのいずれとも一致しない場合に、当該プログラムカウンタ値を実行開始アドレスとして第1のレジスタに設定し、当該プログラムカウンタ値より大きく、かつ、複数のブレークポイントのうち最も小さいアドレスを第2のレジスタに設定し、当該対象プログラムの実行を実行開始アドレスから再開する。
【選択図】図2

Description

本発明はデバッグシステム及び半導体装置に関し、例えば、複数のブレークポイントを設定したデバッグシステム及び半導体装置に関する。
特許文献1には、ブレークポイント設定方式に関する技術が開示されている。特許文献1にかかる技術は、プログラムの実行アドレスがブレークポイントに到達した場合に、当該プログラムの実行を停止する。また、当該プログラムの分岐命令が発生した場合に、当該プログラムの実行を中断し、プログラムの実行再開アドレス以上、かつ、当該実行再開アドレスに最も近いブレークポイントの範囲の外に分岐先がある場合に、分岐トレース機構により当該プログラムの実行を再開する。
特開平6−103110号公報
しかしながら、特許文献1にかかる技術では、ブレークポイントに到達してプログラムの実行を停止した場合と、分岐命令が発生してプログラムの実行を中断した場合とで、処理が異なる。そのため、処理構造が複雑になるという問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、デバッグシステムは、対象プログラムの実行中のプログラムカウンタ値が実行開始アドレス以下、又は、実行開始アドレスより大きく、かつ、前記複数のブレークポイントに対応する複数のアドレスのうち最も小さいアドレス以上の場合に、対象プログラムの実行を中断し、デバッグ制御部が、前記対象プログラムの実行中断時に、前記プログラムカウンタ値が前記複数のブレークポイントのいずれとも一致しない場合に、当該プログラムカウンタ値を前記実行開始アドレスとして前記第1のレジスタに設定し、当該プログラムカウンタ値より大きく、かつ、前記複数のブレークポイントのうち最も小さいアドレスを前記最も小さいアドレスとして前記第2のレジスタに設定し、当該対象プログラムの実行を前記実行開始アドレスから再開するものである。
前記一実施の形態によれば、デバッグシステム及び半導体装置の回路構成を簡略化できる。
本実施の形態1にかかるデバッグシステムの全体構成を示すブロック図である。 本実施の形態1にかかるHWブレーク回路の構成を示すブロック図である。 本実施の形態1にかかる1ビットカウンタの構成を示すブロック図である。 本実施の形態1にかかるHWブレークポイント設定テーブルの構成例を示す図である。 本実施の形態1にかかるデバッグ支援処理の流れを示すフローチャートである。 本実施の形態1にかかるレジスタ等設定処理の流れを示すフローチャートである。 本実施の形態1にかかる実行例(1)における対象プログラムのアドレス設定例を示す図である。 本実施の形態1にかかる実行例(2)における対象プログラムのアドレス設定例を示す図である。 本実施の形態1にかかる実行例(3)における対象プログラムのアドレス設定例を示す図である。 本実施の形態1にかかる実行例(4)における対象プログラムのアドレス設定例を示す図である。 本実施の形態2にかかるHWブレーク回路の構成を示すブロック図である。 本実施の形態3にかかるHWブレークポイント設定テーブルの構成例を示す図である。 本実施の形態3にかかるデバッグ支援処理の流れを示すフローチャートである。 本実施の形態4にかかるHWブレーク回路の構成を示すブロック図である。 本実施の形態4にかかるレジスタ等設定処理の流れを示すフローチャートである。 本実施の形態5にかかるデバッグシステムの全体構成を示すブロック図である。
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
ここで、以下の実施の形態を想到するに至った経緯を説明する。まず、プログラムをデバッグする際、特定のアドレスで実行を停止させ、そのときの変数やレジスタの値を確認する各種デバッグ処理が頻繁に行われる。特定のアドレスで実行を停止するためには、実行前PCブレーク機能が使われる。
実行前PCブレーク機能には、MCU(Micro Control Unit)内蔵のデバッグ回路(OCD(On Chip Debug)回路)を使うHW(HardWare)ブレーク機能と、ブレークポイント位置の命令をBRK命令に書き換えるSW(SoftWare)ブレーク機能の2種類がある。それぞれのブレーク機能には以下の特徴がある。
HWブレーク機能は、命令書き換えが発生しないため設定に時間がかからず、命令書き換えがないためフラッシュメモリの寿命に影響がない。その反面、設定可能なブレークポイント数は、MCUに内蔵されているOCD回路の規模に依存するため設定可能なブレークポイント数が少ない。
SWブレーク機能は、設定可能なブレークポイント数がMCUのOCD回路に依存しないため、設定可能数が多い。その反面、命令書き換えを行うために設定に時間がかかり、フラッシュメモリの寿命に影響がある。
そこで、命令書き換えを行わずに多数の実行前PCブレークを設定できる仕組みとして例えば、上述した特許文献1が挙げられる。しかしながら、特許文献1では、ブレークポイント検出機構とは別に、独立した分岐トレース機構が必要となる。そのため、処理構造が複雑となり得る。そこで、以下の実施の形態では、分岐トレース機構を削減し、ブレークポイントでのプログラム停止と分岐によるプログラム停止とを統一したハードウェア処理により実現するものである。そして、デバッグ支援プログラムの規模も縮小できるため、信頼性を高めることができる。
<実施の形態1>
図1は、本実施の形態1にかかるデバッグシステム100の全体構成を示すブロック図である。デバッグシステム100は、MCU101と、デバッグ支援装置111と、コンピュータ端末120とを備える。
MCU101は、CPU(Central Processing Unit)102と、RAM(Random Access Memory)103と、ROM(Read Only Memory)104と、I/O(Input/Output)106と、デバッグ回路107と、通信I/F(Inter/Face)110とを備え、バス109を介して接続されている。ROM104は、モニタプログラム105と、対象プログラム121とを記憶する。モニタプログラム105は、デバッグ支援装置111からの指示に応じてデバッグ回路107への各種設定処理等を行う処理が実装されたコンピュータプログラムである。対象プログラム121は、デバッグ対象となるユーザプログラムである。CPU102は、RAM103及びROM104に格納されたプログラム等を読み込み、実行を行う。
デバッグ回路107は、HWブレーク回路108を備える。HWブレーク回路108は、対象プログラム121を実行する際のCPU102におけるプログラムカウンタ値が指定範囲外を示す場合に、対象プログラム121の動作を中断させるための回路である。尚、HWブレーク回路108の具体的な構成は後述する。通信I/F110は、バス109を介してMCU101内部の各構成と通信し、通信I/F112を介してデバッグ支援装置111と通信を行うインタフェースである。
図2は、本実施の形態1にかかるHWブレーク回路108の構成を示すブロック図である。HWブレーク回路108は、有効/無効フラグ302及び305と、実行開始アドレス格納レジスタ303と、ブレークポイント格納レジスタ304と、比較器A306と、比較器B307と、1ビットカウンタ308と、AND回路309及び310と、OR回路311とを備える。実行開始アドレス格納レジスタ303は、対象プログラム121の実行開始時又は実行再開時のプログラムカウンタ値(実行開始アドレスRA)を保持する第1のレジスタである。ブレークポイント格納レジスタ304は、実行開始アドレスより大きく、かつ、対象プログラム121に設定されたブレークポイントのうち最も小さい直近アドレスを保持する第2のレジスタである。言い換えれば、前記直近アドレスは、実行開始アドレスより大きく、かつ、前記実行開始アドレスに最も近いアドレスである。
比較器A306は、実行開始アドレス格納レジスタ303に設定(保持)された実行開始アドレスRAと、プログラムカウンタ値PCとを比較し、第1の比較結果を出力する第1の比較器である。具体的には、比較器A306は、プログラムカウンタ値PCが実行開始アドレスRA以下になった場合に1を第1の比較結果として出力し、プログラムカウンタ値PCが実行開始アドレスRAより大きい場合に0を第1の比較結果として出力する。
1ビットカウンタ308は、第1の比較結果においてプログラムカウンタ値PCが実行開始アドレスRA以下である場合に内部のカウンタ値に1ビット分をカウントし、カウンタ値が1ビットをオーバーフローした場合にオーバーフロー信号を出力する。言い換えると、1ビットカウンタ308は、カウンタ回路の一例であり、第1の比較結果においてプログラムカウンタ値PCが実行開始アドレスRA以下である条件が2回成立した場合に、条件成立信号を出力するものといえる。具体的には、1ビットカウンタ308は、比較器A306の出力が1の場合に、カウンタ値を1加算する。そして、1ビットカウンタ308は、カウンタ値が1を超えるときに1を出力し、それ以外の場合は0を出力する。尚、1ビットカウンタ308の詳細な構成は後述する。
有効/無効フラグ302は、実行開始アドレス格納レジスタ303の有効又は無効を示すフラグである。具体的には、実行開始アドレス格納レジスタ303が有効な場合、フラグは1が設定され、実行開始アドレス格納レジスタ303が無効な場合、フラグは0が設定される。
AND回路309は、実行開始アドレス格納レジスタ303の有効/無効フラグ302の値と、1ビットカウンタ308の出力値の論理積をとった値を出力する。
比較器B307は、ブレークポイント格納レジスタ304に設定(保持)されたブレークポイントBPと、プログラムカウンタ値PCとを比較し、第2の比較結果を出力する第2の比較器である。具体的には、比較器B307は、プログラムカウンタ値PCがブレークポイントBP以上になった場合に1を第2の比較結果として出力し、プログラムカウンタ値PCがブレークポイントBPより小さい場合に0を第2の比較結果として出力する。
有効/無効フラグ305は、ブレークポイント格納レジスタ304の有効又は無効を示すフラグである。具体的には、ブレークポイント格納レジスタ304が有効な場合、フラグは1が設定され、ブレークポイント格納レジスタ304が無効な場合、フラグは0が設定される。
AND回路310は、ブレークポイント格納レジスタ304の有効/無効フラグ305の値と、比較器B307の出力値の論理積をとった値を出力する。
OR回路311は、AND回路309とAND回路310の論理和をとった値を出力する。HWブレーク回路108は、OR回路311の出力が1の場合に、対象プログラム121の実行を中断する。
図3は、本実施の形態1にかかる1ビットカウンタ308の構成を示すブロック図である。1ビットカウンタ308は、NOT回路122と、XOR回路123と、JKフリップフロップ124と、AND回路125とを備える。
1ビットカウンタ308は、比較器A306からの信号を入力し、AND回路309へ信号を出力する。1ビットカウンタ308には、対象プログラム121の実行開始又は実行再開の直前にReset信号が入力される。Reset信号が入力されると、JKフリップフロップ124は初期化され、AND回路125に1を出力する。ここで、対象プログラム121の実行開始又は実行再開の直前は、比較器A306の出力が0であるため、AND回路125の出力は0となる。
JKフリップフロップ124のJ端子とK端子は、XOR回路123に接続されている。XOR回路123は、NOT回路122により常に両端子が異なる値となるため、常に出力が1となる。JKフリップフロップ124のJ端子及びK端子の両方を常に1にしておくことによって、比較器A306の条件が成立する度にJKフリップフロップ124の値が反転する。比較器A306の条件成立1回目では、JKフリップフロップ124からAND回路125への出力が0となり、1ビットカウンタ308の出力は0となる。比較器A306の条件成立2回目では、JKフリップフロップ124からAND回路125への出力が1となる。AND回路125は、比較器A306及びJKフリップフロップ124からの入力が共に1となるため、1ビットカウンタ308の値が1となる。よって、比較器A306の条件成立2回目のときにのみ1ビットカウンタ308の出力が1となる。
図1に戻り説明を続ける。デバッグ支援装置111は、通信I/F112と、CPU114と、ROM115と、RAM117と、通信I/F119とを備え、バス113を介して接続されている。ROM115は、デバッグ支援プログラム116を記憶する。デバッグ支援プログラム116は、本実施の形態にかかるデバッグ支援処理が実装されたコンピュータプログラムである。デバッグ支援プログラム116は、デバッグのための各種ルーチンの集合体である。
デバッグ支援プログラム116は、HWブレーク回路108の各フラグ(有効/無効フラグ302及び305)や各レジスタ(実行開始アドレス格納レジスタ303及びブレークポイント格納レジスタ304)や1ビットカウンタ308に設定する値を決めるルーチン(レジスタ等設定処理)とHWブレーク回路108により対象プログラム121の実行が中断したときに、対象プログラム121の実行再開か中断の維持かを判定する処理等が含まれる。デバッグ支援プログラム116は、通信I/F112を通じてMCU101に各種コマンドを送信する。
ここで、モニタプログラム105は、デバッグ支援プログラム116から送信されてきたコマンドを解析し、HWブレーク回路108の各フラグや各レジスタや1ビットカウンタ308に値を設定するルーチンが含まれる。
RAM117は、HWブレークポイント設定テーブル118を記憶する。HWブレークポイント設定テーブル118は、ユーザが設定した実行前PCブレークポイントを保存する情報である。尚、HWブレークポイント設定テーブル118には、ブレークポイントがアドレスの小さい順に並んでいるものとする。図4は、本実施の形態1にかかるHWブレークポイント設定テーブル118の構成例を示す図である。ここでは、例えば、大小関係がBP1<BP2<BP3であるものとする。
CPU114は、RAM117及びROM115に格納されたプログラム等を読み込み、実行を行う。特に、CPU114がROM115に格納されたデバッグ支援プログラム116を読み込み、実行を行うことにより、デバッグ制御部として機能するものといえる。通信I/F112は、バス113を介してデバッグ支援装置111内部の各構成と通信し、通信I/F110を介してMCU101と通信を行うインタフェースである。また、通信I/F119は、バス113を介してデバッグ支援装置111内部の各構成と通信し、コンピュータ端末120と通信を行うインタフェースである。
コンピュータ端末120は、ユーザが対象プログラム121のデバッグを行うために操作する情報処理装置である。コンピュータ端末120は、デバッグ支援装置111を介してMCU101内の対象プログラム121のデバッグを行い、結果を表示する。
ここで、本実施の形態1にかかるデバッグシステムは次のように表現することもできる。すなわち、デバッグシステムは、対象プログラム内の複数のブレークポイントを記憶する記憶部と、前記対象プログラムのデバッグを制御するデバッグ制御部と、前記対象プログラムの実行開始アドレスを保持する第1のレジスタと、前記実行開始アドレスより大きく、かつ、前記複数のブレークポイントに対応する複数のアドレスのうち最も小さいアドレスを保持する第2のレジスタと、を有するブレーク回路と、を備える。そして、前記ブレーク回路は、前記対象プログラムの実行中のプログラムカウンタ値が前記実行開始アドレス以下、又は、前記最も小さいアドレス以上の場合に、前記対象プログラムの実行を中断する。また、前記デバッグ制御部は、前記対象プログラムの実行中断時に、前記プログラムカウンタ値が前記複数のブレークポイントのいずれとも一致しない場合に、当該プログラムカウンタ値を前記実行開始アドレスとして前記第1のレジスタに設定し、当該プログラムカウンタ値より大きく、かつ、前記複数のブレークポイントのうち最も小さいアドレスを前記最も小さいアドレスとして前記第2のレジスタに設定し、当該対象プログラムの実行を前記実行開始アドレスから再開する。これにより、特許文献1における分岐トレース機構を省略することができ、回路構成を簡略化できる。
また、前記ブレーク回路は、前記第1のレジスタに設定された前記実行開始アドレスと、前記プログラムカウンタ値とを比較し、第1の比較結果を出力する第1の比較器と、前記第1の比較結果において前記プログラムカウンタ値が前記実行開始アドレス以下である条件が複数回成立した場合に、条件成立信号を出力するカウンタ回路と、前記第2のレジスタに設定された前記最も小さいアドレスと、前記プログラムカウンタ値とを比較し、第2の比較結果を出力する第2の比較器と、前記条件成立信号又は前記第2の比較結果に基づき前記対象プログラムの実行を中断させる中断信号を出力するOR回路と、をさらに有することが望ましい。これにより、第1の比較器における1回目の条件成立の場合には、対象プログラムの実行が中断されず、2回目の条件成立時において中断させることができる。そのため、特許文献1では、ブレークポイント検出機構と分岐トレース機構とが分かれていたものを、本実施の形態では、統一することができ、回路構成を簡略化できる。その上、デバッグ支援プログラムにおいて、ブレークポイントか分岐命令かの判定処理が不要となり、プログラム規模を縮小でき、信頼性を高めることができる。
さらに、前記カウンタ回路は、前記第1の比較結果において前記プログラムカウンタ値が前記実行開始アドレス以下である場合にカウンタを1ビット分加算し、当該カウンタがオーバーフローするごとに、前記条件成立信号を1として出力する1ビットカウンタであるとよい。
さらに、前記ブレーク回路は、前記第1のレジスタの有効無効を示す第1のフラグと、前記第2のレジスタの有効無効を示す第2のフラグと、をさらに有する。そして、前記デバッグ制御部は、前記複数のブレークポイントの中に、前記プログラムカウンタ値以下のアドレスが含まれる場合に、前記第1のフラグを有効に設定し、前記複数のブレークポイントの中に、前記プログラムカウンタ値より大きいアドレスが含まれる場合に、前記第2のフラグを有効に設定し、前記ブレーク回路は、前記第1のフラグが有効な場合に、前記第1の比較結果を有効とし、前記第2のフラグが有効な場合に、前記第2の比較結果を有効とすると良い。これにより、ブレークポイントが設定されていない範囲について不要なOR演算を行うことを抑制できる。
または、本実施の形態1にかかる半導体装置は次のように表現することもできる。すなわち、半導体装置は、複数のブレークポイントが設定された対象プログラムの実行開始アドレスを保持する第1のレジスタと、前記実行開始アドレスより大きく、かつ、前記複数のブレークポイントのうち最も小さいアドレスを保持する第2のレジスタと、前記第1のレジスタに設定された前記実行開始アドレスと、プログラムカウンタ値とを比較し、第1の比較結果を出力する第1の比較器と、前記第1の比較結果において前記プログラムカウンタ値が前記実行開始アドレス以下である条件が複数回成立した場合に、条件成立信号を出力するカウンタ回路と、前記第2のレジスタに設定された前記最も小さいアドレスと、前記プログラムカウンタ値とを比較し、第2の比較結果を出力する第2の比較器と、前記条件成立信号又は前記第2の比較結果に基づき前記対象プログラムの実行を中断させる中断信号を出力するOR回路と、を有する。これにより、特許文献1における分岐トレース機構を省略することができる。また、ブレークポイント検出機構と分岐トレース機構との処理を統一することができる。
図5は、本実施の形態1にかかるデバッグ支援処理の流れを示すフローチャートである。コンピュータ端末120は、ユーザの操作に応じてデバッグ支援処理を開始する。そして、デバッグ支援装置111のCPU114は、ROM115のデバッグ支援プログラム116を読み込み実行して、以下の処理を進める。
まず、デバッグ支援装置111は、レジスタ等設定処理を行う(S20)。ここで、図6は、本実施の形態1にかかるレジスタ等設定処理の流れを示すフローチャートである。デバッグ支援装置111は、HWブレーク回路108の実行開始アドレス格納レジスタ303に実行開始時のアドレスを設定し、1ビットカウンタ308に0を設定する(S11)。具体的には、CPU114は、通信I/F112及び通信I/F110を介して、MCU101へコマンドを送信し、モニタプログラム105を読み込んで実行しているCPU102が、HWブレーク回路108に対して上述した設定を行う。以降も同様である。
次に、デバッグ支援装置111は、実行開始アドレスRA以下にブレークポイントが設定されているか否かを判定する(S12)。すなわち、デバッグ支援装置111は、実行開始アドレスRA以下のアドレスがHWブレークポイント設定テーブル118に設定されているか否かを判定する。実行開始アドレスRA以下のアドレスがHWブレークポイント設定テーブル118に設定されている場合、デバッグ支援装置111は、有効/無効フラグ302に1を設定する(S13)。一方、ステップS12において、実行開始アドレスRA以下のアドレスがHWブレークポイント設定テーブル118に設定されていない場合、デバッグ支援装置111は、有効/無効フラグ302に0を設定する(S14)。
続いて、デバッグ支援装置111は、実行開始アドレスRAより後にブレークポイントが設定されているか否かを判定する(S15)。すなわち、デバッグ支援装置111は、実行開始アドレスRAより大きなアドレスがHWブレークポイント設定テーブル118に設定されているか否かを判定する。実行開始アドレスRAより大きなアドレスがHWブレークポイント設定テーブル118に設定されている場合、デバッグ支援装置111は、実行開始アドレスRAより大きく、かつ、実行開始アドレスRAに最も近い直近アドレスをブレークポイント格納レジスタ304に設定し、有効/無効フラグ305に1を設定する(S16)。一方、ステップS15において、実行開始アドレスRAより大きなアドレスがHWブレークポイント設定テーブル118に設定されていない場合、デバッグ支援装置111は、有効/無効フラグ305に0を設定する(S17)。
図5に戻り説明を続ける。その後、デバッグ支援装置111は、対象プログラム121の実行を開始する(S21)。このとき、CPU102は、対象プログラム121の現在のプログラムカウンタ値PCにおける命令を実行する。そして、デバッグ支援装置111は、対象プログラム121の実行が終了したか否かを判定する(S22)。HWブレーク回路108による実行の中断がない場合など、対象プログラム121の実行が終了した場合、当該デバッグ支援処理を終了する。一方、対象プログラム121の実行が終了しない場合、HWブレーク回路108は、現在のプログラムカウンタ値PCに応じて対象プログラム121の実行の中断を行うか否かを判定する。そして、デバッグ支援装置111は、HWブレーク回路108により対象プログラム121の実行が中断されたか否かを判定する(S23)。中断されていない場合、CPU102は、プログラムカウンタ値PCをカウントアップし(S28)、ステップS21へ戻る。
一方、HWブレーク回路108により対象プログラム121の実行が中断された場合、デバッグ支援装置111は、プログラムカウンタ値PCがブレークポイントのいずれかと一致するか否かを判定する(S24)。すなわち、デバッグ支援装置111は、HWブレークポイント設定テーブル118を参照し、プログラムカウンタ値PCと等しいブレークポイントが設定されているか否かを判定する。プログラムカウンタ値PCがブレークポイントのいずれかと一致する場合、デバッグ支援装置111は、コンピュータ端末120に対してその旨を通知し、各種デバッグ処理を行わせる(S25)。つまり、コンピュータ端末120は、ユーザの指示に応じて、対象プログラム121の状態等を参照及び更新する。
一方、ステップS24において、プログラムカウンタ値PCがブレークポイントのいずれとも一致しない場合、デバッグ支援装置111は、レジスタ等設定処理を行う(S26)。このとき、図6のステップS11において、デバッグ支援装置111は、実行開始アドレス格納レジスタ303に現在のプログラムカウンタ値PCを設定する。その他は、図6と同様である。ステップS26の後、デバッグ支援装置111は、対象プログラム121の実行を再開する(S27)。CPU102は、プログラムカウンタ値PCをカウントアップし(S28)、対象プログラム121の実行終了までステップS21からS28を繰り返す。
続いて、対象プログラム121の実行開始からHWブレーク回路108によるブレークポイント位置での中断までの実行例を以下に示す。
実行例(1):プログラム開始からブレークポイントまで分岐命令が発生しない場合
図7は、本実施の形態1にかかる実行例(1)における対象プログラムのアドレス設定例を示す図である。ここでは、HWブレークポイント設定テーブル118にブレークポイントとして、BP1(0001番地)、BP2(0007番地)、BP3(0011番地)が設定されている。そして、対象プログラム121の実行開始アドレスが0003番地である。この状態で対象プログラム121のデバッグ支援処理を開始した場合、以下の(1−1)、(1−2)、(1−3)の順に実行される。
(1−1)HWブレーク回路108への設定(S20)
デバッグ支援装置111は、実行開始アドレス格納レジスタ303に実行開始アドレス(0003番地)を設定する(S11)。また、デバッグ支援装置111は、1ビットカウンタ308に0を設定する(S11)。
デバッグ支援装置111は、実行開始アドレス以下にブレークポイントBP1があるため、有効/無効フラグ302に1を設定する(S13)。
デバッグ支援装置111は、ブレークポイント格納レジスタ304にBP2(0007番地)を設定する(S16)。
デバッグ支援装置111は、実行開始アドレスより後に直近ブレークポイントBP2があるため、有効/無効フラグ305に1を設定する(S16)。
(1−2)対象プログラム121の実行(S21)
実行開始直後は、プログラムカウンタ値PCが0003であるため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値が1になる。但し、1ビットカウンタ308のカウンタ値がオーバーフローしていないため、1ビットカウンタ308の出力は0のままである。また、このとき、比較器B307の条件も成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
そして、プログラムカウンタ値PCがカウントアップして(S28)、0007に到達するまで、比較器A306及び比較器B307の条件は成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
(1−3)対象プログラム121の実行中断
その後、プログラムカウンタ値PCが0007に到達したとき、比較器B307の条件が成立し、OR回路311の出力が1となる。よって、HWブレーク回路108は、対象プログラム121の実行を中断する。そして、デバッグ支援装置111は、プログラムカウンタ値PCが示すアドレス0007がHWブレークポイント設定テーブル118にBP2として設定されているため(S24でYES)、中断を維持する。これにより、コンピュータ端末120は、BP2における各種デバッグ処理(S25)が可能となる。
実行例(2):プログラム開始から直近のブレークポイントの間に分岐命令がある場合
図8は、本実施の形態1にかかる実行例(2)における対象プログラムのアドレス設定例を示す図である。ここでは、HWブレークポイント設定テーブル118にブレークポイントとして、BP1(0001番地)、BP2(0007番地)、BP3(0011番地)が設定されている。そして、対象プログラム121の実行開始アドレスが0003番地である。さらに、0005番地には、0009番地(A)への分岐命令がある。この状態で対象プログラム121のデバッグ支援処理を開始した場合、以下の(2−1)、(2−2)、(2−3)、(2−4)、(2−5)の順に実行される。
(2−1)HWブレーク回路108への設定(S20)
設定内容は、上記(1−1)と同様である。
(2−2)対象プログラム121の実行及び中断(S21)
実行開始直後は、プログラムカウンタ値PCが0003であるため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値が1になる。但し、1ビットカウンタ308のカウンタ値がオーバーフローしていないため、1ビットカウンタ308の出力は0のままである。また、このとき、比較器B307の条件も成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
そして、プログラムカウンタ値PCがカウントアップして(S28)、0005に到達すると、分岐命令が実行され、プログラムカウンタ値PCが分岐先の0009となる。そのため、比較器B307の条件が成立し、OR回路311の出力が1となる。よって、HWブレーク回路108は、対象プログラム121の実行を中断する。
(2−3)HWブレーク回路108への再設定(S26)
このとき、プログラムカウンタ値PCが示すアドレス0009がHWブレークポイント設定テーブル118に設定されていないため(S24でNO)、デバッグ支援装置111は、HWブレーク回路108へのレジスタ及びフラグの再設定を行う(S26)。
デバッグ支援装置111は、実行開始アドレス格納レジスタ303に実行開始アドレス(0009番地)を設定する(S11)。また、デバッグ支援装置111は、1ビットカウンタ308に0を設定する(S11)。
デバッグ支援装置111は、実行開始アドレス以下にブレークポイントBP2があるため、有効/無効フラグ302に1を設定する(S13)。
デバッグ支援装置111は、ブレークポイント格納レジスタ304にBP3(0011番地)を設定する(S16)。
デバッグ支援装置111は、実行開始アドレスより後に直近ブレークポイントBP3があるため、有効/無効フラグ305に1を設定する(S16)。
(2−4)対象プログラム121の実行の再開(S27)
実行再開直後は、プログラムカウンタ値PCが0009であるため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値が1になる。但し、1ビットカウンタ308のカウンタ値がオーバーフローしていないため、1ビットカウンタ308の出力は0のままである。また、このとき、比較器B307の条件も成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
そして、プログラムカウンタ値PCがカウントアップして(S28)、0011に到達するまで、比較器A306及び比較器B307の条件は成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
(2−5)対象プログラム121の実行中断
その後、プログラムカウンタ値PCが0011に到達したとき、比較器B307の条件が成立し、OR回路311の出力が1となる。よって、HWブレーク回路108は、対象プログラム121の実行を中断する。そして、デバッグ支援装置111は、プログラムカウンタ値PCが示すアドレス0011がHWブレークポイント設定テーブル118にBP3として設定されているため(S24でYES)、中断を維持する。これにより、コンピュータ端末120は、BP3における各種デバッグ処理(S25)が可能となる。
実行例(3):プログラム開始から直近のブレークポイントの間に分岐命令があり、分岐先が範囲外の場合
図9は、本実施の形態1にかかる実行例(3)における対象プログラムのアドレス設定例を示す図である。ここでは、HWブレークポイント設定テーブル118にブレークポイントとして、BP1(0001番地)、BP2(0007番地)、BP3(0011番地)が設定されている。そして、対象プログラム121の実行開始アドレスが0003番地である。さらに、0005番地には、0000番地(B)への分岐命令がある。この状態で対象プログラム121のデバッグ支援処理を開始した場合、以下の(3−1)、(3−2)、(3−3)、(3−4)、(3−5)の順に実行される。
(3−1)HWブレーク回路108への設定(S20)
設定内容は、上記(1−1)と同様である。
(3−2)対象プログラム121の実行及び中断(S21)
実行開始直後は、プログラムカウンタ値PCが0003であるため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値が1になる。但し、1ビットカウンタ308のカウンタ値がオーバーフローしていないため、1ビットカウンタ308の出力は0のままである。また、このとき、比較器B307の条件も成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
そして、プログラムカウンタ値PCがカウントアップして(S28)、0005に到達すると、分岐命令が実行され、プログラムカウンタ値PCが分岐先の0000となる。そのため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値がオーバーフローするため、1ビットカウンタ308の出力は1となる。よって、OR回路311の出力が1となり、HWブレーク回路108は、対象プログラム121の実行を中断する。
(3−3)HWブレーク回路108への再設定(S26)
このとき、プログラムカウンタ値PCが示すアドレス0000がHWブレークポイント設定テーブル118に設定されていないため(S24でNO)、デバッグ支援装置111は、HWブレーク回路108へのレジスタ及びフラグの再設定を行う(S26)。
デバッグ支援装置111は、実行開始アドレス格納レジスタ303に実行開始アドレス(0000番地)を設定する(S11)。また、デバッグ支援装置111は、1ビットカウンタ308に0を設定する(S11)。
デバッグ支援装置111は、実行開始アドレス以下にブレークポイントがないため、有効/無効フラグ302に0を設定する(S14)。
デバッグ支援装置111は、ブレークポイント格納レジスタ304にBP1(0001番地)を設定する(S16)。
デバッグ支援装置111は、実行開始アドレスより後に直近ブレークポイントBP1があるため、有効/無効フラグ305に1を設定する(S16)。
(3−4)対象プログラム121の実行の再開(S27)
実行再開直後は、プログラムカウンタ値PCが0000であるため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値が1になる。但し、1ビットカウンタ308のカウンタ値がオーバーフローしていないため、1ビットカウンタ308の出力は0のままである。また、このとき、比較器B307の条件も成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
(3−5)対象プログラム121の実行中断
その後、プログラムカウンタ値PCが0001に到達したとき、比較器B307の条件が成立し、OR回路311の出力が1となる。よって、HWブレーク回路108は、対象プログラム121の実行を中断する。そして、デバッグ支援装置111は、プログラムカウンタ値PCが示すアドレス0001がHWブレークポイント設定テーブル118にBP1として設定されているため(S24でYES)、中断を維持する。これにより、コンピュータ端末120は、BP1における各種デバッグ処理(S25)が可能となる。
実行例(4):プログラム開始から直近のブレークポイントの間に分岐命令があり、分岐先がプログラム開始位置の場合
図10は、本実施の形態1にかかる実行例(4)における対象プログラムのアドレス設定例を示す図である。ここでは、HWブレークポイント設定テーブル118にブレークポイントとして、BP1(0003番地)、BP2(0007番地)、BP3(0011番地)が設定されている。そして、対象プログラム121の実行開始アドレスが0003番地である。さらに、0005番地には、0003番地(C)への分岐命令がある。この状態で対象プログラム121のデバッグ支援処理を開始した場合、以下の(4−1)、(4−2)、(4−3)の順に実行される。
(4−1)HWブレーク回路108への設定(S20)
設定内容は、上記(1−1)と同様である。
(4−2)対象プログラム121の実行及び中断(S21)
実行開始直後は、プログラムカウンタ値PCが0003であるため、比較器A306の条件が成立し、1ビットカウンタ308のカウンタ値が1になる。但し、1ビットカウンタ308のカウンタ値がオーバーフローしていないため、1ビットカウンタ308の出力は0のままである。また、このとき、比較器B307の条件も成立しない。よって、OR回路311の出力も0となり、HWブレーク回路108は、対象プログラム121の実行を中断しない。
そして、プログラムカウンタ値PCがカウントアップして(S28)、0005に到達すると、分岐命令が実行され、プログラムカウンタ値PCが分岐先の0003となる。そのため、比較器B307の条件が成立し、OR回路311の出力が1となる。よって、HWブレーク回路108は、対象プログラム121の実行を中断する。
そして、デバッグ支援装置111は、プログラムカウンタ値PCが示すアドレス0003がHWブレークポイント設定テーブル118にBP1として設定されているため(S24でYES)、中断を維持する。これにより、コンピュータ端末120は、BP1における各種デバッグ処理(S25)が可能となる。
<実施の形態2>
本実施の形態2は、上述した実施の形態1の変形例である。本実施の形態2にかかるカウンタ回路は、前記第1のフラグが有効な場合に、前記条件成立信号を出力するものである。言い換えると、本実施の形態2にかかる1ビットカウンタは、前記第1のフラグが有効な場合に、前記カウントを行い、前記オーバーフロー信号を出力するものである。
図11は、本実施の形態2にかかるHWブレーク回路401の構成を示すブロック図である。HWブレーク回路401は、実施の形態1で示した図2のHWブレーク回路108から、1ビットカウンタ308とAND回路309の位置を入れ替えた回路である。そして、それ以外の構成はHWブレーク回路108と同様である。
ここで、図2のHWブレーク回路108では、有効/無効フラグ302の値に関係なく、比較器A306の出力が1のときに1ビットカウンタ308はカウンタ値に1を加算する動作を行う。よって、その点においては無駄な電力を消費することになる。一方、本実施の形態2にかかるHWブレーク回路401では、有効/無効フラグ302の値が0のときには、AND回路309が0を出力する。この場合、1ビットカウンタ308は、カウンタ値に1を加算する動作を行わない。よって、HWブレーク回路108と比べて消費電力を抑えつつ、同様の効果を奏することができる。
<実施の形態3>
本実施の形態3は、上述した実施の形態1又は2の改良例である。本実施の形態3にかかる記憶部は、前記複数のブレークポイントのそれぞれに対応させて、前記プログラムカウンタ値が一致した回数である一致回数と、当該一致回数の上限回数とをさらに記憶する。また、前記デバッグ制御部は、前記プログラムカウンタ値が前記複数のブレークポイントのいずれかと一致した場合に、当該一致したブレークポイントに対応する前記一致回数を加算し、当該加算後の一致回数が対応する前記上限回数に達した場合に、前記対象プログラムの実行の中断を維持する。例えば、ループ処理内のアドレスにブレークポイントを設定する場合、当該アドレスに到達する度に対象プログラム121の実行を中断する必要がなく、数回に一回だけ中断させて状態を確認すれば十分な場合等に役立つ。そのため、ブレークポイントごとに柔軟なデバッグを行うことができる。
図12は、本実施の形態3にかかるHWブレークポイント設定テーブル501の構成例を示す図である。HWブレークポイント設定テーブル501は、ブレークポイント設定領域502と、パスカウント領域503と、成立回数格納領域504とをそれぞれ示す領域を備える。ブレークポイント設定領域502は、ブレークポイントのアドレスを設定する領域である。パスカウント領域503は、各ブレークポイントに何回到達した場合(条件が成立した場合)に対象プログラム121の実行を中断させるかを示すパスカウンタを設定する領域である。成立回数格納領域504は、各ブレークポイントにプログラムカウンタ値PCが到達して条件が成立した回数を示す成立回数を格納する領域である。
図13は、本実施の形態3にかかるデバッグ支援処理の流れを示すフローチャートである。まず、ステップS20におけるレジスタ等設定処理において、各ブレークポイントの成立回数格納領域504の値を0に設定する。そして、ステップS24でYESの場合に、デバッグ支援装置111は、一致するブレークポイントの成立回数に1加算する(S28)。その後、デバッグ支援装置111は、成立回数がパスカウンタ以上であるか否かを判定する(S29)。成立回数がパスカウンタ以上の場合、ステップS25へ進み、成立回数がパスカウンタ未満の場合、ステップS27へ進む。
<実施の形態4>
本実施の形態4は、上述した実施の形態1乃至3の改良例である。本実施の形態4において、前記第1及び第2のレジスタのビット数は、前記プログラムカウンタ値のビット数より大きい。また、前記第1の比較器は、前記第1のレジスタに設定された前記実行開始アドレスと、前記プログラムカウンタ値とを符号付きで比較し、前記第2の比較器は、前記第2のレジスタに設定された前記最も小さいアドレスと、前記プログラムカウンタ値とを符号無しで比較する。これにより、実施の形態1乃至3におけるHWブレーク回路の有効/無効フラグ302及び305、AND回路309及び310を省略することができる。よって、回路規模を小さくし、消費電力を少なくすることができる。
図14は、本実施の形態4にかかるHWブレーク回路601の構成を示すブロック図である。HWブレーク回路601は、実行開始アドレス格納レジスタ602と、ブレークポイント格納レジスタ603と、比較器A604と、比較器B605と、1ビットカウンタ606と、OR回路607とを備える。
実行開始アドレス格納レジスタ602は、プログラムカウンタ値PCより1ビット大きいレジスタであり、最上位ビットを0又は1とし、以降に実行開始アドレスが設定される。比較器A604は、実行開始アドレスRAaとプログラムカウンタ値PCとを符号付きで比較し、比較結果を1ビットカウンタ606へ出力する。1ビットカウンタ606は、1ビットカウンタ308と同様である。
ブレークポイント格納レジスタ603は、プログラムカウンタ値PCより1ビット大きいレジスタであり、最上位ビットを0又は1とし、以降に直近のブレークポイントが設定される。比較器B605は、ブレークポイントBPaとプログラムカウンタ値PCとを符号なしで比較し、比較結果をOR回路607へ出力する。OR回路607は、1ビットカウンタ606と比較器B605の論理和をとった値を出力する。HWブレーク回路601は、OR回路607の出力が1の場合に、対象プログラム121の実行を中断する。
図15は、本実施の形態4にかかるレジスタ等設定処理の流れを示すフローチャートである。まず、デバッグ支援装置111は、1ビットカウンタ606に0を設定する(S31)。次に、デバッグ支援装置111は、実行開始アドレスRA以下にブレークポイントが設定されているか否かを判定する(S32)。実行開始アドレスRA以下にブレークポイントが設定されている場合、デバッグ支援装置111は、実行開始アドレス格納レジスタ602に、最上位ビット0及びプログラムカウンタ値PCを設定する(S33)。一方、ステップS32において、実行開始アドレスRA以下にブレークポイントが設定されていない場合、デバッグ支援装置111は、実行開始アドレス格納レジスタ602の最上位ビットに1を設定する(S34)。
続いて、デバッグ支援装置111は、実行開始アドレスRAより後にブレークポイントが設定されているか否かを判定する(S35)。実行開始アドレスRAより後にブレークポイントが設定されている場合、デバッグ支援装置111は、最上位ビット0及び実行開始アドレスRAより大きく、かつ、実行開始アドレスRAに最も近い直近アドレスをブレークポイント格納レジスタ603に設定する(S36)。一方、ステップS35において、実行開始アドレスRAより後にブレークポイントが設定されていない場合、デバッグ支援装置111は、ブレークポイント格納レジスタ603の最上位ビットに1を設定する(S37)。
ステップS34のように、実行開始アドレス格納レジスタ602の最上位ビットに1を設定することにより、符号付きで比較を行う比較器A604においては、実行開始アドレスRAaの値が負数として扱われる。そのため、実行開始アドレスRAaは、プログラムカウンタ値PCより常に小さくなり、比較器A604の出力は常に0となる。つまり、図2で有効/無効フラグ302に0が設定された場合と同じ効果を得ることができる。
また、ステップS37のように、ブレークポイント格納レジスタ603の最上位ビットに1を設定することにより、符号なしで比較を行う比較器B605においては、ブレークポイントBPaがプログラムカウンタ値PCより常に大きい値となる。そのため、比較器B605の出力は常に0となる。つまり、図2で有効/無効フラグ305に0が設定された場合と同じ効果を得ることができる。
<実施の形態5>
本実施の形態5は、上述した実施の形態1乃至4の変形例である。
図16は、本実施の形態5にかかるデバッグシステム100aの全体構成を示すブロック図である。デバッグシステム100aは、MCU131と、コンピュータ端末120とを備える。MCU131は、CPU102と、RAM103と、ROM104と、I/O106と、デバッグ回路107と、通信I/F110とを備え、バス109を介して接続されている。尚、図1と同等の構成には同一の符号を付し、詳細な説明を省略する。
RAM103は、HWブレークポイント設定テーブル132を記憶する。HWブレークポイント設定テーブル132は、コンピュータ端末120から通信I/F110及びバス109を介して設定される。ROM104は、モニタプログラム105と、デバッグ支援プログラム133と、対象プログラム121とを記憶する。デバッグ支援プログラム133は、コンピュータ端末120から通信I/F110及びバス109を介して起動される。この場合、CPU102がROM104に格納されたデバッグ支援プログラム133を読み込み、実行を行うことにより、デバッグ制御部として機能するものといえる。
このように、MCU131に内蔵のRAM103にデバッグ支援プログラム133を配置し、RAM103にHWブレークポイント設定テーブル132を配置することにより、デバッグ支援装置111を用いなくとも、上述した実施の形態1乃至4と同様の効果を実現できる。さらに、図16では、デバッグ支援装置111を用いないため、図1と比べて安価にデバッグシステムを構築することができる。
<その他の実施の形態>
尚、上述した実施の形態1乃至4は、実施の形態5と比べて、MCU内蔵のROMやRAMにデバッグ支援プログラムやHWブレークポイントを格納するための領域が不要となるため、デバッグ対象のプログラムに使用するためのメモリ領域を十分に割り当てることができる、という効果も奏する。
また、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、CPU(Central Processing Unit)等のプロセッサにコンピュータプログラムを実行させることにより実現することも可能である。
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
100 デバッグシステム
100a デバッグシステム
101 MCU
102 CPU
103 RAM
104 ROM
105 モニタプログラム
106 I/O
107 デバッグ回路
108 HWブレーク回路
109 バス
110 通信I/F
111 デバッグ支援装置
112 通信I/F
113 バス
114 CPU
115 ROM
116 デバッグ支援プログラム
117 RAM
118 HWブレークポイント設定テーブル
119 通信I/F
120 コンピュータ端末
121 対象プログラム
122 NOT回路
123 XOR回路
124 JKフリップフロップ
125 AND回路
131 MCU
132 HWブレークポイント設定テーブル
133 デバッグ支援プログラム
302 有効/無効フラグ
303 実行開始アドレス格納レジスタ
304 ブレークポイント格納レジスタ
305 有効/無効フラグ
306 比較器A
307 比較器B
308 1ビットカウンタ
309 AND回路
310 AND回路
311 OR回路
401 HWブレーク回路
501 HWブレークポイント設定テーブル
502 ブレークポイント設定領域
503 パスカウント領域
504 成立回数格納領域
601 HWブレーク回路
602 実行開始アドレス格納レジスタ
603 ブレークポイント格納レジスタ
604 比較器A
605 比較器B
606 1ビットカウンタ
607 OR回路
PC プログラムカウンタ値
RA 実行開始アドレス
BP ブレークポイント
RAa 実行開始アドレス
BPa ブレークポイント

Claims (8)

  1. 対象プログラム内の複数のブレークポイントを記憶する記憶部と、
    前記対象プログラムのデバッグを制御するデバッグ制御部と、
    前記対象プログラムの実行開始アドレスを保持する第1のレジスタと、前記実行開始アドレスより大きく、かつ、前記複数のブレークポイントに対応する複数のアドレスのうち最も小さいアドレスを保持する第2のレジスタと、を有するブレーク回路と、
    を備え、
    前記ブレーク回路は、
    前記対象プログラムの実行中のプログラムカウンタ値が前記実行開始アドレス以下、又は、前記最も小さいアドレス以上の場合に、前記対象プログラムの実行を中断し、
    前記デバッグ制御部は、
    前記対象プログラムの実行中断時に、
    前記プログラムカウンタ値が前記複数のブレークポイントのいずれとも一致しない場合に、当該プログラムカウンタ値を前記実行開始アドレスとして前記第1のレジスタに設定し、当該プログラムカウンタ値より大きく、かつ、前記複数のブレークポイントのうち最も小さいアドレスを前記最も小さいアドレスとして前記第2のレジスタに設定し、当該対象プログラムの実行を前記実行開始アドレスから再開する
    デバッグシステム。
  2. 前記ブレーク回路は、
    前記第1のレジスタに設定された前記実行開始アドレスと、前記プログラムカウンタ値とを比較し、第1の比較結果を出力する第1の比較器と、
    前記第1の比較結果において前記プログラムカウンタ値が前記実行開始アドレス以下である条件が複数回成立した場合に、条件成立信号を出力するカウンタ回路と、
    前記第2のレジスタに設定された前記最も小さいアドレスと、前記プログラムカウンタ値とを比較し、第2の比較結果を出力する第2の比較器と、
    前記条件成立信号又は前記第2の比較結果に基づき前記対象プログラムの実行を中断させる中断信号を出力するOR回路と、
    をさらに有する
    請求項1に記載のデバッグシステム。
  3. 前記カウンタ回路は、前記第1の比較結果において前記プログラムカウンタ値が前記実行開始アドレス以下である場合にカウンタを1ビット分加算し、当該カウンタがオーバーフローするごとに、前記条件成立信号を1として出力する1ビットカウンタである、
    請求項2に記載のデバッグシステム。
  4. 前記ブレーク回路は、
    前記第1のレジスタの有効無効を示す第1のフラグと、
    前記第2のレジスタの有効無効を示す第2のフラグと、
    をさらに有し、
    前記デバッグ制御部は、
    前記複数のブレークポイントの中に、前記プログラムカウンタ値以下のアドレスが含まれる場合に、前記第1のフラグを有効に設定し、
    前記複数のブレークポイントの中に、前記プログラムカウンタ値より大きいアドレスが含まれる場合に、前記第2のフラグを有効に設定し、
    前記ブレーク回路は、
    前記第1のフラグが有効な場合に、前記第1の比較結果を有効とし、
    前記第2のフラグが有効な場合に、前記第2の比較結果を有効とする、
    請求項2に記載のデバッグシステム。
  5. 前記カウンタ回路は、前記第1のフラグが有効な場合に、前記条件成立信号を出力する
    請求項4に記載のデバッグシステム。
  6. 前記記憶部は、前記複数のブレークポイントのそれぞれに対応させて、前記プログラムカウンタ値が一致した回数である一致回数と、当該一致回数の上限回数とをさらに記憶し、
    前記デバッグ制御部は、前記プログラムカウンタ値が前記複数のブレークポイントのいずれかと一致した場合に、当該一致したブレークポイントに対応する前記一致回数を加算し、当該加算後の一致回数が対応する前記上限回数に達した場合に、前記対象プログラムの実行の中断を維持する
    請求項1に記載のデバッグシステム。
  7. 前記第1及び第2のレジスタのビット数は、前記プログラムカウンタ値のビット数より大きく、
    前記第1の比較器は、前記第1のレジスタに設定された前記実行開始アドレスと、前記プログラムカウンタ値とを符号付きで比較し、
    前記第2の比較器は、前記第2のレジスタに設定された前記最も小さいアドレスと、前記プログラムカウンタ値とを符号無しで比較する
    請求項2に記載のデバッグシステム。
  8. 複数のブレークポイントが設定された対象プログラムの実行開始アドレスを保持する第1のレジスタと、
    前記実行開始アドレスより大きく、かつ、前記複数のブレークポイントのうち最も小さいアドレスを保持する第2のレジスタと、
    前記第1のレジスタに設定された前記実行開始アドレスと、プログラムカウンタ値とを比較し、第1の比較結果を出力する第1の比較器と、
    前記第1の比較結果において前記プログラムカウンタ値が前記実行開始アドレス以下である条件が複数回成立した場合に、条件成立信号を出力するカウンタ回路と、
    前記第2のレジスタに設定された前記最も小さいアドレスと、前記プログラムカウンタ値とを比較し、第2の比較結果を出力する第2の比較器と、
    前記条件成立信号又は前記第2の比較結果に基づき前記対象プログラムの実行を中断させる中断信号を出力するOR回路と、
    を有する半導体装置。
JP2017020311A 2017-02-07 2017-02-07 デバッグシステム及び半導体装置 Pending JP2018128767A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017020311A JP2018128767A (ja) 2017-02-07 2017-02-07 デバッグシステム及び半導体装置
US15/840,437 US10496521B2 (en) 2017-02-07 2017-12-13 Debug system and semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017020311A JP2018128767A (ja) 2017-02-07 2017-02-07 デバッグシステム及び半導体装置

Publications (1)

Publication Number Publication Date
JP2018128767A true JP2018128767A (ja) 2018-08-16

Family

ID=63037181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017020311A Pending JP2018128767A (ja) 2017-02-07 2017-02-07 デバッグシステム及び半導体装置

Country Status (2)

Country Link
US (1) US10496521B2 (ja)
JP (1) JP2018128767A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102350146B1 (ko) * 2021-07-30 2022-01-12 주식회사 포스로직 안티 디버깅 방법 및 이러한 방법을 수행하는 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2653412B2 (ja) 1992-09-22 1997-09-17 工業技術院長 ブレークポイント設定方法
US5850562A (en) * 1994-06-27 1998-12-15 International Business Machines Corporation Personal computer apparatus and method for monitoring memory locations states for facilitating debugging of post and BIOS code
US6182208B1 (en) * 1998-08-14 2001-01-30 Lucent Technologies, Inc. System for debugging (N) break points by dividing a computer program to (n+1) regions each contains no break point and using two registers to define the start and end addresses of each region
US20050010908A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method, apparatus and computer program product for implementing breakpoint based performance measurement
US20050060690A1 (en) * 2003-09-15 2005-03-17 Kuo-Jung Tung Microprocessor system with software emulation processed by auxiliary hardware
US20060200807A1 (en) * 2005-03-03 2006-09-07 International Business Machines Corporation Breakpoint timers
US7991985B2 (en) * 2006-12-22 2011-08-02 Broadcom Corporation System and method for implementing and utilizing a zero overhead loop
US7870430B2 (en) * 2008-02-29 2011-01-11 Freescale Semiconductor, Inc. Method and apparatus for sharing debug resources
US8024620B2 (en) * 2008-07-25 2011-09-20 Freescale Semiconductor, Inc. Dynamic address-type selection control in a data processing system
US9395983B2 (en) * 2008-08-20 2016-07-19 Freescale Semiconductor, Inc. Debug instruction for execution by a first thread to generate a debug event in a second thread to cause a halting operation
JP5526725B2 (ja) * 2009-11-20 2014-06-18 富士通株式会社 ハードウェアブレークポイントを用いたデバッグ方法、デバッグ処理プログラム及びデバッグ装置
US20110154111A1 (en) * 2009-12-23 2011-06-23 International Business Machines Corporation Memory Based Hardware Breakpoints
US10102050B2 (en) * 2015-02-05 2018-10-16 Microchip Technology Incorporated System and method for generating cross-core breakpoints in a multi-core microcontroller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102350146B1 (ko) * 2021-07-30 2022-01-12 주식회사 포스로직 안티 디버깅 방법 및 이러한 방법을 수행하는 장치

Also Published As

Publication number Publication date
US20180225193A1 (en) 2018-08-09
US10496521B2 (en) 2019-12-03

Similar Documents

Publication Publication Date Title
CN112000370B (zh) 循环指令的处理方法、装置、设备和存储介质
EP3754492A1 (en) Interrupt system for risc-v architecture
CN109086193B (zh) 监控方法、装置及系统
US9626281B2 (en) Call stack display with program flow indication
CN107526622B (zh) Linux的快速异常处理方法及装置
CN110955503B (zh) 任务调度方法及装置
US20120110383A1 (en) Method and apparatus for off-line analyzing crashed programs
EP3819758A2 (en) Instruction executing method and apparatus, electronic device, and computer-readable storage medium
RU2432601C2 (ru) Метод внедрения детерминизма среди множества интервалов тактирования
JP2018128767A (ja) デバッグシステム及び半導体装置
US20140095859A1 (en) Apparatus and method for managing register information in a processing system
JPS63279328A (ja) 仮想計算機システムのゲスト実行制御方式
CN101196847A (zh) Cpu程序存储器自动维护的方法及硬件单元结构
CN113342376B (zh) 一种针对物联网设备的操作系统进行升级的方法及装置
CN114416483A (zh) 多处理单元的运行状态监控方法、装置、存储介质及设备
US20080133838A1 (en) Data processing device
CN110008071B (zh) 一种远程调试装置及方法
JP2017162135A (ja) 情報処理装置、デバッグシステムおよびスタックオーバフロー検出方法
JP2009163531A (ja) 割り込み管理機構およびマイクロコンピュータ
KR20210108466A (ko) 시퀀스 프로세싱 유닛이 있는 메모리 제어 시스템
JP2013109652A (ja) コンパイラ、そのコンパイラによって作成されたプログラムモジュールの制御方法、及び、その制御方法を実現する制御装置
CN106021041B (zh) 基于有限状态机的多周期非流水线cpu调试方法
US20100064174A1 (en) Data processing system and debug method
CN114780283A (zh) 一种故障处理的方法及装置
JP2019020931A (ja) 処理速度整合回路およびマイクロプロセッサ