(57)【要約】【課題】小規模なマイクロコンピュータでは、メモリ管理ユニットと呼ばれるメモリ保護を実現するためのハードウェアを持たないものが多く、アプリケーションスレッドからメモリを保護する機能を実装することが困難である。【解決手段】マイクロコンピュータのデバッグ機能として搭載される特定エリアアクセスブレーク機能を用いて、オペレーティングシステムがアプリケーションスレッドに実行権を渡す際に、あらかじめアプリケーションスレッドから保護したいメモリエリアを設定した後にアプリケーションスレッドに実行権を渡すことによって実現する。これによって、アプリケーションスレッドによる保護エリアへのアクセスの際には、特定エリアアクセスブレーク機能によって発生する割り込みによってオペレーティングシステムに実行権を取り戻し、不正なメモリアクセスを行ったスレッドの処理を行う。【選択図】図４
2008040964.tif 000002
【特許請求の範囲】
【請求項１】
メモリに予め指定した特定のアドレスエリアに、リード又はライトアクセスを行った際に割り込みを発生する特定エリアアクセスブレーク機能を備えたマイクロコンピュータ上で動作するオペレーティングシステムであって、
該マイクロコンピュータ上で動作するものであって該オペレーティングシステムが実行権を管理する複数のアプリケーションスレッドのうちのいずれか一つに該オペレーティングシステムが実行権を与える際に、該特定エリアにアクセスしたときに該特定エリアアクセスブレーク機能の割り込みを発生するように設定し、
該アプリケーションスレッドが該特定エリアにアクセスした際には、このアクセスをアクセス違反とみなし、該特定エリアアクセスブレーク機能の割り込みにより、該オペレーティングシステムに実行権を取り戻し、アクセス違反を行ったアプリケーションスレッドに関して、所定のルールに基づいたスケジューリングを行うという不正アクセス検出機能を備えることを特徴とするオペレーティングシステム。
【請求項２】
メモリに予め指定した特定のアドレスエリアに、リード又はライトアクセスを行った際に割り込みを発生する特定エリアアクセスブレーク機能を備えたマイクロコンピュータ上で動作するオペレーティングシステムであって、
該マイクロコンピュータ上で動作するものであって該オペレーティングシステムが実行権を管理する複数のアプリケーションスレッドのうちのいずれか一つに該オペレーティングシステムが実行権を与える際に、該特定エリアにアクセスしたときに該特定エリアアクセスブレーク機能の割り込みを発生するように設定し、
該アプリケーションスレッドが該特定エリアにアクセスした際には、このアクセスをアクセス違反とみなし、該特定エリアアクセスブレーク機能の割り込みにより、該オペレーティングシステムに実行権を取り戻し、アクセス違反を行ったアプリケーションスレッドに関して、所定のルールに基づいたスケジューリングを行うという不正アクセス検出機能を備えることを特徴とするオペレーティングシステムが搭載された制御装置であって、
アクセス違反を行ったアプリケーションスレッドを停止させても該制御装置の実行に支障がない場合、該アプリケーションスレッドを強制終了させることを特徴とする制御装置。
【請求項３】
請求項２に記載された制御装置が、車両用の電動ブレーキの制御装置であることを特徴とする電動ブレーキコントローラ。
【請求項４】
請求項３に記載されたコントローラが、不正アクセスがあったことを検出した場合、ドライバーに対し通知する手段を備えたことを特徴とする電動ブレーキコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムに関わり、詳しくはアプリケーションによる不正メモリアクセスの検出と検出後の動作に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータに搭載される組み込みソフトウェアは、サイズの増大や処理の多様化によりますます複雑化している。このような中で、比較的小規模な組み込みシステムにおいても、オペレーティングシステムが搭載されるケースが増えている。オペレーティングシステムを搭載する理由は、ソフトウェアの移植性の向上や、マイクロコンピュータの処理能力に対する利用率の向上など、多くのメリットを期待できるからである。一部のオペレーティングシステムは、アプリケーションプログラムからアクセス可能なメモリ領域以外を保護するためのメモリ保護機能を備えることにより、高い堅牢性を実現している。
【０００３】
メモリ保護機能は、マイクロコンピュータに搭載されるメモリ管理ユニットと呼ばれるハードウェアによって実現される。メモリ保護機能は、プロセスと呼ばれる実行単位に分割されたプログラムの間で機能する。そして、オペレーティングシステムは各プロセスに仮想アドレス空間を割り当て、各プロセスは仮想アドレス空間を自由に読み書きすることができる。仮想アドレス空間へのアクセスは、メモリ管理ユニットによって、他のプロセスが占有している実アドレス空間とは重複しない実アドレス空間へのアクセスに変換される。これによって、仮想アドレス空間上では同一のアドレスであっても実アドレス空間上では全く別のメモリエリアへのアクセスへと変換され、互いのプロセスが干渉することなく動作可能となる。
【０００４】
しかしながら、パーソナルコンピュータ用マイクロプロセッサや大規模な組み込み機器用マイクロコンピュータと異なり、小規模なマイクロコンピュータは、メモリ管理ユニットを持たない。このような小規模なマイクロコンピュータのシステムでは、アプリケーションプログラムとオペレーティングシステムを別々のプロセスに分割できず、オペレーティングシステムとアプリケーションプログラムを同一のアドレス空間を共有するスレッド(プロセスを構成する更に小さな実行単位)として動作させるしかなく、アプリケーションプログラムからオペレーティングシステムのメモリ空間を保護することができない。
【０００５】
一方、メモリ空間の保護はできなくとも、不正メモリアクセスが発生したことを早期に検出できれば、突然の例外を防ぐことができ、安定性の向上に寄与する。特許文献1が開示する方法では、スレッドのスイッチングに際して、スレッドに割り当てられたメモリエリアの検査コード(チェックサム)を比較することにより不正アクセスの検出を可能としている。すなわち、実行権があるスレッドから別のスレッドに移る直前に実行権を失う側のスレッドの検査コードを記録しておいて、再び元のスレッドに実行権が戻ってきたときにもう一度検査コードを計算し、記録された検査コードと比較する。こうして、不正なメモリアクセスを事前に検知するのである。
【特許文献１】特開２００４−３２６３３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１が開示する従来の技術の不正メモリアクセスの検知方法は、スレッドの切り替えに際し、毎回検査コードの算出が必要になるためオーバーヘッドが増大し、応答性が損なわれてしまう。特に、組み込み機器のようなリアルタイム性を要求されるシステムにおいては、軽量な方法で不正メモリアクセスを検出したいという要求がある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のオペレーティングシステムは、メモリに予め指定した特定のアドレスエリアに、リード又はライトアクセスを行った際に割り込みを発生する特定エリアアクセスブレーク機能を備えたマイクロコンピュータ上で動作するオペレーティングシステムであって、該マイクロコンピュータ上で動作するものであって該オペレーティングシステムが実行権を管理する複数のアプリケーションスレッドのうちのいずれか一つに該オペレーティングシステムが実行権を与える際に、該特定エリアにアクセスしたときに該特定エリアアクセスブレーク機能の割り込みを発生するように設定し、該アプリケーションスレッドが該特定エリアにアクセスした際には、このアクセスをアクセス違反とみなし、該特定エリアアクセスブレーク機能の割り込みにより、該オペレーティングシステムに実行権を取り戻し、アクセス違反を行ったアプリケーションスレッドに関して、所定のルールに基づいたスケジューリングを行うという不正アクセス検出機能を備えることを特徴としている。
【０００８】
また、本発明の制御装置は、メモリに予め指定した特定のアドレスエリアに、リード又はライトアクセスを行った際に割り込みを発生する特定エリアアクセスブレーク機能を備えたマイクロコンピュータ上で動作するオペレーティングシステムであって、該マイクロコンピュータ上で動作するものであって該オペレーティングシステムが実行権を管理する複数のアプリケーションスレッドのうちのいずれか一つに該オペレーティングシステムが実行権を与える際に、該特定エリアにアクセスしたときに該特定エリアアクセスブレーク機能の割り込みを発生するように設定し、該アプリケーションスレッドが該特定エリアにアクセスした際には、このアクセスをアクセス違反とみなし、該特定エリアアクセスブレーク機能の割り込みにより、該オペレーティングシステムに実行権を取り戻し、アクセス違反を行ったアプリケーションスレッドに関して、所定のルールに基づいたスケジューリングを行うという不正アクセス検出機能を備えることを特徴とするオペレーティングシステムが搭載された制御装置であって、アクセス違反を行ったアプリケーションスレッドを停止させても該制御装置の実行に支障がない場合、該アプリケーションスレッドを強制終了させることを特徴としている。
【０００９】
さらに、本発明の電動ブレーキコントローラは、上記の制御装置が、車両用の電動ブレーキの制御装置であることを特徴としている。
【００１０】
また、本発明の電動ブレーキコントローラは、不正アクセスがあったことを検出した場合、ドライバーに対し通知する手段を備えたことを特徴としている。
(なお、「アプリケーションスレッド」とは、アプリケーションプログラムのことである。)
【発明の効果】
【００１１】
本発明のオペレーティングシステムは、アプリケーションスレッドからの不正なメモリアクセスを検出し、それに応じた再スケジューリング等の処理を可能とするものであるから、このオペレーティングシステムを搭載する制御システムの安定性を向上させるという効果を奏する。
【００１２】
また、本発明の制御装置は、不正なアクセスを行ったスレッドの重要度に応じてスレッドのスケジューリングをコントロールできるため、重要度の低いスレッドからの不正なアクセスであればそのスレッドの再スケジューリングを取りやめることによって、不正なメモリアクセスの要因を排除することが可能になる。本発明は、特に動的にソフトウェアを追加できる組み込みシステムに有用であるが、動的にソフトウェアを追加できない組み込みシステムにおいても、アプリケーションスレッドの不正アクセスを発見しやすくなるため、開発時にそのようなソフトウェアを排除することが容易となり、組み込みシステムの品質向上に貢献できる。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の一実施例を搭載した電動ブレーキコントローラを装備した車両の概略図を示す。車両1201において、統合制御装置1202は、電動ブレーキアクチュエータ1203,1204,1205,1206のそれぞれに対して制動力を適切に指示するための制御装置である。統合制御装置1202は、電線1211を介して接続されたブレーキ操作子1209に取り付けられたブレーキ操作量センサ1210によって、運転者の操作量や操作力を電気信号として取得する。統合制御装置1202は、それらの検出値に基づいて４輪分の目標押しつけ力を算出し、電気信号に変換し、通信路を介して電動ブレーキアクチュエータ1203,1204,1205,1206に伝達する。
【００１４】
電動ブレーキアクチュエータ1203,1204,1205,1206は、従来の油圧式ディスクブレーキと同様に、図２に図示されたブレーキパッド1301をピストン1303によって押し出し、ブレーキロータ1302に押しつけることによって制動力を発生させる構成で、図示しない制御回路、図示しない電動モータ及び図示しないピストン機構を内蔵した機電一体構造を有する。さらに、該電動ブレーキアクチュエータ1203,1204,1205,1206には、図示しないラッチ機構を制御することによってピストン1303を機械的に保持することができる電動パーキングブレーキ機能が搭載されており、図示しない電動モータが作動しない状況でも制動力を維持することができる構成となっている。この電動パーキングブレーキ機能は、通信路を介して前記統合制御装置1202から電気信号によってその適用と解除を可能としている。
【００１５】
該電動ブレーキアクチュエータ1203,1204,1205,1206は、統合制御装置1202からの電気信号によって与えられた目標押しつけ力を発生するように該ピストン1303の操作を制御することによって、該ブレーキロータ1302の回転を制動し、その力が同一軸に取り付けられたタイヤ1212,1213,1214,1215に伝わり、車両を減速させる。
【００１６】
該電動ブレーキコントローラに搭載されるマイクロコンピュータは、電気的にプログラミング可能なフラッシュROM（図３のＡ番地からＢ番地）とRAM（図３のＤ番地からＥ番地）を内蔵し、外部メモリを接続しない、いわゆるシングルチップモードで動作している。また、該マイクロコンピュータにはシリアル通信インターフェース、ＡＤコンバータ、ＰＷＭなどの周辺ハードウェアが内蔵されており、それらの設定に関わるレジスタ群へのアクセス方式は、該ROM、該RAMなどと同一のアドレス空間（図３のＣ番地からＤ番地）でアクセス可能なメモリマップドＩ／Ｏ方式である。
【００１７】
本実施例を使用したマイクロコンピュータ上で動作するソフトウェアは、図４が示すように、マイクロコンピュータ周辺ハードウェアのレジスタ群を表す「ハードウェア」、電動ブレーキの制御ソフトウェアの処理群を表す「アプリケーション」、ハードウェアとアプリケーションを仲介する「オペレーティングシステム」という３階層から構成される。
【００１８】
本実施例のオペレーティングシステムは、「システムコール」と呼ばれる特殊な処理を備えており、少なくとも図５に示されたシステムコールが用意される。システムコールは、アプリケーションがオペレーティングシステムの機能を利用するためのインターフェースとなる。
【００１９】
オペレーティングシステムには、デバイスマネージャとスレッドマネージャという２つの機能が備わっている。デバイスマネージャは、周辺ハードウェアの設定を行うためのデバイスドライバと呼ばれるソフトウェアを管理している。スレッドマネージャは、アプリケーションを構成する複数の小さな処理に対して、実行権の割り当てを管理している。これらの小さな処理は、図５のうちの「生成」システムコールによって、図６に示すスレッド管理ブロックと呼ばれる管理情報が対応づけられ、アプリケーションスレッドと呼ばれるオブジェクトとなる。スレッド管理ブロックをアプリケーションスレッドに新たに割り当てる際には、動的に確保したスレッド管理ブロックを割り当てたり、予め決まった数のスレッド管理ブロックを確保しているうちの空いているスレッド管理ブロックを割り当てたりする。こうして生成されたアプリケーションスレッドは、スレッドマネージャが保持するアプリケーションスレッド待ち行列に登録され、マイクロコンピュータの実行権が割り当てられるのを待つことになる。一般的な組み込み機器用オペレーティングシステムは、「待ち」状態にあるアプリケーションスレッドに対して、少なくとも時分割でマイクロコンピュータの実行権を割り当てる機能を持っており、それぞれのアプリケーションスレッドは見かけ上並行して実行することが可能となる。
【００２０】
図６に示すスレッド管理ブロックには、アプリケーションスレッドに割り当てられたスタック領域のアドレス、マイクロコンピュータの汎用レジスタ、プログラムカウンタ、アプリケーションスレッドの状態などが保持されている。アプリケーションスレッドの状態には、少なくとも図７が示す「状態」のうちのいずれかが設定される。汎用レジスタやプログラムカウンタは、スレッド管理ブロックではなくスタックに格納してもよい。これらの情報に加えて、本実施例のオペレーティングシステムのスレッド管理ブロックは、このスレッドが不正メモリアクセスを行った際の例外処理ルーチンのアドレスを保持している。
【００２１】
該ブレーキコントローラでは、まず、電動ブレーキコントローラが起動されると、パワーオンリセット割り込みによってオペレーティングシステムを起動するためのブートローダーが実行される。ブートローダーは、図８に示すように、S101にてマイクロコンピュータの初期化を行い、S102にてオペレーティングシステムの初期状態をROMからRAMに読み込み、S103にてオペレーティングシステムの初期化処理をコールする。なお、S103にてオペレーティングシステムに処理が移ってから再びブートローダーに処理が戻ることはない。
【００２２】
図９は、オペレーティングシステムの初期化処理の手順を示す。S200にてオペレーティングシステムの初期化が開始すると、S201にて周辺ハードウェアとデータをやりとりするためのプログラムであるデバイスドライバの初期化を行い、S202にてアプリケーションスレッドのスケジューリングを管理するスレッドマネージャを初期化し、それからS203で、オペレーティングシステムのスレッドマネージャによるアプリケーションスレッドのスケジューリングに処理が移る。
【００２３】
オペレーティングシステムの初期化が完了すると、該スレッドマネージャが所定のスケジューリングアルゴリズムに従って実行するアプリケーションスレッドを選定し、そのアプリケーションスレッドに実行権を与える。なお、一度スレッドマネージャのスケジューリングに処理が移ったら、ブレーキコントローラの電源を切らない限り処理が終わることはない。
【００２４】
本実施例を使用したマイクロコンピュータは、メモリに予め設定した特定のアドレスエリアに対するアクセスが行われた際には、そのアクセスが完了した後に割り込みを発生させる特定エリアアクセスブレーク機能を有している。本実施例のオペレーティングシステムは、この機能を利用して不正なメモリアクセスを検出する。以下、その機能について説明する。
【００２５】
図４において、アプリケーションは、本来、周辺ハードウェアとデータをやりとりする際には、システムコール経由でデバイスドライバを介して行う。しかし、本発明の一実施例を使用した電動ブレーキコントローラのマイクロコンピュータは、仮想的なアドレス空間を提供する周辺ハードウェアであるメモリ管理ユニットを搭載しておらず、オペレーティングシステムとアプリケーションが同一のメモリ空間を共有しているものである。そのため、本来はアプリケーションからはアクセスできないようにすべき周辺ハードウェアの設定を行うレジスタ群へのアクセスを禁止することができないこととなり、電動ブレーキコントローラとしての安定性を損なうおそれがある。例えば、あるスレッドＡというアプリケーションスレッドがシステムコール経由でハードウェアにアクセスしている最中に、スレッドマネージャによって別のスレッドＢというアプリケーションスレッドに実行権が移った場合を考える。スレッドＢがその処理の中で、スレッドＡで使用している周辺ハードウェアの設定を行うレジスタ群にアクセスし、レジスタの値を書き換えた場合、その後再びスレッドＡに実行権が移った場合に、そのハードウェアはスレッドＡが期待したとおりに動作しないことが起こり得る。
【００２６】
本実施例のオペレーティングシステムは、図１０に示されたシステムコールの手順と、図１１に示されたスレッドマネージャにおけるスケジューリング処理の手順により、アプリケーションスレッドの不正なメモリアクセスを検出する。
【００２７】
図１０において、システムコールが呼び出されると、まず、S801で特定エリアアクセスブレーク機能を無効にする。次に、S802でシステムコールに応じた独自の処理を行い、S803で特定エリアアクセスブレーク機能を再び有効にし、S804でシステムコールを終了し呼び出し元に戻る。例えば、システムコール経由のデバイスドライバを介するハードウェア設定レジスタへのアクセスは不正なアクセスと見なされない。
【００２８】
次に、スレッドマネージャにおけるスケジューリング処理を説明する。図１１において、まず、S900が呼び出され、S901で図３に示された周辺ハードウェア領域へのアクセスに対して割り込みが発生するように特定エリアアクセスブレーク機能を初期化する。次に、S902で該特定エリアアクセスブレーク機能を無効にする。そして、S903でアプリケーションスレッド待ち行列から次のスレッド管理ブロックを読み込む。S904では、S903で読み込んだアプリケーションスレッドが「待ち」であるかどうかを判定し、「待ち」状態であればS905に移動し、「待ち」状態でなければS903に戻り、再度待ち行列からスレッド管理ブロックを読み込む。そして、S905で特定エリアアクセスブレーク機能を有効にし、S906に移動し、アプリケーションスレッドに実行権を渡す。こうして、アプリケーションスレッドで不正なハードウェア設定レジスタへのアクセスを行った時だけ、特定エリアアクセスブレーク機能による割り込みが発生する。
【００２９】
特定エリアアクセスブレーク機能による割り込みでは、図１２が示すように、S1001で特定エリアアクセスブレーク機能を無効にし、S1002でアプリケーションスレッドの生成時にスレッド管理ブロックに格納された「不正メモリアクセス発生時の例外処理」を実行し、S1003でスレッド管理ブロックの状態を「違反」に設定する。その後、S1004の「譲渡」システムコールでスケジューリング処理が行われる。なお、上記S1002の不正メモリアクセス発生時の例外処理と、その後のS1003の「違反」の設定は、逆の順序でもよい。
【００３０】
図１３は、ドライバーが最初基本ブレーキ操作を行い、時刻t1500から電動パーキングブレーキに動作を変えたときの様子を示している。ここで基本ブレーキスレッドはドライバーのブレーキペダル操作に応じてブレーキ力を発生させるためのスレッド、イベントロガースレッドはシステムに発生したイベントを監視し、記録するためのスレッド、電動パーキングブレーキスレッドはドライバーの電動パーキングブレーキ操作子の操作に応じてパーキングブレーキを作動させるスレッドである。各アプリケーションスレッドが所定の処理を終えると、スケジューリング処理が行われて実行待ちになっているスレッドに実行権が移る。休止状態になっているスレッドには実行権が移らず、待ち状態のスレッドにだけ実行権が移るようスケジューリングが行われる。
【００３１】
本発明に関わる電動ブレーキシステムでは、電動ブレーキを実現するアプリケーションスレッドを図１４のごとく重要度をランク付けし、そのランクに応じて、図１５に記載された「不正メモリアクセス発生時の例外処理」から選択する。例えば、非重要ランクに分類された「イベントロガー」というアプリケーションスレッドが不正メモリアクセスを行った際には、「イベントロガー」スレッドが強制終了され、上位システムに対して異常が発生したことを通知する。非重要に分類される「イベントロガー」スレッドに対するその後のスケジューリングは行われなくなるが、それ以外のスレッドは通常通りにスケジューリングされるため、基本ブレーキ等のその他の機能は正常に機能する。
【００３２】
一方、重要ランクに分類された電動パーキングブレーキの動作を制御する「電動パーキングブレーキ」というアプリケーションスレッドが不正メモリアクセスを行った際には、強制終了されることはない。上位システムに対して「電動パーキングブレーキ」スレッドが不正メモリアクセスを行ったことは通知されるが、その後のスケジューリングは通常通り行われる。ドライバーに対しては、上位システムから警告灯などを通じて適宜ドライバーに通知される。
【００３３】
このようにすることで、重要な処理の不正なメモリアクセスについては電動ブレーキシステムの稼働を可能な限り引き延ばし、そうではない軽微な処理の不正なメモリアクセスについてはそのアプリケーションスレッドを終了させることで、それによる副作用を防ぎ、電動ブレーキシステムの安定的な稼働を行うことが可能になる。
【産業上の利用可能性】
【００３４】
マイクロコンピュータを搭載する組み込み機器に利用可能である。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施例を搭載した電動ブレーキコントローラを装備した車両の概略図である。
【図２】本実施例に係る電動ブレーキコントローラを備えた車両の電動ブレーキの制動力を発生させる部分の概略図である。
【図３】本実施例に係るマイクロコンピュータのメモリ上のアドレス配置図である。
【図４】本実施例に係る電動ブレーキコントローラに搭載されるソフトウェアの構造を説明する図である。
【図５】本実施例に係る「システムコール」の種類と機能を説明する図表である。
【図６】本実施例に係る「スレッド管理ブロック」の構造を説明する図である。
【図７】本実施例に係るアプリケーションスレッドの「状態」の「説明」を示す図表である。
【図８】本実施例に係る「ブートローダー」の手順を示す図である。
【図９】本実施例に係るオペレーティングシステムの初期化処理の手順を示す図である。
【図１０】本実施例に係る「システムコール」の手順を示す図である。
【図１１】本実施例に係る「スケジューリング処理」の手順を示す図である。
【図１２】本実施例に係る「特定エリアアクセスブレーク割り込みハンドラ」の手順を示す図である。
【図１３】本実施例に係る基本ブレーキスレッド、パーキングブレーキスレッド、イベントロガースレッドとスケジューリング処理のタイムフローを示す図である。
【図１４】本実施例に係る「アプリケーションスレッド」、「ランク」、「上位システムへの通知」、「不正アクセス後の再スケジュール」の関係を示す図表である。
【図１５】本実施例に係る「ランク」と「不正メモリアクセス発生時の例外処理」の内容を説明する図表である。
【符号の説明】
【００３６】
1201：車両、
1202：統合制御装置、
1203,1204,1205,1206：電動ブレーキアクチュエータ、
1209：ブレーキ操作子、
1210：ブレーキ操作量センサ、
1211：電線、
1212,1213,1214,1215：タイヤ、
1301：ブレーキパッド、
1302：ブレーキロータ、
1303：ピストン
【図１】
2008040964.tif 000003
【図２】
2008040964.tif 000004
【図３】
2008040964.tif 000005
【図４】
2008040964.tif 000006
【図５】
2008040964.tif 000007
【図６】
2008040964.tif 000008
【図７】
2008040964.tif 000009
【図８】
2008040964.tif 000010
【図９】
2008040964.tif 000011
【図１０】
2008040964.tif 000012
【図１１】
2008040964.tif 000013
【図１２】
2008040964.tif 000014
【図１３】
2008040964.tif 000015
【図１４】
2008040964.tif 000016
【図１５】
2008040964.tif 000017