(57)【要約】      （修正有）【課題】プログラムのアップデート後に、起動用プログラム格納領域の異常があっても、バックアップ用プログラムにより起動する。【解決手段】プログラムのアップデート用プログラムを格納するためのプログラム領域を、第１と第２のプログラム領域に設定する。第１のプログラム領域において、アップデート用プログラムを書込み、チェックサムをアップデート管理領域に格納する。第２のプログラム領域において、アップデート用プログラムを書込み、チェックサムを、アップデート管理領域に格納する。ブートプログラムで、通常の起動用のプログラム処理の際のチェックサムを計算する。計算して得られたチェックサムと、各アップデート管理領域に格納したチェックサムとを比較する。一方のアップデート管理領域に格納したチェックサムに対する比較結果が不一致の場合、他方のアップデート管理領域に格納されているアップデート用プログラムを使用して起動する。【選択図】図５
2016099937.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのアップデート用プログラムを格納するためのプログラム領域を、第１のプログラム領域と第２のプログラム領域に設定するステップと、
前記第１のプログラム領域に前記アップデート用プログラムの書込みの際、第１のプログラム領域用チェックサムを、前記第１のプログラム領域のアップデート管理領域に格納するステップと、
前記第２のプログラム領域に前記アップデート用プログラムの書込みの際、第２のプログラム領域用チェックサムを、前記第２のプログラム領域のアップデート管理領域に格納するステップと、
ブートプログラムで、通常の起動用のプログラム処理の際のチェックサムを計算するステップと、
計算して得られたチェックサムと、各前記アップデート管理領域に格納した前記チェックサムとを比較するステップと、
一方の前記アップデート管理領域に格納した前記チェックサムに対する比較結果が不一致の場合、他方の前記アップデート管理領域に格納されている前記アップデート用プログラムを使用して起動するステップとを備えるバックアップ起動処理方法。
【請求項２】
前記第１のプログラム領域に書込む前記アップデート用プログラムと、前記第２のプログラム領域に書込む前記アップデート用プログラムとは、同じバージョンである請求項１に記載のバックアップ起動処理方法。
【請求項３】
前記第１のプログラム領域に書込む前記アップデート用プログラムは、前記第２のプログラム領域に書込む前記アップデート用プログラムよりも１つ前のバージョンである請求項１に記載のバックアップ起動処理方法。
【請求項４】
前記バージョンの管理は、前記アップデート管理領域に格納されるアップデートの回数で行うとする請求項２または請求項３に記載のバックアップ起動処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、バックアップ起動処理方法に関する。
【背景技術】
【０００２】
プログラムのアップデート中に電源供給が断たれてしまうと、書込みに失敗し、二度と起動できなくなる。これを回避するために、一般的に、Flash ROMに、バックアップ用のプログラムも書き込んでおく手法が採用されている。
【０００３】
係る従来手法は、プログラムのアップデート中に電源の瞬断などの異常発生により、最後まで書込み完了できない場合には効果を発揮する。
【０００４】
ところが、書込み以降に、静電気等によってFlash ROMのプログラム領域が破損してしまった場合には、バックアッププログラムは有効とならず、二度と起動できなくなる、という問題があった。
【０００５】
通常、起動用のプログラム領域に破損が発生した場合、ブート処理はプログラム領域の破損を検知することができずに、起動用のプログラムを実行し、暴走する恐れがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−４０９２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、プログラムのアップデート後に、起動用プログラム格納領域の異常があっても、バックアップ用プログラムを活用可能とするバックアップ起動処理方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態のバックアップ起動処理方法は、アップデート用プログラムを格納するためのプログラム領域を、第１のプログラム領域と第２のプログラム領域に設定するステップと、前記第１のプログラム領域に前記アップデート用プログラムの書込みの際、第１のプログラム領域用チェックサムを、前記第１のプログラム領域のアップデート管理領域に格納するステップと、前記第２のプログラム領域に前記アップデート用プログラムの書込みの際、第２のプログラム領域用チェックサムを、前記第２のプログラム領域のアップデート管理領域に格納するステップと、ブートプログラムで、通常の起動用のプログラム処理の際のチェックサムを計算するステップと、計算して得られたチェックサムと、各前記アップデート管理領域に格納した前記チェックサムとを比較するステップと、一方の前記アップデート管理領域に格納した前記チェックサムに対する比較結果が不一致の場合、他方の前記アップデート管理領域に格納されている前記アップデート用プログラムを使用して起動するステップとを備える。
【図面の簡単な説明】
【０００９】
【図１】プログラム各領域のチェックサム格納後のFlash ROMの配置例を示す図である。
【図２】ブート時に起動用プログラム（Ａ面の場合）のチェックサム計算後のFlash ROMの配置例を示す図である。
【図３】計算したチェックサムとアップデート管理領域内のチェックサム（Ａ面の場合）の比較を表すFlash ROMの配置例を示す図である。
【図４】アップデート処理の流れを示すフローチャートである（Ａ面の場合）。
【図５】ブート処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１１】
本実施形態においては、起動時に通常用のプログラム領域に異常がないかチェックサムを利用して確認し、異常の場合にはバックアップ用のプログラムを起動するものである。
【００１２】
図１は、プログラム各領域のチェックサム格納後のFlash ROMの配置例を示す図である。図１に示すように、プログラムの書込みの際、プログラム領域：Ａ面、プログラム領域：Ｂ面に対応させて、各面の管理領域中に、Ａ面用チェックサム、Ｂ面用チェックサムを格納しておく。プログラムのアップデート用プログラムを格納するためのプログラム領域を、第１のプログラム領域：Ａ面と第２のプログラム領域：Ｂ面に設定する。例えば、プログラム領域Ａ面に書込むアップデート用プログラムと、プログラム領域Ｂ面に書込むアップデート用プログラムとは、同じバージョンであってもよい。あるいは、プログラム領域Ａ面に書込むアップデート用プログラムは、プログラム領域Ｂ面に書込むアップデート用プログラムよりも１つ前のバージョンであってもよい。後述するように、バージョンの管理は、アップデート管理領域に対するアップデートの回数で行うのが好適である。
【００１３】
図２は、ブート時に起動用プログラム（Ａ面の場合）のチェックサム計算後のFlash ROMの配置例を示す図である。図２に示すように、ブートプログラムにて、起動用プログラムのチェックサムを計算する。
【００１４】
図３は、計算したチェックサムとアップデート管理領域内のチェックサム（Ａ面の場合）の比較を表すFlash ROMの配置例を示す図である。図３に示すように、チェックサムの一致を確認する。
【００１５】
＜アップデート処理＞
図４は、プログラム領域Ａ面のアップデート処理の流れを示すフローチャートである。
【００１６】
まず、アップデート用のデータを取得する（ステップＳ４０１）。
【００１７】
次に、チェックサムのデータを取得する（ステップＳ４０２）。
【００１８】
続いて、アップデート用のデータからチェックサムを算出する（ステップＳ４０３）。
【００１９】
次に、算出したチェックサムとチェックサムデータが等しいか否かを判定する（ステップＳ４０４）。
【００２０】
等しければ（ステップＳ４０４でＹｅｓ）、Ａ面のプログラム領域を書き換える（ステップＳ４０５）。
【００２１】
次に、Ａ面の管理領域にチェックサムを格納する（ステップＳ４０６）。
【００２２】
続いて、Ａ面のアップデート管理領域を書き換える（ステップＳ４０７）。
【００２３】
次に、ソフトウェアをリセット（ステップＳ４０８）した後、ブート処理へ移行する。
【００２４】
一方、ステップＳ４０４でＮｏ（算出したチェックサムとチェックサムデータが等しくない）であれば、アップデート処理を終了する。
【００２５】
プログラム領域Ｂ面も同様の処理を行う。
【００２６】
＜ブート処理＞
次に、ブート処理について説明する。図５は、ブート処理の流れを示すフローチャートである。
【００２７】
まず、Ａ面のアップデート管理領域を確認する（ステップＳ５０１）。
【００２８】
次に、アップデート時に格納されたＡ面用チェックサムを管理領域から取得する（ステップＳ５０２）。
【００２９】
続いて、Ｂ面のアップデート管理領域を確認する（ステップＳ５０３）。
【００３０】
次に、アップデート時に格納されたＢ面用チェックサムを管理領域から取得する（ステップＳ５０４）。
【００３１】
次に、Ａ面のアップデート回数がＢ面のアップデート回数よりも多いか否かを判定する（ステップＳ５０５）。
【００３２】
Ａ面のアップデート回数がＢ面のアップデート回数よりも多ければ（ステップＳ５０５でＹｅｓ）、Ａ面を起動プログラム領域に設定する（ステップＳ５０６）。
【００３３】
続いて、Ａ面のチェックサムを算出する（ステップＳ５０７）。
【００３４】
次に、取得したＡ面用チェックサムと算出したＡ面のチェックサムが等しいか否かを判定する（ステップＳ５０８）。
【００３５】
等しければ（ステップＳ５０８でＹｅｓ）、起動プログラム領域の先頭へジャンプする。
【００３６】
一方、等しくなければ（ステップＳ５０８でＮｏ）、Ｂ面のチェックサムを算出する（ステップＳ５０９）。
【００３７】
続いて、取得したＢ面用チェックサムと算出したＢ面のチェックサムが等しいか否かを判定する（ステップＳ５１０）。
【００３８】
等しければ（ステップＳ５１０でＹｅｓ）、起動プログラム領域の先頭へジャンプする。
【００３９】
一方、等しくなければ（ステップＳ５１０でＮｏ）、ブートエラーとなる。
【００４０】
Ａ面のアップデート回数がＢ面のアップデート回数よりも多くなければ（ステップＳ５０５でＮｏ）、Ｂ面を起動プログラム領域に設定する（ステップＳ５１１）。
【００４１】
続いて、Ｂ面のチェックサムを算出する（ステップＳ５１２）。
【００４２】
次に、取得したＢ面用チェックサムと算出したＢ面のチェックサムが等しいか否かを判定する（ステップＳ５１３）。
【００４３】
等しければ（ステップＳ５１３でＹｅｓ）、起動プログラム領域の先頭へジャンプする。
【００４４】
一方、等しくなければ（ステップＳ５１３でＮｏ）、Ａ面のチェックサムを算出する（ステップＳ５１４）。
【００４５】
続いて、取得したＡ面用チェックサムと算出したＡ面のチェックサムが等しいか否かを判定する（ステップＳ５１５）。
【００４６】
等しければ（ステップＳ５１５でＹｅｓ）、起動プログラム領域の先頭へジャンプする。
【００４７】
一方、等しくなければ（ステップＳ５１５でＮｏ）、ブートエラーとなる。
【００４８】
本実施形態によれば、アップデート後に、起動用プログラム格納領域の異常があっても、バックアップ用プログラムを起動用プログラムとして活用することができる。
【００４９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2016099937.tif 000003
【図２】
2016099937.tif 000004
【図３】
2016099937.tif 000005
【図４】
2016099937.tif 000006
【図５】
2016099937.tif 000007