(57)【要約】【課題】マイコン内部に新規な回路を追加せずに、割り込みのモニタを実現可能とする。【解決手段】モニタシステム１は、制御対象と、その制御対象を制御するマイコン１１と、を搭載し、モニタ対象装置２と、モニタ対象装置２上で発生する割り込みをモニタするモニタ装置３と、を備える。マイコン１１は、モニタ対象装置２上で割り込みが発生した場合に、割り込みの発生を示す割り込み開始通知をモニタ装置３に通知する命令と、その割り込みの終了を示す割り込み終了通知をモニタ装置３に通知する命令と、を含む命令が記述されたコードを記憶するメモリを備える。マイコン１１は、割り込みが発生すると、メモリに記憶されたコードに含まれる命令を実行し、モニタ装置３は、マイコン１１からの割り込み開始通知及び前記割り込み終了通知に基づいて、モニタ対象装置２上で発生する割り込みをモニタする。【選択図】図１
2012168693.tif 000002
【特許請求の範囲】
【請求項１】
制御対象と、当該制御対象を制御するマイクロコンピュータと、を搭載し、モニタを行う対象であるモニタ対象装置と、
前記モニタ対象装置上において発生する割り込みをモニタするモニタ装置と、を備え、
前記マイクロコンピュータは、
前記モニタ対象装置上において割り込みが発生した場合に、前記割り込みの発生を示す割り込み開始通知を前記モニタ装置に通知する命令と、当該割り込みの終了を示す割り込み終了通知を前記モニタ装置に通知する命令と、を含む命令が記述されたコードを記憶するメモリを備え、
前記割り込みが発生すると、前記メモリに記憶されたコードに含まれる命令を実行し、
前記モニタ装置は、
前記マイクロコンピュータからの前記割り込み開始通知及び前記割り込み終了通知に基づいて、前記モニタ対象装置上において発生する割り込みをモニタする
ことを特徴とするモニタシステム。
【請求項２】
各割り込みに要因に対して重複しない識別番号が予め定義されており、
前記割り込み開始通知を前記モニタ装置に通知する命令が、
前記割り込みに対応する識別番号を前記モニタ装置に通知する命令である
ことを特徴とする請求項１に記載のモニタシステム。
【請求項３】
前記割り込み終了通知を前記モニタ装置に通知する命令が、
前記割り込みに対する処理が完了した場合に、当該割り込みの完了を示す信号を前記モニタ装置へと通知する命令である
ことを特徴とする請求項１又は２に記載のモニタシステム。
【請求項４】
前記モニタ装置は、
デバッグエミュレータと、当該デバッグエミュレータを介して前記モニタ対象装置上において発生する割り込みをモニタするホストコンピュータと、を備え、
前記デバッグエミュレータは、
前記マイクロコンピュータから前記割り込み開始通知を受取った場合に、前記割り込みに対応する識別番号を保持すると共に、当該保持する識別番号を前記ホストコンピュータに対して通知し、前記マイクロコンピュータからの前記割り込み終了通知を受取った場合に、前記保持した識別番号を前記ホストコンピュータに対して通知し、
前記ホストコンピュータは、
前記デバッグエミュレータから通知される前記割り込み開始通知時における前記識別番号と、前記割り込み終了通知時における前記識別番号と、に基づいて、前記モニタ対象装置上において発生する割り込みをモニタする
ことを特徴とする請求項２又は３に記載のモニタシステム。
【請求項５】
前記デバッグエミュレータは、
前記マイクロコンピュータから前記割り込み開始通知及び前記割り込み終了通知を受取った場合に、受取ったタイミングをそれぞれ計測するタイマを備え、
前記マイクロコンピュータから前記割り込み開始通知を受取った場合に、前記タイマにより計測したタイミングを前記ホストコンピュータに対して通知し、前記マイクロコンピュータからの前記割り込み終了通知を受取った場合に、前記タイマにより計測したタイミングを前記ホストコンピュータに対して通知し、
前記ホストコンピュータは、
前記デバッグエミュレータから通知される前記割り込み開始通知時における前記識別番号及び前記タイミングと、前記割り込み終了通知時における前記識別番号及び前記タイミングと、に基づいて、前記モニタ対象装置上における割り込み発生の検出及び割り込み処理時間の計測を行う
ことを特徴とする請求項４に記載のモニタシステム。
【請求項６】
前記タイマは、
時間経過と共に一定の割合でカウント値を増加又は減少させ、所定のカウント値になったらリセットを行うフリーランタイマである
ことを特徴とする請求項５に記載のモニタシステム。
【請求項７】
前記メモリに記憶されたコードは、
割り込みベクタと、割り込み処理を行う割り込みハンドラと、に領域が分けられており、
前記割り込みベクタは、
前記割り込みハンドラへとジャンプするジャンプ命令を含み、
前記割り込み開始通知を前記モニタ装置に通知する命令が、
前記割り込みベクタにおける前記ジャンプ命令の直前に記述される
ことを特徴とする請求項１乃至６いずれか１項に記載のモニタシステム。
【請求項８】
前記割り込みハンドラは、
前記割り込み割り込みに対応した処理を実行する割り込み処理ルーチンと、前記割り込み発生時に実行中のアドレスへと前記プログラムカウンタを移動させるリターン命令と、を含み、
前記割り込み終了通知を前記モニタ装置に通知する命令が、
前記割り込みハンドラにおける前記リターン命令の直前に記述される
ことを特徴とする請求項７に記載のモニタシステム。
【請求項９】
制御対象と、当該制御対象を制御するマイクロコンピュータと、を搭載し、モニタを行う対象であるモニタ対象装置と、前記モニタ対象装置上において発生する割り込みをモニタするモニタ装置と、を備えるモニタシステムのモニタ方法であって、
前記モニタ対象装置上において割り込みが発生した場合に、前記割り込みの発生を示す割り込み開始通知を、前記マイクロコンピュータから前記モニタ装置に通知するステップと、
当該割り込みの終了を示す割り込み終了通知を、前記マイクロコンピュータから前記モニタ装置に通知するステップと、
前記モニタ装置により、前記マイクロコンピュータからの前記割り込み開始通知及び前記割り込み終了通知に基づいて、前記モニタ対象装置上において発生する割り込みをモニタするステップと、
を含むモニタ方法。
【請求項１０】
モニタを行う対象であるモニタ対象装置に搭載され、当該モニタ対象装置に搭載される制御対象を制御するマイクロコンピュータであって、
前記モニタ対象装置上において割り込みが発生した場合に、前記割り込みの発生を示す割り込み開始通知を前記モニタ装置に通知する命令と、当該割り込みの終了を示す割り込み終了通知を前記モニタ装置に通知する命令と、を含む命令が記述されたコードを記憶するメモリを備え、
前記割り込みが発生すると、前記メモリに記憶されたコードに含まれる命令を実行し、前記割り込み開始通知及び前記割り込み終了通知を外部のモニタ装置に出力する
ことを特徴とするマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モニタシステム、モニタ方法、マイクロコンピュータに関し、特に、新規な回路を追加することなしに割り込みのモニタを実現可能とする技術に関する。
【背景技術】
【０００２】
一般的に、マイクロコンピュータ（以下、マイコンと称する。）に組み込むソフトウェア（以下、ユーザコードと称する。）を開発する際には、制御・通信を行う対象機器とそのマイコン（以下、ターゲットシステムと称する。）がどのように振舞うかを実機上で確認しながら、ユーザコードを修正・改変（以下、デバッグと称する。）して完成させる。
【０００３】
ターゲットシステム上では、マイコンに制御される機器・部品が、操作タイミング等を通知する信号（以下、割り込み信号と称する。）を、マイコンに対して不定期的に通知する。
【０００４】
割り込み信号に応じてマイコンが適切な制御を行うことで、ターゲットシステムは目的の動作を実行することができる。つまり、デバッグ作業の大半は、如何に適切に割り込み信号に応答して適切な操作を行うユーザコードを作り込むか、に費やされる。
【０００５】
このようなデバッグ作業に用いる開発ツールの一つとして、オンチップデバッグエミュレータ（以下、OCDエミュレータと称する。）という装置がある。OCDエミュレータは、OCDエミュレータを接続したパーソナルコンピュータ（以下、ホストPCと称する。）と、マイコンとを中継するハードウェアである。OCDエミュレータは、ホストPC上のソフトウェア（以下、デバッガと称する。）に基づいて、マイコン内部の情報を表示したり、マイコンへ動作指示を送ったりすることができる。
【０００６】
OCDエミュレータを使用する際には、マイコンに組み込むソフトウェアとして、ユーザコードの他に、OCDエミュレータとマイコン間の通信用ソフトウェア（以下、モニタコードと称する。）を追加する必要がある。モニタコードのコードサイズは数十から数百バイトであり、昨今のマイコンに内蔵されている書き換え可能な不揮発性メモリ（以下、内蔵フラッシュROMと称する。）の記憶容量と比較すると、十分許容される大きさである。
【０００７】
なお、本発明に関連する他の技術として、特許文献１には、割り込み処理時間の測定を可能とすることを目的として、マイコン内の割り込みコントローラとCPUコアとの間に、「割り込み診断回路」を追加した割り込み回路が開示されている。当該「割り込み診断回路」は、割り込みコントローラからの割り込み要求信号と、CPUコアからの割り込み受付信号と、CPUコアからの割り込み実行信号と、CPUコアからの割り込み終了信号と、に基づいて、それぞれの信号が発生した瞬間のマイコン内部のタイマのカウント値を、別々のレジスタへとそれぞれキャプチャするものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許３１３３７３０号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
OCDエミュレータを使用してデバッグ作業を行う場合、プログラム実行を一時停止させる細工（以下、ブレイクポイントと称する。）をユーザコード内に入れることで、割り込み発生を把握することができる。より具体的には、割り込み信号の発生に応じてユーザコード内で即時実行される部分（以下、割り込み処理ルーチンと称する。）において、その任意の場所にブレイクポイントを入れることで、割り込み発生を把握することができる。そして、一時停止した箇所から一行分に対応するユーザコードを実行（以下、ステップ実行と称する。）することで、ユーザコードが適切であるかどうかを確かめることができる。
【００１０】
しかしながら、この方法では、割り込み信号の検出や、割り込み処理ルーチンの実行にかかる時間の計測ができないため、フィードバック制御のように、ユーザコードによる割り込み処理ルーチンが何秒間隔で起きているか、何秒以内に終了しているか、を把握することが重要となる場合には適していない。
【００１１】
この問題を解決するには、オシロスコープやロジックアナライザを用いて割り込み信号の電圧レベルを別途観測するという手段がある。しかし、ターゲットシステムの基板上に電気的に触れることができる部分を確保できない場合には適していない。
【００１２】
さらに、割り込み信号はマイコンの外部のみならず内部（パッケージに封入されているシリコンチップ内を意味する）でも発生しており（以下、内部割り込み信号と称する。）、これについては電気的に触れることでの観測は不可能である。
【００１３】
また、OCDエミュレータを用いてのデバッグ作業や、オシロスコープやロジックアナライザを用いてのデバッグ作業に共通する問題点として、優先順位に応じて実行中の割り込み処理ルーチンを中断し、別の割り込み処理ルーチンを実行する（以下、多重割り込み処理と称する。）場合には、この多重割り込みの関係を把握できないことが挙げられる。
【００１４】
なお、特許文献１に開示された割り込み回路によれば、割り込み診断回路の結果をデバッガソフトウェアで解析することで、正確な処理時間を算出することができる。また、どの割り込み信号をキャプチャ対象にするかについて、CPUコアから割り込み診断回路に対して指定することができる。さらに、この仕組によれば、キャプチャレジスタを増やすことで、多重割り込みにも対応することができる。
【００１５】
しかし、近年では、マイコンの低価格化が進行していることや、ターゲットシステムの小型化の進行に伴い、マイコン自体も物理的に小さくすることが求められている。このため、特許文献１に開示された技術のように、「割り込み診断回路」や「タイマ」なるデバッグ用の回路をマイコンのシリコンに追加することは、チップ面積の増大や、マイコンのデバイスとしての単価上昇の要因になり、小型、低価格という現在の商流には適していない。
【００１６】
本発明は、上記事情を鑑みてなされたものであり、マイコン内部に新規な回路を追加せずに、多重割り込みを含む割り込みのモニタを実現可能とする技術を提供するものである。
【課題を解決するための手段】
【００１７】
本発明の第１の態様に係るモニタシステムは、制御対象と、当該制御対象を制御するマイクロコンピュータと、を搭載し、モニタを行う対象であるモニタ対象装置と、前記モニタ対象装置上において発生する割り込みをモニタするモニタ装置と、を備え、前記マイクロコンピュータは、前記モニタ対象装置上において割り込みが発生した場合に、前記割り込みの発生を示す割り込み開始通知を前記モニタ装置に通知する命令と、当該割り込みの終了を示す割り込み終了通知を前記モニタ装置に通知する命令と、を含む命令が記述されたコードを記憶するメモリを備え、前記割り込みが発生すると、前記メモリに記憶されたコードに含まれる命令を実行し、前記モニタ装置は、前記マイクロコンピュータからの前記割り込み開始通知及び前記割り込み終了通知に基づいて、前記モニタ対象装置上において発生する割り込みをモニタすることを特徴とするものである。
【００１８】
本発明の第２の態様に係るモニタ方法は、制御対象と、当該制御対象を制御するマイクロコンピュータと、を搭載し、モニタを行う対象であるモニタ対象装置と、前記モニタ対象装置上において発生する割り込みをモニタするモニタ装置と、を備えるモニタシステムのモニタ方法であって、前記モニタ対象装置上において割り込みが発生した場合に、前記割り込みの発生を示す割り込み開始通知を、前記マイクロコンピュータから前記モニタ装置に通知するステップと、当該割り込みの終了を示す割り込み終了通知を、前記マイクロコンピュータから前記モニタ装置に通知するステップと、前記モニタ装置により、前記マイクロコンピュータからの前記割り込み開始通知及び前記割り込み終了通知に基づいて、前記モニタ対象装置上において発生する割り込みをモニタするステップと、を含むものである。
【００１９】
本発明の第３の態様に係るマイクロコンピュータは、モニタを行う対象であるモニタ対象装置に搭載され、当該モニタ対象装置に搭載される制御対象を制御するマイクロコンピュータであって、前記モニタ対象装置上において割り込みが発生した場合に、前記割り込みの発生を示す割り込み開始通知を前記モニタ装置に通知する命令と、当該割り込みの終了を示す割り込み終了通知を前記モニタ装置に通知する命令と、を含む命令が記述されたコードを記憶するメモリを備え、前記割り込みが発生すると、前記メモリに記憶されたコードに含まれる命令を実行し、前記割り込み開始通知及び前記割り込み終了通知を外部のモニタ装置に出力することを特徴とするものである。
【発明の効果】
【００２０】
本発明に因れば、マイコン内部に新規な回路を追加せずに、多重割り込みを含む割り込みのモニタを実現できる。
【図面の簡単な説明】
【００２１】
【図１】実施の形態１に係るモニタシステムの全体構成図である。
【図２】実施の形態１に係るターゲットシステムの詳細構成図である。
【図３】実施の形態１に係るOCDエミュレータの詳細構成図である。
【図４】実施の形態１に係る割り込み信号と識別番号の対応表の一例である。
【図５】実施の形態１に係る割り込みベクタに関する内容の概念図である。
【図６】実施の形態１に係る割り込みハンドラに関する内容の概念図である。
【図７】実施の形態１に係るOCD制御ソフトのフローチャートである。
【図８】実施の形態１に係るOCD制御ソフトのフローチャートである。
【図９】実施の形態１に係るOCD制御IC内部の模式図（初期状態）である。
【図１０】実施の形態１に係るマイコン内部の模式図（単独割り込み発生時）である。
【図１１】実施の形態１に係るマイコン内部の模式図（多重割り込み発生時）である。
【図１２】実施の形態１に係るOCD制御IC内部の模式図（割り込み受付状態）である。
【図１３】実施の形態１に係るホストPC上のメモリ状態を示す図である。
【図１４】実施の形態１に係るデバッガのフローチャートである。
【図１５】実施の形態１に係るデバッガのフローチャートである。
【図１６】実施の形態１に係るホストPCに再現された割り込み模式図である。
【発明を実施するための形態】
【００２２】
実施の形態１．
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略している。なお、各図面において、同一の要素には同一の符号を付し、必要に応じて重複説明を省略する。
【００２３】
図１は、本実施の形態に係るモニタシステム１の全体構成図である。
図１に示すように、モニタシステム１は、モニタを行う対象であるモニタ対象装置２と、モニタ対象装置２のモニタを行うモニタ装置３と、に分けることができる。
【００２４】
モニタ対象装置２としてのターゲットシステム１０は、マイコン１１を搭載している。モニタ装置３は、OCDエミュレータ２０と、ホストPC３０と、フラットケーブル４０と、USBケーブル５０と、を備えている。
【００２５】
ターゲットシステム１０のマイコン１１は、フラットケーブル４０を用いて、エミュレータ２０が有するOCD制御IC(Integrated Circuit)２１と接続されている。OCD制御IC２１は、USB(Universal Serial Bus)ケーブル５０を用いて、ホストPC３０とは接続されている。
【００２６】
モニタ装置３は、OCDエミュレータ２０を介してマイコン１１との通信を行うことで、ターゲットシステム１０上の割り込みをモニタする。詳細は後述するが、モニタ装置３は、マイコン１１からの割り込み開始通知及び割り込み終了通知に基づいて、モニタ対象装置２上において発生する割り込みをモニタする。
【００２７】
図２は、ターゲットシステム１０の詳細図である。
図２に示すように、ターゲットシステム１０には、マイコン１１と、制御対象A（図では符号１２を用いて示す。）と、制御対象B（図では符号１３を用いて示す。）と、が搭載されている。
【００２８】
マイコン１１には、ユーザコードやモニタコードなどのソフトウェアが組み込まれている。これらソフトウェアは、マイコン１１が有するメモリ（不図示）に記憶されている。メモリは、例えば、マイコン１１に搭載された内蔵フラッシュROMである。
【００２９】
制御対象A及び制御対象Bは、割り込み信号A及び割り込み信号Bをマイコン１１にそれぞれ与え、また、制御信号A及び制御信号Bをマイコン１１からそれぞれ受けるように構成されている。
【００３０】
マイコン１１とOCDエミュレータ２０とは、OCD用UART上り信号と、OCD用UART下り信号と、OCD用汎用信号と、を用いて通信を行う。
【００３１】
図３は、OCDエミュレータ２０の詳細図である。
OCD制御IC２１とマイコン１１は、OCD用UART上り信号と、OCD用UART下り信号と、OCD用汎用信号と、を用いて通信を行う。また、OCD制御用IC２１とホストPC３０は、OCD用USB信号を用いて通信を行う。OCD制御用IC２１は、OCD用USB信号を用いて、ホストPC３０から定期的にポーリングをされている。
【００３２】
OCD用UART下り信号は、マイコン１１内に組み込まれたモニタコードに対して、OCDエミュレータ２０からの指示を与えるために使用される。例えば、ユーザコードの実行中にその実行を一時停止させる指令は、OCD用UART下り信号を用いて実現される。
【００３３】
OCD用UART上り信号は、OCDエミュレータ２０に対して、マイコン１１からのデータを送信する場合に用いられる。OCD用UART上り信号は、ユーザコードの実行が一時停止した状態でのみ使用される。つまり、ユーザコードの実行中は、通信がアイドリング状態である。
【００３４】
本実施の形態では、従来では、ユーザコードが実行されている状態ではアイドリング状態で未使用であったOCD用UART上り信号に加えて、OCD用汎用信号をも駆使することで、割り込みモニタ技術を実現している。
【００３５】
次に、本実施の形態に係る動作について説明する。
まず、本実施の形態が対象とする割り込み処理について簡単に説明する。なお、以下の説明では、一例として、3種類の割り込み（制御対象A及び制御対象Bからマイコン１１に対して入力される割り込み信号A及び割り込み信号Bに加えて、マイコン１１内部で発生する内部割り込み信号C）に対する割り込み処理ルーチンを、ユーザコードとして記述している場合を考える。
【００３６】
マイコン１１は、割り込み信号を検知すると一時的に他の割り込みを受け付けない状態となり、各割り込みに対応するアドレス（以下、割り込みベクタと称する。）へとプログラムカウンタを移動させる。通常、割り込みベクタは数バイト程度しか確保されていないため、割り込み処理はここで行わずに、別の領域に記述した函数（以下、割り込みハンドラと称する。）で行う。よって、割り込みベクタに記載される命令は、割り込みハンドラへとジャンプする命令（以下、JMP命令と称する。）のみとなる。
【００３７】
そして、割り込みハンドラには、次のような順序の処理を、ユーザコードとして記述しているものとする。
【００３８】
まず、汎用レジスタの状態をスタック領域へ書き出す処理、割り込み受付を再開（以下、EI命令と称する。）、そして、割り込み処理ルーチン。次に、割り込み処理ルーチンの終了後に、割り込み受付を一時禁止（以下、DI命令と称する。）、汎用レジスタの状態をスタック領域から読み出す処理、そして、割り込み終了のリターン命令（以下、RETI命令と称する。）となる。RETI命令を実行されると、割り込み信号を検知した瞬間にプログラムカウンタが実行していたアドレスへと戻って、割り込み受付を再開した状態になる。
【００３９】
なお、C言語などの高級言語を用いる場合、割り込み処理ルーチンを除く他の部分は、コンパイラにより自動的に生成される。そのため、ユーザコードとして意識されることは少ない。
【００４０】
本実施の形態は、コンパイラにより自動的に記述されるこの部分に、以下で説明するモニタコードを組み込むことで実現される。
【００４１】
まず、準備として、各割り込み要因に対して、重複しない識別番号を予め定義しておく。図４に、割り込み信号と識別番号の対応表の一例を示す。この対応表の内容が、後述するモニタコードの内容として記述される。なお、識別番号は、最大0xFFまでとする。
【００４２】
次に、マイコン１１側に施す仕掛けについて説明する。
マイコン１１側では、割り込みの検出に応じた通知と、割り込み処理ルーチンの完了に応じた通知と、を、OCDエミュレータ２０に知らせる。図５及び図６を参照して、これを実現するための仕掛けとして、ユーザコードに組み込むモニタコードの内容を説明する。
【００４３】
図５に、マイコン１１のプログラムカウンタの移動アドレスについて、割り込みベクタに関するアドレスの内容を概念的に示す。まず、図５に示すように、各割り込みベクタにおいて、割り込み要因に対応する識別番号をOCD用UART上り信号へと出力する（以下、これを割り込み開始通知と称する。）命令を、JMP命令の直前に挿入する。
【００４４】
図６に、マイコン１１のプログラムカウンタの移動アドレスについて、割り込みハンドラに関するアドレスの内容を概念的に示す。図６に示すように、プログラムカウンタがJMP命令により移動させられた後、その移動先の各割り込みハンドラにおいて、OCD用汎用信号のHigh/Lowをトグルする（以下、これを割り込み終了通知と称する。）命令を、RETI命令を実行する直前に挿入する。
【００４５】
この仕掛けにより、マイコン１１は、割り込みを検出すると割り込み開始通知を、割り込み処理ルーチンを完了すると割込み終了通知を、OCDエミュレータ２０に知らせることが可能となる。
【００４６】
そして、ユーザのCソースがコンパイルされるときに、この仕掛けを記述したモニタコードを自動的に仕込むことで、ユーザに意識させることなく、割り込みモニタ手段を実現することができる。
【００４７】
次に、OCDエミュレータ２０側に施す仕掛けについて説明する。
OCDエミュレータ２０側では、マイコン１１から通知される割り込み開始通知及び割り込み終了通知に基づいて、割り込みを把握する。図７乃至図１２を参照して、これを実現するための仕掛けとして、OCDエミュレータ２０による処理の内容を説明する。
【００４８】
図３に示したように、OCDエミュレータ２０内部にはOCD制御IC２１が実装されており、OCD制御IC２１が、OCD用UART上り信号と、OCD用UART下り信号と、OCD用汎用信号と、OCD用USB信号と、の入出力を担っている。
【００４９】
そして、OCD制御IC２１に組み込まれているソフトウェア（以下、OCD制御ソフトと称する。）がこれら入出力の制御を行うことで、マイコン１１とホストPC３０との通信が実現されている。
【００５０】
本実施の形態では、図７及び図８に例示するフローの処理をOCD制御ソフトに追加することで、ユーザコードの実行を一時停止することなく、マイコン１１が検知した多重割り込みを把握可能とする。
【００５１】
なお、本実施の形態では、OCD制御IC２１は、所定のbit長データを送受するUARTと、所定のbit幅のフリーランタイマと、外部信号エッジ検出機能と、USB送受信インタフェース機能と、を備えており、かつ、C言語で記述したソフトウェアを実行できるものとする。ここで、UARTは、スタートビットとストップビットのそれぞれを1bitとして、8bit長のデータを送受する。また、フリーランタイマは、16bit幅のタイマとする。
【００５２】
図８は、OCD制御ソフトによるフローを示している。なお、図８に示すフローで使用する変数の定義を、図７に示している。図８において、マイコン１１からの割り込み開始通知をOCD制御IC２１が受信した場合には、OCD制御ソフトは、S１０３〜S１０７に示す処理を行う。また、マイコン１１からの割り込み終了通知をOCD制御IC２１が受信した場合には、OCD制御ソフトは、S１０８〜S１１１に示す処理を行う。
【００５３】
より具体的には、OCD制御IC２１は、マイコン１１から割り込み開始通知を受取った場合には、フリーランタイマにより計測したカウント値をホストPC３０に対して通知する（S１０４、S１０６）。また、OCD制御IC２１は、割り込みに対応する識別番号を保持すると共に、その保持する識別番号をホストPC３０に対して通知する（S１０５、S１０６）。さらに、OCD制御IC２１は、現在発生中の割り込み数を把握するため、変数ｎの値を１増加（インクリメント）する（S１０７）。
【００５４】
また、OCD制御IC２１は、マイコン１１から割り込み終了通知を受取った場合には、フリーランタイマにより計測したカウント値をホストPC３０に対して通知する（S１０９、S１１１）。さらにまた、OCD制御IC２１は、現在発生中の割り込み数を把握するため、変数ｎの値を１減少（デクリメント）する（S１１０）。また、OCD制御IC２１は、保持しておいた識別番号をホストPC３０に対して通知する（S１１１）。
【００５５】
以下、図９乃至図１２を参照して、図７及び図８に示したOCD制御ソフトによるフローを、時系列に図示して具体的に説明する。
【００５６】
図９は、OCDエミュレータ２０のOCD制御IC２１内部の様子を示している。図９では、初期状態での、OCD制御IC２１内部の様子を示している。図９に示すように、OCDエミュレータ２０内では、16bitフリーランタイマが、0から65535の値を繰り返しカウントし続けている。1カウント当たりの時間分解能は、OCDエミュレータ２０の設定に応じて任意の値に設定できるものとする。初期状態では、変数ｎ、変数int_id[0]、int_id[1]、int_id[2]は、全て0である。
【００５７】
図１０は、ターゲットシステム１０のマイコン１１内部の様子を示している。図１０では、単独割り込みが発生した場合を示している。なお、図１０に示す割り込み信号A、B及び内部割り込み信号Cは、マイコン１１内部で検知した割り込み信号を、論理信号として模式的に表現したものであり、ターゲットシステム１０の基板上で実際に電気的に観測できるものとは異なる。
【００５８】
図１０に示すように、マイコン１１が割り込み信号Aを検知すると、割り込みベクタに記述された割り込み開始通知により、OCD用UART上り信号へと識別番号0x0Aが送出される。ここで、識別番号は8bit値でありUARTによる通信であるため、スタートビットとストップビットを合わせて（10bit÷ボーレート）秒の時間を要するが、この時間は固定値であり、送出の都度により変化することはない。
【００５９】
そして、割り込みベクタから割り込みハンドラへ移った後、割り込み処理ルーチンを終え、RETI命令を実行する直前で、割り込み終了通知により、OCD用汎用信号がトグルされる。また、内部割り込み信号Cに対しても、割り込み信号Aと同様の処理が行われる。
【００６０】
図１１も、ターゲットシステム１０のマイコン１１内部の様子を示している。図１１では、多重に割り込みが発生した場合を示している。なお、図１１では、割り込み信号Aの割り込み優先度が一番低く（優先度３）、割り込み信号Bの割り込み優先度が一番高い（優先度１）ものとする。
【００６１】
図１１に示すように、マイコン１１が割り込み信号Aを検知してその直後に割り込み信号Bを検知した場合には、割り込みハンドラAでEI命令が実行された直後に割り込みハンドラAの処理が中断されて、より優先度が高い割り込み信号Bについて、割り込みベクタBの実行が開始される。
【００６２】
割り込みハンドラBの実行中に内部割り込み信号Cを検知した場合には、割り込み信号Bの優先度が一番高いために割り込みベクタCの実行は保留され、割り込みハンドラBの実行が終了してから実行される。そして、割り込みハンドラCの実行が完了すると、優先度が一番低い割り込みハンドラAの処理が再開される。
【００６３】
なお、割り込みハンドラが汎用レジスタの内容をスタック領域へ書き出して、EI命令を実行するまでの時間に、OCD用UARTのボーレートが十分速く、10bitを送出し終われる限りは、多重割り込みが発生した場合においても、割り込み開始通知の送出に関して破綻をきたすことはない。
【００６４】
図１２は、OCDエミュレータ２０のOCD制御IC２１内部の様子を示している。図１２では、図１１に示した多重割り込みを示すOCD用UART信号及びOCD用汎用信号が、OCD制御IC２１内部でどのように処理されるかを示している。
【００６５】
図１２では、OCD用UART上り信号の10bit送信に相当する時間を、16bitフリーランタイマでは7500カウントであるとして示している。また、各割り込み開始通知及び割り込み終了通知を受け取ったタイミングでの、16bitフリーランタイマの値を、順に、15000、30000、54000、62000、20000、35000として示している。
【００６６】
図１２に示すように、OCD制御ソフトのフロー（図７及び図８）により、USB_EPを通じて、OCD制御IC２１からホストPC３０へと、データ（カウント値と識別番号）が伝えられる。図１２では、カウント値7500、識別番号0x000A、カウント値22500、識別番号0x000B、カウント値54000、識別番号0xFF0B、カウント値54500、識別番号0x000C、カウント値20000、識別番号0xFF0C、カウント値35000、識別番号0xFF0A、というデータが順番に伝えられる。
【００６７】
上述した仕掛けにより、マイコン１１で割り込みが発生した場合には、ホストPC３０は、上位8bitを0x00で埋められた割り込みの識別番号と、その割り込みが発生したタイミングでのカウンタ値と、を知ることができる。そして、割り込みが終了した場合には、ホストPC３０は、上位8bitを0xFFで埋められた識別番号と、割り込みが終了したタイミングでのカウンタ値と、を知ることができる。デバッガは、これらの情報を使用することで、多重割り込みが起きている様子を、ホストPC３０の画面上に模式的に表示することができる。
【００６８】
図１３乃至図１６を参照して、デバッガによる割り込みの表示処理を説明する。
ホストPC３０は、図１２で示した割り込み状況を示すデータを、ホストPC３０上のメモリ（FIFO）に収納している。デバッガは、このメモリ（FIFO）に収納されたデータを読み出し、画面上に表示する。
【００６９】
図１３は、ホストPC３０上のメモリ（FIFO）に収納した、図１２に示した割り込み状況を示すデータである。デバッガは、このメモリ（FIFO）のデータを、古い方から順に、2データずつセットで読み出す。
【００７０】
図１４及び図１５は、デバッガによるフローを示している。なお、図１５に示すフローで使用する変数の定義を、図１４に示している。デバッガは、図１４及び図１５に示したフローチャートに基づき、メモリ（FIFO）からデータを読み出して、XY二次元グラフ上にプロットする（S２０１〜S２１５）。その結果、図１６に例示する多重割り込みの模式図が描写される。
【００７１】
以上説明したように本実施の形態によれば、マイコン１１内部に新規な回路を追加せずに、OCDエミュレータ２０が有するタイマ機能とマイコン１１の内蔵フラッシュROM領域を若干利用することで、多重割り込みを含む割り込み発生の検出及び割り込み処理時間の計測を実現することができる。このため、デバッグ作業における上述した問題点を解決することができる。
【００７２】
さらに、本実施の形態による詳細な効果を以下に挙げる。
まず、本実施の形態では、マイコン内部に対するハードウェア追加が皆無であるため、マイコン自体の価格や物理的寸法を増大させることが無い。また、既存のマイコンに対しても、割り込み処理に関する時間計測や、多重割り込みの関係の把握を実現することができる。
【００７３】
また、本実施の形態で用いる装置はOCDエミュレータのみであり、オシロスコープやロジックアナライザなどの機材は不要である。このため、割り込み処理の時間に着目したデバッグ作業を、これまでと比較してより安価に行うことが可能となる。
【００７４】
また、本実施の形態では、OCDエミュレータとモニタコードを用いて割り込みのモニタを実現しており、割り込み信号を観測する手段を、ユーザコードの開発作業者自身が独自に構築する必要がない。このため、割り込み処理の時間に着目したデバッグ作業を、これまでと比較してより効率的に行うことが可能となる。
【００７５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７６】
１  モニタシステム、
２  モニタ対象装置、
３  モニタ装置、
１０  ターゲットシステム、
１１  マイコン、
１２  制御対象A、
１３  制御対象B、
２０  OCDエミュレータ、
２１  OCD制御IC、
３０  ホストPC、
４０  フラットケーブル、
５０  USBケーブル
【図１】
2012168693.tif 000003
【図２】
2012168693.tif 000004
【図３】
2012168693.tif 000005
【図４】
2012168693.tif 000006
【図５】
2012168693.tif 000007
【図６】
2012168693.tif 000008
【図７】
2012168693.tif 000009
【図８】
2012168693.tif 000010
【図９】
2012168693.tif 000011
【図１０】
2012168693.tif 000012
【図１１】
2012168693.tif 000013
【図１２】
2012168693.tif 000014
【図１３】
2012168693.tif 000015
【図１４】
2012168693.tif 000016
【図１５】
2012168693.tif 000017
【図１６】
2012168693.tif 000018