(57)【要約】【課題】処理装置の全領域リプロを実施し途中失敗した場合においても、制御装置内のシステムを用いて自動的に再リプロ可能状態まで復旧することができる制御装置およびその方法を提供する。【解決手段】メイン系処理装置とサブ系処理装置を用いた２重系の制御装置においてメイン系処理装置のリプロを実施する前に、正常動作可能であるメイン系のフラッシュブートローダのＲＯＭ情報をサブ系処理装置が管理可能な領域にあらかじめ複写して記憶しておく。その後メイン系処理装置に対してリプロを行い、メイン系ＦＬＡＳＨＲＯＭのフラッシュブートローダ含めた全領域に対してプログラム更新を実施する。メイン系処理装置が再リプロ不可状態となった場合、上記の制御によって格納していたフラッシュブートローダのＲＯＭ情報を用いて、メイン系処理装置に対してリプロを行う。【選択図】図１
2016143103.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの処理を実行するＣＰＵと、電気的に記憶内容が書き換え可能であるとともに、制御用プログラムを記憶する記憶手段を備えた処理装置を複数有する制御装置において、
前記の処理装置は、
互いに正常、又は異常を判定する診断監視手段と、
外部装置からの伝送される制御用プログラムの書換え要求に従って自信の処理装置のプログラムを更新する手段と、
他の処理装置からプログラムの更新を制御する手段を有することを特徴とする制御装置。
【請求項２】
請求項１の記載の制御装置は、
前記処理装置のうちメイン系処理装置に搭載した記憶媒体の領域に対して制限なく、プログラム更新を行う手段を有することを特徴とする制御装置。
【請求項３】
請求項２の記載の制御装置は、
前記メイン系処理装置のプログラム更新用プログラム（フラッシュブートローダ）のＲＯＭ情報が正常、又は異常を前記処理装置のうちサブ系処理装置が判定することを特徴とする制御装置。
【請求項４】
請求項３の記載の制御装置は、
ＲＯＭ診断が正常の場合、前記メイン系処理装置の前記プログラム更新用プログラム（フラッシュブートローダ）を別領域に複写し前記ＲＯＭ情報を格納することを特徴とする制御装置。
【請求項５】
請求項３の記載の制御装置は、
ＲＯＭ診断が正常の場合に前記メイン系処理装置の前記プログラム更新用プログラム（フラッシュブートローダ）を別領域に複写し前記ＲＯＭ情報を格納し、
ＲＯＭ診断が異常の場合に格納済みの前記メイン系処理装置の前記プログラム更新用プログラム（フラッシュブートローダ）を前記サブ系処理装置の制御によって、前記メイン系処理装置のプログラム更新用プログラム用の該当領域にプログラム更新すること特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置のプログラム更新に関し、２重系制御装置に於けるメイン系処理装置のプログラム更新が失敗した場合においても再度プログラム更新が実施可能なソフトウェアおよび制御装置の技術分野に関する。
【背景技術】
【０００２】
制御装置の分野では、フラッシュブートローダとよばれるプログラムを更新するための専用制御プログラムが必要である。車載用制御装置はＣＡＮ  通信を用いたフラッシュブートローダが現在一般的であり、リプログラミング（以下リプロ）と呼ばれる診断プロトコルを使って通信・ダウンロード・内部ＦＬＡＳＨＲＯＭの消去（イレース）・書込みを行う。しかしながら、ＣＡＮ通信を用いたリプロでは通信状態や制御装置の電源状態によって、リプロが失敗するという課題がある。リプロが失敗すると該当するプログラムは未完成状態となるため、正常動作することができない。特にリプロ失敗によりフラッシュブートローダが未完成状態となった場合、制御装置内部での自力復旧は困難であり、制御装置外部からブートモードと呼ばれるモードに移行させるために特殊接続が必要なため制御装置の配線を変更し、専用のツールを用いて復旧しなければならない。
【０００３】
そのため、上記のフラッシュブートローダは、リプロでは書き換え不可な領域として保護することで再リプロ不可状態となることを防止している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１１５６１４
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、最新の技術やＩＳＯ等の最新の世界標準に対応するためには、フラッシュブートローダの変更は不可欠である。従来の技術では、既存の制御装置に対してのフラッシュブートローダを確実かつ容易に変更することは困難である。
【０００６】
本発明の目的は、フラッシュブートローダのプログラム更新中にリプロ失敗した場合に、次回リプロを開始する前にフラッシュブートローダの内容をリプロ可能な状態まで、制御装置内で自動的に復旧することができる制御装置およびその方法を提供することにある。
【課題を解決するための手段】
【０００７】
メイン系処理装置とサブ系処理装置を用いた２重系の制御装置においてメイン系処理装置のリプロを実施する前に、正常動作可能であるメイン系のフラッシュブートローダのＲＯＭ情報をサブ系処理装置が管理可能な領域にあらかじめ複写して記憶しておく。その後メイン系処理装置に対してリプロを行い、メイン系ＦＬＡＳＨＲＯＭのフラッシュブートローダ含めた全領域に対してプログラム更新を実施する。メイン系処理装置のリプロが失敗し、メイン系処理装置が再リプロ不可状態となった場合、あらかじめ上記の制御によって格納していたフラッシュブートローダのＲＯＭ情報を用いて、上述したブートモードをサブ系処理装置の制御によって実現した上で、メイン系処理装置に対してリプロを行う。
【発明の効果】
【０００８】
メイン系ＦＬＡＳＨＲＯＭ全領域のプログラム書き換え時に失敗した場合において、制御装置外部からブートモードと呼ばれる特殊接続を必要とせず、制御装置内部のシステムを用いてメイン系処理装置を再リプロ可能状態に復旧することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る処理装置を搭載した、２重系制御装置のブロック図である。
【図２】本実施形態に係るメイン系ＦＬＡＳＨＲＯＭの構成を示す図である。
【図３】本実施形態に係るサブ系ＦＬＡＳＨＲＯＭの構成を示す図である。
【図４】本実施形態に係るサブ系処理装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例について図面を用いて説明する。  
本実施例の詳細は以下の実施例で説明するが、メイン系処理装置とサブ系処理装置を用いた２重系の制御装置においてメイン系処理装置のリプロを実施する前に、正常動作可能であるメイン系のフラッシュブートローダのＲＯＭ情報をサブ系処理装置が管理可能な領域にあらかじめ複写して記憶しておくものである。その後メイン系処理装置に対してリプロを行い、メイン系ＦＬＡＳＨＲＯＭのフラッシュブートローダ含めた全領域に対してプログラム更新を実施する。メイン系処理装置のリプロが失敗し、メイン系処理装置が再リプロ不可状態となった場合、あらかじめ上記の制御によって格納していたフラッシュブートローダのＲＯＭ情報を用いて、上述したブートモードをサブ系処理装置の制御によって実現した上で、メイン系処理装置に対してリプロを行う。
【００１１】
これによりメイン系ＦＬＡＳＨＲＯＭ全領域のプログラム書き換え時に失敗した場合において、制御装置外部からブートモードと呼ばれる特殊接続を必要とせず、制御装置内部のシステムを用いてメイン系処理装置を再リプロ可能状態に復旧することができる。
【実施例】
【００１２】
図１は、本実施形態を説明するためのブロック図である。  
本実施例の制御装置はメイン系処理装置００１とサブ系処理装置０１１を有する２重系制御装置である。メイン系処理装置００１は、ＣＰＵ００２とＣＡＮモジュール００３とＦＬＡＳＨＲＯＭ００４とＲＡＭ００５と外部バスＩ／Ｆ００６と入出力装置００７を有し、外部制御装置０２１やリプロツール０２２と通信ライン０２３により接続され、制御に必要なデータやリプロ用更新プログラムを受信する。受信したデータやプログラムを基に、メイン系処理装置００１は制御処理やＦＬＡＳＨＲＯＭ００４の内のプログラムを更新する。
【００１３】
このようなデータや更新プログラムは、外部制御装置０２１やリプロツール０２２から、定期的に更新するために送信されるほか、メイン系処理装置００１の返信に応じて送信される。上記の通信情報には、データの正当性をあらわす情報（誤り検出符号あるいは誤り訂正符号）を付加して送信される。
【００１４】
ＣＰＵ００２は、メイン系処理装置００１が起動すると、後述するＦＬＡＳＨＲＯＭ００４の格納エリアＡ１に格納されたベクターテーブルに従って、格納エリアＡ２あるいは、格納エリアＡ３のプログラムを実行する。
【００１５】
ＦＬＡＳＨＲＯＭ００４は電気特性として書き換え可能な性能を有しており、電源を切ってもデータが消えない不揮発性の半導体メモリである。
【００１６】
ＣＡＮモジュール００３は外部制御装置０２１やリプロツール０２２とＣＡＮ通信を行い、ＣＰＵ００２やＦＬＡＳＨＲＯＭ００４にデータや更新プログラムを伝送する。
【００１７】
サブ系処理装置０１１は、ＣＰＵ０１２とＣＡＮモジュール０１３とＦＬＡＳＨＲＯＭ０１４とＲＡＭ０１５と外部バスＩ／Ｆ０１６と入出力装置０１７を有し、メイン系処理装置００１と入出力装置０１７を通して接続され、メイン系処理装置００１とサブ系処理装置０１１はお互いに正常に動作しているかをメイン系−サブ系処理装置通信線０１８を通して相互監視する。そして異常検知した場合、即座にフェールセーフモードに移行することを目的にしている。
【００１８】
また、サブ系処理装置０１１はリプロ通信線０２０を通して、メイン系処理装置００１をブートモードに変更することでＣＰＵ００２の判断なしにサブ系処理装置０１１のＣＰＵ０１２の判断のみでリプロ可能な機能を有している。
【００１９】
図２は、本実施形態におけるメイン系処理装置００１のＦＬＡＳＨＲＯＭ００４の格納エリアを示すブロック図である。本実施の形態においては、図２に示すとおり、ＦＬＡＳＨＲＯＭ００４の格納エリアは大きく４つに分かれている。ここで格納エリアは、ＦＬＡＳＨＲＯＭ００４の消去性能に依存した消去ブロック単位で構成されている。
【００２０】
格納エリアＡ１はベクターテーブルが格納されるエリアである。メイン系処理装置００１に電源投入されると、ＣＰＵ００２は最初にこのベクターテーブルに登録されているパワーオンリセット処理を呼び出す。
【００２１】
格納エリアＡ２はフラッシュブートローダが格納されるエリアであり、上記のパワーオンリセット処理は、フラッシュブートローダ内に存在する。さらに、フラッシュブートローダ内には、通常動作モードおよびリプロモードの２つの制御モードを判断するプログラムとリプロモード時に実際にリプロを行うためのプログラムが格納されている。これらの制御モードの切換えは、ＦＬＡＳＨＲＯＭ００４の内容が意図した内容と同一である場合は通常動作モードと判断し、それ以外の場合はリプロモードと判断する。
【００２２】
格納エリアＡ３には、アプリケーションプログラムが格納されるエリアである。フラッシュブートローダにて通常動作モードと判断された場合、アプリケーションプログラムを実行する。格納エリアＡ４には、アプリケーションプログラムで使用されるアプリケーションデータが格納されるエリアである。
【００２３】
一般にＦＬＡＳＨＲＯＭの特性上、データを記憶するときは消去単位であるブロック毎にデータ消去（イレース）してから新しいデータを書き込む必要がある。消去途中あるいは書き込み途中に電源瞬断の発生や何らかの原因によりプログラム更新が停止した場合、ＦＬＡＳＨＲＯＭの内容は本来意図しないデータとなり、データの更新に失敗してしまう。その結果、該当する箇所のプログラムは正常に動作できない。    
さらにフラッシュブートローダのプログラムを更新中に書換え失敗した場合、書換えを実施するプログラム自身が正常に動作できないため再リプロ不可の状況となってしまう。そこで従来の技術ではリプロによるプログラム更新が可能な対象領域は格納エリアＡ３およびＡ４のみとしていた。
【００２４】
本実施例では、後述する理由により、メイン系処理装置の制御プログラムを実行することなく、上記の再リプロ不可の状況から復旧することができる。そのため、プログラム更新が対象領域は格納エリアＡ１、Ａ２、Ａ３およびＡ４の全領域に対して実施可能となる。
【００２５】
図３は、本実施形態におけるサブ系処理装置０１１のＦＬＡＳＨＲＯＭ０１４の格納エリアを示すブロック図である。本実施の形態においては、図３に示すとおり、ＦＬＡＳＨＲＯＭ０１４の格納エリアは大きく５つに分かれている。ここで格納エリアは、ＦＬＡＳＨＲＯＭ０１４の消去性能に依存した消去ブロック単位で構成されている。
【００２６】
格納エリアＢ１、Ｂ２、Ｂ３およびＢ４までは、サブ系処理装置０１１における図２のＡ１、Ａ２、Ａ３およびＡ４と対応した機能を持つブロックである。格納エリアＢ５は、格納エリアＡ２に存在するメイン系処理装置００１のフラッシュブートローダを複写したＲＯＭ情報を格納するエリアである。
【００２７】
図４は、本実施例におけるサブ系処理装置０１１によるメイン系処理装置００１のプログラム更新のフローチャートである。このフローチャートは電源投入後、サブ系処理装置の初期化処理が終わった後に実行される。以下にフローチャートの各ステップについて説明する。
【００２８】
最初にステップＳ１００において、サブ系処理装置０１１のＣＰＵ０１２は、メイン系処理装置００１と相互監視を実施し、メイン系処理装置００１のＲＯＭ診断結果を取得する。
【００２９】
次にステップＳ２００において、メイン系ＲＯＭの正常異常判断を行う。その結果、正常の場合にはステップＳ３００処理を実行する。異常の場合、ステップＳ５００の処理を実行する。上記のＲＯＭ診断結果の判定処理は、メイン系処理装置００１の制御プログラムが動作しない可能性も考慮し、所定時間の間にＲＯＭ診断結果を取得しなければ異常と判断とする処理を追加してもよい。
【００３０】
Ｓ３００にて、メイン系フラッシュブートローダとサブ系ＦＬＡＳＨＲＯＭ０１４の格納エリアＢ５内のＲＯＭ情報の差異判定を行う。その結果、差異ありの場合にはステップＳ４００処理を実行する。
ステップＳ４００では、サブ系ＦＬＡＳＨＲＯＭ０１４の格納エリアＢ５に格納されているフラッシュブートローダのＲＯＭ情報を複写し記録することで、最新のＲＯＭ情報に更新する。
【００３１】
Ｓ５００にて、メイン系処理装置００１のメイン系フラッシュブートローダ診断結果を取得する。
【００３２】
次にステップＳ６００において、メイン系フラッシュブートローダの正常異常判断を行う。その結果、正常の場合にはステップＳ３００処理を実行する。異常の場合、ステップＳ７００の処理を実行する。上記のＲＯＭ診断結果の判定処理は、再リプロ不可通知信号線０１９を用いて判断もしくは、メイン系処理装置００１が全く動作しない可能性も考慮し、所定時間の間にフラッシュブートローダ診断結果を取得しなければ異常と判断とする処理を追加してもよい。
Ｓ６００において、フラッシュブートローダが異常と判断された場合には、メイン系処理装置００１は再リプロ不可状態になっており、最悪の場合では処理動作不可の状態に陥ってしまっている。
【００３３】
そこで、Ｓ７００にてリプロ通信線０２０を用いて、メイン系処理装置００１のブートモード状態にする。さらにサブ系ＦＬＡＳＨＲＯＭ０１４の格納エリアＢ５に格納されているフラッシュブートローダのＲＯＭ情報を用いて、メイン系ＦＬＡＳＨＲＯＭ００４の格納Ａ２エリアに対して、サブ系処理装置のリプロ制御処理を用いてリプロを実施する。格納エリアＡ２に正常のフラッシュブートローダが書き込まれることにより、メイン系処理装置００１は再リプロ不可状態からリプロ可能状態に復旧することができ、本来のリプロツールとの通信を再開することにより、正常なＲＯＭ情報を書き込まれることができる。
【００３４】
上記のリプロはメイン系処理装置００１の入出力装置００７とサブ系処理装置０１１の入出力装置の間のリプロ専用の通信線０２０を用いるため、ＣＡＮ通信を使用した通常のリプロと比較して、より確実に伝送することが可能である。また、電源瞬断等によりリプロ失敗したとしても、再度電源投入時に同じプロセスで再リプロ可能であるため、システム全体として再リプロ不可状態になることはない。
【００３５】
このようにして、メイン系ＦＬＡＳＨＲＯＭ全領域のプログラム書き換え時に失敗した場合において、サブ系処理装置の制御によりメイン系処理装置を再リプログラミング可能状態に復旧することができる。
【００３６】
以上に説明したように本実施例の制御装置は、プログラムの処理を実行するＣＰＵ（００２、０１２）と、電気的に記憶内容が書き換え可能であるとともに、制御用プログラムを記憶する記憶手段（００４、０１４）を備えた処理装置（００１、０１１）を複数有する。そして、処理装置（００１、０１１）は、互いに正常、又は異常を判定する診断監視手段と、外部装置０２１からの伝送される制御用プログラムの書換え要求に従って自身の処理装置（００１、０１１）のプログラムを更新する手段と、他の処理装置（００１、０１１）からプログラムの更新を制御する手段を有する。
【００３７】
またメイン系処理装置００２に搭載した記憶媒体００４の領域に対して制限なく、プログラム更新を行う手段を有することが望ましい。また、メイン系処理装置００２のプログラム更新用プログラム（フラッシュブートローダ）のＲＯＭ情報が正常、又は異常をサブ系処理装置０１２が判定することが望ましい。また、ＲＯＭ診断が正常の場合、メイン系処理装置００１のプログラム更新用プログラム（フラッシュブートローダ）を別領域に複写しＲＯＭ情報を格納することが望ましい。
【００３８】
さらに、ＲＯＭ診断が異常の場合に上記で格納済みのメイン系処理装置００１のプログラム更新用プログラム（フラッシュブートローダ）をサブ系処理装置０１１の制御によって、メイン系処理装置００１のプログラム更新用プログラム用の該当領域にプログラム更新することが望ましい。
【００３９】
本発明の実施形態は上述した内容に拘泥されることなく、様々な変更が可能である。たとえば、本実施形態におけるＦＬＡＳＨＲＯＭは、オンボードでリプロが可能な不揮発性の特性を備えたメモリであればよい。またメイン系フラッシュブートローダを複写・格納する格納エリアＢ４は必ずしもＦＬＡＳＨＲＯＭ０１４内に存在する必要はなく、処理装置内に別に設けられる不揮発性の特性を備えたメモリに格納してもよい。また通信方式にしてもＲＯＭ情報を伝送可能なＣＡＮ通信以外の通信方式であってもよい。
【符号の説明】
【００４０】
００１：メイン系処理装置
００２：ＣＰＵ（演算器）（メイン系処理装置）
００３：ＣＡＮモジュール（メイン系処理装置）
００４：ＦＬＡＳＨＲＯＭ（メイン系処理装置）
００５：ＲＡＭ（メイン系処理装置）
００６：外部バス  Ｉ／Ｆ部（メイン系処理装置）
００７：入出力装置（メイン系処理装置）
０１１：サブ系処理装置
０１２：ＣＰＵ（演算器）（サブ系処理装置）
０１３：ＣＡＮモジュール（サブ系処理装置）
０１４：ＦＬＡＳＨＲＯＭ（サブ系処理装置）
０１５：ＲＡＭ（サブ系処理装置）
０１６：外部バス  Ｉ／Ｆ部（サブ系処理装置）
０１７：入出力装置（サブ系処理装置）
０１８：メイン系−サブ系処理装置通信線
０１９：再リプロ不可通知信号線
０２０：リプロ通信線
０２１：外部制御装置
０２２：リプロツール
０２３：通信ライン
０３１：各種入力装置
０３２：各種出力装置
【図１】
2016143103.tif 000003
【図２】
2016143103.tif 000004
【図３】
2016143103.tif 000005
【図４】
2016143103.tif 000006