(57)【特許請求の範囲】
【請求項１】
電気的に記憶内容の消去及び書き込みが可能で、且つ、記憶内容の消去が予め定められたブロック毎に行える読み出し専用の不揮発性メモリを備えると共に、
通常時には、前記不揮発性メモリに記憶された制御プログラム及び制御データに従って所定の制御対象を制御し、予め定められた書換条件が成立した場合には、外部から与えられる前記不揮発性メモリの各ブロック毎の消去要求に応じて該当するブロックの記憶内容を消去する消去処理を実行すると共に、記憶内容を消去したブロックに外部から送信されて来る新たなデータを書き込むことにより、前記不揮発性メモリの記憶内容を書き換えるように構成され、
更に、前記消去処理の実行回数を、前記不揮発性メモリの書き換え回数として計数すると共に、その計数した回数を不揮発性の記憶部に記憶させる計数手段を備えた電子制御装置であって、
前記計数手段は、当該電子制御装置が初期状態から継続して動作している期間中に、前記消去処理が複数のブロックについて夫々実行されても、前記消去処理の実行回数を計数する計数動作を１回のみ行うように構成されていること、
を特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記計数手段は、当該電子制御装置が初期状態から動作を開始して最初に前記消去処理を実行した場合にのみ、前記計数動作を行うように構成されていること、
を特徴とする電子制御装置。
【請求項３】
請求項２に記載の電子制御装置において、
前記計数手段は、当該電子制御装置が初期状態から動作を開始して最初に前記消去要求を受けた場合にのみ、前記計数動作を行うように構成されていること、
を特徴とする電子制御装置。
【請求項４】
請求項１ないし請求項３の何れかに記載の電子制御装置において、
前記記憶部に記憶された回数が予め定められた所定値に達しているか否かを判定し、肯定判定した場合に、その旨を外部へ報知する報知手段を備えたこと、
を特徴とする電子制御装置。
【請求項５】
電気的に記憶内容の消去及び書き込みが可能で、且つ、記憶内容の消去が予め定められたブロック毎に行える読み出し専用の不揮発性メモリを備え、通常時には、前記不揮発性メモリに記憶された制御プログラム及び制御データに従って所定の制御対象を制御し、予め定められた書換条件が成立した場合には、外部から与えられる前記不揮発性メモリの各ブロック毎の消去要求に応じて該当するブロックの記憶内容を消去する消去処理を実行すると共に、記憶内容を消去したブロックに外部から送信されて来る新たなデータを書き込むことにより、前記不揮発性メモリの記憶内容を書き換えるように構成された電子制御装置に用いられ、
前記不揮発性メモリの書き換え回数を計数するための書き換え回数計数方法であって、
前記消去処理の実行回数を、前記不揮発性メモリの書き換え回数として計数すると共に、前記電子制御装置が初期状態から継続して動作している期間中は、前記消去処理が複数のブロックについて夫々実行されても、その消去処理の実行回数を１回として計数すること、
を特徴とする不揮発性メモリの書き換え回数計数方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定の制御対象を制御する電子制御装置に関し、特に、制御に用いる制御プログラムや制御データをオンボード書き換え可能な電子制御装置に関する。
【０００２】
【従来の技術】
従来より、例えば自動車のエンジンやトランスミッション等を制御する電子制御装置として、電気的に記憶内容の消去及び書き込みが可能な読み出し専用の不揮発性メモリ（以下、書換可能ＲＯＭともいう）を備え、その書換可能ＲＯＭに記憶された制御プログラムや制御データを、当該装置の完成状態で書き換えることができるようにした所謂オンボード書き換え可能なものが提案されている。
【０００３】
即ち、この種の電子制御装置は、通常時には、書換可能ＲＯＭ内の制御プログラム及び制御データに従ってエンジン等の制御対象を制御するが、別途接続された外部装置としてのメモリ書換装置から書き換え指令を受ける等して、書換条件が成立したと判断すると、自己の動作モードを書換モードに移行させて、書換可能ＲＯＭの記憶内容を上記メモリ書換装置から送信されて来る新たなデータに書き換えるための書換処理を行う。
【０００４】
そして、このようなオンボード書き換え可能な電子制御装置によれば、市場への供給後に、何等かの原因で動作内容（制御内容）を変更しなければならない事態が起こったとしても、簡単に対応することができる。
ところで、この種の電子制御装置においては、書換可能ＲＯＭの書き換え回数（即ち、記憶内容の消去及び書き込みの回数）に制限があるため、記憶内容の消去処理を実行した回数を書換可能ＲＯＭの書き換え回数として計数（カウント）すると共に、その計数した回数を不揮発性の所定の記憶部（例えば、書換可能ＲＯＭにて、制御プログラムや制御データが記憶される領域以外の記憶領域）に記憶するようにしている。
【０００５】
つまり、例えば電子制御装置の動作モードが書換モードに移行した回数を、書き換え回数として計数することも考えられるが、この場合には、何らかの原因により、書換モードに移行しただけで書換処理が実際には行われなかった場合にも、書き換え回数の計数が行われてしまう。そこで、書換可能ＲＯＭの記憶内容を書き換える際には、必ず記憶内容を消去してから新たなデータを書き込む、という点に着目し、記憶内容を消去する消去処理の実行回数を計数することにより、書き換え回数を正確に計数できるようにしている。そして、例えば、上記記憶部に記憶された回数をメモリ書換装置側へ転送させて、その回数が予め定められた書換保証回数に達していたら、記憶内容の書き換えを行わないようにしている。
【０００６】
一方、この種の電子制御装置に対しては、書換可能ＲＯＭの記憶内容を、常に全てではなく、例えば一部の制御プログラムや制御データのみといった具合に、部分的に書き換えたいという要望がある。
このため、従来の電子制御装置では、書換可能ＲＯＭとして、記憶内容の消去が予め定められたブロック毎に行える読み出し専用の不揮発性メモリ（一般には、所謂フラッシュメモリであり、以下、ブロック毎の消去が可能な書換可能ＲＯＭという）が用いられている。
【０００７】
そして、電子制御装置は、書換モードに移行すると、メモリ書換装置から送信されて来る書換可能ＲＯＭの各ブロック毎の消去要求に応じて該当するブロックの記憶内容を消去する消去処理を実行し、その後、記憶内容を消去したブロックにメモリ書換装置から送信されて来る新たなデータを書き込むことで、書換可能ＲＯＭの記憶内容を書き換える。つまり、このように構成することで、書換可能ＲＯＭの記憶内容を、任意のブロック毎に書き換えることができる。
【０００８】
【発明が解決しようとする課題】
ここで、ブロック毎の消去が可能な書換可能ＲＯＭを用いた上記従来の電子制御装置においても、その書換可能ＲＯＭの書き換え回数を計数するためには、前述した理由により、消去処理の実行回数を計数することとなる。
【０００９】
しかしながら、単純に消去処理の実行回数を計数するように構成すると、記憶内容を消去したブロックの数（換言すれば、記憶内容を書き換えたブロックの数）を計数してしまうこととなり、書換可能ＲＯＭの実際の書き換え回数に対して、計数回数が極めて大きくなってしまうという問題が生じる。
【００１０】
一方、この問題を解決するためには、書換可能ＲＯＭの各ブロックを夫々区別して、その各ブロック単位に消去処理の実行回数を計数し記憶する手法が考えられる。
ところが、このような手法を採ると、書換可能ＲＯＭの各ブロックについて、計数回数を夫々記憶しなければならないため、計数回数を記憶する記憶部の記憶容量を大きく設定しておく必要が生じる。そして、この欠点は、書換可能ＲＯＭのブロック数が多い場合ほど顕著になる。
【００１１】
また、上記の如く各ブロック単位に消去処理の実行回数を計数する構成は、書換可能ＲＯＭの記憶容量に対して実際に記憶させる制御プログラムと制御データの容量が小さく、何れかのブロックの書き換え回数が書換保証回数に達した場合に、余っているブロックを代わりに用いる、といった使用ブロックの切換手法を採用するのであれば有効となる。
【００１２】
しかし、通常、この種の電子制御装置では、書換可能ＲＯＭのほぼ全記憶領域を使用して制御プログラムと制御データが記憶されるため、上記のような切換手法を採用することは困難である。そして、このように書換可能ＲＯＭのほぼ全記憶領域を使用する装置の場合には、何れか１つのブロックでもその書き換え回数が書換保証回数に達してしまうと、もはや全記憶内容を書き換えることはできないため、各ブロック単位に消去処理の実行回数を計数する意味が薄れてしまう。
【００１３】
本発明は、こうした問題に鑑みなされたものであり、不揮発性メモリに記憶された制御プログラムや制御データを該不揮発性メモリのブロック毎に書き換え可能な電子制御装置において、その不揮発性メモリの書き換え回数を効率的に且つ十分な正確さで計数できるようにすることを目的としている。
【００１４】
【課題を解決するための手段、及び発明の効果】
上記目的を達成するためになされた請求項１に記載の本発明の電子制御装置は、電気的に記憶内容の消去及び書き込みが可能で、且つ、記憶内容の消去が予め定められたブロック毎に行える読み出し専用の不揮発性メモリを備えている。そして、この電子制御装置は、通常時には、前記不揮発性メモリに記憶された制御プログラム及び制御データに従って所定の制御対象を制御し、予め定められた書換条件が成立した場合には、外部から与えられる前記不揮発性メモリの各ブロック毎の消去要求に応じて該当するブロックの記憶内容を消去する消去処理を実行すると共に、記憶内容を消去したブロックに外部から送信されて来る新たなデータを書き込むことにより、前記不揮発性メモリの記憶内容を書き換える。
【００１５】
よって、この電子制御装置では、所定の書換条件を成立させてから、不揮発性メモリのブロックのうちで、記憶内容を書き換えたい各ブロックの消去要求を外部から順次与えてやり、その後、その書き換え対象の各ブロックに書き込みたい新たなデータを送信してやることにより、所望のブロックの記憶内容を書き換えることができる。
【００１６】
ここで、本発明の電子制御装置では、計数手段が、前記消去処理の実行回数を、不揮発性メモリの書き換え回数として計数すると共に、その計数した回数を不揮発性の記憶部に記憶させるが、特に、この計数手段は、当該電子制御装置が初期状態から継続して動作している期間中に、前記消去処理が複数のブロックについて夫々実行されても、前記消去処理の実行回数を計数する計数動作を１回のみ行うように構成されている。
【００１７】
つまり、本発明の電子制御装置は、「不揮発性メモリの各ブロック毎の消去要求に応じて該当するブロックの記憶内容を消去する消去処理の実行回数を、不揮発性メモリの書き換え回数として計数すると共に、電子制御装置が初期状態から継続して動作している期間中は、前記消去処理が複数のブロックについて夫々実行されても、その消去処理の実行回数を１回として計数する」という、本発明の不揮発性メモリの書き換え回数計数方法を実施するようにしている。
【００１８】
このため、本発明の電子制御装置及び不揮発性メモリの書き換え回数計数方法によれば、不揮発性メモリの書き換え回数を効率的に且つ十分な正確さで計数することができる。
即ち、まず、この種の電子制御装置では、不揮発性メモリの記憶内容が書き換えられると、その後、電源の供給が一旦遮断されて初期状態から再び動作させられ、これにより、書き換え後の新たな制御プログラムや制御データに基づく当該装置の動作がチェックされる。よって、この種の電子制御装置では、電源の供給が開始されて初期状態から継続して動作している期間中に、不揮発性メモリの同じブロックが２回以上書き換えられることはない。
【００１９】
そして、本発明の電子制御装置及び不揮発性メモリの書き換え回数計数方法において、例えば、不揮発性メモリの全ブロックの記憶内容を書き換える場合には、全ブロックについて消去処理が夫々実行されることとなるが、その消去処理の実行回数は１回として計数されることとなり、不揮発性メモリの実際の書き換え回数と、計数した回数とが一致することとなる。
【００２０】
また例えば、その後に、不揮発性メモリ内の制御データのみを書き換える場合には、その制御データを記憶した各ブロックについて消去処理が夫々実行されることとなるが、これも１回として計数されることとなる。そして、この場合には、各ブロックの書き換え回数の実際の最大値（尚、この例では、制御データを記憶するブロックの書き換え回数が最大値となる）と、計数した回数とが一致することとなる。
【００２１】
また更に、例えば、不揮発性メモリ内の制御プログラム或いは制御データのみを書き換える場合には、その書き換え対象の内容を記憶した各ブロックについて消去処理が実行されることとなるが、これも１回として計数されることとなる。そして、このようなケースが複数回発生した場合には、少なくとも、計数した回数は、不揮発性メモリにおける各ブロックの書き換え回数の実際の最大値以上となるため、不揮発性メモリの書換保証回数以上に書き換えを行ってしまうことを、確実に防止することが可能となる。
【００２２】
このように、本発明の電子制御装置及び不揮発性メモリの書き換え回数計数方法によれば、単純に消去処理の実行回数を計数するようにした場合と比較すると、計数される回数は、各ブロックの書き換え回数の実際の最大値により近い値となるため、不揮発性メモリの書き換え回数をより正しく計数することができる。
【００２３】
しかも、消去処理の実行回数を、各ブロックの区別なく計数するため、その回数を記憶する記憶部の記憶容量を最低限に設定することができ、非常に効率的である。
ところで、本発明の電子制御装置において、計数手段は、例えば、外部からの消去要求に対応する各ブロックの消去処理が全て完了した後や、記憶内容が消去されたブロックに新たなデータが書き込まれた後に、計数動作を行うようにしても良いが、このように構成すると、計数動作が行われるまでの間に、何らかの原因で当該電子制御装置への電源が遮断されてしまうと、実際の書き換え回数よりも記憶部に記憶される計数回数が小さくなってしまう虞が生じる。
【００２４】
そこで、計数手段は、請求項２に記載のように、当該電子制御装置が初期状態から動作を開始して最初に消去処理を実行した場合にのみ、前記計数動作を行うように構成すれば、上記のような虞を排除することができ確実である。つまり、当該電子制御装置が初期状態から動作を開始して最初に消去処理を実行した場合に、消去処理の実行回数を計数するように構成すれば、不揮発性メモリの書き換えが何らかの原因で中断されてしまっても、既に実行された消去処理の回数を確実に計数できるからである。
【００２５】
また、この場合、計数手段は、請求項３に記載のように、当該電子制御装置が初期状態から動作を開始して最初に消去要求を受けた場合にのみ、前記計数動作を行うように構成することができる。つまり、このように構成すれば、当該電子制御装置が初期状態から動作を開始して最初に消去処理を実行した場合にのみ、前記計数動作を行うことになるからである。
【００２６】
一方、本発明の電子制御装置において、請求項４に記載の如く、前記記憶部に記憶された回数が予め定められた所定値に達しているか否かを判定し、肯定判定した場合に、その旨（つまり、計数手段により計数されて記憶部に記憶された回数が所定値に達している旨）を外部へ報知する報知手段を設ければ、不揮発性メモリの書換保証回数以上に書き換えを行ってしまうことを、確実且つ簡単に防止することができ有利である。
【００２７】
【発明の実施の形態】
以下、本発明の一実施形態について、図面を用いて説明する。
まず図１は、車両（自動車）に搭載されて内燃機関型エンジンの制御を行う、実施形態の電子制御装置（以下、ＥＣＵという）２の構成を表すブロック図である。
【００２８】
図１に示すように、ＥＣＵ２は、エンジンの運転状態を検出する様々なセンサ４からの信号を入力して波形処理する入力処理回路６と、入力処理回路６からのセンサ信号等に基づき、エンジンを制御するための様々な処理を行うマイクロコンピュータ（以下、マイコンという）８と、マイコン８からの制御信号に応じて、エンジンに取付けられた燃料噴射装置（インジェクタ）や点火装置（イグナイタ）等のアクチュエータ１０を駆動する出力回路１２と、外部装置としてのメモリ書換装置１４との間でシリアルデータ通信を行うための通信回路１６と、車両のイグニッションスイッチ１７のオンに伴い供給されるバッテリＢＴからの電源を受けて、マイコン８を始めとする当該ＥＣＵ２内の各部に動作用の電源電圧（例えば５Ｖ）を供給する電源回路１８とを備えている。
【００２９】
尚、電源回路１８は、イグニッションスイッチ１７がオンされて上記電源電圧の供給を開始してから、その電源電圧が安定すると見なされる所定時間だけマイコン８へリセット信号を出力する、所謂パワーオンリセット機能を有している。
そして、マイコン８には、プログラムに従い動作する周知のＣＰＵ（中央演算処理装置）２０と、ＣＰＵ２０を動作させるのに必要なプログラム（詳しくは、そのプログラムを構成するデータ）やそのプログラムの実行時に参照されるデータを記憶する不揮発性のフラッシュメモリ２２及びマスクＲＯＭ２４と、ＣＰＵ２０による演算結果等を一時的に記憶するための揮発性のＲＡＭ２６と、入力処理回路６，出力回路１２，及び通信回路１６との間で信号やデータをやり取りするためのＩ／Ｏ２８とが備えられている。
【００３０】
ここで、フラッシュメモリ２２は、電気的に記憶内容の消去及び書き込みが可能な読み出し専用の不揮発性メモリである。そして、このフラッシュメモリ２２には、エンジンを制御するためのプログラム（以下、エンジン制御プログラムという）と、そのエンジン制御プログラムの実行時に参照されるエンジン制御用の制御データとが記憶されている。
【００３１】
特に、フラッシュメモリ２２の記憶領域（セル）は、図２に示すように、各々が所定バイトの複数のブロック（本実施形態では、Ａ〜Ｑの１７ブロック）に分割されており、その各ブロックＡ〜Ｑ毎に記憶内容の消去が行えるようになっている。そして、本実施形態では、ブロックＡからブロックＫまでの１１個のブロックが、エンジン制御プログラムを記憶するプログラム記憶領域として用いられており、ブロックＬからブロックＰまでの５個のブロックが、エンジン制御用の制御データを記憶する制御データ記憶領域として用いられている。そして更に、ブロックＱが、当該フラッシュメモリ２２に対して行われたデータ書き換え（即ち、データの消去及び書き込み）の回数を表すデータであって、後述する消去回数カウント値ＣＴを記憶する回数データ記憶領域として用いられている。
【００３２】
尚、フラッシュメモリ２２のブロックＡ〜Ｐには、ＥＣＵ２の製造工程においてマイコン８がＥＣＵ２へ実装されてから、該当するエンジン制御プログラム及び制御データが書き込まれるが、ここでは、エンジン制御プログラム及び制御データが既に書き込まれているものとする。
【００３３】
これに対して、マスクＲＯＭ２４は、記憶内容の書き換えが不可能な読み出し専用の不揮発性メモリである。そして、このマスクＲＯＭ２４には、マイコン８のリセット解除直後に実行されるブートプログラムが予め記憶されている。
一方、当該ＥＣＵ２には、フラッシュメモリ２２に書き込まれているエンジン制御プログラムや制御データを新たな内容に書き換える際に、メモリ書換装置１４が接続される。そして、図１に示すように、ＥＣＵ２とメモリ書換装置１４との接続は、両者の接続用コネクタ３０が嵌合されて、互いの通信ライン３２が信号的に接続されることにより行われる。即ち、接続用コネクタ３０が嵌合されると、ＥＣＵ２のマイコン８は、通信回路１６及び通信ライン３２を介して、メモリ書換装置１４とシリアルデータ通信可能になる。
【００３４】
このようなＥＣＵ２において、マイコン８は、リセットが解除されて初期状態から動作を開始すると、最初にマスクＲＯＭ２４内のブートプログラムを実行する。そして、メモリ書換装置１４が接続されていない通常時には、そのブートプログラムにてフラッシュメモリ２２内のエンジン制御プログラムをコールして、エンジンを制御するためのエンジン制御処理を行う。
【００３５】
また、マイコン８は、ブートプログラムの実行時や、エンジン制御処理を行っている最中に、後述する書換条件が成立していると判断すると、メモリ書換装置１４から送信されて来る書換プログラムを受信してＲＡＭ２６へロード（転送）する。そして、その書換プログラムをＲＡＭ２６上で実行することにより、フラッシュメモリ２２の記憶内容をメモリ書換装置１４から送信されて来る書込データ（即ち、新たなエンジン制御プログラムや制御データ）に書き換えるためのプログラム書換処理を行う。
【００３６】
そこで次に、ＥＣＵ２のマイコン８で実行される処理について、図３及び図４を用いて説明する。
まず、図３は、マイコン８で実行される処理の全体を表すフローチャートチャートであり、そのステップ（以下、単に「Ｓ」と記す）１００〜Ｓ１２０，Ｓ１５０，及びＳ１６０の処理が、マスクＲＯＭ２４内のブートプログラムによって実行される。そして、Ｓ１３０及びＳ１４０の処理が、フラッシュメモリ２２内のエンジン制御プログラムによって実行され、Ｓ１７０〜Ｓ１９０の処理が、メモリ書換装置１４から送信されてＲＡＭ２６へロードされる書換プログラムによって実行される。
【００３７】
図３に示すように、マイコン８は、イグニッションスイッチ１７のオンに伴い初期状態（リセット状態）から動作を開始すると、マスクＲＯＭ２４内のブートプログラムの実行を開始し、まずＳ１００にて、ＲＡＭ２６や内部レジスタ（図示省略）を初期化するための初期化処理を行う。そして、この初期化処理にて、フラッシュメモリ２２の何れかのブロックの記憶内容を消去する消去処理の実行回数をカウント（計数）したか否かを示すＲＡＭ２６内のカウント済みフラグＦＣに、消去処理の実行回数を未だカウントしていないことを示す０を初期値としてセットする。
【００３８】
そして、続くＳ１１０にて、フラッシュメモリ２２の記憶内容を書き換えるべき書換条件が成立したか否かを判定する。尚、本実施形態では、当該ＥＣＵ２に通信ライン３２を介して接続されたメモリ書換装置１４がフラッシュメモリ２２の書き換えを指令する書換コマンドを送信し、その書換コマンドをマイコン８が受信割込処理等によって検知した場合に、書換条件が成立したと判定する。
【００３９】
そして、上記Ｓ１１０で書換条件が成立していないと判定した場合には（Ｓ１１０：ＮＯ）、通常のエンジン制御モードであると判断して、Ｓ１２０に進み、このＳ１２０にて、フラッシュメモリ２２内のエンジン制御プログラムの開始アドレスへジャンプする。
【００４０】
すると、その後は、フラッシュメモリ２２内のエンジン制御プログラムが実行されて、Ｓ１３０及びＳ１４０の処理が行われる。
即ち、まずＳ１３０にて、エンジンを制御するためのエンジン制御処理が行われる。尚、このエンジン制御処理は、入力処理回路６からの各種センサ信号とフラッシュメモリ２２内の制御データとに基づき、エンジンに対する最適な燃料噴射量や点火時期等を演算し、その演算結果に応じて、燃料噴射装置や点火装置等のアクチュエータ１０を駆動するための制御信号を出力回路１２に出力する、といった手順で実行される。
【００４１】
そして、このエンジン制御処理が繰り返し実行されることで、エンジンの運転が可能となるが、エンジン制御処理の実行を一通り終了すると、次にエンジン制御処理を繰り返す前に、Ｓ１４０にて、前述したＳ１１０の場合と同様に書換条件が成立したか否かを判定する。そして、書換条件が成立していなければ（Ｓ１４０：ＮＯ）、Ｓ１３０に戻ってエンジン制御処理を実行する。
【００４２】
よって、エンジン制御処理（Ｓ１３０）が繰り返される毎に、書換条件の成立／非成立がチェックされ（Ｓ１４０）、書換条件が成立していなければ、直ちに、エンジン制御処理（Ｓ１３０）を繰り返すこととなる。
一方、ブートプログラムのＳ１１０或いはエンジン制御プログラムのＳ１４０で書換条件が成立していると判定した場合には（Ｓ１１０：ＹＥＳ或いはＳ１４０：ＹＥＳ）、フラッシュメモリ２２の記憶内容を書き換える書換モードであると判断して、ブートプログラムのＳ１５０に移行する。そして、このＳ１５０にて、メモリ書換装置１４からの書換プログラムを、ＲＡＭ２６へロードする。
【００４３】
即ち、メモリ書換装置１４は、所定の操作が行われると、前述した書換コマンドを送信した後、ＥＣＵ２へ書換プログラムを送信するように構成されている。そこで、ＥＣＵ２のマイコン８は、Ｓ１５０の処理により、メモリ書換装置１４からの書換プログラムを受信して、ＲＡＭ２６に格納するのである。
【００４４】
そして、Ｓ１５０の処理によって書換プログラムのＲＡＭ２６へのロードが終了すると、次のＳ１６０に進んで、ＲＡＭ２６へロードした書換プログラムの開始アドレスへジャンプする。
すると、マイコン８は、上記書換プログラムをＲＡＭ２６上で実行することとなり、これにより、Ｓ１７０〜Ｓ１９０の処理が行われる。
【００４５】
即ち、まずＳ１７０にて、フラッシュメモリ２２の回数データ記憶領域であるブロックＱから、フラッシュメモリ２２の書き換え回数を表す消去回数カウント値ＣＴを読み出し、その消去回数カウント値ＣＴが、予め定められた所定値以上になっているか否かを判定する。尚、上記所定値は、フラッシュメモリ２２の書換保証回数（即ち、消去及び書き込みの保証回数）と同じ値か、或いは、その書換保証回数よりも若干小さい値に設定されている。
【００４６】
そして、上記Ｓ１７０で消去回数カウント値ＣＴが所定値以上であると肯定判定した場合には（Ｓ１７０：ＹＥＳ）、Ｓ１８０に進み、フラッシュメモリ２２の書き換え回数が書換保証回数に達していることを示す報知信号をメモリ書換装置１４へ送信する、報知処理を行い、その後、全ての処理を終了する。尚、メモリ書換装置１４は、上記Ｓ１８０で送信された報知信号を受信すると、フラッシュメモリ２２の書き換え回数が書換保証値に達していることを示すメッセージを所定の表示装置に表示させると共に、ＥＣＵ２との通信を停止する。
【００４７】
これに対し、上記Ｓ１７０で消去回数カウント値ＣＴが所定値以上ではないと判定した場合には（Ｓ１７０：ＮＯ）、フラッシュメモリ２２の書き換えが可能であると判断して、Ｓ１９０に移行し、図４に示すプログラム書換処理を行う。
ここで、メモリ書換装置１４は、ＥＣＵ２へ書換プログラムを送信した後、フラッシュメモリ２２のブロックＡ〜Ｐのうちで、今回の書換対象となる各ブロック毎に、消去要求としての消去コマンドを順次送信し、更に、その消去コマンドの送信を終えると、次に、今回の書換対象となる各ブロック毎に、書込コマンドを順次送信するように構成されている。尚、消去コマンドは、記憶内容の消去を要求するコマンドデータと、記憶内容を消去すべきブロック（Ａ〜Ｐの何れか）を示す識別データとから構成されている。また、書込コマンドは、データの書き込みを要求するコマンドデータと、データを書き込むべきブロック（Ａ〜Ｐの何れか）を示す識別データと、そのブロックへの書込データ（即ち、新たなエンジン制御プログラム或いは新たな制御データ）と、その書込データの書き込み先を示すアドレスとから構成されている。
【００４８】
そこで、ＥＣＵ２のマイコン８は、図４に示すように、上記Ｓ１９０でプログラム書換処理の実行を開始すると、まずＳ２００にて、メモリ書換装置１４からのコマンド（消去コマンド或いは書込コマンド）を受信するまで待機する。
そして、メモリ書換装置１４からのコマンドを受信すると（Ｓ２００：ＹＥＳ）、Ｓ２１０Ａに進んで、上記Ｓ２００で受信したコマンドがブロックＡの消去コマンド（即ち、ブロックＡの識別データを有する消去コマンドであって、ブロックＡの記憶内容の消去を要求する消去コマンド）であるか否かを判定し、ブロックＡの消去コマンドであれば（Ｓ２１０Ａ：ＹＥＳ）、Ｓ２２０Ａに移行して、「消去及び消去回数カウント値の更新処理」を行う。そして、その後Ｓ２００に戻って、メモリ書換装置１４からの次のコマンドを待つ。
【００４９】
ここで、「消去及び消去回数カウント値の更新処理」では、図４の一点鎖線内に示すように、まずＳ３００にて、カウント済みフラグＦＣが０であるか否かを判定する。そして、カウント済みフラグＦＣが０であれば（Ｓ３００：ＹＥＳ）、続くＳ３１０にて、カウント済みフラグＦＣに、消去処理の実行回数を既にカウントしたことを示す１をセットし、更に続くＳ３２０にて、フラッシュメモリ２２のブロックＱ（回数データ記憶領域）から消去回数カウント値ＣＴを読み出し、その読み出した消去回数カウント値ＣＴに１を加算した値（ＣＴ＋１）を、新たな消去回数カウント値ＣＴとしてフラッシュメモリ２２のブロックＱに書き込む。そして、続くＳ３３０にて、フラッシュメモリ２２のブロックＡの記憶内容を消去する消去処理を行う。これに対し、上記Ｓ３００でカウント済みフラグＦＣが０ではない（即ち１である）と判定した場合には（Ｓ３００：ＮＯ）、Ｓ３１０及びＳ３２０の処理を行うことなくＳ３３０に移行して、フラッシュメモリ２２のブロックＡの記憶内容を消去する消去処理を行う。
【００５０】
一方、Ｓ２１０Ａにて、上記Ｓ２００で受信したコマンドがブロックＡの消去コマンドではないと判定した場合には（Ｓ２１０Ａ：ＮＯ）、Ｓ２１０Ｂに進み、今度は、上記Ｓ２００で受信したコマンドがブロックＢの消去コマンドであるか否かを判定する。そして、ブロックＢの消去コマンドであれば（Ｓ２１０Ｂ：ＹＥＳ）、Ｓ２２０Ｂに移行して、Ｓ２２０Ａと同様の「消去及び消去回数カウント値の更新処理」を行い、その後、Ｓ２００に戻ってメモリ書換装置１４からの次のコマンドを待つ。但し、このＳ２２０Ｂの「消去及び消去回数カウント値の更新処理」におけるＳ３３０では、フラッシュメモリ２２のブロックＢの記憶内容を消去する消去処理を行う。
【００５１】
また、図４においてブロックＣ〜Ｏについては図示を省略しているが、Ｓ２１０Ｂにて、上記Ｓ２００で受信したコマンドがブロックＢの消去コマンドではないと判定した場合には（Ｓ２１０Ｂ：ＮＯ）、前述したＳ２１０Ａ及びＳ２１０Ｂと同様に、上記Ｓ２００で受信したコマンドがブロックＣ〜Ｏの何れかの消去コマンドであるか否かを判定する。そして、ブロックＣ〜Ｏの何れかの消去コマンドであれば、Ｓ２２０Ａ及びＳ２２０Ｂと同様の「消去及び消去回数カウント値の更新処理」を行い、その後、Ｓ２００に戻る。尚、この場合の「消去及び消去回数カウント値の更新処理」におけるＳ３３０では、受信した消去コマンドに対応するブロックの記憶内容を消去する消去処理を行う。
【００５２】
つまり、図４において、Ｓ２１０Ｂと後述するＳ２１０Ｐとの間の点線部分には、Ｓ２１０Ａ及びＳ２１０Ｂと同様に、受信したコマンドがブロックＣ〜Ｏの各ブロックの消去コマンドであるか否かを判定するＳ２１０Ｃ〜Ｓ２１０Ｏの処理と、その各処理で肯定判定された場合に、Ｓ２２０Ａ及びＳ２２０Ｂと同様に受信した消去コマンドに対応するブロックの記憶内容を消去すると共に消去回数カウント値ＣＴを更新するための「消去及び消去回数カウント値の更新処理」を行うＳ２２０Ｃ〜Ｓ２２０Ｏの処理とが、設けられている。
【００５３】
そして、上記Ｓ２００で受信したコマンドがブロックＡ〜Ｏの消去コマンドでない場合には、Ｓ２１０Ｐにて、上記Ｓ２００で受信したコマンドがブロックＰの消去コマンドであるか否かを判定し、ブロックＰの消去コマンドであれば（Ｓ２１０Ｐ：ＹＥＳ）、Ｓ２２０Ｐにて、Ｓ２２０Ａ及びＳ２２０Ｂと同様の「消去及び消去回数カウント値の更新処理」を行う。そして、その後Ｓ２００に戻る。尚、このＳ２２０Ｐの「消去及び消去回数カウント値の更新処理」におけるＳ３３０では、フラッシュメモリ２２のブロックＰの記憶内容を消去する消去処理を行う。
【００５４】
一方、Ｓ２１０Ｐにて、上記Ｓ２００で受信したコマンドがブロックＰの消去コマンドではないと判定した場合には（Ｓ２１０Ｐ：ＮＯ）、メモリ書換装置１４が消去コマンドの送信を終了しており、今回のＳ２００で受信したコマンドが消去コマンドではなくブロックＡ〜Ｐの何れかに対する書込コマンドであると見なされることから、Ｓ２３０Ａに進む。
【００５５】
そして、このＳ２３０Ａにて、上記Ｓ２００で受信したコマンドがブロックＡの書込コマンド（即ち、ブロックＡの識別データを有する書込コマンドであって、ブロックＡへのデータ書き込みを要求すると共に、ブロックＡに書き込むべき書込データを含んだ書込コマンド）であるか否かを判定し、ブロックＡの書込コマンドであれば（Ｓ２３０Ａ：ＹＥＳ）、Ｓ２４０Ａに移行して、受信したブロックＡの書込コマンドに含まれている書込データをフラッシュメモリ２２のブロックＡに書き込む「書込処理」を行う。尚、この「書込処理」では、書き込んだデータに対してサムチェックも行う。そして、その後Ｓ２００に戻って、メモリ書換装置１４からの次のコマンドを待つ。
【００５６】
また、Ｓ２３０Ａにて、上記Ｓ２００で受信したコマンドがブロックＡの書込コマンドではないと判定した場合には（Ｓ２３０Ａ：ＮＯ）、Ｓ２３０Ｂに進み、今度は、上記Ｓ２００で受信したコマンドがブロックＢの書込コマンドであるか否かを判定する。そして、ブロックＢの書込コマンドであれば（Ｓ２３０Ｂ：ＹＥＳ）、Ｓ２４０Ｂに移行して、Ｓ２４０Ａと同様の「書込処理」を行い、その後、Ｓ２００に戻ってメモリ書換装置１４からの次のコマンドを待つ。但し、このＳ２４０Ｂの「書込処理」では、受信したブロックＢの書込コマンドに含まれている書込データを、フラッシュメモリ２２のブロックＢに書き込む。
【００５７】
また更に、図４においてブロックＣ〜Ｏについては図示を省略しているが、Ｓ２３０Ｂにて、上記Ｓ２００で受信したコマンドがブロックＢの書込コマンドではないと判定した場合には（Ｓ２３０Ｂ：ＮＯ）、前述したＳ２３０Ａ及びＳ２３０Ｂと同様に、上記Ｓ２００で受信したコマンドがブロックＣ〜Ｏの何れかの書込コマンドであるか否かを判定する。そして、ブロックＣ〜Ｏの何れかの書込コマンドであれば、Ｓ２４０Ａ及びＳ２４０Ｂと同様の「書込処理」を行い、その後、Ｓ２００に戻る。尚、この場合の「書込処理」では、受信した書込コマンドに対応するブロックに、その書込コマンドに含まれている書込データを書き込む。
【００５８】
つまり、図４において、Ｓ２３０Ｂと後述するＳ２３０Ｐとの間の点線部分には、Ｓ２３０Ａ及びＳ２３０Ｂと同様に、受信したコマンドがブロックＣ〜Ｏの各ブロックの書込コマンドであるか否かを判定するＳ２３０Ｃ〜Ｓ２３０Ｏの処理と、その各処理で肯定判定された場合に、Ｓ２４０Ａ及びＳ２４０Ｂと同様に受信した書込コマンドに対応するブロックへその書込コマンドに含まれている書込データを書き込むための「書込処理」を行うＳ２４０Ｃ〜Ｓ２４０Ｏの処理とが、設けられている。
【００５９】
そして、上記Ｓ２００で受信したコマンドがブロックＡ〜Ｏの書込コマンドでない場合には、Ｓ２３０Ｐにて、上記Ｓ２００で受信したコマンドがブロックＰの書込コマンドであるか否かを判定し、ブロックＰの書込コマンドであれば（Ｓ２３０Ｐ：ＹＥＳ）、Ｓ２４０Ｐにて、Ｓ２４０Ａ及びＳ２４０Ｂと同様の「書込処理」を行う。そして、その後Ｓ２００に戻る。尚、Ｓ２４０Ｐの「書込処理」では、受信したブロックＰの書込コマンドに含まれている書込データを、フラッシュメモリ２２のブロックＰに書き込む。
【００６０】
一方、Ｓ２３０Ｐにて、上記Ｓ２００で受信したコマンドがブロックＰの書込コマンドではないと判定した場合には（Ｓ２３０Ｐ：ＮＯ）、そのままＳ２００に戻って、メモリ書換装置１４からの次のコマンドを待つ。
以上のような本実施形態のＥＣＵ２において、フラッシュメモリ２２の記憶内容を書き換える場合には、まず、メモリ書換装置１４を接続して、そのメモリ書換装置１４から書換コマンドを送信してやる。すると、ＥＣＵ２のマイコン８は、図３のＳ１１０或いはＳ１４０で肯定判定して、自己の動作モードを、図３のＳ１５０〜Ｓ１９０の処理を実行する書換モードに移行させる。
【００６１】
そして、メモリ書換装置１４からＥＣＵ２へ、書換プログラムを送信し、次に、フラッシュメモリ２２のブロックＡ〜Ｐのうちで、記憶内容を書き換えたい各ブロックの消去コマンドを順次送信してやる。すると、ＥＣＵ２のマイコン８は、図４のＳ２１０Ａ及びＳ２２０Ａ〜Ｓ２１０Ｐ及びＳ２２０Ｐの処理（但し、Ｓ２１０Ｃ及びＳ２２０Ｃ〜Ｓ２１０Ｏ及びＳ２２０Ｏは図示省略）により、メモリ書換装置１４からの各消去コマンドに応じて、該当するブロックの記憶内容を順次消去することとなる。
【００６２】
そして更に、その後、メモリ書換装置１４からＥＣＵ２へ、書き換え対象の各ブロックに書き込みたい書込データを含む各ブロック毎の書込コマンドを順次送信してやる。すると、ＥＣＵ２のマイコン８は、図４のＳ２３０Ａ及びＳ２４０Ａ〜Ｓ２３０Ｐ及びＳ２４０Ｐの処理（但し、Ｓ２３０Ｃ及びＳ２４０Ｃ〜Ｓ２３０Ｏ及びＳ２４０Ｏは図示省略）により、記憶内容を消去したブロックにメモリ書換装置１４からの各書込コマンドに含まれる書込データを書き込むこととなる。
【００６３】
そして、こうした手順により、フラッシュメモリ２２の所望のブロックの記憶内容を書き換えることができる。
ここで、本実施形態のＥＣＵ２では、図４のＳ２２０Ａ〜Ｓ２２０Ｐの「消去及び消去回数カウント値の更新処理」におけるＳ３３０で行われる消去処理の実行回数を、同じ「消去及び消去回数カウント値の更新処理」におけるＳ３２０の処理によって、フラッシュメモリ２２の書き換え回数として計数し記憶するようにしているが、そのＳ３２０による計数動作は、当該ＥＣＵ２が初期状態から動作を開始して最初にメモリ書換装置１４からの消去コマンドを受け、その最初の消去コマンドに応じて消去処理を実行した場合にのみ行われることとなる。
つまり、本実施形態のＥＣＵ２では、イグニッションスイッチ１７のオンに伴いバッテリＢＴからの電源が供給されて、マイコン８が初期状態から動作を開始し、その後、メモリ書換装置１４からの最初の消去コマンドを受信した場合には、図３のＳ１００でカウント済みフラグＦＣに０がセットされているため、Ｓ２２０Ａ〜Ｓ２２０Ｐのうちの何れかの「消去及び消去回数カウント値の更新処理」におけるＳ３００により、カウント済みフラグＦＣが０であると判定して（Ｓ３００：ＹＥＳ）、カウント済みフラグＦＣに１をセットすると共に（Ｓ３１０）、フラッシュメモリ２２のブロックＱに記憶している消去回数カウント値ＣＴを１つカウントアップし（Ｓ３２０）、更に、今回受信した消去コマンドに対応するブロックの記憶内容を消去することとなる（Ｓ３３０）。これに対し、マイコン８が動作を開始してから、メモリ書換装置１４からの２回目以降の消去コマンドを受信した場合には、カウント済みフラグＦＣに既に１がセットされているため、Ｓ２２０Ａ〜Ｓ２２０Ｐのうちの何れかの「消去及び消去回数カウント値の更新処理」におけるＳ３００では、カウント済みフラグＦＣが１であると判定して（Ｓ３００：ＮＯ）、消去回数カウント値ＣＴのカウントアップを行うことなく、今回受信した消去コマンドに対応するブロックの記憶内容を消去することとなるからである。
【００６４】
このため、本実施形態のＥＣＵ２では、例えば図５に示すように、１回のイグニッションスイッチ（ＩＧ）１７のオン期間中に、フラッシュメモリ２２のブロックＡ〜Ｐの記憶内容（即ち、制御プログラムと制御データの全て）を書き換えるべく、メモリ書換装置１４からブロックＡ〜Ｐの消去要求が順次送信されて来た場合には、最初のブロックＡの消去コマンドを受信して該当するブロックＡの記憶内容を消去する消去処理が行われる時点にて、消去回数カウント値ＣＴが１つカウントアップされ、その値ＣＴが「ｎ」に更新される。そして、他のブロックＢ〜Ｐの各消去コマンドを受信して該当するブロックＢ〜Ｐの記憶内容を夫々消去する消去処理が行われる時点では、消去回数カウント値ＣＴが更新されず、その値ＣＴは「ｎ」のままとなる。
【００６５】
また、イグニッションスイッチ１７が一旦オフされ、その後のイグニッションスイッチ１７のオン期間中に、フラッシュメモリ２２のブロックＬ〜Ｐの記憶内容（即ち、制御データのみ）を書き換えるべく、メモリ書換装置１４からブロックＬ〜Ｐの消去要求が順次送信されて来た場合にも、最初のブロックＬの消去コマンドを受信して該当するブロックＬの記憶内容を消去する消去処理が行われる時点にて、消去回数カウント値ＣＴが１つカウントアップされ、その値ＣＴが「ｎ＋１」に更新される。そして、他のブロックＭ〜Ｐの各消去コマンドを受信して該当するブロックＭ〜Ｐの記憶内容を消去する消去処理が行われる時点では、消去回数カウント値ＣＴが更新されず、その値ＣＴは「ｎ＋１」のままとなる。
【００６６】
以上のように、本実施形態のＥＣＵ２では、フラッシュメモリ２２の各ブロックの消去処理の実行回数を、フラッシュメモリ２２の書き換え回数として計数すると共に、当該ＥＣＵ２が初期状態から継続して動作している期間中（換言すれば、当該ＥＣＵ２に継続して電源が供給されている期間中）は、消去処理が複数のブロックについて夫々実行されても、その消去処理の実行回数を１回として計数するようにしているため、フラッシュメモリ２２の書き換え回数を効率的に且つ十分な正確さで計数することができる。
【００６７】
即ち、フラッシュメモリ２２内の全ての制御プログラム及び制御データが書き換えられる場合には、ブロックＡ〜Ｐについて消去処理が夫々実行されることとなるが、その消去処理の実行回数は１回として計数されることとなり、フラッシュメモリ２２の実際の書き換え回数と、計数した回数とが一致することとなる。
【００６８】
また、図５に例示したように、フラッシュメモリ２２内の全ての制御プログラム及び制御データが書き換えられてから、次の機会に、制御データのみが書き換えられる場合には、その制御データを記憶した各ブロックＬ〜Ｐについて消去処理が夫々実行されることとなるが、これも１回として計数されることとなる。そして、この場合には、各ブロックの書き換え回数の実際の最大値（この場合には、制御データを記憶するブロックＬ〜Ｐの書き換え回数が最大値となる）と、計数した回数とが一致することとなる。
【００６９】
また更に、例えば、フラッシュメモリ２２内の制御プログラム或いは制御データの一方のみが書き換えられる場合には、その書き換え対象の内容を記憶した各ブロックについて消去処理が実行されることとなるが、これも１回として計数されることとなる。そして、このようなケースが複数回発生しても、消去処理の計数回数を示す消去回数カウント値ＣＴは、フラッシュメモリ２２における各ブロックの書き換え回数の実際の最大値以上となるため、フラッシュメモリ２２の書換保証回数以上に書き換えを行ってしまうことを、確実に防止することができる。
【００７０】
このように、本実施形態のＥＣＵ２によれば、単純に消去処理の実行回数を計数するようにした場合と比較すると、消去回数カウント値ＣＴは、各ブロックの書き換え回数の実際の最大値により近い値となり、フラッシュメモリ２２の書き換え回数をより正しく計数することができる。
【００７１】
しかも、消去処理の実行回数を、各ブロックＡ〜Ｐを区別することなく計数するため、フラッシュメモリ２２のブロックＱにおいて消去回数カウント値ＣＴを記憶する領域を最低限に設定することができ、非常に効率的である。
また、本実施形態のＥＣＵ２では、初期状態から動作を開始して最初に消去コマンドを受けた場合に、消去回数カウント値ＣＴのカウントアップを行うようにしているため、フラッシュメモリ２２の書き換えが何らかの原因で中断されてしまっても、既に実行された消去処理の回数を確実に計数することができる。
【００７２】
そして更に、本実施形態のＥＣＵ２では、フラッシュメモリ２２の記憶内容を書き換えるためのプログラム書換処理を開始する前に、図３のＳ１７０の処理により、フラッシュメモリ２２のブロックＱに記憶された消去回数カウント値ＣＴが所定値に達しているか否かを判定し、所定値に達していると判定すると（ＳＳ１７０：ＹＥＳ）、メモリ書換装置１４へ報知信号を送信するようにしているため（Ｓ１８０）、フラッシュメモリ２２の書換保証回数以上に書き換えを行ってしまうことを、確実且つ簡単に防止することができる。
【００７３】
尚、本実施形態では、図３のＳ１００の処理と、図４のＳ２２０Ａ〜Ｓ２２０Ｐの各「消去及び消去回数カウント値の更新処理」におけるＳ３００〜Ｓ３２０の処理とが、計数手段に相当し、フラッシュメモリ２２のブロックＱが、不揮発性の記憶部に相当している。そして、図３のＳ１７０及びＳ１８０の処理が、報知手段に相当している。
【００７４】
以上、本発明の一実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、種々の形態を採り得ることは言うまでもない。
例えば、上記実施形態のＥＣＵ２では、図３のＳ１７０〜Ｓ１９０及び図４の処理を実行するための書換プログラムを、メモリ書換装置１４側からＲＡＭ２６へロードするようにしたが、上記書換プログラムをマスクＲＯＭ２４に予め格納しておき、そのマスクＲＯＭ２４上で実行するようにしても良い。そして、この場合には、図３のＳ１５０及びＳ１６０の処理を省略することができる。
【００７５】
また、上記実施形態のＥＣＵ２において、図４の「消去及び消去回数カウント値の更新処理」におけるＳ３２０では、フラッシュメモリ２２のブロックＱに、ビットデータを１ビットずつ追記していくようにしても良い。つまり、そのブロックＱに書き込まれたビットの数を数えれば、消去処理の実行回数を知ることができるからである。
【００７６】
一方、上記実施形態のＥＣＵ２において、図４のＳ２３０Ｐで否定判定した場合には（Ｓ２３０Ｐ：ＮＯ）、メモリ書換装置１４からの終了コマンドを待ち、その終了コマンドを受信すると、ソフト的にプログラムのリセットスタートアドレスへジャンプして、図３のＳ１００から処理を開始するようにしても良い。つまり、この場合には、メモリ書換装置１４からの終了コマンドにより、当該ＥＣＵ２が自動的に初期状態から動作を開始することとなる。
【００７７】
また、上記実施形態のＥＣＵ２は、車両のエンジンを制御するものであったが、本発明は、例えばブレーキ、トランスミッション、サスペンション等の他の制御対象を制御する電子制御装置に対しても、全く同様に適用することができる。
【図面の簡単な説明】
【図１】  実施形態の電子制御装置（ＥＣＵ）の構成を表すブロック図である。
【図２】  フラッシュメモリの記憶領域を説明する説明図である。
【図３】  ＥＣＵのマイコンで実行される処理の全体を表すフローチャートである。
【図４】  ＥＣＵのマイコンで実行されるプログラム書換処理を表すフローチャートである。
【図５】  ＥＣＵの作用を説明する説明図である。
【符号の説明】
２…電子制御装置（ＥＣＵ）    ４…センサ    ６…入力処理回路
８…マイクロコンピュータ（マイコン）    １０…アクチュエータ
１２…出力回路    １４…メモリ書換装置    １６…通信回路
ＢＴ…バッテリ    １７…イグニッションスイッチ    １８…電源回路
２０…ＣＰＵ    ２２…フラッシュメモリ    ２４…マスクＲＯＭ
２６…ＲＡＭ    ２８…Ｉ／Ｏ    ３０…接続用コネクタ
３２…通信ライン
【図１】
0003870563.tif 000002
【図２】
0003870563.tif 000003
【図３】
0003870563.tif 000004
【図４】
0003870563.tif 000005
【図５】
0003870563.tif 000006