(57)【要約】【課題】ブートプログラムのオンライン書き替えに、端末機能を確保し、操作者の過失等にもプログラムの破損を回避および自動修復を可能にする。【解決手段】フラッシュＲＯＭにはブートプログラム・コア１Ｃとブートプログラム本体１Ａ、１Ｂおよびチェックサムを書き込み、ＲＡＭ上にコピーされたプログラム本体１Ａは、新ブートプログラムと新チェックサムを受信してその正当性を確認し（Ｓ３）、プログラム本体１Ｂとそのチェックサムを消去し（Ｓ４）、この部分に新ブートプログラムと新チェックサムへ書き替え（Ｓ５）、プログラム本体１Ａとそのチェックサムを消去し（Ｓ６）、この部分に新ブートプログラム本体と新アプリチェックサムへ書き替える（Ｓ７）。ブートプログラム・コア１Ｃは、プログラム本体１Ａに異常が見受けられた場合にプログラム本体１Ｂの正当性を判定し、プログラム本体１Ｂをプログラム本体１Ａにコピーすることを含む。【選択図】図１
2007115066.tif 000002
【特許請求の範囲】
【請求項１】
書き替え可能な不揮発性記憶デバイスを搭載し、該記憶デバイスにブートプログラムとアプリケーションプログラムを格納するディジタル端末に対し、前記ブートプログラムを遠隔地からオンラインで書き替える方法であって、
前記記憶デバイスには、ブートプログラムとして、ブートプログラム・コアと二重化したブートプログラム本体Ａ，Ｂおよびそれぞれの正当性確認用のチェックサムを書き込んでおき、
前記ブートプログラム本体Ａは、
電源立ち上げ時に起動されるブートプログラム・コアによって起動され、自ブートプログラム本体を別デバイス上にコピーして該別デバイス上で実行する過程と、
遠隔地から起動指令を受信してオンライン書き替え機能を起動し、遠隔地から新ブートプログラム本体Ａ／Ｂと新チェックサムを受信し、該新チェックサムを使って該新ブートプログラム本体の正当性を確認する過程と、
前記新ブートプログラム本体の正当性を確認した後、前記記憶デバイス上の他方のブートプログラム本体Ｂとそのチェックサムを消去する過程と、
前記ブートプログラム本体Ｂを前記新ブートプログラム本体へ書き替え、そのチェックサムを前記新チェックサムへ書き替える過程と、
前記新ブートプログラム本体への書き替えが正常に終了したことを前記ブートプログラム本体Ｂのチェックサムで確認し、正常に書き替えられた場合は、前記記憶デバイス上のブートプログラム本体Ａを消去する過程と、
前記記憶デバイス上のブートプログラム本体Ａを消去した部分を前記新ブートプログラム本体に書き替え、そのチェックサム部分を前記新チェックサムへ書き替え、書き替えが正常に終了したことをブートプログラム本体Ａのチェックサムで確認する過程と、
を有することを特徴とするディジタル端末のブートプログラム書き替え方法。
【請求項２】
前記ブートプログラム・コアは、
装置の起動で前記別デバイスにコピーされ、装置の初期設定を行い、前記ブートプログラム本体Ａの正当性をそのチェックサムで判定し、正しいことが確認されたときはブートプログラム本体Ａを起動する過程と、
前記ブートプログラム本体Ａに異常が見受けられた場合に前記ブートプログラム本体Ｂの正当性をそのチェックサムで判定し、正しいことが確認されたときは該ブートプログラム本体Ａを消去する過程と、
該ブートプログラム本体Ｂを前記ブートプログラム本体Ａの部分にコピーする過程と、
前記コピーされたブートプログラム本体Ａを起動する過程と、
を有することを特徴とする請求項１に記載のディジタル端末のブートプログラム書き替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル保護リレーなど、プログラム等の記憶媒体として不揮発性記憶デバイスを搭載するディジタル端末に、その記憶デバイスに書き込まれたプログラムを遠隔地からオンラインで書き替える方法に係り、特にブートプログラムの書き替え方法に関する。
【背景技術】
【０００２】
従来、ディジタル保護リレーにおけるプログラムや固定の設定データなどは、ＥＰＲＯＭなどのＲＯＭにＲＯＭライターを用いて書き込み、装置に実装していた。しかし、近年、ディジタル保護リレーの高機能化が進み、それらを格納する記憶デバイスも、従来のＥＰＲＯＭなどから、フラッシュＲＯＭ等のオンライン書き替え（装置稼働状態のまま書き替え）可能な不揮発性記憶デバイスになってきている。
【０００３】
この書き替え可能なフラッシュＲＯＭには、図８に示すように、当該システムの機能を実現するアプリケーションプログラム（以下、アプリケーション）２が書き込まれるが、このアプリケーションを書込むためのブートプログラム１が別途書き込まれるのが一般的である。
【０００４】
ブートプログラム１は、ディジタル端末内で最初に起動され、最低限の初期化とアプリケーション２の起動やその書き替え、さらにブートプログラム自身を書き替える機能を持っている。なお、ブートプログラムは、ブログラムの書き替え機能を使用しない場合は、システムの初期化後にアプリケーション２を起動し、自プログラムは終了する。
【０００５】
プログラムの書き替えの際には、操作者がＲＳ２３２Ｃやイーサネット（登録商標）等の通信機能でディジタル端末にインターフェースを取り、ディジタル端末に新アプリケーションまたは新ブートプログラムを取得し、書き替え可能な記憶デバイスの書き替えを行う（例えば、特許文献１参照）。
【０００６】
通常、ブートプログラム自身は書き替えられることは無いが、何らかの理由（例：機能追加、不具合修正等）でブートプログラム自身を書き替える場合がある。その際には、既存のブートプログラムを消去し、新ブートプログラムの書き替えを行う。
【特許文献１】特開２００３−１９６１１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前記のように、ブートプログラム自身は、通常、書き替えられることは無いが、何らかの理由（例：機能追加、不具合修正等）でブートプログラム自身を書き替える場合がある。その際には、既存のブートプログラムを消去し、新ブートプログラムの書き替えを行うが、書き替え完了する迄の間に操作者の過失やその他原因（ノイズや電源瞬断等）による再起動が行われてしまうことがある。このとき、既存のブートプログラムは消去され、新ブートプログラムも書き替えを完了していないことから、ディジタル端末で最初に起動するブートプログラムが異常となり、結果的にシステムの起動に失敗し、装置の機能喪失になる。
【０００８】
ブートプログラムの書き替え手順を図９の（ａ）〜（ｄ）で詳細に説明する。
【０００９】
図９（ａ）：ディジタル端末の起動では、フラッシュＲＯＭ等の書き替え可能な記憶デバイス上のブートプログラム１自身を別デバイスになるＲＡＭ上にコピーし、その上で動作する。
【００１０】
図９（ｂ）：ブートプログラムを書き替える場合、ＲＡＭ上のブートプログラム１は、まずＰＣからＲＳ２３２Ｃなどの通信機能を用いて新ブートプログラム３をＲＡＭ上に取得する。
【００１１】
図９（ｃ）：書き替え可能な記憶デバイス上のブートプログラム１の削除を行う。
【００１２】
図９（ｄ）：ＲＡＭ上の新ブートプログラム３を書き替え可能な記憶デバイスに新規のブートプログラムとして書き込む。
【００１３】
以上の処理手順になるブートプログラムの書き替えにおいては、以下の問題がある。
【００１４】
「問題点１」書き替え可能な記憶デバイス上のブートプログラム１を消去後に書き替える必要があり、消去から書き替え完了までの間はブートプログラムが書き込まれていない時間（図９（ｃ）から（ｄ）完了までの間）が存在する。
【００１５】
「問題点２」上記の書き替え完了までの間に操作者の過失やその他原因（ノイズや電源瞬断等）による再起動が行われてしまうと、既存のブートプログラムは消去され、新ブートプログラムも書き替え完了していないことから、ディジタル端末が最初に起動するブートプログラムが異常となり、結果的にシステムの起動に失敗し、装置の機能喪失になる。
【００１６】
「問題点３」上記のブートプログラムの異常発生では、ＩＣＥ（In-Circuit Emulator）等の特殊な機器を使用してブートプログラムを書き込むことになるが、一般的な接続方法と異なる場合がほとんどのため、装置の分解、書き替え、組み立てなど復旧時間が多大にかかり、需要家に納めたシステムで発生させた場合は、多大な影響を与えてしまう。
【００１７】
本発明の目的は、上記の課題を解決したディジタル端末のブートプログラム書き替え方法を提供することにある。
【課題を解決するための手段】
【００１８】
本発明は、ディジタル端末のオンライン書き替え可能な記憶デバイスにはブートプログラム・コアと二重化したブートプログラム本体に分離、およびそれぞれの正当性を判定するチェックサムを書き込んでおき、一方のブートプログラム本体の書き替え時には他方のブートプログラムによりアプリケーションの実行機能を確保し、さらに一方のブートプログラム本体の書き替え時に操作者の過失またはその他原因により書き替え失敗したときは他方のブートプログラム本体を書き替え失敗側のブートプログラム本体領域にコピーして修復するようにしたものであり、以下の方法を特徴とする。
【００１９】
（１）書き替え可能な不揮発性記憶デバイスを搭載し、該記憶デバイスにブートプログラムとアプリケーションプログラムを格納するディジタル端末に対し、前記ブートプログラムを遠隔地からオンラインで書き替える方法であって、
前記記憶デバイスには、ブートプログラムとして、ブートプログラム・コアと二重化したブートプログラム本体Ａ，Ｂおよびそれぞれの正当性確認用のチェックサムを書き込んでおき、
前記ブートプログラム本体Ａは、
電源立ち上げ時に起動されるブートプログラム・コアによって起動され、自ブートプログラム本体を別デバイス上にコピーして該別デバイス上で実行する過程と、
遠隔地から起動指令を受信してオンライン書き替え機能を起動し、遠隔地から新ブートプログラム本体Ａ／Ｂと新チェックサムを受信し、該新チェックサムを使って該新ブートプログラム本体の正当性を確認する過程と、
前記新ブートプログラム本体の正当性を確認した後、前記記憶デバイス上の他方のブートプログラム本体Ｂとそのチェックサムを消去する過程と、
前記ブートプログラム本体Ｂを前記新ブートプログラム本体へ書き替え、そのチェックサムを前記新チェックサムへ書き替える過程と、
前記新ブートプログラム本体への書き替えが正常に終了したことを前記ブートプログラム本体Ｂのチェックサムで確認し、正常に書き替えられた場合は、前記記憶デバイス上のブートプログラム本体Ａを消去する過程と、
前記記憶デバイス上のブートプログラム本体Ａを消去した部分を前記新ブートプログラム本体に書き替え、そのチェックサム部分を前記新チェックサムへ書き替え、書き替えが正常に終了したことをブートプログラム本体Ａのチェックサムで確認する過程と、
を有することを特徴とする。
【００２０】
（２）前記ブートプログラム・コアは、
装置の起動で前記別デバイスにコピーされ、装置の初期設定を行い、前記ブートプログラム本体Ａの正当性をそのチェックサムで判定し、正しいことが確認されたときはブートプログラム本体Ａを起動する過程と、
前記ブートプログラム本体Ａに異常が見受けられた場合に前記ブートプログラム本体Ｂの正当性をそのチェックサムで判定し、正しいことが確認されたときは該ブートプログラム本体Ａを消去する過程と、
該ブートプログラム本体Ｂを前記ブートプログラム本体Ａの部分にコピーする過程と、
前記コピーされたブートプログラム本体Ａを起動する過程と、
を有することを特徴とする。
【発明の効果】
【００２１】
以上のとおり、本発明によれば、ディジタル端末のオンライン書き替え可能な記憶デバイスにはブートプログラム・コアと二重化したブートプログラム本体に分離、およびそれぞれの正当性を判定するチェックサムを書き込んでおき、一方のブートプログラム本体の書き替え時には他方のブートプログラムによりアプリケーションの実行機能を確保し、さらに一方のブートプログラム本体の書き替え時に操作者の過失またはその他原因により書き替え失敗したときは他方のブートプログラム本体を書き替え失敗側のブートプログラム本体領域にコピーして修復するようにしたため、ディジタル端末における記憶デバイス上のブートプログラムを遠隔地から書き替える際の前記の「問題点１」〜「問題点３」を解決できる。
【発明を実施するための最良の形態】
【００２２】
図１は、本発明の実施形態を示すブートプログラムの書き替え処理フローである。まず、本実施形態では、書き替え可能な記憶デバイス（フラッシュＲＯＭ）上のプログラム構成は、従来のブートプログラムを、ブートプログラム・コア１ＣとブロックＡとＢに二重化したブートプログラム本体１Ａ、１Ｂ（ブロックＡ，Ｂ）の２つに分離し、また、ブロックＡ、Ｂそれぞれのブートプログラム本体の正当性を判定するチェックサムを付加して格納できる領域を確保する。
【００２３】
ブートプログラム・コア１Ｃは、最低限の初期化とブートプログラム本体のブロックＡおよびＢの正当性確認と、ブロックＡ異常時にブロックＢからの修復機能を持ち、ブートプログラムの改変でも変わることのない共通機能だけで構成されているものとし、書き替え可能な記憶デバイスから消去されることがないものとする。
【００２４】
ブートプログラム本体１Ａ，１Ｂは、アプリケーション２の起動やアプリケーション（またはブートプログラム）の書き替え機能等で構成され、ブートプログラム書き替え時には、ブロックＡとＢの２ヶ所に書き込みを行うようにする。
【００２５】
また、ブートプログラムの改変が行われる場合は、このブートプログラム本体が改変・書き替えられるものとする。
【００２６】
以下、ブートプログラムによる起動処理（Ｓ１）を図２を参照して説明し、その書き替え処理（Ｓ２〜Ｓ８）を図３〜図５を参照して詳細に説明する。
【００２７】
（Ｓ１）図２（ａ）に示すように、電源立ち上げ時はブートプログラム・コア１Ｃから起動される。図２（ｂ）に示すように、最低限の初期化を行った後に、ブートプログラム本体１Ａ（ブロックＡ）の正当性をチェックサムで確認する。図２（ｃ）に示すように、ブートプログラム本体１Ａ（ブロックＡ）の正当性が確認された場合は、そのまま起動する。なお、正当性が確認出来なかった場合の処理は後述する。
【００２８】
（Ｓ２）図３（ａ）に示すように、ブートプログラム本体１Ａは、起動後、自身をＲＡＭ等の別デバイス上にコピーし、その上で実行する。この実行に際して、ブートプログラムの書き替えでない場合はアプリケーションの実行に移行し、書き替えの場合は以下の（Ｓ３）〜（Ｓ７）の処理に移行する。
【００２９】
（Ｓ３）図３（ｂ）に示すように、ブートプログラム本体１Ａは、ＲＳ２３２Ｃ等でＰＣから新ブートプログラム本体３Ａ／３Ｂと、それらの新チェックサムを受信し、正当性を確認する。この新ブートプログラム本体３Ａ／３Ｂおよびそのチェックサムは、ブートプログラム１Ａと１Ｂおよびそれらのチェックサムの両方を含むものである。
【００３０】
（Ｓ４）図４（ａ）に示すように、ブートプログラム本体１Ａは、新ブートプログラム本体３Ａ／３Ｂの正当性を確認した後、書き替え可能な記憶デバイス上のブロックＢとそのチェックサムを消去する。
【００３１】
（Ｓ５）図４（ｂ）に示すように、ブートプログラム本体１Ａは、ブロックＢを新ブートプログラム本体３Ｂへ書き替え、そのチェックサムを新チェックサムへ書き替える。
【００３２】
（Ｓ６）図５（ａ）に示すように、ブートプログラム本体１Ａは、ブロックＢの書き替えが正常に終了したことをブロックＢの新チェックサムで確認し、正常に書き替えられた場合は、ブロックＡを消去する。なお、ブロックＢの書き替えが正常に行えなかった場合は、一定回数のリトライ後、異常終了の旨を何らかの方法で通知する。
【００３３】
（Ｓ７）図５（ｂ）に示すように、ブートプログラム本体１Ａは、ブロックＡの消去後、ブロックＡを新ブートプログラム３Ａへ書き替え、そのチェックサムを新チェックサムへ書き替える。このブロックＡの書き替えについてもブロックＢの場合と同様に、正当性の判定と異常時のリトライと通知を行う。
【００３４】
上記のオンライン書き替え機能を実施することで、前記の問題点１「書き替え可能な記憶デバイス上のブートプログラムを消去・書き替える必要があり、消去から書き替え完了までの間はブートプログラムが書き込まれていない時間が存在する」が同じブートプログラムを２つのブロックＡ／Ｂに時間的にずれて書き込むことで回避できる。
【００３５】
前記の問題点２「問題点１の書き替えを完了する迄の間に操作者の過失やその他原因（ノイズや電源瞬断等）による再起動が行われてしまうと、既存のブートプログラムは消去され、新ブートプログラムも書き替え完了していないことから、システムが最初に起動するブートプログラムが異常となり、結果的にシステムが起動しない」および問題点３「問題点２が発生すると、ＩＣＥ（In-Circuit Emulator）等の特殊な機器を使用してブートプログラムを書き込むことになるが、一般的な接続方法と異なる場合がほとんどのため、装置の分解、書き替え、組み立てなど復旧時間が多大にかかり、需要家に納めたシステムで発生させた場合は、多大な影響を与えてしまう」は、上記の２つのブロックＡ／Ｂを利用して、以下に説明するブートプログラムの自動修復処理機能により回避することができる。
【００３６】
図６および図７は、ブートプログラム・コアによるブートプログラム本体の修復処理態様を示す。この例では、「新ブートプログラム本体への書き替えを行う際に、ブロックＡの書き替え途中で瞬断が発生し、ブロックＡが破損したまま再起動されてしまった場合」を示すものである。
【００３７】
図６（ａ）に示すように、ブートプログラム・コア１Ｃは、装置の起動でＲＡＭにコピーされ、装置の初期化を行い、最初にブロックＡの正当性をそのチェックサムで判定し、正しいことが確認された時はブロックＡのブートプログラム本体１Ａを起動する。
【００３８】
図６（ｂ）に示すように、ブートプログラム・コア１Ｃは、ブロックＡに異常が見受けられた場合、ブロックＢの正当性をそのチェックサムで判定し、正しいことが確認されたときはブロックＡを消去する。
【００３９】
図７（ａ）に示すように、ブートプログラム・コア１Ｃは、ブロックＡ消去後に、ブロックＢのブートプログラム本体１ＢをブロックＡにコピー（修復）する。
【００４０】
図７（ｂ）に示すように、ブートプログラム・コア１Ｃは、ブロックＡのブートプログラム本体を起動する。
【００４１】
なお、ブロックＡ，Ｂ共に異常が見受けられた場合、何らかの方法でその旨を外部に通報する。
【００４２】
以上の処理を行うことにより、破損したブロックＡを修復することが可能になる。この自動修復機能により、問題点２「問題点１の書き替えを完了する迄の間に操作者の過失やその他原因（ノイズや電源瞬断等）による再起動が行われてしまうと、既存のブートプログラムは消去され、新ブートプログラムも書き替え完了していないことから、システムが最初に起動するブートプログラムが異常となり、結果的にシステムが起動できない」および問題点３「問題点２が発生すると、ＩＣＥ等の特殊な機器を使用してブートプログラムを書き込むことになるが、一般的な接続方法と異なる場合がほとんどのため、装置の分解、書き替え、組み立てなど復旧時間が多大にかかり、需要家に納めたシステムで発生させた場合は、多大な影響を与えてしまう」が回避可能となる。
【００４３】
なお、ブロックＢの書き替え途中で再起動が発生し、ブロックＢが破損したような場合でも、ブロックＡには従来のブートプログラム本体が残っているため、従来どおりの起動が可能である。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施形態を示すブートプログラムの書き替え処理フロー。
【図２】実施形態におけるブートプログラム・コアによる起動処理態様図。
【図３】実施形態における書き替え処理態様図（その１）。
【図４】実施形態における書き替え処理態様図（その２）。
【図５】実施形態における書き替え処理態様図（その３）。
【図６】ブートプログラム・コアによるブートプログラム本体の修復処理態様図（その１）。
【図７】ブートプログラム・コアによるブートプログラム本体の修復処理態様図（その２）。
【図８】従来のフラッシュＲＯＭ上のプログラム構成。
【図９】従来のブートプログラムの書き替えの一般的処理手順。
【符号の説明】
【００４５】
１Ａ  ブートプログラム本体Ａ
１Ｂ  ブートプログラム本体Ｂ
１Ｃ  ブートプログラム・コア
２  アプリケーションプログラム
３Ａ／３Ｂ  新ブートプログラム本体
【図１】
2007115066.tif 000003
【図２】
2007115066.tif 000004
【図３】
2007115066.tif 000005
【図４】
2007115066.tif 000006
【図５】
2007115066.tif 000007
【図６】
2007115066.tif 000008
【図７】
2007115066.tif 000009
【図８】
2007115066.tif 000010
【図９】
2007115066.tif 000011