(57)【要約】【課題】スナップ・ショット機能が持つ有効性を保持しつつ、リアル・タイム性を確保する。【解決手段】制御データを外部の測定器４００にパラレル・データとして出力できるパラレル・インタフェース１１０を設け、実行プログラムには、トレース・ポイントにトレース用のデータ・コードをパラレル・インタフェースに出力する命令を書き込んでおき、デバッギング時にパラレル・インタフェースから得るデータ・コードからプログラムの実行状況をトレースする。パラレル・インタフェースから出力されるデータを外部メモリ回路に記憶し、このデータからプログラムの実行状況をトレースすること、データ・コードのトレース開始コードと終了コードから事象の発生間隔の測定を行うこと、データ・コードの特定の事象コードから事象の発生回数の測定を行うことを含む。【選択図】  図１
2004280480.tif 000002
【特許請求の範囲】
【請求項１】
マイクロ・プロセッサを中枢部として制御対象を制御し、スナップ・ショット方式で実行プログラムのデバッギングを行う制御装置において、マイクロ・プロセッサ等にバス結合され、バス上の制御データを外部の測定器にパラレル・データとして出力できるパラレル・インタフェースを設け、
前記実行プログラムは、デバッギング時に、デバッグ対象となるトレース・ポイントにトレース用のデータ・コードを前記パラレル・インタフェースに出力する命令を書き込んでおき、
デバッギング時に前記パラレル・インタフェースから外部の測定器に得る前記データ・コードからプログラムの実行状況をトレースすることを特徴とするデバッギング装置。
【請求項２】
マイクロ・プロセッサを中枢部として制御対象を制御し、スナップ・ショット方式で実行プログラムのデバッギングを行う制御装置において、マイクロ・プロセッサ等にバス結合され、バス上の制御データを外部にパラレル・データとして出力できるパラレル・インタフェースを設け、
前記パラレル・インタフェースから出力されるパラレル・データを蓄積記憶しておく外部メモリ回路を設け、
前記実行プログラムは、デバッギング時に、デバッグ対象となるトレース・ポイントにトレース用のデータ・コードを前記パラレル・インタフェースに出力する命令を書き込んでおき、
デバッギング時に前記パラレル・インタフェースから外部メモリ回路に蓄積記憶する前記データ・コードからプログラムの実行状況をトレースすることを特徴とするデバッギング装置。
【請求項３】
前記データ・コードのうち、前記パラレル・インタフェースにトレースする開始コードと終了コードを設定可能にし、前記データ・コードと前記開始コードおよび終了コードとの比較から事象の発生間隔の測定を行う測定回路を設けたことを特徴とする請求項１または２に記載のデバッギング装置。
【請求項４】
前記データ・コードのうち、前記パラレル・インタフェースにトレースする特定の事象コードを設定可能にし、前記データ・コードと事象コードの比較から事象の発生回数の測定を行う測定回路を設けたことを特徴とする請求項１または２に記載のデバッギング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロ・プロセッサを搭載した制御装置のデバッグ機能に関わるものである。
【０００２】
【従来の技術】
現在、一般産業分野のプロセス制御装置などの大型システムから、家庭電化製品のような小型の制御装置に至るまで、電子機器といわれる殆ど全ての制御装置には、その中枢部として、内部にマイクロ・プロセッサが使用されている。
【０００３】
マイクロ・プロセッサを使用した制御装置には、必ずソフトウェア（Ｓ／Ｗ）またはファームウェア（Ｆ／Ｗ）と呼ばれる、プロセッサの実行プログラムが内蔵されるが、これらのプログラムの作成時には、誤り（バグと呼ばれる）を排斥するための、デバッグと言われる作業を必要とする。
【０００４】
このデバッグ作業では、プログラムの実行状況を逐次監視しながら、そのプログラムが正しく実行をしているかどうかを確認していくことが必要になる。
【０００５】
現在の技術では、最も詳細にこの作業を行う環境としては、ＩＣＥ（Ｉｎ  Ｃｉｒｃｕｔ  Ｅｍｕｌａｔｏｒ）と呼ばれる開発装置が一般的である。この装置を使用すれば、プロセッサの内部レジスタ類の情報まで、トレースをしながら、ソフトウェアの実行状態を監視することができる。
【０００６】
しかし、このＩＣＥの環境は、プロセッサに接続するためのアダプタを始めとして、外部に大掛かりな装置を接続することが必要となり、また、この装置を接続したまま、デバッグ対象の装置（ターゲットと呼ばれる）を実際の実行環境で動作させることは不可能である。
【０００７】
そのため、ＩＣＥ装置は、プログラム開発の初期段階で使用されることが多く、プログラム開発の終盤では、できるだけ、軽いデバッグ環境を用いて、実際の実行環境に近い（実機に組み込んだ形）でのデバッグを行うことが必要になってくる。
【０００８】
この場合、実際に動作するマイクロ・プロセッサ環境の中に、デバッグ作業に必要なプログラム（オンライン・デバッガなど）を組み込み、このＳ／Ｗ（プログラム）によるセルフ開発環境を整えることが有効である。
【０００９】
このセルフ開発環境に於ける、プログラムのデバッギングは、Ｈ／Ｗ的には、プロセッサに従属するシリアル・インタフェースを利用するのが一般的である。
このシリアル・インタフェースに、非常駐のコンソール（ターミナル）を接続するだけで、ターゲット装置上のセルフ環境で、ソフトウェアのデバッグ作業を行うことができる。特に、このシリアル・インタフェースを利用したプログラムのデバッギング手法としては、スナップ・ショットと呼ばれる方法が一般的である（特許文献１参照）。
【００１０】
【特許文献１】
特開平１０−２８３２１７号
【００１１】
【発明が解決しようとする課題】
先述の通り、マイクロ・プロセッサを内蔵した制御装置に於いて行われるセルフ開発環境に於ける、プログラムのデバッギングには、Ｈ／Ｗ的には、プロセッサに従属するシリアル・インタフェースを利用するのが一般的である。このシリアル・インタフェースに、非常駐のコンソール（ターミナル）を接続するだけで、ターゲット装置上のセルフ環境で、ソフトウェアのデバッグ作業を行うことができる。
【００１２】
このシリアル・インタフェースを用いた、デバッグ環境の１つに、スナップ・ショットと呼ばれる手法がある。これは、プログラム上、重要な複数のポイントに、シリアル・インタフェースからキャラクタ列を出力するための、命令を埋め込んでおき、シリアル・ターミナルからの操作で、プログラムを実行させると、実プログラムが動作した時に、この命令部分を実行すると、ターミナルにその旨の印字が行われるというものである。
【００１３】
この機能を利用すると、ターミナルからプログラムの起動をかけた場合に、プログラムが実行され、処理される順序に従って、通過したプログラムの部分の情報が、ターミナル上に印字されることになり、プログラムの実行順序が極めて安直にトレースできる。
【００１４】
この手法は、Ｓ／ＷやＦ／Ｗの開発時に頻繁に使用される、実用的かつ有効な手法である。
【００１５】
しかし、この手法の場合、オペレータに対する情報の伝達のために、シリアル・インタフェースが用いられることから、その他の操作と同じターミナルを用いることができる点で極めて有効であるが、一方、シリアル・インタフェースの宿命である、印字に時間がかかるというスピード面での制約が問題になる場合が多かった。
【００１６】
つまり、プログラムの中に、キャラクタを印字するための命令を埋め込む訳であるから、当然この命令の実行時間が必要なのは当然であるが、シリアル・インタフェースを相手にした場合、ビット列をシリアルに送出する関係から、かなり多くの時間を必要としていた。この時間は複数キャラクタを印字する場合には更に加算されて問題が大きくなる。
【００１７】
この時間は、制御処理にリアルタイム性や、高速性が必要のない場合（つまり制御の順序だけが重要である場合）には全く問題にはならないが、処理を一定時間に済ませなければならないようなリアルタイム性を重要視する装置の場合は、致命的な問題になる。また、割り込みなどを利用して、このキャラクタ印字ルーチンを呼び出すようにすると、この印字がある場合と、ない場合で処理の流れが変わったり、所要時間が変わることによって、正しいトレースができないことも問題である。
【００１８】
つまり、このスナップ・ショット手法は、プログラムの実行状況を実機に於けるセルフ環境でトレースできるという有効な手段であるが、リアル・タイム性の要求されるシステムでは有効に活用できないということになる。
【００１９】
図１２に、このスナップショット機能を用いる場合の装置の実行環境の様子を示す。同図に於いて、１００はマイクロ・プロセッサを内蔵した制御装置の全体、２００はこの制御装置１００によって制御される制御対象、３００は制御装置１００のメインテナンス時に接続される、シリアル通信手段を有するコンソール・ターミナル装置である。
【００２０】
制御装置１００のうち、１０１はこの制御装置の制御プロセスを実行するマイクロ・プロセッサ、１０２はマイクロ・プロセッサの実行状態を記述したプログラムを格納したり、作業エリアとして利用するためのメモリ回路、１０３はマイクロ・プロセッサの出力するアドレスをデコードして、選択される資源（デバイス）を抽出するためのアドレス・デコーダ回路である。また、１０４は、この装置で制御される制御対象２００のための制御インタフェースであって、外部入出力信号を有する。また、１０５はシリアル・インタフェースのためのシリアル・コントロール回路であって、パラレル／シリアル変換回路や非同期調歩同期式のシリアル制御回路などを搭載するコントローラ、１０６はシリアルー通信の外部入出力レベルを合わせるための物理インタフェース回路であって、ドライバ／レシーバ回路などが用いられる。１０７は、シリアル・インタフェース用の外部接続コネクタである。
【００２１】
さて、今、図１２に示すようなハードウェア環境に於いて、プログラムのデバッギングを行うことを考える。先ず、デバッギングの対象となるプログラム上の何箇所がに、「Ａ」ポイントから「Ｇ」ポイントというような通過ポイントを定め、これらのポイントとなる個所に、「Ａ」から「Ｇ」のキャラクタをメインテナンス・コンソール上に表示するプログラム（キャラクタのコードをセットして、シリアル・コンソール上にキャラクタを出力するサブルーチンをコールするなどのプログラム）を埋め込む。
【００２２】
この後、メインテナンス・コンソール上から、この対象のプログラムを起動すると、プログラムの実行された順序に従って、「Ａ」から「Ｇ」のキャラクタの内のいずれかがコンソール・ターミナル上に印字されていく。このキャラクタの印字順序が、プログラマの予想した通りであれば、プログラムに問題（バグ）はないのであるが、意図していない順序でキャラクタが印字された場合には、プログラム上のどこかにバグが存在することになる。
【００２３】
さて、これが、スナップ・ショット手法の使用法であるが、この手法で、コンソール・ターミナルにキャラクタを印字する場合の処理の流れを「Ａ」ポイント部分で表すと、図１３の様になる。
【００２４】
図１３に示すステップＳ１〜Ｓ８に従って手順を説明する。まず、デバッグ対象となるプログラム列のポイントとなる個所毎に、Ｓ１、Ｓ２、Ｓ３、Ｓ８を埋め込む。Ｓ４〜Ｓ７のサブルーチンは、共通の場所に１箇所設ければよい。
【００２５】
Ｓ１：サブルーチン・コールに備えて必要なレジスタを待避する。
【００２６】
Ｓ２：ポイントを示すキャラクタ（ここでは「Ａ」）を示すＡＳＣＩＩコード（ここでは「４１Ｈ」）をレジスタにセットする。
【００２７】
Ｓ３：キャラクタを印字するためのサブルーチンをコールする。
【００２８】
Ｓ４：（ここからサブルーチン）シリアル・コントローラのステータス・レジスタをリードして、状態を読み込む。
【００２９】
Ｓ５：送信のレディ・ビットをチェックして、キャラクタ・コードの送出が可能かどうかを判断する。送信レディでない場合には、Ｓ４に戻る。
【００３０】
Ｓ６：送信レディであれば、Ｓ２でセットしたコードをシリアル・コントローラの送信バッファに書き込む。これによってシリアル・インタフェースから、キャラクタ・データがコンソール・ターミナルに対して送出される。
【００３１】
Ｓ７：サブルーチンからリターンする。
【００３２】
Ｓ８：待避していたレジスタを復帰して、元の処理に戻る。
という手順で、プログラム上のこのポイントを通過した場合には、メインテナンス・コンソール上に「Ａ」のキャラクタが印字される。
【００３３】
しかし、この手順を見ても分かる通り、シリアル・インタフェースにキャラクタを出力する処理は、プログラム上でも最低で８つのステップ（命令）を踏む必要があり、実際には、最低でも数マイクロ秒の時間を要する。印字キャラクタ数を増やして、送信バッファの容量を越える場合には、数十ミリ秒のオーダの時間を要することもある。
【００３４】
プログラムが、その実行順序だけを遵守していれば、仕上がりの時間を気にしないようなアプリケーションであれば、この方式のスナップ・ショット手法で、十分なデバッギング効果が得られる。しかし、一般に制御装置では、できるだけ短時間で処理を完結することが求められており、通過ポイントの表示のために、大きな時間を費やすことは許されない場合が多い。特にリアルタイム制御を行う装置では、デバッグのために入れたスナップ・ショットの実行で、その時間管理が狂ってしまうことが懸念される。
【００３５】
これが、従来のシリアル・インタフェースを用いたスナップ・ショットによるデバッギング環境の欠点であった。
【００３６】
本発明の目的は、マイクロ・プロセッサを搭載した制御装置のプログラム・デバッグのためのセルフ環境に於いて、スナップ・ショット機能が持つ有効性を保持しつつ、リアル・タイム性の欠如を補って、リアル・タイム性を要求される装置に於いても、スナップ・ショット機能を使用できる制御装置を提供することにある。
【００３７】
【課題を解決するための手段】
本発明は、前記の課題を解決するため、マイクロプロセッサとその実行プログラムによる制御装置において、実行プログラムのデバッギングを、スナップ・ショット方法でプログラムの実行状態をトレースするにおいて、トレース情報をパラレル・インタフェースを使用して取り出すようにしたもので、以下の構成を特徴とする。
【００３８】
（１）マイクロ・プロセッサを中枢部として制御対象を制御し、スナップ・ショット方式で実行プログラムのデバッギングを行う制御装置において、
マイクロ・プロセッサ等にバス結合され、バス上の制御データを外部の測定器にパラレル・データとして出力できるパラレル・インタフェースを設け、
前記実行プログラムは、デバッギング時に、デバッグ対象となるトレース・ポイントにトレース用のデータ・コードを前記パラレル・インタフェースに出力する命令を書き込んでおき、
デバッギング時に前記パラレル・インタフェースから外部の測定器に得る前記データ・コードからプログラムの実行状況をトレースすることを特徴とする。
【００３９】
（２）マイクロ・プロセッサを中枢部として制御対象を制御し、スナップ・ショット方式で実行プログラムのデバッギングを行う制御装置において、
マイクロ・プロセッサ等にバス結合され、バス上の制御データを外部にパラレル・データとして出力できるパラレル・インタフェースを設け、
前記パラレル・インタフェースから出力されるパラレル・データを蓄積記憶しておく外部メモリ回路を設け、
前記実行プログラムは、デバッギング時に、デバッグ対象となるトレース・ポイントにトレース用のデータ・コードを前記パラレル・インタフェースに出力する命令を書き込んでおき、
デバッギング時に前記パラレル・インタフェースから外部メモリ回路に蓄積記憶する前記データ・コードからプログラムの実行状況をトレースすることを特徴とする。
【００４０】
（３）前記データ・コードのうち、前記パラレル・インタフェースにトレースする開始コードと終了コードを設定可能にし、前記データ・コードと前記開始コードおよび終了コードとの比較から事象の発生間隔の測定を行う測定回路を設けたことを特徴とする。
【００４１】
（４）前記データ・コードのうち、前記パラレル・インタフェースにトレースする特定の事象コードを設定可能にし、前記データ・コードと事象コードの比較から事象の発生回数の測定を行う測定回路を設けたことを特徴とする。
【００４２】
【発明の実施の形態】
本発明では、上述のシリアル・インタフェースを用いたスナップ・ショット手法による問題点を解決するために、極めて簡単な、パラレル・ポートを用いたデバッグ方法を提案するものであり、以下、実施形態を詳細に説明する。
【００４３】
＜実施形態１＞
図１に本実施形態による、パラレル・ポート方式のメインテナンス（デバッグ）環境を示す。同図は、図１２の環境に、簡易なパラレル・ポートを追加したものである。
【００４４】
図１に於いて、１００，１０１〜１０７，２００，３００は、全て、図１２と同じである。同図において、１１０は、今回追加された簡易なパラレル・インタフェースであり、マイクロ・プロセッサ１０１等にバス結合され、デバッギング時にバス上の制御データをパラレル・データとして外部に出力するための、データ幅を持ったバッファ回路などで構成される。また、１２０は、１１０によって出力される信号を外部に引き出すための接続コネクタである。そして、４００がこのパラレル・インタフェースに出力されるコードを記憶したり、表示したりすることのできるロジック・アナライザや、データ・アナライザなどの測定器である。この測定器は、ＩＣＥのような専用機である必要はなく、通常のＨ／Ｗの開発環境として準備される汎用の機器で構わない。
【００４５】
さて、ここで、１１０のパラレル・インタフェース部分について考える。まず、最も簡便にプログラムの実行状況をパラレル・インタフェース出力することができるようにするために、図２のようなインタフェースの構成例を提案する。
【００４６】
図２に於いて、１１０は、本発明によって装置に付加する簡易なパラレル・インタフェースの全体、１１１はｎビットのデータを外部に出力するためのｎビットのバッファ回路である。また、１１２は、外部にデータを出力する際の同期用信号を生成するためのインバーテッドＮＡＮＤ回路（ＯＲ回路）である。
【００４７】
更に、同図に於いて、ａは、図１の１０３部のアドレス・デコーダ回路によって生成される、このパラレル・インタフェースが選択されたことを示す「ＰＯＲＴＳＥＬ＿Ｌ」信号、ｂは、マイクロプロセッサがこの周辺デバイスに対して、データを書き込むための制御信号で「ＷＲ＿Ｌ」信号である。これらａ，ｂの２信号を１１２でインバーテッドＮＡＮＤをとった信号が、ｃの「ＰＯＲＴＷＲ＿Ｌ」信号であり、このパラレル・インタフェースに対する書き込みであることを示す信号になる。よって、このＰＯＲＴＷＲ＿Ｌ信号を外部に対するデータ出力の同期信号に用いる。
【００４８】
これらパラレル・インタフェースへの書き込み動作に関して、信号出力の時間関係の例を示したものが、図３である。ｎ本のデータライン「ＤＡＴＡ［ｎ：１］＿Ｈ」が有効である間にＰＯＲＴＷＲ＿Ｌ信号の立ち上がりエッジが来るように設計されている。すなわち、外部の計測器（観測装置）に於いて、このＰＯＲＴＷＲ＿Ｌ信号の立ち上がりエッジで、ｎ本の出力信号をラッチして格納していけば、マイクロプロセッサが外部に知らせようとしたコードを蓄積して解析することができる。
【００４９】
このような、パラレル・インタフェースを用いた場合の、デバッグ方式の場合のプログラム実行を考えると、実行プログラムに埋め込まれる各トレース・ポイントでの処理は、図４に示すように、各ポイントに於いて「パラレル・インタフェースに、該当するポイントに対応するコードを書き込む」という単一の操作だけになる。この処理Ｓ１１は、プログラムのフェッチと、パラレル・インタフェースへの書き込みサイクルを考えても、５０から５００ナノ秒のオーダで完結できる。
【００５０】
これにより、パラレル・インタフェースを用いたスナップ・ショット方式を用いれば、リアルタイム性が強く要求されるプログラムであっても、大きな影響を与えることなく、これをデバッグすることが可能になる。
【００５１】
＜実施形態２＞
図５は、図２で示した、簡易的なパラレル・インタフェースに、リセット信号（ｅ）を追加し、外部接続コネクタ１２０に電源を供給できるようにした例である。この例では、外部接続コネクタの外側に外部メモリ回路を接続することが可能になる。
【００５２】
図６は、図５に示すパラレル・インタフェースに接続可能なトレース用メモリ回路の例を示す。図６に於いて、５００はパラレル・インタフェースに接続可能なトレース用メモリ回路の全体、５０１は、メモリ素子であり、スタティックＲＡＭや、ＦｌａｓｈＭｅｍｏｒｙなどを使用できる。５０２は５０１のメモリに順次インクリメント（またはデクリメント）されるアドレスを生成するためのアドレス・カウンタ回路、５０３はＰＲＯＴＷＲ＿Ｌ信号とＰＯＲＴＲＤ＿Ｌ信号のインバーテッドＮＯＲをとるための回路である。ｆのＰＯＲＴＲＤ＿Ｌ信号は、図５のインタフェースには表現されていないが、このメモリ回路を別な解析装置につないだ場合に、メモリ内の内容を読み出す際に使用される信号である。また、ｇは、ＰＯＲＴＷＲ＿Ｌ信号とＰＯＲＴＲＤ＿Ｌ信号のインバーテッドＮＯＲをとった信号で、アドレス・カウンタをインクリメント（またはデクリメント）するカウント・パルス信号となる。
【００５３】
メモリのデータ・ライン（ｎビット）は、１１０部のパラレル・インタフェースのデータライン「ＤＡＴＡ［ｎ：１］＿Ｈ」に接続される。ＰＯＲＴＷＲ＿Ｌ信号は、メモリの書き込み信号（ＷＥ＿Ｌ）端子に、ＰＯＲＴＲＤ＿Ｌ信号は、メモリの読み出し信号（ＯＥ＿Ｌ）端子に接続される。ＲＥＳＥＴ＿Ｌ信号は、アドレス・カウンタをリセットするためにクリア端子に接続される。
【００５４】
このトレース用メモリ回路を、図５に示すパラレル・インタフェースに接続して、パラレル・インタフェースを使用した、スナップ・ショット手法を用いると、図４のＳ１１のようにプログラム・デバッグのために実行プログラム内に埋め込まれた、コードの書き込みルーチン部分で、このパラレル・ポートに出力されるデータ（デバッグ用コード）を、５０１のメモリ・デバイスの中に順次格納していくことができる。つまり、実施形態１の場合は、パラレル・インタフェースから出力されるコードは、順次外部の観測機器でトレースまたは格納していく必要があったが、このようなメモリ回路を外付けすると、このメモリ内に、トレース・コードを格納していくことができる。
【００５５】
一定のトレースが完了した場合、このメモリ回路をデバッグの対象となる本体装置から取り外して、専用の解析装置に接続し直して解析することができる。この場合、解析装置側にはＰＯＲＴＲＤ＿Ｌ信号をサポートした専用の読み出し回路を設けておく必要がある。
【００５６】
５０１のメモリ素子として、ＦｌａｓｈＭｅｍｏｒｙを使用する場合には、このトレース用メモリ回路は、本体から取り外しても、メモリ内容が揮発しないので、便利である。５０１のメモリ素子として、揮発性のスタティックＲＡＭを使用する場合には、本体からの電源供給の他に電池などによるバックアップ電源の入力回路を付加することによって、本体からこの回路を取り外しても、メモリ内容を保持できるようにすることが可能である。
【００５７】
＜実施形態３＞
前記までの実施形態では、マイクロ・プロセッサを搭載した装置のプログラム・デバッグのためセルフ環境に於いて、デバッグの対象となるマイクロプロセッサ搭載装置に簡易なパラレル・インタフェースを設け、これを従来のシリアル・インタフェースの代わりにスナップ・ショット機能の出力先にすることによって、プログラム実行時にトレース情報の出力のために発生する時間遅れを最小にしようとするものであった。
【００５８】
さて、本実施形態では、デバッグ対象の装置に付加した簡易なパラレル・インタフェースを単に、スナップ・ショット情報の高速な出力インタフェースとして用いるだけでなく、これを更に活用して、セルフ環境でのデバッグ作業や、メインテナンス作業をより便利に行うための環境を提供する。
【００５９】
まず、図５に示した、簡易なパラレル・インタフェースを装置に具備し、更に、外部に図７に示すような付加回路を用意することによって、プログラムのデバッグ時に有効な情報の１つである、事象の発生間隔の測定を簡便に行うことができるようにする。
【００６０】
図７に於いて、６００が、本実施形態による事象発生間隔測定回路全体である。同図に於いて、６０１は、時間計測を開始する部分で、スナップ・ショット機能により発生されるコード（開始コード）を予め設定する部分で、ＤＩＰスイッチなどを用いて可変にすることもできるし、書き換え可能なＥＥＰＲＯＭのようなデバイスで半固定的にすることもできるし、完全に固定のコード（例えば「Ｓ」に相当する固定コードなど）にすることもできる。
【００６１】
次に、６０２は、６０１で設定された開始コードと、パラレル・インタフェースから出力されるコードとを比較するためのコンパレータ回路Ａである。この回路の出力は、一致時（マッチ時）に「Ｌ」レベルになるものとする。６０３は、コンパレータＡの一致検出信号と、パラレル・インタフェースから出力される「ＰＯＲＴＷＲ＿Ｌ」信号のインバーテッドＮＡＮＤ条件をとるための回路である。コンパレータＡから一致条件が出ている間にＰＯＲＴＷＲ＿Ｌが与えられると、ｉ部のＳＴＡＲＴ＿Ｌ信号をアサートする。
【００６２】
一方、同図に於いて、６０４は、時間計測を終了する部分で、スナップ・ショット機能により発生されるコード（終了コード）を予め設定する部分で、ＤＩＰスイッチなどを用いて可変にすることもできるし、書き換え可能なＥＥＰＲＯＭのようなデバイスで半固定的にすることもできるし、完全に固定のコード（例えば「Ｐ」に相当する固定コードなど）にすることもできる。
【００６３】
次に、６０５は、６０４で設定された終了コードと、パラレル・インタフェースから出力されるコードとを比較するためのコンパレータ回路Ｂである。この回路の出力は、一致時（マッチ時）に「Ｌ」レベルになるものとする。６０６は、コンパレータＢの一致検出信号と、パラレル・インタフェースから出力される「ＰＯＲＴＷＲ＿Ｌ」信号のインバーテッドＮＡＮＤ条件をとるための回路である６コンパレータＢから一致条件が出ている間にＰＯＲＴＷＲ＿Ｌが与えられると、ｊ部のＳＴＯＰ＿Ｌ信号をアサートする。
【００６４】
更に、同図の６０７は、ＲＳ（ＳｅｔＲｅｓｅｔ）Ｆｌｉｐ−Ｆ１ｏｐ回路である。ｉ部のＳＴＡＲＴ＿Ｌ信号がアサートされると、このフリップ・フロップの出力ｋ（ＯＵＴ＿Ｌ）信号は「Ｈ」にセットされ、ｊのＳＴＯＰ＿Ｌ信号がアサートされると、このフリップ・フロップの出力ｋ（ＯＵＴ＿Ｌ）信号は「Ｌ」にリセットされる。６０８は、ＯＵＴ＿Ｌ信号を外部に出力するためのコネクタである。
【００６５】
このような外部回路を構成し、デバッグ対象となるプログラムのラインの中に計測を開始される「開始コード」と、計測を終了させるための「終了コード」を埋め込んでおいてから、プログラムを実行すれば、本回路の最終出力である「Ｏ∪Ｔ＿Ｌ」信号のパルス幅を外部測定器で計測することによって、所望の事象発生間隔を測定することが可能である。
【００６６】
この回路例の実際の動作をタイムチャートで示したものが図８である。
【００６７】
＜実施形態４＞
更に、図５に示す簡易的なパラレル・インタフェースに対して、データの読み込み機能を付加してやると、このデバッグ用パラレル・インタフェースの活用方法が広がり、プログラムのセルフ開発（セルフ・デバッグ）環境が一段と使いやすいものになる。
【００６８】
図９に、データの読み込み機能を付加した、パラレル・インタフェースの回路例を示す。同図に於いて、１１０，１１１，１１２，１２０は、図５と同じであるが、１１１のｎビットのデータ・バッファは双方向バッファを用いている。１１３は追加になったインバーテッドＮＡＮＤ回路であって、ａのＰＯＲＴＳＥＬ＿Ｌ信号と、ｌで示すプロセッサの読み込み信号（ＲＤ＿Ｌ）とのインバーテッドＮＡＮＤ条件によってｆのＰＯＲＴＲＤ＿Ｌ信号をアサートする。このＰＯＲＴＲＤ＿Ｌ信号は、このパラレル・インタフェース（ポート）に対する読み込み動作であることを示す。ａ〜ｅ信号は図５と同じである。
【００６９】
１１１のバッファ回路では、ｃのＰＯＲＴＷＲ＿Ｌ信号がアサートされている間は、出力方向をイネーブルにし、ＰＯＲＴＲＤ＿Ｌがアサートされている間は、入力方向をイネーブルにする。
【００７０】
デバッグ用のパラレル・インタフェースをこのように構成すると、装置のセルフ・デバッグ環境として、更に利用範囲が広がる。
【００７１】
例えば、図１０に示す回路は、その１つの例であって、これは、特定の事象（プログラム内の特定のポジションで、計数専用のコードを埋め込んでおく）が何回発生したかを計数するための回路例である。
【００７２】
図１０に於いて、７００は発生事象を計数するための付加回路の全体、７０１は計数する事象のコードを設定する部分であって、ＤＩＰスイツチなどを用いて可変にすることもできるし、書き換え可能なＥＥＰＲＯＭのようなデバイスで半固定的にすることもできるし、完全に固定のコード（例えば「Ｎ」に相当する固定コードなど）にすることもできる、
次に、７０２は、７０１で設定された計数コードと、パラレル・インタフェースから出力されるコードとを比較するためのコンパレータ回路Ｃである。７０３は、コンパレータＣの一致検出信号と、パラレルーインタフェースから出力される「ＰＯＲＴＷＲ＿Ｌ」信号のインバーテッドＮＡＮＤ条件をとるための回路である。コンパレータＣから一致条件が出ている間にＰＯＲＴＷＲ＿Ｌが与えられるとｍ部のＣＯＵＮＴ＿Ｌ信号をアサートする。
【００７３】
７０４は、Ｃ０ＵＮＴ＿Ｌ信号のパルス数をカウントするためのアップ・カウンタであり、ＣＬＫ端子に与えられるＣＯＵＮＴ＿Ｌのパルス数を計数する。ＣＬＲ端子には、ＲＥＳＥＴ＿Ｌ信号が与えられており、この信号がアサートされると、カウンタを初期化する。また、ＯＥ端子には、ＰＯＲＴＲＤ＿Ｌ信号が与えられており、この信号がアサートされると、計数結果をデータラインに出力してプロセッサ側でこれを読み込むことができる。
【００７４】
このような回路を、図９のパラレル・インタフェースに接続すると、プログラムのデバッグの一環として、特定事象が、何回繰り返しているのかを計数する機能を持たせることができ、それをセルフ開発環境（オンライン・デバッグ環境）にてその装置自体のプロセッサが読み込んで処理することができるようになる。
【００７５】
＜実施形態５＞
更に、図９に示す、パラレル・インタフェースを用いた場合には、図１１に示すようなトレース用メモリ回路を外付けすることにより、スナップ・ショット機能によるプログラムの実行状況を、一旦メモリ回路上に蓄積した上で、トレース停止後に、そのままそれをセルフ開発環境（オンライン・デバッグ環境）にてその装置自体のプロセッサが読み込んで処理、解析することができるようになる。
【００７６】
この例を示す図１１は、前記の実施形態２にて提案した回路（図６）と全く同じであるが、本体側のパラレル・インタフェースを図９のように進化させることによって、セルフ開発環境で使用できることになり、この回路の活用範囲が大きく広がる。
【００７７】
【発明の効果】
本発明の趣旨は、シリアル・インタフェースを用いた、プログラムのセルフ開発環境に於いて、プログラムの実行状況をトレースするための手法の１つであるスナップ・ショット機能に関して、実行プログラムに埋め込まれるトレース・コードの出力をシリアル・インタフェースに対して行うのではなく、装置上に、簡易なパラレル・インタフェースを設けた上で、そのパラレル・インタフェースに対して、出力するようにしたため、トレース・コードの出力を迅速に行うことができ、リアルタイム性の要求されるプログラムのデバッグについても、便利なスナップ・ショット機能を利用できる可能性が高くなった。
【００７８】
実施形態１では、極めて簡易なパラレル・インタフェース回路を付加することによって、外部から、プログラムの実行状況を簡易にトレースできる環境を提供できる。
【００７９】
実施形態２のトレース用メモリ回路機能は、本体装置に設けられる極めて簡易なスナップ・ショット監視用のパラレル・インタフェースに接続でき、本体に常設する必要がないため、本体の価格の上昇を抑えると共に、部品点数を増やさないことによって装置の省スペース化、高信頼性化に寄与しつつ、必要時にはデバッグに有効活用することができる。また、装置が設置された現場に解析装置を持ち込めないような場合には、実機のプログラム実行状況を現場でトレースして、それを離れた場所にある解析環境で解析するようなスタイルを運用可能にする。
【００８０】
実施形態３では、装置内のプログラムの実行時間の計測のために、計測開始ポイント（開始コード）と計測終了ポイント（終了コード）をプログラムに埋め込むことによって、外部からは、１本の信号のパルス幅を測定するだけでよいという、簡便な事象発生間隔測定ができ、装置のデバッグ環境を一段と向上させることができる。
【００８１】
実施形態４では、プログラムの処理回数を計数するために、計数したいポイントに計数コードを埋め込んでおくことによって、そのポイントの処理回数を外部で計数し、それを、デバッグ対象装置の本体から読み込めるようにしたため、より簡便で、実使用状態に近い環境での、装置デバッグ作業を提供できる。
【図面の簡単な説明】
【図１】本発明の実施形態１を示す制御装置のスナップ・ショット機能の実行環境。
【図２】実施形態１におけるパラレル・インタフェース部１１０の最も簡単な構成例。
【図３】実施形態１におけるパラレル・インタフェース部への書き込み動作波形。
【図４】実施形態１におけるパラレル・インタフェース部を外部通知に用いた場合のスナップ・ショット実行例。
【図５】本発明の実施形態２におけるパラレル・インタフェース部に電源とリセットを加えた例。
【図６】実施形態２における外部接続コネクタ部に接続可能なトレース用メモリ回路例。
【図７】本発明の実施形態３における事象発生間隔を測定するための付加回路例。
【図８】実施形態３における事象発生測定回路の動作波形。
【図９】本発明の実施形態４におけるパラレル・インタフェース部に読み込み機能を加えた例。
【図１０】実施形態４における発生事象を計数するための付加回路例。
【図１１】本発明の実施形態５における本体で読み込み可能なトレース用メモリ回路例。
【図１２】従来の制御装置に於けるスナップ・ショット機能の実行環境。
【図１３】従来の実行ポイントＡに於けるスナップ・ショット動作時のプログラム実行例。
【符号の説明】
１００…制御装置全体
２００…制御対象
３００…コンソール・ターミナル装置
１０１…マイクロ・プロセッサ
１０２…メモリ回路
１０３…アドレス・デコーダ回路
１０４…制御インタフェース
１０５…シリアル・コントロール回路
１０６…物理インタフェース回路
１０７…外部接続コネクタ
１１０…パラレル・インタフェース
１２０…接続コネクタ
４００…測定器
１１１…バッファ回路
５００…トレース用メモリ回路全体
５０１…メモリ
５０２…アドレス・カウンタ
６００…事象発生間隔測定回路全体
６０１…開始コード設定部
６０２、６０５…コンパレータ
６０４…終了コード設定部
７００…付加回路全体
７０１…計数コード設定部
７０２…コンパレータ
７０４…アップ・カウンタ
【図１】
2004280480.tif 000003
【図２】
2004280480.tif 000004
【図３】
2004280480.tif 000005
【図４】
2004280480.tif 000006
【図５】
2004280480.tif 000007
【図６】
2004280480.tif 000008
【図７】
2004280480.tif 000009
【図８】
2004280480.tif 000010
【図９】
2004280480.tif 000011
【図１０】
2004280480.tif 000012
【図１１】
2004280480.tif 000013
【図１２】
2004280480.tif 000014
【図１３】
2004280480.tif 000015