(57)【要約】【課題】実際のマイクロコンピュータに近い構成を採りながら、モデル演算のような高速処理が必要とされる演算が適切に実行可能であるとともに自由度が高い模擬マイクロコンピュータ装置を提供する。【解決手段】機器を制御するメインマイクロコンピュータ３１と、そこで実行すべきプログラムの一部を代替実行するサブマイクロコンピュータ３２を含む拡張周辺リソース３４とを備えた第一の制御部３０と、メインマイクロコンピュータで実行すべきモデル演算の一部を代替実行する汎用のＣＰＵボードでなる第二の制御部１０と、汎用制御部とＭＥＭＣバスで接続されるとともに、ＣＰＵボードとＰＣＩバスブリッジで接続され、メインマイクロコンピュータと拡張周辺リソース間の通信処理及び汎用制御部とＣＰＵボード間の通信処理を各別に実行する複数系統の通信処理部を備えた通信インタフェース２０とを備える。【選択図】図４
2010049355.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと当該ＣＰＵの周辺回路が内部に組み込まれた機器制御用のマイクロコンピュータを模擬する模擬マイクロコンピュータ装置であって、
アプリケーションプログラムに基づいて前記機器を制御するメインマイクロコンピュータと、前記メインマイクロコンピュータで実行すべきアプリケーションプログラムの一部を代替実行することが可能なサブマイクロコンピュータを含む拡張リソースとを備えた第一の制御部と、
前記メインマイクロコンピュータで実行すべきアプリケーションプログラムの一部を代替実行することが可能で、モデル演算を含むアプリケーションプログラムの実行が可能な第二の制御部と、
前記第一の制御部と前記第二の制御部とがそれぞれ接続され、前記メインマイクロコンピュータと前記拡張リソース間の通信処理及び前記第一の制御部と前記第二の制御部間の通信処理を個別に実行する複数系統の通信処理部を備えた通信インタフェースと、
を備えていることを特徴とする模擬マイクロコンピュータ装置。
【請求項２】
各通信処理部は、一方から他方へ要求する処理の発生を通知するＦＩＦＯと、要求した処理に必要なデータを他方へ引き渡す共有メモリと、他方の処理の終了を一方に通知するレジスタを備えていることを特徴とする請求項１記載の模擬マイクロコンピュータ装置。
【請求項３】
前記第一の制御部は、アプリケーションプログラムから所定のモデルに対応する関数がコールされると、当該関数の実行に必要となるデータをローカルメモリから読み出して前記共有メモリに書き込むとともに、当該関数の処理要求を前記ＦＩＦＯに書き込むファームウェアを備え、
前記第二の制御部は、前記ＦＩＦＯを介して当該関数の処理要求を受信すると、当該関数の実行に必要となるデータを前記共有メモリから読み出して、当該関数を実行させ、当該関数の実行が終了すると前記レジスタの所定領域に終了データを書き込むファームウェアを備えていることを特徴とする請求項２記載の模擬マイクロコンピュータ装置。
【請求項４】
前記メインマイクロコンピュータは、アプリケーションプログラムから所定のモデルに対応する関数がコールされると、当該関数の実行に必要となるデータをローカルメモリから読み出して前記共有メモリに書き込むとともに、当該関数の処理要求を前記ＦＩＦＯに書き込むファームウェアを備え、
前記サブマイクロコンピュータは、前記ＦＩＦＯを介して当該関数の処理要求を受信すると、当該関数の実行に必要となるデータを前記共有メモリから読み出して、当該関数を実行させ、当該関数の実行が終了すると前記レジスタの所定領域に終了データを書き込むファームウェアを備えていることを特徴とする請求項２記載の模擬マイクロコンピュータ装置。
【請求項５】
前記メインマイクロコンピュータは、前記拡張リソースを介してデータを出力する場合に、前記レジスタの所定領域に対応するデータを書き込むファームウェアを備え、
前記拡張リソースは、前記レジスタに書き込まれたデータに基づいて外部にデータを出力するファームウェアを備えていることを特徴とする請求項２記載の模擬マイクロコンピュータ装置。
【請求項６】
前記拡張リソースは、外部からデータが入力されると、前記ＦＩＦＯに入力データの発生を書き込むとともに、その値を前記共有メモリに書き込むファームウェアを備え、
前記メインマイクロコンピュータは、前記ＦＩＦＯを介して入力データの発生を認識すると、前記共有メモリからその値を読み出してローカルメモリに格納するファームウェアを備えていることを特徴とする請求項２または５記載の模擬マイクロコンピュータ装置。
【請求項７】
前記拡張リソースには、サブマイクロコンピュータに加えてプログラマブルな入出力リソースを備えていることを特徴とする請求項１から６の何れかに記載の模擬マイクロコンピュータ装置。
【請求項８】
ＣＰＵと当該ＣＰＵの周辺回路が内部に組み込まれた機器制御用のマイクロコンピュータを模擬する模擬マイクロコンピュータ装置であって、
アプリケーションプログラムに基づいて前記機器を制御するメインマイクロコンピュータと、前記メインマイクロコンピュータで実行すべきアプリケーションプログラムの一部を代替実行することが可能なサブマイクロコンピュータを含む拡張リソースとを備えた第一の制御部と、
前記メインマイクロコンピュータで実行すべきアプリケーションプログラムの一部を代替実行することが可能で、モデル演算を含むアプリケーションプログラムの実行が可能な第二の制御部と、
前記第一の制御部と前記第二の制御部とをそれぞれ接続する通信処理部を備えた通信インタフェースと、
を備えていることを特徴とする模擬マイクロコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御するマイクロコンピュータへの組込みソフトウェアを開発評価するためのソフトウェア開発装置等に用いられる模擬マイクロコンピュータ装置に関する。
【背景技術】
【０００２】
制御対象となる機器の高性能化、高機能化が急激に進む状況下で、機器を制御する電子制御装置に組み込まれるマイクロコンピュータの性能も年々進化している。
【０００３】
例えば車両のエンジンを制御する電子制御ユニット（Electronic Control Unit）のような電子制御装置では、エンジンの高性能化、高機能化の流れの中で、現状の電子制御装置の性能よりも優れた性能を発揮する次世代の電子制御装置を想定した新しいアプリケーションプログラム（制御用ロジック）が先行開発されている。
【０００４】
先行開発される制御用ロジックは、性能向上が見込まれる次世代のマイクロコンピュータがターゲットとなることが多いのであるが、そのような性能の向上したマイクロコンピュータが組み込まれた電子制御装置が開発時に実在しないばかりか、次世代のマイクロコンピュータそのものも実在しない場合もあるため、多くの場合は、現状のマイクロコンピュータをベースにして先行ロジックの開発を行なわざるを得なかった。
【０００５】
しかし、現状のマイクロコンピュータを組み込んだ電子制御装置を用いて先行ロジックの開発を行なう場合には、マイクロコンピュータのＣＰＵの処理能力の不足や、メモリ容量の不足や、更には周辺リソースの不足が生じる等の問題があるため、精度の高い先行ロジックの開発が困難となり、次期マイクロコンピュータに対応したアプリケーションプログラムの開発が遅れる等、新製品の開発に支障を来たしていた。
【０００６】
つまり、現状の電子制御機器に組み込まれるマイクロコンピュータは、電子制御機器のコストを低く抑えるために、現状のシステムに最適な仕様となるようにＣＰＵ性能及び周辺リソースが選択されて、それらが１つのパッケージの中に組み込まれているため、新製品に対応してそれぞれの性能や機能を変更する必要が生じても、マイクロコンピュータそのものを変更しない限り対応できないのである。
【０００７】
そこで、特許文献１には、マイクロコンピュータに内蔵されるＣＰＵを模擬するアプリケーション処理機能部と通信機能部を備えたＣＰＵボードで構成される中央ブロックと、中央ブロックとＰＣＩバスで接続される周辺ブロックと、周辺ブロックに接続するインタフェース回路ブロックの三つの機能ブロックを備えたソフトウェア開発装置が提案されている。
【０００８】
当該周辺ブロックには、マイクロコンピュータに内蔵される周辺リソースをソフトウェアで実現して入出力処理を行なう模擬マイクロコンピュータ周辺装置と、演算機能部と、通信機能部を備え、当該インタフェース回路ブロックには、電子制御ユニットに組み込まれるマイクロコンピュータ以外のハードウェアに相当する回路を備えている。
【０００９】
そして、周辺ブロックの演算機能部にバスコントローラが設けられ、中央ブロックの通信機能部と当該バスコントローラがＰＣＩバスで接続されるとともに、バスコントローラと模擬マイクロコンピュータ周辺装置とが内部バスで接続され、ＰＣＩバス、バスコントローラ、及び内部バスを介して、通信機能部と模擬マイクロコンピュータ周辺装置との間でデータの送受信が行われるように構成されている。
【００１０】
上述した従来のソフトウェア開発装置は、ＣＰＵと、割り込みコントローラやキャプチャ等のＣＰＵの周辺リソースで構成されるマイクロコンピュータの機能を分解して、アプリケーションプログラムを実行するＣＰＵの処理が中央ブロックであるＣＰＵボードに割り付けられ、マイクロコンピュータの周辺リソースによる処理が周辺ブロックであるＩＯボードに割り付けられていた。
【００１１】
【特許文献１】特開２００４−２３４５３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、実際に使用されるマイクロコンピュータよりも際立って高速で処理可能なＣＰＵボードで開発され、評価されたアプリケーションプログラムを、実際のマイクロコンピュータに移植する場合には、アプリケーションプログラムを構成する各タスクの実行時間等が適切に評価できない場合もあり、最終的なソースプログラムを再構築する必要に迫られるという問題があった。
【００１３】
そこで、現状のマイクロコンピュータと、ＦＰＧＡ等を用いた周辺リソースの拡張部を組み合わせ、現状のマイクロコンピュータに性能・仕様が近い模擬マイクロコンピュータ装置により、制御ロジックの評価を行なうことも考えられる。
【００１４】
しかしながら、そのような構成にした場合には、例えばエンジンの燃焼制御等について、モデル演算形式で構成されたアプリケーションプログラムを動作させたりすると、マイクロコンピュータの処理負荷が大きくなり、適切な検証ができないという問題が生じる。
【００１５】
また実際のマイクロコンピュータに近い攻勢にすると、評価対象のマイクロコンピュータやアプリケーションプログラムに少しの変更が生じただけでも、模擬マイクロコンピュータ装置に多くの変更を加えなければならないケースが生じ易くなる。
【００１６】
本発明の目的は、上述の問題点に鑑み、実際のマイクロコンピュータに近い構成を採りながら、モデル演算のような高速処理が必要とされる演算が適切に実行可能であるとともに自由度が高い模擬マイクロコンピュータ装置を提供する点にある。
【課題を解決するための手段】
【００１７】
上述の目的を達成するため、本発明による模擬マイクロコンピュータ装置の特徴構成は、ＣＰＵと当該ＣＰＵの周辺回路が内部に組み込まれた機器制御用のマイクロコンピュータを模擬する模擬マイクロコンピュータ装置であって、アプリケーションプログラムに基づいて前記機器を制御するメインマイクロコンピュータと、前記メインマイクロコンピュータで実行すべきアプリケーションプログラムの一部を代替実行することが可能なサブマイクロコンピュータを含む拡張リソースとを備えた第一の制御部と、前記メインマイクロコンピュータで実行すべきアプリケーションプログラムの一部を代替実行することが可能で、モデル演算を含むアプリケーションプログラムの実行が可能な第二の制御部と、前記第一の制御部と前記第二の制御部とがそれぞれ接続され、前記メインマイクロコンピュータと前記拡張リソース間の通信処理及び前記第一の制御部と前記第二の制御部間の通信処理を個別に実行する複数系統の通信処理部を備えた通信インタフェースと、を備えている点にある。
【００１８】
つまり、アプリケーションプログラムが第一の制御部のメインマイクロコンピュータで実行され、第二の制御部でモデル演算が実行される必要がある場合には、メインマイクロコンピュータから通信インタフェースに処理が要求され、専用の通信系統を介して処理されるデータが第二の制御部に送信される。第二の制御部で実行されたモデル演算の結果は、遅延を招くことなく、逆のルートを辿って速やかにメインマイクロコンピュータに入力される。
【００１９】
そして、拡張リソースを介して入出力等の制御が実行される場合には、メインマイクロコンピュータから通信インタフェースに処理が要求され、専用の通信系統を介して処理されるデータが当該拡張リソースに送信される。
【００２０】
メインマイクロコンピュータと第二の制御部及び拡張リソース間の通信処理が、複数系統の通信処理部を備えた共通の通信インタフェースを介して実行されるため、必要なデータの送受信が速やかに行えるようになる。
【００２１】
しかも、第二の制御部で実行されるモデルの構築や変更が、汎用のモデル生成プログラムを用いて容易に行なうことができ、メインマイクロコンピュータで実行されるアプリケーションプログラムを構成する各タスクの実行時間等適切な評価ができるようになる。
【００２２】
この場合、各通信処理部に、一方から他方へ要求する処理の発生を通知するＦＩＦＯと、要求した処理に必要なデータを他方へ引き渡す共有メモリと、他方の処理の終了を一方に通知するレジスタを備えていることが好ましい。
【発明の効果】
【００２３】
以上説明した通り、本発明によれば、実際のマイクロコンピュータに近い構成を採りながら、モデル演算のような高速処理が必要とされる演算が適切に実行可能であるとともに自由度が高い模擬マイクロコンピュータ装置を提供することができるようになった。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明による模擬マイクロコンピュータ装置を説明する。当該模擬マイクロコンピュータ装置は、例えば、車両のエンジンを制御する電子制御ユニット（以下、「ＥＣＵ」と記す。）に組み込まれるマイクロコンピュータのアプリケーションプログラムを開発するためのソフトウェア開発装置として実現されている。
【００２５】
尚、本発明による模擬マイクロコンピュータ装置の用途は、車載ＥＣＵのアプリケーションプログラムの開発に限るものではなく、広く組み込みソフトウェアの開発に使用されるものである。
【００２６】
図１に示すように、模擬マイクロコンピュータ装置（以下、「ソフトウェア開発装置」と記す。）１００は、車両ＣのエンジンＥＮＧがマウントされるエンジンルームに搭載されるＥＣＵ１０１の接続コネクタを外し、ＥＣＵ１０１に替えてこのコネクタにハーネスＨを介して直接接続して使用することができる。
【００２７】
ソフトウェア開発装置１００は、上位コンピュータ（ホストコンピュータ）２００に接続されている。ホストコンピュータ２００には表示器２１０と、データを入力するためのキーボード２２０が備えられている。ＳＷ１，ＳＷ２はそれぞれロジック装置２００とホストコンピュータ２００を動作させるための電源スイッチである。表示器２１０は、ソフトウェア開発装置１００の状態をモニタ表示することができ、キーボード２２０からは、ソフトウェア開発装置１００の設定を変更するための入力を行なうことができる。
【００２８】
当該ソフトウェア開発装置１００は、このように車両Ｃに直接接続して使用することができる他に、当該ソフトウェア開発装置１００を、パーソナルコンピュータ２４０の管理下でエンジンの様々な動作状況を模擬するエンジンシミュレータ２３０に接続することにより、車両Ｃが存在しない状態でもＥＣＵに組み込まれるマイクロコンピュータのアプリケーションプログラムを開発することができるように構成されている。
【００２９】
図２に示すように、車両に搭載されるＥＣＵ１０１は、制御プログラムであるアプリケーションプログラムを実行するマイクロコンピュータＭと、外部からの入力信号を増幅等してマイクロコンピュータＭに入力するバッファＢと、入力信号に基づいてマイクロコンピュータＭで処理された出力信号を増幅して外部に出力するドライバＤ等の入出力回路を備えている。
【００３０】
バッファＢを介してエンジン回転数信号や車速信号等のパルス信号、水温センサや吸気温センサ等からのアナログ信号、及び、スタータスイッチ、電気負荷スイッチ、シフト位置スイッチやエアコン信号等のデジタル信号が入力される。
【００３１】
ドライバＤを介してシフト制御ソレノイドやＶＶＴ（可変バルブタイミング）ソレノイドへのアナログ信号、点火信号や燃料の噴射信号等のパルス信号、ＩＳＣ（アイドル速度制御）用のパルス信号、及び、チェックエンジンランプ、メインリレーやエヤコンカット信号等のデジタル信号等が出力される。
【００３２】
マイクロコンピュータＭは、アプリケーションプログラムが格納されたＲＯＭや演算処理に使用されるＲＡＭ等のメモリ１０９、アプリケーションプログラムを実行するＣＰＵ１０２、及び入出力制御を行う周辺リソースが、１つのパッケージに収納されている。
【００３３】
周辺リソースとして入力系のリソースと出力系のリソースを備えている。入力系のリソースには、デジタル信号を扱う入力ポート１０３とラッチポート１０４、アナログ入力を扱うＡ／Ｄコンバータ１０５、及びパルス入力を扱うキャプチャ１０６等が含まれ、出力系のリソースには、デジタル出力を出力する出力ポート１１２、パルス出力を出力するＰＷＭ（パルス幅変調器）１１３とコンペア１１４、及びアナログ信号を出力するシリアル１１５等が含まれる。
【００３４】
これらの周辺リソース及びメモリ１０９は内部バス１１０を介してＣＰＵ１０２と接続されている。また、マイクロコンピュータＭは、これらの周辺リソースに加えて、内部タイマ１０７や割り込みコントローラ１０８を備えている。
【００３５】
車両の運転状態を表す各センサやスイッチ類からの信号がバッファＢを介してマイクロコンピュータＭに入力されると、それらの入力信号に基づいてＣＰＵ１０２で所定の演算処理が実行されて、車両状態に応じた出力信号が生成され、ドライバＤを介して車両に装備された各アクチュエータが駆動される。
【００３６】
図２の破線で示すように、マイクロコンピュータＭは、出力信号に応じて変化する入力信号を監視しながら車両を所定の状態に制御する。
【００３７】
本発明によるソフトウェア開発装置１００は、上述のＥＣＵ１０１を模擬するエミュレータとして機能し、図３に示すように、第一の制御部である汎用制御部３０と、第二の制御部である汎用のＣＰＵボード１０と、通信インタフェース２０を備えている。汎用制御部３０と通信インタフェース２０が汎用ＥＣＵとして一枚のボード上に構築されている。
【００３８】
汎用制御部３０は、モデル演算を含むアプリケーションプログラムに基づいて機器を制御するメインマイクロコンピュータ３１と、メインマイクロコンピュータ３１で実行すべきアプリケーションプログラムの一部を代替実行するサブマイクロコンピュータ３２及びメインマイクロコンピュータ３１の入出力リソースを拡張するＦＰＧＡ３３でなる拡張リソース３４を備えている。
【００３９】
ＦＰＧＡ３３は、コンペアＣＭ、キャプチャＣＡＰ、シリアル、ＰＷＭ、入出力等の拡張用の入出力ポートＩＯが予めプログラムされている。
【００４０】
メインマイクロコンピュータ３１のメモリ３１ｂに、先行開発されるアプリケーションプログラムが移植され、当該アプリケーションプログラムがＣＰＵ３１ａで実行され、標準の入出力ポートＩＯを介して外部との間でデータの入出力が行なわれる。
【００４１】
サブマイクロコンピュータ３２のメモリ３２ｂに、先行開発されるアプリケーションプログラムの一部が移植され、当該アプリケーションプログラムの一部がＣＰＵ３２ａで実行され、或は、拡張された入出力ポートＩＯを介して外部との間でデータの入出力が行なわれる。
【００４２】
標準の入出力ポートＩＯ及び拡張された入出力ポートＩＯは、ハーネスを介して車両を模擬する車両シミュレータあるいは実車両と接続されている。
【００４３】
ＣＰＵボード１０は、メインマイクロコンピュータ３１で実行すべきアプリケーションプログラムに組み込まれたモデル演算の一部を代替実行する高速のＣＰＵ１１（例えば、インテル社製のペンティアム（登録商標）等）を備えた汎用のＣＰＵボードであり、ＣＰＵ１１がチップセット１２を介してメモリ１３及びＰＣＩバス１４と接続されている。ＰＣＩバス１４には、さらにＰＣＩバスブリッジ１５であるスターファブリックが接続されている。尚、ＰＣＩバスブリッジ１５はスターファブリックに限定されるものではなく、他のバスブリッジを用いてもよい。
【００４４】
ＣＰＵ１１で実行されるモデルは、ＬＡＮを介して接続されたモデル生成コンピュータ５０により生成され、メモリ１３に移植されている。モデル生成コンピュータ５０では、ＭＡＴＬＡＢ（ＭａｔｈＷｏｒｋｓ社の登録商標）環境で実行可能なＳｉｍｕｌｉｎｋ（ＭａｔｈＷｏｒｋｓ社の登録商標）がインストールされ、予め準備されたライブラリ上の汎用モデルを組み合わせることによりＣＰＵボード１０で実行されるモデルが構築される。
【００４５】
メモリ１３には、ＰＣＩバス及びＰＣＩバスブリッジのドライバ（図４中、「ＰＣＩバスインタフェース」と表記）、モデルに対するドライバであるモデルインタフェースプログラム（図４中、「モデルインタフェース」と表記）、ＬＡＮを介して接続されるホストコンピュータ６０に対するインタフェースプログラム（図４中、「ＬＡＮインタフェース」と表記）等が格納されている。尚、詳述しないが、これらのソフトウェアは、チップセット１２を介して接続されるハードディスク等のストレージデバイスに格納され、ＣＰＵボード１０に移植されているＯＳプログラムの管理下で必要に応じてメモリ１３にロードされるように構成されている。
【００４６】
図３及び図４に示すように、通信インタフェース２０は、ＦＰＧＡで構築され、汎用制御部３０と接続される外部パラレルバスの一例であるＭＥＭＣバスインタフェースと、ＣＰＵボード１０と接続される高速シリアルバスの一例としてのＰＣＩバスブリッジ２１であるスターファブリックと、メインマイクロコンピュータ３１と拡張リソース３４間の通信処理、及び、汎用制御部３０とＣＰＵボード１０間の通信処理を個別に実行する複数系統の通信処理部２５を備えている。
【００４７】
各通信処理部２５は、一方から他方へ要求する処理の発生を通知するＦＩＦＯ２２（２２ａ，２２ｂ，２２ｃ）と、要求した処理に必要なデータを他方へ引き渡す共有メモリ２３（２３ａ，２３ｂ，２３ｃ）と、他方の処理の終了を一方に通知するレジスタ２４（２４ａ，２４ｂ，２４ｃ）を備えている。
【００４８】
ＦＩＦＯ２２ａは、メインマイクロコンピュータ３１からＣＰＵボード１０でモデル演算を起動するために使用される３２ビットのＦＩＦＯレジスタとレジスタ制御部を備えている。ＭＥＭＣバスを介してメインマイクロコンピュータ３１からモデル演算を実行するための関数呼出コマンド及び引数がＦＩＦＯレジスタに書き込まれると、レジスタ制御部によりＰＣＩバスブリッジ２１を介してＣＰＵボード１０上のＰＣＩバスブリッジ１５に当該関数呼出コマンド及び引数が送信される。
【００４９】
ＦＩＦＯ２２ｂは、サブマイクロコンピュータ３２またはＦＰＧＡ３３の拡張された入出力ポートＩＯで発生した外部入力イベントをメインマイクロコンピュータ３１に伝える３２ビットのＦＩＦＯレジスタとレジスタ制御部を備えている。ＭＥＭＣバスを介してサブマイクロコンピュータ３２またはＦＰＧＡ３３から外部入力イベントの発生を示すイベント発生コマンドがＦＩＦＯレジスタに書き込まれると、レジスタ制御部によりＭＥＭＣバスを介してイベント発生コマンドが送信される。
【００５０】
ＦＩＦＯ２２ｃは、サブマイクロコンピュータ３２からＣＰＵボード１０でモデル演算を起動するために使用される３２ビットのＦＩＦＯレジスタとレジスタ制御部を備えている。ＭＥＭＣバスを介してサブマイクロコンピュータ３２からモデル演算を実行するための関数呼出コマンド及び引数がＦＩＦＯレジスタに書き込まれると、レジスタ制御部によりＰＣＩバスブリッジ２１を介してＣＰＵボード１０上のＰＣＩバスブリッジ１５に当該関数呼出コマンド及び引数が送信される。
【００５１】
共有メモリ２３は、デュアルポートＲＡＭで構成され、メインマイクロコンピュータ３１とＣＰＵボード１０間のデータの遣り取りを行なう領域２３ａと、メインマイクロコンピュータ３１とサブマイクロコンピュータ３２またはＦＰＧＡ３３間のデータの遣り取りを行なう領域２３ｂと、サブマイクロコンピュータ３２とＣＰＵボード１０間のデータの遣り取りを行なう領域２３ｃの三領域に区画されている。
【００５２】
共有メモリ２３の領域２３ａは、メインマイクロコンピュータ３１からＣＰＵボード１０への送信データの書込み領域と、ＣＰＵボード１０からメインマイクロコンピュータ３１への送信データの書込み領域に区画され、一方の送信データの書込み領域に書き込まれたデータが他方から読み出されるように構成されている。共有メモリ２３の領域２３ｂ，２３ｃも同様である。
【００５３】
共有メモリ２３の領域２３ｂは、サブマイクロコンピュータ３２でアプリケーションプログラムの一部が実行される場合に、メインマイクロコンピュータ３１とサブマイクロコンピュータ３２間の制御データの遣り取りに使用される。
【００５４】
レジスタ２４は、データが書き込まれる複数のレジスタと、一つのコマンドレジスタを備え、各レジスタ及び書き込まれたデータに対応したコマンドを生成して、コマンドレジスタに当該コマンドを書き込む周辺回路を備えている。
【００５５】
ＣＰＵボード１０で実行されたモデル演算、つまり関数処理が終了したときに、ＣＰＵボード１０から対応するレジスタ２４ａに終了データが書き込まれると、レジスタ２４ａの周辺回路により当該関数処理の終了をメインマイクロコンピュータ３１に伝達するコマンドが生成されて、コマンドレジスタに当該コマンドが書き込まれる。コマンドレジスタは、コマンドが書き込まれると、ＭＥＭＣバスを介してメインマイクロコンピュータ３１にノンマスカブル割込み（ＭＮＩＮＴ）をかける。
【００５６】
メインマイクロコンピュータ３１からサブマイクロコンピュータ３２またはＦＰＧＡ３３の拡張された入出力ポートＩＯにデータを出力する場合に、メインマイクロコンピュータ３１により対応するレジスタ２４ｂに出力データが書き込まれると、レジスタ２４ｂの周辺回路により当該出力データをサブマイクロコンピュータ３２またはＦＰＧＡ３３に伝達するコマンドが生成されて、コマンドレジスタに当該コマンドが書き込まれる。コマンドレジスタは、書き込まれたコマンドをＭＥＭＣバスを介してサブマイクロコンピュータ３２またはＦＰＧＡ３３に伝達する。
【００５７】
ＣＰＵボード１０で実行されたモデル演算、つまり関数処理が終了したときに、ＣＰＵボード１０から対応するレジスタ２４ｃに終了データが書き込まれると、レジスタ２４ｃの周辺回路により当該関数処理の終了をサブマイクロコンピュータ３２に伝達するコマンドが生成されて、コマンドレジスタに当該コマンドが書き込まれる。コマンドレジスタは、コマンドが書き込まれると、ＭＥＭＣバスを介してメインマイクロコンピュータ３１にノンマスカブル割込み（ＭＮＩＮＴ）をかける。
【００５８】
メインマイクロコンピュータ３１及びサブマイクロコンピュータ３２のメモリ３１ｂ、３２ｂには、アプリケーションプログラムに加えて、アプリケーションプログラムの実行により発生するＭＥＭＣバスを介した通信インタフェース２０とデータの遣り取りを実行するファームウェアが移植されている。
【００５９】
以下、ソフトウェア開発装置１００の動作を、図５に基づいて説明する。
【００６０】
電源が投入されると、メインマイクロコンピュータ３１でアプリケーションプログラムが実行され、標準ＩＯから入力される各種の信号に基づいて所定の演算処理が実行され、必要な信号が標準ＩＯを介して出力される。
【００６１】
メインマイクロコンピュータ３１のファームウェアは、アプリケーションプログラムからＣＰＵボード１０で実行すべきモデルに対応する関数がコールされると、当該関数の実行に必要となるデータをローカルメモリ３１ｂ，３２ｂから読み出して共有メモリ２３に書き込むとともに、当該関数の処理要求をＦＩＦＯ２２に書き込む。
【００６２】
以下、詳述する。アプリケーションプログラムから関数（ｆｕｎｃ  Ａ）がコールされると、先ず、ファームウェアに準備されているＡＰＩ（Application Program Interface）が起動され、ＡＰＩの関数呼出インタフェースを介して関数が特定され、当該関数を実行するために必要なデータがローカルメモリ３１ｂから読み出されて、その値が通信インタフェース２０の共有メモリ２３ａに書き込まれる（Ｓ１）。
【００６３】
次に、ファームウェアにより当該関数の処理要求である関数実行コマンドと引数がＦＩＦＯ２２に書き込まれる（Ｓ２）。
【００６４】
ＦＩＦＯ２２に関数実行コマンドと引数が書き込まれると、ＦＩＦＯ２２の入出力制御回路によりＰＣＩバスブリッジを介してＣＰＵボード１０に関数実行コマンドと引数が送信される。ＣＰＵボード１０のＰＣＩバスインタフェースは、ＰＣＩバスブリッジ１５を介してＦＩＦＯ２２に書き込まれた当該関数の処理要求を受信すると、ＣＰＵ１１にＰＣＩ割込みを発生させる（Ｓ３）。
【００６５】
ＣＰＵ１１は、モデルインタフェースの一部である関数呼出インタフェースを介して、当該関数の実行に必要となるデータ（引数で定義されるデータ）を共有メモリ２３ａから読み出して、自身のメモリ１３に書き込む（Ｓ４）。
【００６６】
その後、ＣＰＵ１１で当該関数が実行され（Ｓ５）、当該関数の実行が終了すると、モデルインタフェース及びＰＣＩバスインタフェースを介して、通信インタフェース２０の共有メモリ２３ａの所定領域に関数の出力データが書き込まれ（Ｓ６）、続いてレジスタ２４ａの所定領域に終了データが書き込まれる（Ｓ７）。
【００６７】
終了データが書き込まれたレジスタ２４ａでは、周辺回路により終了をメインマイクロコンピュータ３１に伝達するコマンドが生成されて、コマンドレジスタに当該コマンドが書き込まれる。コマンドレジスタは、コマンドが書き込まれると、ＭＥＭＣバスを介してメインマイクロコンピュータ３１にノンマスカブル割込み（ＭＮＩＮＴ）をかける（Ｓ８）。
【００６８】
メインマイクロコンピュータ３１のファームウェアは、当該割込み要求に対応してコマンドレジスタに書き込まれたコマンドを読み出すと、関数の終了を認識して、共有メモリ２３ａに書き込まれている関数の出力データをローカルメモリ３１ｂにコピーし（Ｓ９）、関数（ｆｕｎｃ  Ａ）の処理を終了し、次のアプリケーションプログラムの実行を起動する（Ｓ１０）。
【００６９】
上述したＰＣＩバス及びＰＣＩバスブリッジを介したデータの平均送信時間は数μ秒、ＭＥＭＣバスを介したデータの平均送信時間は数ｎ秒である。例えば、上述した関数の呼出処理（Ｓ１からＳ５の処理）で十数μ秒、関数の終了通知（Ｓ６からＳ１０の処理）で十数μ秒となる。従って、一般のＬＡＮを用いたリモートプロシージャコールが数ｍ秒必要となるのに対して、極めて高速に処理が行なえるようになる。
【００７０】
サブマイクロコンピュータ３２に移植されたアプリケーションプログラムの一部によりＣＰＵボード１０で実行すべき関数がコールされた場合も、上述と同様にして処理が実行される。
【００７１】
アプリケーションプログラムの実行に伴なって、メインマイクロコンピュータ３１から、例えば拡張リソース３４としてのサブマイクロコンピュータ３２にデータを出力する必要がある場合について説明する。尚、拡張リソース３４としてのＦＰＧＡ３３からデータを出力する場合も以下と同様のシーケンスが実行される。
【００７２】
図４に示すように、メインマイクロコンピュータ３１でデータ出力命令が実行されるとファームウェアが起動される。ファームウェアは、ローカルメモリ３１ｂにマップされている出力データを参照して、ＭＥＭＣバスを介して通信インタフェース２０のレジスタ２４ａの所定領域に制御データを書き込む。
【００７３】
制御データが書き込まれたレジスタ２４ａでは、周辺回路により出力をサブマイクロコンピュータ３２に伝達するコマンドが生成されて、コマンドレジスタに当該コマンドが書き込まれる。コマンドレジスタは、コマンドが書き込まれると、ＭＥＭＣバスを介してサブマイクロコンピュータ３２にノンマスカブル割込み（ＭＮＩＮＴ）をかける。
【００７４】
サブマイクロコンピュータ３２のファームウェアは、当該割込み要求に対応してコマンドレジスタに書き込まれたコマンドを読み出すと、対応するＩＯポートからコマンドに従ってデータを出力する。
【００７５】
つまり、通信インタフェース２０に構築されているレジスタ２４には、区分された各領域毎に、モデル演算の終了やデータの出力等の書き込まれたデータに対応するコマンドを生成して、コマンドレジスタに当該コマンドを書き込む周辺回路が構築されている。
【００７６】
そして、データを出力するためのレジスタ２４は、拡張リソース３４の出力レジスタと対応付けるように構成され、レジスタ２４にデータを書き込むと、あたかも拡張リソース３４の出力レジスタに直接データを書き込むのと同様に動作するように構成されている。
【００７７】
次に、拡張リソース３４としてのＦＰＧＡ３３に外部から入力されたデータをメインマイクロコンピュータ３１に伝送する場合を説明する。尚、拡張リソース３４としてのサブマイクロコンピュータ３２からデータを入力する場合も以下と同様のシーケンスが実行される。
【００７８】
ＦＰＧＡ３３の入出力リソースの一つである入力ポートに外部から信号が入力されると、入力ポートの周辺回路（サブマイクロコンピュータ３２のファームウェアに相当する）によって、ＭＥＭＣバスを介して通信インタフェース２０の共有メモリ２４ｂに当該入力信号が書き込まれるとともに、ＦＩＦＯ２２ｂに入力発生データ及びポート識別データが書き込まれる。
【００７９】
次に、ＦＩＦＯ２２ｂの入出力制御回路により、メインマイクロコンピュータ３１にノンマスカブル割込み信号が出力される。当該割込み信号に対応してメインマイクロコンピュータ３１によりＦＩＦＯ２２ｂに格納された入力発生データ及びポート識別データが読み出され、対応する入力データが共有メモリ２４ｂから読み出され、ローカルメモリ３１ｂに格納される。
【００８０】
尚、ＦＰＧＡ３３によって、ＦＩＦＯ２２ｂにポート識別データ及び入力データを書き込み、ＦＩＦＯ２２ｂの入出力制御回路により、メインマイクロコンピュータ３１にノンマスカブル割込み信号を出力し、当該割込み信号に対応してメインマイクロコンピュータ３１がＦＩＦＯ２２ｂに格納されたポート識別データ及び入力データを読み出すように構成することも可能であり、この場合には共有メモリ２４ｂを介在させることが不要になり、データの伝送に要する時間を更に短縮できる。
【００８１】
例えば、メインマイクロコンピュータ３１として、現在使用されているエンジン制御用のマイクロコンピュータを採用することにより、現在のアプリケーションプログラムをベースに次世代のアプリケーションを効率的に開発でき、負荷が大きなモデル演算を高速処理可能なＣＰＵボード１０で実行することで、処理速度の低下を来たすことなく、アプリケーションの開発及び評価が効率的に行なえるようになる。
【００８２】
車両のエンジン制御等の組み込みコンピュータでは、処理速度の遅いＣＰＵでも遅れ無く演算可能なように、演算を行なうアプリケーションプログラムをＣ言語等の高速での処理が可能な言語で作成している。しかしながら、Ｃ言語等の比較的高速で処理が可能な言語は、プログラミングに時間がかかってしまうので、開発の上流段階において、人が処理内容を理解しやすく、作成や修正が容易なモデル演算形式でアプリケーションプログラムを作成し、アプリケーションプログラムの基本的な動作確認を行ないたいという要望がある。
【００８３】
そのような場合でも、Ｓｉｍｕｌｉｎｋ（ＭａｔｈＷｏｒｋｓ社の登録商標）等がインストールされたモデル生成コンピュータ５０によって、目的とするモデルの構築或は変更がきわめて容易に行なえるようになるので、評価結果に基づいてブラッシュアップされた最適モデルに基づいて、最終的にＣソースのモデルを効率的に生成することができる。
【００８４】
尚、開発の下流段階において、アプリケーションプログラムをモデル演算形式で作成していたものを、Ｃ言語等の処理が速い形式への変換を行なっているが、精度が求められる制御である場合等は、変換を行なわず、製品にそのままモデル演算形式で作成したアプリケーションプログラムを移植するケースも考えられる。
【００８５】
ＣＰＵボードでモデル演算を実行させる場合、汎用制御部からリモートプロシージャコール（Remote Procedure Call）と呼ばれるプロトコルが採用されるのであるが、汎用制御部と汎用のＣＰＵボードをＴＣＰ／ＩＰのようなプロトコルを採用するネットワークを介して接続すると、ネットワークによる信号伝達の遅延に起因して、適切なタイミングでモデル演算を実行させ、その結果を得ることが困難である。つまり制御のリアルタイム性を確保することが困難となるという問題がある。
【００８６】
しかし、本発明による通信インタフェースを用いることにより、通信の遅延による制御のリアルタイム性が損なわれることはない。
【００８７】
また、入出力リソースが不足する場合には、ＦＰＧＡ３３やサブマイクロコンピュータ３２等の拡張リソース３４により、入出力リソースを補充することができる。ＦＰＧＡ３３に構築されるＩＯリソースの種類や数、サブマイクロコンピュータ３２の種類や数は、特に制限されるものではなく、ターゲットとなるＥＣＵに応じて適宜設定すればよい。
【００８８】
特に、エンジンから入力されるクランクパルスに基づいてエンジンの回転数を検知するクランク割込み処理等、処理時間に厳しい制限が課されるプログラムの一部をサブマイクロコンピュータ３２で代替実行させることも可能となり、アプリケーションプログラムに様々な機能を組み込むことによりメインマイクロコンピュータ３１での処理負荷が増大する場合であっても、処理速度の低下を来たすことなく、アプリケーションの開発及び評価が効率的に行なえるようになる。
【００８９】
具体的には、サブマイクロコンピュータ３２のローカルメモリ３２ｂに、アプリケーションプログラムの一部を予め移植しておき、通信インタフェース２０の共有メモリ２３ｂを介して、メインマイクロコンピュータ３１とサブマイクロコンピュータ３２間でデータの引渡しを行なうことにより、双方が並行して処理を実行することができる。例えば、双方がクランクパルスの最小周期よりも長い所定周期で共有メモリ２３ｂにデータを書き込み、或は読み出すように構成すればよい。
【００９０】
上述したソフトウェア開発装置１００によるアプリケーションプログラムの総合的な評価は、ＣＰＵボード１０のＬＡＮに接続されたホストコンピュータ６０を介して行なうことができる。
【００９１】
例えば、汎用制御部３０のファームウェアに、各マイクロコンピュータ３１，３２のＲＡＭ等のメモリ内容を読み出すモニタ機能、各マイクロコンピュータ３１，３２によるアプリケーションプログラムの実行過程を監視するモニタ機能を備え、当該モニタ機能によりモニタされたデータをＰＣＩバス等を介してＣＰＵボード１０に送信する機能ブロックを組み込むことにより実現できる。
【００９２】
上述した模擬マイクロコンピュータ装置は本発明の例示に過ぎず、各部の具体的な構成は、本発明の作用効果を奏する範囲で適宜変更設計することが可能である。
【図面の簡単な説明】
【００９３】
【図１】本発明による模擬マイクロコンピュータ装置の使用状況を示す説明図
【図２】マイクロコンピュータの入出力リソースの構成図
【図３】本発明による模擬マイクロコンピュータ装置のハードウェア構成の説明図
【図４】本発明による模擬マイクロコンピュータ装置のソフトウェア構成の説明図
【図５】本発明による模擬マイクロコンピュータ装置の動作説明図
【符号の説明】
【００９４】
１０：第二の制御部（ＣＰＵボード）
１１：ＣＰＵ
１２：チップセット
１３：メモリ（ＲＡＭ，ＲＯＭ）
１４：ＰＣＩバス
１５：ＰＣＩバスブリッジ（Ｓｔａｒ  Ｆａｂｒｉｃ）
２０：通信インタフェース
２１：ＰＣＩバスブリッジ（Ｓｔａｒ  Ｆａｂｒｉｃ）
２２：ＦＩＦＯ
２３：共有メモリ（ＤＰＲＡＭ）
２４：レジスタ
３０：第一の制御部（汎用制御部）
３１：メインマイクロコンピュータ
３２：サブマイクロコンピュータ
３３：ＦＰＧＡ
【図１】
2010049355.tif 000003
【図２】
2010049355.tif 000004
【図３】
2010049355.tif 000005
【図４】
2010049355.tif 000006
【図５】
2010049355.tif 000007