(57)【要約】【課題】電子制御装置の起動を高速化するとともに、正確・安全に動作させること。【解決手段】メインマイコン１０とサブマイコン２０を有するＥＣＵ１において、メインマイコンのＤＭＡコントローラ１４およびサブマイコンのＤＭＡコントローラ２４のそれぞれに初期化用バッファ１４ａ，２４ａ、通常用バッファ１４ｂ，２４ｂを設ける。メインマイコン１０とサブマイコン２０の起動時には、サブマイコン２０がＥＥＰＲＯＭ２から補正値を読み出し、ＤＭＡコントローラ２４を介してメインマイコン１０に送信する。この時に補正値を格納する領域とチェックコードを格納する領域のみを設けた初期化用バッファ１４ａ，２４ａを使用することで、ＤＭＡ通信に要する時間を短縮し、メインマイコン１０の起動を高速化する。【選択図】        図１
2008009983.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理手段を備え、前記複数の演算処理手段の各々が入出力信号の補正に使用する補正値を、前記複数の演算処理手段のいずれかが記憶手段から読み出して他の演算処理手段に送信する電子制御装置であって、
前記複数の演算処理手段の各々は、前記補正値の送受信を行う通信手段を備え、
前記通信手段は、前記複数の演算処理手段の起動時に使用する起動用バッファと、前記複数の演算処理手段の起動後に使用する通常処理用バッファとを備えたことを特徴とする電子制御装置。
【請求項２】
前記記憶手段から補正値を読み出す演算処理手段は、他の演算処理手段が備える通信手段を起動することを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記記憶手段から補正値を読み出す演算処理手段が備える通信手段は、他の演算処理手段から起動されることを特徴とする請求項１に記載の電子制御装置。
【請求項４】
前記記憶手段から補正値を読み出す演算処理手段は、前記記憶手段から定期的に補正値を読み出して他の演算処理手段に送信し、該他の演算処理手段は、受信した補正値を使用して前記入出力信号の補正を行うことを特徴とする請求項１，２または３に記載の電子制御装置。
【請求項５】
前記複数の演算処理手段のうち少なくとも一つは、受信した補正値が所定の範囲を逸脱する場合に前記記憶手段から補正値を読み出す演算処理手段を再起動することを特徴とする請求項１〜４のいずれか一つに記載の電子制御装置。
【請求項６】
前記複数の演算処理手段は、前記記憶手段から読み出した補正値、もしくは通信手段によって受信した補正値が所定の範囲を逸脱する場合に、予め定められた他の補正値を用いて前記入出力信号の補正を行うことを特徴とする請求項１〜５のいずれか一つに記載の電子制御装置。
【請求項７】
前記複数の演算処理手段は、前記記憶手段から読み出した補正値、もしくは通信手段によって受信した補正値を保持する補正値保持手段をさらに備え、起動時に前記補正値保持手段に保持した補正値を用いて前記入出力信号の補正を行うことを特徴とする請求項１〜６のいずれか一つに記載の電子制御装置。
【請求項８】
前記記憶手段から補正値を読み出す演算処理手段は、前記記憶手段から定期的に補正値を読み出して他の演算処理手段に送信し、該他の演算処理手段は、受信した補正値が前記補正値保持手段に保持した補正値と異なる場合に、受信した補正値で前記補正値保持手段が保持する補正値を更新することを特徴とする請求項７に記載の電子制御装置。
【請求項９】
起動時にプラットフォーム層およびアプリケーション層の初期化を行う複数の演算処理手段と、前記複数の演算処理手段のいずれかに設けられ、前記複数の演算手段のそれぞれが前記アプリケーション層の初期化に際して使用する入出力信号の補正値を記憶する記憶手段と、を備えた電子制御装置であって、
前記複数の演算処理手段のうち、前記記憶手段が設けられた演算処理手段は、プラットフォーム層の初期化処理および前記記憶手段からの補正値の読み出し処理を行った後に、他の演算手段に対して該読み出した補正値を送信し、
前記複数の演算手段のうち、前記記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行し、前記補正値を受信まで待機した後にアプリケーション層の初期化処理を実行することを特徴とする電子制御装置。
【請求項１０】
前記記憶手段が設けられていない演算処理手段は、前記記憶手段が設けられた演算処理手段に先んじて起動し、前記記憶手段が設けられた演算処理手段に対する起動指示を行うことを特徴とする請求項９に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理手段を備え、前記複数の演算処理手段の各々が入出力信号の補正に使用する補正値を、前記複数の演算処理手段のいずれかが記憶手段から読み出して他の演算処理手段に送信する電子制御装置に関し、特に、簡易な構成で複数の演算処理手段を高速に起動する電子制御装置に関するものである。
【背景技術】
【０００２】
近年、車両に電子制御機器（ＥＣＵ）を搭載し、車両の運行時に必要な種々の処理を電子制御することが行われている。たとえばエンジンにおけるガソリンの噴出の制御にＥＣＵを適用し、速度センサや水温センサなどに接続することで、車両の速度やエンジンの冷却水の温度に応じてガソリンの噴出量を制御することができる。
【０００３】
このＥＣＵでは、その内部に複数の演算処理手段（マイコン）を備えることで、高度な処理を安価なシステムで実現することができる。一方で、複数の演算処理手段を有するシステムでは、演算処理手段の間の協働を如何に効率化するかが重要である。
【０００４】
例えば、特許文献１に示されたマルチプロセッサシステムでは、副プロセッサよりも先に主プロセッサを起動させ、副プロセッサが起動するまでの規定時間内に、必要に応じて副プロセッサ用メモリに副プロセッサの起動プログラムを書き込むことにより、副プロセッサの暴走を回避する技術が開示されている。
【０００５】
また、特許文献２に示されたマルチプロセッサボードの立ち上げ方法では、複数の従処理装置からアクセス可能な共有の揮発性メモリに複数の従処理装置の初期プログラムを格納し、各従処理装置が同時または順次共有の揮発性メモリから初期プログラムをリードして初期処理をおこなうことで、初期プログラムを格納した読み出し専用の不揮発性メモリを不要としている。
【０００６】
さらに、ＤＭＡ（Direct Memory Access）などのシステム内の通信手段の高速化もシステム全体の効率化に有効である。たとえば、特許文献３は、転送制御条件、データ転送元アドレス、データ転送先アドレス、転送語数を含むデータ転送制御情報に従ってデータの境界を判定し、判定結果に基づいてデータの転送先又はデータのデータ転送元、転送語数を制御することにより、バッファの使用効率を向上する技術を開示している。
【０００７】
また、特許文献４に示されたプリンタ装置では、プリントデータが転送中であるか否かによってホスト装置からの通信データの送信方法を変更することで共通バスを有効利用している。
【０００８】
【特許文献１】特開２００２−３１２３３４号公報
【特許文献２】特開平８−８７４８１号公報
【特許文献３】特開平５−２８９９７９号公報
【特許文献４】特開２００３−４８３４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、アナログデータが入力信号として入力されるＥＣＵでは、入力信号の補正を行う必要がある。具体的には、各ＥＣＵの電源ＩＣは厳密には均一ではないので、電源ＩＣの供給する電圧を基準として入力信号の評価を行うと、電源ＩＣの出力ばらつきに依存する評価バラつきが生じる。そこで、入力信号の値を正確に評価するためには、電源ＩＣの供給電圧のバラつきを補正する必要が生じるのである。
【００１０】
入力信号に対して行うべき補正量は電源ＩＣに依存するので、ＥＣＵの組み立て時に補正値を決定し、ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）などの不揮発性の記憶媒体に格納しておく。そして、各演算処理手段（マイコンなど）の起動時にこの補正値を読み出して使用することで、入力信号の評価を正確に行うことができる。
【００１１】
ＥＣＵに複数の演算処理手段が存在する場合、各演算処理手段に専用の不揮発性記録媒体を設けることはコスト上昇と筐体の大型化に繋がるので、全ての演算処理手段が使用する補正値を一つの記憶媒体に格納しておき、演算処理手段の一つが補正値を読み出して他の演算処理手段に送信することが望ましい。
【００１２】
しかしながら、このように補正値を一つの記憶媒体に一元管理し、複数の演算処理手段に送信する構成では、各演算処理手段は補正値を受信するまでは入力信号を正しく処理できないこととなる。そのため、全ての演算処理手段が補正値を受信するまでＥＣＵを動作させなければ、起動時間が増大するという問題点が生じ、補正値の受信完了以前にＥＣＵを動作させたならば正確な入力信号を得られないことによる動作異常が発生するという問題点が生じていた。
【００１３】
そこで、複数の演算処理手段を有し、補正の必要なアナログ信号を使用するＥＣＵにおいて、起動を高速化し、かつ正確・安全に動作させることが従来の重要な課題となっていた。
【００１４】
この発明は、上述した従来技術による課題を解決するためになされたものであり、高速に起動し、正確・安全に動作する電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、請求項１の発明に係る電子制御装置は、複数の演算処理手段を備え、前記複数の演算処理手段の各々が入出力信号の補正に使用する補正値を、前記複数の演算処理手段のいずれかが記憶手段から読み出して他の演算処理手段に送信する電子制御装置であって、前記複数の演算処理手段の各々は、前記補正値の送受信を行う通信手段を備え、前記通信手段は、前記複数の演算処理手段の起動時に使用する起動用バッファと、前記複数の演算処理手段の起動後に使用する通常処理用バッファとを備えたことを特徴とする。
【００１６】
この請求項１の発明によれば、電子制御装置は、複数の演算処理手段の各々に補正値の送受信を行う通信手段を設け、この通信手段が演算処理手段の起動時に使用する起動用バッファと演算処理手段の起動後に使用する通常処理用バッファとを切替えて使用することで、初期化時には必要な補正値のみを選択的に送信する。
【００１７】
また、請求項２の発明に係る電子制御装置は、請求項１の発明において、前記記憶手段から補正値を読み出す演算処理手段は、他の演算処理手段が備える通信手段を起動することを特徴とする。
【００１８】
この請求項２の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出し、他の演算処理手段が備える通信手段を起動して補正値を送信する。
【００１９】
また、請求項３の発明に係る電子制御装置は、請求項１の発明において、前記記憶手段から補正値を読み出す演算処理手段が備える通信手段は、他の演算処理手段から起動されることを特徴とする。
【００２０】
この請求項３の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出し、他の演算処理手段によって起動された通信手段を用いて補正値を送信する。
【００２１】
また、請求項４の発明に係る電子制御装置は、請求項１，２または３の発明において、前記記憶手段から補正値を読み出す演算処理手段は、前記記憶手段から定期的に補正値を読み出して他の演算処理手段に送信し、該他の演算処理手段は、受信した補正値を使用して前記入出力信号の補正を行うことを特徴とする。
【００２２】
この請求項４の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を定期的に読み出して他の演算処理手段に送信し、補正値を受信した演算処理手段は、受信した補正値を用いて入出力信号の補正処理を行う。
【００２３】
また、請求項５の発明に係る電子制御装置は、請求項１〜４の発明において、前記複数の演算処理手段のうち少なくとも一つは、受信した補正値が所定の範囲を逸脱する場合に前記記憶手段から補正値を読み出す演算処理手段を再起動することを特徴とする。
【００２４】
この請求項５の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出して他の演算処理手段に送信し、補正値を受信した演算処理手段は、受信した補正値が所定の範囲を逸脱する場合に補正値の送信元の演算処理手段を再起動する。
【００２５】
また、請求項６の発明に係る電子制御装置は、請求項１〜５の発明において、前記複数の演算処理手段は、前記記憶手段から読み出した補正値、もしくは通信手段によって受信した補正値が所定の範囲を逸脱する場合に、予め定められた他の補正値を用いて前記入出力信号の補正を行うことを特徴とする。
【００２６】
この請求項６の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出して他の演算処理手段に送信し、各演算処理手段は、記憶手段から読み出した補正値もしくは受信した補正値が所定の範囲を逸脱する場合に予め定められたフェールセーフ値を用いて入出力信号を補正する。
【００２７】
また、請求項７の発明に係る電子制御装置は、請求項１〜６の発明において、前記複数の演算処理手段は、前記記憶手段から読み出した補正値、もしくは通信手段によって受信した補正値を保持する補正値保持手段をさらに備え、起動時に前記補正値保持手段に保持した補正値を用いて前記入出力信号の補正を行うことを特徴とする。
【００２８】
この請求項７の発明によれば、電子制御装置は、複数の演算処理手段にそれぞれ補正値保持手段を設け、起動時に補正値を補正値保持手段に記憶させ、入出力信号の補正を行う場合に補正値保持手段から随時補正値を読み出して使用する。
【００２９】
また、請求項８の発明に係る電子制御装置は、請求項７の発明において、前記記憶手段から補正値を読み出す演算処理手段は、前記記憶手段から定期的に補正値を読み出して他の演算処理手段に送信し、該他の演算処理手段は、受信した補正値が前記補正値保持手段に保持した補正値と異なる場合に、受信した補正値で前記補正値保持手段が保持する補正値を更新することを特徴とする。
【００３０】
この請求項８の発明によれば、電子制御装置は、複数の演算処理手段にそれぞれ補正値保持手段を設けて起動時に補正値を補正値保持手段に記憶させるとともに、所定の演算処理手段が記憶手段から補正値を定期的に読み出して他の演算処理手段に送信し、各演算処理手段は記憶部から読み出した補正値、もしくは受信した補正値が補正値保持手段に保持した補正値と異なる場合に、受信した補正値で補正値保持手段が保持する補正値を更新する。
【００３１】
また、請求項９の発明に係る電子制御装置は、起動時にプラットフォーム層およびアプリケーション層の初期化を行う複数の演算処理手段と、前記複数の演算処理手段のいずれかに設けられ、前記複数の演算手段のそれぞれが前記アプリケーション層の初期化に際して使用する入出力信号の補正値を記憶する記憶手段と、を備えた電子制御装置であって、前記複数の演算処理手段のうち、前記記憶手段が設けられた演算処理手段は、プラットフォーム層の初期化処理および前記記憶手段からの補正値の読み出し処理を行った後に、他の演算手段に対して該読み出した補正値を送信し、前記複数の演算手段のうち、前記記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行し、前記補正値を受信まで待機した後にアプリケーション層の初期化処理を実行することを特徴とする。
【００３２】
この請求項９の発明によれば電子制御装置は、複数の演算処理手段のうち記憶手段が設けられた演算処理手段は、プラットフォーム層を初期化した後、記憶手段から読み出した補正値を他の演算手段に対して送信し、記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行した後、補正値を受信するまでアプリケーション層の初期化を行わない。
【００３３】
また、請求項１０の発明に係る電子制御装置は、請求項９の発明において、記憶手段が設けられていない演算処理手段は、前記記憶手段が設けられた演算処理手段に先んじて起動し、前記記憶手段が設けられた演算処理手段に対する起動指示を行うことを特徴とする。
【００３４】
この請求項１０の発明によれば電子制御装置は、記憶手段が設けられていない演算処理手段を先に起動し、記憶手段が設けられていない演算処理手段からの起動指示が行われた場合に記憶手段を設けた演算処理手段を起動する。
【発明の効果】
【００３５】
請求項１の発明によれば、電子制御装置は、複数の演算処理手段の各々に補正値の送受信を行う通信手段を設け、この通信手段が演算処理手段の起動時に使用する起動用バッファと演算処理手段の起動後に使用する通常処理用バッファとを切替えて使用することで、初期化時には必要な補正値のみを選択的に送信するので、高速に起動する電子制御装置を得ることができるという効果を奏する。
【００３６】
また、請求項２の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出し、他の演算処理手段が備える通信手段を起動して補正値を送信するので、高速に起動する電子制御装置を得ることができるという効果を奏する。
【００３７】
また、請求項３の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出し、他の演算処理手段によって起動された通信手段を用いて補正値を送信するので、高速に起動する電子制御装置を得ることができるという効果を奏する。
【００３８】
また、請求項４の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を定期的に読み出して他の演算処理手段に送信し、補正値を受信した演算処理手段は、受信した補正値を用いて入出力信号の補正処理を行うので、高速に起動し、かつ正確に動作する電子制御装置を得ることができるという効果を奏する。
【００３９】
また、請求項５の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出して他の演算処理手段に送信し、補正値を受信した演算処理手段は、受信した補正値が所定の範囲を逸脱する場合に補正値の送信元の演算処理手段を再起動するので、高速に起動し、かつ安全に動作する電子制御装置を得ることができるという効果を奏する。
【００４０】
また、請求項６の発明によれば、電子制御装置は、所定の演算処理手段が記憶手段から補正値を読み出して他の演算処理手段に送信し、各演算処理手段は、記憶手段から読み出した補正値もしくは受信した補正値が所定の範囲を逸脱する場合に予め定められたフェールセーフ値を用いて入出力信号を補正するので、高速に起動し、かつ安全に動作する電子制御装置を得ることができるという効果を奏する。
【００４１】
また、請求項７の発明によれば、電子制御装置は、複数の演算処理手段にそれぞれ補正値保持手段を設け、起動時に補正値を補正値保持手段に記憶させ、入出力信号の補正を行う場合に補正値保持手段から随時補正値を読み出して使用するので、高速に起動し、かつ誤動作の少ない電子制御装置を得ることができるという効果を奏する。
【００４２】
また、請求項８の発明によれば、電子制御装置は、複数の演算処理手段にそれぞれ補正値保持手段を設けて起動時に補正値を補正値保持手段に記憶させるとともに、所定の演算処理手段が記憶手段から補正値を定期的に読み出して他の演算処理手段に送信し、各演算処理手段は記憶部から読み出した補正値、もしくは受信した補正値が補正値保持手段に保持した補正値と異なる場合に、受信した補正値で補正値保持手段が保持する補正値を更新するので、高速に起動し、誤動作が少なく、かつ誤動作から自動的に復帰する電子制御装置を得ることができるという効果を奏する。
【００４３】
また、請求項９の発明によれば、電子制御装置は、複数の演算処理手段のうち記憶手段が設けられた演算処理手段は、プラットフォーム層を初期化した後、記憶手段から読み出した補正値を他の演算手段に対して送信し、記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行した後、補正値を受信するまでアプリケーション層の初期化を行わないので、高速かつ安全に起動する電子制御装置を得ることができるという効果を奏する。
【００４４】
また、請求項１０の発明によれば、電子制御装置は、記憶手段が設けられていない演算処理手段を先に起動し、記憶手段が設けられていない演算処理手段からの起動指示が行われた場合に記憶手段を設けた演算処理手段を起動するので、高速かつ安全に起動する電子制御装置を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００４５】
以下に添付図面を参照して、この発明に係る電子制御装置の好適な実施例を詳細に説明する。
【実施例１】
【００４６】
まず図１を参照し、本発明の実施例１である電子制御装置（ＥＣＵ）１の概要構成について説明する。同図に示すように本実施例１にかかるＥＣＵ１は、入力端子Ｔ１１〜Ｔ１４および入力端子Ｔ２１〜Ｔ２３を有する。また、ＥＣＵ１は、その内部にメインマイコン１０、サブマイコン２０、ＥＥＰＲＯＭ２を有する。
【００４７】
このＥＣＵ１は、例えば車両用のエンジン制御ＥＣＵであり、入力端子Ｔ１１〜Ｔ１４および入力端子Ｔ２１〜Ｔ２３には水温、吸気圧、吸気温、バッテリ電圧、油圧、油温、スロットル開度などを示す入力信号がアナログ電圧信号として入力される。
【００４８】
メインマイコン１０は、入力端子Ｔ１１〜Ｔ１４に入力されたアナログ信号を使用して演算処理をおこなう処理手段であり、サブマイコン２０は、入力端子Ｔ２１〜Ｔ２３に入力されたアナログ信号を使用して演算処理をおこなう処理手段である。
【００４９】
具体的には、メインマイコン１０は、その内部に入力処理部１３、補正処理部１２、主制御部１１およびＤＭＡコントローラ１４を有する。また、サブマイコン２０は、その内部に入力処理部２３、補正処理部２２、主制御部２１、ＤＭＡコントローラ２４およびＥＥＰＲＯＭドライバ２５を有する。さらに、ＥＥＰＲＯＭ２は、その内部にメインマイコン補正値２ａおよびサブマイコン補正値２ｂを記憶している。
【００５０】
ここで、メインマイコン補正値２ａは、メインマイコン１０が入力信号の補正に使用する値であり、ＥＣＵ１の製造時に決定され、ＥＥＰＲＯＭ２に記憶されたものである。同様に、サブマイコン補正値２ｂは、サブマイコン２０が入力信号の補正に使用する値であり、ＥＣＵ１の製造時に決定され、ＥＥＰＲＯＭ２に記憶されたものである。
【００５１】
上述したように、メインマイコン１０およびサブマイコン２０は、アナログ信号を入力されて演算処理をおこなうが、ＥＣＵに搭載される電源ＩＣの供給電圧は厳密には均一でないので、ＥＣＵの製造時、すなわちＥＣＵに電源ＩＣを搭載した時点で必要な補正値を算出してＥＥＰＲＯＭ２に記憶させ、電源ＩＣの出力ばらつきを補正することで入力信号の値を正確に評価する。
【００５２】
サブマイコン２０内部の入力処理部２３は、入力端子Ｔ２１〜２３から入力されたアナログ電圧信号を補正処理部２２に出力する。また、ＥＥＰＲＯＭドライバ２５は、ＥＥＰＲＯＭ２からメインマイコン補正値２ａおよびサブマイコン補正値２ｂを読み出して補正処理部２２に出力する。
【００５３】
補正処理部２２は、サブマイコン補正値２ｂを使用し、入力処理部２３から入力された入力信号の値を補正して主制御部２１に出力する。また、補正処理部２２は、メインマイコン補正値２ａをＤＭＡコントローラ２４に出力する。
【００５４】
ＤＭＡコントローラ２４は、サブマイコン２０とメインマイコン１０との間の通信を行う通信手段であり、具体的にはＤＭＡ転送方式でデータ通信を行う。このＤＭＡコントローラ２４によるデータ通信は、メインマイコン１０とサブマイコン２０との間の各種データのやり取りに使用し、メインマイコン補正値２ａもＤＭＡコントローラ２４によって送信される。
【００５５】
主制御部２１は、補正された入力信号をもとに演算処理を実行する演算処理手段である。具体的には主制御部２１は、ＣＰＵ（Central Processing Unit）とメモリによって構成され、エンジン制御を行うアプリケーションを実行する。
【００５６】
メインマイコン１０内部の入力処理部１３は、入力端子Ｔ１１〜１４から入力されたアナログ電圧信号を補正処理部１２に出力する。ＤＭＡコントローラ１４は、ＤＭＡコントローラ２４から受信したメインマイコン補正値２ａを補正処理部１２に出力する。
【００５７】
補正処理部１２は、メインマイコン補正値２ａを使用し、入力処理部１３から入力された入力信号の値を補正して主制御部１１に出力する。主制御部１１は、補正された入力信号をもとに演算処理を実行する演算処理手段である。具体的には主制御部１１は、ＣＰＵ（Central Processing Unit）とメモリによって構成され、エンジン制御を行うアプリケーションを実行する。
【００５８】
つぎに、メインマイコン１０とサブマイコン２０との間で行われるＤＭＡ通信について説明する。ＤＭＡによるデータ送受信では、送信側と受信側に同一の構造を持つバッファを設け、送信側はバッファの構造に従ってデータを書き込んで送信する。そのため、受信側ではバッファの構造からどの位置にどのデータが書き込まれているかを知ることができる。
【００５９】
ＥＣＵ１では、サブマイコン２０がメインマイコン補正値２ａを読み出し、ＤＭＡによって送信する。このため、メインマイコン１０専用のＥＥＰＲＯＭを不要とし、構成を簡易にすることができる。しかし一方でメインマイコン１０の起動時には、メインマイコン補正値２ａを受信するまで初期化を完了することができない。さらに、初期化を行う際に送信する必要があるのはメインマイコン補正値２ａのみである。
【００６０】
この構成で、従来のように単一のバッファを有するＤＭＡコントローラでデータ通信を行うとすると、ＤＭＡ通信にはバッファの容量分の時間が必要となるので、メインマイコン１０の初期化に要する時間が増大する。
【００６１】
そこで、本発明にかかるＥＣＵ１では、ＤＭＡコントローラ１４，２４に初期化用バッファ１４ａ，２４ａと通常用バッファ１４ｂ，２４ｂとを設け、初期化時と初期化処理後で使用するバッファを切り替える構成としている。ＤＭＡコントローラ１４，２４におけるバッファの構造例を図２に示す。
【００６２】
図２−１は、初期化用バッファ１４ａの構造を説明する説明図であり、図２−２は通常用バッファ２４ａの構造を説明する説明図である。なお、初期化用バッファ２４ａおよび通常用バッファ２４ｂの構造は、それぞれ初期化用バッファ１４ａ、通常用バッファ１４ｂと同様である。
【００６３】
初期化用バッファ１４ａは、図２−１に示すようにメインマイコン補正値２ａとチェックコードのみを有する。一方、通常用バッファ１４ｂは、図２−２に示すように、メインマイコン補正値２ａ、チェックコードに加え、水温データ、油温データなどメインマイコン１０とサブマイコン２０とが起動後の通常処理で通信する各種データのための領域を有する。
【００６４】
このように、初期化用バッファ１４ａ，２４ａと通常用バッファ１４ｂ，２４ｂとを切替えて使用し、初期化用バッファ１４ａ，２４ａには起動に必要なメインマイコン補正値２ａと、通信が正常に行われたことを確認するためのチェックコードのみを持たせることでメインマイコン１０の初期化を高速化することができる。また、通常用バッファ１４ｂ，２４ｂには起動後の処理に必要な各種データのための領域を持たせているので、起動後の通信処理において動作が制限されることはない。
【００６５】
つぎに、ＥＣＵ１の起動時の処理について説明する。図３は、ＥＣＵ１の起動時における処理動作を説明するフローチャートである。同図に示したフローは、ＥＣＵ１の電源投入時に開始され、メインマイコン１０、サブマイコン２０はそれぞれ独立に初期化処理を開始する。メインマイコン１０は、まず、プラットフォーム層を初期化し（ステップＳ１０１）、その後メインマイコン補正値２ａの受信待ちを開始する（ステップＳ１０２）。
【００６６】
メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信したならば（ステップＳ１０３，Ｙｅｓ）、アプリケーション層を初期化して（ステップＳ１０４）、初期化処理を終了する。
【００６７】
一方、サブマイコン２０は、まず、プラットフォーム層を初期化し（ステップＳ２０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出す（ステップＳ２０２）。サブマイコン２０は、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン１０に送信する（ステップＳ２０３）。この時、ＤＭＡコントローラ２４は、初期化用バッファ２４ａを使用する。その後、サブマイコン２０は、アプリケーション層を初期化して（ステップＳ２０４）、初期化処理を終了する。
【００６８】
このように、サブマイコン２０は、その初期化処理の中でメインマイコン１０にメインマイコン補正値２ａを送信し、メインマイコン１０はメインマイコン補正値２ａの受信を待って初期化処理を行うが、メインマイコン補正値２ａの送信に初期化用バッファ１４ａ，２４ａを使用することでメインマイコン１０の待ち時間を最小限に抑えることができる。
【００６９】
ここで、メインマイコン１０とサブマイコン２０のＤＭＡの起動は、どちらから行ってもよい。図４は、サブマイコン２０からＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。同図に示したフローは、図３に示したフローと同様に、ＥＣＵ１の電源投入時に開始される処理である。メインマイコン１０は、まず、プラットフォーム層を初期化し（ステップＳ３０１）、その後、サブマイコン２０からのＤＭＡ起動待ちを開始する（ステップＳ３０２）。
【００７０】
メインマイコン１０は、サブマイコン２０がＤＭＡによってメインマイコン補正値２ａを送信した場合に、ＤＭＡを起動し、メインマイコン補正値２ａを受信する（ステップＳ３０３）。その後、メインマイコン１０は、チェックコードを用いてメインマイコン補正値２ａを正常に受信したか否かを判定する（ステップＳ３０４）。
【００７１】
メインマイコン補正値２ａを正常に受信していなければ（ステップＳ３０４，Ｎｏ）、メインマイコン１０は、再度ＤＭＡ起動待ちを開始する（ステップＳ３０２）。一方、メインマイコン補正値２ａを正常に受信したならば（ステップＳ３０４，Ｙｅｓ）、メインマイコン１０は、サブマイコン２０に受信完了通知を送信し（ステップＳ３０５）、アプリケーション層を初期化して（ステップＳ３０６）、初期化処理を終了する。
【００７２】
一方、サブマイコン２０は、まず、プラットフォーム層を初期化し（ステップＳ４０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出す（ステップＳ４０２）。その後、サブマイコン２０はＤＭＡを起動し（ステップＳ４０３）、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン１０に送信する（ステップＳ４０４）。
【００７３】
そして、サブマイコン２０は、メインマイコン１０から受信完了通知を受信したか否かを判定し（ステップＳ４０５）、メインマイコン１０から受信完了通知を受信していなければ（ステップＳ４０５，Ｎｏ）、再度メインマイコン補正値２ａをメインマイコン１０に送信する（ステップＳ４０４）。
【００７４】
一方、メインマイコン１０から受信完了通知を受信したならば（ステップＳ４０５，Ｙｅｓ）、サブマイコン２０は、アプリケーション層を初期化して（ステップＳ４０６）、初期化処理を終了する。
【００７５】
続いて、メインマイコン１０からＤＭＡを起動する場合の起動処理を説明する。図５は、メインマイコン１０からＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。なお、同図に示したフローは、図３に示したフローと同様に、ＥＣＵ１の電源投入時に開始される処理である。メインマイコン１０は、まず、プラットフォーム層を初期化し（ステップＳ５０１）、その後、サブマイコン２０からの送信許可待ちを開始する（ステップＳ５０２）。
【００７６】
メインマイコン１０は、サブマイコン２０から送信許可を受信した場合（ステップＳ５０３）に、ＤＭＡを初期化するとともに、サブマイコン２０にＤＭＡ初期化コードを送信する（ステップＳ５０４）。そして、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ５０５）、正常に受信したか否かを判定する（ステップＳ５０６）。
【００７７】
メインマイコン補正値２ａを正常に受信していなければ（ステップＳ５０６，Ｎｏ）、メインマイコン１０は、再度送信許可待ちを開始する（ステップＳ５０２）。一方、メインマイコン補正値２ａを正常に受信したならば（ステップＳ５０６，Ｙｅｓ）、メインマイコン１０は、サブマイコン２０に受信完了通知を送信し（ステップＳ５０７）、アプリケーション層を初期化して（ステップＳ５０８）、初期化処理を終了する。
【００７８】
一方、サブマイコン２０は、まず、プラットフォーム層を初期化し（ステップＳ６０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出して（ステップＳ６０２）、メインマイコン１０に送信許可を送信する（ステップＳ６０３）。そして、メインマイコン１０が送信したＤＭＡ初期化コードを受信してＤＭＡを起動し（ステップＳ６０４）、メインマイコン補正値２ａをメインマイコン１０に送信する（ステップＳ６０５）。
【００７９】
その後、サブマイコン２０は、メインマイコン１０から受信完了通知を受信したか否かを判定し（ステップＳ６０６）、メインマイコン１０から受信完了通知を受信していなければ（ステップＳ６０６，Ｎｏ）、再度メインマイコン補正値２ａをメインマイコン１０に送信する（ステップＳ６０５）。
【００８０】
一方、メインマイコン１０から受信完了通知を受信したならば（ステップＳ６０６，Ｙｅｓ）、サブマイコン２０は、アプリケーション層を初期化して（ステップＳ６０７）、初期化処理を終了する。
【００８１】
つぎに、ＥＣＵ１の通常処理について説明する。ＥＣＵ１に電源を投入し、メインマイコン１０およびサブマイコン２０が起動した後も、サブマイコン２０は定期的にＥＥＰＲＯＭ２からメインマイコン補正値２ａおよびサブマイコン補正値２ｂを読み出し、メインマイコン補正値２ａをメインマイコン１０に送信する。メインマイコン１０側では、常に受信した最新のメインマイコン補正値２ａを使用することで、補正値のデータ化けなどによる動作異常を防止することができる。
【００８２】
このＥＣＵ１の通常処理動作を、図６に示す。図６に示したフローは、ＥＣＵ１の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ１に電源が投入された場合に開始される。メインマイコン１０は、初期化処理を実行した（ステップＳ７０１）後、メインループを開始する（ステップＳ７０２）。なお、ステップＳ７０１に示した初期化処理は、図３〜５で説明した処理を用いればよい。
【００８３】
メインループ開始（ステップＳ７０２）後、メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ７０３）、補正処理部１２が使用する補正値を、受信した値に更新して（ステップＳ７０４）、メインループを終了する（ステップＳ７０５）。このステップＳ７０２〜Ｓ７０５に示したメインループは、ＥＣＵ１の電源が落とされるか、メインマイコン１０が再起動されるまで繰り返し実行される。
【００８４】
一方、サブマイコン２０は、初期化処理を実行した（ステップＳ８０１）後、メインループを開始する（ステップＳ８０２）。なお、ステップＳ８０１に示した初期化処理は、図３〜５で説明した処理を用いればよい。
【００８５】
メインループ開始（ステップＳ８０２）後、サブマイコン２０は、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出し（ステップＳ８０３）、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン１０に送信する（ステップＳ８０４）。この時、ＤＭＡコントローラ２４は、通常用バッファ２４ｂを使用する。
【００８６】
その後、サブマイコン２０は、補正処理部２２が使用する補正値を、ＥＥＰＲＯＭ２から読み出した値に更新して（ステップＳ８０５）、メインループを終了する（ステップＳ８０６）。このステップＳ８０２〜Ｓ８０６に示したメインループは、ＥＣＵ１の電源が落とされるか、サブマイコン２０が再起動されるまで繰り返し実行される。
【００８７】
ところで、メインマイコン１０の異常やサブマイコン２０の異常、ＥＥＰＲＯＭ２の故障、さらにはＤＭＡ通信線のノイズなどにより、補正値が正常ではない場合には、異常な補正値を使用することによる誤動作を防止するため、フェールセーフを行うことが望ましい。
【００８８】
補正値が正常の範囲内であるか否かは、例えば、ＥＣＵ１に搭載した電源ＩＣの保証範囲内にその値が収まっているか否かを判定することで検出することができる。たとえば、電源ＩＣの精度が±５％である場合、補正値が０．９５以上１．０５以下であれば正常であると判定し、この範囲を逸脱する場合には異常と判定する。なお、ここで補正処理は、補正値を乗ずることで行うものとする。
【００８９】
さらに、補正値の異常がサブマイコン２０の動作異常に起因するものである場合、メインマイコン１０からサブマイコン２０を再起動することで復帰することが可能である。図７は、サブマイコン２０のリセットによるフェールセーフ処理を説明するフローチャートである。このフローは、ＥＣＵ１の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ１に電源が投入された場合に開始される。メインマイコン１０は、初期化処理を実行した（ステップＳ９０１）後、メインループを開始する（ステップＳ９０２）。ここで、ステップＳ９０１に示した初期化処理は、図３〜５で説明した処理と同様の処理を用いればよい。
【００９０】
メインループ開始（ステップＳ９０２）後、メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ９０３）、受信した補正値が所定の範囲内であるか否かを判定する（ステップＳ９０４）。その結果、受信した補正値が所定の範囲を逸脱していれば（ステップＳ９０４，Ｎｏ）、メインマイコン１０は、サブマイコン２０をリセット、すなわち再起動し（ステップＳ９０５）、再度ステップＳ９０４に移行する。
【００９１】
一方、受信した補正値が所定の範囲内であれば（ステップＳ９０４，Ｙｅｓ）、メインマイコン１０は、補正処理部１２が使用する補正値を受信した値に更新して（ステップＳ９０６）、メインループを終了する（ステップＳ９０７）。このステップＳ９０２〜Ｓ９０７に示したメインループは、ＥＣＵ１の電源が落とされるか、メインマイコン１０が再起動されるまで繰り返し実行される。
【００９２】
また、他のフェールセーフ処理として、補正値の異常時には予め定めたフェールセーフ値を補正値として用いてもよい。このフェールセーフ値は、マイコンを安全に制御可能な値とする。図８は、補正値の異常時にフェールセーフ値を用いる処理を説明するフローチャートである。このフローは、ＥＣＵ１の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ１に電源が投入された場合に開始される。メインマイコン１０は、初期化処理を実行した（ステップＳ１００１）後、メインループを開始する（ステップＳ１００２）。ここで、ステップＳ１００１に示した初期化処理は、図３〜５で説明した処理と同様の処理を用いればよい。
【００９３】
メインループ開始（ステップＳ１００２）後、メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ１００３）、受信した補正値が所定の範囲内であるか否かを判定する（ステップＳ１００４）。その結果、受信した補正値が所定の範囲を逸脱していれば（ステップＳ１００４，Ｎｏ）、メインマイコン１０は、補正処理部１２が使用する補正値をフェールセーフ値に更新して（ステップＳ１００６）、メインループを終了する（ステップＳ１００７）。
【００９４】
一方、受信した補正値が所定の範囲内であれば（ステップＳ１００４，Ｙｅｓ）、メインマイコン１０は、補正処理部１２が使用する補正値を受信した値に更新して（ステップＳ１００５）、メインループを終了する（ステップＳ１００７）。このステップＳ１００２〜Ｓ１００７に示したメインループは、ＥＣＵ１の電源が落とされるか、メインマイコン１０が再起動されるまで繰り返し実行される。
【００９５】
このように、補正値に異常がある場合にはフェールセーフ処理を実行することで、ＥＣＵ１の動作異常を引き起こすことなく、安全に動作させることができる。なお、図７および図８のフローチャートでは、通常動作時における補正値の異常検出について説明したが、初期化処理中においても同様の処理によって補正値の異常を検出し、フェールセーフ処理を実行可能である。
【００９６】
また、図８のフローチャートでは、メインマイコン１０における処理を例に説明したが、サブマイコン２０においても同様に、ＥＥＰＲＯＭ２から読み出した補正値が所定の範囲内であるか否かを判定し、所定の範囲を逸脱する場合にはフェールセーフ値を用いて補正処理をおこなうことができる。
【００９７】
上述してきたように、本実施例１では、ＤＭＡコントローラに初期化用のバッファと通常用のバッファとをそれぞれ設け、初期化処理時には補正値とチェックコードのみを有する初期化用バッファを使用してメインマイコン１０への補正値の送信を行うので、メインマイコン１０の起動、ひいてはＥＣＵ１の起動を高速化することができる。
【００９８】
また、補正値に異常が発生した場合には、自動的にフェールセーフを行うことで、ＥＣＵの動作異常を引き起こすことなく、安全に動作させることができる。
【００９９】
さらに、メインマイコンにおけるアプリケーション層の初期化を、サブマイコンからの補正値の受信完了を待ってから行うので、メインマイコンを誤動作させることなく起動することができる。
【０１００】
すなわち、プラットフォーム層の初期化が行われるまではＤＭＡ通信は不能であるので、プラットフォーム層の初期化が行われていないマイコンに対してＤＭＡ通信を行うと、送信したデータが正常に受信したか否かの判定が困難となり、好ましくない。そのため、従来の技術では、補正値を受信する側のマイコン（本実施例ではメインマイコン）の方が送信する側のマイコン（本実施例ではサブマイコン）よりも早くプラットフォーム層の初期化が完了するように、送信側マイコンに時間のかかるＥＥＰＲＯＭの読出し処理を行わせたり、受信側マイコンを先に起動させて送信側マイコンの起動指示を行わせていた。
【０１０１】
しかしながら、この従来の技術によって受信側のマイコンの方が早くプラットフォーム層の初期化が完了するように設定すると、その後に連続して行われるアプリケーション層の初期化が補正値を受信していない状態で行われてしまう危険がある。
【０１０２】
そこで、本実施例のように、受信側マイコンのプラットフォーム層の初期化が完了した後、補正値を受信するまではアプリケーション層の初期化を行わないようにすることで、ＤＭＡ通信と、アプリケーション層の初期化とをともに正常に行うことができる。
【０１０３】
ここで、送信側マイコンのプラットフォーム層の初期化、すなわち送信側マイコンの起動を、受信側マイコンから指示することによって、複数のマイコンの起動時間を最適化し、高速かつ安全に起動することが可能となる。
【実施例２】
【０１０４】
つぎに、本発明の実施例２について説明する。図９は、本発明の実施例２である電子制御装置（ＥＣＵ）の概要構成を示す概要構成図である。本実施例２にかかるＥＣＵ３は、メインマイコン３０およびサブマイコン４０にそれぞれＳＲＡＭ（Static Random Access Memory）３２，４２を設け、補正処理部３１，４１はＳＲＡＭ３２，４２に補正値を記憶させ、随時読み出して使用する。その他の構成および動作は、実施例１に示したＥＣＵ１と同様であるので、同一の構成要素には同一の符号を付して説明を省略する。
【０１０５】
サブマイコン４０内部の補正処理部４１は、サブマイコン補正値２ｂをＳＲＡＭ４２に記憶させる。その後、入力処理部２３から入力された入力信号の値を補正する場合には、サブマイコン補正値２ｂをＳＲＡＭ４２から読み出して使用する。また、補正処理部４２は、メインマイコン補正値２ａをＤＭＡコントローラ２４に出力する。
【０１０６】
同様に、メインマイコン３０内部の補正処理部３１は、ＤＭＡコントローラ１４を介して受信したメインマイコン補正値２ａをＳＲＡＭ３２に記憶させる。その後、入力処理部１３から入力された入力信号の値を補正する場合には、メインマイコン補正値２ａをＳＲＡＭ３２から読み出して使用する。
【０１０７】
つぎに、ＥＣＵ３の起動時の処理について説明する。図１０は、ＥＣＵ３の起動時における処理動作を説明するフローチャートである。同図に示したフローは、ＥＣＵ３の電源投入時に開始され、メインマイコン３０、サブマイコン４０はそれぞれ独立に初期化処理を開始する。メインマイコン３０は、まず、プラットフォーム層を初期化し（ステップＳ１１０１）、その後メインマイコン補正値２ａの受信待ちを開始する（ステップＳ１１０２）。
【０１０８】
メインマイコン３０は、サブマイコン４０からメインマイコン補正値２ａを受信したならば（ステップＳ１１０３，Ｙｅｓ）、受信したメインマイコン補正値２ａをＳＲＡＭ３２に保存した（ステップＳ１１０４）後、アプリケーション層を初期化して（ステップＳ１１０５）、初期化処理を終了する。
【０１０９】
一方、サブマイコン４０は、まず、プラットフォーム層を初期化し（ステップＳ１２０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出す（ステップＳ１２０２）。さらに、サブマイコン４０は、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン３０に送信する（ステップＳ１２０３）。この時、ＤＭＡコントローラ２４は、初期化用バッファ２４ａを使用する。その後、サブマイコン４０は、サブマイコン補正値２ｂをＳＲＡＭ４２に保存した（ステップＳ１２０４）後、アプリケーション層を初期化して（ステップＳ１２０５）、初期化処理を終了する。
【０１１０】
つぎに、ＥＣＵ３の通常処理について説明する。ＥＣＵ３に電源を投入し、メインマイコン３０およびサブマイコン４０が起動した後、メインマイコン３０はＳＲＡＭ３２からメインマイコン補正値２ａを読み出して使用する。また、サブマイコン４０は、ＳＲＡＭ４２からサブマイコン補正値２ｂを読み出して使用する。
【０１１１】
このＥＣＵ３の通常処理動作を、図１１に示す。図１１に示したフローは、ＥＣＵ３の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ３に電源が投入された場合に開始される。メインマイコン３０は、初期化処理を実行した（ステップＳ１３０１）後、メインループを開始する（ステップＳ１３０２）。なお、ステップＳ１３０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【０１１２】
メインループ開始（ステップＳ１３０２）後、メインマイコン３０は、ＳＲＡＭ３２からメインマイコン補正値２ａを読み出して入力信号の補正処理を行い（ステップＳ１３０３）、メインループを終了する（ステップＳ１３０４）。このステップＳ１３０２〜Ｓ１３０４に示したメインループは、ＥＣＵ３の電源が落とされるか、メインマイコン３０が再起動されるまで繰り返し実行される。
【０１１３】
一方、サブマイコン４０は、初期化処理を実行した（ステップＳ１４０１）後、メインループを開始する（ステップＳ１４０２）。なお、ステップＳ１４０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【０１１４】
メインループ開始（ステップＳ１４０２）後、サブマイコン４０は、ＳＲＡＭ３２からサブマイコン補正値２ｂを読み出して入力信号の補正処理を行い（ステップＳ１４０３）、メインループを終了する（ステップＳ１４０４）。このステップＳ１４０２〜Ｓ１４０４に示したメインループは、ＥＣＵ３の電源が落とされるか、サブマイコン４０が再起動されるまで繰り返し実行される。
【０１１５】
ところで、図１１に示したフローでは、起動時にＳＲＡＭに記憶させた補正値を随時読み出して使用しているが、通常動作中にサブマイコン４０が定期的にＥＥＰＲＯＭ２から補正値を読み出してＳＲＡＭに記憶した補正値と比較し、ＳＲＡＭに記憶した補正値に異常がないかを判定するように動作させても良い。
【０１１６】
図１２は、ＳＲＡＭに補正値を記憶するとともに、ＥＥＰＲＯＭから定期的に補正値を読み出してＳＲＡＭの記憶内容を更新する場合におけるＥＣＵ３の通常処理について説明するフローチャートである。このフローチャートは、ＥＣＵ３の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ３に電源が投入された場合に開始される。メインマイコン３０は、初期化処理を実行した（ステップＳ１５０１）後、メインループを開始する（ステップＳ１５０２）。なお、ステップＳ１５０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【０１１７】
メインループ開始（ステップＳ１５０２）後、メインマイコン３０は、ＳＲＡＭ３２からメインマイコン補正値２ａを読み出す（ステップＳ１５０３）。その後、メインマイコン３０は、サブマイコン４０からメインマイコン補正値２ａを受信し（ステップＳ１５０４）、ＳＲＡＭ３２から読み出した補正値とサブマイコン４０から受信した補正値とが一致するか否かを判定する（ステップＳ１５０５）。
【０１１８】
ＳＲＡＭ３２から読み出した補正値とサブマイコン４０から受信した補正値とが一致しない場合（ステップＳ１５０５，Ｎｏ）、メインマイコン３０は、サブマイコン４０から受信した補正値をＳＲＡＭ３２に書き込んで更新する（ステップＳ１５０６）。
【０１１９】
ＳＲＡＭ３２の更新（ステップＳ１５０６）、もしくはＳＲＡＭ３２から読み出した補正値とサブマイコン４０から受信した補正値とが一致した場合（ステップＳ１５０５，Ｙｅｓ）、メインマイコン３０は、メインループを終了する（ステップＳ１５０７）。このステップＳ１５０２〜Ｓ１５０７に示したメインループは、ＥＣＵ３の電源が落とされるか、メインマイコン３０が再起動されるまで繰り返し実行される。
【０１２０】
一方、サブマイコン４０は、初期化処理を実行した（ステップＳ１６０１）後、メインループを開始する（ステップＳ１６０２）。なお、ステップＳ１６０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【０１２１】
メインループ開始（ステップＳ１６０２）後、サブマイコン４０は、ＳＲＡＭ４２からサブマイコン補正値２ｂを読み出す（ステップＳ１６０３）。その後、サブマイコン４０は、ＥＥＰＲＯＭ２からメインマイコン補正値２ａおよびサブマイコン補正値２ｂを読み出し（ステップＳ１６０４）、メインマイコン補正値２ａをメインマイコン３０に送信する（ステップＳ１６０５）。さらに、サブマイコン４０は、ＳＲＡＭ４２から読み出したサブマイコン補正値２ｂとＥＥＰＲＯＭ２から読み出したサブマイコン補正値２ｂとが一致するか否かを判定する（ステップＳ１６０６）。
【０１２２】
ＳＲＡＭ４２から読み出したサブマイコン補正値２ｂとＥＥＰＲＯＭ２から読み出したサブマイコン補正値２ｂとが一致しない場合（ステップＳ１６０６，Ｎｏ）、サブマイコン４０は、ＥＥＰＲＯＭ２から読み出した補正値をＳＲＡＭ４２に書き込んで更新する（ステップＳ１６０７）。
【０１２３】
ＳＲＡＭ４２の更新（ステップＳ１６０７）、もしくはＳＲＡＭ４２から読み出した補正値とＥＥＰＲＯＭ２から読み出した補正値とが一致した場合（ステップＳ１６０６，Ｙｅｓ）、サブマイコン４０は、メインループを終了する（ステップＳ１６０８）。このステップＳ１６０２〜Ｓ１６０８に示したメインループは、ＥＣＵ３の電源が落とされるか、サブマイコン４０が再起動されるまで繰り返し実行される。
【０１２４】
上述してきたように、本実施例２では、メインマイコン補正値２ａとサブマイコン補正値２ｂをそれぞれＳＲＡＭ３２，４２に記憶させ、随時読み出して使用することで、補正値における異常発生を抑止し、メインマイコン３０およびサブマイコン４０を正確に動作させることができる。
【０１２５】
さらに、ＥＥＰＲＯＭ２から定期的に補正値を読み出してＳＲＡＭに記憶した値と比較することで、ＳＲＡＭに記憶した補正値に異常が発生した場合にも自動的に修正し、正常な補正値を用いて補正処理を行うことができる。
【０１２６】
なお、本実施例２においても実施例１と同様のフェールセーフ処理をおこなうことができ、ＥＣＵ３の動作における安全性をさらに高めることができる。
【実施例３】
【０１２７】
上記の実施例１，２では、ＥＣＵが２つのマイコンを備えた構成について説明したが、本発明の実施はこれに限定されるものではなく、ＥＣＵ内に所望の数のマイコンを設けることができるものである。
【０１２８】
また、上記の実施例１，２では、サブマイコンにＥＥＰＲＯＭを接続し、ＥＥＰＲＯＭからの補正値の読み出しとメインマイコンへの送信をサブマイコンに担わせていたが、たとえばメインマイコンにＥＥＰＲＯＭを接続して補正値を読み出させ、メインマイコンがサブマイコンに補正値を送信する構成としてもよい。
【０１２９】
図１３は、本発明の実施例３である電子制御装置（ＥＣＵ）の概要構成を示す概要構成図である。実施例３にかかるＥＣＵ４は、その内部にメインマイコン５０、サブマイコン６０，７０，８０およびＥＥＰＲＯＭ５を備えている。
【０１３０】
メインマイコン５０は、入力端子Ｔ５１〜Ｔ５４に入力されたアナログ信号を使用して演算処理をおこなう処理手段であり、サブマイコン６０は、入力端子Ｔ６１〜Ｔ６３に入力されたアナログ信号を使用して演算処理をおこなう処理手段である。同様に、サブマイコン７０，８０は、それぞれ入力端子Ｔ７１〜Ｔ７３、入力端子Ｔ８１〜Ｔ８３に入力されたアナログ信号を使用して演算処理をおこなう処理手段である。
【０１３１】
ＥＥＰＲＯＭ５は、メインマイコン５０が入力信号の補正に使用するメインマイコン補正値５ａ、サブマイコン６０が入力信号の補正に使用するサブマイコン補正値５ｂ、サブマイコン７０が入力信号の補正に使用するサブマイコン補正値５ｃ、サブマイコン８０が入力信号の補正に使用するサブマイコン補正値５ｄを記憶している。
【０１３２】
また、メインマイコン５１はその内部にＤＭＡコントローラ５１を、サブマイコン６０，７０，８０はその内部にそれぞれＤＭＡコントローラ６１，７１，８１を備えている。メインマイコン５０およびサブマイコン６０，７０，８０のその他の内部構成や動作については実施例１，２と同様であるので、ここでは図示および説明を省略する。
【０１３３】
メインマイコン５０は、ＥＥＰＲＯＭ５からメインマイコン補正値５ａ、サブマイコン補正値５ｂ〜５ｄを読み出す。その後、メインマイコン補正値５ａを用いて入力信号の補正を行うと共に、ＤＭＡコントローラ５１を介してサブマイコン６０〜８０にそれぞれサブマイコン補正値５ｂ〜５ｄを送信する。
【０１３４】
サブマイコン６０は、ＤＭＡコントローラ６１を介して受信したサブマイコン補正値５ｂを用いて入力信号の補正を行う。同様に、サブマイコン７０，８０は、それぞれＤＭＡコントローラ７１，８１を介して受信したサブマイコン補正値５ｃ，５ｄを用いて入力信号の補正を行う。
【０１３５】
このようにＥＣＵの内部に３以上のマイコンを搭載した場合や、メインマイコンが補正値の読み出しと他のマイコンへの送信を行ったとしても、実施例１，２における場合と同様に、起動を高速化し、正確かつ安全に動作させることができる。
【０１３６】
なお、以上実施例１〜３では、入力信号のアナログ電圧の補正を例に説明を行ったが、出力信号における補正においても同様の効果を得ることが可能であるのは言うまでもない。
【産業上の利用可能性】
【０１３７】
以上のように、本発明にかかる電子制御装置は、複数のマイコンを有するＥＣＵに有用であり、特に、簡易な構成で起動を高速化し、正確かつ安全な動作が必要なＥＣＵに適している。
【図面の簡単な説明】
【０１３８】
【図１】本発明の実施例１であるＥＣＵの概要構成を示す概要構成図である。
【図２−１】図１に示した初期化用バッファの構造を説明する説明図である。
【図２−２】図１に示した通常用バッファの構造を説明する説明図である。
【図３】図１に示したＥＣＵの起動時における処理動作を説明するフローチャートである。
【図４】サブマイコンからＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。
【図５】メインマイコン１０からＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。
【図６】図１に示したＥＣＵの起動後における処理動作を説明するフローチャートである。
【図７】サブマイコンのリセットによるフェールセーフ処理を説明するフローチャートである。
【図８】補正値の異常時にフェールセーフ値を用いる処理を説明するフローチャートである。
【図９】本発明の実施例２であるＥＣＵの概要構成を示す概要構成図である。
【図１０】図９に示したＥＣＵの起動時における処理動作を説明するフローチャートである。
【図１１】図９に示したＥＣＵの起動後における処理動作を説明するフローチャートである。
【図１２】ＳＲＡＭに補正値を記憶するとともに、ＥＥＰＲＯＭから定期的に補正値を読み出してＳＲＡＭの記憶内容を更新する場合におけるＥＣＵの通常処理について説明するフローチャートである。
【図１３】本発明の実施例３であるＥＣＵの概要構成を示す概要構成図である。
【符号の説明】
【０１３９】
１，３，４    ＥＣＵ
２，５    ＥＥＰＲＯＭ
２ａ，５ａ    メインマイコン補正値
２ｂ，５ｂ〜５ｄ    サブマイコン補正値
１０，３０，５０    メインマイコン
１１，２１    主制御部
１２，２２    補正処理部
１３，２３    入力処理部
１４，２４，５１，６１，７１，８１    ＤＭＡコントローラ
１４ａ，２４ａ    初期化用バッファ
１４ｂ，２４ｂ    通常用バッファ
２０，４０，６０，７０，８０    サブマイコン
３２，４２    ＳＲＡＭ
２５    ＥＥＰＲＯＭドライバ
Ｔ１１〜Ｔ１４，Ｔ２１〜Ｔ２３，Ｔ５１〜Ｔ５４，Ｔ６１〜Ｔ６３，Ｔ７１１〜Ｔ７３，Ｔ８１〜Ｔ８３    入力端子
【図１】
2008009983.tif 000003
【図２−１】
2008009983.tif 000004
【図２−２】
2008009983.tif 000005
【図３】
2008009983.tif 000006
【図４】
2008009983.tif 000007
【図５】
2008009983.tif 000008
【図６】
2008009983.tif 000009
【図７】
2008009983.tif 000010
【図８】
2008009983.tif 000011
【図９】
2008009983.tif 000012
【図１０】
2008009983.tif 000013
【図１１】
2008009983.tif 000014
【図１２】
2008009983.tif 000015
【図１３】
2008009983.tif 000016
【手続補正書】
【提出日】平成19年7月25日(2007.7.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部との通信を可能にするためのプラットフォーム層およびアプリケーションの実行を可能にするアプリケーション層の初期化を、起動時に行なう複数の演算処理手段と、前記複数の演算処理手段のいずれかに設けられ、前記複数の演算処理手段のそれぞれが前記アプリケーション層の初期化に際して使用する入力信号の補正値を記憶する記憶手段と、を備えた電子制御装置であって、
前記補正値は、電源ＩＣの出力ばらつきを補正するための補正値であり、
前記複数の演算処理手段のうち、前記記憶手段が設けられた演算処理手段は、プラットフォーム層の初期化処理を行なってから前記記憶手段からの補正値の読み出し処理を行なった後に、他の演算処理手段に対して該読み出した補正値を送信し、当該補正値の送信後に、前記記憶手段から読み出した補正値を用いてアプリケーション層の初期化処理の実行を行ない、
前記複数の演算処理手段のうち、前記記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行した後に、前記記憶手段を備えた演算処理手段から前記補正値を受信するまで待機し、当該補正値の受信後に、受信した補正値を用いてアプリケーション層の初期化処理を実行することを特徴とする電子制御装置。
【請求項２】
車両に搭載されてエンジンの制御を行なうもので、外部との通信を可能にするためのプラットフォーム層およびアプリケーションの実行を可能にするアプリケーション層の初期化を、起動時に行なう複数の演算処理手段と、前記複数の演算処理手段のいずれかに設けられ、前記複数の演算処理手段のそれぞれが前記アプリケーション層の初期化に際して使用する入力信号の補正値を記憶する記憶手段と、を備えたエンジン制御用の電子制御装置であって、
前記補正値は、電源ＩＣの出力ばらつきを補正するための補正値であり、
前記複数の演算処理手段のうち、前記記憶手段が設けられた演算処理手段は、プラットフォーム層の初期化処理を行なってから前記記憶手段からの補正値の読み出し処理を行なった後に、他の演算処理手段に対して該読み出した補正値を送信し、当該補正値の送信後に、前記記憶手段から読み出した補正値を用いてアプリケーション層の初期化処理の実行を行ない、
前記複数の演算処理手段のうち、前記記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行した後に、前記記憶手段を備えた演算処理手段から前記補正値を受信するまで待機し、当該補正値の受信後に、受信した補正値を用いてアプリケーション層の初期化処理の実行を行ない、
前記演算処理手段は、アプリケーション層の初期化処理が完了するとエンジン制御のアプリケーションを実行することを特徴とするエンジン制御用の電子制御装置。
【請求項３】
前記演算処理装置は、エンジン制御のアプリケーションを実行する場合に、入力端子から入力された入力信号を前記補正値で補正した値を用いて演算処理を行なうことを特徴とする請求項２に記載のエンジン制御用の電子制御装置。
【請求項４】
前記入力端子から入力される入力信号は、アナログ信号であることを特徴とする請求項３に記載のエンジン制御用の電子制御装置。
【請求項５】
前記入力端子から入力される入力信号は、水温、吸気圧、吸気温、バッテリ電圧、油圧、油温、スロットル開度のうちの少なくとも１つであることを特徴とする請求項３または４に記載のエンジン制御用の電子制御装置。
【請求項６】
外部との通信を可能にするためのプラットフォーム層およびアプリケーションの実行を可能にするアプリケーション層の初期化を、起動時に行なう複数の演算処理手段と、前記複数の演算処理手段のいずれかに設けられ、前記複数の演算処理手段のそれぞれが前記アプリケーション層の初期化に際して使用する入力信号の補正値を記憶する記憶手段と、を備えた電子制御装置の初期化方法であって、
前記補正値は、電源ＩＣの出力ばらつきを補正するための補正値であり、
前記複数の演算処理手段のうち、前記記憶手段が設けられた演算処理手段は、プラットフォーム層の初期化工程を実行した後に前記記憶手段からの補正値の読み出し工程を実行し、該読み出し工程によって読み出した補正値を他の演算処理手段に対して送信する送信工程を実行し、前記送信工程の実行後に、前記読み出し工程によって読み出した補正値を用いてアプリケーション層の初期化工程を実行し、
前記複数の演算処理手段のうち、前記記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化工程を実行した後に、前記記憶手段を備えた演算処理手段から前記補正値を受信するまで待機し、当該補正値の受信後に、受信した補正値を用いてアプリケーション層の初期化工程を実行することを特徴とする電子制御装置の初期化方法。
【請求項７】
車両に搭載されてエンジンの制御を行なうもので、外部との通信を可能にするためのプラットフォーム層およびアプリケーションの実行を可能にするアプリケーション層の初期化を、起動時に行なう複数の演算処理手段と、前記複数の演算処理手段のいずれかに設けられ、前記複数の演算処理手段のそれぞれが前記アプリケーション層の初期化に際して使用する入力信号の補正値を記憶する記憶手段と、を備えたエンジン制御用の電子制御装置の初期化方法であって、
前記補正値は、電源ＩＣの出力ばらつきを補正するための補正値であり、
前記複数の演算処理手段のうち、前記記憶手段が設けられた演算処理手段は、プラットフォーム層の初期化工程を実行した後に、前記記憶手段からの補正値の読み出し工程を実行し、該読み出し工程によって読み出した補正値を他の演算処理手段に対して送信する送信工程を実行し、前記送信工程の実行後に、該読み出し工程によって読み出した補正値を用いてアプリケーション層の初期化工程を実行し、
前記複数の演算処理手段のうち、前記記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化工程を実行した後に、前記記憶手段を備えた演算処理手段から前記補正値を受信するまで待機し、当該補正値の受信後に、受信した補正値を用いてアプリケーション層の初期化工程を実行し、
前記演算処理手段は、アプリケーション層の初期化処理が完了するとエンジン制御のアプリケーションを実行することを特徴とするエンジン制御用の電子制御装置の初期化方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理手段を備え、前記複数の演算処理手段の各々が入出力信号の補正に使用する補正値を、前記複数の演算処理手段のいずれかが記憶手段から読み出して他の演算処理手段に送信する電子制御装置およびその初期化方法に関し、特に、簡易な構成で複数の演算処理手段を高速に起動する電子制御装置およびその初期化方法に関するものである。
【背景技術】
【０００２】
近年、車両に電子制御機器（ＥＣＵ）を搭載し、車両の運行時に必要な種々の処理を電子制御することが行われている。たとえばエンジンにおけるガソリンの噴出の制御にＥＣＵを適用し、速度センサや水温センサなどに接続することで、車両の速度やエンジンの冷却水の温度に応じてガソリンの噴出量を制御することができる。
【０００３】
このＥＣＵでは、その内部に複数の演算処理手段（マイコン）を備えることで、高度な処理を安価なシステムで実現することができる。一方で、複数の演算処理手段を有するシステムでは、演算処理手段の間の協働を如何に効率化するかが重要である。
【０００４】
例えば、特許文献１に示されたマルチプロセッサシステムでは、副プロセッサよりも先に主プロセッサを起動させ、副プロセッサが起動するまでの規定時間内に、必要に応じて副プロセッサ用メモリに副プロセッサの起動プログラムを書き込むことにより、副プロセッサの暴走を回避する技術が開示されている。
【０００５】
また、特許文献２に示されたマルチプロセッサボードの立ち上げ方法では、複数の従処理装置からアクセス可能な共有の揮発性メモリに複数の従処理装置の初期プログラムを格納し、各従処理装置が同時または順次共有の揮発性メモリから初期プログラムをリードして初期処理をおこなうことで、初期プログラムを格納した読み出し専用の不揮発性メモリを不要としている。
【０００６】
さらに、ＤＭＡ（Direct Memory Access）などのシステム内の通信手段の高速化もシステム全体の効率化に有効である。たとえば、特許文献３は、転送制御条件、データ転送元アドレス、データ転送先アドレス、転送語数を含むデータ転送制御情報に従ってデータの境界を判定し、判定結果に基づいてデータの転送先又はデータのデータ転送元、転送語数を制御することにより、バッファの使用効率を向上する技術を開示している。
【０００７】
また、特許文献４に示されたプリンタ装置では、プリントデータが転送中であるか否かによってホスト装置からの通信データの送信方法を変更することで共通バスを有効利用している。
【０００８】
【特許文献１】特開２００２−３１２３３４号公報
【特許文献２】特開平８−８７４８１号公報
【特許文献３】特開平５−２８９９７９号公報
【特許文献４】特開２００３−４８３４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、アナログデータが入力信号として入力されるＥＣＵでは、入力信号の補正を行う必要がある。具体的には、各ＥＣＵの電源ＩＣは厳密には均一ではないので、電源ＩＣの供給する電圧を基準として入力信号の評価を行うと、電源ＩＣの出力ばらつきに依存する評価バラつきが生じる。そこで、入力信号の値を正確に評価するためには、電源ＩＣの供給電圧のバラつきを補正する必要が生じるのである。
【００１０】
入力信号に対して行うべき補正量は電源ＩＣに依存するので、ＥＣＵの組み立て時に補正値を決定し、ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）などの不揮発性の記憶媒体に格納しておく。そして、各演算処理手段（マイコンなど）の起動時にこの補正値を読み出して使用することで、入力信号の評価を正確に行うことができる。
【００１１】
ＥＣＵに複数の演算処理手段が存在する場合、各演算処理手段に専用の不揮発性記録媒体を設けることはコスト上昇と筐体の大型化に繋がるので、全ての演算処理手段が使用する補正値を一つの記憶媒体に格納しておき、演算処理手段の一つが補正値を読み出して他の演算処理手段に送信することが望ましい。
【００１２】
しかしながら、このように補正値を一つの記憶媒体に一元管理し、複数の演算処理手段に送信する構成では、各演算処理手段は補正値を受信するまでは入力信号を正しく処理できないこととなる。そのため、全ての演算処理手段が補正値を受信するまでＥＣＵを動作させなければ、起動時間が増大するという問題点が生じ、補正値の受信完了以前にＥＣＵを動作させたならば正確な入力信号を得られないことによる動作異常が発生するという問題点が生じていた。
【００１３】
そこで、複数の演算処理手段を有し、補正の必要なアナログ信号を使用するＥＣＵにおいて、起動を高速化し、かつ正確・安全に動作させることが従来の重要な課題となっていた。
【００１４】
この発明は、上述した従来技術による課題を解決するためになされたものであり、高速に起動し、正確・安全に動作する電子制御装置およびその初期化方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、本発明に係る電子制御装置およびその初期化方法によれば、電子制御装置は、複数の演算処理手段のうち記憶手段が設けられた演算処理手段がプラットフォーム層を初期化した後、電源ＩＣの出力ばらつきを補正する補正値を記憶手段から読み出して他の演算手段に送信し、記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行した後、補正値を受信するまでアプリケーション層の初期化を行わない。
【発明の効果】
【００１６】
本発明によれば、電子制御装置およびその初期化方法は、複数の演算処理手段のうち記憶手段が設けられた演算処理手段は、プラットフォーム層を初期化した後、記憶手段から読み出した補正値を他の演算手段に対して送信し、記憶手段が設けられていない演算処理手段は、プラットフォーム層の初期化を実行した後、補正値を受信するまでアプリケーション層の初期化を行わないので、高速かつ安全に起動する電子制御装置を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明に係る電子制御装置およびその初期化方法の好適な実施例を詳細に説明する。
【実施例１】
【００１８】
まず図１を参照し、本発明の実施例１である電子制御装置（ＥＣＵ）１の概要構成について説明する。同図に示すように本実施例１にかかるＥＣＵ１は、入力端子Ｔ１１〜Ｔ１４および入力端子Ｔ２１〜Ｔ２３を有する。また、ＥＣＵ１は、その内部にメインマイコン１０、サブマイコン２０、ＥＥＰＲＯＭ２を有する。
【００１９】
このＥＣＵ１は、例えば車両用のエンジン制御ＥＣＵであり、入力端子Ｔ１１〜Ｔ１４および入力端子Ｔ２１〜Ｔ２３には水温、吸気圧、吸気温、バッテリ電圧、油圧、油温、スロットル開度などを示す入力信号がアナログ電圧信号として入力される。
【００２０】
メインマイコン１０は、入力端子Ｔ１１〜Ｔ１４に入力されたアナログ信号を使用して演算処理をおこなう処理手段であり、サブマイコン２０は、入力端子Ｔ２１〜Ｔ２３に入力されたアナログ信号を使用して演算処理をおこなう処理手段である。
【００２１】
具体的には、メインマイコン１０は、その内部に入力処理部１３、補正処理部１２、主制御部１１およびＤＭＡコントローラ１４を有する。また、サブマイコン２０は、その内部に入力処理部２３、補正処理部２２、主制御部２１、ＤＭＡコントローラ２４およびＥＥＰＲＯＭドライバ２５を有する。さらに、ＥＥＰＲＯＭ２は、その内部にメインマイコン補正値２ａおよびサブマイコン補正値２ｂを記憶している。
【００２２】
ここで、メインマイコン補正値２ａは、メインマイコン１０が入力信号の補正に使用する値であり、ＥＣＵ１の製造時に決定され、ＥＥＰＲＯＭ２に記憶されたものである。同様に、サブマイコン補正値２ｂは、サブマイコン２０が入力信号の補正に使用する値であり、ＥＣＵ１の製造時に決定され、ＥＥＰＲＯＭ２に記憶されたものである。
【００２３】
上述したように、メインマイコン１０およびサブマイコン２０は、アナログ信号を入力されて演算処理をおこなうが、ＥＣＵに搭載される電源ＩＣの供給電圧は厳密には均一でないので、ＥＣＵの製造時、すなわちＥＣＵに電源ＩＣを搭載した時点で必要な補正値を算出してＥＥＰＲＯＭ２に記憶させ、電源ＩＣの出力ばらつきを補正することで入力信号の値を正確に評価する。
【００２４】
サブマイコン２０内部の入力処理部２３は、入力端子Ｔ２１〜２３から入力されたアナログ電圧信号を補正処理部２２に出力する。また、ＥＥＰＲＯＭドライバ２５は、ＥＥＰＲＯＭ２からメインマイコン補正値２ａおよびサブマイコン補正値２ｂを読み出して補正処理部２２に出力する。
【００２５】
補正処理部２２は、サブマイコン補正値２ｂを使用し、入力処理部２３から入力された入力信号の値を補正して主制御部２１に出力する。また、補正処理部２２は、メインマイコン補正値２ａをＤＭＡコントローラ２４に出力する。
【００２６】
ＤＭＡコントローラ２４は、サブマイコン２０とメインマイコン１０との間の通信を行う通信手段であり、具体的にはＤＭＡ転送方式でデータ通信を行う。このＤＭＡコントローラ２４によるデータ通信は、メインマイコン１０とサブマイコン２０との間の各種データのやり取りに使用し、メインマイコン補正値２ａもＤＭＡコントローラ２４によって送信される。
【００２７】
主制御部２１は、補正された入力信号をもとに演算処理を実行する演算処理手段である。具体的には主制御部２１は、ＣＰＵ（Central Processing Unit）とメモリによって構成され、エンジン制御を行うアプリケーションを実行する。
【００２８】
メインマイコン１０内部の入力処理部１３は、入力端子Ｔ１１〜１４から入力されたアナログ電圧信号を補正処理部１２に出力する。ＤＭＡコントローラ１４は、ＤＭＡコントローラ２４から受信したメインマイコン補正値２ａを補正処理部１２に出力する。
【００２９】
補正処理部１２は、メインマイコン補正値２ａを使用し、入力処理部１３から入力された入力信号の値を補正して主制御部１１に出力する。主制御部１１は、補正された入力信号をもとに演算処理を実行する演算処理手段である。具体的には主制御部１１は、ＣＰＵ（Central Processing Unit）とメモリによって構成され、エンジン制御を行うアプリケーションを実行する。
【００３０】
つぎに、メインマイコン１０とサブマイコン２０との間で行われるＤＭＡ通信について説明する。ＤＭＡによるデータ送受信では、送信側と受信側に同一の構造を持つバッファを設け、送信側はバッファの構造に従ってデータを書き込んで送信する。そのため、受信側ではバッファの構造からどの位置にどのデータが書き込まれているかを知ることができる。
【００３１】
ＥＣＵ１では、サブマイコン２０がメインマイコン補正値２ａを読み出し、ＤＭＡによって送信する。このため、メインマイコン１０専用のＥＥＰＲＯＭを不要とし、構成を簡易にすることができる。しかし一方でメインマイコン１０の起動時には、メインマイコン補正値２ａを受信するまで初期化を完了することができない。さらに、初期化を行う際に送信する必要があるのはメインマイコン補正値２ａのみである。
【００３２】
この構成で、従来のように単一のバッファを有するＤＭＡコントローラでデータ通信を行うとすると、ＤＭＡ通信にはバッファの容量分の時間が必要となるので、メインマイコン１０の初期化に要する時間が増大する。
【００３３】
そこで、本発明にかかるＥＣＵ１では、ＤＭＡコントローラ１４，２４に初期化用バッファ１４ａ，２４ａと通常用バッファ１４ｂ，２４ｂとを設け、初期化時と初期化処理後で使用するバッファを切り替える構成としている。ＤＭＡコントローラ１４，２４におけるバッファの構造例を図２に示す。
【００３４】
図２−１は、初期化用バッファ１４ａの構造を説明する説明図であり、図２−２は通常用バッファ２４ａの構造を説明する説明図である。なお、初期化用バッファ２４ａおよび通常用バッファ２４ｂの構造は、それぞれ初期化用バッファ１４ａ、通常用バッファ１４ｂと同様である。
【００３５】
初期化用バッファ１４ａは、図２−１に示すようにメインマイコン補正値２ａとチェックコードのみを有する。一方、通常用バッファ１４ｂは、図２−２に示すように、メインマイコン補正値２ａ、チェックコードに加え、水温データ、油温データなどメインマイコン１０とサブマイコン２０とが起動後の通常処理で通信する各種データのための領域を有する。
【００３６】
このように、初期化用バッファ１４ａ，２４ａと通常用バッファ１４ｂ，２４ｂとを切替えて使用し、初期化用バッファ１４ａ，２４ａには起動に必要なメインマイコン補正値２ａと、通信が正常に行われたことを確認するためのチェックコードのみを持たせることでメインマイコン１０の初期化を高速化することができる。また、通常用バッファ１４ｂ，２４ｂには起動後の処理に必要な各種データのための領域を持たせているので、起動後の通信処理において動作が制限されることはない。
【００３７】
つぎに、ＥＣＵ１の起動時の処理について説明する。図３は、ＥＣＵ１の起動時における処理動作を説明するフローチャートである。同図に示したフローは、ＥＣＵ１の電源投入時に開始され、メインマイコン１０、サブマイコン２０はそれぞれ独立に初期化処理を開始する。メインマイコン１０は、まず、プラットフォーム層を初期化し（ステップＳ１０１）、その後メインマイコン補正値２ａの受信待ちを開始する（ステップＳ１０２）。
【００３８】
メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信したならば（ステップＳ１０３，Ｙｅｓ）、アプリケーション層を初期化して（ステップＳ１０４）、初期化処理を終了する。
【００３９】
一方、サブマイコン２０は、まず、プラットフォーム層を初期化し（ステップＳ２０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出す（ステップＳ２０２）。サブマイコン２０は、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン１０に送信する（ステップＳ２０３）。この時、ＤＭＡコントローラ２４は、初期化用バッファ２４ａを使用する。その後、サブマイコン２０は、アプリケーション層を初期化して（ステップＳ２０４）、初期化処理を終了する。
【００４０】
このように、サブマイコン２０は、その初期化処理の中でメインマイコン１０にメインマイコン補正値２ａを送信し、メインマイコン１０はメインマイコン補正値２ａの受信を待って初期化処理を行うが、メインマイコン補正値２ａの送信に初期化用バッファ１４ａ，２４ａを使用することでメインマイコン１０の待ち時間を最小限に抑えることができる。
【００４１】
ここで、メインマイコン１０とサブマイコン２０のＤＭＡの起動は、どちらから行ってもよい。図４は、サブマイコン２０からＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。同図に示したフローは、図３に示したフローと同様に、ＥＣＵ１の電源投入時に開始される処理である。メインマイコン１０は、まず、プラットフォーム層を初期化し（ステップＳ３０１）、その後、サブマイコン２０からのＤＭＡ起動待ちを開始する（ステップＳ３０２）。
【００４２】
メインマイコン１０は、サブマイコン２０がＤＭＡによってメインマイコン補正値２ａを送信した場合に、ＤＭＡを起動し、メインマイコン補正値２ａを受信する（ステップＳ３０３）。その後、メインマイコン１０は、チェックコードを用いてメインマイコン補正値２ａを正常に受信したか否かを判定する（ステップＳ３０４）。
【００４３】
メインマイコン補正値２ａを正常に受信していなければ（ステップＳ３０４，Ｎｏ）、メインマイコン１０は、再度ＤＭＡ起動待ちを開始する（ステップＳ３０２）。一方、メインマイコン補正値２ａを正常に受信したならば（ステップＳ３０４，Ｙｅｓ）、メインマイコン１０は、サブマイコン２０に受信完了通知を送信し（ステップＳ３０５）、アプリケーション層を初期化して（ステップＳ３０６）、初期化処理を終了する。
【００４４】
一方、サブマイコン２０は、まず、プラットフォーム層を初期化し（ステップＳ４０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出す（ステップＳ４０２）。その後、サブマイコン２０はＤＭＡを起動し（ステップＳ４０３）、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン１０に送信する（ステップＳ４０４）。
【００４５】
そして、サブマイコン２０は、メインマイコン１０から受信完了通知を受信したか否かを判定し（ステップＳ４０５）、メインマイコン１０から受信完了通知を受信していなければ（ステップＳ４０５，Ｎｏ）、再度メインマイコン補正値２ａをメインマイコン１０に送信する（ステップＳ４０４）。
【００４６】
一方、メインマイコン１０から受信完了通知を受信したならば（ステップＳ４０５，Ｙｅｓ）、サブマイコン２０は、アプリケーション層を初期化して（ステップＳ４０６）、初期化処理を終了する。
【００４７】
続いて、メインマイコン１０からＤＭＡを起動する場合の起動処理を説明する。図５は、メインマイコン１０からＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。なお、同図に示したフローは、図３に示したフローと同様に、ＥＣＵ１の電源投入時に開始される処理である。メインマイコン１０は、まず、プラットフォーム層を初期化し（ステップＳ５０１）、その後、サブマイコン２０からの送信許可待ちを開始する（ステップＳ５０２）。
【００４８】
メインマイコン１０は、サブマイコン２０から送信許可を受信した場合（ステップＳ５０３）に、ＤＭＡを初期化するとともに、サブマイコン２０にＤＭＡ初期化コードを送信する（ステップＳ５０４）。そして、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ５０５）、正常に受信したか否かを判定する（ステップＳ５０６）。
【００４９】
メインマイコン補正値２ａを正常に受信していなければ（ステップＳ５０６，Ｎｏ）、メインマイコン１０は、再度送信許可待ちを開始する（ステップＳ５０２）。一方、メインマイコン補正値２ａを正常に受信したならば（ステップＳ５０６，Ｙｅｓ）、メインマイコン１０は、サブマイコン２０に受信完了通知を送信し（ステップＳ５０７）、アプリケーション層を初期化して（ステップＳ５０８）、初期化処理を終了する。
【００５０】
一方、サブマイコン２０は、まず、プラットフォーム層を初期化し（ステップＳ６０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出して（ステップＳ６０２）、メインマイコン１０に送信許可を送信する（ステップＳ６０３）。そして、メインマイコン１０が送信したＤＭＡ初期化コードを受信してＤＭＡを起動し（ステップＳ６０４）、メインマイコン補正値２ａをメインマイコン１０に送信する（ステップＳ６０５）。
【００５１】
その後、サブマイコン２０は、メインマイコン１０から受信完了通知を受信したか否かを判定し（ステップＳ６０６）、メインマイコン１０から受信完了通知を受信していなければ（ステップＳ６０６，Ｎｏ）、再度メインマイコン補正値２ａをメインマイコン１０に送信する（ステップＳ６０５）。
【００５２】
一方、メインマイコン１０から受信完了通知を受信したならば（ステップＳ６０６，Ｙｅｓ）、サブマイコン２０は、アプリケーション層を初期化して（ステップＳ６０７）、初期化処理を終了する。
【００５３】
つぎに、ＥＣＵ１の通常処理について説明する。ＥＣＵ１に電源を投入し、メインマイコン１０およびサブマイコン２０が起動した後も、サブマイコン２０は定期的にＥＥＰＲＯＭ２からメインマイコン補正値２ａおよびサブマイコン補正値２ｂを読み出し、メインマイコン補正値２ａをメインマイコン１０に送信する。メインマイコン１０側では、常に受信した最新のメインマイコン補正値２ａを使用することで、補正値のデータ化けなどによる動作異常を防止することができる。
【００５４】
このＥＣＵ１の通常処理動作を、図６に示す。図６に示したフローは、ＥＣＵ１の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ１に電源が投入された場合に開始される。メインマイコン１０は、初期化処理を実行した（ステップＳ７０１）後、メインループを開始する（ステップＳ７０２）。なお、ステップＳ７０１に示した初期化処理は、図３〜５で説明した処理を用いればよい。
【００５５】
メインループ開始（ステップＳ７０２）後、メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ７０３）、補正処理部１２が使用する補正値を、受信した値に更新して（ステップＳ７０４）、メインループを終了する（ステップＳ７０５）。このステップＳ７０２〜Ｓ７０５に示したメインループは、ＥＣＵ１の電源が落とされるか、メインマイコン１０が再起動されるまで繰り返し実行される。
【００５６】
一方、サブマイコン２０は、初期化処理を実行した（ステップＳ８０１）後、メインループを開始する（ステップＳ８０２）。なお、ステップＳ８０１に示した初期化処理は、図３〜５で説明した処理を用いればよい。
【００５７】
メインループ開始（ステップＳ８０２）後、サブマイコン２０は、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出し（ステップＳ８０３）、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン１０に送信する（ステップＳ８０４）。この時、ＤＭＡコントローラ２４は、通常用バッファ２４ｂを使用する。
【００５８】
その後、サブマイコン２０は、補正処理部２２が使用する補正値を、ＥＥＰＲＯＭ２から読み出した値に更新して（ステップＳ８０５）、メインループを終了する（ステップＳ８０６）。このステップＳ８０２〜Ｓ８０６に示したメインループは、ＥＣＵ１の電源が落とされるか、サブマイコン２０が再起動されるまで繰り返し実行される。
【００５９】
ところで、メインマイコン１０の異常やサブマイコン２０の異常、ＥＥＰＲＯＭ２の故障、さらにはＤＭＡ通信線のノイズなどにより、補正値が正常ではない場合には、異常な補正値を使用することによる誤動作を防止するため、フェールセーフを行うことが望ましい。
【００６０】
補正値が正常の範囲内であるか否かは、例えば、ＥＣＵ１に搭載した電源ＩＣの保証範囲内にその値が収まっているか否かを判定することで検出することができる。たとえば、電源ＩＣの精度が±５％である場合、補正値が０．９５以上１．０５以下であれば正常であると判定し、この範囲を逸脱する場合には異常と判定する。なお、ここで補正処理は、補正値を乗ずることで行うものとする。
【００６１】
さらに、補正値の異常がサブマイコン２０の動作異常に起因するものである場合、メインマイコン１０からサブマイコン２０を再起動することで復帰することが可能である。図７は、サブマイコン２０のリセットによるフェールセーフ処理を説明するフローチャートである。このフローは、ＥＣＵ１の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ１に電源が投入された場合に開始される。メインマイコン１０は、初期化処理を実行した（ステップＳ９０１）後、メインループを開始する（ステップＳ９０２）。ここで、ステップＳ９０１に示した初期化処理は、図３〜５で説明した処理と同様の処理を用いればよい。
【００６２】
メインループ開始（ステップＳ９０２）後、メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ９０３）、受信した補正値が所定の範囲内であるか否かを判定する（ステップＳ９０４）。その結果、受信した補正値が所定の範囲を逸脱していれば（ステップＳ９０４，Ｎｏ）、メインマイコン１０は、サブマイコン２０をリセット、すなわち再起動し（ステップＳ９０５）、再度ステップＳ９０４に移行する。
【００６３】
一方、受信した補正値が所定の範囲内であれば（ステップＳ９０４，Ｙｅｓ）、メインマイコン１０は、補正処理部１２が使用する補正値を受信した値に更新して（ステップＳ９０６）、メインループを終了する（ステップＳ９０７）。このステップＳ９０２〜Ｓ９０７に示したメインループは、ＥＣＵ１の電源が落とされるか、メインマイコン１０が再起動されるまで繰り返し実行される。
【００６４】
また、他のフェールセーフ処理として、補正値の異常時には予め定めたフェールセーフ値を補正値として用いてもよい。このフェールセーフ値は、マイコンを安全に制御可能な値とする。図８は、補正値の異常時にフェールセーフ値を用いる処理を説明するフローチャートである。このフローは、ＥＣＵ１の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ１に電源が投入された場合に開始される。メインマイコン１０は、初期化処理を実行した（ステップＳ１００１）後、メインループを開始する（ステップＳ１００２）。ここで、ステップＳ１００１に示した初期化処理は、図３〜５で説明した処理と同様の処理を用いればよい。
【００６５】
メインループ開始（ステップＳ１００２）後、メインマイコン１０は、サブマイコン２０からメインマイコン補正値２ａを受信し（ステップＳ１００３）、受信した補正値が所定の範囲内であるか否かを判定する（ステップＳ１００４）。その結果、受信した補正値が所定の範囲を逸脱していれば（ステップＳ１００４，Ｎｏ）、メインマイコン１０は、補正処理部１２が使用する補正値をフェールセーフ値に更新して（ステップＳ１００６）、メインループを終了する（ステップＳ１００７）。
【００６６】
一方、受信した補正値が所定の範囲内であれば（ステップＳ１００４，Ｙｅｓ）、メインマイコン１０は、補正処理部１２が使用する補正値を受信した値に更新して（ステップＳ１００５）、メインループを終了する（ステップＳ１００７）。このステップＳ１００２〜Ｓ１００７に示したメインループは、ＥＣＵ１の電源が落とされるか、メインマイコン１０が再起動されるまで繰り返し実行される。
【００６７】
このように、補正値に異常がある場合にはフェールセーフ処理を実行することで、ＥＣＵ１の動作異常を引き起こすことなく、安全に動作させることができる。なお、図７および図８のフローチャートでは、通常動作時における補正値の異常検出について説明したが、初期化処理中においても同様の処理によって補正値の異常を検出し、フェールセーフ処理を実行可能である。
【００６８】
また、図８のフローチャートでは、メインマイコン１０における処理を例に説明したが、サブマイコン２０においても同様に、ＥＥＰＲＯＭ２から読み出した補正値が所定の範囲内であるか否かを判定し、所定の範囲を逸脱する場合にはフェールセーフ値を用いて補正処理をおこなうことができる。
【００６９】
上述してきたように、本実施例１では、ＤＭＡコントローラに初期化用のバッファと通常用のバッファとをそれぞれ設け、初期化処理時には補正値とチェックコードのみを有する初期化用バッファを使用してメインマイコン１０への補正値の送信を行うので、メインマイコン１０の起動、ひいてはＥＣＵ１の起動を高速化することができる。
【００７０】
また、補正値に異常が発生した場合には、自動的にフェールセーフを行うことで、ＥＣＵの動作異常を引き起こすことなく、安全に動作させることができる。
【００７１】
さらに、メインマイコンにおけるアプリケーション層の初期化を、サブマイコンからの補正値の受信完了を待ってから行うので、メインマイコンを誤動作させることなく起動することができる。
【００７２】
すなわち、プラットフォーム層の初期化が行われるまではＤＭＡ通信は不能であるので、プラットフォーム層の初期化が行われていないマイコンに対してＤＭＡ通信を行うと、送信したデータが正常に受信したか否かの判定が困難となり、好ましくない。そのため、従来の技術では、補正値を受信する側のマイコン（本実施例ではメインマイコン）の方が送信する側のマイコン（本実施例ではサブマイコン）よりも早くプラットフォーム層の初期化が完了するように、送信側マイコンに時間のかかるＥＥＰＲＯＭの読出し処理を行わせたり、受信側マイコンを先に起動させて送信側マイコンの起動指示を行わせていた。
【００７３】
しかしながら、この従来の技術によって受信側のマイコンの方が早くプラットフォーム層の初期化が完了するように設定すると、その後に連続して行われるアプリケーション層の初期化が補正値を受信していない状態で行われてしまう危険がある。
【００７４】
そこで、本実施例のように、受信側マイコンのプラットフォーム層の初期化が完了した後、補正値を受信するまではアプリケーション層の初期化を行わないようにすることで、ＤＭＡ通信と、アプリケーション層の初期化とをともに正常に行うことができる。
【００７５】
ここで、送信側マイコンのプラットフォーム層の初期化、すなわち送信側マイコンの起動を、受信側マイコンから指示することによって、複数のマイコンの起動時間を最適化し、高速かつ安全に起動することが可能となる。
【実施例２】
【００７６】
つぎに、本発明の実施例２について説明する。図９は、本発明の実施例２である電子制御装置（ＥＣＵ）の概要構成を示す概要構成図である。本実施例２にかかるＥＣＵ３は、メインマイコン３０およびサブマイコン４０にそれぞれＳＲＡＭ（Static Random Access Memory）３２，４２を設け、補正処理部３１，４１はＳＲＡＭ３２，４２に補正値を記憶させ、随時読み出して使用する。その他の構成および動作は、実施例１に示したＥＣＵ１と同様であるので、同一の構成要素には同一の符号を付して説明を省略する。
【００７７】
サブマイコン４０内部の補正処理部４１は、サブマイコン補正値２ｂをＳＲＡＭ４２に記憶させる。その後、入力処理部２３から入力された入力信号の値を補正する場合には、サブマイコン補正値２ｂをＳＲＡＭ４２から読み出して使用する。また、補正処理部４２は、メインマイコン補正値２ａをＤＭＡコントローラ２４に出力する。
【００７８】
同様に、メインマイコン３０内部の補正処理部３１は、ＤＭＡコントローラ１４を介して受信したメインマイコン補正値２ａをＳＲＡＭ３２に記憶させる。その後、入力処理部１３から入力された入力信号の値を補正する場合には、メインマイコン補正値２ａをＳＲＡＭ３２から読み出して使用する。
【００７９】
つぎに、ＥＣＵ３の起動時の処理について説明する。図１０は、ＥＣＵ３の起動時における処理動作を説明するフローチャートである。同図に示したフローは、ＥＣＵ３の電源投入時に開始され、メインマイコン３０、サブマイコン４０はそれぞれ独立に初期化処理を開始する。メインマイコン３０は、まず、プラットフォーム層を初期化し（ステップＳ１１０１）、その後メインマイコン補正値２ａの受信待ちを開始する（ステップＳ１１０２）。
【００８０】
メインマイコン３０は、サブマイコン４０からメインマイコン補正値２ａを受信したならば（ステップＳ１１０３，Ｙｅｓ）、受信したメインマイコン補正値２ａをＳＲＡＭ３２に保存した（ステップＳ１１０４）後、アプリケーション層を初期化して（ステップＳ１１０５）、初期化処理を終了する。
【００８１】
一方、サブマイコン４０は、まず、プラットフォーム層を初期化し（ステップＳ１２０１）、その後、メインマイコン補正値２ａおよびサブマイコン補正値２ｂをＥＥＰＲＯＭ２から読み出す（ステップＳ１２０２）。さらに、サブマイコン４０は、メインマイコン補正値２ａをＤＭＡコントローラ２４によってメインマイコン３０に送信する（ステップＳ１２０３）。この時、ＤＭＡコントローラ２４は、初期化用バッファ２４ａを使用する。その後、サブマイコン４０は、サブマイコン補正値２ｂをＳＲＡＭ４２に保存した（ステップＳ１２０４）後、アプリケーション層を初期化して（ステップＳ１２０５）、初期化処理を終了する。
【００８２】
つぎに、ＥＣＵ３の通常処理について説明する。ＥＣＵ３に電源を投入し、メインマイコン３０およびサブマイコン４０が起動した後、メインマイコン３０はＳＲＡＭ３２からメインマイコン補正値２ａを読み出して使用する。また、サブマイコン４０は、ＳＲＡＭ４２からサブマイコン補正値２ｂを読み出して使用する。
【００８３】
このＥＣＵ３の通常処理動作を、図１１に示す。図１１に示したフローは、ＥＣＵ３の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ３に電源が投入された場合に開始される。メインマイコン３０は、初期化処理を実行した（ステップＳ１３０１）後、メインループを開始する（ステップＳ１３０２）。なお、ステップＳ１３０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【００８４】
メインループ開始（ステップＳ１３０２）後、メインマイコン３０は、ＳＲＡＭ３２からメインマイコン補正値２ａを読み出して入力信号の補正処理を行い（ステップＳ１３０３）、メインループを終了する（ステップＳ１３０４）。このステップＳ１３０２〜Ｓ１３０４に示したメインループは、ＥＣＵ３の電源が落とされるか、メインマイコン３０が再起動されるまで繰り返し実行される。
【００８５】
一方、サブマイコン４０は、初期化処理を実行した（ステップＳ１４０１）後、メインループを開始する（ステップＳ１４０２）。なお、ステップＳ１４０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【００８６】
メインループ開始（ステップＳ１４０２）後、サブマイコン４０は、ＳＲＡＭ３２からサブマイコン補正値２ｂを読み出して入力信号の補正処理を行い（ステップＳ１４０３）、メインループを終了する（ステップＳ１４０４）。このステップＳ１４０２〜Ｓ１４０４に示したメインループは、ＥＣＵ３の電源が落とされるか、サブマイコン４０が再起動されるまで繰り返し実行される。
【００８７】
ところで、図１１に示したフローでは、起動時にＳＲＡＭに記憶させた補正値を随時読み出して使用しているが、通常動作中にサブマイコン４０が定期的にＥＥＰＲＯＭ２から補正値を読み出してＳＲＡＭに記憶した補正値と比較し、ＳＲＡＭに記憶した補正値に異常がないかを判定するように動作させても良い。
【００８８】
図１２は、ＳＲＡＭに補正値を記憶するとともに、ＥＥＰＲＯＭから定期的に補正値を読み出してＳＲＡＭの記憶内容を更新する場合におけるＥＣＵ３の通常処理について説明するフローチャートである。このフローチャートは、ＥＣＵ３の電源投入時から通常処理までの動作を説明するものであり、ＥＣＵ３に電源が投入された場合に開始される。メインマイコン３０は、初期化処理を実行した（ステップＳ１５０１）後、メインループを開始する（ステップＳ１５０２）。なお、ステップＳ１５０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【００８９】
メインループ開始（ステップＳ１５０２）後、メインマイコン３０は、ＳＲＡＭ３２からメインマイコン補正値２ａを読み出す（ステップＳ１５０３）。その後、メインマイコン３０は、サブマイコン４０からメインマイコン補正値２ａを受信し（ステップＳ１５０４）、ＳＲＡＭ３２から読み出した補正値とサブマイコン４０から受信した補正値とが一致するか否かを判定する（ステップＳ１５０５）。
【００９０】
ＳＲＡＭ３２から読み出した補正値とサブマイコン４０から受信した補正値とが一致しない場合（ステップＳ１５０５，Ｎｏ）、メインマイコン３０は、サブマイコン４０から受信した補正値をＳＲＡＭ３２に書き込んで更新する（ステップＳ１５０６）。
【００９１】
ＳＲＡＭ３２の更新（ステップＳ１５０６）、もしくはＳＲＡＭ３２から読み出した補正値とサブマイコン４０から受信した補正値とが一致した場合（ステップＳ１５０５，Ｙｅｓ）、メインマイコン３０は、メインループを終了する（ステップＳ１５０７）。このステップＳ１５０２〜Ｓ１５０７に示したメインループは、ＥＣＵ３の電源が落とされるか、メインマイコン３０が再起動されるまで繰り返し実行される。
【００９２】
一方、サブマイコン４０は、初期化処理を実行した（ステップＳ１６０１）後、メインループを開始する（ステップＳ１６０２）。なお、ステップＳ１６０１に示した初期化処理は、図１０で説明した処理を用いればよい。
【００９３】
メインループ開始（ステップＳ１６０２）後、サブマイコン４０は、ＳＲＡＭ４２からサブマイコン補正値２ｂを読み出す（ステップＳ１６０３）。その後、サブマイコン４０は、ＥＥＰＲＯＭ２からメインマイコン補正値２ａおよびサブマイコン補正値２ｂを読み出し（ステップＳ１６０４）、メインマイコン補正値２ａをメインマイコン３０に送信する（ステップＳ１６０５）。さらに、サブマイコン４０は、ＳＲＡＭ４２から読み出したサブマイコン補正値２ｂとＥＥＰＲＯＭ２から読み出したサブマイコン補正値２ｂとが一致するか否かを判定する（ステップＳ１６０６）。
【００９４】
ＳＲＡＭ４２から読み出したサブマイコン補正値２ｂとＥＥＰＲＯＭ２から読み出したサブマイコン補正値２ｂとが一致しない場合（ステップＳ１６０６，Ｎｏ）、サブマイコン４０は、ＥＥＰＲＯＭ２から読み出した補正値をＳＲＡＭ４２に書き込んで更新する（ステップＳ１６０７）。
【００９５】
ＳＲＡＭ４２の更新（ステップＳ１６０７）、もしくはＳＲＡＭ４２から読み出した補正値とＥＥＰＲＯＭ２から読み出した補正値とが一致した場合（ステップＳ１６０６，Ｙｅｓ）、サブマイコン４０は、メインループを終了する（ステップＳ１６０８）。このステップＳ１６０２〜Ｓ１６０８に示したメインループは、ＥＣＵ３の電源が落とされるか、サブマイコン４０が再起動されるまで繰り返し実行される。
【００９６】
上述してきたように、本実施例２では、メインマイコン補正値２ａとサブマイコン補正値２ｂをそれぞれＳＲＡＭ３２，４２に記憶させ、随時読み出して使用することで、補正値における異常発生を抑止し、メインマイコン３０およびサブマイコン４０を正確に動作させることができる。
【００９７】
さらに、ＥＥＰＲＯＭ２から定期的に補正値を読み出してＳＲＡＭに記憶した値と比較することで、ＳＲＡＭに記憶した補正値に異常が発生した場合にも自動的に修正し、正常な補正値を用いて補正処理を行うことができる。
【００９８】
なお、本実施例２においても実施例１と同様のフェールセーフ処理をおこなうことができ、ＥＣＵ３の動作における安全性をさらに高めることができる。
【実施例３】
【００９９】
上記の実施例１，２では、ＥＣＵが２つのマイコンを備えた構成について説明したが、本発明の実施はこれに限定されるものではなく、ＥＣＵ内に所望の数のマイコンを設けることができるものである。
【０１００】
また、上記の実施例１，２では、サブマイコンにＥＥＰＲＯＭを接続し、ＥＥＰＲＯＭからの補正値の読み出しとメインマイコンへの送信をサブマイコンに担わせていたが、たとえばメインマイコンにＥＥＰＲＯＭを接続して補正値を読み出させ、メインマイコンがサブマイコンに補正値を送信する構成としてもよい。
【０１０１】
図１３は、本発明の実施例３である電子制御装置（ＥＣＵ）の概要構成を示す概要構成図である。実施例３にかかるＥＣＵ４は、その内部にメインマイコン５０、サブマイコン６０，７０，８０およびＥＥＰＲＯＭ５を備えている。
【０１０２】
メインマイコン５０は、入力端子Ｔ５１〜Ｔ５４に入力されたアナログ信号を使用して演算処理をおこなう処理手段であり、サブマイコン６０は、入力端子Ｔ６１〜Ｔ６３に入力されたアナログ信号を使用して演算処理をおこなう処理手段である。同様に、サブマイコン７０，８０は、それぞれ入力端子Ｔ７１〜Ｔ７３、入力端子Ｔ８１〜Ｔ８３に入力されたアナログ信号を使用して演算処理をおこなう処理手段である。
【０１０３】
ＥＥＰＲＯＭ５は、メインマイコン５０が入力信号の補正に使用するメインマイコン補正値５ａ、サブマイコン６０が入力信号の補正に使用するサブマイコン補正値５ｂ、サブマイコン７０が入力信号の補正に使用するサブマイコン補正値５ｃ、サブマイコン８０が入力信号の補正に使用するサブマイコン補正値５ｄを記憶している。
【０１０４】
また、メインマイコン５１はその内部にＤＭＡコントローラ５１を、サブマイコン６０，７０，８０はその内部にそれぞれＤＭＡコントローラ６１，７１，８１を備えている。メインマイコン５０およびサブマイコン６０，７０，８０のその他の内部構成や動作については実施例１，２と同様であるので、ここでは図示および説明を省略する。
【０１０５】
メインマイコン５０は、ＥＥＰＲＯＭ５からメインマイコン補正値５ａ、サブマイコン補正値５ｂ〜５ｄを読み出す。その後、メインマイコン補正値５ａを用いて入力信号の補正を行うと共に、ＤＭＡコントローラ５１を介してサブマイコン６０〜８０にそれぞれサブマイコン補正値５ｂ〜５ｄを送信する。
【０１０６】
サブマイコン６０は、ＤＭＡコントローラ６１を介して受信したサブマイコン補正値５ｂを用いて入力信号の補正を行う。同様に、サブマイコン７０，８０は、それぞれＤＭＡコントローラ７１，８１を介して受信したサブマイコン補正値５ｃ，５ｄを用いて入力信号の補正を行う。
【０１０７】
このようにＥＣＵの内部に３以上のマイコンを搭載した場合や、メインマイコンが補正値の読み出しと他のマイコンへの送信を行ったとしても、実施例１，２における場合と同様に、起動を高速化し、正確かつ安全に動作させることができる。
【０１０８】
なお、以上実施例１〜３では、入力信号のアナログ電圧の補正を例に説明を行ったが、出力信号における補正においても同様の効果を得ることが可能であるのは言うまでもない。
【産業上の利用可能性】
【０１０９】
以上のように、本発明にかかる電子制御装置およびその初期化方法は、複数のマイコンを有するＥＣＵに有用であり、特に、簡易な構成で起動を高速化し、正確かつ安全な動作が必要なＥＣＵに適している。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施例１であるＥＣＵの概要構成を示す概要構成図である。
【図２−１】図１に示した初期化用バッファの構造を説明する説明図である。
【図２−２】図１に示した通常用バッファの構造を説明する説明図である。
【図３】図１に示したＥＣＵの起動時における処理動作を説明するフローチャートである。
【図４】サブマイコンからＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。
【図５】メインマイコン１０からＤＭＡを起動する場合の起動処理をさらに詳細に説明するフローチャートである。
【図６】図１に示したＥＣＵの起動後における処理動作を説明するフローチャートである。
【図７】サブマイコンのリセットによるフェールセーフ処理を説明するフローチャートである。
【図８】補正値の異常時にフェールセーフ値を用いる処理を説明するフローチャートである。
【図９】本発明の実施例２であるＥＣＵの概要構成を示す概要構成図である。
【図１０】図９に示したＥＣＵの起動時における処理動作を説明するフローチャートである。
【図１１】図９に示したＥＣＵの起動後における処理動作を説明するフローチャートである。
【図１２】ＳＲＡＭに補正値を記憶するとともに、ＥＥＰＲＯＭから定期的に補正値を読み出してＳＲＡＭの記憶内容を更新する場合におけるＥＣＵの通常処理について説明するフローチャートである。
【図１３】本発明の実施例３であるＥＣＵの概要構成を示す概要構成図である。
【符号の説明】
【０１１１】
１，３，４    ＥＣＵ
２，５    ＥＥＰＲＯＭ
２ａ，５ａ    メインマイコン補正値
２ｂ，５ｂ〜５ｄ    サブマイコン補正値
１０，３０，５０    メインマイコン
１１，２１    主制御部
１２，２２    補正処理部
１３，２３    入力処理部
１４，２４，５１，６１，７１，８１    ＤＭＡコントローラ
１４ａ，２４ａ    初期化用バッファ
１４ｂ，２４ｂ    通常用バッファ
２０，４０，６０，７０，８０    サブマイコン
３２，４２    ＳＲＡＭ
２５    ＥＥＰＲＯＭドライバ
Ｔ１１〜Ｔ１４，Ｔ２１〜Ｔ２３，Ｔ５１〜Ｔ５４，Ｔ６１〜Ｔ６３，Ｔ７１１〜Ｔ７３，Ｔ８１〜Ｔ８３    入力端子