(57)【要約】【課題】プログラムの更新が可能なマルチＣＰＵシステムにおいて、プログラム更新を行うべきＣＰＵの種類が増えた場合でも更新作業を高速に行えるマルチＣＰＵシステムを提供することを目的とする。【解決手段】更新用データを出力するプログラム更新用データ出力装置に接続されたコントローラＣＰＵ１０７と、該コントローラＣＰＵに接続されるＭＡＩＮＣＰＵ１１０と、該ＭＡＩＮＣＰＵに接続される複数のＳＵＢＣＰＵ１１６、１２０によって構成され、前記コントローラＣＰＵは、ＳＵＢＣＰＵを指定するＣＰＵ指定チェック番号３１５を含む更新指示コマンドと更新用データを送信する手段とを有し、該更新用データは、前記ＳＵＢＣＰＵの記憶ブロック２０２に書き込む本文データと、少なくとも一つの更新すべきＳＵＢＣＰＵを指定するＣＰＵ指定チェック番号を含むヘッダ３０３と認証データ３０４からなることを特徴とするマルチＣＰＵシステム。【選択図】図１
2009064317.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵが通信手段によって互いに通信が可能なマルチＣＰＵシステムであって、
前記マルチＣＰＵシステムに対してＣＰＵの動作を更新する為の動作プログラム更新用データを出力するプログラム更新用データ出力装置に接続されたコントローラＣＰＵと、
前記コントローラＣＰＵに接続される被制御ＣＰＵであるＭＡＩＮＣＰＵと、
前記ＭＡＩＮＣＰＵに接続される被制御ＣＰＵである複数のＳＵＢＣＰＵによって構成され、前記ＣＰＵがツリー状の通信経路により接続されており、
前記コントローラＣＰＵは、動作プログラム更新を行う少なくとも一つの被制御ＣＰＵを指定するＣＰＵ指定チェック番号を含む動作プログラム更新指示コマンドと、前記動作プログラム更新用データを送信する手段とを有し、
前記被制御ＣＰＵは、書き込み不可能な第１の記憶ブロックと、書き込み可能な第２の記憶ブロックとに分割された不揮発性メモリと、前記動作プログラム更新指示コマンドと前記動作プログラム更新用データを受信する手段と、前記動作プログラム更新指示コマンド及び前記動作プログラム更新用データに従って、前記不揮発性メモリの書き込み可能な第２の記憶ブロックに対して消去、書き込みを行う手段を有し、
前記動作プログラム更新用データは、前記被制御ＣＰＵの不揮発性メモリの書き込み可能な第２の記憶ブロックに書き込む本文データと、少なくとも一つの更新すべき被制御ＣＰＵを指定するＣＰＵ指定チェック番号を含むヘッダと認証データからなることを特徴とするマルチＣＰＵシステム。
【請求項２】
前記複数の被制御ＣＰＵが、
その動作プログラムの内容ごとに予め決められた前記ＣＰＵ指定チェック番号と、前記通信経路上の位置によって同時にプログラム更新作業できるグループに、前記ＭＡＩＮＣＰＵによって分類及び管理されることを特徴とする請求項１記載のマルチＣＰＵシステム。
【請求項３】
前記ＭＡＩＮＣＰＵが、
前記コントローラＣＰＵからの前記動作プログラム更新指示コマンドにおいて指定された複数の被制御ＣＰＵが、全て同時にプログラム更新作業できる場合にのみ、プログラム更新作業を行うことを特徴とする請求項２記載のマルチＣＰＵシステム。
【請求項４】
前記ＭＡＩＮＣＰＵは、同時にプログラム更新が可能なグループに属する前記ＣＰＵ指定チェック番号を前記コントローラＣＰＵに報知し、
前記コントローラＣＰＵは、同時にプログラム更新を行うことのできる、少なくとも一つの前記ＣＰＵ指定チェック番号を前記ＭＡＩＮＣＰＵに指定した後、プログラム更新用データを送信することによって、各々のＣＰＵ指定チェック番号を有する前記被制御ＣＰＵに対するプログラム更新作業を実行する機能を有することを特徴とする請求項１記載のマルチＣＰＵシステム。
【請求項５】
前記ＭＡＩＮＣＰＵは、前記コントローラＣＰＵからの前記動作プログラム更新指示コマンドにおいて指定された前記ＣＰＵ指定チェック番号と、前記プログラム更新用データの中に含まれる前記ＣＰＵ指定チェック番号が一致する場合には、一致したＣＰＵ指定チェック番号に属するＣＰＵの不揮発性メモリの書き込み可能な前記第２の記憶ブロックの更新作業を行い、一致しない場合には更新作業を行わないことを特徴とする請求項４記載のマルチＣＰＵシステム。
【請求項６】
前記ＭＡＩＮＣＰＵに接続される前記被制御ＣＰＵは、各々のＣＰＵの動作プログラムのバージョン情報を前記ＭＡＩＮＣＰＵに報知する手段を有し、
前記ＭＡＩＮＣＰＵは前記コントローラＣＰＵから、動作プログラム更新指示コマンドを用いて指定されたＣＰＵ指定チェック番号と、プログラム更新用データの中に含まれるＣＰＵ指定チェック番号が一致する場合であっても、前記バージョン情報と、プログラム更新用データの中に含まれるバージョン情報が一致する場合には、前記ＣＰＵ指定チェック番号に属するＣＰＵの不揮発性メモリの書き込み可能な第２の記憶ブロックの更新作業を行わないことを特徴とする請求項１記載のマルチＣＰＵシステム。
【請求項７】
前記ＭＡＩＮＣＰＵは、複数のＣＰＵ指定チェック番号に対して、プログラム更新作業を行うときに、同一のＣＰＵ指定チェック番号を持つＣＰＵのいずれかのＣＰＵが、プログラム更新作業を失敗した場合には、当該ＣＰＵ指定チェック番号を持つ全てのＣＰＵのプログラム更新作業を中止し、且つ他にプログラム更新作業を行うＣＰＵ指定チェック番号が存在する場合には、その他のプログラム更新作業を行うＣＰＵ指定チェック番号に対しては、プログラム更新作業を継続する制御を行うことを特徴とする請求項１記載のマルチＣＰＵシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性メモリを有する複数のＣＰＵにより構成されるマルチＣＰＵシステムに関する。
【背景技術】
【０００２】
従来、マルチＣＰＵにおけるマルチＣＰＵの動作プログラム変更方法が、例えば特許文献１に示されている。すなわち、コントローラＣＰＵによって指定されたＣＰＵチェック番号と、暗号化されたプログラム更新用データを用いＣＰＵチェック番号毎にシーケンシャルに実行する方法である。また、通信帯域の狭いシリアル通信を用いて、高速なデータ処理を行う方法として、例えば特許文献２に示される様に、同一の処理を行う処理に同時一斉通知でデータやコマンドを送信する方法が提案されている。
【特許文献１】特開２００６−１７８５４４号公報
【特許文献２】特開２００６−２２９７７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上記従来例では、ＣＰＵチェック番号毎にプログラム更新を順に行う必要があり、シリアル通信速度の遅い被制御ＣＰＵの種類が増えると、その分だけプログラム更新作業の時間が増加してしまい、更新作業を行う際、ユーザビリティー上問題があった。
【０００４】
本発明は、上記課題を解決するためになされたものであり、プログラムの更新が可能なマルチＣＰＵシステムにおいて、プログラム更新を行うべきＣＰＵの種類が増えた場合でも更新作業を高速に行えるマルチＣＰＵシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上述の目的を達成するため、以下の構成を備えるものである。
【０００６】
複数のＣＰＵが通信手段によって互いに通信が可能なマルチＣＰＵシステムであって、前記マルチＣＰＵシステムに対してＣＰＵの動作を更新する為の動作プログラム更新用データを出力するプログラム更新用データ出力装置に接続されたコントローラＣＰＵと、前記コントローラＣＰＵに接続される被制御ＣＰＵであるＭＡＩＮＣＰＵと、前記ＭＡＩＮＣＰＵに接続される被制御ＣＰＵである複数のＳＵＢＣＰＵによって構成され、前記ＣＰＵがツリー状の通信経路により接続されており、前記コントローラＣＰＵは、動作プログラム更新を行う少なくとも一つの被制御ＣＰＵを指定するＣＰＵ指定チェック番号を含むプログラム更新指示コマンドと、前記動作プログラム更新用データを送信する手段とを有し、前記被制御ＣＰＵは、書き込み不可能な第１の記憶ブロックと、書き込み可能な第２の記憶ブロックとに分割された不揮発性メモリと、前記動作プログラム更新指示コマンドと前記動作プログラム更新用データを受信する手段と、前記動作プログラム更新指示コマンド及び前記動作プログラム更新用データに従って、前記不揮発性メモリの書き込み可能な第２の記憶ブロックに対して消去、書き込みを行う手段を有し、前記動作プログラム更新用データは、前記被制御ＣＰＵの不揮発性メモリの書き込み可能な第２の記憶ブロックに書き込む本文データと、少なくとも一つの更新すべき被制御ＣＰＵを指定するＣＰＵ指定チェック番号を含むヘッダと認証データからなることを特徴とするマルチＣＰＵシステム。
【発明の効果】
【０００７】
以上説明したように、プログラム更新機能を有するマルチＣＰＵシステムにおいて、更新を行うべきＣＰＵの種類が増えた場合でも、更新作業時間が大幅に増大することなく更新作業を高速に行え、そのユーザビリティーを向上させることができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明を実施するための最良の形態を、実施例により詳しく説明する。
【実施例１】
【０００９】
本発明の第１の実施例を以下に示す。
【００１０】
図１に本実施例のプログラム更新機能を有するマルチＣＰＵシステムを示す。
【００１１】
図２に本実施例のプログラム更新機能を有するマルチＣＰＵシステムにおける不揮発性メモリの内容を示す。
【００１２】
図３に本実施例のプログラム更新機能を有するマルチＣＰＵシステムにおけるプログラム更新用データの内容を示す。
【００１３】
図４に本実施例のプログラム更新機能を有するマルチＣＰＵシステムにおける一連のプログラム更新方法のフローチャートを示す。
【００１４】
図１〜４を使って、本実施例を説明する。
【００１５】
実施例で示すプログラム更新機能を有するマルチＣＰＵシステムについて説明する。
【００１６】
図１において、１０１はプログラム更新用データ出力装置である。
【００１７】
１０２はプログラム更新用データ出力装置に接続されたプログラム更新機能を有するマルチＣＰＵシステムのコントローラＣＰＵボードである。
【００１８】
１０３はプログラム更新機能を有するマルチＣＰＵシステムにおける被制御ＣＰＵボードシステムである。
【００１９】
ＭＡＩＮＣＰＵボード１０４はシリアル通信制御部ＡによってコントローラＣＰＵボード１０２に接続され、ＳＵＢＣＰＵボード１０５とシリアル通信制御部Ｂによって接続され、ＳＵＢＣＰＵボード１０６とシリアル通信制御部Ｃによって接続されている。
【００２０】
ＳＵＢＣＰＵボード１０５はＭＡＩＮＣＰＵボード１０４のシリアル通信制御部Ｂ１１２にシリアル通信制御部１１８で接続されている。
【００２１】
ＳＵＢＣＰＵボード１０６はＭＡＩＮＣＰＵボード１０４のシリアル通信制御部Ｃ１１５にシリアル通信制御部１２２で接続されている。
【００２２】
図１から、ＭＡＩＮＣＰＵボード１０４、ＳＵＢＣＰＵボード１０５及びＳＵＢＣＰＵボード１０６がツリー状の通信経路により接続されていることがわかる。また、ＳＵＢＣＰＵボード１０５及び１０６が、その動作プログラムの内容ごとに予め決められたＣＰＵ指定チェック番号と、通信経路上の位置によって同時にプログラム更新作業できるグループに、ＭＡＩＮＣＰＵによって分類及び管理されている。
【００２３】
図２の２０１はＭＡＩＮＣＰＵ１１０，ＳＵＢＣＰＵ１（１１６），ＳＵＢＣＰＵ２（１２０）に接続された不揮発性メモリ１１４，１１９，１２３の領域を示す。２０１は、プログラム更新用データによって消去、書き込み可能な第１の記憶ブロック２０２と書き換え不可能な第２の記憶ブロック２０３に分割されている。
【００２４】
これは、フラッシュメモリの領域毎に書き換えの可能・不可能を予め設定しておくことで分けることができる。書き変え可能な第１の記憶ブロック２０２には、ＳＵＢＣＰＵの通常動作時に実行する動作プログラム２０４と、前記動作プログラムのバージョン指定チェック番号２０５（バージョン情報）が格納されている。書き換え不可能な第２の記憶ブロック２０３には、ＣＰＵを識別する為のＣＰＵ指定チェック番号２０６、対称アルゴリズムの暗号を復号化・認証する為の復号・認証秘密キー２０７、動作プログラム更新を行う為の運用プログラム２０８が格納されている。
【００２５】
図３の３０１は、動作プログラム更新機能を有するマルチＣＰＵシステムにおける動作プログラム更新用データである。ヘッダ３０３はヘッダ復号データ生成用データ３０２とＭＡＩＮＣＰＵの不揮発性メモリ１１４に含まれる復号・認証秘密キー２０７、運用プログラム２０８によって復号化ができるプログラム更新用データのヘッダである。そして、これは認証データ０（３０４）と本文復号データ生成用データ３０５とＭＡＩＮＣＰＵの不揮発性メモリ１１４に含まれる復号・認証秘密キー２０７と運用プログラム２０８によって認証ができる。３０５はＳＵＢＣＰＵ１，ＳＵＢＣＰＵ２両方で用いる本文復号データ生成用データである。３０６はＳＵＢＣＰＵ１の本文データの最初の１パケットデータであり、３０８はＳＵＢＣＰＵ１の本文データの最後の１パケットデータである。
【００２６】
ＳＵＢＣＰＵ１は、不揮発性メモリに格納された復号用の秘密キー２０７と運用プログラム２０８を用い、プログラム更新用データ３０５，３０６，３０８より、不揮発性メモリの書き換え可能ブロックに書き込むプログラム更新用データを得ることができる。そして、不揮発性メモリの認証用の秘密キー２０７と運用プログラム２０８を用い、プログラム更新用データのＳＵＢＣＰＵ１用認証データ１（３１０）より、不揮発性メモリの書き換え可能ブロックに書き込まれたプログラム更新用データを認証できる。３０７はＳＵＢＣＰＵ２の本文データの最初の１パケットデータであり、３１３はＳＵＢＣＰＵ２の本文データの最後の１パケットデータである。ＳＵＢＣＰＵ２は、不揮発性メモリの復号用の秘密キー２０７と運用プログラム２０８を用い、プログラム更新用データ３０５，３０７，３０９、３１１，３１２，３１３より、不揮発性メモリの書き換え可能ブロックに書き込むプログラム更新用データを得られる。そして、不揮発性メモリの認証用の秘密キー２０７と運用プログラム２０８を用い、プログラム更新用データのＳＵＢＣＰＵ２用認証データ２（３１４）より、不揮発性メモリの書き換え可能ブロックに書き込まれたプログラム更新用データを認証できる。
【００２７】
ＭＡＩＮＣＰＵ１１０はヘッダ３０３に含まれる、ＣＰＵ指定チェック番号３１５と、プログラム更新用データのデータサイズ情報３１８，３１９と、プログラム更新用データ並び配列３２０より、プログラム更新用データ３０１の構造を読み出すことができる。
【００２８】
プログラム更新用データ並び配列３２０は、データの並び順を規定するデータ列であり、処理能力の違う２つの処理系において処理スループットを最大化することのできるデータ並び順を規定する為のものである。
【００２９】
図４に本発明実施例１でプログラムを更新する場合の一連の動作フローを説明するフローチャートを示す。プログラム更新機能を有するマルチＣＰＵシステムにおいて、プログラム更新作業は、プログラム更新用データ出力装置１０１よりコントローラＣＰＵ１０７に対してプログラム更新作業指示及びプログラム更新用データが送信されることによって開始される。Ｓ４０１において、コントローラＣＰＵ１０７は、まずＭＡＩＮＣＰＵ１１０に対し、ＳＵＢＣＰＵ１，２を指定した、プログラム更新作業開始指示コマンドを送信する。ＭＡＩＮＣＰＵ１１０は、ＳＵＢＣＰＵ１（１１６），ＳＵＢＣＰＵ２（１２０）が共にＭＡＩＮＣＰＵ１１０と直接通信制御手段によって接続されている為、同時にプログラム更新作業を行える。その為当該プログラム更新作業開始指示コマンドに対して、プログラム更新作業を開始する。
【００３０】
一方、例えばＭＡＩＮＣＰＵが自身のプログラム更新作業を実行する期間にＳＵＢＣＰＵ１，２のプログラム更新作業を実行できず、ＭＡＩＮＣＰＵとＳＵＢＣＰＵ１，２を同時に指定したプログラム更新作業開始指示コマンドを受信する場合がある。この場合には、Ｓ４０７において、ＭＡＩＮＣＰＵはコントローラＣＰＵ１０７に対してプログラム更新作業の中止を報知し、プログラム更新作業を中止する。Ｓ４０２において、コントローラＣＰＵ１０７はＭＡＩＮＣＰＵ１１０に対して、プログラム更新用データ出力装置１０１より送信された、プログラム更新用データ３０１を１ブロックずつ順次送信する。またＭＡＩＮＣＰＵ１１０は送信されたプログラム更新用データのヘッダ３０３をＲＡＭ１（１１１）に格納する。
【００３１】
Ｓ４０３において、ＭＡＩＮＣＰＵは、ＣＰＵ指定チェック番号を含むヘッダ３０３と認証データ０（３０４）と本文データの一部３０５を復号化し、プレインテキスト化したヘッダ３０３を得て認証する。
【００３２】
Ｓ４０４において、データ認証に失敗した場合。もしくはＳ４０５において、前記動作プログラム更新指示コマンドに含まれるＣＰＵ指定チェック番号が、前記プログラム更新用データに含まれるプログラム更新するＣＰＵ指定チェック番号３１５に存在しない場合。また、存在するがプログラム更新用データに含まれる各々のＣＰＵ指定チェック番号のＣＰＵのバージョンチェック番号３１６，３１７と、予めシリアル通信を用いて、ＳＵＢＣＰＵがＭＡＩＮＣＰＵに報知した各々のバージョンチェック番号が全て一致する場合。これらの場合には、Ｓ４０７においてコントローラＣＰＵにプログラム更新作業の中止を報知し、プログラム更新作業を中止する。
【００３３】
前記条件を満たさない場合、Ｓ４０８においてＭＡＩＮＣＰＵはコントローラＣＰＵ１０７に以下のプログラム更新作業の継続を報知する。ＭＡＩＮＣＰＵ１１０は、コントローラＣＰＵ１０７からシリアル制御部Ａを用いてプログラム更新用データを受信し、同時にシリアル制御部Ｂ，Ｃを用いて、ＳＵＢＣＰＵ１，２に対して各対応するプログラム更新用データを送信する。即ち、ＳＵＢＣＰＵ１にはプログラム更新用データ３０５，３０６，３０８，３１０を送信し、ＳＵＢＣＰＵ２に対しては、プログラム更新用データ３０５，３０７，３０９，３１１，３１２，３１３，３１４を送信する。このデータの並びは、プログラム更新用データ３１８，３１９、３２０よりＭＡＩＮＣＰＵによって判断される。ＳＵＢＣＰＵ１，２の処理能力、シリアル制御部Ｂ，Ｃの転送速度に差がある場合には、データ並び配列３２０を予め最適化することによって、プログラム更新作業を高速に行うことができる。
【００３４】
Ｓ４１０において、ＳＵＢＣＰＵ１，２は送信されたプログラム更新用データを処理し、不揮発性メモリ２（１１９），不揮発性メモリ３（１２３）の書き込み可能な領域にプログラム更新用データの本文データを書き込み、結果をＭＡＩＮＣＰＵに送信する。Ｓ４１１において、ＭＡＩＮＣＰＵはＳＵＢＣＰＵ１，２によって送信された結果が失敗であった場合には、ＭＡＩＮＣＰＵは失敗したＣＰＵチェック番号を持つ全てのＣＰＵのプログラム更新作業を終了する。また当該ＣＰＵチェック番号のプログラム更新作業が失敗したことによって、プログラム更新作業を行うＣＰＵがなくなった場合には、プログラム更新作業が失敗したことをコントローラＣＰＵ１０７に報知し、プログラム更新作業を終了する。
【００３５】
Ｓ４１３においてＭＡＩＮＣＰＵは、プログラム更新作業が全て終了したことを確認し、終了していない場合には、Ｓ４０８に戻ってプログラム更新作業を継続する。
【００３６】
本実施例のプログラム更新作業において、例えばシリアル制御部Ａによるデータ転送が十分に高速で、ＳＵＢＣＰＵ１，２の処理能力とシリアル制御部Ｂ，Ｃの転送能力が同一で、転送するデータ個数がＳＵＢＣＰＵ１とＳＵＢＣＰＵ２で同じであったとする。この場合、従来の半分程度の時間でプログラム更新作業を行うことができる。
【００３７】
全てのプログラム更新作業が終了すると、ＭＡＩＮＣＰＵはＳ４１４において、プログラムの更新結果をコントローラＣＰＵ１０７に報知して、プログラム更新作業を終了する。上記説明したように、本実施例の暗号を用いたプログラム更新機能を持つマルチＣＰＵシステムにおいて、複数の種類のＣＰＵのプログラム更新作業を高速にを行うことができる。
【実施例２】
【００３８】
第１の実施例として、不揮発性メモリの書き換え可能領域が小さく、被制御ＣＰＵが自己のプログラム更新作業中に、通信経路上の位置の下位グループＣＰＵに対してプログラム更新用データを送信できない場合について述べた。第２の実施例として、不揮発性メモリの書き換え可能領域が大きい場合等、被制御ＣＰＵが自己のプログラム更新作業中にも通信経路上の下位ＣＰＵに対してプログラム更新用データを送信可能な場合について述べる。
【００３９】
図５、図６を用いて本実施例を説明する。
【００４０】
図５の５０１は、動作プログラム更新機能を有するマルチＣＰＵシステムにおける動作プログラム更新用データである。ＣＰＵ指定チェック番号及び動作プログラム更新用データの構造データを含むヘッダ５０３はヘッダ復号データ生成用データ５０２と不揮発性メモリ１１４の復号・認証秘密キー２０７、運用プログラム２０８により復号化ができるヘッダである。そして、これは認証データ０（５０４）と認証データ算出値に含まれる本文復号データ生成用データ５０５と、不揮発性メモリ１（１１４）に含まれる復号・認証秘密キー２０７と運用プログラム２０８によって認証ができる。
【００４１】
５０５はＭＡＩＮＣＰＵ，ＳＵＢＣＰＵ１，ＳＵＢＣＰＵ２で用いる共通の本文復号データ生成用データである。５０５を認証データ０の算出に用いることによって本文データとヘッダ接続部の改竄を検知することができる。５０６、５０９，５１２，５１４、５１６、５１７はＭＡＩＮＣＰＵの本文データ、５０７，５１０，５１３はＳＵＢＣＰＵ１の本文データ、５０８はＳＵＢＣＰＵ２の本文データである。また、５１８，５１５，５１１  は各々ＭＡＩＮＣＰＵ，ＳＵＢＣＰＵ１，ＳＵＢＣＰＵ２の本文認証用データである。
【００４２】
各々のＣＰＵは不揮発性メモリに格納された復号用の秘密キー２０７と運用プログラム２０８を用い、前記データを用いることにより、不揮発性メモリの書き換え可能ブロックに書き込むプログラム更新用データを得ることができる。そして、不揮発性メモリに格納された認証用の秘密キー２０７と運用プログラム２０８を用い、プログラム更新用データのＭＡＩＮＣＰＵ用認証用データより不揮発性メモリの書き換え可能ブロックに書き込まれたプログラム更新用データを認証することができる。
【００４３】
また、ＭＡＩＮＣＰＵ１１０はヘッダ５０３に含まれるＣＰＵ指定チェック番号５１９と、プログラム更新用データのデータサイズ情報と、プログラム更新用データ並び配列より、プログラム更新用データ５０１の構造を読み出すことができる。
【００４４】
プログラム更新用データ並び配列５２６は、データの並び順を規定するデータ列であり、処理能力の違う２つの処理系において処理スループットを最大化することのできるデータ並び順を規定する為のものである。
【００４５】
図６に本発明実施例２でプログラムを更新する場合の一連の動作フローを説明するフローチャートを示す。プログラム更新機能を有するマルチＣＰＵシステムにおいて、プログラム更新作業は、プログラム更新用データ出力装置１０１よりコントローラＣＰＵ１０７に対してプログラム更新作業指示及びプログラム更新用データが送信されることによって開始される。Ｓ６０１において、コントローラＣＰＵ１０７は、まずＭＡＩＮＣＰＵ１１０に対し、ＭＡＩＮＣＰＵとＳＵＢＣＰＵ１，２を指定した、プログラム更新作業開始指示コマンドを送信する。Ｓ６０２において、コントローラＣＰＵ１０７はＭＡＩＮＣＰＵ１１０に対して、プログラム更新用データ出力装置１０１より送信された、プログラム更新用データ５０１を１ブロックずつ順次送信する。またＭＡＩＮＣＰＵ１１０は送信されたプログラム更新用データのヘッダ５０３をＲＡＭ１（１１１）に格納する。
【００４６】
Ｓ６０３において、ＭＡＩＮＣＰＵは、ＣＰＵ指定チェック番号を含むヘッダ５０３と認証データ０（５０４）と本文データの一部５０５を復号化し、プレインテキスト化したヘッダ５０３を得て認証する。
【００４７】
ＭＡＩＮＣＰＵは、Ｓ６０４において、データ認証に失敗した場合。もしくはＳ６０５において、前記動作プログラム更新指示コマンドに含まれるＣＰＵ指定チェック番号が、前記プログラム更新用データに含まれるプログラム更新するＣＰＵ指定チェック番号５１９に存在しない場合。又はＳ６０６において各々のＣＰＵ指定チェック番号のＣＰＵのバージョンチェック番号と、予めシリアル通信を用いて、ＳＵＢＣＰＵがＭＡＩＮＣＰＵに報知した各々のバージョンチェック番号とが全て一致する場合。これらの場合には、Ｓ６０７においてコントローラＣＰＵにエラーを報知し、プログラム更新作業を中止する。
【００４８】
前記条件を満たさない場合、Ｓ６０８にＭＡＩＮＣＰＵはコントローラＣＰＵ１０７に以下のプログラム更新作業の継続を報知する。ＭＡＩＮＣＰＵ１１０は、コントローラＣＰＵ１０７からシリアル制御部Ａを用いてプログラム更新用データを受信し、不揮発性メモリ１１４の書き込み可能な領域に書き込みを行う。同時にシリアル制御部Ｂ，Ｃを用いて、ＳＵＢＣＰＵ１，２に対して各対応するプログラム更新用データを送信する。即ち、ＭＡＩＮＣＰＵは５０５，５０６，５０９，５１２，５１４，５１６，５１７，５１８を処理し、ＳＵＢＣＰＵ１にはプログラム更新用データ５０５，５０７，５１０，５１３，５１５を送信する。そして、ＳＵＢＣＰＵ２に対しては、プログラム更新用データ５０５，５０８，５１１を送信する。
【００４９】
このデータの並びは、プログラム更新用データ５１６よりＭＡＩＮＣＰＵによって判断される。ＳＵＢＣＰＵ１，２の処理能力、シリアル制御部Ｂ，Ｃの転送速度に差がある場合には、データ並び配列３２０を最適化することによって、プログラム更新作業を高速に行うことができる。
【００５０】
Ｓ６１０において、ＳＵＢＣＰＵ１，２は送信されたプログラム更新用データを処理し、不揮発性メモリ２（１１９），不揮発性メモリ３（１２３）の書き込み可能な領域にプログラム更新用データの本文データを書き込み、結果をＭＡＩＮＣＰＵに送信する。Ｓ６１１において、ＭＡＩＮＣＰＵは自己の更新結果もしくは、ＳＵＢＣＰＵ１，２によって送信された結果が失敗であった場合には、失敗したＣＰＵチェック番号を持つ全てのＣＰＵのプログラム更新作業を終了する。また当該ＣＰＵチェック番号のプログラム更新作業が失敗したことによって、プログラム更新作業を行うＣＰＵがなくなった場合には、プログラム更新作業が失敗したことをコントローラＣＰＵ１０７に報知し、プログラム更新作業を終了する。
【００５１】
Ｓ６１３においてＭＡＩＮＣＰＵは、プログラム更新作業が全て終了したことを確認し、終了していない場合には、Ｓ６０８に戻ってプログラム更新作業を継続する。
【００５２】
全てのプログラム更新作業が終了すると、ＭＡＩＮＣＰＵはＳ６１４において、プログラムの更新結果をコントローラＣＰＵ１０７に報知して、プログラム更新作業を終了する。上記説明した様に、本実施例の本実施例の暗号を用いたプログラム更新機能を持つマルチＣＰＵシステムにおいて、複数の種類のＣＰＵのプログラム更新作業を高速にを行うことができる。
【実施例３】
【００５３】
実施例１，２では、本文復号データ生成用データを各々のＣＰＵに対して共通にする場合について述べた。
【００５４】
実施例３では、秘匿性等によりＣＰＵ種類毎に、違う本文復号生成用データを持つ場合について述べる。図７，８を用いて本実施例を説明する。
【００５５】
図７の７０１は、動作プログラム更新機能を有するマルチＣＰＵシステムにおける動作プログラム更新用データである。ＣＰＵ指定チェック番号及び動作プログラム更新用データの構造データを含むヘッダ７０３はヘッダ復号データ生成用データ７０２と不揮発性メモリ１１４の復号・認証秘密キー２０７、運用プログラム２０８により復号化ができるヘッダである。そして、これは認証データ０（７０４）認証データ１（７０５）と認証データ算出値に含まれる本文復号データ生成用データ７０６，７０７と、不揮発性メモリ１（１１４）に含まれる復号・認証秘密キー２０７と運用プログラム２０８によって認証ができる。
【００５６】
７０６，７０７はＳＵＢＣＰＵ１，ＳＵＢＣＰＵ２で用いる本文復号データ生成用データである。７０６，７０７を認証データ０（７０４）、認証データ１（７０５）の算出に用いることによって本文データとヘッダ接続部の改竄を検知することができる。７０８，７１０，７１２，７１３はＳＵＢＣＰＵ１の本文データ、７０９はＳＵＢＣＰＵ２の本文データである。また、７１１，７１４は各々ＳＵＢＣＰＵ１，ＳＵＢＣＰＵ２の本文認証用データである。各々のＣＰＵは不揮発性メモリに格納された復号用の秘密キー２０７と運用プログラム２０８を用い、前記データを用いることにより、不揮発性メモリの書き換え可能ブロックに書き込むプログラム更新用データを得ることができる。
【００５７】
また、不揮発性メモリに格納された認証用の秘密キー２０７と運用プログラム２０８と前記本文認証用データを用い、不揮発性メモリの書き換え可能ブロックに書き込まれたプログラム更新用データを認証することができる。
【００５８】
図８に本発明実施例３でプログラムを更新する場合の一連の動作フローを説明するフローチャートを示す。プログラム更新機能を有するマルチＣＰＵシステムにおいて、プログラム更新作業は、プログラム更新用データ出力装置１０１よりコントローラＣＰＵ１０７に対してプログラム更新作業指示及びプログラム更新用データが送信されることによって開始される。Ｓ８０１において、コントローラＣＰＵ１０７は、まずＭＡＩＮＣＰＵ１１０に対し、ＳＵＢＣＰＵ１，２を指定した、プログラム更新作業開始指示コマンドを送信する。Ｓ８０２において、コントローラＣＰＵ１０７はＭＡＩＮＣＰＵ１１０に対して、プログラム更新用データ出力装置１０１より送信された、プログラム更新用データ７０１を１ブロックずつ順次送信する。またＭＡＩＮＣＰＵ１１０は送信されたプログラム更新用データのヘッダ７０３をＲＡＭ１（１１１）に格納する。
【００５９】
Ｓ８０３において、ＭＡＩＮＣＰＵは、ＣＰＵ指定チェック番号を含むヘッダ７０３と認証データ０，１（７０４，７０５）と本文生成用データ１，２（７０６，７０７）を復号化し、プレインテキスト化したヘッダ７０３を得て認証する。
【００６０】
ＭＡＩＮＣＰＵは、Ｓ８０４において、データ認証に失敗した場合。もしくはＳ８０５において、前記動作プログラム更新指示コマンドに含まれるＣＰＵ指定チェック番号が、前記プログラム更新用データに含まれるプログラム更新するＣＰＵ指定チェック番号７１５に存在しない場合。又はＳ８０６において、各々のＣＰＵ指定チェック番号のＣＰＵのバージョンチェック番号７１６，７１７と、予めシリアル通信を用いて、ＳＵＢＣＰＵがＭＡＩＮＣＰＵに報知した各々のバージョンチェック番号とが全て一致する場合。これらの場合には、Ｓ８０７においてコントローラＣＰＵにプログラム更新作業の中止を報知し、プログラム更新作業を中止する。
【００６１】
前記条件を満たさない場合、Ｓ８０８においてＭＡＩＮＣＰＵはコントローラＣＰＵ１０７に以下のプログラム更新作業の継続を報知する。
【００６２】
ＭＡＩＮＣＰＵ１１０は、コントローラＣＰＵ１０７からシリアル制御部Ａを用いてプログラム更新用データを受信し、同時にシリアル制御部Ｂ，Ｃを用いて、ＳＵＢＣＰＵ１，２に対して各対応するプログラム更新用データを送信する。即ち、ＳＵＢＣＰＵ１にはプログラム更新用データ７０６，７０８，７１２、７１３、７１４を送信し、ＳＵＢＣＰＵ２に対しては、プログラム更新用データ７０７，７０９，７１０，７１１を送信する。このデータの並びは、プログラム更新用データ７１８，７１９、７２０よりＭＡＩＮＣＰＵによって判断される。ＳＵＢＣＰＵ１，２の処理能力、シリアル制御部Ｂ，Ｃの転送速度に差がある場合には、データ並び配列７２０を予め最適化することによって、プログラム更新作業を高速に行うことができる。
【００６３】
Ｓ８１０において、ＳＵＢＣＰＵ１，２は送信されたプログラム更新用データを処理し、不揮発性メモリ２（１１９），不揮発性メモリ３（１２３）の書き込み可能な領域にプログラム更新用データの本文データを書き込み、結果をＭＡＩＮＣＰＵに送信する。Ｓ８１１において、ＭＡＩＮＣＰＵはＳＵＢＣＰＵ１，２によって送信された結果が失敗であった場合には、ＭＡＩＮＣＰＵは失敗したＣＰＵチェック番号を持つ全てのＣＰＵのプログラム更新作業を終了する。また当該ＣＰＵチェック番号のプログラム更新作業が失敗したことによって、プログラム更新作業を行うＣＰＵがなくなった場合には、プログラム更新作業が失敗したことをコントローラＣＰＵ１０７に報知し、プログラム更新作業を終了する。
【００６４】
Ｓ８１３においてＭＡＩＮＣＰＵは、プログラム更新作業が全て終了したことを確認し、終了していない場合には、Ｓ８０８に戻ってプログラム更新作業を継続する。
【００６５】
全てのプログラム更新作業が終了すると、ＭＡＩＮＣＰＵはＳ８１４において、プログラムの更新結果をコントローラＣＰＵ１０７に報知して、プログラム更新作業を終了する。上記説明した様に、本実施例の暗号を用いたプログラム更新機能を持つマルチＣＰＵシステムにおいて、複数の種類のＣＰＵのプログラム更新作業を高速に行うことができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の第１、第２、第３の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムを説明する図
【図２】本発明の第１、第２、第３の実施例に関わるプログラム更新機能を有するマルチＣＰＵシステムにおける不揮発性メモリの内容を説明する図
【図３】本発明の第１の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムに使用するプログラム更新用データを説明する図
【図４】本発明の第１の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムにおける一連のプログラム更新動作フローを説明する図
【図５】本発明の第２の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムにおいて使用するプログラム更新用データを説明する図
【図６】本発明の第２の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムにおける一連のプログラム更新動作フローを説明する図
【図７】本発明の第３の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムにおいて使用するプログラム更新用データを説明する図
【図８】本発明の第３の実施例に係るプログラム更新機能を有するマルチＣＰＵシステムにおける一連のプログラム更新動作フローを説明する図
【符号の説明】
【００６７】
１０１    プログラム更新用データ出力装置
１０２    コントローラＣＰＵボード
１０３    ＳＵＢＣＰＵシステム
１０４    ＭＡＩＮＣＰＵボード
１０５    ＳＵＢＣＰＵ１ボード
１０６    ＳＵＢＣＰＵ２ボード
１０７    コントローラＣＰＵ
１０８    通信制御部
１０９、１１８、１２２    シリアル通信制御部
１１０    ＭＡＩＮＣＰＵ
１１１    ＲＡＭ１
１１２    シリアル通信制御部Ｂ
１１３    シリアル通信制御部Ａ
１１４    不揮発性メモリ１
１１５    シリアル通信制御部Ｃ
１１６    ＳＵＢＣＰＵ１
１１７    ＲＡＭ２
１１９    不揮発性メモリ２
１２０    ＳＵＢＣＰＵ２
１２１    ＲＡＭ３
１２３    不揮発性メモリ３
【図１】
2009064317.tif 000003
【図２】
2009064317.tif 000004
【図３】
2009064317.tif 000005
【図４】
2009064317.tif 000006
【図５】
2009064317.tif 000007
【図６】
2009064317.tif 000008
【図７】
2009064317.tif 000009
【図８】
2009064317.tif 000010