(57)【要約】【課題】ＣＰＵに暴走等の異常が発生しても、制御対象が安全に作動可能な模擬マイクロコンピュータ装置を提供する。【解決手段】模擬マイクロコンピュータ装置は、制御対象の動作を制御するためのプログラムである第一のプログラムを実行する第一のＣＰＵと、第一のＣＰＵの周辺リソースとして機能し、前記第一のＣＰＵからの前記制御対象を制御するための信号の出力を制御する第二のプログラムを実行する第二のＣＰＵと、第一のＣＰＵと第二のＣＰＵの異常を監視し、第一のＣＰＵと第二のＣＰＵの少なくとも一方の異常を検出すると、第二のＣＰＵにリセット信号を出力する異常監視部とを備え、前記リセット信号が入力されると、第二のＣＰＵは前記制御対象が安全な動作を行なうように制御するプログラムである第三のプログラムを実行するように構成される。【選択図】図６
2009054041.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の動作を制御するためのプログラムである第一のプログラムを実行する第一のＣＰＵと、
第一のＣＰＵの周辺リソースとして機能し、前記第一のＣＰＵからの前記制御対象を制御するための信号の出力を制御する第二のプログラムを実行する第二のＣＰＵと、
第一のＣＰＵと第二のＣＰＵの異常を監視し、第一のＣＰＵと第二のＣＰＵの少なくとも一方の異常を検出すると、第二のＣＰＵにリセット信号を出力する異常監視部と、
を備え、
前記リセット信号が入力されると、第二のＣＰＵは前記制御対象が安全な動作を行なうように制御するプログラムである第三のプログラムを実行する模擬マイクロコンピュータ装置。
【請求項２】
第一のＣＰＵと第二のＣＰＵの間の入出力情報を中継する共有メモリ部を備えたＩＯ処理部を備え、
前記ＩＯ処理部は、前記異常監視部から出力されたリセット信号を検出すると、第二のＣＰＵにより前記第三のプログラムが実行されるように制御する請求項１記載の模擬マイクロコンピュータ装置。
【請求項３】
前記異常監視部は、
第一のＣＰＵから出力されるウォッチドッグパルスを監視する第一のウォッチドッグ回路と、
前記ＩＯ処理部に設けられ、第二のＣＰＵから出力されるウォッチドッグパルスを監視する第二のウォッチドッグ回路と、
第一または第二のウォッチドッグ回路の何れかから出力されるリセット信号により第二のＣＰＵにリセット信号を出力するゲート回路と、
第一のウォッチドッグ回路から出力されるリセット信号を前記ＩＯ処理部に通知する信号線を備えている請求項２記載の模擬マイクロコンピュータ装置。
【請求項４】
前記異常監視部が、第一のＣＰＵと第二のＣＰＵの間の入出力情報を中継する共有メモリ部を備えたＩＯ処理部に設けられ、前記ＩＯ処理部は、前記異常監視部から出力されたリセット信号を検出すると、第二のＣＰＵにより前記第三のプログラムが実行されるように制御する請求項１記載の模擬マイクロコンピュータ装置。
【請求項５】
ホストコンピュータに接続され、制御対象の動作を制御するアプリケーションプログラムを、マイクロコンピュータを模擬した環境で実行する模擬部と、
前記模擬部によって前記制御対象の制御が行なわれる際のデータが記憶されるメモリ部と、
前記メモリ部の異常を監視し、異常を検出すると、前記模擬部にメモリ異常信号を出力するメモリ監視部と、
前記模擬部の異常を監視し、異常を検出すると、前記模擬部にリセット信号を出力する異常監視部と、
を備え、
前記模擬部は、前記リセット信号が入力されると、前記制御対象が安全な動作を行なうように制御する保護プログラムを実行するとともに、前記ホストコンピュータに制御異常発生情報を送信し、
前記模擬部は、前記メモリ異常信号が入力されると前記ホストコンピュータにデータ異常発生情報を送信する模擬マイクロコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御するマイクロコンピュータに組み込まれるソフトウェアを開発し評価するためのソフトウェア開発装置等に用いられる模擬マイクロコンピュータ装置に関する。
【背景技術】
【０００２】
電子機器を制御するマイクロコンピュータを備えた電子制御装置、例えば車両のエンジンを制御する電子制御ユニット（ＥＣＵ）のような電子制御装置では、エンジン等の制御対象機器の高性能化、高機能化といった技術トレンドに沿って、使用されるマイクロコンピュータの性能も年々進化しており、現状の電子制御装置に使用されているマイクロコンピュータの性能よりも進化したマイクロコンピュータを想定して新しいアプリケーションプログラム（ロジック）が開発されている。
【０００３】
通常、性能が進化した次世代のマイクロコンピュータは開発時点で存在せず、現在のマイクロコンピュータよりも性能を向上させた次期マイクロコンピュータが組み込まれた電子制御装置が実在しない場合、現状のマイクロコンピュータをベースにして先行ロジックの開発を行なわざるを得ない。
【０００４】
しかし、現状のマイクロコンピュータが組み込まれた電子制御装置を用いて先行ロジックの先行開発を行う場合には、現状のマイクロコンピュータに搭載されているＣＰＵの処理能力の不足、メモリ容量の不足、周辺リソースの不足等の問題があるため、次期マイクロコンピュータ及びそのアプリケーションプログラムの開発が遅れ、新製品の開発に支障を来たしていた。
【０００５】
尚、現状の電子機器に組み込まれているマイクロコンピュータは、電子機器のコストを低く抑えるために、現状のシステムに最適な仕様でＣＰＵ性能及び周辺機能が選択され、ＣＰＵやＣＰＵの周辺リソースが１つのパッケージの中に組み込まれているため、それぞれの機能変更はマイクロコンピュータを変更しない限り不可能である。
【０００６】
そこで、特許文献１には、アプリケーション処理機能と通信機能を備えた中央ブロックと、マイクロコンピュータの周辺装置を擬似的にソフトウェアで実現して入出力処理を行う疑似マイクロコンピュータ周辺装置、演算機能、及び通信機能を有し、前記中央ブロックとＰＣＩバスで接続される周辺ブロックと、電子制御ユニットのハードウェアに相当する回路を有し、前記周辺ブロックに接続するインタフェース回路ブロックとを備え、前記中央ブロックの通信機能と、前記疑似マイクロコンピュータ周辺装置との間にある前記演算機能に、バスコントローラが設けられ、前記ＰＣＩバスで前記中央ブロックの通信機能とこのバスコントローラとの間が接続され、前記バスコントローラと前記疑似マイクロコンピュータ周辺装置との間は内部バスで接続され、前記ＰＣＩバス、前記バスコントローラ、及び前記内部バスを介して、前記通信機能と前記疑似マイクロコンピュータ周辺装置との間で、直接データの送受信が行われるように構成されたソフトウェア開発装置が提案されている。
【０００７】
当該ソフトウェア開発装置では、中央ブロック及び周辺ブロックに、マイクロコンピュータのＣＰＵと周辺リソースとを接続するバス相当の機能を実現するソフトウェアであるＩＯドライバが実装され、その間がＰＣＩバスで接続されるとともに、中央ブロックにはＩＯドライバとアプリケーションプログラムを接続するソフトウェアであるプラットフォームが実装され、周辺ブロックにはＦＰＧＡでなる疑似マイクロコンピュータ周辺装置がファームウェアとして実装されている。
【特許文献１】特開２００４−２３４５３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した従来のソフトウェア開発装置は、図１に示すように、ＣＰＵと割り込みコントローラやキャプチャ等の周辺リソースで構成されるマイクロコンピュータの機能を分解して、アプリケーションプログラムを実行するＣＰＵの処理内容を中央ブロックであるＣＰＵボードに割り付け、マイクロコンピュータの周辺リソースによる処理内容を周辺ブロックであるＩＯボードに割り付けていたために、マイクロコンピュータのＣＰＵが処理していた周辺リソースに対するＩ／Ｏ処理（図中、「マイコンＩ／Ｏ」と記す。）をＣＰＵボードで処理する構成となっていた。
【０００９】
しかし、このような周辺リソースに対するＩ／Ｏ処理はマイクロコンピュータのハードウェア構成に依存する処理であったために、模擬するマイクロコンピュータが変更される度に、ＣＰＵボードをそれに合わせるべくＩ／Ｏ処理を実行するＩＯドライバを交換したり、場合によってはＣＰＵボード自体を交換しなければならなかった。
【００１０】
つまり、上述した従来のソフトウェア開発装置であっても、中央ブロックに実装されるプラットフォームやＩＯドライバがアプリケーションプログラムと完全に分離されず、一部がアプリケーションプログラムに組み込まれていたこともあり、ターゲットとするマイクロコンピュータを変更する場合には、それに対応して周辺ブロックのファームウェアやＩＯドライバを変更するばかりでなく、中央ブロックに実装されるプラットフォームやＩＯドライバ、さらにはアプリケーションプログラムを変更して交換するという煩雑な作業が要求されるものであったため、汎用化という観点で更なる改良の余地があった。
【００１１】
そこで、本願発明者らは、ターゲットとするマイクロコンピュータが変更される場合であっても迅速に対応でき、スピーディなソフトウェア開発が可能となる模擬マイクロコンピュータ装置として、マイクロコンピュータに設けられるＣＰＵによって処理されるアプリケーションプログラムを実行する第一のＣＰＵと、マイクロコンピュータに設けられる周辺リソースとして機能する第二のＣＰＵと、第一のＣＰＵと第二のＣＰＵとの間でのデータの遣り取りを行なう共有メモリを備え、周辺リソースとなる第二のＣＰＵに対する入出力処理をＦＰＧＡで実行するＩＯ処理部を備えた模擬マイクロコンピュータ装置を開発中である。
【００１２】
このような模擬マイクロコンピュータ装置を実際の車両に搭載して、先行ロジックの検証を行なう場合には、最終製品であるマイクロコンピュータと異なりノイズ耐性が弱いため、ＣＰＵに暴走等の異常が発生したり、共有メモリに異常なデータが書き込まれたときでも、事故の発生を未然に回避すべく、種々の安全機能を備える必要がある。
【００１３】
通常、マイクロコンピュータ装置にはＣＰＵの異常を検出してリセット信号を出力するウォッチドッグ回路等の異常監視装置が設けられているが、複数のＣＰＵが協働して作動するように複雑に構成された模擬マイクロコンピュータ装置では、各ＣＰＵにリセット信号が出力されても、個々のＣＰＵが立ち上がり、制御対象を適切に制御できるようになるまで時間が掛かり、制御対象の安全性の確保という点で更なる改善の余地があった。
【００１４】
また、模擬マイクロコンピュータ装置から取り出される各種の制御データを検証して開発ロジックの評価が行なわれるのであるが、そのような異常監視装置が作動した時点で、既に検証データの信頼性も損なわれるため、データの信頼性管理も要求されていた。
【００１５】
本発明は、上述の問題点に鑑み、ＣＰＵに暴走等の異常が発生したときでも、制御対象の安全な動作が確保できる模擬マイクロコンピュータ装置を提供し、メモリに異常なデータが書き込まれたときでも、検証データの信頼性が確保できる模擬マイクロコンピュータ装置を提供する点にある。
【課題を解決するための手段】
【００１６】
上述の目的を達成するため、本発明による模擬マイクロコンピュータ装置の特徴構成は、制御対象の動作を制御するためのプログラムである第一のプログラムを実行する第一のＣＰＵと、第一のＣＰＵの周辺リソースとして機能し、前記第一のＣＰＵからの前記制御対象を制御するための信号の出力を制御する第二のプログラムを実行する第二のＣＰＵと、第一のＣＰＵと第二のＣＰＵの異常を各別に監視し、第一のＣＰＵと第二のＣＰＵの少なくとも一方の異常を検出すると、第二のＣＰＵにリセット信号を出力する異常監視部とを備え、前記リセット信号が入力されると、第二のＣＰＵは前記制御対象が安全な動作を行なうように制御するプログラムである第三のプログラムを実行する点にある。
【００１７】
上述の構成によれば、異常監視部により第一のＣＰＵまたは第二のＣＰＵの何れかの異常が検出されてリセット信号が出力されると、第二のＣＰＵにより前記制御対象が安全な動作を行なうように制御する第三のプログラムが実行されるため、制御対象が異常な動作を行なうことによって生じる事故を防ぐことができるようになる。
【発明の効果】
【００１８】
以上説明した通り、本発明によれば、ＣＰＵに暴走等の異常が発生しても、制御対象が安全に作動可能な模擬マイクロコンピュータ装置を提供することができるようになった。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明による模擬マイクロコンピュータ装置で構成されるソフトウェア開発装置の実施形態を説明する。
【００２０】
以下に、制御対象である車両のエンジンを制御する電子制御ユニット（以下、「ＥＣＵ」と記す。）に組み込まれるマイクロコンピュータのアプリケーションプログラムの先行開発に、模擬マイクロコンピュータ装置が適用される場合を説明する。尚、模擬マイクロコンピュータ装置は、車両に搭載される電子制御ユニットのアプリケーションプログラムの開発用途に限るものではなく、制御用のマイクロコンピュータを備えたＯＡ機器のアプリケーションプログラムの開発等、組み込みソフトウェアの開発に広く適用可能なものである。
【００２１】
図２に示すように、模擬マイクロコンピュータ装置（以下、「ソフトウェア開発装置」と記す。）１００は、車両ＣのエンジンＥＮＧがマウントされるエンジンルームに配置されるＥＣＵ１０１の接続コネクタを外し、ＥＣＵ１０１に替えてこのコネクタに接続されるハーネスＨをソフトウェア開発装置１００に直接接続して使用される。
【００２２】
ソフトウェア開発装置１００は、表示装置２１０やデータを入力するためのキーボード２２０を備えた上位のホストコンピュータ２００に接続されている。Ｓ１，Ｓ２はそれぞれロジック装置２００とホストコンピュータ２００を動作させるための電源スイッチである。ソフトウェア開発装置１００の状態が表示装置２１０でモニタされ、ソフトウェア開発装置１００の各種の動作モードの設定がキーボード２２０を介して行なわれる。
【００２３】
ソフトウェア開発装置１００は、車両Ｃに搭載してエンジンＥＮＧに直接接続して使用することができ、パーソナルコンピュータ２４０に制御され、車両の様々な運転状況を擬似的に発生することができる車両の運転状況発生装置２３０に接続して、車両Ｃが存在しない場合でもＥＣＵ１０１に組み込まれるマイクロコンピュータのアプリケーションプログラムが開発できるように構成されている。
【００２４】
一般に、ＥＣＵ１０１は、図３に示すように、エンジン回転数信号や車速信号等のパルス入力、水温センサや吸気温センサ等からのアナログ入力、及びスタータスイッチ、電気負荷スイッチ、シフト位置スイッチやエアコン信号等のデジタル入力が入力されるバッファＢと、バッファＢに入力された信号を処理するマイクロコンピュータＭと、マイクロコンピュータＭで処理された信号を増幅して出力するドライバＤを備えて構成されている。
【００２５】
シフト制御ソレノイドやＶＶＴ（可変バルブタイミング）ソレノイドへのアナログ出力、点火信号や燃料の噴射信号等のパルス出力、ＩＳＣ（アイドル速度制御）用のパルス出力、及び、チェックエンジンランプ、メインリレーやエヤコンカット信号等のデジタル信号等がＥＣＵ１０１からドライバＤを介してエンジンに出力される。
【００２６】
マイクロコンピュータＭは、アプリケーションプログラムが格納されるＲＯＭや演算処理に使用されるＲＡＭを備えたメモリ１０９、アプリケーションプログラムを実行するＣＰＵ１０２、及び、入出力制御を行う周辺リソースが一つのパッケージに収納されたものである。
【００２７】
周辺リソースには、入力系のリソースと出力系のリソースが含まれ、入力系のリソースとしてデジタル信号を扱う入力ポート１０３とラッチポート１０４、アナログ入力を扱うＡ／Ｄコンバータ１０５、及びパルス入力を扱うキャプチャ１０６等が設けられ、出力系のリソースとしてデジタル信号を出力する出力ポート１１２、パルス信号を出力するＰＷＭ（パルス幅変調器）１１３とコンペア１１４、及びアナログ信号を出力するシリアル１１５等が設けられている。
【００２８】
これらの周辺リソースは内部バス１１０によってメモリ１０９及びＣＰＵ１０２に相互に接続されている。また、マイクロコンピュータＭの内部には、これらの周辺リソースに加えて、内部タイマ１０７や割り込みコントローラ１０８が設けられている。
【００２９】
車両の運転状態を表す各センサやスイッチ類からの信号が入力回路であるバッファＢを介してＥＣＵ１０１に取り込まれると、ＥＣＵ１０１の入力回路で入力信号が信号処理され、マイクロコンピュータＭに入力される。入力された信号は入力系の周辺リソースでＣＰＵが処理可能な値に変換され、演算部であるメモリ１０９とＣＰＵ１０２では入力信号から車両状態が検出され、車両状態に応じた出力要求信号が生成される。
【００３０】
この出力要求信号は前述の出力系の周辺リソースで出力信号に変換され、マイクロコンピュータＭから出力される。ＥＣＵ１０１の出力回路であるドライバＤはこの出力信号に従って車両に装備された各アクチュエータを駆動し、この出力制御の結果が破線で示すように、車両からの入力信号に反映される。
【００３１】
本発明によるソフトウェア開発装置１００は、上述したＥＣＵ１０１に搭載されるべきターゲットとなる新規なマイクロコンピュータ（以下、「仮想マイクロコンピュータ」と記す。）を模擬するエミュレータとして機能し、図４及び図５に示すように、マザーボード１０と、ＩＯボード２０と、インタフェースボード３０とからなる模擬部を備えている。
【００３２】
マザーボード１０には、第一のアプリケーションプログラムであるエンジン制御プログラムを実行する第一のＣＰＵ１２と、メモリと、ＰＣＩバスインタフェース回路と、ＰＣＩバスを中継するブリッジであるスターファブリックのような高速ＬＡＮインタフェース回路が搭載されている。第一のＣＰＵ１２は、例えば、インテル社のペンティアムプロセッサ（ペンティアムはインテル社の登録商標）のような汎用のパーソナルコンピュータに用いられる数ＧＨｚの高機能のＣＰＵが用いられる。
【００３３】
ＩＯボード２０には、ターゲットとなる仮想マイクロコンピュータの入力系及び出力系の周辺リソースとして機能させる第二のアプリケーションプログラムを実行する第二のＣＰＵを備えたマイクロコンピュータで構成されるファームウェア２１と、百数十ＭＨｚで動作するＣＰＵと、メモリと、仮想マイクロコンピュータのＣＰＵと入出力系のリソースを接続する機能を模擬し、第一のＣＰＵと第二のＣＰＵ間を接続する内部バスとして機能する共有メモリ部２４を備えたＩＯ処理部２３と、ＰＣＩバスインタフェース回路と、ＰＣＩバスを中継するブリッジであるスターファブリックのような高速ＬＡＮインタフェース回路が搭載されている。
【００３４】
共有メモリ部２４は、ファームウェア２１との間で遣り取りされる制御データやインタフェースボード３０との間で遣り取りされる入出力データを格納する複数のレジスタを備えたＦＰＧＡ（Field Programmable Gate Alley）で構成される。ＩＯボード２０のメモリには、共有メモリ部２４に格納された制御データ等をマザーボード１０側と遣り取りするＰＣＩ通信ドライバ２６、ＬＡＮ通信ドライバ２８等が格納されている。
【００３５】
インタフェースボード３０には、ファームウェア２１とエンジンＥＧＮまたは上述の運転状況発生装置２３０との間を接続する入出力回路３１が搭載されている。
【００３６】
マザーボード１０とＩＯボード２０間は、データ通信バスとしてのＰＣＩバスで接続され、ＩＯボード２０とインタフェースボード３０間は複数の入出力信号ラインで接続されている。
【００３７】
第一のＣＰＵ１２を備えたマザーボード１０により仮想マイクロコンピュータのＣＰＵが模擬され、第二のＣＰＵを備えたファームウェア２１により仮想マイクロコンピュータのＣＰＵの周辺リソースが模擬され、ＩＯ処理部２３により仮想マイクロコンピュータのＣＰＵと周辺リソース間のＩＯ処理が実行されることにより模擬マイクロコンピュータ装置が構成されている。
【００３８】
以下、詳述する。マザーボード１０のメモリには、第一のアプリケーションプログラムとしてのエンジン制御用のアプリケーションプログラム１５、ＰＣＩ通信ドライバ１６、ＰＣＩを介して後述の共有メモリ部にアクセスする仮想レジスタとしてのメモリドライバ１７、ＩＯボード２０との通信を行なう第一のＬＡＮ通信ドライバ１８、ホストコンピュータ２００との通信を行なう第二のＬＡＮ通信ドライバ等が格納されている。
【００３９】
第一のアプリケーションプログラム１５とメモリドライバ１７は相互に独立して構築され、メモリドライバ１７を介して共有メモリ部２４から読み出された制御信号が第一のアプリケーションプログラム１５に引き渡され、第一のアプリケーションプログラム１５で演算された出力データがメモリドライバ１７を介して共有メモリ部に格納される。
【００４０】
ファームウェア２１で発生し、アプリケーションプログラムにより実行される各演算を起動する割込みイベント等の制御データがＰＣＩバスを介して共有メモリ部２２に記憶され、共有メモリ部２４に記憶された制御データがＰＣＩバスを介してマザーボード１０に読み取られるように構成されている。読み取られた制御データに基づいて実行されるアプリケーションプログラムの演算結果である出力信号がＰＣＩバスを介して共有メモリ部２４に記憶された後に各ファームウェア２１を介してインタフェースボード３０に出力される。
【００４１】
ファームウェア２１は上述したように既存のマイクロコンピュータをコアとして構成され、当該マイクロコンピュータのＲＯＭに格納された第二のアプリケーションプログラムである制御プログラムに基づいて、上述した入力ポート１０３やラッチポート１０４、Ａ／Ｄコンバータ１０５、キャプチャ１０６、出力ポート１１２、ＰＷＭ（パルス幅変調器）１１３やコンペア１１４、シリアル１１５、内部タイマ１０７等の周辺リソースが模擬される。尚、個々の周辺リソースをＦＰＧＡやハードウェア回路で構成することも可能であるが、既存のマイクロコンピュータを用いて構成することにより、異なる周辺リソースを容易に構築でき、ターゲットとなる仮想マイクロコンピュータに応じてフレキシブル且つ迅速に機能を変更することができる。
【００４２】
当該マイクロコンピュータのＲＯＭには、第二のアプリケーションプログラムに加えて第三のプログラムとしての保護プログラムが格納され、後述する異常監視部により第一のＣＰＵまたは第二のＣＰＵに異常が発生したと検出された後に実行され、制御対象となるエンジン及びエンジンが搭載された車両を保護するように構成されている。
【００４３】
各ファームウェア２１は外部割込み信号線とデータ転送用の外部メモリバスを介して共有メモリ部２２と接続され、各ファームウェア２１で発生したイベントが外部割込み信号線を介して共有メモリ部２２に格納されると、仮想レジスタとしてのメモリドライバ１７によりＰＣＩバスを介して読み取られて第一のアプリケーションプログラムに引き渡され、第一のアプリケーションプログラムで設定されている所定の演算処理が起動される。
【００４４】
インタフェースボード３０は、ポート割付変換ボードと、ポート割付変換ボードのコネクタに挿入される複数の標準回路ボード及び機能ボードでなる入出力回路３１を備え、ポート割付変換ボードに挿入される標準回路ボード及び機能ボードの組み合わせにより任意の数の入出力回路を実現できるように構成されている。標準回路ボードはウォーニングランプの点灯信号やＣＡＮバス等のシリアル信号を入出力するドライバ回路やバッファ回路を備えたデジタル信号回路で構成され、機能ボードはパワートレーン出力回路、アナログ信号入出力回路、エンジンに対する噴射信号、点火信号、電子スロットル制御信号等を入出力する信号処理用の低機能マイクロコンピュータを備えた入出力処理回路で構成されている。
【００４５】
以上説明したように、マザーボード１０とＩＯボード２０によりターゲットとなる仮想マイクロコンピュータが模擬され、インタフェースボード３０により仮想マイクロコンピュータの周辺入出力回路が模擬され、インタフェースボード３０を介して制御対象であるエンジンＥＧＮと接続可能に構成されることにより、アプリケーションプログラムが実行されるＥＣＵとしての実環境が模擬される。
【００４６】
このような構成を採用することにより、第一のＣＰＵと、第二のＣＰＵを備えた周辺リソース間のＩ／Ｏ処理がＩＯボード上に具現化されるため、ターゲットとなる仮想マイクロコンピュータが変更された場合であっても、マザーボード上のアプリケーション等を変更する必要が無く、共有メモリに定義されるデータマップの変更や追加に対応して必要な場合に共有メモリに対するインタフェースドライバであるメモリドライバをマッチングさせるだけで対応できるようになる。
【００４７】
上述のソフトウェア開発装置１００の基本動作について説明する。アプリケーションプログラムは、時間同期処理（時間系割り込み処理）と非時間同期処理の２つの処理を行なう。時間同期処理は外部状態に依存せず、一定の時間間隔で定期的に行う処理であり、非時間同期処理は、外部状態、即ち、エンジンの運転状態に依存して発生する処理である。この非時間同期処理には、例えば、エンジンの回転信号、車速信号、燃料の噴射タイミング信号、点火タイミング信号等による割り込み処理が含まれる。このような外部状態によりランダムに変化する事象をイベントと呼ぶこととすると、非時間同期処理は、外部状態によりイベント情報を検出して、そのイベントに同期して行なう処理ということができる。
【００４８】
上述の時間同期処理と非時間同期処理とを行なうために、マザーボード１０には、仮想マイクロコンピュータ周辺として機能するべく、時間系割り込みと非時間系割り込みを発生させるとともに入出力データを格納する仮想レジスタが設けられており、メモリドライバ１７により読み書きされる共有メモリ部２２上のデータが仮想レジスタに格納され、第一のＣＰＵに読み取られるように構成されている。
【００４９】
第一のアプリケーションプログラムは、共有メモリ部２２に書き込まれた外部イベント（ファームウェアのタイマ、エンジン回転信号、車速信号、通信信号等によりセットされる割込みフラグ）が起点となって動作するように、割込みフラグによって起動する割込みルーチンを備え、外部割込みフラグの入力があると、この割込みルーチンが起動するようになっている。
【００５０】
仮想レジスタに割込み要因が１つでも存在すれば、その時のＩＯデータが仮想レジスタから読み出され、対応する第一のアプリケーションプログラムの一部が起動され、割込みフラグがリセットされて所定の演算処理が実行され、その結果である出力データが仮想レジスタに書き込まれる。
【００５１】
仮想レジスタに書き込まれた出力データはメモリドライバ１７によりＩＯボード２０の共有メモリ部２２の所定領域に書き込まれ、その値が模擬周辺機能ブロックであるファームウェア２１に出力される。尚、大量のデータを送受信する場合は、バースト転送が行われ、通信効率が上げられる。ポートデータやラッチデータ等の速度が要求されないビットデータは、メモリドライバの前処理、後処理で一括して送受信される。
【００５２】
このようにしてファームウェア２１で検出された外部イベントやタイマ割込みがＦＰＧＡで構成される共有メモリ部２２に割込みフラグとして格納されたことがメモリドライバにより読み出されることにより順次アプリケーションプログラムが実行される。
【００５３】
図６に示すように、上述の模擬マイクロコンピュータ装置１００には、第一のＣＰＵ１２と第二のＣＰＵ２２の異常を各別に監視し、第一のＣＰＵまたは第二のＣＰＵの何れかの異常を検出すると、第二のＣＰＵ２２にリセット信号を出力する異常監視部４を備えている。
【００５４】
異常監視部４は、模擬マイクロコンピュータ装置１００に電源を供給する電源回路に備えた第一のウォッチドッグ回路４１と、共有メモリ部２４（ＩＯ処理部の一部）を構成するＦＰＧＡに設けられた第二のウォッチドッグ回路４２と、第一または第二のウォッチドッグ回路４１，４２の何れかから出力されるリセット信号により第二のＣＰＵ２２にリセット信号を出力するＡＮＤゲート回路４３で構成されている。
【００５５】
第一のウォッチドッグ回路４１は、第一のＣＰＵのシリアル出力ポート（例えばＲＣ２３２ＣやＵＳＢポート）から出力され、第二のＣＰＵ２２を経由して入力されたるウォッチドッグパルスＷＤＣを監視し、第二のウォッチドッグ回路４２は複数（本実施形態では二つ）のＣＰＵ２２から出力されたウォッチドッグパルスＷＤＣ１，ＷＤＣ２を監視する。
【００５６】
異常監視部４は、夫々のウォッチドッグパルスが所定時間継続して入力されないときに、監視対象である何れかのＣＰＵに暴走等の異常が発生したと判断してリセット信号を出力する。ウォッチドッグ回路の具体的構成は特に限定されるものではなく、公知の構成を採用することができる。
【００５７】
また、図７に示すように、第一のウォッチドッグ回路４１をＦＰＧＡ上に構成し、第一及び第二のＣＰＵの異常をＦＰＧＡで検出するように構成するものであってもよい。
【００５８】
模擬マイクロコンピュータ装置１００に電源が投入され、起動すると、第一のアプリケーションプリグラムが第一のＣＰＵ１２により実行され、第一のアプリケーションプリグラムを実行する第二のＣＰＵ２２により実現される周辺リソース２１とインタフェースボード３０を介してエンジンＥＮＧが制御される。同時に、第一のＣＰＵ１２は、共有メモリ部２４を介して得られたエンジンＥＧＮとの間の制御データをＬＡＮを介してホストコンピュータ２００に送信する。ホストコンピュータ２００は、第一のＣＰＵ１２から送信された制御データをオペレータが目視できるように表示装置２１０（図２参照）に表示し、内部のメモリに記憶する。
【００５９】
図８に示すように、模擬マイクロコンピュータ装置１００が作動している間、異常監視部４により第一のＣＰＵ１２及び第二のＣＰＵ２２が監視され、第一のウォッチドッグ回路４１または第二のウォッチドッグ回路４２の何れか一方または双方からリセット信号が出力されると（ＳＡ１，ＳＡ２，ＳＡ３）、ＡＮＤゲート回路４３を介して第二のＣＰＵ２２がリセットされる（ＳＡ４）。ＡＮＤゲート回路４３から出力されるリセット信号は、第一のウォッチドッグ回路４１の動作に関与しないＦＰＧＡに、第一のウォッチドッグ回路４１から出力されるリセット信号をモニタするために、信号線（図６中、破線で示す。）を介してモニタ信号として入力される。
【００６０】
ＦＰＧＡでは、モニタ信号が入力され、或は、第二のウォッチドッグ回路４２からリセット信号が出力されると、内部レジスタの所定領域にＣＰＵ異常（制御異常）が発生した旨のフラグを設定し（ＳＡ５）、警報のために報知部でブザーを鳴動させ（ＳＡ６）、第二のＣＰＵ２２に対してＣＰＵ異常発生信号を出力する（ＳＡ７）とともに、共有メモリの所定領域にＣＰＵ異常発生データを書き込む（ＳＡ８）。
【００６１】
図９に示すように、第二のＣＰＵ２２は、異常監視部４から出力されたリセット信号に基づくリセット状態から復帰すると（ＳＢ１，Ｙｅｓ）、退避走行モードに移行し（ＳＢ２）、パワーオンリセット回路からのリセット信号に基づくリセット状態から復帰すると（ＳＢ１，Ｎｏ）、ステップＳＢ３の処理に移行する。ここで、異常監視部４から出力されたリセット信号によるリセットであるか否かの判断は、ＦＰＧＡの内部レジスタにセットされたＣＰＵ異常フラグに基づいてＦＰＧＡから出力されるＣＰＵ異常発生信号によって行なわれる。
【００６２】
ＣＰＵ異常発生信号が出力されていない正常状態のときには（ＳＢ３）、第二のアプリケーションプログラムである通常のプログラムを実行してファームウェアとして機能し（ＳＢ３）、退避走行モードのときには（ＳＢ３）、第二のアプリケーションプログラムの実行に替えて、制御対象であるエンジンＥＧＮを保護する第三のプログラムである保護プログラムを実行する（ＳＢ５）。
【００６３】
システムの電源がオフされるまでステップＳＢ３からの処理を繰り返し、システムの電源がオフされると処理を終了する（ＳＢ６）。つまり、ＩＯ処理部は、異常監視部４から出力されたリセット信号を検出すると、ＣＰＵ異常発生信号を出力して第二のＣＰＵ２２により保護プログラムが実行されるように制御する。
【００６４】
ステップＳＢ５では、第二のＣＰＵ２２は、第一のＣＰＵ１２の状態に関わらず保護プログラムを実行し、エンジンＥＧＮを低速の退避走行モードに制御することにより車両、エンジン、乗員であるオペレータを保護する。尚、保護プログラムにはエンジンを制御信号を遣り取りする第二のアプリケーションプログラムの一部機能と、安全に車両が停止できるようにエンジンを制御する第一のアプリケーションプログラムの一部機能が組み込まれている。
【００６５】
本実施形態では、二つの第二ＣＰＵ２２のうちの一方が第二アプリケーションプログラムまたは保護プログラムを実行し、他の第二のＣＰＵ２２が予備として設けられているが、複数の第二ＣＰＵ２２を通信線で接続して、協働して保護プログラムを実行するように構成してもよい。この場合に、第二のＣＰＵ２２は、夫々異なる第二アプリケーションプログラムを独立して実行することにより夫々異なる入出力リソースを模擬するように構成できる。
【００６６】
尚、第二のＣＰＵ２２で保護プログラムが実行されている間、つまり、内部レジスタにＣＰＵ異常発生フラグが設定されているときに、ＩＯ処理部２３は、第一のＣＰＵ１２から共有メモリに制御データが書き込まれても第二のＣＰＵ２２に対して第一のＣＰＵ１２からの出力データの出力処理を行なわない。
【００６７】
図１０に示すように、第一のＣＰＵ１２は、異常監視部４から出力されたリセット信号に基づくリセット状態から復帰すると（ＳＣ１，Ｙｅｓ）、走行制御データ及び試験データに異常が発生していると判断して、ホストコンピュータ２００に制御異常発生情報及びデータ異常発生情報を送信する（ＳＣ２）。尚、異常監視部４からのリセット信号に基づくリセット状態であったか否かは、共有メモリにセットされたＣＰＵ異常発生データにより判断される。
【００６８】
次に、第一のＣＰＵ１２は第一のアプリケーションプログラムを実行し（ＳＣ３）、共有メモリに異常が発生すると（ＳＣ４）、ホストコンピュータ２００に試験データ異常発生情報を送信する（ＳＣ５）。システムの電源がオフされるまでステップＳＣ３からの処理を繰り返し、システムの電源がオフされると処理を終了する（ＳＣ６）。
【００６９】
走行制御データ異常発生情報が送信されたホストコンピュータ２００は、第一のＣＰＵ１２から送信された制御データのモニタ処理を中断し、表示装置２１０にＣＰＵに異常が発生した旨のメッセージを表示する。
【００７０】
試験データ異常発生情報が送信されたホストコンピュータ２００は、第一のＣＰＵ１２から送信された制御データのモニタ処理を中断し、表示装置２１０に共有メモリに異常が発生した旨のメッセージを表示する。
【００７１】
共有メモリの異常はＦＰＧＡに備えたメモリ監視部により検出され、その結果が共有メモリの所定領域に格納される。メモリ監視部は定期的に共有メモリの異常発生を監視するために共有メモリの所定領域にベリファイ用のデータを書き込み、その後読み出して、書込みデータと読出しデータを照合する。照合の結果、書込みデータと読出しデータが不一致のときに共有メモリに異常が発生したと判断して、メモリ異常発生情報を共有メモリの所定領域に格納するのである。
【００７２】
共有メモリに異常が発生すると、ホストコンピュータ２００によりモニタされている制御データの信頼性が損なわれたと判断して、そのようなデータを評価から排除するためにこのような処理が行なわれる。尚、共有メモリをブロックに分割構成することにより、同時に全ての共有メモリが破損することが無いように配慮され、ブロック毎にメモリ異常発生情報の書込み領域を設定すればよい。
【００７３】
このように、何れのＣＰＵに異常が生じたときでも第二のＣＰＵ２２がリセットされ、正常復帰した第二のＣＰＵにより車両の安全確保のために保護プログラムが実行されることにより、制御対象が異常な動作を行なうことによって生じるエンジンの破壊等の事故を防ぐことができ、さらには、エンジンが異常な動作をすることによって生じる交通事故を防ぐことができる。第一のＣＰＵ１２が正常時に第二のＣＰＵ２２に異常が生じた場合には、ＩＯ処理部を介して第一のＣＰＵ１２にＣＰＵ異常情報が出力され、ホストコンピュータを介してオペレータに異常発生が報知される。このとき、第一のＣＰＵ１２は待機状態を維持する。
【００７４】
第二のＣＰＵ２２が正常時に第一のＣＰＵ１２に異常が生じた場合には、報知部から発せられるブザーの鳴動音によりオペレータに異常発生が報知される。
【００７５】
以上説明したように、模擬マイクロコンピュータ装置は、ホストコンピュータに接続され、制御対象の動作を制御するアプリケーションプログラムを、マイクロコンピュータを模擬した環境で実行する模擬部と、模擬部によって制御対象の制御が行なわれる際のデータが記憶されるメモリ部と、メモリ部の異常を監視し、異常を検出すると、模擬部にメモリ異常信号を出力するメモリ監視部と、模擬部の異常を監視し、異常を検出すると、模擬部にリセット信号を出力する異常監視部とを備えて構成され、模擬部は、リセット信号が入力されると、制御対象が安全な動作を行なうように制御する保護プログラムを実行するとともに、ホストコンピュータに制御異常発生情報を送信し、メモリ異常信号が入力されるとホストコンピュータにデータ異常発生情報を送信するように構成されている。
【００７６】
上述した実施形態では、第一のＣＰＵ１２として汎用の高機能ＣＰＵが用いられるものを説明したが、想定される次世代のマイクロコンピュータの機能を実現できるような処理速度等の諸機能を備えたＣＰＵであれば実施例に例示したものに限るものではない。
【００７７】
上述した実施形態では、マイクロコンピュータに組み込まれる第二のＣＰＵに比べて、実環境で細かなノイズ対策が施されていないマザーボードの方がノイズ耐性が低いという想定の下で、少なくとも第二のＣＰＵで保護プログラムが実行されるように、異常監視部から第二のＣＰＵにのみリセット信号が出力されるものを説明したが、第一のＣＰＵにもリセット信号が出力されるように構成してもよい。この場合、第一のＣＰＵはリセットの後、共有メモリに格納されたＣＰＵ異常発生情報に基づいてホストコンピュータにＣＰＵ異常発生情報を送信する用に構成すればよい。
【００７８】
上述した模擬マイクロコンピュータ装置の具体構成は例示に過ぎず、各部の具体的な構成は、本発明の作用効果を奏する限りにおいて、構築するシステムに応じて適宜変更設計することが可能である。
【図面の簡単な説明】
【００７９】
【図１】実際のＥＣＵに組み込まれるマイクロコンピュータと従来の模擬マイクロコンピュータを対比したブロック構成図
【図２】本発明による模擬マイクロコンピュータ装置の使用状況を示す説明図
【図３】マイクロコンピュータの入出力リソースの構成図
【図４】実際のＥＣＵに組み込まれるマイクロコンピュータと本発明のベースとなる模擬マイクロコンピュータのハードウェアを対比したブロック構成図
【図５】実際のＥＣＵに組み込まれるマイクロコンピュータと本発明のベースとなる模擬マイクロコンピュータの機能を対比したブロック構成図
【図６】異常検出部を備えた本発明による模擬マイクロコンピュータ装置のブロック構成図
【図７】別実施形態を示し、異常検出部を備えた本発明による模擬マイクロコンピュータ装置のブロック構成図
【図８】模擬マイクロコンピュータ装置の異常監視処理を説明するフローチャート
【図９】模擬マイクロコンピュータ装置の第二のＣＰＵの処理を説明するフローチャート
【図１０】模擬マイクロコンピュータ装置の第一のＣＰＵの処理を説明するフローチャート
【符号の説明】
【００８０】
４：異常監視部
１０：マザーボード
１２：第一のＣＰＵ
２０：ＩＯボード
２１：ファームウェア
２２：第二のＣＰＵ
２３：ＩＯ処理部
２４：共有メモリ部（ＦＰＧＡ）
３０：インタフェースボード
４１：第一のウォッチドッグ回路
４２：第二のウォッチドッグ回路
４３：ゲート回路
【図１】
2009054041.tif 000003
【図２】
2009054041.tif 000004
【図３】
2009054041.tif 000005
【図４】
2009054041.tif 000006
【図５】
2009054041.tif 000007
【図６】
2009054041.tif 000008
【図７】
2009054041.tif 000009
【図８】
2009054041.tif 000010
【図９】
2009054041.tif 000011
【図１０】
2009054041.tif 000012