(57)【要約】【課題】ソースプログラムにデバッグ用のプログラムを追加するという煩雑な処理を行うことなく、任意のタスクや関数の実行タイミング及び実行環境を適正に評価できるソフトウェア開発装置等を提供する。【解決手段】制御プログラムを格納するメモリと、メモリに格納された制御プログラムを実行する模擬ＣＰＵと、周辺回路を模擬する模擬周辺回路を備えた模擬マイクロコンピュータと、それを管理するホストコンピュータとからなり、制御プログラムに含まれる所定のタスクまたはタスクに含まれる所定の関数の先頭アドレスが模擬ＣＰＵのプログラムカウンタの値と一致したときに割込みを発生させ、模擬ＣＰＵによる制御プログラムの実行状態をモニタして、その結果をグラフィック表示するソフトウェア開発装置。【選択図】図５
2010244376.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムを実行するＣＰＵとその周辺回路が内部に組み込まれたマイクロコンピュータを模擬し、前記制御プログラムを格納するメモリと、前記メモリに格納された制御プログラムを実行する模擬ＣＰＵと、前記周辺回路を模擬する模擬周辺回路を備えた模擬マイクロコンピュータと、
前記模擬マイクロコンピュータを管理するホストコンピュータと、
がネットワーク接続されているソフトウェア開発装置であって、
前記制御プログラムに含まれる所定のタスク、または当該タスクに含まれる所定の関数の先頭アドレスを、前記ホストコンピュータを介して前記模擬マイクロコンピュータに設定するアドレス設定部と、
前記アドレス設定部で設定されたアドレスと、前記模擬ＣＰＵのプログラムカウンタの値が一致したときに起動され、前記模擬ＣＰＵによる制御プログラムの実行状態をモニタするモニタ処理部と、前記モニタ処理部によりモニタされたデータをホストコンピュータに送信するモニタデータ送信部と、
を備えていることを特徴とするソフトウェア開発装置。
【請求項２】
前記モニタ処理部は、前記タスクまたは関数を起動した割込みハンドラを含む割込みハンドラの遷移情報、及び、前記タスクまたは関数により操作されるメモリ上の変数をモニタすることを特徴とする請求項１記載のソフトウェア開発装置。
【請求項３】
前記ホストコンピュータに、前記モニタデータ送信部から送信されたモニタ情報に基づいて、前記タスクまたは関数の実行状態、または変数の更新状態をグラフィック表示する表示処理部を備えていることを特徴とする請求項１または２記載のソフトウェア開発装置。
【請求項４】
前記表示処理部は、変数が更新された場合に、当該変数を更新したタスクまたは関数を関連付けて表示する請求項３記載のソフトウェア開発装置。
【請求項５】
制御プログラムを実行するＣＰＵとその周辺回路が内部に組み込まれたマイクロコンピュータを模擬し、前記制御プログラムを格納するメモリと、前記メモリに格納された制御プログラムを実行する模擬ＣＰＵと、前記周辺回路を模擬する模擬周辺回路を備えた模擬マイクロコンピュータと、
前記模擬マイクロコンピュータを管理するホストコンピュータと、
がネットワーク接続されているソフトウェア開発装置を用いたデバッグ方法であって、
前記制御プログラムに含まれる所定のタスク、または当該タスクに含まれる所定の関数の先頭アドレスを、前記ホストコンピュータを介して前記模擬マイクロコンピュータに設定するアドレス設定ステップと、
前記アドレス設定ステップで設定されたアドレスと、前記模擬ＣＰＵのプログラムカウンタの値が一致したときに起動し、前記模擬ＣＰＵによる制御プログラムの実行状態をモニタして、前記ホストコンピュータに送信するモニタステップと、
前記モニタステップで送信されたモニタデータに基づいて、前記タスクまたは関数の実行状態、または前記タスクまたは関数で操作される変数の更新状態をグラフィック表示する表示処理ステップと、
を実行することを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御するマイクロコンピュータに組み込まれるソフトウェアを開発し評価するためのソフトウェア開発装置、及び、ソフトウェア開発装置を用いたデバッグ方法に関する。
【背景技術】
【０００２】
電子機器を制御するマイクロコンピュータを備えた電子制御装置、例えば車両のエンジンを制御する電子制御ユニット（ＥＣＵ）のような電子制御装置では、エンジン等の制御対象機器の高性能化、高機能化といった技術トレンドに沿って、使用されるマイクロコンピュータの性能も年々進化しており、現状の電子制御装置に使用されているマイクロコンピュータの性能よりも進化したマイクロコンピュータを想定して新しいソフトウェア、つまり制御ロジックが開発されている。
【０００３】
通常、性能が進化した次世代のマイクロコンピュータは開発時点で存在せず、現在のマイクロコンピュータよりも性能を向上させた次期マイクロコンピュータが組み込まれた電子制御装置が実在しない場合、現状のマイクロコンピュータをベースにして制御ロジックの先行開発を行なわざるを得ない。
【０００４】
しかし、現状のマイクロコンピュータが組み込まれた電子制御装置を用いて制御ロジックの先行開発を行う場合には、現状のマイクロコンピュータに搭載されているＣＰＵの処理能力の不足、メモリ容量の不足、周辺リソースの不足等の問題があるため、次期マイクロコンピュータ及びそのアプリケーションプログラムの開発が遅れ、新製品の開発に支障を来たしていた。
【０００５】
尚、現状の電子機器に組み込まれているマイクロコンピュータは、電子機器のコストを低く抑えるために、現状のシステムに最適な仕様でＣＰＵ性能及び周辺機能が選択され、ＣＰＵやＣＰＵの周辺リソースが１つのパッケージの中に組み込まれているため、それぞれの機能変更はマイクロコンピュータを変更しない限り不可能である。
【０００６】
そこで、特許文献１には、アプリケーション処理機能と通信機能を備えた中央ブロックと、マイクロコンピュータの周辺装置を擬似的にソフトウェアで実現して入出力処理を行う疑似マイクロコンピュータ周辺装置、演算機能、及び通信機能を有し、中央ブロックとＰＣＩバスで接続される周辺ブロックと、電子制御ユニットのハードウェアに相当する回路を有し、周辺ブロックに接続するインタフェース回路ブロックとを備えたソフトウェア開発装置が提案されている。
【０００７】
当該ソフトウェア開発装置は、中央ブロックの通信機能と、疑似マイクロコンピュータ周辺装置との間にある演算機能に、バスコントローラが設けられ、ＰＣＩバスで中央ブロックの通信機能とこのバスコントローラとの間が接続され、バスコントローラと疑似マイクロコンピュータ周辺装置との間は内部バスで接続され、ＰＣＩバス、バスコントローラ、及び内部バスを介して、通信機能と疑似マイクロコンピュータ周辺装置との間で、直接データの送受信が行われるように構成されている。
【０００８】
また、特許文献２には、第１の中央処理装置及びＲＡＭを含み、マイクロコンピュータコアに相当する機能を具備する第１のブロックと、第２の中央処理部を含みマイクロコンピュータリソースに相当する機能を有する第２のブロックと、前記第１及び第２のブロックを接続するバスとを有する、マイクロコンピュータのロジック開発装置において、共有メモリを具備し、前記第１のブロックとＲＡＭ計測装置とに接続されるＲＡＭ計測ブロックを設け、前記ＲＡＭ計測装置による前記第１ブロックのＲＡＭをモニタする処理を、前記ＲＡＭの内容を前記共有メモリに書き込む処理と、前記ＲＡＭ計測装置に前記共有メモリの内容を送信する処理とに分けると共に、それぞれの処理タイミングを分離するマイクロコンピュータのロジック開発装置が提案されている。
【０００９】
特許文献２に記載された技術によれば、マイクロコンピュータのロジック開発装置に、既存のＲＡＭ計測装置を接続し、高速サンプリングのＲＡＭモニタを実現することができるようになる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−２３４５３０号公報
【特許文献２】特開２００５−２５６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
先行開発されたソフトウェアの評価に際して、以下の手順で上述したソフトウェア開発装置が活用される場合がある。
【００１２】
先ず、評価対象となるソフトウェアに含まれる所定の関数が、ソフトウェア開発装置で実行されているか否か等を判別するために、当該所定の関数の実行前後にフラグがセットされる変数操作プログラムを、例えばＣ言語で生成されたソースプログラムに追加した後に、コンパイルして実行プログラムを生成する。
【００１３】
次に、当該実行プログラムをソフトウェア開発装置に移植して実行し、ＲＡＭ上のフラグ領域をモニタして当該所定の関数が実行されたことを確認する。
【００１４】
或いは、所定の関数の実行の開始時または終了時に表示装置にその旨を表示するデバッグ文を、ソースプログラムに追加した後に、コンパイルして実行プログラムを生成する。
【００１５】
前者の場合、モニタされたＲＡＭのフラグの変化により当該所定の関数が実行されたことが確認でき、後者の場合、表示装置に表示されたデバッグ文に基づいて当該所定の関数が実行されたことが確認できる。
【００１６】
しかし、ソースプログラムに含まれる全ての関数に対応して個別に変数操作プログラムやデバッグ文を追加すると、演算負荷が増大して処理時間が長くなり、予め想定されている実行時間内で各関数が実行できなくなる。
【００１７】
そこで、ソースプログラムに追加する変数操作プログラムやデバッグ文を制限すると、評価対象となる関数に対応して、個別にソースプログラムに変数操作プログラムやデバッグ文を追加する編集処理が必要になり、その都度コンパイルして実行プログラムを生成し、ソフトウェア開発装置に移植するという非常に煩雑な処理が必要となる。
【００１８】
また、変数操作プログラムによって、関数が実行されたか否かという結果を判別することはできるが、関数が割り付けられているタスクがどのような状況で実行されたのかが判断できないという問題があった。
【００１９】
例えば、タスクが割込み処理で起動されるように設定されている場合、優先順位付けされた複数の割込み処理のどのフェーズで実行されているのか、その時の処理時間が適正であるのか等の評価が行えないのである。
【００２０】
また、デバッグ文をソースプログラムに挿入する場合、表示装置に表示されたデバッグ文に基づいて当該所定の関数が実行されたことが確認できるだけであり、その処理によりＲＡＭ上の変数が変化したことをＲＡＭモニタで認識しても、デバッグ文の表示タイミングと変数の変化を同期して計測することができないという問題があった。
【００２１】
本発明は、上述の問題点に鑑み、ソースプログラムにデバッグ用のプログラムを追加するという煩雑な処理を行うことなく、任意のタスクや関数の実行タイミング及び実行環境を適正に評価できるソフトウェア開発装置、及び、ソフトウェア開発装置を用いたデバッグ方法を提供する点にある。
【課題を解決するための手段】
【００２２】
上述の目的を達成するため、本発明によるソフトウェア開発装置の特徴構成は、制御プログラムを実行するＣＰＵとその周辺回路が内部に組み込まれたマイクロコンピュータを模擬し、前記制御プログラムを格納するメモリと、前記メモリに格納された制御プログラムを実行する模擬ＣＰＵと、前記周辺回路を模擬する模擬周辺回路を備えた模擬マイクロコンピュータと、前記模擬マイクロコンピュータを管理するホストコンピュータと、がネットワーク接続されているソフトウェア開発装置であって、前記制御プログラムに含まれる所定のタスク、または当該タスクに含まれる所定の関数の先頭アドレスを、前記ホストコンピュータを介して前記模擬マイクロコンピュータに設定するアドレス設定部と、前記アドレス設定部で設定されたアドレスと、前記模擬ＣＰＵのプログラムカウンタの値が一致したときに起動され、前記模擬ＣＰＵによる制御プログラムの実行状態をモニタするモニタ処理部と、前記モニタ処理部によりモニタされたデータをホストコンピュータに送信するモニタデータ送信部と、を備えている点にある。
【００２３】
上述の構成によれば、アドレス設定部で設定されたアドレスと、模擬ＣＰＵのプログラムカウンタの値が一致すると、モニタ処理部によって模擬ＣＰＵの実行状態がモニタされ、モニタデータ送信部によってモニタデータがホストコンピュータに送信される。
【００２４】
従って、ソースプログラムに変数操作プログラム等を追加するような煩雑な処理を行うことなく、動作を検証したいタスクや関数の先頭アドレスをアドレス設定部を介して設定するだけで、模擬ＣＰＵの実行状態がモニタされ、タスクや関数の実行タイミング等が適正に評価できるようになる。
【発明の効果】
【００２５】
以上説明した通り、本発明によれば、ソースプログラムにデバッグ用のプログラムを追加するという煩雑な処理を行うことなく、任意のタスクや関数の実行タイミング及び実行環境を適正に評価できるソフトウェア開発装置等を提供することができるようになった。
【図面の簡単な説明】
【００２６】
【図１】本発明によるソフトウェア開発装置を構成する模擬マイクロコンピュータと、実マイクロコンピュータの構成を対比したブロック構成図
【図２】本発明によるソフトウェア開発装置で実行されるプログラムに基づいた模擬マイクロコンピュータ、ホストコンピュータの機能ブロック構成図
【図３】マザーボードのＣＰＵで実行される制御プログラムに含まれるタスクの遷移状態の説明図
【図４】制御プログラムのデバッグ手順の要部を説明するフローチャート
【図５】制御プログラムの実行中にリアルタイムで表示されるデバッグ画面の説明図
【図６】制御プログラムの停止後に表示されるデバッグ画面の説明図
【発明を実施するための形態】
【００２７】
以下に、本発明によるソフトウェア開発装置の実施形態を説明する。
【００２８】
ソフトウェア開発装置は、被制御部を制御するマイクロコンピュータが搭載された電子制御ユニット（以下、「ＥＣＵ」と記す。）を模擬する装置で、例えば、車両に搭載されるエンジンを制御するＥＣＵに替えて、エンジンまたはエンジンを模擬するシミュレータに接続される。
【００２９】
図１に示すように、ＥＣＵ１００は、マイクロコンピュータ１０１と、マイクロコンピュータ１０１の入出力ポートと接続される入出力回路１０６と、入出力回路１０６とエンジンに配置されたセンサやアクチュエータとを接続するハーネスのコネクタ１０７等を備えて構成され、それらがプリント基板に実装されている。
【００３０】
図１の左側に示されているように、マイクロコンピュータ１０１は、ＣＰＵ１０２と、ＣＰＵ１０２で実行されるエンジン制御プログラムが記憶されたＲＯＭやＣＰＵ１０２のワーキングエリアとして使用されるＲＡＭを備えたメモリ１０３と、ＣＰＵ１０２と内部バスで接続された周辺リソース１０５が一つにパッケージに収容されている。
【００３１】
周辺リソースには、入力系のリソースと出力系のリソースが含まれる。入力系のリソースには、デジタル信号を扱う入力ポート、ラッチポート、アナログ入力を扱うＡ／Ｄ変換ポート、パルス入力を扱うインプットキャプチャポート等が含まれる。出力系のリソースには、デジタル信号を出力する出力ポート、パルス信号を出力するＰＷＭポート、コンペアポート等が含まれる。
【００３２】
マイクロコンピュータ１０１の内部には、これらの周辺リソースに加えて、内部タイマや割込みコントローラが設けられている。
【００３３】
入力ポートを介して車両の運転状態を表す各センサやスイッチ類からの信号が取り込まれると、エンジン制御プログラムに従ってＣＰＵ１０２がエンジンの状態を判別し、必要な信号が出力ポートから各種アクチュエータに出力され、エンジンが適正な状態に制御される。
【００３４】
図１の右側に示されているように、ソフトウェア開発装置１は、ラックに収容されたマザーボード１０と、単一または複数のＩ／Ｏボード２０と、インタフェースボード３０（以下、「ＩＦボード」と記す。）を備えている。
【００３５】
マイクロコンピュータ１０１のＣＰＵ１０２の動作がマザーボード１０のＣＰＵ１１で模擬され、マイクロコンピュータ１０１の周辺リソース１０５がＩ／Ｏボード２０で模擬される。つまり、マザーボード１０とＩ／Ｏボード２０によってマイクロコンピュータ１０１が模擬される。
【００３６】
ＩＦボード３０は、ＥＣＵ１００の入出力回路１０６を模擬し、コネクタ３１を介してエンジンと接続するハーネス、または、エンジンを模擬するシミュレータが接続される。
【００３７】
ＩＦボード３０は、ポート割付変換ボードと、ポート割付変換ボードのコネクタに挿入される複数の標準回路ボード及び機能ボードでなる入出力回路を備え、ポート割付変換ボードに挿入される標準回路ボード及び機能ボードの組み合わせにより任意の数の入出力回路を実現できるように構成されている。
【００３８】
標準回路ボードはウォーニングランプの点灯信号やＣＡＮバス等のシリアル信号を入出力するドライバ回路やバッファ回路を備えたデジタル信号回路で構成され、機能ボードはパワートレーン出力回路、アナログ信号入出力回路、エンジンに対する噴射信号、点火信号、電子スロットル制御信号等を入出力する信号処理用の低機能マイクロコンピュータを備えた入出力処理回路で構成されている。
【００３９】
本発明によるソフトウェア開発装置１は、上述したＥＣＵ１００に搭載されるべきターゲットとなる新規なマイクロコンピュータ（以下、「仮想マイクロコンピュータ」と記す。）を模擬して、新規または改良されたエンジン制御プログラムの動作を検証するエミュレータとして機能する。
【００４０】
マザーボード１０には、ＣＰＵ１１、ＲＯＭやＲＡＭを備えたメモリ１２、割込み処理部１３、内部タイマ１４、ＰＣＩバスＩＦ１５、ＬＡＮＩＦ１６等が搭載され、それらがチップセットを含む内部バスで接続されている。
【００４１】
メモリ１２には、オペレーティングシステム（以下、「ＯＳ」と記す。）、ＰＣＩバスＩＦ１５用のＰＣＩバスドライバ、ＬＡＮＩＦ１６用のＬＡＮ通信ドライバが格納されている。さらに、ＬＡＮＩＦ１６を介して接続されたホストコンピュータ５０から、評価対象であるエンジン制御プログラム、Ｉ／Ｏドライバ、評価用のモニタプログラム等が送信され、当該メモリ１２に格納される。
【００４２】
マザーボード１０は、次世代のＥＵＣに搭載されるマイクロコンピュータを模擬するために、それに見合った十分な演算性能、処理速度、メモリ容量を備える必要がある。そのため、ＣＰＵ１１には、例えば、ペンティアムプロセッサ（ペンティアムはインテル社の登録商標）のような汎用のパーソナルコンピュータに用いられる数ＧＨｚの高機能のＣＰＵが用いられる。
【００４３】
ＩＯボード２０には、ＣＰＵ２３、ＲＯＭやＲＡＭを備えたメモリ２２、ＰＣＩバスＩＦ２３、仮想マイクロコンピュータの入出力用の周辺リソースを模擬するマイクロコンピュータ２４，２５等が搭載され、それらが内部バス及びバスコントローラを介して接続されている。
【００４４】
マイクロコンピュータ２４，２５に内蔵されるＲＯＭに周辺リソースとして機能するプログラムが格納され、当該プログラムがマイクロコンピュータ２４，２５のＣＰＵで実行されることにより、上述した入力ポート、ラッチポート、Ａ／Ｄ変換ポート、インプットキャプチャポート、出力ポート、ＰＷＭポート、コンペアポート等の機能が模擬される。従って、当該プログラムの変更により様々な周辺リソースがフレキシブルに構成できる。
【００４５】
マザーボード１０とＩ／Ｏボード２０がＰＣＩバスで接続され、当該ＰＣＩバスを介したデータ、つまり変数の授受が、マザーボード１０のメモリ１２に格納されたＩ／Ｏドライバと、Ｉ／Ｏボード２０のメモリ２２に格納されたＩ／Ｏドライバによって実行される。
【００４６】
マザーボード１０のＣＰＵから出力される変数データがＩ／Ｏドライバを介して共有メモリに書き込まれ、周辺リソースであるマイクロコンピュータ２４，２５の出力ポートからＩＦボード３０に制御信号として出力される。また、周辺リソースであるマイクロコンピュータ２４，２５の入力ポートから取り込まれた信号は変数データに変換されて共有メモリに書き込まれ、Ｉ／Ｏドライバを介してマザーボード１０に送信される。尚、ＰＣＩバスと共有メモリ２２とマイクロコンピュータ２４，２５間のデータ転送はバスコントローラにより高速でＤＭＡ転送される。
【００４７】
マザーボード１０及びＩＯボード２０のＩ／Ｏドライバと、共有メモリによって、仮想マイクロコンピュータのＣＰＵと入出力用の周辺リソースを接続する内部バスが模擬される。
【００４８】
周辺リソースであるマイクロコンピュータ２４，２５の入力ポートに入力されたセンサ等の信号が、Ｉ／Ｏドライバを介して共有メモリに書き込まれ、ＰＣＩバスを介してマザーボード１０のメモリ１２に書き込まれ、ＣＰＵ１１によって処理される。
【００４９】
つまり、マザーボード１０とＩ／Ｏボード２０のそれぞれに備えたＩ／Ｏドライバによって、ＰＣＩバス経由でボード間の同期が取られ、入出力データの授受が行われる。
【００５０】
ＩＯボード２０のＣＰＵ２１は、ＰＣＩバスＰＣＩ通信処理等が実行できる程度の処理能力があればよく、例えば動作周波数が１６ＭＨｚ、３２ビットＣＰＵ程度であればよい。
【００５１】
即ち、マザーボード１０とＩ／Ｏボード２０によって、制御プログラムを実行するＣＰＵとその周辺回路が内部に組み込まれたマイクロコンピュータを模擬し、制御プログラムを格納するメモリ１２と、メモリ１２に格納された制御プログラムを実行する模擬ＣＰＵ１１と、周辺回路を模擬する模擬周辺回路２４，２５を備えた模擬マイクロコンピュータが構成されている。
【００５２】
当該模擬マイクロコンピュータを管理するホストコンピュータ５０は、キーボードやマウス等の入力装置と、表示装置と、ハードディスクが接続され、ハードディスクには、エンジン制御プログラム、Ｉ／Ｏドライバ、評価用のモニタプログラム、及び、エンジン制御プログラムが実行される当該模擬マイクロコンピュータを操作し、その実行状態を表示する管理プログラムが格納されている。
【００５３】
上述したソフトウェア開発装置に電源が投入されると、オペレータの操作によって、ホストコンピュータ５０からエンジン制御プログラム、ＩＯドライバ、評価用のモニタプログラムの一部がマザーボード１０のメモリ１２にロードされ、ホストコンピュータ５０で管理プログラム及びモニタプログラムが起動される。
【００５４】
詳述すると、図２に示すように、ホストコンピュータ５０には、管理プログラム、モニタプログラム、ＬＡＮ通信ドライバ、入出力ドライバ等のプログラムがインストールされ、ＯＳの管理下でホストコンピュータ５０のＣＰＵによって各プログラムが実行される。
【００５５】
マザーボード１０には、エンジン制御プログラム、ＩＯドライバ、ＰＣＩバスドライバ、ＬＡＮ通信ドライバ、モニタプログラム等がインストールされ、ＯＳの管理下でＣＰＵ１１によって各プログラムが実行される。
【００５６】
マザーボード１０のＣＰＵ１１によって実行されるエンジン制御プログラムは、複数のタスクの集合体で構成されており、各タスクには、所定のデータ処理を実行する複数の関数が組み込まれている。
【００５７】
例えば、エンジンから入力されるクランクパルス信号に基づいて、エンジン回転数やクランク角度を求める関数が組み込まれたタスク、クランク信号とカム信号に基づいて気筒を判別する関数が組み込まれたタスク、各気筒に対する噴射タイミングや点火タイミングを求める関数が組み込まれたタスク、車速パルス信号に基づいて車速を求める関数が組み込まれたタスク等である。
【００５８】
各タスクは、タイマ割込みで実行される時間同期タスクと、入出力割込みで実行される非時間同期タスクが含まれ、例えば、１ｍｓｅｃ．タイマ割込み、インプットキャプチャ割込み、アウトプットコンペア割込み、Ａ／Ｄ変換割込み等が含まれる。
【００５９】
エンジン制御プログラムには、予め設定された優先順位に基づいて各割込み処理を管理するスケジューラを備えたリアルタイムＯＳが組み込まれ、当該スケジューラによって優先順位に従って割込みハンドらが起動される。
【００６０】
割込みハンドラが起動されると、メモリ１２に区画されたスタック領域にプログラムカウンタや各種レジスタの値がセーブされた後にタスクが起動され、タスクが終了すると、セーブされたプログラムカウンタや各種レジスタの値が元に戻されて割込み処理が終了する。
【００６１】
スケジューラは、エンジン制御プログラムの割込みハンドラを管理し、内部タイマ１４で管理されるタイマ値を読み出して、各割込みハンドラの起動時間、終了時間を管理するとともに、各割込みハンドラによって起動されているタスクの実行状態、つまり、優先順位が高い他の割込みハンドラによりタスクの処理が中断しているサスペンド状態か、タスクが処理されているアクティブ状態かといった割込みハンドラの遷移情報を管理し、メモリ１２に区画された割込み処理管理領域にそれらの管理情報を記憶する。
【００６２】
図３は、優先順位の低いタスクＥの実行中に、優先順位が高いタスクＤが起動され、タスクＤの実行中にさらに優先順位が高いタスクＣが起動され、タスクＣの終了後にタスクＤが再開され、その終了後にタスクＥが再開される様子が示されている。
【００６３】
スケジューラは、割込みハンドラの起動処理または終了処理の際に、図３に示すように、タスク毎に、タスク名、優先順位、タスク起動時刻、タスク終了時刻、タスク処理時間、タスクサスペンド時間、タスクアクティブ時間、動作中のタスク数等の遷移情報を割込み処理管理領域に格納するのである。
【００６４】
尚、ＩＯボード２０に備えた周辺リソースであるマイクロコンピュータ２４，２５で発生する入出力割込みに対応して、ＩＯボード２０のＣＰＵ２１により共有メモリに割込みフラグがセットされ、当該割込みフラグがＰＣＩバスを介してマザーボード１０のメモリ１２に書き込まれる。
【００６５】
マザーボード１０では、割込み処理部１３でＰＣＩ割込みの発生が検知されるとＣＰＵ１１に割込みがかかり、エンジン制御プログラムとは別途に設けられたＰＣＩ割込みの割込みハンドラが起動され、メモリ１２に書き込まれた割込みフラグに対応してエンジン制御プログラムのスケジューラに割込み要求が出される。スケジューラによって、メモリ１２に書き込まれた割込みフラグに対応する割込みハンドラが起動される。
【００６６】
評価用のモニタプログラムは、ホストコンピュータ５０とマザーボード１０で実行され、ＲＡＭモニタ部と、モニタ条件設定部と、モニタ処理部と、モニタデータ送信部と、表示処理部として機能するプログラムである。
【００６７】
ＲＡＭモニタ部は、ＰＣＩバスを介してＩ／Ｏボード２０に設けた共有メモリとの間で授受されるデータ、つまり変数をモニタして、マザーボード１０のメモリ１２に区画された共有メモリモニタ領域に格納し、モニタ条件設定部で設定されたモニタ条件を満たすときに、共有メモリモニタ領域から該当するデータをホストコンピュータ５０に出力する。
【００６８】
モニタ条件設定部は、エンジン制御プログラムに含まれる所定のタスク、または当該タスクに含まれる所定の関数の先頭アドレスを、ホストコンピュータ５０を介して模擬マイクロコンピュータに設定するアドレス設定部と、メモリ１２に区画された共有メモリモニタ領域に格納されているデータのうち、チェックする必要のあるデータを特定する情報と、そのデータと対比するモニタデータを設定するモニタデータ設定部を含む。
【００６９】
モニタ処理部は、アドレス設定部で設定されたアドレスと、模擬ＣＰＵのプログラムカウンタの値が一致したとき、または、モニタデータ設定部で設定されたモニタデータと、共有メモリモニタ領域のデータが一致したときに起動され、模擬ＣＰＵ１１で実行されるエンジン制御プログラムの実行状態をモニタして、メモリ１２に区画されたデバッグ情報管理領域に格納する。
【００７０】
モニタデータ送信部は、モニタ処理部によりモニタされ、モニタデータ領域に格納されたデータをホストコンピュータに送信する。
【００７１】
表示処理部は、モニタデータ送信部により送信されたモニタデータをホストコンピュータ５０の表示装置に表示する。
【００７２】
以上説明したモニタプログラムのうち、ＲＡＭモニタ部、モニタ条件設定部の一部、モニタ処理部、及び、モニタデータ送信部として機能するプログラムがマザーボード１０のメモリ１２インストールされ、モニタ条件設定部の一部、表示処理部がホストコンピュータ５０にインストールされる。
【００７３】
ホストコンピュータ５０の管理プログラムにより、エンジン制御プログラムの実行条件、評価用のモニタプログラムの実行条件等を設定するＧＵＩ操作画面が表示装置に表示され、オペレータにより入力装置を介して設定された実行条件が、ホストコンピュータ５０から模擬マイクロコンピュータに送信される。
【００７４】
さらに、オペレータによって、ＧＵＩ操作画面を介してエンジン制御プログラムの起動操作が行なわれると、模擬マイクロコンピュータに起動指令が送信され、エンジン制御プログラムが起動される。
【００７５】
エンジン制御プログラムの実行条件には、マザーボード１０とＩ／Ｏボード２０との間で共有メモリを介して授受される入出力データの定義情報と、入出力データの共有メモリへの先頭アドレスの割り付け情報、ＲＡＭモニタ部によりモニタされたデータのうち、ホストコンピュータ５０へ送信すべきデータを特定する情報等の初期設定条件と、エンジン制御プログラムの起動、停止を制御する操作司令等が含まれる。
【００７６】
評価用のモニタプログラムの実行条件には、エンジン制御プログラムに含まれるタスクのうち、デバッグ対象となるタスクまたは関数のプログラムアドレス情報、及び、必要に応じて設定される共有メモリモニタ領域に格納されている変数データのうち、チェックする必要のある変数データを特定するモニタデータ情報と、モニタデータ情報によって特定される変数データの値と対比する対比データが含まれる。また、当該変数データと関連する変数データを同時にモニタするように、関連付けて複数の変数データを設定できるように構成されている。
【００７７】
アドレス設定部は、ホストコンピュータ５０から送信されたモニタプログラムの実行条件に含まれるプログラムアドレスを、割込み処理部１３に設けられているＰＣ割込みレジスタに書き込む。尚、ＰＣ割込みレジスタは複数（本実施形態では５つ）備えており、同時に５つのプログラムアドレスを設定できる。
【００７８】
また、モニタデータ設定部は、モニタデータ情報と対比データをメモリ１２に区画されたデバッグ情報管理領域に格納する。
【００７９】
割込み処理部１３は、ＰＣ割込みレジスタに書き込まれたプログラムアドレスと、ＣＰＵ１１によって実行されるエンジン制御プログラムのプログラムアドレスを比較する比較器を備え、両アドレスが一致するとＣＰＵ１１に割込みをかけるように構成されている。
【００８０】
尚、割込み処理部１３によりＣＰＵ１１に割込みがかかると、ＯＳによって割込みの種類が判別され、割込み種類に対応するアプリケーションが起動される。エンジン制御プログラムに関する割込みであれば、先ず、エンジン制御プログラムのスケジューラが起動され、スケジューラの管理下で対応する割込みハンドラが起動される。
【００８１】
つまり、エンジン制御プログラムに組み込まれているタスクまたは関数がＣＰＵ１１によって実行される場合に、ＣＰＵ１１のプログラムカウンタの値が当該タスクまたは関数の先頭アドレスに設定され、当該プログラムカウンタに設定されたアドレスの命令コードがフェッチされるが、そのタイミングで割込みが発生するのである。
【００８２】
図４に示すように、モニタ処理部は、当該割込みで起動され、エンジン制御プログラムの実行状態、つまり、スケジューラによって割込み処理管理領域に格納された割込みハンドラの遷移情報を所定時間にわたり読み出して（ＳＡ１）、デバッグ情報管理領域に格納する（ＳＡ２）。これにより、対応するタスクまたは関数を起動する割込みハンドラ及び、そのときにネストされている他の割込みハンドラの状態が捕捉されるのである。
【００８３】
モニタ処理部は、さらに、デバッグ情報管理領域に格納されたモニタデータ情報が設定されている場合には（ＳＡ３）、ＲＡＭモニタ部を起動して（ＳＡ４）、当該モニタデータ情報に対応する対比データと、ＲＡＭモニタ部によってモニタされている共有メモリモニタ領域の変数データを比較し（ＳＡ５）、両データが一致すると所定時間当該データの値、及び関連データをデバッグ情報管理領域に格納するように動作させる（ＳＡ６）。
【００８４】
つまり、ＲＡＭモニタ部は、共有メモリのデータを共有メモリモニタ領域に格納する通常処理と、モニタ処理部により起動される変数データの対比処理を実行するように構成されている。
【００８５】
デバッグ情報管理領域に格納された割込みハンドラの遷移情報及び対比処理でモニタされた変数データは、モニタデータ送信部によって、ホストコンピュータ５０に送信され（ＳＡ７）、表示処理部によって表示装置にグラフィック表示される（ＳＡ８）。
【００８６】
つまり、モニタ処理部は、タスクまたは関数を起動した割込みハンドラを含む割込みハンドラの遷移情報、及び、タスクまたは関数により操作されるメモリ上の変数をモニタするように構成されている。
【００８７】
まら、表示処理部は、変数が更新された場合に、当該変数を更新したタスクまたは関数を関連付けて表示するように構成されている。
【００８８】
エンジン制御プログラムが実行されている間は、ＲＡＭモニタ部によりモニタされ、初期設定条件で設定されたデータが内部タイマの時刻データとともに、所定インタバルでホストコンピュータ５０に送信され、表示処理部によって表示装置にトレンドグラフとしてグラフィック表示される。
【００８９】
以下に、表示処理部によって表示される画面例を説明する。
図５は、モニタデータ送信部から送信された割込みハンドラの遷移情報に基づいて、表示処理部によって、タスクの実行状態がリアルタイムで、バーグラフ表示されている状態を示す。
【００９０】
縦軸はタスクの優先度を示し、上側ほど優先順位が高いタスクであることが示されている。横軸は時間が示されている。割込みにネストが発生し、優先順位が低いタスクがサスペンド状態となった期間がハッチングされている。また、アクティブ状態のタスクは、優先順位に応じた色により塗り潰され、視認性を上げている。
【００９１】
この例では、タスクＥに組み込まれている所定の関数の先頭アドレスが割込みレジスタに設定され、ＣＰＵ１１のプログラムカウンタの値と等しくなった時にモニタ処理部が起動され、その後、所定時間のタスクの実行状態がモニタされたものである。
【００９２】
バーグラフには、当該関数の実行タイミングに星印のマーキングが施され、設定した特定の関数が呼び出されたことが示されている。また、星印のマーキング位置を右クリックすると、関数名、呼び出しタスク名、変数データの計測条件（比較データ）がポップアップ表示される。
【００９３】
また、表示された任意のバーグラフを右クリックすると、タスク名、優先順位、動作中のタスク数、タスクの状態がホップアップ表示される。
【００９４】
オペレータによって、ＧＵＩ操作画面を介してエンジン制御プログラムの停止操作が行なわれると、模擬マイクロコンピュータに停止指令が送信され、エンジン制御プログラムが停止される。
【００９５】
図６は、図５と同一の条件設定の下で、モニタデータ送信部から送信された割込みハンドラの遷移情報に基づいて、エンジン制御プログラムの停止後に、表示処理部によって、タスクの実行状態がバーグラフ表示されている状態を示す。
【００９６】
星印のマーキング位置を右クリックすると、関数名、呼び出しタスク名、変数データの計測条件（比較データ）、関連付けされた変数データがポップアップ表示される。また、表示された任意のバーグラフを右クリックすると、タスク名、優先順位、タスク処理時間、タスクサスペンド時間、タスク実動作時間がホップアップ表示される。
【００９７】
オペレータは、このような表示画面を操作或いは目視して、評価対象のタスクや関数の実行状態を確認するのである。
【００９８】
このように、本発明によるソフトウェア開発装置では、ソースプログラムを編集することなく、デバッグしたいタスクに対応してそのタスクまたは関数の先頭アドレスを変更設定するだけの容易な操作で、対応するタスクが実行されるか否か、そのときの変数の値がそのように変化するかを確認することができるようになる。
【００９９】
以下、捌実施形態を説明する。上述の実施形態では、模擬マイクロコンピュータで実行され、検証される制御プログラムがエンジン制御プログラムである場合を説明したが、本発明が適用される制御プログラムこれに限定されるものではなく、車両に搭載される他のＥＣＵの制御プログラムであってもよい。
【０１００】
また、制御プログラムは、車両に搭載されるものに限らず、制御用のマイクロコンピュータを備えたＯＡ機器等、組み込みソフトウェアの開発に広く適用可能なものである。
【０１０１】
上述したソフトウェア開発装置の具体構成は例示に過ぎず、マザーボード、Ｉ／Ｏボード等の各部の具体的な構成は、本発明の作用効果を奏する限りにおいて、公知の技術を用いて適宜構築することができることはいうまでもない。
【符号の説明】
【０１０２】
１：ソフトウェア開発装置
１０：マザーボード
１１：ＣＰＵ（模擬ＣＰＵ）
１２：メモリ
２０：Ｉ／Ｏボード
２４，２５：模擬周辺回路（マイクロコンピュータ）
５０：ホストコンピュータ
【図１】
2010244376.tif 000003
【図２】
2010244376.tif 000004
【図４】
2010244376.tif 000005
【図３】
2010244376.tif 000006
【図５】
2010244376.tif 000007
【図６】
2010244376.tif 000008