(57)【要約】【課題】先行開発された電子制御装置の制御ロジックを迅速かつ適切に検証可能なソフトウェア開発装置を提供する。【解決手段】マイクロコンピュータのＣＰＵにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのＣＰＵにより実行される周辺回路に対するＩ／Ｏ処理を模擬するＩ／Ｏ処理部を備え、制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、制御ロジック処理部とＩ／Ｏ処理部との間に介在して、Ｉ／Ｏ処理部を経由した入力データを制御ロジック処理部で実行される各制御ロジックに個別に供給し、入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方をＩ／Ｏ処理部に出力するインタフェース部を備えているソフトウェア開発装置。【選択図】図１
2010224971.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと当該ＣＰＵの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータを備え、マイクロコンピュータで処理する制御ロジックを実行するソフトウェア開発装置であって、
当該マイクロコンピュータのＣＰＵにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのＣＰＵにより実行される周辺回路に対するＩ／Ｏ処理を模擬するＩ／Ｏ処理部を備え、
前記制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、
前記制御ロジック処理部と前記Ｉ／Ｏ処理部との間に介在して、前記Ｉ／Ｏ処理部を経由した入力データを前記制御ロジック処理部で実行される各制御ロジックに個別に供給し、前記入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方を前記Ｉ／Ｏ処理部に出力するインタフェース部を備えているソフトウェア開発装置。
【請求項２】
インタフェース部は、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された制御ロジックの出力データを前記Ｉ／Ｏ処理部に出力する請求項１記載のソフトウェア開発装置。
【請求項３】
インタフェース部は、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された両制御ロジック以外の出力データを前記Ｉ／Ｏ処理部に出力する請求項１記載のソフトウェア開発装置。
【請求項４】
車両を制御する電子制御装置に替えて請求項１記載のソフトウェア開発装置を車両に接続し、前記インタフェース部により、前記Ｉ／Ｏ処理部を経由した車両からの入力データを検証済みの制御ロジックと未検証の制御ロジックに個別に供給し、前記検証済みの制御ロジックと前記未検証の制御ロジックの双方を前記ソフトウェア開発装置により実行させ、前記入力データに基づき各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、前記未検証の制御ロジックの出力データまたは前記検証済みの制御ロジックの出力データを切り替えて前記Ｉ／Ｏ処理部に出力する実車試験方法。
【請求項５】
ＣＰＵと当該ＣＰＵの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータにより制御ロジックをエミュレートするエミュレーション方法であって、
同一の制御対象を制御する制御ロジックであって、検証済みの制御ロジックと、汎用のモデル生成プログラムで生成された未検証の制御ロジックの双方を並行してエミュレートし、各制御ロジックの出力データを比較することにより、前記未検証の制御ロジックを検証するエミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵと当該ＣＰＵの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータを備え、制御ロジックをエミュレートするソフトウェア開発装置、実車試験方法、及びエミュレーション方法に関する。
【背景技術】
【０００２】
電子制御機器を制御するマイクロコンピュータを備えた電子制御装置、例えば車両のエンジンを制御する電子制御ユニット（ＥＣＵ）のような電子制御装置では、エンジン等の制御対象機器の高性能化、高機能化の流れの中で、使用されるマイクロコンピュータの性能も年々進化しており、現状の電子制御装置の性能に先行して新しい制御ロジックが開発されているのが現状である。
【０００３】
このため、先行制御ロジックは、性能向上が見込まれる次期マイクロコンピュータがターゲットとなることが多い。次期マイクロコンピュータを組み込んだ電子制御装置は実在せず、次世代のマイクロコンピュータも実在しない場合があるため、多くの場合は現状のマイクロコンピュータをベースにして先行制御ロジックの開発が行われている。
【０００４】
しかし、現状のマイクロコンピュータを組み込んだ電子制御装置を用いて先行制御ロジックの開発を行う場合には、マイクロコンピュータのＣＰＵの処理能力に不足、メモリ容量の不足、周辺リソースの不足等の問題があるため、次期マイクロコンピュータ及びそのアプリケーションの開発が遅れ、新製品の開発に支障を来していた。
【０００５】
尚、現状の電子制御機器に組み込まれるマイクロコンピュータは、電子制御機器のコストを低く抑えるために、現状のシステムに最適な仕様でＣＰＵ性能及び周辺機能が選択され、ＣＰＵやマイクロコンピュータ周辺リソースが１つのパッケージの中に組み込まれているため、それぞれの機能変更はマイクロコンピュータを変更しない限り不可能である。
【０００６】
そこで、特許文献１には、アプリケーション処理機能と通信機能を備えた中央ブロックと、マイクロコンピュータの周辺装置を擬似的にソフトウェアで実現して入出力処理を行う疑似マイクロコンピュータ周辺装置、演算機能、及び通信機能を有し、前記中央ブロックとＰＣＩバスで接続される周辺ブロックと、電子制御ユニットのハードウェアに相当する回路を有し、前記周辺ブロックに接続するインタフェース回路ブロックとを備え、前記中央ブロックの通信機能と、前記疑似マイクロコンピュータ周辺装置との間にある前記演算機能に、バスコントローラが設けられ、前記ＰＣＩバスで前記中央ブロックの通信機能とこのバスコントローラとの間が接続され、前記バスコントローラと前記疑似マイクロコンピュータ周辺装置との間は内部バスで接続され、前記ＰＣＩバス、前記バスコントローラ、及び前記内部バスを介して、前記通信機能と前記疑似マイクロコンピュータ周辺装置との間で、直接データの送受信が行われるように構成されたソフトウェア開発装置が提案されている。
【０００７】
当該ソフトウェア開発装置では、中央ブロック及び周辺ブロックにマイクロコンピュータリソースに接続するバス相当の機能を実現するソフトウェアであるＩＯドライバが実装され、その間がＰＣＩバスで接続されるとともに、中央ブロックにはＩＯドライバとアプリケーションソフトウェアを接続するソフトウェアであるプラットフォームが実装され、周辺ブロックにはＦＰＧＡでなる疑似マイクロコンピュータ周辺装置がファームウェアとして実装されている。
【０００８】
上述した従来のソフトウェア開発装置は、図５に示すように、ＣＰＵと、割り込みコントローラやキャプチャ等のＣＰＵの周辺リソースで構成されるマイクロコンピュータの機能を分解して、制御ロジックを実行するＣＰＵの処理内容を中央ブロックであるＣＰＵボードに割り付け、マイクロコンピュータの周辺リソースによる処理内容を周辺ブロックであるＩ／Ｏボードに割り付け、マイクロコンピュータのＣＰＵが処理していた周辺リソースに対するＩ／Ｏ処理（図中、「マイコンＩ／Ｏ」と記す。）をＣＰＵボードで処理する構成となっている。
【０００９】
即ち、上述のソフトウェア開発装置では、例えば、Ｉ／Ｏボードを増加する或いはＣＰＵボードに備えられたＣＰＵの処理能力やメモリ容量を増加する等、ハードウェアリソースを柔軟に拡張可能な構成となっている。したがって、当該ソフトウェア開発装置をベースにして先行制御ロジックの開発を行うことにより、現状のマイクロコンピュータを組み込んだ電子制御装置を用いて先行制御ロジックの開発を行う場合における、上述したリソース不足の問題を回避できるようになる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−２３４５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
このようなソフトウェア開発装置を用いて先行制御ロジックの開発を行う場合、先ず、検証済みの制御ロジックを現状のマイクロコンピュータで実行した結果と、検証済みの制御ロジックをソフトウェア開発装置で実行した結果とが一致することを確認する必要がある。ソフトウェア開発装置により既存の制御ロジックがエミュレート可能であることが前提となるからである。
【００１２】
次に、新規ロジックがソフトウェア開発装置により実行されて検証される。
【００１３】
近年、開発効率の向上等のため、例えば、マトラボ／シムリンク（ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標））等の汎用のモデル生成装置を利用して、制御ロジックが開発されている。
【００１４】
予めライブラリに登録されている加減算、積分、微分、各種の論理演算等を実現する部品が操作画面上に表示され、それらを選択して、適宜入出力関係を定義（マウス等を用いて結線する）することにより、所望のロジックが簡易的に生成されるのである。
【００１５】
当然のことながらモデル生成装置では、新規に生成した制御ロジックの単体試験、つまり、所定の入力値に対して適正な出力値が得られるか否か等の試験が可能であるが、他の多くの制御ロジックと組み合わせ、制御対象が様々な条件にある時に適正に動作するか否か等の動的な試験が困難である。
【００１６】
生成されたロジックは、モデル生成装置で自動的にＣ言語のソースファイルで出力されるが、直ちに製品として活用可能なレベルの最適化されたソースではないため、最終的には、設計者によって、最適化のための編集処理が必要となる。
【００１７】
このようなモデル生成装置で生成され、最適化される前の制御ロジックに対して、動的な試験を行う場合に、上述のソフトウェア開発装置に実装される。
【００１８】
しかし、ソフトウェア開発装置を実際の被制御装置と接続して制御ロジックの動作を検証する場合に、制御ロジックに破綻をきたすと、被制御装置を破損する虞があるという問題があった。特に、車両に搭載されるエンジンＥＣＵの制御ロジックを検証するために、実車試験を行うような場合、エンジンの故障に起因して事故を引き起こす虞があり、容易に実車試験が行えなかった。
【００１９】
最終的な制御ロジックは、他の制御ロジックとの間で予期しないタイミングで入力されたデータに対して、異常動作が発生しないようなプロテクトや、演算変数の桁数の制限等の様々な最適化処理が行なわれているが、モデル生成装置で自動生成された制御ロジックにはそこまでの実装上の最適化処理がなされていないためである。
【００２０】
逆に、モデル生成装置で自動生成された制御ロジックを実装条件に合わせて設計者が最適化すると、その制御ロジックが使えない場合に、無駄な工数を費やすことになる。
【００２１】
本発明の目的は、上述の問題点に鑑み、先行開発された電子制御装置の制御ロジックを迅速かつ適切に検証可能なソフトウェア開発装置を提供する点にある。
【課題を解決するための手段】
【００２２】
上述の目的を達成するため、本発明によるソフトウェア開発装置の特徴構成は、ＣＰＵと当該ＣＰＵの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータを備え、マイクロコンピュータで処理する制御ロジックを実行するソフトウェア開発装置であって、当該マイクロコンピュータのＣＰＵにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのＣＰＵにより実行される周辺回路に対するＩ／Ｏ処理を模擬するＩ／Ｏ処理部を備え、前記制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、前記制御ロジック処理部と前記Ｉ／Ｏ処理部との間に介在して、前記Ｉ／Ｏ処理部を経由した入力データを前記制御ロジック処理部で実行される各制御ロジックに個別に供給し、前記入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方を前記Ｉ／Ｏ処理部に出力するインタフェース部を備えている点にある。
【００２３】
上述の構成によれば、インタフェース部により、Ｉ／Ｏ処理部を経由した入力データが、基本機能が同一である複数の制御ロジックに個別に供給され、制御ロジック処理部により、当該入力データに基づき各制御ロジックが並行して実行されるため、実行環境の相違による影響を考慮することなく、各制御ロジックの出力データを適切に比較評価できるようになる。また、インタフェース部により、各制御ロジックの出力データの何れか一方がＩ／Ｏ処理部に出力されるため、当該制御対象は、制御ロジックに対応して構成を変更する必要なく、既存の構成のままで、当該各制御ロジックの出力データの何れか一方を入力して動作することができるようになる。
【発明の効果】
【００２４】
以上説明した通り、本発明によれば、先行開発された電子制御装置の制御ロジックを迅速かつ適切に検証可能なソフトウェア開発装置を提供することができるようになった。
【図面の簡単な説明】
【００２５】
【図１】本発明によるソフトウェア開発装置の機能ブロック構成図
【図２】マイクロコンピュータの入出力リソースの構成図
【図３】本発明によるマイクロコンピュータの模擬装置の使用状況を示す説明図
【図４】本発明によるマイクロコンピュータの模擬装置の要部のブロック構成図
【図５】従来のマイクロコンピュータの模擬装置の要部のブロック構成図
【図６】本発明によるソフトウェア開発装置のソフトウェア構成図
【図７】同一の制御対象に対する由来の異なる二つの制御ロジックの出力データの説明図
【発明を実施するための形態】
【００２６】
以下に、本発明によるソフトウェア開発装置、当該ソフトウェア開発装置を使用した実車試験方法、及びエミュレーション方法を説明する。
【００２７】
本実施形態では、ソフトウェア開発装置を用いて、車両のエンジンを制御する電子制御ユニット（以下、「ＥＣＵ」と記す。）に組み込まれるマイクロコンピュータのアプリケーションソフトウェア（以下、「制御ロジック」と記す。）を開発する場合を例にして説明する。
【００２８】
ソフトウェア開発装置１００は、図３に示すように、車両ＣのエンジンＥＮＧがマウントされるエンジンルームに搭載されるＥＣＵ１０１の接続コネクタを外し、ＥＣＵ１０１に替えてこのコネクタにハーネスＨを介してソフトウェア開発装置１００を直接接続して、実車試験に使用される。
【００２９】
ソフトウェア開発装置１００は、ホストコンピュータ２００にＬＡＮで接続されている。ホストコンピュータ２００には表示器２１０と、データを入力するためのキーボード２２０が接続されている。Ｓ１，Ｓ２はそれぞれソフトウェア開発装置１００とホストコンピュータ２００を起動するための電源スイッチである。
【００３０】
表示器２１０は、ソフトウェア開発装置１００の状態をモニタすることができ、キーボード２２０からは、ソフトウェア開発装置１００の設定を変更するための入力を行うことができる。
【００３１】
尚、ソフトウェア開発装置１００は、対象となる車両Ｃが存在しない場合であっても、パーソナルコンピュータ２４０によって制御され、車両Ｃの様々な運転状況を擬似的に発生することができる車両Ｃのシミュレータ２３０に接続することにより、ＥＣＵに組み込まれるマイクロコンピュータの制御ロジックをエミュレートして、検証することができる。
【００３２】
ＥＣＵ１０１は、図２に示すように、エンジン回転数信号や車速信号等のパルス入力、水温センサや吸気温センサ等からのアナログ入力、及びスタータスイッチ、電気負荷スイッチ、シフト位置スイッチやエアコン信号等のデジタル入力が入力される。ＥＣＵ１０１は、これらの入力信号を処理するマイクロコンピュータＭと、マイクロコンピュータＭで処理された信号を増幅して出力するＥＣＵ入出力回路であるドライバＤとを備えて構成される。
【００３３】
このＥＣＵ１０１から出力されるのは、シフト制御ソレノイドやＶＶＴ（可変バルブタイミング）ソレノイドへのアナログ出力、点火信号や燃料の噴射信号等のパルス出力、ＩＳＣ（アイドル速度制御）用のパルス出力、及び、チェックエンジンランプ、メインリレーやエヤコンカット信号等のデジタル信号等である。
【００３４】
ＥＣＵ１０１に組み込まれたマイクロコンピュータＭは、制御ロジックが格納されるＲＯＭや演算処理に使用されるＲＡＭ等のメモリ１０９、制御ロジックを実行するＣＰＵ１０２、及び入出力制御を行う周辺リソースが、１つのパッケージに収納されたものである。
【００３５】
周辺リソースには、入力系のリソースと出力系のリソースとがあり、入力系のリソースとして、デジタル信号を扱う入力ポート１０３とラッチポート１０４、アナログ入力を扱うＡ／Ｄコンバータ１０５、及びパルス入力を扱うキャプチャ１０６等が設けられ、出力系のリソースとして、デジタル出力を出力する出力ポート１１２、パルス出力を出力するＰＷＭ（パルス幅変調器）１１３とコンペア１１４、及びアナログ信号を出力するシリアル１１５等が設けられている。
【００３６】
これらの周辺リソースは内部バス１１０によってメモリ１０９及びＣＰＵ１０２に相互に接続されている。また、マイクロコンピュータＭの内部には、これらの周辺リソースに加えて、内部タイマ１０７や割り込みコントローラ１０８が設けられている。
【００３７】
車両Ｃの運転状態を表す各センサやスイッチ類からの信号がＥＣＵ１０１に取り込まれると、ＥＣＵ１０１の入力回路で入力信号が信号処理され、マイクロコンピュータＭに入力される。
【００３８】
入力された信号は入力系の周辺リソースでＣＰＵ値、つまり入力論理データに変換され、演算部であるメモリ１０９とＣＰＵ１０２では入力論理データに基づいて車両状態が検出され、車両状態に応じた出力論理データが生成される。出力論理データは、出力系の周辺リソースを介して物理信号である出力信号に変換されてマイクロコンピュータＭから出力される。
【００３９】
ＥＣＵ１０１の入出力回路であるドライバＤはこの出力信号に従って車両Ｃに装備された各アクチュエータを駆動し、この出力制御の結果が破線で示すように、車両Ｃからの入力信号に反映される。
【００４０】
本発明によるソフトウェア開発装置１００は、上述のＥＣＵ１０１を模擬し、ＥＣＵ１０１に組み込まれたマイクロコンピュータＭで実行される制御ロジックを実行するエミュレータとして機能する。
【００４１】
図１に示すように、ソフトウェア開発装置１００は、マイクロコンピュータＭのＣＰＵにより実行される制御ロジックを実行する模擬ＣＰＵを備えたマザーボード１０と、マイクロコンピュータＭのＣＰＵにより実行される周辺回路に対するＩ／Ｏ処理を模擬する周辺Ｉ／Ｏ処理部、及び、当該周辺回路を模擬する模擬周辺回路を含むＩ／Ｏボード２０と、マイクロコンピュータＭの外部に構築される入出力周辺回路を備えたインタフェースボード３０とを備えている。
【００４２】
即ち、マザーボード１０により、マイクロコンピュータＭのＣＰＵにより実行される制御ロジックを実行する制御ロジック処理部が構成され、Ｉ／Ｏボード２０により、マイクロコンピュータＭのＣＰＵにより実行される周辺回路に対するＩ／Ｏ処理を模擬するＩ／Ｏ処理部が構成されている。
【００４３】
マザーボード１０とＩ／Ｏボード２０とが高速のバスブリッジを介したＰＣＩバスで接続され、Ｉ／Ｏボード２０とインタフェースボード３０とが複数の入出力信号ラインで接続され、インタフェースボード３０とエンジンがハーネスＨ（図３参照）で接続されている。
【００４４】
インタフェースボード３０は、ポート割付変換ボードと、ポート変換割付ボードのコネクタに挿入される複数の標準回路ボード及び機能ボードでなるＥＣＵ入出力回路３１を備え、ポート割付変換ボードに挿入される標準回路ボード及び機能ボードの組み合わせにより、エンジンに備えたセンサやアクチュエータ等と接続するための任意の数の入出力回路を実現できるように構成されている。
【００４５】
標準回路ボードはウォーニングランプの点灯信号やＣＡＮバス等のシリアル信号を入出力する各種のドライバ回路やバッファ回路を備えたデジタル信号回路で構成され、機能ボードはパワートレーン出力回路、アナログ信号入出力回路、エンジンに対する噴射信号、点火信号、電子スロットル制御信号等を入出力する信号処理用の低機能マイクロコンピュータを備えた入出力処理回路で構成されている。
【００４６】
マザーボード１０には、動作周波数が数ＧＨｚ程度のデュアルコアＣＰＵと、ＲＯＭやＲＡＭを含むメモリと、ＰＣＩバスインタフェース回路と、ＰＣＩバスを中継するブリッジであるスターファブリックのような高速ＬＡＮインタフェース回路と、ホストコンピュータ２００と接続するＬＡＮインタフェース回路等が搭載されている。
【００４７】
マザーボード１０のメモリには、デュアルコアＣＰＵを含むシステムを管理するオペレーティングシステムプログラム（以下、「ＯＳ」と記す。）、エミュレーション対象であるエンジンに対する制御ロジック１５、メモリドライバ１７、ＰＣＩ通信ドライバ１６、スターファブリック用のＬＡＮ通信ドライバ１８、ホストコンピュータ２００用のＬＡＮ通信ドライバ等のプログラムが格納されている。
【００４８】
マザーボード１０のメモリには、マイクロコンピュータＭの入出力用のレジスタや割込み用のレジスタ等として機能する仮想レジスタとしてのデータ領域が区画されている。
【００４９】
メモリドライバ１７は、Ｉ／Ｏボード２０を介して転送された入力論理データ及び割込みフラグを対応する入力レジスタ（仮想レジスタに区画されている領域）に書き込んで、割込みフラグがセットされている入力論理データに対応する制御ロジック１５を起動して当該割込みフラグをリセットし、制御ロジック１５で生成され、対応する出力レジスタ（仮想レジスタに区画されている領域）に書き込まれた論理出力データ及び割込みフラグを、Ｉ／Ｏボード２０に転送するＩ／Ｏドライバとして機能する。
【００５０】
つまり、メモリドライバ１７は、入力レジスタに書き込まれた割込みフラグに対応する制御ロジックを起動する割込みハンドラとしての機能を備えている。また、メモリドライバ１７は、マザーボード１０に備えたタイマ回路からの定時のタイマ割込みによって、対応する制御ロジックを起動する割込みハンドラとしての機能を備えている。
【００５１】
Ｉ／Ｏボード２０には、主にマザーボード１０との間の通信処理を実行する動作周波数が百数十ＭＨｚ程度のＣＰＵと、ＲＯＭやＲＡＭを備えたメモリと、ＰＣＩバスブリッジである高速ＬＡＮインタフェース回路と、ＰＣＩバスインタフェース回路と、共有メモリ２２が組み込まれたＦＰＧＡと、共有メモリ２２とＰＣＩバスインタフェース回路との間でデータをＤＭＡ転送するＤＭＡコントローラと、複数のファームウェア２１を備えている。
【００５２】
Ｉ／Ｏボード２０のメモリには、ＣＰＵで実行されるスターファブリック用のＬＡＮ通信ドライバ２８、ＰＣＩ通信ドライバ２６等が格納されている。
【００５３】
ファームウェア２１は、上述の模擬周辺回路として機能する回路ブロックで、既存の複数のマイクロコンピュータで構成されている。当該マイクロコンピュータの内部ＲＯＭには、共有メモリ２２に書き込まれた出力データをインタフェースボード３０に出力し、インタフェースボード３０から入力されたデータを共有メモリ２２に書き込む入出力ポートとして機能するプログラムが格納されている。
【００５４】
当該プログラムが実行されるマイクロコンピュータにより、上述した入力ポート１０３やラッチポート１０４、Ａ／Ｄコンバータ１０５、キャプチャ１０６、出力ポート１１２、ＰＷＭ（パルス幅変調器）１１３やコンペア１１４、シリアル１１５、内部タイマ１０７等の周辺回路が模擬される。
【００５５】
尚、個々の周辺リソースをＦＰＧＡやハードウェア回路で構成することも可能であるが、既存のマイクロコンピュータを用いて構成することにより、異なる周辺リソースを容易に構築でき、ターゲットとなるマイクロコンピュータに応じてフレキシブル且つ迅速に機能を変更することができるのである。
【００５６】
インタフェースボード３０を介してエンジンからの入力信号がファームウェア２１に入力されると、ファームウェア２１で入力信号が入力論理データに変換され、ファームウェア２１からＦＰＧＡにノンマスカブル割込み信号ＮＭＩが出力される。
【００５７】
ノンマスカブル割込み信号ＮＭＩを受けたＦＰＧＡは、ファームウェア２１とＦＰＧＡを接続するデータ転送専用バスＭＥＭＣを介して転送された入力論理データ及び対応する割込みフラグを共有メモリ２２に格納して、ＰＣＩ通信ドライバを起動する。ＰＣＩ通信ドライバは、ＤＭＡコントローラを介して共有メモリ２２に格納された入力論理データをマザーボード１０に転送する。
【００５８】
尚、Ｉ／Ｏボード２０とマザーボード１０間のＰＣＩバスによる通信はバスブリッジとして機能するスターファブリックを介して行われるが、Ｉ／Ｏボード２０とマザーボード１０を同一のラックに組み込む場合や、Ｉ／Ｏボード２０の数が少ない場合には、必ずしもバスブリッジは必要としない。
【００５９】
また、ＰＣＩバスによってマザーボード１０から転送された出力論理データ及び対応する割込みフラグがＤＭＡコントローラを介して共有メモリ２２に格納されると、ＦＰＧＡは、共有メモリ２２に格納された割込みフラグに対応する出力論理データを、データ転送専用バスＭＥＭＣを介してファームウェア２１に転送して当該割込みフラグをリセットする。
【００６０】
出力論理データが転送されたファームウェア２１は、出力論理データを物理的な電気信号に変換して出力ポートから出力する。出力ポートから出力された出力信号が、インタフェースボード３０を介してエンジンに出力される。
【００６１】
共有メモリ２２を含むＦＰＧＡと、ＰＣＩ通信ドライバ２６と、ＬＡＮ通信ドライバ２８によって、マイクロコンピュータＭのＣＰＵと入力系及び出力系の周辺回路を接続する内部バスとしての機能が実現される。
【００６２】
即ち、図４に示すように、マザーボード１０とＩ／Ｏボード２０によりターゲットとなるマイクロコンピュータが模擬され、インタフェースボード３０によりマイクロコンピュータを備えたＥＣＵの入出力回路が模擬され、インタフェースボード３０を介して制御対象であるエンジンと接続可能に構成されることにより、制御ロジック１５が実行されるＥＣＵとしての実環境が模擬される。
【００６３】
さらに、図５に示す周辺リソースに対する入出力処理（図中、「マイコンＩ／Ｏ」）がＩ／Ｏボード上に具現化されるため、ターゲットとなるマイクロコンピュータＭが変更された場合であっても、マザーボード１０上の制御ロジック１５を変更する必要が無く、共有メモリ２２に格納されたデータマップの内容を変更して、変更後のターゲットとなるマイクロコンピュータの制御ロジック１５にマッチングさせるだけで、当該ターゲットとなるマイクロコンピュータの変更に対応できるようになる。
【００６４】
ここで、ＥＣＵのマイクロコンピュータに組み込まれる制御プログラムの構成について説明する。通常、制御プログラムは、リアルタイムＯＳと、制御ロジックと、リアルタイムＯＳと制御ロジックの橋渡しを行うインタフェースを備えている。
【００６５】
制御ロジックには、エンジン回転数の算出、燃料噴射量の演算、点火パルス出力タイミングや出力時間の演算等が含まれる。制御ロジックには、時間に同期して処理される制御ロジックと、入出力イベントが発生したときに処理される制御ロジックが含まれる。時間同期処理は外部状態に依存せず、一定の時間間隔で定期的に行う処理であり、非時間同期処理は、外部状態、即ち、エンジンの運転状態に依存して発生する処理である。
【００６６】
リアルタイムＯＳには、制御ロジック間の処理の優先順序を制御するスケジューラが含まれる。インタフェースには、エンジンから出力された信号を取り込んで、必要な制御ロジックに引き渡し、制御ロジックで生成された信号値をエンジンに出力する入出力処理、定期的に特定の制御ロジックを起動するタイマ割込み処理等の割込みハンドラが含まれる。
【００６７】
上述したマザーボード１０のメモリに格納される制御ロジック１５が、エンジン回転数の算出、燃料噴射量の演算、点火パルス出力タイミングや出力時間の演算等の制御対象に対する基本機能を実行する制御ロジックであり、メモリドライバが入出力処理や割込みハンドラ、さらにはマザーボードのＯＳと制御プログラムとの橋渡しとして機能する。
【００６８】
図６に示すように、マザーボード１０のメモリには、同一の制御対象に対する由来の異なる、つまり、基本機能が同一である開発プロセスが異なる複数の制御ロジック群１５（Ａ，Ｂ，・・・，Ｚ）が格納されている。各制御ロジック１５（Ａ，Ｂ，・・・，Ｚ）には複数の制御ロジックが含まれている。
【００６９】
制御ロジック１５（Ａ）は、既に開発が終了し、検証済みの最適化された既存の制御ロジックであり、制御ロジック１５（Ｂ，・・・，Ｚ）は、新たに開発されている未検証の制御ロジック、または、既存の制御ロジック１５（Ａ）の一部を新たな制御ロジックに置換した制御ロジックや既存の制御ロジック１５（Ａ）に新たな制御ロジックを追加した制御ロジックである。
【００７０】
通常、制御ロジックは、制御仕様に基づいて設計者によりＣ言語等のプログラミング言語を用いて最適設計されるが、開発段階では動作確認等を迅速に行う必要性や開発効率の向上のために、例えば、マトラボ／シムリンク（ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標））等の汎用のモデル生成プログラムを利用して、制御ロジックを自動設計し、ある程度の実証試験等を重ねて、動作が確認された後に、最適化設計される傾向にある。
【００７１】
制御ロジック１５（Ａ）は、前者の最適設計された信頼性の高い制御ロジックであり、制御ロジック１５（Ｂ，・・・，Ｚ）は、モデル生成プログラムを用いて自動設計された制御ロジックである。
【００７２】
最適設計された信頼性の高い制御ロジックは、実際にマイクロコンピュータに実装するために、演算変数の桁数の制限等様々な制限が課され、例えば、複数の制御ロジックの実行順序が異なる場合であっても異常な値が出力されないように適正化されているが、モデル生成プログラムを用いて自動設計された制御ロジックは、そのような細かな最適化処理がなされていないため、そのまま実装すると、想定されていない状況下で異常な値が出力される虞がある。
【００７３】
本発明によるソフトウェア開発装置は、そのようなモデル生成プログラムを用いて自動設計された制御ロジックにより実車試験を行なう場合であっても、車両に損傷が発生しないように構成されている。
【００７４】
具体的には、メモリドライバ１７に、ＯＳと制御ロジック１５との間及びマザーボード１０とＩ／Ｏボード２０との間に介在して、Ｉ／Ｏボード２０を経由した入力データを各制御ロジック１５に個別に供給し、入力データに基づき各制御ロジック１５により演算されたそれぞれの出力データの何れか一方をＩ／Ｏボード２０に出力するインタフェース部が組み込まれている。
【００７５】
インタフェース部は、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された制御ロジックの出力データをＩ／Ｏボード２０に出力し、或いは、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された両制御ロジック以外の出力データをＩ／Ｏボードに出力する。
【００７６】
制御ロジック１５及びメモリドライバ１７は、ホストコンピュータ２００からマザーボード１０のメモリにロードされ、さらに、ホストコンピュータ２００を介して、マザーボード１０のＣＰＵで実行される二つの制御ロジックが選択され、共有メモリ２２のメモリマップ情報、共有メモリ２２に対応してマザーボード１０のメモリ領域に区画される仮想レジスタのマップ情報、Ｉ／Ｏボード２０に組み込まれたファームウェア２１の入出力ポートに対する信号割付情報、Ｉ／Ｏボード２０とインタフェースボード３０間の信号系路情報等の初期設定情報が設定される。
【００７７】
仮想レジスタのマップ情報は、二つの制御ロジックに対応してそれぞれ異なる領域に区画された少なくとも二つのレジスタ領域であるＩ／Ｏデータ領域が含まれる。図６では、共有メモリ２２のメモリマップ情報に対応する統括仮想レジスタと制御ロジック１５（Ａ，Ｂ，・・・，Ｚ）に個別に対応する個別仮想レジスタ（Ａ，Ｂ，・・・，Ｚ）が区画されている。個別仮想レジスタ（Ａ，Ｂ，・・・，Ｚ）は、対応する制御ロジック１５（Ａ，Ｂ，・・・，Ｚ）以外からアクセスされないように、各制御ロジック１５（Ａ，Ｂ，・・・，Ｚ）毎にアドレス設定されている。
【００７８】
ホストコンピュータ２００によって選択される制御ロジックの一つは制御ロジック１５（Ａ）であり、他の一つは制御ロジック１５（Ｂ，・・・，Ｚ）の何れかである。
【００７９】
その後、ホストコンピュータ２００からの指令に基づいてメモリドライバ１７及び二つの制御ロジック１５が起動され車両のエンジンが制御される。
【００８０】
本ソフトウェア開発装置では、マザーボード１０にデュアルコアＣＰＵが搭載されており、予めＯＳの設定によって、制御ロジック１５（Ａ）が一方のＣＰＵコアで、他方の制御ロジック１５（Ｂ，・・・，Ｚ）が他方のＣＰＵコアで実行されるように設定され、両制御ロジックが並行して実行されるように環境設定されている。
【００８１】
メモリドライバ１７は、例えば、１ｍｓｅｃ．のタイマ割込みが発生すると、制御ロジック１５Ａ，１５Ｂのそれぞれに含まれる時間同期処理のための制御ロジックを起動する。
【００８２】
メモリドライバ１７に組み込まれたインタフェース部は、統括仮想レジスタに区画された入力レジスタに割込みフラグがセットされていると、当該割込みフラグをリセットして、個別仮想レジスタＡ，Ｂに入力論理データ（入力データ）を書き込み、制御ロジック１５Ａ，１５Ｂのそれぞれに含まれる当該割込みフラグに対応する時間非同期の制御ロジックを起動する。
【００８３】
メモリドライバ１７に組み込まれたインタフェース部は、各制御ロジック１５Ａ，１５Ｂから個別仮想レジスタＡ，Ｂに割込みフラグがセットされると、個別仮想レジスタＡ，Ｂに書き込まれた出力論理データ（出力データ）を比較し、双方の値が一致するとき、或いは、双方の差分が予め設定された許容範囲内であるときには、制御ロジック１５Ｂの出力論理データ及び割込みフラグを、統括仮想レジスタに区画された出力レジスタに書き込み、ＰＣＩ通信ドライバを起動する。
【００８４】
ＰＣＩ通信ドライバは、出力レジスタに書き込まれたデータをＩ／Ｏボード２０に転送した後に、当該割込みフラグをリセットする。
【００８５】
メモリドライバ１７に組み込まれたインタフェース部は、個別仮想レジスタＡ，Ｂに書き込まれた出力論理データを比較し、双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときには、制御ロジック１５Ａの出力論理データ及び割込みフラグを、統括仮想レジスタに区画された出力レジスタに書き込み、ＰＣＩ通信ドライバを起動する。許容範囲は、予めホストコンピュータ２００からデータ種類毎に設定入力されている。
【００８６】
ＰＣＩ通信ドライバは、出力レジスタに書き込まれたデータをＩ／Ｏボード２０に転送した後に、当該割込みフラグをリセットする。
【００８７】
つまり、双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときには、新規に開発した制御ロジックＢに何らかの破綻をきたしていると判断して、既存の検証済みの制御ロジックＡの出力論理データ及び割込みフラグを、優先して統括仮想レジスタに区画された出力レジスタに書き込むのである。
【００８８】
このようなインタフェース部を備えることにより、開発中の新規ロジックに何らかの異常が発生した場合であっても、エンジンや車両に重大な損傷を与えることなく、ロジックの検証を行なうことができるのである。
【００８９】
インタフェース部は、制御ロジックの異常を検知すると、マザーボード１０に設けたＬＥＤを点灯させ、或いはブザーを鳴動させて、オペレータに異常を報知する。
【００９０】
尚、インタフェース部は、各制御ロジック１５Ａ，１５Ｂから個別仮想レジスタＡ，Ｂに割込みフラグが同時にセットされない場合に備えて、一定の許容時間内にセットされない場合には、何れかの制御ロジックが破綻していると判断して、予め設定された両制御ロジック以外の出力論理データをＩ／Ｏボード２０に出力するように構成されている。
【００９１】
予め設定された両制御ロジック以外の出力データとは、車両の破損を招くことに無い出力論理データであり、許容時間を含めて、予めホストコンピュータ２００から設定されたデータである。
【００９２】
それぞれの制御ロジックＡ，Ｂによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、何れの制御ロジックの出力論理データを採用するかを、予めホストコンピュータ２００を介して設定しておき、設定された制御ロジックの出力論理データ及び割込みフラグを統括仮想レジスタに区画された出力レジスタに書き込むように構成してもよい。
【００９３】
さらに、双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、何れかの制御ロジックが破綻していると判断して、予め設定された両制御ロジック以外の出力論理データを統括仮想レジスタに区画された出力レジスタに書き込むように構成してもよい。
【００９４】
またさらに、例えば、図７に示すように、制御ロジックＡの出力データ及び制御ロジックＢの出力論理データがパルス信号を示す出力データである場合において、図中に示す、時刻ｔ１から時刻ｔ２までの期間及び時刻ｔ２から時刻ｔ３までの期間に示すように各出力データが異なる場合は、安全側の出力データを出力するように構成してもよい。
【００９５】
安全側の出力データとして、例えば、０に近い側の出力データを選択するように設定することができる。図中に示す時刻ｔ１から時刻ｔ２までの期間は、制御ロジックＢの出力データを出力し、図中に示す時刻ｔ２から時刻ｔ３までの期間は、制御ロジックＡの出力データを出力するのである。また、安全側の出力データとして、現在出力中のデータとの差分が小さい方のデータを選択するようにしてもよい。走行状態の急変を回避するためである。
【００９６】
上述した実施形態では、それぞれの制御ロジックＡ，Ｂによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、何れかの出力論理データまたは第三の出力論理データを選択して出力する場合を説明したが、このような非常事態に備えて、マザーボード１０のメモリに、フェールセーフ用のロジック、例えば、低速に減速して安全に停車するための退避走行用の制御ロジックを格納しておき、それぞれの制御ロジックＡ，Ｂによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、退避走行用の制御ロジックの出力論理データ及び割込みフラグを、統括仮想レジスタに区画された出力レジスタに書き込ように構成してもよい。
【００９７】
上述した実施形態では、それぞれの制御ロジックＡ，Ｂによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、異常が発生したと判断するインタフェース部を備えた例を説明したが、これに加えて、各制御ロジックＡ，Ｂの何れかに、オーバーフローエラーやゼロ除算等のＣＰＵ例外が発生したとき、制御ロジックに実装されているエラー発生時のシステムリセット関数がコールされたとき、ユーザ定義エラーが発生したときに、インタフェース部が、他方の制御ロジックの出力論理データ或いは予め設定された出力論理データを統括仮想レジスタに区画された出力レジスタに書き込ように構成してもよい。
【００９８】
ユーザ定義エラーの発生は、各制御ロジックＡ，Ｂの所定のロジック、例えば、新規開発で検証が必要な制御ロジックに、出力論理データの異常判定ロジックを組み込むことにより実現できる。
【００９９】
インタフェース部がこれらの異常を検知する方法は公知の技術を適宜使用することができる。例えば、各制御ロジックＡ，Ｂに、それらの異常が発生したときに、メモリに異常フラグをセットするロジックを実装しておけばよい。
【０１００】
上述した実施形態では、制御ロジックＡに検証済みの制御ロジックが採用される場合を説明したが、制御ロジックＡ，Ｂともに未検証の制御ロジックを採用することガ可能であることはいうまでもない。
【０１０１】
本発明によるソフトウェア開発装置には、マザーボード１０のメモリに、制御ロジックＡ，Ｂにより処理される入出力データ、特に共有メモリを介して遣り取りされるデータをモニタしてホストコンピュータ２００に送信するＲＡＭモニタが格納されている。
【０１０２】
従って、ホストコンピュータ２００の表示器２１０には、ＲＡＭモニタによって転送されたエンジンとソフトウェア開発装置との間でやり取りされるデータがリアルタイムで表示され、開発者等が、表示器２１０に表示されたデータを目視して、各制御ロジックを検証できるように構成されている。また、これらのデータは、後に詳細に評価できるように、ログデータとしてホストコンピュータ２００のハードディスクに格納される。
【０１０３】
表示器２１０に表示される画面は、制御ロジックＡ，Ｂ双方のデータが同時に表示され、対比することが可能な対比モードと、何れか一方のデータのみが表示される単一表示モードが選択可能である。
【０１０４】
ＲＡＭモニタは、モニタしたデータをリアルタイムでホストコンピュータ２００に転送するものに限らず、マザーボード１０のメモリに区画されたモニタデータ格納領域に時刻情報とともに格納され、後に一括してホストコンピュータ２００に転送するように構成してもよい。
【０１０５】
メモリ容量の制限によって、全てデータをログデータとして記憶できない場合には、規定の容量に達するまで記憶してもよいし、リングバッファ方式で、古いデータから上書きして、最新のデータを確保するように構成してもよい。
【０１０６】
さらに、リングバッファ方式を採用して、リグデータを記憶しながら、制御ロジックの不一致等の異常が発生した前後のデータをフリーズデータとして、メモリの他の領域に保存するように構成してもよい。このようなフリーズデータが後にホストコンピュータ２００に転送され、詳しく検証されるのである。
【０１０７】
尚、上述したソフトウェア開発装置１００の用途は、車両Ｃに搭載されるＥＣＵの制御ロジックの開発に限るものではなく、広く組み込みソフトウェアの開発に使用可能であることはいうまでもない。
【０１０８】
上述したソフトウェア開発装置１００の具体構成は例示に過ぎず、各部の具体的な構成は、本発明の作用効果を奏する限りにおいて、構築するシステムに応じて適宜変更設計することが可能である。
【符号の説明】
【０１０９】
１０：制御ロジック処理部（マザーボード）
１５：制御ロジック
１７：メモリドライバ（インタフェース部）
２０：Ｉ／Ｏ処理部（Ｉ／Ｏボード）
２１：ファームウェア
２２：共有メモリ
１００：ソフトウェア開発装置
Ｃ：車両
【図１】
2010224971.tif 000003
【図２】
2010224971.tif 000004
【図３】
2010224971.tif 000005
【図４】
2010224971.tif 000006
【図５】
2010224971.tif 000007
【図６】
2010224971.tif 000008
【図７】
2010224971.tif 000009