(57)【要約】【課題】初期化処理に時間を要する外部リソースが複数搭載されている場合であっても、外部リソースに対する初期化処理の負荷が略同一になるように各ＣＰＵで分散して実行可能な制御装置を提供する。【解決手段】共有される複数のリソースに対して初期化処理を実施する制御装置１１であって、一の演算部が担当するリソースに対する初期化完了時間と、他の演算部が担当するリソースに対する初期化完了時間を記憶する記憶部１１２と、前記記憶部１１２に記憶されている、一の演算部が担当するリソースに対する前記初期化完了時間と、他の演算部が担当するリソースに対する前記初期化完了時間に基づいて、これらの初期化完了時間が略同一になるように、前記複数のリソースに対する初期化処理を分担して実行する複数の演算部１１３、１１４を備えている。【選択図】図２
2009059305.tif 000002
【特許請求の範囲】
【請求項１】
複数のリソースに対して初期化処理を実施する制御装置であって、
一の演算部が担当するリソースに対する初期化完了時間と、他の演算部が担当するリソースに対する初期化完了時間を記憶する記憶部と、
前記記憶部に記憶されている、一の演算部が担当するリソースに対する前記初期化完了時間と、他の演算部が担当するリソースに対する前記初期化完了時間に基づいて、これらの初期化完了時間が略同一になるように、前記複数のリソースに対する初期化処理を分担して実行する複数の演算部を備えたことを特徴とする制御装置。
【請求項２】
前記複数のリソースに対する初期化処理が全て終了した後に、各演算部が担当するアプリケーションの初期化処理を実行することを特徴とする請求項１記載の制御装置。
【請求項３】
前記複数の演算部は、前記複数のリソースの初期化処理における実行結果に基づいて、リソースまたは演算部の異常を判定することを特徴とする請求項１または請求項２に記載の制御装置。
【請求項４】
請求項１から請求項３の何れかに記載の制御装置を備え、各演算部が被制御部を制御する車両の電子制御装置。
【請求項５】
請求項４に記載の車両の電子制御装置は、所定走行距離以上、所定走行時間以上、若しくは所定トリップ数以上である場合、車両に装着された後の場合、または外部装置から所定の命令を受信する場合に、請求項１から請求項３の何れかに記載の制御が実施されることを特徴とする車両の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のリソースに対して初期化処理を実施する制御装置に関する。
【背景技術】
【０００２】
マイクロコンピュータは起動時に初期化処理を行なう。例えば、電源投入時に前記マイクロコンピュータにリセット信号が入力されると、内部レジスタや出力ポート、さらには内部メモリ等の内部リソースを初期化するとともに、増設ＲＡＭ等の外部リソースを初期化した後にアプリケーションプログラムを実行する。
【０００３】
近年、車両の電子制御装置等の制御装置は、エンジン制御等の処理が複雑化してきている一方で処理の高速化が更に求められている。そこで、プログラム開発を効率化するとともに、処理の高速化を図るべく、マイクロコンピュータに複数のＣＰＵを設けたマルチコアＣＰＵシステムが提案されている。
【０００４】
しかし、マルチコアＣＰＵシステムを採用しても、複数のＣＰＵのうちの何れかのＣＰＵのみが初期化処理を行なうように構成すると、その間、他のＣＰＵは待機せざるを得ず、初期化処理が終了してアプリケーションが実行されるまでの時間が長くなるため、複数ＣＰＵの搭載による処理高速化というマルチコアＣＰＵシステムの特徴が生かしきれない。
【０００５】
一方、特許文献１には、初期化処理を並列に処理できる機能毎に複数のブロックに分割して、実装されている全てのＣＰＵに分割した各処理を割り当てることによって、初期処理に対する負荷の分散を図り、迅速なシステムの起動を可能とするマルチＣＰＵシステムが開示されている。
【特許文献１】特開平１０−１１４１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載されたマルチＣＰＵシステムは、外部リソースに対する初期化処理をパラレルに処理できる機能毎にいくつかのブロックに分割し、実装されている全てのＣＰＵにブロック化された処理を割り当て、コンプリート状態を確認することでシステムの立ち上げの順序を損なわないように初期化するものであり、各ＣＰＵにより実行される初期化処理は予め割り当てられた固定の処理であったために、外部リソースとＣＰＵとの間の通信インタフェースによっては初期化処理の負荷が異なり、初期化処理を効率的に実行できない等、更なる改良の余地があった。
【０００７】
本発明の目的は、上述した従来の問題点に鑑み、初期化処理に時間を要する外部リソースが複数搭載されている場合であっても、外部リソースに対する初期化処理の負荷が略同一になるように各ＣＰＵで分散して実行可能な制御装置を提供する点にある。
【課題を解決するための手段】
【０００８】
上述の目的を達成するため、本発明による制御装置の特徴構成は、複数のリソースに対して初期化処理を実施する制御装置であって、一の演算部が担当するリソースに対する初期化完了時間と、他の演算部が担当するリソースに対する初期化完了時間を記憶する記憶部と、前記記憶部に記憶されている、一の演算部が担当するリソースに対する前記初期化完了時間と、他の演算部が担当するリソースに対する前記初期化完了時間に基づいて、これらの初期化完了時間が略同一になるように、前記複数のリソースに対する初期化処理を分担して実行する複数の演算部を備えた点にある。
【０００９】
上述の構成によれば、複数の演算部によって各演算部に対する初期化処理の負荷が略同一になるようにスケジュールングされ、各演算部はスケジューリングされた初期化処理を実行するのである。
【００１０】
尚、各演算部で実行される外部リソースに対する初期化処理は、動的にスケジューリングされることが好ましい。
【発明の効果】
【００１１】
以上説明した通り、本発明によれば、初期化処理に時間を要する外部リソースが複数搭載されている場合であっても、外部リソースに対する初期化処理の負荷が略同一になるように各ＣＰＵで分散して実行可能な制御装置を提供することができるようになった。
【発明を実施するための最良の形態】
【００１２】
以下、本発明による制御装置としてのマルチコアＣＰＵシステムが、車両の各部を制御する電子制御装置（以下、「ＥＣＵ」と記す。）に組み込まれた例を説明する。
【００１３】
図１に示すように、車両の電子制御システムは、車両を構成するエンジン、自動変速装置、ブレーキ装置等の被制御部としての複数の機能ブロック単位に電子制御する複数のＥＣＵ１０がＣＡＮ等のネットワーク２０を介して相互に接続され、互いに協働して所定の纏まりのある機能を実現するように構成されている。
【００１４】
システムを構成するＥＣＵ１０には、エンジン及びトランスミッションを制御するＥＣＵ１０ａ、ブレーキ装置を制御するＥＣＵ１０ｂ、盗難防止等のセキュリティを管理するＥＣＵ１０ｃ等が含まれる。
【００１５】
各ＥＣＵ１０は、対応する機能ブロックを制御するマイクロコンピュータ１１と、ネットワーク２０を介してデータを送受信する通信インタフェース回路１２と、複数の周辺回路等を備えて構成されている。
【００１６】
図２（ａ）に示すように、前記ＥＣＵ１０ａのマイクロコンピュータ１１には、スロットルポジションセンサ等からのデジタル信号が外付けＩＣ１２を介して入力され、バッテリ電圧センサ、バキュームセンサ、吸気温センサ、水温センサ、及び酸素センサ等からのアナログ信号が前記外付けＩＣ１２に備えられたＡ／Ｄコンバータ１２１を介して入力され、エンジン回転数信号や車速パルス信号等のパルス信号がキャプチャポートに入力され、スタータ信号等が入力ポートに入力される。また、前記マイクロコンピュータ１１の出力ポートからは、点火プラグへ出力する点火信号やインジェクタへ出力する燃料の噴射信号等のデジタル信号等が出力される。
【００１７】
前記マイクロコンピュータ１１は、図２（ｂ）に示すように、二つの演算部１１３、１１４（以下、ＣＰＵ１１３，１１４と記す。）と、夫々が各ＣＰＵ１１３，１１４に帰属する二つのＲＡＭ１１２（１１２１，１１２２）と、各ＣＰＵ１１３，１１４で実行される制御プログラムが格納された共用のＲＯＭ１１１と、入出力インタフェース回路１１６等の内部リソースが、内部バス１１８によって相互に接続され一つのパッケージに組み込まれたマルチコアＣＰＵシステムの一例であるデュアルコアマイクロコンピュータで構成されている。つまり、ＣＰＵ１１３、１１４は、少なくとも内部リソースの一部（図２（ｂ）ではＲＯＭ１１１）を共有するように構成されている。
【００１８】
また、前記マイクロコンピュータ１１は、外付けメモリとしてのＥＥＰＲＯＭ１３及びスタンバイＲＡＭ１４並びに前記外付けＩＣ１２等の複数の外部リソースと所定のインタフェースで送受信可能に構成されている。複数の外部リソースはシリアル通信インタフェースを含んでおり、本実施形態では、前記マイクロコンピュータ１１と前記ＥＥＰＲＯＭ１３及びＡ／Ｄコンバータ１２１の間はシリアル通信にて送受信される。
【００１９】
前記シリアル通信は、例えば、前記マイクロコンピュータ１１と前記ＥＥＰＲＯＭ１３及びＡ／Ｄコンバータ１２１の間を、クロックライン、チップセレクトライン、シリアル入力ライン、及びシリアル出力ラインの４ラインで接続することで行なわれる。
【００２０】
ここで、前記スタンバイＲＡＭ１４とは、車両のバッテリからイグニッションスイッチを介さずに直接給電されることで、車両のエンジンが停止しても給電が停止されず記憶されている情報が消去されないＲＡＭのことであり、前記スタンバイＲＡＭには、給電の停止によって消去させるべきではない情報、例えばトラブル情報等が記憶される。
【００２１】
シリアル通信は、通信処理に時間を要するのでシリアル通信インタフェースを備えた外部リソースの初期化処理には時間がかかるが、本発明によるマルチコアＣＰＵシステム（マイクロコンピュータ１１）は、後述するように、外部リソースの初期化処理を分割して複数のＣＰＵに実行させることができるので、外部リソースに通信速度が遅いシリアル通信インタフェースが含まれていても初期化処理を迅速に行なうことができる。
【００２２】
ＣＰＵ１１３とＣＰＵ１１４は各制御を分担して実行する。詳しくは、ＣＰＵ１１３は、ＲＯＭ１１１に格納された制御プログラムに基づいてエンジンに対する制御を担当して実行するように構成され、ＣＰＵ１１４は、ＲＯＭ１１１に格納された制御プログラムに基づいてトランスミッションに対する制御を担当して実行するように構成されている。
【００２３】
例えば、ＣＰＵ１１３は、エンジンに設けられた各種のセンサから入力される検出信号に基づいて所定の演算処理を実行し、燃料噴射バルブや点火装置等に制御信号を出力することにより、エンジンを所定の回転数に制御する。
【００２４】
また、ＣＰＵ１１４は、スロットルポジションセンサ等のトランスミッションに設けられた各種のセンサから入力される検出信号に基づいて所定の演算処理を実行し、シフト制御ソレノイド等に制御信号を出力することにより、トランスミッションの油圧等を所定値に制御する。
【００２５】
つまり、各ＣＰＵ１１３，１１４は、各種の入出力信号や演算データを自身に帰属するＲＡＭ１１２（１１２１，１１２２）に展開するとともに、調停回路１１５を介して他方のＣＰＵに帰属するＲＡＭ１１２のデータを参照して、必要な演算処理を互いに独立して、或は、互いに協働して実行することによりエンジン及びトランスミッションを制御する。
【００２６】
即ち、ＥＣＵ１０は、本発明によるマルチコアＣＰＵシステムを備え、各ＣＰＵ１１３、１１４が被制御部としてのエンジンやトランスミッション等を制御する。
【００２７】
マイクロコンピュータ１１は、各ＣＰＵ１１３、１１４に内部リソース及び複数の外部リソースに対して所定の初期化処理を実行する初期化処理部を備えて構成されている。つまり、マイクロコンピュータ１１は、共有される複数のリソースに対して初期化処理を実施する。なお、初期化処理の対象は必ずしも共有されるリソースに限るものではなく、各ＣＰＵからアクセス可能なリソースであればよい。また、前記初期化処理部並びに後述するスケジューラ及び異常診断部の動作は、各ＣＰＵ１１３、１１４の何れかまたは双方がＲＯＭ１１１に記憶されている制御プログラムを実行することで実現される。
【００２８】
前記初期化処理部の各々が実行する初期化処理は、前記内部リソースに対する初期化処理として、各ＲＡＭ１１２１、１１２２のチェック処理及びクリア処理、入力ポートやラッチポート等へのデータ読込み処理、出力ポートの初期値を非アクティブ側の値へ設定する初期出力設定処理、及びマイクロコンピュータ１１に内蔵されているＡ／Ｄコンバータの起動及び初期データ読込み処理等がある。
【００２９】
また、前記外部リソースに対する初期化処理として、外付けのＡ／Ｄコンバータ１２１の起動及び初期データ読込み処理、ＥＥＰＲＯＭ１３やスタンバイＲＡＭ１４に各アドレスに格納されているデータのチェック処理、及び通信ラインのチェック処理等がある。
【００３０】
また、マイクロコンピュータ１１は、複数の外部リソースに対する初期化処理を各初期化処理部で分割して各初期化処理部で並行して実行するようにスケジューリングするスケジューラを備えて構成されている。なお、前記スケジューラは、複数の外部リソースに対する初期化処理に加えて、内部リソースに対する初期化処理も各初期化処理部で分割する構成であってもよいことは言うまでもない。
【００３１】
例えば、前記スケジューラは、予め設定されＲＡＭ１１２１、１１２２の何れかまたは双方に格納されている情報、つまり何れのＣＰＵが何れの処理をどのような順序で実行するのかのスケジュール情報を参照して、初期化処理のうち各ＣＰＵ１１３、１１４に割り当てられた各処理を所定順序で各ＣＰＵ１１３、１１４に実行させる。そして、前記スケジューラは、ある処理の実行が終了したとの知らせを各ＣＰＵ１１３、１１４から受けると、前記スケジュール情報に基づいて各ＣＰＵ１１３、１１４に次の処理の実行を開始させる。
【００３２】
このような初期化処理の分割実行のため、各ＣＰＵ１１３、１１４に対応するＲＡＭ１１２１、１１２２には、各ＣＰＵ１１３、１１４の初期化処理部において処理が完了したことを示すための処理完了フラグＡ，Ｂが設けられている。各初期化処理部は、複数の外部リソースの初期化処理のうちの自身に割り当てられた処理が完了すると、対応するＲＡＭ１１２１、１１２２の処理完了フラグＡ（またはＢ）を立てる（値を０から１にする）。そして、各初期化処理部は、両方の処理完了フラグＡ，Ｂが立てられている場合にのみ次の処理に移行することで、各ＣＰＵ１１３、１１４間の初期化処理の同期をとっている。
【００３３】
以下に、各ＣＰＵ１１３，１１４の初期化処理部の初期化処理について、図３に示すフローチャートに基づいて説明する。なお、以下の説明では、スケジュール情報は、初期化処理を、（１）入力ポートやラッチポート等への初期データ読込み処理、（２）出力ポートの初期出力設定処理、（３）内蔵Ａ／Ｄコンバータの読込み処理、（４）外付けのＡ／Ｄコンバータ１２１との通信処理、（５）ＥＥＰＲＯＭ１３の記憶データチェック処理、及び（６）スタンバイＲＡＭ１４の記憶データチェック処理に分割して、（１）、（３）、（５）の処理を前記ＣＰＵ１１３に割り当てた上でこの順序で実行させ、（２）、（４）、（６）の処理を前記ＣＰＵ１１４に割り当てた上でこの順序で実行させるような情報である場合について説明する。
【００３４】
前記ＥＣＵ１０ａへの給電開始後、各ＣＰＵ１１３、１１４が安定することでリセットが解除されると、スケジューラは、前記ＲＯＭ１１１に記憶されている制御プログラムを実行して初期化処理を開始してから前記スケジューラ情報を参照して、各初期化処理部に割り当てた処理を各初期化処理部に所定の順序で実行させる（ＳＡ１）。
【００３５】
各初期化処理部は、前記ＲＡＭ１１２１、１１２２のチェック処理及びクリア処理を行なう（ＳＡ２、ＳＢ２）。
【００３６】
各初期化処理部は、初期化処理のうち自身に割り当てられた処理を実行する。即ち、前記ＣＰＵ１１３の初期化処理部は、（１）入力ポートやラッチポート等への初期データ読込み処理（ＳＡ３）、（３）内蔵Ａ／Ｄコンバータの読込み処理（ＳＡ４）、（５）ＥＥＰＲＯＭ１３の記憶データチェック処理（ＳＡ５）を実行して、自身に割り当てられた初期化処理が完了すると、処理完了フラグＡを立てる（ＳＡ６）。
【００３７】
同様に、ＣＰＵ１１４の初期化処理部は、（２）出力ポートの初期出力設定処理（ＳＢ３）、（４）外付けのＡ／Ｄコンバータ１２１との通信処理（ＳＢ４）、（６）スタンバイＲＡＭ１４の記憶データチェック処理（ＳＢ５）を実行して、自身に割り当てられた初期化処理が完了すると、処理完了フラグＢを立てる（ＳＢ６）。
【００３８】
各初期化処理部は、ＲＡＭ１１２１、１１２２を参照して、前記処理完了フラグＡと処理完了フラグＢが共に立てられている場合に（ＳＡ７、ＳＢ７）、アプリケーションソフトウェアの初期化処理を実行する（ＳＡ８、ＳＢ８）。
【００３９】
ここで、前記アプリケーションソフトウェアの初期化処理とは、前記アプリケーションソフトウェアを実行する際の初期値を各内部リソース及び外部リソースのレジスタ等に保持させる処理等であり、例えば、エンジン制御に関連する各センサからの入力信号を前記Ａ／Ｄコンバータ１２１のレジスタに保持する処理がある。
【００４０】
つまり、本発明によるマルチコアＣＰＵシステムは、前記複数のリソースに対する初期化処理が全て終了した後に、各演算部が担当するアプリケーションの初期化処理を実行するように構成されている。
【００４１】
その後、マイクロコンピュータ１１は、通常処理、つまり前記アプリケーションソフトウェアの実行を開始する（ＳＡ９、ＳＢ９）。
【００４２】
なお、各ＣＰＵ１１３、１１４の初期化処理部が、内部リソース及び複数の外部リソースのうち、何れの内部リソース及び外部リソースの初期化処理を実行するかの割り当ては、上記の設定に限るものではない。
【００４３】
上述の構成によれば、マイクロコンピュータ１１は、複数の外部リソースの初期化処理を分割して、分割した各初期化処理を各ＣＰＵ１１３，１１４の初期化処理部に割り当てて実行させるので、各ＣＰＵ１１３，１１４が実行すべき処理の負荷が少なくなり初期化処理を迅速に行なうことが可能である。
【００４４】
また、前記スケジューラは各初期化処理部で実行される外部リソースに対する初期化処理を動的にスケジューリングする構成であってもよい。
【００４５】
例えば、前記スケジューラは、各初期化処理部で実行される外部リソースに対する初期化処理に要する処理時間を管理し、前記処理時間に基づいて動的にスケジューリングする。
【００４６】
このような動的なスケジューリングを実現するため、例えば、前記スタンバイＲＡＭには、図８（ａ）に示すような８ビットの実行フラグが設けられており、前記実行フラグの各ビットは、内部リソースや複数の外部リソースの分割された初期化処理に該当している。そして、前記スケジューラは、前記実行フラグの各ビットのオンオフ（「０」または「１」）によって、分割された初期化処理を各ＣＰＵ１１３、１１４の初期化処理部の何れにおいて実行するのかを決定する。
【００４７】
また、前記マイクロコンピュータ１１は、内部リソースや複数の外部リソースに対する初期化処理の開始をトリガとして起動し、初期化処理の終了で停止、リセットされるタイマカウンタを備えて構成されている。前記タイマカウンタは、前記スケジューラの制御によって前記ＣＰＵ１１３、１１４の何れかにより実行される。尚、前記タイマカウンタのカウント値は、記憶部としてのＲＡＭ１１２１またはＲＡＭ１１２２に記憶しておく。
【００４８】
そして、前記スケジューラは、初期化処理の終了後に前記タイマカウンタのカウント値を参照して、各ＣＰＵ１１３，１１４の初期化処理部が各々に割り当てられた初期化処理を完了するのに要する時間が略同一になるように、各ＣＰＵ１１３、１１４が実行する初期化処理の割り当てを変更する。
【００４９】
つまり、前記記憶部は、一のＣＰＵ１１３（１１４）が担当するリソースに対する初期化完了時間と、他のＣＰＵ１１４（１１３）が担当するリソースに対する初期化完了時間を記憶し、複数のＣＰＵ１１３、１１４は、前記記憶部に記憶されている、一のＣＰＵ１１３（１１４）が担当するリソースに対する前記初期化完了時間と、他のＣＰＵ１１４（１１３）が担当するリソースに対する前記初期化完了時間に基づいて、これらの初期化完了時間が略同一になるように、前記複数のリソースに対する初期化処理を分担して実行する。
【００５０】
以下に、前記スケジューラの処理及び各ＣＰＵ１１３，１１４の初期化処理部の処理について、図４及び図５に示すフローチャートに基づいて説明する。なお、図４及び図５において、破線で示されたステップは前記初期化処理部によって実行される処理、また、二点鎖線で示されたステップは前記アプリケーションソフトウェアによって実行される処理であり、図３における処理と同様である。一方、実線で示されたステップは前記スケジューラによって実行される処理であり、以下の説明では、実線で示されたステップを中心として説明し、破線で示されたステップは実線で示されたステップの説明に必要な場合に説明する。
【００５１】
各ＣＰＵ１１３，１１４の初期化処理部が制御プログラムの実行を開始して（ＳＣ１，ＳＤ１）、ＲＡＭ１１２１、１１２２のチェック処理及びクリア処理を終了すると（ＳＣ２、ＳＤ２）、前記スケジューラは前記タイマカウンタを起動する（ＳＣ３）。
【００５２】
前記スケジューラは、前記スタンバイＲＡＭを参照して前記実行フラグを参照する（ＳＣ４、ＳＤ４）。その後、前記タイマカウンタの現在のカウント値をＲＡＭ１１２１、１１２２に記憶しておく（ＳＣ５、ＳＤ５）。
【００５３】
前記スケジューラは、前記実行フラグの初期化処理（１）に該当するビットを参照して（ＳＣ６ａ）、当該ビットが「０」である場合はＣＰＵ１１３の初期化処理部に前記初期化処理（１）を実行させ（ＳＣ７ａ）、当該ビットが「１」である場合はＣＰＵ１１３の初期化処理部に前記初期化処理（１）を実行させずに次の処理へ移行する。以下、前記スケジューラは、同様の処理を、初期化処理（２）〜（６）についても実行する（ＳＣ６ｂ〜ＳＣ６ｆ、ＳＣ７ｂ〜ＳＣ７ｆ）。
【００５４】
また、前記スケジューラは、前記実行フラグの初期化処理（１）に該当するビットを参照して（ＳＤ６ａ）、当該ビットが「０」である場合はＣＰＵ１１４の初期化処理部に前記初期化処理（１）を実行させ（ＳＤ７ａ）、「１」である場合はＣＰＵ１１４の初期化処理部に前記初期化処理（１）を実行させずに次の処理へ移行する。以下、前記スケジューラは、同様の処理を、初期化処理（２）〜（６）についても実行する（ＳＤ６ｂ〜ＳＤ６ｆ、ＳＤ７ｂ〜ＳＤ７ｆ）。
【００５５】
ＣＰＵ１１３の初期化処理部において割り当てられた初期化処理が完了すると（ＳＣ８）、前記スケジューラは、前記タイマカウンタの現在のカウント値を参照して、参照したカウント値とステップＳＣ５においてＲＡＭ１１２１に記憶しておいたカウント値とに基づいて、ＣＰＵ１１３の初期化処理部に割り当てられた初期化処理に要した初期化時間Ｔ１を計測する（ＳＣ９）。
【００５６】
同様に、ＣＰＵ１１４の初期化処理部において割り当てられた初期化処理が完了すると（ＳＤ８）、前記スケジューラは、前記タイマカウンタの現在のカウント値を参照して、参照したカウント値とステップＳＤ５において前記ＲＡＭ１１２２に記憶しておいたカウント値とに基づいて、ＣＰＵ１１４の初期化処理部に割り当てられた初期化処理に要した初期化時間Ｔ２を計測する（ＳＤ９）。
【００５７】
各初期化処理部における初期化処理が完了すると（ＳＣ１０、ＳＤ１０）、前記スケジューラは前記実行フラグを更新する。
【００５８】
詳述すると、前記スケジューラは、初期化時間Ｔ１が初期化時間Ｔ２より長い場合、ＣＰＵ１１３の初期化処理部が実行する初期化処理に要する時間の方が、ＣＰＵ１１４の初期化処理部が実行する初期化処理に要する時間よりも長いので、各初期化処理部において実行される初期化処理に要する処理時間を略同一とするために、前記実行フラグにおいて「０」が格納されているビットのうちの何れかのビット（例えば、最も処理時間が長い初期化処理に該当するビット）を「１」へ変更することで、ＣＰＵ１１３の初期化処理部が実行する初期化処理に要する時間を短くし、ＣＰＵ１１４の初期化処理部が実行する初期化処理に要する時間を長くする（ＳＣ１１）。
【００５９】
逆に、前記スケジューラは、初期化時間Ｔ２が初期化時間Ｔ１より長い場合、各初期化処理部において実行される初期化処理に要する処理時間を略同一とするために、前記実行フラグにおいて「１」が格納されているビットのうちの何れかのビットを「０」へ変更させることで、ＣＰＵ１１４の初期化処理部が実行する初期化処理に要する時間を短くし、ＣＰＵ１１３の初期化処理部が実行する初期化処理に要する時間を長くする（ＳＣ１１）。
【００６０】
上述の構成によれば、スケジューラが、分割された初期化処理を各ＣＰＵ１１３，１１４の初期化処理部にて実行させる際に、特定のＣＰＵに初期化処理の負荷が集中して初期化処理に要する時間が長くなっても、前記スケジューラが、そのような状態を解消するように前記実行フラグを変更する。つまり、ＣＰＵ１１３とＣＰＵ１１４が担当した全てのリソースに対する初期化完了時間に基づいて、初期化を担当するリソースの数を増減し、ＣＰＵ１１３とＣＰＵ１１４の初期化処理を実行する際の負荷の重み付けを変更して、初期化処理を迅速に行なうことが可能である。また、リソース毎に要した初期化完了時間を管理し、該時間に基づいてＣＰＵ１１３とＣＰＵ１１４への初期化処理を実施するリソースを割り当ててもよい。具体的には、リソース毎に要した時間に基づいて、ＣＰＵ１１３が担当する全てのリソースに対する初期化完了時間と、ＣＰＵ１１４が担当する全てのリソースに対する初期化完了時間との差が最も短くなるパターンを演算して、そのパターンで以後の初期化処理を実施するように設定する。
【００６１】
マイクロコンピュータ１１は、各初期化処理部で実行される前記外部リソースに対する初期化処理の結果に基づいて前記外部リソースまたはＣＰＵ１１３、１１４の異常を判定する異常診断部を備えた構成であってもよい。
【００６２】
つまり、複数のＣＰＵ１１３、１１４は、複数のリソースの初期化処理における実行結果に基づいて、リソースまたはＣＰＵ１１３、１１４の異常を判定する構成であってもよい。
【００６３】
また、マイクロコンピュータ１１が前記スケジューラを備えている場合において、各初期化処理部は、所定時間内で前記外部リソースに対する初期化処理を実行し、前記スケジューラは、一方の初期化処理部で前記所定時間内に終了しなかった初期化処理を他方の初期化処理部で実行するようにスケジューリングする構成であってもよい。
【００６４】
このような異常診断部による処理、及び、各初期化処理部やスケジューラによる処理を実現するため、例えば、マイクロコンピュータ１１は、初期化処理の実行時間が前記所定時間に達したか否かを判断するために、分割された各初期化処理（１）〜（６）の開始をトリガとして起動し、当該初期化処理（１）〜（６）の終了で停止、リセットされるカウンタを備えて構成されている。前記カウンタは、前記スケジューラの制御によって、当該初期化処理がＣＰＵ１１３の初期化処理部によって実行される場合はＣＰＵ１１３により実行され、初期化処理が前記ＣＰＵ１１４の初期化処理部によって実行される場合はＣＰＵ１１４により実行される。
【００６５】
また、前記スタンバイＲＡＭには、図８（ｂ）に示すような未完了フラグＣ，Ｄが設けられている。未完了フラグＣ，Ｄは、内部リソースや複数の外部リソースの分割された初期化処理の各々に２ビットが割り当てられており、当該２ビットは、ＣＰＵ１１３，１１４の初期化処理部において初期化処理が実行開始前または実行中の場合は「００」に、ＣＰＵ１１３，１１４の初期化処理部において初期化処理が前記所定時間内に終了しなかった場合は「０１」に、ＣＰＵ１１３，１１４の初期化処理部において初期化処理が正常に終了した場合は「１１」に立てられる。
【００６６】
以下に、前記スケジューラの処理、各初期化処理部の初期化処理、及び前記異常診断部の処理について、図６及び図７に示すフローチャートに基づいて説明する。
【００６７】
なお、図６及び図７において、破線で示されたステップは前記初期化処理部によって実行される処理であり、実線で示されたステップは前記スケジューラによって実行される処理であり、一点鎖線で示されたステップは前記異常診断部によって実行される処理であり、二点鎖線で示されたステップは前記アプリケーションソフトウェアによって実行される処理である。以下の説明では、図３〜図５において説明した処理と異なる処理を中心として説明する。
【００６８】
ステップＳＥ１〜ＳＥ５、ＳＦ１〜ＳＦ５の処理は、図４におけるステップＳＣ１〜ＳＣ５、ＳＤ１〜ＳＤ５の処理と同様である。
【００６９】
前記スケジューラは、前記実行フラグの初期化処理（１）に該当するビットを参照して（ＳＥ６、ＳＦ６）、当該ビットが「０」である場合はＣＰＵ１１３の初期化処理部に初期化処理（１）を実行させ（ＳＥ８）、当該ビットが「１」である場合はＣＰＵ１１４の初期化処理部に初期化処理（１）を実行させる（ＳＦ８）。
【００７０】
各初期化処理部は、初期化処理（１）の実行を（ＳＥ８、ＳＦ８）、初期化処理（１）の実行時間が前記所定時間を超えたと前記スケジューラによって判定されるか（ＳＥ７、ＳＦ７）、初期化処理（１）が正常に終了するまで（ＳＥ９、ＳＦ９）、実行する。そして、前記スケジューラは、初期化処理（１）の実行時間が前記所定時間を超えた場合は（ＳＥ７、ＳＦ７）、初期化処理（１）に割り当てられている未完了フラグＣ，Ｄのビットを「０１」に立て（ＳＥ１０、ＳＦ１０）、初期化処理（１）が正常終了した場合は（ＳＥ９、ＳＦ９）、初期化処理（１）に割り当てられている未完了フラグＣ，Ｄのビットを「１１」に立てる（ＳＥ１１、ＳＦ１１）。
【００７１】
以下、前記スケジューラ及び各初期化処理部は、ステップＳＥ６〜ＳＥ１１及びステップＳＦ６〜ＳＦ１１と同様の処理を、初期化処理（２）〜（６）についても実行する。
【００７２】
前記スケジューラは、図５のステップＳＣ９と同様にして、ＣＰＵ１１３の初期化処理部が外部リソースの初期化処理に要した初期化時間Ｔ１を計測し（ＳＥ１２）、図５のステップＳＤ９と同様にして、ＣＰＵ１１４の初期化処理部が外部リソースの初期化処理に要した初期化時間Ｔ２を計測する（ＳＦ１２）。
【００７３】
前記スケジューラは、前記実行フラグの初期化処理（１）に該当するビットを参照して、当該ビットが「０」であれば（ＳＥ１３）、ＣＰＵ１１３の初期化処理部が初期化処理（１）をステップＳＥ６〜ＳＥ１１で実行済であることから次の処理に移行し、当該ビットが「１」であれば（ＳＥ１３）、ＣＰＵ１１４の初期化処理部が初期化処理（１）をステップＳＦ６〜ＳＦ１１で実行済であることから、その実行結果を知るために未完了フラグＤの初期化処理（１）に該当する２ビットを参照する（ＳＥ１４）。
【００７４】
そして、前記スケジューラは、当該２ビットが「００」の場合は（ＳＥ１４）、ＣＰＵ１１４の初期化処理部による初期化処理（１）の終了（つまり、当該２ビットが「１１」に立てられる。）または前記所定時間のオーバー（つまり、当該２ビットが「０１」に立てられる。）まで待ち、当該２ビットが「１１」の場合は（ＳＥ１４）、初期化処理（１）はＣＰＵ１１４の初期化処理部によって正常終了済であるので未完了フラグＣの初期化処理（１）に該当する２ビットを「１１」に立て（ＳＥ１９）、当該２ビットが「０１」の場合は（ＳＥ１４）、初期化処理（１）はＣＰＵ１１４の初期化処理部によって所定時間内に実行できていないので、ＣＰＵ１１３の初期化処理部が初期化処理（１）を引き継いで以下のステップＳＥ１４〜ＳＥ１９までの処理を実行する。
【００７５】
即ち、ＣＰＵ１１３の初期化処理部は、初期化処理（１）の実行を（ＳＥ１６）、初期化処理（１）の実行時間が前記所定時間を超えたと前記スケジューラによって判定されるか（ＳＥ１５）、初期化処理（１）が正常に終了するまで（ＳＥ１７）、実行する。そして、前記スケジューラは、初期化処理（１）の実行時間が前記所定時間を超えた場合は（ＳＥ１５）、未完了フラグＣの初期化処理（１）に該当する２ビットを「０１」に立て（ＳＥ１８）、前記初期化処理（１）が正常終了した場合は（ＳＥ１７）、未完了フラグＣの初期化処理（１）に該当する２ビットを「１１」に立てる（ＳＥ１９）。
【００７６】
前記スケジューラ及びＣＰＵ１１４の初期化処理部は、前記スケジューラ及びＣＰＵ１１３の初期化処理部によって実行されたステップＳＥ１３〜ＳＥ１９と同様の処理を、初期化処理（１）について実行する（ＳＦ１３〜ＳＦ１９）。
【００７７】
以下、前記スケジューラ及び各初期化処理部は、ステップＳＥ１３〜ＳＥ１９及びステップＳＦ１３〜ＳＦ１９と同様の処理を、初期化処理（２）〜（６）についても実行する。
【００７８】
つまり、各ＣＰＵ１１３，１１４の初期化処理部は、自身に割り当てられた処理を実行した後で、他方のＣＰＵに割り当てられているが他方のＣＰＵが前記所定時間内に完了させることができなかった処理を実行する。よって、分割された初期化処理に未処理の部分が生じることを低減して装置の信頼性を向上させることが可能となる。
【００７９】
ＣＰＵ１１３，１１４の各初期化処理部は処理完了フラグＡ，Ｂを立てる（ＳＥ２０、ＳＦ２０）。そして、前記異常診断部は、処理完了フラグＡ、Ｂが共に立てられていると各初期化処理部によって判断された場合に（ＳＥ２１、ＳＦ２１）、異常原因を特定する処理を行なう（ＳＥ２２）。
【００８０】
詳述すると、前記異常診断部は、図８（ｂ）、（ｃ）に示すように、未完了フラグＣ、Ｄにおいて同一の初期化処理に対応する２ビットの「０１」と「１１」の組合せによって、異常原因を特定する。例えば、図８（ｂ）に一点鎖線で囲んで示すように、未完了フラグＣ，Ｄの初期化処理（３）に該当する２ビットが、夫々「１１」、「０１」である場合は、図８（ｃ）に一点鎖線で囲んで示すように、前記異常診断部はＣＰＵ１１４に異常が発生していると判断する。
【００８１】
前記マイクロコンピュータ１１は、上述のような前記異常診断部を備えることによって、複数のＣＰＵのうちの何れのＣＰＵで異常が検出されたのか、及び、複数の外部リソースのうちの何れの外部リソースで異常が検出されたのかの両面から、異常原因を適切に特定することができる。
【００８２】
ステップＳＥ２３〜ＳＥ２５、ＳＦ２４〜ＳＦ２５の処理は、図５におけるＳＣ１１〜ＳＣ１３、ＳＤ１２〜ＳＤ１３の処理と同様である。
【００８３】
以下、別実施形態について説明する。上述の実施形態では、マイクロコンピュータ１１は、二個のＣＰＵ１１３、１１４を備えた構成について説明したが、三個以上のＣＰＵを備えた構成であってもよい。
【００８４】
例えば、三個のＣＰＵを備えた構成の場合、図９に示すように、マイクロコンピュータ１１は、三つのＣＰＵ１１Ａ，１１Ｂ，１１Ｃと、各ＣＰＵ１１Ａ、１１Ｂ、１１Ｃに帰属する三つのＲＡＭ１１２（１１２３，１１２４，１１２５）と、各ＣＰＵ１１Ａ，１１Ｂ，１１Ｃで実行される制御プログラムが格納された共用のＲＯＭ１１１と、入出力インタフェース回路１１６等の内部リソースが一つのパッケージに組み込まれたマルチコアＣＰＵシステムの一例であるマルチコアマイクロコンピュータで構成されていてもよい。
【００８５】
上述の実施形態では、マイクロコンピュータ１１は、二個のＣＰＵ１１３，１１４がＲＯＭ１１１に記憶された制御プログラムを実行することによって初期化処理部、スケジューラ、及び異常診断部の機能が実現される構成について説明したが、前記制御プログラムの実行によって実現される機能が、ハードウェアとして組み込まれている所謂ファームウェアとして前記マイクロコンピュータ１１に備えられている構成であってもよい。
【００８６】
上述の実施形態では、スタンバイＲＡＭが、車両のバッテリからイグニッションスイッチを介さずに直接給電されることで、車両のエンジンが停止しても給電が停止されず記憶されていた情報が消去されない構成について説明したが、前記スタンバイＲＡＭは常時給電されており情報が消去されない構成であるならば上述の構成に限らない。例えば、前記スタンバイＲＡＭが、車両のバッテリから給電される代わりに、前記スタンバイＲＡＭのために設けられた専用の電池から給電される構成や、前記スタンバイＲＡＭが不揮発性メモリである構成であってもよい。
【００８７】
上述の実施形態では、マイクロコンピュータ１１を、各ＣＰＵが被制御部としてのエンジンとトランスミッションに対する制御を夫々分割して制御するＥＣＵに組み込んだ実施形態について説明したが、前記マイクロコンピュータ１１が組み込まれるのは、エンジンとトランスミッションを制御するＥＣＵに限らない。
【００８８】
例えば、各ＣＰＵが、被制御部としてのトランスミッションとブレーキに対する制御を夫々分割して制御するＥＣＵに、前記マイクロコンピュータ１１を組み込んだ構成であってもよい。また、別の例としては、各ＣＰＵが、被制御部としてのエンジンに対する制御を空燃比制御とそれ以外の制御に夫々分割して制御するＥＣＵに、前記マイクロコンピュータ１１を組み込んだ構成であってもよい。
【００８９】
上述の実施形態では、本発明による制御装置がマルチコアＣＰＵシステムである構成、つまり、各ＣＰＵ１１３、１１４が少なくとも内部リソースの一部（図２（ｂ）ではＲＯＭ１１１）を共有し、当該各ＣＰＵ１１３、１１４が一つのマイクロコンピュータ１１に組み込まれたマルチコアＣＰＵシステムである構成について説明したが、前記制御装置はマルチコアＣＰＵシステムに限らず、例えば、単一のＣＰＵを備えた複数のマイクロコンピュータが組み込まれたシステムであってもよい。
【００９０】
上述の実施形態では、ＥＣＵ１０に組み込まれた制御装置としてのマルチコアＣＰＵシステムが、ＥＣＵ１０への給電開始後に、上述の実施形態で説明したような本発明による初期化処理（例えば、各ＣＰＵ１１３、１１４の各担当リソースに対する各初期化完了時間が略同一となるように、各ＣＰＵ１１３、１１４に担当リソースを分担する初期化処理）を実行する構成について説明した。しかし、マルチコアＣＰＵシステムは、所定条件を満たした場合のみ、ＥＣＵ１０への給電開始後に、本発明による初期化処理を実行する構成であってもよい。
【００９１】
例えば、ＥＣＵ１０は、所定走行距離以上（例えば、走行距離１万ｋｍ毎）、所定走行時間以上（例えば、走行時間１千時間毎）、若しくは所定トリップ数以上（例えば、トリップ数が１千回を経過する度）である場合、車両に装着された後の場合、または外部装置から所定の命令を受信する場合に、上述の実施形態で説明したような本発明による初期化処理を、マルチコアＣＰＵシステムに実施させる構成であってもよい。ここで、トリップ数とは、車両のイグニッションオンからイグニッションオフまでを１トリップとしたときの回数のことである。
【００９２】
以下に詳述する。ＥＣＵ１０は、通常はＥＣＵ１０への給電開始後に本発明による初期化処理を実施せず従来の初期化処理を実施するが、走行距離が１万ｋｍや２万ｋｍ等に達すると、つまり走行時間１万ｋｍ毎等といった所定条件を満たすと、次回のＥＣＵ１０への給電開始時には、従来の初期化処理ではなく本発明による初期化処理を実施する構成であってもよい。
【００９３】
また、ＥＣＵ１０は、通常時に実施する従来の初期化処理の際に各リソースに対する初期化完了時間を演算して記憶しておき、前記所定条件を満たした時点で、各ＣＰＵ１１３、１１４による各初期化完了時間が略同一となるように、複数のリソースに対する初期化処理の担当を各ＣＰＵ１１３、１１４に再分担する演算を実行する。そして、次回のＥＣＵ１０への給電開始後には、ＥＣＵ１０は、各ＣＰＵ１１３、１１４に再分担されたリソース対する初期化処理を担当させて、本発明による初期化処理を実施する構成であってもよい。
【００９４】
ここで、上述の所定条件のうち、車両に装着された後の場合とは、ディーラや工場で車両にＥＣＵ１０を取り付けた後のことであり、当該ＥＣＵ１０は、自身への給電開始後に他のＥＣＵがネットワーク２０に接続されていることを検出することで、自身がネットワーク２０に接続されている、つまり車両に装着されていることを検出する。
【００９５】
また、外部装置とは、ＥＣＵからの制御データの読み取りやＥＣＵへの制御データの書込み等に使用する専用のツールであり、当該外部装置を専用のインタフェースを介してＥＣＵ１０へ接続し、当該外部装置から所定の命令を当該ＥＣＵ１０へ送信する構成であってもよい。更に、外部装置が、ＥＣＵから入力された制御データの解析等に使用される汎用コンピュータ等であってもよく、当該汎用コンピュータ等をネットワーク２０へ接続し、当該汎用コンピュータ等から所定の命令をネットワーク２０を介して当該ＥＣＵ１０へ送信する構成であってもよい。
【００９６】
上述の実施形態では、車両を制御するＥＣＵ１０に対して本発明によるマルチコアＣＰＵシステム（マイクロコンピュータ１１）を適用した構成について説明したが、前記マイクロコンピュータ１１が適用されるのは車両に限らず、複数のＣＰＵ及び複数の外部リソースを備えた制御装置であって、複数の外部リソースの初期化処理を分割して各ＣＰＵに処理させるものであれば、例えばＯＡ機器のような電子制御機器に、前記マイクロコンピュータ１１を適用することができる。
【００９７】
尚、上述の実施形態は、本発明の一例に過ぎず、本発明の作用効果を奏する範囲において各ブロックの具体的構成等は適宜変更設計できることは言うまでもない。
【図面の簡単な説明】
【００９８】
【図１】車両の制御システムのブロック構成図
【図２】（ａ）は、電子制御装置（ＥＣＵ）のブロック構成を示し、（ｂ）は、本発明に係るマルチコアＣＰＵシステム（マイクロコンピュータ）のブロック構成を示す説明図
【図３】初期化処理について説明するためのフローチャート
【図４】スケジューラを備えている場合の初期化処理について説明するためのフローチャート
【図５】スケジューラを備えている場合の初期化処理について説明するためのフローチャート
【図６】異常診断部を備えている場合の初期化処理について説明するためのフローチャート
【図７】異常診断部を備えている場合の初期化処理について説明するためのフローチャート
【図８】（ａ）は、実行フラグを示し、（ｂ）は、未完了フラグを示し、（ｃ）は、異常診断部による異常原因の特定を示す説明図
【図９】三個のＣＰＵを備えたマルチコアＣＰＵシステムのブロック構成図
【符号の説明】
【００９９】
１０：電子制御装置
１１：マルチコアＣＰＵシステム（マイクロコンピュータ）
１１１：ＲＯＭ
１１２（１１２１、１１２２）：ＲＡＭ
１１３、１１４：ＣＰＵ
１１５：調停回路
１１６：入出力インタフェース回路
１２１：Ａ／Ｄコンバータ
１３：ＥＥＰＲＯＭ
１４：スタンバイＲＡＭ
【図１】
2009059305.tif 000003
【図２】
2009059305.tif 000004
【図３】
2009059305.tif 000005
【図４】
2009059305.tif 000006
【図５】
2009059305.tif 000007
【図６】
2009059305.tif 000008
【図７】
2009059305.tif 000009
【図８】
2009059305.tif 000010
【図９】
2009059305.tif 000011