(57)【要約】【課題】プログラムの更新の際に、当該更新による障害の発生を抑止する。【解決手段】プログラムメモリ２２の更新前プログラム（ａ）を外部記憶媒体５にコピーし（ｂ）、コピーの正常性を確認できたならば、起動設定を外部記憶媒体５に設定し、外部記憶媒体５の更新後プログラムをプログラムメモリ２２にコピーして（ｃ）、電子機器を再起動する。再起動後、起動設定が外部記憶媒体５である場合には、外部記憶媒体５にコピーされた更新前プログラムが起動する。この状態で、ユーザが、更新後プログラムの起動を選択したならば、プログラムメモリ２２の更新後プログラムを起動する。一方、ユーザが、起動設定更新を選択したならば、起動設定をプログラムメモリ２２に復する。これにより、以降は、再起動の度に、プログラムメモリ２２の更新後プログラムが起動する。【選択図】図３
2004110220.tif 000002
【特許請求の範囲】
【請求項１】
電子機器の不揮発性のプログラム保持用メモリに格納されたプログラムを更新するプログラムの更新方法であって、
前記プログラム保持用メモリに格納されているプログラムを、前記プログラム保持用メモリ以外の不揮発性のメモリであるバックアップ用メモリにコピーするステップと、
前記バックアップ用メモリにコピーしたプログラムと前記プログラム保持用メモリに格納されているプログラムの同一性を確認するステップと、
前記同一性が確認できた場合に、前記電子機器の起動後に、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定するステップと、
前記プログラム保持用メモリに格納されているプログラムを新たなプログラムに更新するステップと、
前記電子機器の起動時に、前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている場合に、当該電子機器が、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するステップと、
前記バックアップ用メモリにコピーしたプログラムが稼働した後に、ユーザの指示に応じて、当該電子機器が、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するステップと、
前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、ユーザの指示に応じて、前記電子機器の起動後に、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するよう設定するステップと、
前記プログラム保持用メモリに格納されている新たなプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、当該電子機器が、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するステップとを有することを特徴とするプログラムの更新方法。
【請求項２】
請求項１記載のプログラムの更新方法であって、
前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、ユーザの指示に応じて、前記プログラム保持用メモリに格納されているプログラムを新たなプログラムに更新するステップを有することを特徴とするプログラムの更新方法。
【請求項３】
請求項１または２記載のプログラムの更新方法であって、
前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、ユーザの指示に応じて、前記バックアップ用メモリにコピーしたプログラムで、前記プログラム保持用メモリに格納されているプログラムを更新するステップを有することを特徴とするプログラムの更新方法。
【請求項４】
請求項１、２または３記載のプログラムの更新方法であって、
前記バックアップ用メモリは過般型の記憶媒体であって、前記プログラム保持用メモリに格納されているプログラムの新たなプログラムへの更新は、前記過般型の記憶媒体に記憶されている前記新たなプログラムで前記プログラム保持用メモリに格納されているプログラムを更新することにより行われることを特徴とするプログラムの更新方法。
【請求項５】
コンピュータによって読み取られ実行されるコンピュータプログラムであって、
当該コンピュータプログラムは前記コンピュータに、前記プログラム保持用メモリに格納されているプログラムを、前記プログラム保持用メモリ以外の不揮発性のメモリであるバックアップ用メモリにコピーするステップと、
前記バックアップ用メモリにコピーしたプログラムと前記プログラム保持用メモリに格納されているプログラムの同一性を確認するステップと、
前記同一性が確認できた場合に、前記コンピュータの起動後に、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定するステップと、
前記プログラム保持用メモリに格納されているプログラムを新たなプログラムに更新するステップと、
前記コンピュータの起動後に、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定するステップと、
前記コンピュータの起動時に、前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている場合に、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するステップと、
前記バックアップ用メモリにコピーしたプログラムが稼働した後に、ユーザの指示に応じて、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するステップと、
前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記コンピュータを起動した後に、ユーザの指示に応じて、前記コンピュータの起動後に、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するよう設定するステップと、
前記プログラム保持用メモリに格納されている新たなプログラムを稼働するよう設定されている状態において前記コンピュータが起動した後に、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するステップとを実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、各種電子機器に組み込まれるファームウエアプログラムなどのプログラムを、バージョンアップなどのために更新する技術に関するものであり、特に、当該更新による障害の発生を抑止する技術に関するものである。
【０００２】
【従来の技術】
各種電子機器には、ＲＯＭなどの可書換型の不揮発性メモリに格納された形態で組み込まれるファームウエアプログラムを、バージョンアップのために適時更新する機能が予め組み込まれていることが多い。
そして、従来は、このようなファームウエアプログラムの更新は、単に、ＲＯＭ上のファームウエアプログラムを、新しいファームウエアプログラムに書き換えることにより行われてきた。
【０００３】
【発明が解決しようとする課題】
従来のファームウエアプログラム更新の技術によれば、更新作業途中で電源のオフ等の障害が発生した場合、ＲＯＭ上のファームウエアプログラムが不完全な形で書き換えられてしまい、その後、ファームウエアプログラムを正常に実行できないために、その電子機器を正常に起動することができなくなったり、正常なファームウエアプログラムの更新を行えなくなってしまうことがある。
【０００４】
そこで、本発明は、プログラムの更新の際に、当該更新による障害の発生を抑止することを課題とする。
【０００５】
【課題を解決するための手段】
前記課題達成のために、本発明は、電子機器の不揮発性のプログラム保持用メモリに格納されたプログラムを当該電子機器が更新するプログラムの更新方法を、前記プログラム保持用メモリに格納されているプログラムを、前記プログラム保持用メモリ以外の不揮発性のメモリであるバックアップ用メモリにコピーするステップと、前記バックアップ用メモリにコピーしたプログラムと前記プログラム保持用メモリに格納されているプログラムの同一性を確認するステップと、前記同一性が確認できた場合に、前記電子機器の起動後に、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定するステップと、前記プログラム保持用メモリに格納されているプログラムを新たなプログラムに更新するステップと、前記電子機器の起動時に、前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている場合に、当該電子機器が、前記プログラム保持用メモリに格納されているプログラムに代えて前記バックアップ用メモリにコピーしたプログラムを稼働するステップと、前記バックアップ用メモリにコピーしたプログラムが稼働した後に、ユーザの指示に応じて、当該電子機器が、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するステップと、前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、ユーザの指示に応じて、前記電子機器の起動後に、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するよう設定するステップと、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、当該電子機器が、前記プログラム保持用メモリに格納されている新たなプログラムを稼働するステップとより構成したものである。
【０００６】
このようなプログラムの更新方法によれば、前記プログラム保持用メモリに格納されているプログラムを前記バックアップ用メモリにコピーし、そのコピーの正常性が確認された後に、前記プログラム保持用メモリに格納されているプログラムを新たなプログラムに更新するので、前記プログラム保持用メモリに格納されているプログラムの更新が失敗した場合、または、前記プログラム保持用メモリに格納されているプログラムを更新する新たなプログラム自体に問題がある場合には、コピーしたプログラムを用いて、前記プログラム保持用メモリに格納されているプログラムを元のプログラムに復帰することができるようになる。
【０００７】
また、前記プログラム保持用メモリに格納されているプログラムを更新した後は、ユーザの指示があるまで、電子機器の起動後には、前記プログラム保持用メモリに格納されている更新後のプログラムではなく、前記バックアップ用メモリにコピーした更新前のプログラムが稼働するようになるので、プログラム保持用メモリのプログラム更新後の最初の起動後等に、プログラム保持用メモリの更新後のプログラムに問題があるために、電子機器が正常に動作しなくなってしまい、これにより更新後のプログラムに生じた問題に対処するための所要の処理を電子機器が行えなくなってしまうことを避けることができる。
【０００８】
また、本更新方法によれば、このように起動後に前記バックアップ用メモリにコピーした更新前のプログラムが稼働するように設定されている状態のまま、前記プログラム保持用メモリに格納されている更新後のプログラムを稼働させ、その動作の正常性を確認することができる。すなわち、もし、前記プログラム保持用メモリに格納されている更新後のプログラムが正常に動作しなった場合には、電子機器の再起動により、前記バックアップ用メモリにコピーした更新前のプログラムを稼働するので、上述のように電子機器が正常に動作しなくなってしまい、これにより更新後のプログラムに生じた問題に対処するための所要の処理を電子機器が行えなくなってしまうことを避けることができる。
【０００９】
そして、前記プログラム保持用メモリに格納されている更新後のプログラムの正常性が確認できた場合には、ユーザは所定の指示を行って、起動後に前記プログラム保持用メモリに格納されている更新後のプログラムが稼働するように設定することにより、プログラムの更新を完了することができる。
【００１０】
ここで、このようなプログラムの更新方法においては、さらに、前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、ユーザの指示に応じて、前記プログラム保持用メモリに格納されているプログラムを新たなプログラムに更新するステップを設けるようにしても良い。
【００１１】
このようにすることにより、前記プログラム保持用メモリに格納されている更新後のプログラムに問題が生じた場合には、問題を修正したプログラムに再度前記プログラム保持用メモリに格納されているプログラムを更新し、以上説明した、プログラム保持用メモリのプログラム更新後の動作を行うことができるようになる。
【００１２】
また、以上のプログラムの更新方法においては、前記バックアップ用メモリにコピーしたプログラムを稼働するよう設定されている状態において前記電子機器を起動した後に、ユーザの指示に応じて、前記バックアップ用メモリにコピーしたプログラムで、前記プログラム保持用メモリに格納されているプログラムを更新するステップをさらに設けるようにしてもよい。
【００１３】
このようにすることにより、前記プログラム保持用メモリに格納されている更新後のプログラムに問題が生じた場合には、前記プログラム保持用メモリに格納されているプログラムを更新前のプログラムに復することができるようになる。ここで、以上のプログラムの更新方法においては、前記バックアップ用メモリは過般型の記憶媒体とし、前記プログラム保持用メモリに格納されているプログラムの新たなプログラムへの更新は、前記過般型の記憶媒体に記憶しておいた前記新たなプログラムで前記プログラム保持用メモリに格納されているプログラムを更新することにより行うようにするようにすることも、特段、そのような過般型の記憶媒体を備えた電子機器のプログラムの更新への適用においては、更新作業の容易性や更新のために要する資源の節減の上などから好ましい。
【００１４】
【発明の実施の形態】
以下、本発明の実施形態について電子機器のファームウエアプログラムの更新への適用を例にとり説明する。
図１に、本実施形態においてファームウエアプログラム更新の対象とする電子機器の構成例を示す。
図示するように、この電子機器は、ＣＰＵ１、フラッシュメモリなどの書き換え可能な可書換型のＲＯＭ２、ＣＰＵ１の主記憶として使用されるＲＡＭ３、過般型のメモリカードなどの外部記憶媒体５を装着可能な外部記憶媒体インタフェース４、入力インタフェース６を介して接続された、キースイッチなどの入力装置７、表示インタフェース８を介して接続されたＬＣＤなどの表示装置９、不揮発性のメモリである起動設定レジスタ１０、当該電子機器の機能を提供する機能部１１とを有する。ここで電子機器はたとえばプリンタなどであり、この場合、機能部１１は印刷機能を提供するものとなる。
【００１５】
さて、本実施形態の説明においては、便宜上、ＲＯＭ２の記憶領域を二つに分割した一方の記憶領域を起動プログラムメモリ２１と呼び、他方の記憶領域をプログラムメモリ２２と呼ぶ。プログラムメモリ２２はバーションアップなどのために更新されるファームウエアのプログラムが格納されるものであり、起動プログラムメモリ２１はプログラムメモリ２２のプログラムの起動処理を行う、通常は更新しないファームウエアの起動処理プログラムが格納されるものである。
【００１６】
以下、このような電子機器における、プログラムメモリ２２に格納されたプログラムの更新処理について説明する。
図２に、起動プログラムメモリ２１に格納された起動処理プログラムが行う起動処理の手順を示す。
本起動処理プログラムは、電子機器の起動時に起動プログラムからＲＡＭ３にロードされＣＰＵ１によって実行される。
図示するように、本起動処理では、まず、電子機器各部の所定の初期化処理を行う（ステップ２００）。そして、次に、起動設定レジスタ１０に格納されている起動設定がプログラムメモリ２２となっているか、それとも外部記憶媒体５となっているかを調べる（ステップ２０２）。ここで、この起動設定は、通常時はプログラムメモリ２２となっている。
【００１７】
起動設定がプログラムメモリ２２である場合、起動処理は、プログラムメモリ２２のプログラムを起動する（ステップ２０４）。すなわち、ＣＰＵ１にプログラムメモリ２２からプログラムをＲＡＭ３にロードさせて実行させる。そして、以降は入力装置７を介したユーザからの更新指示を待つ（ステップ２０６）。
【００１８】
ここで、ユーザは現在のプログラムメモリ２２のプログラム（以下、便宜上「更新前プログラム」と記す）の更新を行う場合、新しいプログラム（以下、便宜上「更新後プログラム」と記す）を格納した外部記憶媒体５を、外部記憶媒体インタフェース４に装着し、入力装置７から更新指示を行う。
【００１９】
起動処理では、更新指示があった場合（ステップ２０６）、まず、その時点で図３ａに示すようにプログラムメモリ２２に格納されている更新前プログラムを、図３ｂに示すように外部記憶媒体５にコピー（バックアップ）する（ステップ２０８）。次に、外部記憶媒体５にコピーした更新前プログラムと、プログラムメモリ２２上のコピー元の更新前のプログラムの同一性をチェックする（ステップ２１０）。そして、正常にコピーされたことが確認できなかった場合には、表示装置にコピーエラーを通知するメッセージを表示する（ステップ２１８）。ここで、この表示からエラーを確認したユーザは、電子機器を再起動することにより、初めから起動処理を開始させることができ、また、この時点で、図３ｂに示すようにプログラムメモリ２２、設定起動レジスタの内容は変更されていないので、再起動された電子機器は従前通り動作することになる。
【００２０】
一方、正常にコピーされたことを確認できた場合には、起動レジスタの起動設定を外部記憶媒体５に変更し（ステップ２１４）、図３ｃに示すように、外部記憶媒体５に格納されている更新後プログラムで、プログラムメモリ２２の更新前プログラムを書き換える（ステップ２１６）。そして、電子機器を再起動する（ステップ２３４）。
【００２１】
さて、この後、電子機器が再起動されると、起動処理が実行され上述のように動作するが、今度は、図３ｄに示すように起動設定が外部記憶媒体５となっているので、ステップ２０２の判定によりステップ２２０に進み、プログラムメモリ２２上のプログラムではなく、外部記憶媒体５にコピーされた更新前プログラムを起動する（ステップ２２０）。そして、ユーザより入力装置７を介して、再コピー、更新後プログラム起動、起動設定更新のいづれかの動作選択を受け付ける（ステップ２２２）。なお、ステップ２１４で起動レジスタの起動設定を外部記憶媒体５に変更した後に、ステップ２１６でプログラムメモリ２２の更新前プログラムを書き換えているので、もしステップ２１６の書き換え中に障害が発生した場合であっても、再起動後には外部記憶媒体５にコピーされ正常性が確認された更新前プログラムが支障なく起動することになる。
【００２２】
さて、通常、ユーザは、更新指示後の最初の動作選択としては、ＲＯＭ２にコピーした更新後プログラムの正常性を確認するために、更新後プログラム起動を選択する。
起動処理では、更新後プログラム起動を受け付けた場合には（ステップ２２６）、プログラムメモリ２２上の更新後プログラムを起動する（ステップ２２８）。そして、ユーザは起動された更新後プログラムの動作の正常性を確認し、更新後プログラムの動作の正常性、または、異常を確認したならば、電子機器を再起動する。
【００２３】
そして、電子機器が再起動されると、起動処理が実行され上述のように動作して外部記憶媒体５にコピーされた更新前プログラムを稼働し、再度、ユーザより入力装置７を介して、再コピー、更新後プログラム起動、起動設定更新のいづれかの動作選択を受け付ける（ステップ２２２）。すなわち、先に稼働させてみたプログラムメモリ２２上の更新後プログラムに問題があった場合でも、再起動によって外部記憶媒体５にコピーされた更新前プログラムが稼働する状態に戻り、以下の再コピーなどの、更新後プログラムの問題に対処する処理を行うことができる。
【００２４】
さて、ユーザは、先に更新後プログラムの動作の異常を確認している場合には、再起動後に再コピーを選択する。
再コピーが選択された場合（ステップ２２４）、起動処理では、ステップ２０８に進み、外部記憶媒体５の更新後プログラムを再度ＲＯＭ２に書き込み、以降のステップに進み前述のように処理を行う。これにより、何らかの事情により外部記憶媒体５の更新後プログラムのＲＯＭ２へのコピーが正しく行われなかった場合には、再度、外部記憶媒体５の更新後プログラムのＲＯＭ２へのコピーから更新の処理を行うことができるようになる。また、外部記憶媒体５に、先にＲＯＭ２へコピーした更新後プログラムの不具合を修正したプログラムを格納し、この修正後のプログラムに、更新後のプログラムとするプログラムを切り替えることもできる。
【００２５】
一方、ユーザは、先に更新後プログラムの動作の正常性を確認している場合には、起動設定更新を選択する。そして、起動設定更新が選択された場合（ステップ２３０）、起動処理では、ステップ２３２に進み、図３ｅに示すように起動設定レジスタ１０の起動設定をプログラムメモリ２２に設定し（ステップ２３２）、電子機器を再起動する（ステップ２３４）。
【００２６】
すると、以降は、起動設定がプログラムメモリ２２であることより、ステップ２０２の判定に従って、起動処理ではステップ２０４でプログラムメモリ２２の更新後プログラムを起動するようになる。
ところで、以上では、通常、更新しない起動プログラムメモリ２１に格納した起動プログラムに、プログラムメモリ２２のプログラムの更新機能を設けたが、この更新機能は、プログラムメモリ２２に格納されるプログラム自体に備えるようにしても良い。
【００２７】
すなわち、図４ａに示すように、起動プログラムによる起動処理は、前述したステップ２００〜２０３、２２０の初期化処理と起動設定に応じたプログラムの起動処理のみを行うように構成し、起動処理により起動される更新前プログラムと更新後プログラムの双方に、図４ｂに示すように起動設定に応じて（ステップ４０１）、前述したステップ２０６〜２１８、２３４か、ステップ２２４〜２３４のいずれかを行うプログラムを含めるようにしてもよい。
【００２８】
または、このような更新機能を提供するプログラムは、外部記憶媒体５に別途格納しておき、起動設定が外部記憶媒体５である場合や、ユーザより所定の入力があった場合に、起動処理より起動するようにすることもできる。
また、以上の実施形態のステップ２２２においては、動作選択として、さらにプログラム復帰の選択を可能とし、プログラム復帰が選択された場合には、外部記憶媒体５に格納されている更新前プログラムをプログラムメモリ２２に復帰すると共に、起動設定をプログラムメモリ２２に設定するようにしても良い。このようにすることにより、更新後プログラムの動作に異常があった場合などに、状態を、以上のような更新動作開始前の状態に元に復することができる。
【００２９】
また、以上の実施形態において、ステップ２２８でプログラムメモリ２２の更新後プログラムを起動した後に、再起動することなく起動設定更新の動作選択を受付、起動設定をプログラムメモリ２２に変更できるようにしてもよい。
また、ステップ２０８で行うプログラムメモリ２２の更新前プログラムのコピーのコピー先は、ＲＯＭ２に充分な容量を確保できる場合には、予め定めて置いたＲＯＭ２のバックアップ用領域とするようにしても良い。
また、電子機器に所要のネットワーク通信機能を備えることにより、以上の外部記憶媒体５に代えて、ネットワーク上の記憶装置を用いるようにすることもできる。
以上、本発明の実施形態について説明した。
このように本実施形態によれば、プログラムの更新処理を行っている際に、電源オフや、更新後プログラムの不具合や、外部記憶媒体５の抜き取りなどの影響により、プログラムメモリ２２に書き込んだプログラムに問題が生じた場合でも、支障なく、その問題を克服するための処理を継続することができる。
【００３０】
なお、本実施形態はファームウエアプログラムの更新に限らず、任意のプログラムの更新に適用可能である。
【００３１】
【発明の効果】
以上のように、本発明によれば、プログラムの更新の際に、当該更新による障害の発生を抑止することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るプログラム更新の対象となる電子機器の構成例を示すブロック図である。
【図２】本発明の実施形態に係る起動処理を示すフローチャートである。
【図３】本発明の実施形態に係るプログラムの更新の手順を示す図である。
【図４】本発明の実施形態に係るプログラム更新のための他の処理構成例を示すフローチャートである。
【符号の説明】
１：ＣＰＵ、２：ＲＯＭ、３：ＲＡＭ、４：外部記憶媒体インタフェース、５：外部記憶媒体、６：入力インタフェース、７：入力装置、８：表示インタフェース、１０：起動設定レジスタ、１１：機能部、２１：起動プログラムメモリ、２２：プログラムメモリ。
【図１】
2004110220.tif 000003
【図２】
2004110220.tif 000004
【図３】
2004110220.tif 000005
【図４】
2004110220.tif 000006