(57)【特許請求の範囲】
【請求項１】
互いに情報をやり取りする複数の機能ブロックを有するマイクロコンピュータであって、
格納する情報を書き換え可能であり、予め第１のデータが書き込まれている不揮発性記憶装置と、
前記不揮発性記憶装置から読み出した情報を処理し、又は、前記不揮発性記憶装置に情報を書き込む中央処理装置と、
前記複数の機能ブロック間でのデータのやり取りの異常を検出する異常検出部と、
前記異常検出部が異常を検出した場合に、前記第１のデータを前記不揮発性記憶装置から読み出し、前記不揮発性記憶装置に書き込んだときの前記第１のデータの内容を示す第２のデータと、前記第１のデータと、を比較し、比較結果が一致しない場合に前記不揮発性記憶装置の異常を検出する不揮発性記憶装置検査部と、を備える、
マイクロコンピュータ。
【請求項２】
当該マイクロコンピュータと、当該マイクロコンピュータの外部の機器との間のデータの送受を行う入出力部を更に備え、
前記異常検出部が異常を検出した場合、前記入出力部は、当該マイクロコンピュータと、当該マイクロコンピュータの外部の機器との間のデータの送受を停止する、
請求項１に記載のマイクロコンピュータ。
【請求項３】
前記不揮発性記憶装置の異常を検出した場合、前記中央処理装置は、
前記不揮発性記憶装置に書き込まれるべきデータを当該マイクロコンピュータの外部から取得し、
取得した前記データを前記不揮発性記憶装置に書き込み、前記不揮発性記憶装置のデータを復旧する、
請求項２に記載のマイクロコンピュータ。
【請求項４】
前記異常検出部が異常を検出した場合、当該マイクロコンピュータは、前記異常検出部での異常検出前に対応する第１動作モードから、前記異常検出部での異常検出前後に対応する第２動作モードに遷移し、
前記前記不揮発性記憶装置のデータを復旧が完了した後に、前記第２動作モードから前記第１動作モードに遷移する、
請求項３に記載のマイクロコンピュータ。
【請求項５】
当該マイクロコンピュータの動作モードを指定する動作モード制御部を備え、
前記複数の機能ブロックがリセットされ、かつ、リセットが解除されるときに、当該マイクロコンピュータは、前記動作モード制御部が指定する前記第１動作モード又は第２動作モードに対応する動作を行う、
請求項４に記載のマイクロコンピュータ。
【請求項６】
前記不揮発性記憶装置検査部が異常を検出した場合、異常を検出したことを他の機能ブロック及び当該マイクロコンピュータの外部の機器の両方又は一方に通知する、
請求項１乃至５のいずれか一項に記載のマイクロコンピュータ。
【請求項７】
前記異常検出部が異常を検出した場合、異常を検出したことを他の機能ブロック及び当該マイクロコンピュータの外部の機器の両方又は一方に通知する、
請求項１乃至６のいずれか一項に記載のマイクロコンピュータ。
【請求項８】
前記複数の機能ブロックの機能の異常を検出する自己診断部を更に備え、
前記自己診断部は、前記複数の機能ブロックのいずれかの機能の異常を検出した場合、異常を検出したことを他の機能ブロック及び当該マイクロコンピュータの外部の機器の両方又は一方に通知する、
請求項１乃至７のいずれか一項に記載のマイクロコンピュータ。
【請求項９】
前記自己診断部が異常を検出した場合に、前記不揮発性記憶装置検査部が前記不揮発性記憶装置の異常の検出を行う、
請求項８に記載のマイクロコンピュータ。
【請求項１０】
前記異常検出部は、前記中央処理装置から出力される命令が前記中央処理装置において定義された命令ではない場合、前記中央処理装置の不当命令異常を検出する、
請求項１乃至９のいずれか一項に記載のマイクロコンピュータ。
【請求項１１】
前記異常検出部は、前記不揮発性記憶装置のアクセスが禁止されている領域へ前記中央処理装置がアクセスした場合、前記中央処理装置のアクセス異常を検出する、
請求項１乃至１０のいずれか一項に記載のマイクロコンピュータ。
【請求項１２】
外部から動作の制御を受ける被制御装置と、
互いに情報をやり取りする複数の機能ブロックを有し、前記被制御装置の動作を制御するマイクロコンピュータと、を備え、
前記マイクロコンピュータは、
格納する情報を書き換え可能であり、予め第１のデータが書き込まれている不揮発性記憶装置と、
前記不揮発性記憶装置から読み出した情報を処理し、又は、前記不揮発性記憶装置に情報を書き込む中央処理装置と、
前記複数の機能ブロック間でのデータのやり取りの異常を検出する異常検出部と、
前記異常検出部が異常を検出した場合に、前記第１のデータを前記不揮発性記憶装置から読み出し、前記不揮発性記憶装置に書き込んだときの前記第１のデータの内容を示す第２のデータと、前記第１のデータと、を比較し、比較結果が一致しない場合に前記不揮発性記憶装置の異常を検出する不揮発性記憶装置検査部と、を備える、
マイクロコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロコンピュータ及びマイクロコンピュータシステムに関する。
【背景技術】
【０００２】
一般に、シングルチップマイクロコンピュータは、中央処理装置（ＣＰＵ：Central Processing Unit）を中心にして、プログラム保持用のＲＯＭ（Read Only Memory：リードオンリメモリ）、データ保持用のＲＡＭ（Random Access Memory：ランダムアクセスメモリ）、及びデータ又は信号の入出力を行うための入出力回路などの機能ブロックが、一つの半導体基板上に形成されている。
【０００３】
シングルチップマイクロコンピュータは、各種機器の制御に用いられる。シングルチップマイクロコンピュータは、入出力回路を介して、例えば、エンジンなどを制御する。この制御の際に、入出力回路が不所望の状態に陥った場合でも、エンジンのような制御対象で誤動作や故障などが発生することを防止する必要が有る。例えば、入出力回路の１つであるタイマの出力を遮断して制御対象を停止することが提案されている（特許文献１）。
【０００４】
また、シングルチップマイクロコンピュータでは、ＲＯＭ上のプログラムを実行することで高速かつ低消費電力のシステムを構築することができる。この場合、外部のメモリを使用する方式と比較して、プログラムの内容を秘匿したり、改竄を抑止したりすることが容易にできる。しかし、ＲＯＭを含む複数の機能ブロックを１つの半導体基板に形成しなければならないため、搭載可能なＲＯＭ容量には限りがある。例えば、パーソナルコンピュータのハードディスクの記憶容量に比べて、シングルチップマイクロコンピュータのＲＯＭ容量は小さい。そのため、シングルチップマイクロコンピュータでは、ＲＯＭ容量を考慮しつつ、ＲＯＭに記憶させるプログラムやデータを取捨する必要が有る。シングルチップマイクロコンピュータのＲＯＭとして、フラッシュメモリを内蔵する場合が増えている。フラッシュメモリは内容を随時書き換えられるので、デバッグ、チューニング、バージョンアップなどが可能であり、使い勝手を向上させることができる。例えば、記憶させるプログラムやデータも、実際の使用状況を評価して取捨することができる。
【０００５】
近年、ランダムアクセスが可能で情報の不揮発保持が可能なメモリ（ＮＶＲＡＭ：Non-Volatile Random Access Memory）として、磁気抵抗メモリ（ＭＲＡＭ：Magnetoresistive Random Access Memory）が提案されている（特許文献２及び３）。ＭＲＡＭは、通常のＲＡＭと同様に、リード／ライトを行う（ランダムアクセス）ことができる。また、書き込みにあたって、事前に消去を行う必要がない。シングルチップマイクロコンピュータのプログラム保持用及び要保存のデータ格納用のＲＯＭ、作業時の一時的な記憶用のＲＡＭの代替として、プログラム用、要保存のデータ格納用、作業時の一時的な記憶領域用として兼用できるＭＲＡＭを内蔵することが考えられる。
【０００６】
マイクロコンピュータでは、書き換えが可能で不揮発保持が可能なメモリ（フラッシュメモリ、ＮＶＲＡＭ）に、プログラムや、固定的なデータを書き込むためのプログラム（ブートプログラム）を格納し、かつ、通常動作時にブートプログラム領域をリード／ライト禁止にする場合がある。これにより、ブートプログラム領域は保護される。マイクロコンピュータを所定の動作モード（ブートモード）に設定すると、マイクロコンピュータはブートプログラムを実行して、プログラムや固定的なデータの書き込み動作を実行する（特許文献４）。
【０００７】
また、ブートプログラムの実行中などに、書き換えが可能で不揮発保持が可能なメモリやマイクロコンピュータに不所望の電源異常などが発生し、メモリへの書き込みが正常に実行できなかった場合の再書き込みを行う手法が提案されている（特許文献５）。また、フラッシュメモリの書き込みの制御方法も提案されている（特許文献６）。
【０００８】
さらに、マイクロコンピュータでノイズなどの影響で不当な命令コードが実行された場合に対処するため、不当命令例外処理が行われ、例えば初期化の後に再度所定のプログラム実行を行うことが提案されている（特許文献７）また、マイクロコンピュータのハードウェアの故障を検出するために、自己診断を行う手法も提案されている。
【０００９】
フラッシュメモリなどの記憶装置では、一部の記憶素子の故障や劣化による不良が生じ得る。これに対しては、ＥＣＣ（Error Check and Correction）を付加して冗長性を持たせた構成とすることで、一部の記憶素子に不良があっても正常な動作を行うことができる記憶装置が提案されている（特許文献８）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平８−２６３１０４号公報
【特許文献２】特開２００２−２２２５８９号公報
【特許文献３】特開２００４−８６９８６号公報
【特許文献４】特開２００４−３１８３３０号公報
【特許文献５】特開２００１−２７９５４号公報
【特許文献６】特開２００７−３４５５４号公報
【特許文献７】特開２００６−１７１９５２号公報
【特許文献８】特開２００７−２４１６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところが、発明者は、以下で説明する問題点を新たに見出した。マイクロコンピュータの動作時には、デバッグの完了したプログラムを実行するので、本来は不当な命令コードを実行することはありえない。しかし、ノイズなどによる不所望のエラーにより、正規の命令コード（例えば、Ｈ’００００）が異なる命令コード（例えば、Ｈ’１０００）に変化することで、不当な命令コードが実行されることがある。変化により生じた命令コードが、マイクロコンピュータのＣＰＵにとって定義されていない命令である場合には、不当命令例外処理が実行される。
【００１２】
対照的に、変化により生じた命令コードがマイクロコンピュータのＣＰＵにとって定義されているものであれば、不当命令例外処理は実行されず、変化により生じた正しくない命令コードが実行されてしまう。このことは、例えマイクロコンピュータで不当命令例外処理が実行された場合でも、その実行前に変化により生じた正しくない命令コードが実行されたおそれが有ることを意味する。つまり、ＮＶＲＡＭに本来保存されるべきデータが、正しくない命令コードが実行されることで、不所望のデータに書き換えられてしまっているおそれが有る。この場合、データそのものが変化しているので、マイクロコンピュータをリセットしても、回復することができない。このように、ＮＶＲＡＭに格納されたプログラムや要保存のデータの一部が書き換えられてしまうと、マイクロコンピュータは正常な動作を行うことができなくなる。また、このままマイクロコンピュータを動作させると、正常ではない動作が繰り返し実行されることになる。
【００１３】
よって、正しくない命令コードの実行によるＮＶＲＡＭの不所望なデータ書き換えを検出する必要が有る。そして、書き換えられたデータを本来保存されるべきデータに復旧することが望ましい。
【００１４】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
一実施の形態によれば、マイクロコンピュータは、複数の機能ブロックを有するものであり、予め第１のデータが書き込まれている不揮発性記憶装置と、前記不揮発性記憶装置から読み出した情報を処理し、又は、前記不揮発性記憶装置に情報を書き込む中央処理装置と、前記複数の機能ブロック間でのデータのやり取りの異常を検出する異常検出部と、前記異常検出部が異常を検出した場合に、前記不揮発性記憶装置に書き込んだときの前記第１のデータの内容を示す第２のデータと、前記第１のデータと、を比較し、比較結果が一致しない場合に前記不揮発性記憶装置の異常を検出する不揮発性記憶装置検査部と、を備えるものである。
【００１６】
一実施の形態によれば、マイクロコンピュータシステムは、被制御装置と、前記被制御装置の動作を制御するマイクロコンピュータと、を備え、前記マイクロコンピュータは、予め第１のデータが書き込まれている不揮発性記憶装置と、前記不揮発性記憶装置から読み出した情報を処理し、又は、前記不揮発性記憶装置に情報を書き込む中央処理装置と、複数の機能ブロック間でのデータのやり取りの異常を検出する異常検出部と、前記異常検出部が異常を検出した場合に、前記不揮発性記憶装置に書き込んだときの前記第１のデータの内容を示す第２のデータと、前記第１のデータと、を比較し、比較結果が一致しない場合に前記不揮発性記憶装置の異常を検出する不揮発性記憶装置検査部と、を備えるものである。
【発明の効果】
【００１７】
一実施の形態によれば、不揮発性記憶装置に格納されたデータの不所望な書き換えを検出することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１にかかるマイクロコンピュータの構成を模式的に示すブロック図である。
【図２】実施の形態１にかかるマイクロコンピュータの基本構成を模式的に示すブロック図である。
【図３】実施の形態１にかかるマイクロコンピュータのＣＰＵのアドレス空間を示す図である。
【図４】実施の形態１にかかるマイクロコンピュータでの信号のやりとりを示す図である。
【図５】実施の形態１にかかるマイクロコンピュータに含まれるＩ／Ｏの構成例を示すブロック図である。
【図６】実施の形態１にかかるマイクロコンピュータの動作を示すフローチャートである。
【図７】実施の形態１にかかるマイクロコンピュータの状態遷移図である。
【図８】実施の形態２にかかるマイクロコンピュータのＣＰＵのアドレス空間を示す図である。
【図９】実施の形態２にかかるマイクロコンピュータの動作を示すフローチャートである。
【図１０】実施の形態２にかかるマイクロコンピュータの状態遷移図である。
【図１１】実施の形態３にかかるマイクロコンピュータの構成を模式的に示すブロック図である。
【図１２】実施の形態３にかかるマイクロコンピュータの動作を示すフローチャートである。
【図１３】実施の形態４にかかるマイクロコンピュータの状態遷移を示す図である。
【図１４】実施の形態５にかかる制御システムの構成を模式的に示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
【００２０】
実施の形態１
実施の形態１にかかるマイクロコンピュータ１００について説明する。マイクロコンピュータ１００は、シングルチップマイクロコンピュータとして構成することが可能である。図１は、実施の形態１にかかるマイクロコンピュータ１００の構成を模式的に示すブロック図である。図２は、実施の形態１にかかるマイクロコンピュータ１００の基本構成を模式的に示すブロック図である。以下、図１を参照して、マイクロコンピュータ１００の構成を説明する。なお、マイクロコンピュータは、以下ではＭＣＵ（Micro Controller Unit）と略記する。
【００２１】
ＭＣＵ１００は、中央処理装置（ＣＰＵ）１、割り込みコントローラ（Interrupt Controller：以下、ＩＮＴと称する）２、モードコントローラ（ＭＤＣ）３、不揮発性記憶装置（ＮＶＭ）４、ランダムアクセスメモリ（ＲＡＭ）５、バスコントローラ（Bus Controller：以下、ＢＳＣと称する）６、タイマ（ＷＤＴ）７、通信モジュール８、異常検出部９、入出力ポート（Ｉ／Ｏ）１０、内部バス１１を有する。通信モジュール８として、例えばシリアルコミュニケーションインタフェースなどが設けられる。また、図示しないが、ＭＣＵ１００は、アナログモジュール、クロック発振器（ＣＰＧ）などの、他の機能ブロックやモジュールを有していてもよい。また、モード入力信号ＭＤ、図示しないが、ＭＣＵ１００は、リセット入力ＲＥＳや割込入力ＮＭＩの入力端子を有する。アナログモジュールとして、例えばアナログ／デジタル（Ａ／Ｄ）変換器およびデジタル／アナログ（Ｄ／Ａ）変換器などが設けられる。
【００２２】
ＭＣＵ１００では、動作の主体となるのはＣＰＵ１である。ＣＰＵ１は、主にＮＶＭ４から命令を読み込んで動作し、作業用のデータ領域としてＲＡＭ５やＩ／Ｏ１０などをリード／ライトする。ＣＰＵ１でのプログラム実行によって、ＭＣＵ１００は所要の処理を実現する。
【００２３】
ＣＰＵ１は、不当命令例外処理及び割込み例外処理を行うことによって、実行中の処理を中断し、所定ベクタで示されるアドレスから例外処理ルーチンへジャンプして実行を開始する。ジャンプ先は、ＭＤＣ３からの動作モード信号ＭＤＳによって選択される。
【００２４】
図３は、ＣＰＵ１のアドレス空間を示す図である。ＣＰＵ１のアドレス空間は、一端から他端に向けてリニアにアドレスが割り当てられる。アドレス空間には、ＭＣＵ１００の内部の資源に対応して、ＮＶＭアドレス領域２０、空領域３１、ＲＡＭ領域３２及び内部Ｉ／Ｏレジスタ領域３３が配置されている。内部Ｉ／Ｏレジスタ領域３３は、ＢＳＣ６、ＭＤＣ３、ＩＮＴ２、ＷＤＴ７、通信モジュール８が有するレジスタに対応する領域である。それぞれのアドレス領域の容量の設定などは、ＭＣＵ１００が適用される応用分野などによって、適切に設定することができる。ＮＶＭアドレス領域２０には、後述する確認用データＤＡＴ１が割り当てられる。
【００２５】
図１に戻り、ＭＣＵ１００の構成について引き続き説明する。ＩＮＴ２は、エラー信号やその他の信号が入力されると、入力された信号に応じて、ＣＰＵ１に割込み要求を与える。ＣＰＵ１は、割込み要求が与えられると、命令の切れ目で割込み例外処理を行う。
【００２６】
ＭＤＣ３は、例えば外部からのモード入力信号ＭＤを受けて、ＭＣＵ１００の動作モードを指定する。ＭＤＣ３は、ＭＣＵ内の各機能ブロック、例えばＣＰＵ１、ＮＶＭ４及びＢＳＣ３に動作モード信号ＭＤＳを出力して、ＣＰＵ１、ＮＶＭ４及びＢＳＣ６などの動作を制御する。
【００２７】
ＮＶＭ４は、ＮＶＭ４自体の制御機能を司るＮＶＭ検査部４Ａを含んでいる。ＣＰＵ１からのコマンドなどによって、ＮＶＭ４は消去や書き込みの動作を開始する。ＮＶＭ検査部４Ａは、書き込み動作時に、書き込み内容に応じて、チェックサムや巡回符号などの確認用データＤＡＴ１を生成し、生成した確認用データＤＡＴ１をＮＶＭ４の所定の領域に書き込むことが可能である。ＮＶＭ４は、消去や書き込みの動作中以外の状態では、リードオンリメモリ（ＲＯＭ）として動作する。
【００２８】
ＲＡＭ５は、ＣＰＵ１の作業用に使用される。また、ＲＡＭ５は、ＮＶＭ４の書き換え時に書き込み内容を一時記憶するために使用される。
【００２９】
ＢＳＣ６は、ＣＰＵ１のアクセス内容と、ＭＤＣ３からの動作モード信号ＭＤＳに従って、内部バス１１の動作を制御する。
【００３０】
ＷＤＴ７は、図示しないものの、カウンタやその他の制御レジスタを有する。
【００３１】
通信モジュール８は、所要のシステムに対応した機能を有し、外部との通信を行う。なお、通信モジュール８は、複数の種類の通信手段（通信方式）を有してもよい。
【００３２】
Ｉ／Ｏ１０は、種々の入出力機能を有し、ＣＰＵ１のプログラム実行に従って動作する。Ｉ／Ｏ１０は、制御対象の状態がアナログ信号やエンコード信号として入力され、パルス信号やアナログ信号を出力して制御対象の制御を行う。Ｉ／Ｏは出力制御ブロックを含み、この出力制御ブロックは、エラー信号を入力し、このエラー信号が活性化されたときに、出力状態を、制御対象に応じた非活性状態などの所定の状態に切り替える。かかる所定の状態は、固定的なものであってもよく、あるいは、予め、ＣＰＵのプログラム実行によって、設定するようにしてもよい。
【００３３】
異常検出部９は、所定の対象機能ブロックのテストや期待値確認などを行って、ＭＣＵ１００内の各機能ブロック間のデータのやり取りに生じる異常を検出する。異常な検査結果が得られた場合には、異常検出部９はエラー信号を出力する。エラー信号は、異常検出を行う箇所の数は検査方法の数に応じて、複数の信号を含んでいてもよい。異常検出部９は、内部バス１１を介して、エラー信号をＭＣＵ１０内部の各機能ブロックに送出できる。また、異常検出部９は、通信モジュール８を介して、ＭＣＵ１００の外部にエラー信号を送出してもよい。さらに、異常検出部９は、異常を検出した際に、ＭＣＵ１００の外部にアラームを送出することもできる。
【００３４】
ここで、異常検出部９が検出する各機能ブロック間のデータのやり取りに生じる異常とは、例えば、各機能ブロックでのデータに生じる異常や、内部バス１１を介してデータの送受の異常を意味する。以下では、異常検出部９が検出する各機能ブロック間のデータのやり取りに生じる異常を、データ異常と称する。
【００３５】
なお、図１では、異常検出部９を、内部バス１１を介して他の機能ブロックと接続される独立した機能ブロックとして説明したが、これは例示に過ぎない。すなわち異常検出部９は、他の機能ブロック（ＣＰＵ１、ＩＮＴ２、ＭＤＣ３、ＮＶＭ４、ＲＡＭ５、ＢＳＣ６、ＷＤＴ７、通信モジュール８、Ｉ／Ｏ１０）の内部に設けられていてもよい。また、異常検出部９は、１つに限られるものではなく、他の機能ブロックの一部又は全部の内部に設けられていてもよい。また、複数の異常検出部が設けられる場合には、それぞれの異常検出部は、異なる検査方法、検査対象に対応させることも可能である。
【００３６】
ここで、異常検出部９での異常検出動作の例について説明する。図４は、実施の形態１にかかるＭＣＵでの信号のやりとりを示す図である。
異常検出部９の第１の例：不当命令検出
異常検出部９は、例えば、ＣＰＵ１の不当命令検出を行うことが可能である。この場合、異常検出部９は、ＣＰＵ１に内蔵されていてもよい。異常検出部９は、実行すべき命令を検査して、当該命令が定義されていないものである場合、検査対象となった命令を不当命令として検出する。異常検出部９は、不当命令を検出したならば、エラー信号の１つである命令エラー信号ＯＰＥＲＲを活性化するとともに、所定の例外処理（不当命令例外処理）を発生させる。不当命令例外処理と後述するエラー検出に対応する例外処理では、ＮＶＭ４上の所定のプログラムが実行することもできる。
【００３７】
異常検出部９の第２の例：アドレスエラー検出
異常検出部９は、例えば、ＢＳＣ６でのバス動作の際のアドレスエラーを検出することができる。この場合、異常検出部９は、ＢＳＣ６に内蔵されていてもよい。異常検出部９は、ＣＰＵ１のアクセス内容を検査し、検査対象となったアクセスが不当なアクセスの場合、アドレスエラーを検出する。異常検出部９は、アドレスエラーを検出したならば、エラー信号の１つであるアドレスエラー信号ＡＤＥＲＲを活性化し、ＩＮＴ２に伝達する。なお、不当なアクセスとは、例えば、アクセスが禁止される内部の資源が配置されていないアドレス（空領域）に対するリード／ライトや、内部Ｉ／Ｏレジスタ領域からのプログラムのリードをいう。
【００３８】
異常検出部９の第３の例：カウンタエラー検出
異常検出部９は、例えば、ＷＤＴ７でのカウンタエラーを検出することができる。この場合、異常検出部９は、ＷＤＴ７に内蔵されていてもよい。ＣＰＵ１は、正常に動作している限り、カウンタがオーバフローする前にカウンタに０などをライトし、オーバフローを抑止するように動作する。しかし、ノイズなどによる一時的な誤動作や回路の故障などの不所望の要因により、ＣＰＵ１が正常な動作を行えなくなると、カウンタがオーバフローしてしまう。異常検出部９は、カウンタのオーバフローを検出し、エラー信号の１つであるオーバフロー信号ＷＤＴＯＶＦを活性化することができる。
【００３９】
上記のように、異常検出部９が異常を検出すると、異常検出部９は、命令エラー信号ＯＰＥＲＲ、アドレスエラー信号ＡＤＥＲＲ、オーバフロー信号ＷＤＴＯＶＦなどを活性化できる。ＩＮＴ２は、命令エラー信号ＯＰＥＲＲ、アドレスエラー信号ＡＤＥＲＲ、オーバフロー信号ＷＤＴＯＶＦに応じて、ＣＰＵ１に割込み要求を与える。また、ＩＮＴ２は、エラー信号のみならず、外部から入力されるマスク不可能な割込みＮＭＩやその他の信号が入力されたときにも、ＣＰＵ１に割込み要求を与えることができる。なお、アドレスエラー信号ＡＤＥＲＲは、マスク不可能な割込みとして扱われる。ＣＰＵ１は、割込み要求が与えられると、命令の切れ目で割込み例外処理を行うことができる。
【００４０】
また、エラー信号に応じて割込み例外処理を行うにあたり、エラーが生じた機能ブロックに対応するＩ／Ｏ１０の出力状態を、非活性状態などの所定の状態にすることもできる。これは、エラー信号に呼応して、ハードウェア的に実施（例えば、Ｉ／Ｏ１０）してもよいし、ＣＰＵ１がプログラム実行することで実施してもよい。エラー信号が複数活性化されている場合には、活性化されたエラー信号に対応した複数の出力状態を、非活性状態などの所定の状態にするようにしてもよい。Ｉ／Ｏ１０の出力状態を非活性化することで、Ｉ／Ｏ１０の外部への誤った信号の送出、及び、Ｉ／Ｏ１０を介して入力された信号に応じて誤ったデータに基づく誤動作を防止することができる。
【００４１】
図５は、実施の形態１にかかるＭＣＵ１００に含まれるＩ／Ｏ１０の構成例を示すブロック図である。Ｉ／Ｏ１０は、Ｉ／Ｏ制御部１０Ａ、非活性データレジスタ１０Ｂ及びセレクタ１０Ｃを有する。Ｉ／Ｏ制御部１０Ａは、エラー信号に応じてセレクタ１０Ｃに制御信号ＣＯＮを出力し、セレクタ１０Ｃの動作を制御する。Ｉ／Ｏ制御部１０Ａは、エラー信号が非活性である場合には、セレクタ１０Ｃに通常動作出力を外部へ出力させる。Ｉ／Ｏ制御部１０Ａは、エラー信号が活性化された場合には、セレクタ１０Ｃに非活性データレジスタ１０Ｂの出力を外部へ出力させる。これにより、エラー信号が活性化された場合には、セレクタ１０Ｃは、通常動作出力と切り離され、固定された非活性データレジスタ１０Ｂの出力と接続される。これにより、ＭＣＵ１００でエラーが生じても、Ｉ／Ｏ１０が停止（非活性化）される。
【００４２】
ＭＣＵ１００でエラーが検出された場合、ＭＣＵ１００は所望の動作を行っておらず、Ｉ／Ｏ１０から誤った信号が外部に出力され、また、Ｉ／Ｏ１０を介して外部から入力された信号に誤った反応をする事態が生じ得る。この場合、Ｉ／Ｏ１０を介してＭＣＵ１００に制御される制御対象の制御状態も不所望の状態に陥るおそれがある。しかし、上述のように、エラー発生時にＩ／Ｏ１０を停止することで、ＭＣＵ１００と制御対象とのデータのやり取りを遮断し、例えば制御対象を停止し、制御対象が不所望の状態に陥ることを防止できる。
【００４３】
続いて、ＭＣＵ１００の動作について説明する。図６は、実施の形態１にかかるＭＣＵ１００の動作を示すフローチャートである。図７は、実施の形態１にかかるＭＣＵ１００の状態遷移図である。
【００４４】
ステップＳ１１
ＭＣＵ１００では、異常検出部９が内部バス１１を介した機能ブロック間のデータのやり取りにエラーが生じていないかを、常時監視している（図７の第１動作モードＭＯＤＥ１）。
【００４５】
ステップＳ１２
内部バスを介した機能ブロック間のデータのやり取りにエラーが生じた場合、異常検出部９は異常を検出する。異常検出部９は、異常を検出したことを外部に通知することができる。異常検知により、ＭＣＵ１００は、第１動作モードＭＯＤＥ１から第２動作モードＭＯＤＥ２へ遷移する。
【００４６】
ステップＳ１３
機能ブロック間のデータのやり取りにエラーが生じた場合、ＮＶＭ検査部４Ａは、ＮＶＭ４のデータの確認動作を実行する。ＮＶＭ検査部４Ａは、ＮＶＭ４のアドレス領域に含まれる確認用データアドレスから、ＮＶＭ４に予め確認されている確認用データＤＡＴ１を読み出す。そして、ＮＶＭ検査部４Ａは、予め保有している基準データＤＡＴ２と、読み出した確認用データＤＡＴ１とが一致するかを判定する。なお、基準データＤＡＴ２は、ＮＶＭ４に書き込んだ確認用データＤＡＴ１の元々の内容を示すデータであり、換言すれば、確認用データＤＡＴ１の期待値を示すデータである。
【００４７】
ステップＳ１４
基準データＤＡＴ２と確認用データＤＡＴ１とが一致しない場合、異常を検出する前に行われたＮＶＭ４へのデータの書き込みに問題が有るので、ＮＶＭ検査部４Ａは、ＮＶＭエラーを検出し、例えばアラームを送出する。その後、ステップＳ１４に進む。
【００４８】
ステップＳ１５
基準データＤＡＴ２と確認用データＤＡＴ１とが一致する場合、またはステップＳ１４の後、Ｉ／Ｏ１０を停止（非活性化）し、ＭＣＵ１００の外部への誤ったデータ送出が防止される。本動作の終了後は、適宜リセット処理などから動作を再開する。
【００４９】
以上、本構成によれば、ＭＣＵ内部でデータ異常が生じた場合に、異常発生前にＮＶＭに書き込まれたデータに異常が発生しているか否かを検出することができる。その結果、ＮＶＭへ正しいデータを再ライトし、又は、外部からＮＶＭのリカバリを指示するなど、ＮＶＭエラーに応じた適切な対応を行うことが可能となる。
【００５０】
特に、単一のＭＣＵ、単一のＮＶＭを利用するのみでＮＶＭエラーを検出できるので、チップサイズの増加などのコストの増加を招くことなく、ＮＶＭエラーの見逃しを抑制することができる。
【００５１】
実施の形態２
実施の形態２にかかるＭＣＵ２００について説明する。ＭＣＵ２００は、ＭＣＵ１００と同様の構成を有するが、ＣＰＵ１のアドレス空間及び動作が異なる。ＭＣＵ２００は、ＮＶＭエラーを検出した場合、ＮＶＭのリカバリ動作をおこなうものである。
【００５２】
図８は、実施の形態２にかかるＭＣＵ２００のＣＰＵ１のアドレス空間を示す図である。本実施の形態では、ＣＰＵ１のアドレス空間の内、ＮＶＭアドレス領域２０が、第１アドレス領域２１及び第２アドレス領域２２に区分けされている。第１アドレス領域２１は、ＭＣＵ１００が所要の処理を行うためのプログラム（ユーザプログラム）を格納する。また、第１アドレス領域２１には、ＮＶＭ４のデータ確認動作で用いられるチェックサムデータなどの確認用データＤＡＴ１が保持されるアドレスが含まれる。第２アドレス領域２２は、ブートモードやリカバリモードで実行するプログラムＰＲＧ（ブートプログラム、リカバリプログラム）を格納する。
【００５３】
続いて、ＭＣＵ２００の動作について説明する。図９は、実施の形態２にかかるＭＣＵ２００の動作を示すフローチャートである。図１０は、実施の形態２にかかるＭＣＵ２００の状態遷移図である。ＭＣＵ２００の動作は、図６に示すステップＳ１１〜Ｓ１５に、ステップＳ２１〜Ｓ２４を追加した構成を有する。以下、追加したステップＳ２１〜Ｓ２４に焦点を当てて説明する。
【００５４】
ＭＣＵ２００では、異常検出部９が内部バス１１を介した機能ブロック間のデータのやり取りにエラーが生じていないかを、常時監視している（図１０の第１動作モードＭＯＤＥ１）。なお、ＢＳＣ６は、第１動作モードＭＯＤＥ１のとき、ＣＰＵ１のプログラム実行に従って第１アドレス領域２１のリード／ライトを行うことができる。また、第１動作モードＭＯＤＥ１においては、ＮＶＭアドレス領域２０の第２のアドレス領域２２のライトが禁止される。よって、第２アドレス領域２２へのライトが発生した場合には、ＢＳＣ６はアドレスエラーを検出する。すなわち、第１動作モードＭＯＤＥ１のとき、第２アドレス領域２２の内容は保護される。例えば、ＮＶＭ４がフラッシュメモリなど、所定のコマンドなどによって消去や書き込みが可能である場合、ライトが禁止されることで消去及び書き込みが禁止される。ＢＳＣ６ではなく、ＮＶＭ４自体が動作モード信号を受け取って、ライトを禁止してもよい。
【００５５】
ステップＳ１１
ステップＳ１１については、図６と同様であるので、説明を省略する。
【００５６】
ステップＳ１２
ステップＳ１２については、図６と同様である。但し、本実施の形態では、第２動作モードＭＯＤＥ２に遷移することで、第１アドレス領域２１及び第２アドレス領域２２のリード／ライトが可能となる。これにより、ＣＰＵ１は、第２アドレス領域２２からリカバリプログラムＰＲＧを読み出して実行し、第１アドレス領域２１の書き込みとデータ確認を行うことができる。
【００５７】
ステップＳ１３〜Ｓ１５
ステップＳ１３〜Ｓ１５については、図６と同様であるので、説明を省略する。
【００５８】
ステップＳ２１
ＣＰＵ１がリカバリプログラムを実行することで、ステップＳ２１以降の動作が行われる。
ステップＳ１４においてＮＶＭエラーが通知されたならば、ステップＳ１５と同様にＩ／Ｏ１０を停止する。
【００５９】
ステップＳ２２
ＣＰＵ１は、外部から通信モジュール８を介して、外部からＮＶＭ４に書き込むべきデータを受信する。
【００６０】
ステップＳ２３
ＣＰＵ１は、外部から受信したデータをＮＶＭ４に書き込む。
【００６１】
ステップＳ２４
その後、第１動作モードＭＯＤＥ１に遷移し、通常動作に復帰する。適宜、リセット処理を実行してもよい。この際、Ｉ／Ｏ１０は、活性化される。
【００６２】
以上、本構成によれば、ＮＶＭエラーを検出した場合に、外部からＮＶＭ４に本来書き込まれるべきデータを取得してＮＶＭ４に書き込みなおすことで、ＮＶＭ４のデータを復旧することができる。これにより、ＮＶＭ復旧後に、ＭＣＵ１００を速やかに通常動作状態に移行させることが可能となる。
【００６３】
なお  第２動作モードＭＯＤＥ２でのリカバリプログラムＰＲＧの実行に先立って、リカバリプログラムＰＲＧ自体の内容を確認するようにしてもよい。これは、ＮＶＭ４に格納されたデータが消失する可能性もあるためである。
【００６４】
ＩＮＴ２によって、プログラムの実行開始アドレスが個別に指定される場合などは、この指定に従って第２動作モードＭＯＤＥ２でのリカバリプログラムを複数の割込み処理ルーチンに分割して実装することができる。
【００６５】
さらにリカバリプログラムを第２動作モードＭＯＤＥ２で実行することにより、第２アドレス領域２２に格納されるプログラムの内容を秘匿し、不所望の改竄を防ぐことができる。これにより、ＭＣＵの使用者がプログラムの内容を考慮することなく、ＮＶＭ復旧の利便性のみを享受することができる。
【００６６】
実施の形態３
実施の形態３にかかるＭＣＵ３００について説明する。図１１は、実施の形態３にかかるＭＣＵ３００の構成を模式的に示すブロック図である。ＭＣＵ３００は、ＭＣＵ１００に自己診断部１２を追加した構成を有する。ＭＣＵ３００のその他の構成は、ＭＣＵ１００と同様であるので、説明を省略する。
【００６７】
自己診断部１２は、異常検出部９がデータ異常を検出した場合に、各機能ブロックの機能に異常がないかを診断するものである。自己診断部１２は、いずれかの機能ブロックの機能に異常が有る場合、自己診断エラーを検出する。自己診断部１２は、自己診断エラーを他の機能ブロックやＭＣＵ３００の外部にアラームなどで通知することが可能である。
【００６８】
自己診断は、例えば、機能ブロックから出力される値と期待値とを比較し、一致するか否かを判定することで、判定対象となった機能ブロックの故障を検出することができる。また、自己診断は、例えば、機能ブロック等に実装される機能を二重化し、二重化した機能の出力結果が一致するかを判定して、判定対象となった機能ブロック等の故障を検出することができる。さらに、自己診断は、例えば、所定のデータ経路にＥＣＣを付加し、当該データ経路でデータをリード／ライトするときのＥＣＣエラーを検出することで、当該データ経路にかかる故障を検出することができる。
【００６９】
続いて、ＭＣＵ３００の動作について説明する。図１２は、実施の形態３にかかるＭＣＵ３００の動作を示すフローチャートである。ＭＣＵ３００の動作は、図６に示すステップＳ１１〜Ｓ１５に、ステップＳ３１及びＳ３２を追加した構成を有する。
【００７０】
ステップＳ１１
ステップＳ１１については、図６と同様であるので、説明を省略する。
【００７１】
ステップＳ３１
データエラーが検出されたならば、自己診断部１２は、各機能ブロックの機能に異常がないかを診断する。
【００７２】
ステップＳ３２
自己診断部１２は、機能ブロックのいずれかの機能に異常が有る場合には、自己診断エラーを検出する。自己診断部１２は、他の機能ブロックやＭＣＵ３００の外部に自己診断エラーを通知することができる。その後、ステップＳ１４へ進む。
【００７３】
ステップＳ１２〜Ｓ１５
自己診断エラーが検出されない場合、ステップＳ１２に進み、以降は図６と同様の動作を行う。
【００７４】
以上、本構成によれば、データエラーの原因が、機能ブロックの機能異常によるものか、ＮＶＭエラーによるものかを切り分けて検出することができる。その結果、ＭＣＵで異常が生じた際に、異常復旧の対策を容易に策定することができる。回路の故障が生じた場合、例えば、配線の断線、トランジスタの破壊などであって、この状態は継続する。そのため、所望の所期のプログラムの実行が行えない場合が生じる。この場合には、上記の通り自己診断でＮＶＭエラーと切り分けて故障を検出できるので、回路の故障に応じた復旧を行うこととができる。
【００７５】
自己診断は、通常動作状態では行えない場合が考え得る。つまり、自己診断で回路の故障を検出した場合でも、それ以前に故障した回路が命令コードの実行に関与したおそれがある。この場合には、自己診断エラーが検出された場合でも、ＮＶＭエラーが生じているか否かの検出を行うことで、故障回路が命令コード実行に関与したことで生じるＮＶＭエラーを検出することができる。
【００７６】
実施の形態４
実施の形態４にかかるＭＣＵ４００について説明する。ＭＣＵ４００は、ＭＣＵ２００の変形例である。なお、ＭＣＵ４００の構成は、ＭＣＵ２００と同様であるので、説明を省略する。本実施の形態では、ＭＣＵ４００への電源投入時や故障復帰時などにリセットされる場合に、リセットが解除された際の動作について説明する。なお、リセットは、例えばＭＣＵ４００の外部から行うことが可能であり、電源投入時にはパワーオンリセットとして実行してもよい。
【００７７】
図１３は、実施の形態４にかかるＭＣＵ４００の状態遷移を示す図である。ＭＤＣ３が第１動作モードＭＯＤＥ１での動作を指定している場合、リセット解除後にＭＣＵ４００は第１動作モードＭＯＤＥ１での動作を開始する。その後、図９に示す動作を適宜実行する。
【００７８】
ＭＤＣ３が第２動作モードＭＯＤＥ２での動作を指定している場合、リセット解除後にＭＣＵ４００は第２動作モードＭＯＤＥ２での動作、すなわち、図９に示すステップＳ１３から動作を開始する。
【００７９】
以上、本構成によれば、リセット解除後に第２動作モードＭＯＤＥ２が指定された場合、でリセット解除前の他の動作などによりＮＶＭエラーが生じていたとしても、ＮＶＭを自動的に復旧することができる。これにより、リセット後のＭＣＵの動作を正常化できる可能性をより高めることが可能となる。
【００８０】
実施の形態５
実施の形態５にかかる制御システム５００について説明する。制御システム５００は、上述のＭＣＵが組み込まれたシステムとして構成される。図１４は、実施の形態５にかかる制御システム５００の構成を模式的に示すブロック図である。
【００８１】
制御システム５００は、ＭＣＵ２００、制御対象５０１、ネットワーク（ＣＡＮ）５０２、通信部５０３及び表示装置５０４を有する。制御システム５００が自動車制御システムである場合、例えば制御対象５０１はエンジンであり、エンジンの点火制御などを行う。
【００８２】
ＭＣＵ２００と制御対象（エンジン）５０１とは、Ｉ／Ｏ１０を介してデータのやりとりを行う。つまり、ＭＣＵ２００にデータ異常が生じた場合、Ｉ／Ｏ１０を非活性化することで、例えばエンジンを停止し、自動車の運行が危険な状態にならないようにすることができる。
【００８３】
ＮＶＭ４に書き込むべき内容は、ＭＣＵ自体の通信手段（例えば、通信モジュール８）を利用して、外部から直接入力することもできる。また、ＣＡＮなどのネットワーク５０２を介して接続された他のデバイスの通信手段（通信部５０３）を利用して、入力することもできる。他のデバイスが外部との通信手段として無線通信機能、例えば、ＷＡＶＥ（Ｗｉｒｅｌｅｓｓ  Ａｃｃｅｓｓ  ｉｎ  Ｖｅｈｉｃｌｅ  Ｅｎｖｉｒｏｎｍｅｎｔ）などを有する場合、無線通信機能を利用することで、リカバリ専用入力機能を削減でき、システムのハードウェア機能の追加を回避することができる。
【００８４】
なお、上述の他のデバイスに、上述のＭＣＵにおけるＮＶＭエラー検出機能を実装し、ＮＶＭに書き込むべき内容の入力手段を共通にすることができる。
【００８５】
また、制御システムにおいてＭＣＵ３００を用いる場合には、自己診断エラーの内容を、通信手段を介して外部に出力した後、その内容に応じて、外部から受信した内容をＮＶＭ４に書き込むこと以外の処理を行うようにする指示入力を行うこともできる。
【００８６】
さらに、他のデバイスが、所要のビデオインタフェースなどを介して、表示装置５０４を制御するようにできる。この場合、自己診断エラーの内容に基づく情報を表示装置５０４に表示させることができる。また、自己診断エラーの内容に応答して、外部から入力した指示入力情報を表示装置に表示するようにしてもよい。例えば、運転者に必要な動作を教示して安全な運転状態を促すことで、運転者を安全な状態に導くことができる。なお、表示装置５０４は、ネットワーク５０２に接続された別のデバイスによって制御するようにしてもよい。
【００８７】
上述のようにシステム内にシステム外との通信を行う他のデバイスが存在する場合、自己診断エラーや故障検出の内容の外部への通知や、ＮＶＭに書き込むプログラムの入力のための通信を、システム外との通信およびマイクロコンピュータと他のデバイスとの通信を経由して行うことができる。これにより、システム上のハードウェアの機能の追加を抑止し、システムの複雑化を抑止することができる。
【００８８】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、実施の形態３にかかるＭＣＵ３００についても、実施の形態２にかかるＭＣＵ２００と同様に、ステップＳ２１〜Ｓ２４でのＮＶＭ復旧動作を併せて行うことができる。
【００８９】
実施の形態４にかかるＭＣＵ４００についても、実施の形態３にかかるＭＣＵ３００と同様にステップＳ３１及びＳ３２での自己診断を併せて行うことができる。
【００９０】
実施の形態５に係る制御システムではあ、ＭＣＵ２００及びＭＣＵ３００を用いる例について説明したが、ＭＣＵ１００、ＭＣＵ４００及びその他上述の説明にかかるＭＣＵを適用できることは言うまでもない。
【００９１】
ＮＶＭは、ランダムアクセス可能なメモリ（ＮＶＲＡＭ）として構成することができる。この場合、ＮＶＭとＲＡＭとを共通化し、ＲＡＭを除去することができる。また、ＮＶＭにキャッシュメモリなどを加えることもできる。
【００９２】
Ｉ／Ｏ１０の出力状態を非活性化する場合、その手段は適宜選択し得る。例えば、Ｉ／Ｏ１０をハイインピーダンス状態とすることで、非活性させることができる。非活性化にあたって、所定の状態遷移を形成するようにしてもよい。Ｉ／Ｏ１０の非活性化は、ハードウェアで実装してもよいし、ＣＰＵ１のプログラム実行と組み合わせて実現するようにしてもよい。
【００９３】
ＮＶＭ検査部４Ａは、専用のＣＰＵとすれば種々の変更に対応しやすい。また、ＮＶＭ検査部４Ａの必要な機能を、専用のハードウェアで実装することもできる。
【００９４】
ＮＶＭアドレス領域２０の第２アドレス領域２２に対するライトの禁止の実現については、種々の手段を用いることができる。
【００９５】
データエラーの検出内容や検出手段は、適宜変更することができる。エラー検出の伝達経路も、適宜変更することができる。自己診断部１２は、自己診断を行う対象に応じて、適切に実装すればよい。
【００９６】
ＭＣＵの構成やアドレス空間は例示であり、上述の例に限定されない。通信手段やそのほかの機能ブロックなども、適宜削除、追加、変更できる。
【００９７】
制御システム５００の構成や用途は例示であり、適宜変更できる。
【００９８】
以上の説明では、シングルチップマイクロコンピュータの例を説明したが、これに限定されるものではなく、マイクロコンピュータの外部にフラッシュメモリなどの電気的に書き換え可能なプログラム格納用のメモリを設ける構成にすることもできる。また、その他の半導体集積回路装置、例えば、デジタルシグナルプロセッサ（ＤＳＰ）を中心にした半導体集積回路装置にも適用可能である。換言すれば、上述のＮＶＭエラー検出とこれに付随する機能、動作は、データ処理装置のプログラムを書き換え可能なメモリに格納した半導体集積回路装置に適用することができる。
【００９９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１００】
１  ＣＰＵ（中央処理装置）
２  ＩＮＴ（割り込みコントローラ）
３  ＭＤＣ（モードコントローラ）
４  ＮＶＭ（不揮発性記憶装置）
４Ａ  ＮＶＭ検査部
５  ＲＡＭ（ランダムアクセスメモリ）
６  ＢＳＣ（バスコントローラ）
７  ＷＤＴ（タイマ）、
８  通信モジュール
９  異常検出部
１０  Ｉ／Ｏ（入出力ポート）
１０Ａ  Ｉ／Ｏ制御部
１０Ｂ  非活性データレジスタ
１０Ｃ  セレクタ
１１  内部バス
１２  自己診断部
２０  ＮＶＭアドレス領域
２１  第１アドレス領域
２２  第２アドレス領域
３１  空領域
３２  ＲＡＭ領域
３３  内部バスレジスタ領域
１００、２００、３００、４００  ＭＣＵ（マイクロコンピュータ）
５００  制御システム
５０１  制御対象
５０２  ネットワーク
５０３  通信部
５０４  表示装置
ＡＤＥＲＲ  アドレスエラー信号
ＣＯＮ  制御信号
ＤＡＴ１  確認用データ
ＤＡＴ２  基準データ
ＭＤ  モード入力信号
ＭＤＳ  動作モード信号
ＯＰＥＲＲ  命令エラー信号
ＰＲＧ  プログラム
ＷＤＴＯＶＦ  オーバフロー信号
【図１】
0006341795.tif 000002
【図２】
0006341795.tif 000003
【図３】
0006341795.tif 000004
【図４】
0006341795.tif 000005
【図５】
0006341795.tif 000006
【図６】
0006341795.tif 000007
【図７】
0006341795.tif 000008
【図８】
0006341795.tif 000009
【図９】
0006341795.tif 000010
【図１０】
0006341795.tif 000011
【図１１】
0006341795.tif 000012
【図１２】
0006341795.tif 000013
【図１３】
0006341795.tif 000014
【図１４】
0006341795.tif 000015