JP2004157767A - ソフトウェア更新システム - Google Patents
ソフトウェア更新システム Download PDFInfo
- Publication number
- JP2004157767A JP2004157767A JP2002322865A JP2002322865A JP2004157767A JP 2004157767 A JP2004157767 A JP 2004157767A JP 2002322865 A JP2002322865 A JP 2002322865A JP 2002322865 A JP2002322865 A JP 2002322865A JP 2004157767 A JP2004157767 A JP 2004157767A
- Authority
- JP
- Japan
- Prior art keywords
- update
- boot loader
- application
- device driver
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】従来、デバイスドライバの更新期間中の間、アプリケーションの処理が停止してしまうという課題があった。
【解決手段】最新バージョンのブートローダを保存する更新作業用端末100と、制御対象機器30を無停止で制御する更新対象装置200とを備える。また、前記更新対象装置は、ブートローダの実行領域である第1及び第2のブートローダ領域31、32と、前記第1及び第2のブートローダ領域に対応した更新情報を持つブートローダ管理テーブル33と、前記更新作業用端末からダウンロードした最新バージョンのブートローダを、前記ブートローダ管理テーブルを参照し前記更新情報に基づいて前回更新していないブートローダ領域に更新するブートローダ管理部41とを有する。
【効果】停止させることが許されない更新対象装置を停止させることなく、更新対象装置のブートローダ等を更新することが可能になる。
【選択図】 図6
【解決手段】最新バージョンのブートローダを保存する更新作業用端末100と、制御対象機器30を無停止で制御する更新対象装置200とを備える。また、前記更新対象装置は、ブートローダの実行領域である第1及び第2のブートローダ領域31、32と、前記第1及び第2のブートローダ領域に対応した更新情報を持つブートローダ管理テーブル33と、前記更新作業用端末からダウンロードした最新バージョンのブートローダを、前記ブートローダ管理テーブルを参照し前記更新情報に基づいて前回更新していないブートローダ領域に更新するブートローダ管理部41とを有する。
【効果】停止させることが許されない更新対象装置を停止させることなく、更新対象装置のブートローダ等を更新することが可能になる。
【選択図】 図6
Description
【0001】
【発明の属する技術分野】
この発明は、各種の制御装置などに搭載されるブートローダ、デバイスドライバ、アプリケーションなどのソフトウェアの更新をその装置を停止させることなく、動作中に行うソフトウェア更新システムに関するものである。
【0002】
【従来の技術】
従来のソフトウェア更新システムは、更新を行うデバイスドライバモジュールが制御する周辺装置の稼動状況を監視することで前記デバイスドライバモジュールを安全に置換可能なタイミングを検出し、該タイミング検出後、前記デバイスドライバモジュール置換中は、デバイスドライバモジュールに対する入出力リクエストをエラーさせることなくペンディング状態に設定し、前記デバイスドライバモジュールの置換完了後に、ペンディング状態の入出力リクエストの処理から再開する(例えば、特許文献1参照)。
【0003】
また、他の従来のソフトウェア更新システムは、旧ドライバを新ドライバに切替える場合には、共通制御部により、新ドライバをロードして初期設定し、運用中の旧ドライバで管理されている入出力装置を旧ドライバから切り離して、新ドライバ経由での運用に移行させる(例えば、特許文献2参照)。
【0004】
【特許文献1】
特開平11−203120号公報(第3頁−第5頁、図1)
【特許文献2】
特開平08−069430号公報(第3頁−第6頁、図1)
【0005】
【発明が解決しようとする課題】
上述したような従来のソフトウェア更新システムでは、デバイスドライバの動作中の更新を可能とする方式であるが、この方式では実際の処理中にアプリケーションからのデバイスドライバに対する要求をペンディングしているため、実質的にはデバイスドライバの更新期間中の間、アプリケーションの処理が停止してしまう。また、デバイスドライバの更新が終わり、再度処理を開始したときに、更新したデバイスドライバに問題があり動作しない場合に、復旧するために再度、更新前のデバイスドライバに戻す必要がでてくる。この場合、更新前のデバイスドライバがなければ、装置を復旧させることができないという問題点があった。
【0006】
また、他の従来のソフトウェア更新システムは、更新時に旧ドライバを残しておき、旧ドライバを動作させながら、新ドライバヘ段階的に処理を移行することで、更新時にドライバの動作を停止させずに、ドライバの更新を可能としている。また、旧ドライバを一時保存しておくことで、新ドライバが異常であることをアプリケーションが検出し、旧ドライバでの復旧を要求することで、旧ドライバでの処理の復帰が可能であるようにしている。しかし、アプリケーションによりデバイスドライバが正常に動作しているかを判定したりするなどのデバイスドライバの管理などを行う必要があるため、アプリケーションに特別な処理が必要になるという問題点があった。
【0007】
さらに、以上述べた2つの従来のソフトウェア更新システムでは、デバイスドライバの更新についてのみ対応しており、アプリケーション自身の更新には対応していないため、アプリケーションの比重が大きく、アプリケーションに更新が集中するような場合には、結局、装置を停止した後、更新を行い、再度装置を立ち上げなければならないという問題点があった。
【0008】
この発明は、前述した問題点を解決するためになされたもので、ソフトウェアのうち、ブートローダ、デバイスドライバ、アプリケーションのそれぞれにおいて、装置の動作を停止させることなく、更新を実施し、もし正常に動作しなければ、更新前のソフトウェアで自動的に復旧させることができ、ソフトウェアの更新時にも動作を停止させる必要がなく、停止することが許されないような分野に装置を適用することができるソフトウェア更新システムを得ることを目的とする。
【0009】
【課題を解決するための手段】
この発明に係るソフトウェア更新システムは、最新バージョンのブートローダを保存する更新作業用端末と、制御対象機器を無停止で制御する更新対象装置とを備える。また、前記更新対象装置は、ブートローダの実行領域である第1及び第2のブートローダ領域と、前記第1及び第2のブートローダ領域に対応した更新情報を持つブートローダ管理テーブルと、前記更新作業用端末からダウンロードした最新バージョンのブートローダを、前記ブートローダ管理テーブルを参照し前記更新情報に基づいて前回更新していないブートローダ領域に更新するブートローダ管理部とを有する。
【0010】
【発明の実施の形態】
実施の形態1.
この発明の実施の形態1に係るソフトウェア更新システムのブートローダ更新処理について図面を参照しながら説明する。図1は、この発明の実施の形態1に係るソフトウェア更新システムの対象となるシステムのハードウエア構成を示す図である。なお、各図中、同一符号は同一又は相当部分を示す。
【0011】
図1において、パソコンなどのソフトウェア更新作業用端末100は、ネットワーク400などにより、CPU等を有する制御装置などのソフトウェア更新対象装置200に接続されている。ここで、ネットワーク400は、ソフトウェアの更新に必要なファイル転送機能などを備えている。また、ソフトウェア更新対象装置200は、モータなどの制御対象機器300に対して、制御を行い、その制御は、非常に重要で、かつ常に行われているため、ソフトウェア更新対象装置200を停止させることは許されないものとする。
【0012】
図2は、この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末とソフトウェア更新対象装置の動作を示す図である。
【0013】
また、図3は、この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末からソフトウェア更新対象装置へ送られる送信データの構成を示す図である。
【0014】
ソフトウェア更新作業用端末100は、図2に示すように、最新のバージョンなどの更新対象のソフトウェアをハードディスク装置(HD)12にファイルとして保存している。このファイルをソフトウェア更新対象装置200に送付する際には、インストーラ11が、図3に示すように、送信データにタイプ(Type)フィールドを付加して送信を行う。なお、通信については、イーサネット(登録商標)(Ethernet(登録商標))などのLANやRS232Cなどのシリアルなどを想定している。
【0015】
ソフトウェアの更新作業を行う作業者は、ソフトウェア更新作業用端末100のインストーラ11に対して、送信するファイル名称及び送信する種別(ブートローダ、デバイスドライバ、アプリケーション)を指定して送信を行う。インストーラ11は、指定されたファイルを読み込み、指定された種別のタイプ(Type)フィールドを付加して、ソフトウェア更新対象装置200にデータを送信する。なお、図3に示す送信データのSフィールド、Eフィールドは、通信媒体(Ethernet(登録商標)やシリアルなど)の形態に応じて付加されるものである。
【0016】
データを受信したソフトウェア更新対象装置200は、タイプ(Type)フィールドをチェックし、受信したデータが、ブートローダなのか、デバイスドライバなのか、アプリケーションなのかを種別判定プログラム(図示せず)により判定し、それぞれインストール処理を行う。
【0017】
図4は、図1で示したソフトウェア更新対象装置200に搭載されるソフトウェア構成を示す図である。
【0018】
図4において、ソフトウェア更新対象装置200は、初期化コード(プログラム)2と、ブートローダ3と、オペレーティングシステム4と、デバイスドライバ5と、アプリケーション6とを有する。ここで、ブートローダ3は、2つの領域を持ち、それぞれブートローダ領域#1(31)、ブートローダ領域#2(32)とする。また、デバイスドライバ5も同様に、デバイスドライバ領域#1(51)、デバイスドライバ領域#2(52)を持つ。さらに、アプリケーション6についても、アプリケーション領域#1(61)とアプリケーション領域#2(62)からなるものとする。なお、デバイスドライバ5、アプリケーション6は複数あるが、図示は省略している。
【0019】
図5は、図1で示したソフトウェア更新対象装置200に搭載されるソフトウェア構成を示す図である。
【0020】
図5において、ソフトウェア更新対象装置200は、ブートローダ更新プログラム7をさらに有する。また、オペレーティングシステム4は、ブートローダ管理部41を有する。
【0021】
つぎに、この実施の形態1に係るソフトウェア更新システムの更新動作について図面を参照しながら説明する。
【0022】
図6は、この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【0023】
図1に示されたソフトウェア更新作業用端末100から、ネットワーク400経由でソフトウェア更新対象装置200のブートローダ3の更新を行う場合には、種別判定プログラムの判定に基づいて、ブートローダ更新プログラム7が、その要求を受け取る。
【0024】
要求を受け取ったブートローダ更新プログラム7は、オペレーティングシステム4に対して、ブートローダ3の更新要求を発行する。オペレーティングシステム4の内部に含まれるブートローダ管理部41は、受け取ったブートローダ3の更新要求に基づいて、ブートローダ3の領域を更新する。その際、2つあるブートローダ領域31、32のうち、前回更新した領域に対して更新を行うのではなく、それ以前の領域に対して更新を行う。
【0025】
すなわち、ブートローダ管理部41が更新要求を受け付け、領域を更新する際には、交互にブートローダの領域を更新することになる。
【0026】
図6は、ブートローダ管理部が交互に領域を更新する際の動作について示している。ブートローダ3の領域には、ブートローダ3のプログラムが保存される領域に加えて、それらを管理するブートローダ管理テーブル33があり、このブートローダ管理テーブル33には、次に更新するべきブートローダ領域を示すフラグと、ブートローダが保存されるアドレスが記録されている。
【0027】
例えば、#1側の領域のフラグが0で、#2側の領域のフラグが1という値を示しているとすると、ブートローダ更新要求を受け取ったブートローダ管理部41は、フラグが0である#1に対して、ブートローダの更新を行い、更新完了後、#1のフラグを1にセットし、#2のフラグを0にセットする。その後さらに、ブートローダ更新要求がきた場合には、0にフラグがセットされている#2の領域のブートローダが更新される。
【0028】
従って、停止させることが許されないソフトウェア更新対象装置200を停止させることなく、ソフトウェア更新対象装置200のブートローダ3を更新することが可能になる。
【0029】
実施の形態2.
この発明の実施の形態2に係るソフトウェア更新システムのブートローダ更新の異常処理について図面を参照しながら説明する。図7は、この発明の実施の形態2に係るソフトウェア更新システムの動作を示す図である。
【0030】
この実施の形態2は、上記の実施の形態1で更新されたブートローダ3が正常に動作しなかった場合に自動的に復旧する方式であり、以下図7に基づいて、この実施の形態2の方式について説明する。
【0031】
初期化コード(プログラム)2は、装置の電源投入、リセットなどにより実行を開始し、ブートローダ管理テーブル33を参照し、どちらのブートローダ3を起動するかを判定する。
【0032】
図7の例では、#1のフラグが1となっているため、初期化コード(プログラム)2は、#1の領域のブートローダ31を起動する。同時に、ブートローダ監視タイマ34を起動する。ここで、このブートローダ監視タイマ34には、タイムアップしたときに起動されるタイマハンドラ35を設定しておく。ブートローダ監視タイマ34は、設定された時間になると、タイマハンドラ35を起動するが、ブートローダ3によりリセットし、そのカウントを停止することができる。
【0033】
起動されたブートローダ31は、オペレーティングシステム4を起動し、その起動を完了したときに、ブートローダ31の動作が完了したとして、ブートローダ監視タイマ34をリセットする。
【0034】
もし、ブートローダ31に問題があり、オペレーティングシステム4のブート処理ができなかった場合には、ブートローダ監視タイマ34をリセットすることができないため、ブートローダ監視タイマ34がタイムアップし、タイマハンドラ35が起動される。
【0035】
このタイマハンドラ35は、正常に装置を復帰させるため、ブートローダ管理テーブル33のフラグをチェックし、ブートローダ31の1にセットされているフラグを0にセットし、ブートローダ32の0にセットされているフラグを1にセットし直して、装置のリセットを行う。
【0036】
装置がリセットされると再び、初期化コード2から処理が再開されるが、ブートローダ管理テーブル33が、タイマハンドラ35によって書き換えられているため、前回起動に失敗したブートローダ#1ではなく、ブートローダ#2によって、ブート処理が行われ、正常にオペレーティングシステム4のブート処理が行われる。
【0037】
ブートローダ監視タイマ34に設定される値は、ブートローダ3がオペレーティングシステム4を起動できる時間を考慮した値を設定する必要がある。
【0038】
従って、更新後のブートローダが正常に動作しなかった場合でも、更新前のブートローダで自動的に処理を復旧させることができるため、信頼のできるブートローダの更新をすることができる。
【0039】
実施の形態3.
この発明の実施の形態3に係るソフトウェア更新システムのデバイスドライバ更新処理について図面を参照しながら説明する。図8は、この発明の実施の形態3に係るソフトウェア更新システムの動作を示す図である。
【0040】
オペレーティングシステム4は、図8に示すように、デバイスドライバ管理テーブル42Aを持ち、各デバイスドライバ管理テーブルのエントリは、1つのデバイスドライバに対応するものとする。
【0041】
図9では、アプリケーション6からデバイスドライバ5がどのように呼び出されるかを示している。
【0042】
ここでは、アプリケーション61のメインルーチン612が、デバイスドライバ52の機能の1つに該当するルーチンを呼び出す様子を示している。アプリケーション61がデバイスドライバ52を呼び出す際には、その機能番号(デバイスドライバ管理テーブル42Aの左端欄)で呼び出すようにする。この機能番号により、呼び出される際、オペレーティングシステム4はデバイスドライバ管理テーブル42Aに従い、そのエントリのフラグを参照し、有効なフラグがセットされたエントリからそのコール(Call)先のアドレスを得る。
【0043】
オペレーティングシステム4は、該当するサブルーチンをコールするが、同様にサブルーチンの処理を監視するためのタイマ43を起動する。また、このタイマ43には設定された時間を越えた場合にコールされるタイマハンドラ44が設定されている。
【0044】
図10は、この発明の実施の形態3に係るソフトウェア更新システムのデバイスドライバの更新動作を示す図である。
【0045】
図1に示されたソフトウェア更新作業用端末100から、ネットワーク400経由でソフトウェア更新対象装置200のデバイスドライバ5の更新を行う場合には、種別判定プログラムの判定に基づいて、デバイスドライバ更新プログラム8が、その要求を受け取る。
【0046】
要求を受け取ったデバイスドライバ更新プログラム8は、オペレーティングシステム4に対して、デバイスドライバ5の更新要求を発行する。オペレーティングシステム4の内部に含まれるデバイスドライバ管理部(図示せず)は、受け取ったデバイスドライバ5の更新要求に基づいて、デバイスドライバ5の領域を更新する。その際、2つあるデバイスドライバ領域51、52のうち、前回更新した領域に対して更新を行うのではなく、それ以前の領域に対して更新を行う。
【0047】
すなわち、デバイスドライバ管理部が更新要求を受け付け、領域を更新する際には、交互にデバイスドライバの領域を更新することになる。
【0048】
デバイスドライバ5の更新を実施した場合には、デバイスドライバ管理部は、デバイスドライバ管理テーブル42Aの各デバイスドライバのエントリを参照し、無効な領域(フラグが0)に対して更新を行った後、対応するフラグを有効にセット(1)し、反対側の領域のフラグを無効にセット(0)する。なお、デバイスドライバ5の更新は、ルーチン(機能)毎にでも実施できる。
【0049】
オペレーティングシステム4は、アプリケーション6からデバイスドライバ5の呼び出しがある度にデバイスドライバ管理テーブル42Aのフラグを参照し、最新のルーチンをコールするため、任意のタイミングでデバイスドライバ5の入れ替えを行うことが可能である。
【0050】
従って、装置を停止させることなくデバイスドライバ5の更新を可能とするため、装置の稼動中に装置のデバイスに依存する処理部分を更新することが可能になる。デバイスドライバ5の更新により、装置のソフトウェアを全く停止することがないため、停止させることが許されない装置でデバイスの制御処理などを変更することが可能になる。
【0051】
実施の形態4.
この発明の実施の形態4に係るソフトウェア更新システムのデバイスドライバ更新の異常処理について図面を参照しながら説明する。
【0052】
この実施の形態4は、上記の実施の形態3で更新されたデバイスドライバ5が正常に動作しなかった場合に自動的に復旧する方式であり、以下図9に基づいて、この実施の形態4の方式について説明する。
【0053】
オペレーティングシステム4がアプリケーション61からの要求に従い、デバイスドライバ52のルーチンをコールする際には、タイマ43をスタートさせる。このタイマ43には、その設定値を越えた時間が経過した場合に、呼び出されるタイマハンドラ44がセットされている。
【0054】
ここでもしデバイスドライバ52のサブルーチンに異常があり、オペレーティングシステム4から呼び出された後、一定時間を越えて処理が戻らなかった場合には、タイマハンドラ44が起動され、異常処理が行われる。
【0055】
このタイマハンドラ44は、各デバイスドライバのエントリのうち、異常のあったルーチンのエントリのフラグの1を0へ、0を1ヘセットする。タイマハンドラ44は、フラグの更新が完了した後、異常があった旨をオペレーティングシステム4に通知する。オペレーティングシステム4では、再度同一のデバイスドライバ52のサブルーチン呼び出しを行う。このとき、タイマハンドラ44により、該デバイスドライバの該ルーチンのフラグは書き換えられているため、再度呼び出されたときには、異常のあったデバイスドライバのルーチンではなく、前回更新された領域のデバイスドライバが呼び出され処理が再開される。
【0056】
従って、装置を停止させることなくデバイスドライバの更新を可能とするため、装置の稼動中にデバイスに依存する処理部分を更新することが可能になる。また、デバイスドライバに異常があった場合でも、自動的に復旧できるため信頼のある更新が可能になる。
【0057】
実施の形態5.
この発明の実施の形態5に係るソフトウェア更新システムのアプリケーション更新処理について図面を参照しながら説明する。図11は、この発明の実施の形態5に係るソフトウェア更新システムの動作を示す図である。
【0058】
図11において、オペレーティングシステム4は、アプリケーション管理テーブル45Aを持ち、このアプリケーション管理テーブル45Aの1エントリは、1つのアプリケーションを指すものとする。アプリケーション6は、2つのアプリケーション領域を持ち、アプリケーションを更新する際には、交互に領域を更新する。
【0059】
図12では、アプリケーション管理テーブル45Aの1エントリの構造と、その参照動作(どのようにアプリケーション領域を参照しているか)を示している。
【0060】
図12において、1エントリは、それぞれのアプリケーションのメインルーチン、サブルーチン1、サブルーチン2を指している。なお、図12では、簡略化するためサブルーチンが2つしかないアプリケーションの例を示しているが、サブルーチンの数については、適用される装置のアプリケーションの規模に応じて、適当な数に変更することができる。
【0061】
アプリケーション管理テーブル45Aのエントリ451は、2つあるアプリケーション領域61、62に存在するアプリケーションのメインルーチン612、622、サブルーチン1(613、623)、サブルーチン2(614、624)をそれぞれ参照している。
【0062】
図1に示されたソフトウェア更新作業用端末100から、ネットワーク400経由でソフトウェア更新対象装置200のアプリケーション6の更新を行う場合には、種別判定プログラムの判定に基づいて、アプリケーション更新プログラム(図示せず)が、その要求を受け取る。
【0063】
要求を受け取ったアプリケーション更新プログラムは、オペレーティングシステム4に対して、アプリケーション6の更新要求を発行する。オペレーティングシステム4の内部に含まれるアプリケーション管理部45B(図15参照)は、受け取ったアプリケーション6の更新要求に基づいて、アプリケーション6の領域を更新する。その際、2つあるアプリケーション領域61、62のうち、前回更新した領域に対して更新を行うのではなく、それ以前の領域に対して更新を行う。
【0064】
すなわち、アプリケーション管理部が更新要求を受け付け、領域を更新する際には、交互にアプリケーションの領域を更新することになる。
【0065】
アプリケーション61の更新を実施する場合には、アプリケーション管理部45Bは、アプリケーション61が持つメインルーチン612、サブルーチン1(613)、サブルーチン2(614)の更新登録をアプリケーション管理テーブル45Aに対して行う。また、アプリケーションを構成するメインルーチン、サブルーチンについては、オペレーティングシステム4からコールされ、必ず一定時間で処理を終えた後、処理をオペレーティングシステム4に返すものでなければならない。
【0066】
図13は、アプリケーション管理テーブルの構造を示す図である。
【0067】
図13において、アプリケーションのエントリ451は、メインルーチン、サブルーチン1、サブルーチン2についてそれぞれの場所を参照するためのアドレスを持つが合わせて、エントリの内容が有効であるか無効であるかのフラグを持つ。このフラグの内容は、1が有効、0が無効とする。オペレーティングシステム4は、フラグの内容を見て、有効な方のルーチンに対して呼び出し処理を行う。
【0068】
図14は、オペレーティングシステムの動作を示す図である。
【0069】
この図14は、オペレーティングシステム4がどのように各ルーチンの呼び出しを行うかを示している。オペレーティングシステム4は、各アプリケーションのエントリから、メインルーチンを参照し呼び出しを行う。図中では、メインルーチン612を呼び出す。その際、同時に、タイマ46をスタートする。このタイマ46には、タイマハンドラ48がセットされており、設定された時間が経過するとタイマハンドラ48が起動されるようになっている。このタイマ46は、リセットした場合には動作を停止させることができるようになっている。
【0070】
呼び出されたメインルーチン612は、処理実行中に、サブルーチンコールをすることがあるが、直接サブルーチンコールをするのではなく、アプリケーション61のエントリに含まれるサブルーチンを機能番号(アプリケーション管理テーブル45Aの左端欄)に従ってコールする。
【0071】
ここでは、図13で示された該アプリケーションエントリの2番を指定し、サブルーチン1をコールしたとする。オペレーティングシステム4は、アプリケーション61からの要求に従い、サブルーチン1(613)をコールするときに、タイマ47をスタートさせる。このタイマ47は、タイマ46とは独立した別のタイマである。このタイマ47にも、タイマ46と同様に、設定時間を経過したときに呼び出されるタイマハンドラ48をセットしておく。
【0072】
オペレーティングシステム4から呼び出されたサブルーチン1(613)は、処理完了後、オペレーティングシステム4ヘ処理を戻し、オペレーティングシステム4は、処理が戻ってきたときに、呼び出し時にスタートさせたタイマ47をリセットする。
【0073】
もしここで、サブルーチン1(613)に異常があり、オペレーティングシステム4に対して処理を返さない場合には、タイマ47がタイムアップし、タイマハンドラ48が呼び出される。このタイマハンドラ48は、異常処理を実施するとともに、オペレーティングシステム4へ異常があったことを通知する。
【0074】
ここでは、サブルーチン1(613)に異常がなく、正常に処理がオペレーティングシステム4ヘ戻ってきた場合を説明する。サブルーチンから処理が戻ってきた後、オペレーティングシステム4は、サブルーチンの呼び出し元であるメインルーチン612に対して、処理をリターンする。
【0075】
処理を戻されたメインルーチン612は、その処理を完了したとして、最終的にオペレーティングシステム4に処理を返す。処理を戻されたオペレーティングシステム4は、メインルーチン612を呼び出した際に起動したタイマ46をリセットする。
【0076】
もし、メインルーチン612になんらかの異常があり、処理が一定時間を越えてもオペレーティングシステム4へ返らなかった場合には、タイマ46がタイムアップし、タイマハンドラ48が起動され、オペレーティングシステム4ヘタイマハンドラ48が通知を行う。
【0077】
アプリケーションの更新を行う際には、ネットワーク400からダウンロードされたアプリケーションプログラムをアプリケーション領域6に更新することで行うことは、前述のとおりであるが、アプリケーション管理部45Bは、更新処理を行ったタイミングで、図13に示すエントリのフラグを更新し、更新された領域のフラグを1に、反対側の領域のフラグを0にセットする。各ルーチンの処理が終わった段階で常にオペレーティングシステム4に対して処理が返り、ルーチンを呼び出す際には、最新のフラグの状態に従い、有効なメインルーチン、サブルーチンを呼び出す形式のため、常に任意のタイミングでアプリケーションの更新が可能になる。ただし、アプリケーションは構成するルーチンの構造を変更することはできないようになっている。
【0078】
従って、装置を停止させることなくアプリケーションを更新することが可能であるため、装置に搭載されたアプリケーションを更新し、装置の動作を変更する際などに、動作を停止させることなく更新を行うことができる。
【0079】
実施の形態6.
この発明の実施の形態6に係るソフトウェア更新システムのアプリケーション更新の異常処理について図面を参照しながら説明する。図15は、この発明の実施の形態6に係るソフトウェア更新システムの動作を示す図である。
【0080】
この実施の形態6は、上記の実施の形態5で更新されたアプリケーション6が正常に動作しなかった場合に自動的に復旧する方式であり、以下図15に基づいて、この実施の形態6の方式について説明する。
【0081】
オペレーティングシステム4がアプリケーション61のルーチンをコールする際には、上述したようにタイマ46、47をスタートさせる。これらのタイマ46、47には、その設定値を越えた時間が経過した場合に、呼び出されるタイマハンドラ48がセットされている。
【0082】
ここでもしアプリケーション61のサブルーチンに異常があり、オペレーティングシステム4から呼び出された後、一定時間を越えて処理が戻らなかった場合には、タイマハンドラ48が起動され、異常処理が行われる。
【0083】
このタイマハンドラ48は、各アプリケーションのエントリのうち、異常のあったルーチンのエントリのフラグの1を0へ、0を1ヘセットする。タイマハンドラ48は、フラグの更新が完了した後、異常があった旨をオペレーティングシステム4に通知する。オペレーティングシステム4では、再度同一のアプリケーション61のサブルーチン呼び出しを行う。このとき、タイマハンドラ48により、該アプリケーションの該ルーチンのフラグは書き換えられているため、再度呼び出されたときには、異常のあったアプリケーションのルーチンではなく、前回更新された領域のアプリケーションが呼び出され処理が再開される。
【0084】
オペレーティングシステム4は、呼び出したルーチンに異常があったことを認識した後、再度、該当エントリに基づき、同一のルーチンをコールするが、タイマハンドラ48により、ルーチンのフラグが入れ替えられているため、異常終了したルーチンではなく、前回更新のルーチンにより再度呼び出しが行われるため、アプリケーション更新時に問題のあるルーチンが更新された場合でも、正常に復帰できるようになっている。
【0085】
従って、更新後のアプリケーションに異常があり、正常に動作できなかった場合に、自動的に前回更新のバージョンのアプリケーションで処理を復旧するため、信頼のあるアプリケーションの更新が可能である。
【0086】
実施の形態7.
この発明の実施の形態7に係るソフトウェア更新システムについて図面を参照しながら説明する。図16は、この発明の実施の形態7に係るソフトウェア更新システムの構成を示す図である。
【0087】
図16において、ソフトウェア更新対象装置200の全構成管理部9は、ブートローダ構成管理部410と、デバイスドライバ構成管理部411と、アプリケーション構成管理部412と連携して動作する。
【0088】
例えば、アプリケーション構成管理部412は、装置にインストールされた各アプリケーションのバージョン管理を行い、またそれらのアプリケーションの構成を全構成管理部9に伝える。ブートローダ構成管理部410、デバイスドライバ構成管理部411についても同様な階層構造をとる。
【0089】
全構成管理部9は、ネットワーク400を通じてサーバ(ソフトウェア更新作業用端末)500に対してそれぞれのソフトウェアの最新バージョンに対して問い合わせを行う。サーバ500は、各ソフトウェアの最新バージョンがなんであるかを全体構成管理部9に対して返し、全体構成管理部9は、各バージョンを比較した後、装置にインストールされているバージョンが古ければ、上記の実施の形態1、3、及び5に示された方法により、能動的にブートローダ、デバイスドライバ、アプリケーションの各バージョンアップを行う。
【0090】
それぞれのバージョンの更新時になんらかの異常があった場合には、上記の実施の形態2、4、及び6の方法に従い、古いバージョンのソフトウェアによりただちに処理を復旧することが可能である。
【0091】
すなわち、ブートローダ、デバイスドライバ、アプリケーションのソフトウェアの最新のバージョンがサーバ500上に保存され、全構成管理部9がサーバ500に対して定期的に各ソフトウェアの内容をチェックし、装置にインストールされているソフトウェアが古いものであれば、サーバ500上のソフトウェアで自動的に更新することにより、常に装置のソフトウェア構成を最新の状態に保つものである。
【0092】
従って、ソフトウェア更新対象装置200は、自動的にサーバ500に対して最新のバージョンのソフトウェアを問い合わせ、装置のソフトウェア構成を最新に保つことが可能になる。同一の装置が複数ある場合には、それぞれの装置のソフトウェアを更新する作業を装置が自動的に行うため、装置のバージョンアップを行う作業が大幅に軽減される。
【0093】
【発明の効果】
この発明に係るソフトウェア更新システムは、以上説明したとおり、停止させることが許されないソフトウェア更新対象装置を停止させることなく、ソフトウェア更新対象装置のブートローダ等を更新することが可能になる。
【図面の簡単な説明】
【図1】この発明の実施の形態1に係るソフトウェア更新システムの対象となるシステムのハードウエア構成を示す図である。
【図2】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末とソフトウェア更新対象装置の動作を示す図である。
【図3】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末からソフトウェア更新対象装置へ送られる送信データの構成を示す図である。
【図4】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置に搭載されるソフトウェア構成を示す図である。
【図5】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置に搭載されるソフトウェア構成を示す図である。
【図6】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図7】この発明の実施の形態2に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図8】この発明の実施の形態3に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図9】この発明の実施の形態3及び4に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図10】この発明の実施の形態3に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図11】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図12】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図13】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図14】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図15】この発明の実施の形態6に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図16】この発明の実施の形態7に係るソフトウェア更新システムの構成を示す図である。
【符号の説明】
2 初期化コード(プログラム)、3 ブートローダ、4 オペレーティングシステム、5 デバイスドライバ、6 アプリケーション、7 ブートローダ更新プログラム、8 デバイスドライバ更新プログラム、9 全構成管理部、11インストーラ、12 ハードディスク装置、33 ブートローダ管理テーブル、34 ブートローダ監視タイマ、35 タイマハンドラ、41 ブートローダ管理部、42A デバイスドライバ管理テーブル、43 タイマ、44 タイマハンドラ、45A アプリケーション管理テーブル、45B アプリケーション管理部、46 タイマ、47 タイマ、48 タイマハンドラ、100 ソフトウェア更新作業用端末、200 ソフトウェア更新対象装置、300 制御対象機器、400 ネットワーク、410 ブートローダ構成管理部、411 デバイスドライバ構成管理部、412 アプリケーション構成管理部、500 サーバ。
【発明の属する技術分野】
この発明は、各種の制御装置などに搭載されるブートローダ、デバイスドライバ、アプリケーションなどのソフトウェアの更新をその装置を停止させることなく、動作中に行うソフトウェア更新システムに関するものである。
【0002】
【従来の技術】
従来のソフトウェア更新システムは、更新を行うデバイスドライバモジュールが制御する周辺装置の稼動状況を監視することで前記デバイスドライバモジュールを安全に置換可能なタイミングを検出し、該タイミング検出後、前記デバイスドライバモジュール置換中は、デバイスドライバモジュールに対する入出力リクエストをエラーさせることなくペンディング状態に設定し、前記デバイスドライバモジュールの置換完了後に、ペンディング状態の入出力リクエストの処理から再開する(例えば、特許文献1参照)。
【0003】
また、他の従来のソフトウェア更新システムは、旧ドライバを新ドライバに切替える場合には、共通制御部により、新ドライバをロードして初期設定し、運用中の旧ドライバで管理されている入出力装置を旧ドライバから切り離して、新ドライバ経由での運用に移行させる(例えば、特許文献2参照)。
【0004】
【特許文献1】
特開平11−203120号公報(第3頁−第5頁、図1)
【特許文献2】
特開平08−069430号公報(第3頁−第6頁、図1)
【0005】
【発明が解決しようとする課題】
上述したような従来のソフトウェア更新システムでは、デバイスドライバの動作中の更新を可能とする方式であるが、この方式では実際の処理中にアプリケーションからのデバイスドライバに対する要求をペンディングしているため、実質的にはデバイスドライバの更新期間中の間、アプリケーションの処理が停止してしまう。また、デバイスドライバの更新が終わり、再度処理を開始したときに、更新したデバイスドライバに問題があり動作しない場合に、復旧するために再度、更新前のデバイスドライバに戻す必要がでてくる。この場合、更新前のデバイスドライバがなければ、装置を復旧させることができないという問題点があった。
【0006】
また、他の従来のソフトウェア更新システムは、更新時に旧ドライバを残しておき、旧ドライバを動作させながら、新ドライバヘ段階的に処理を移行することで、更新時にドライバの動作を停止させずに、ドライバの更新を可能としている。また、旧ドライバを一時保存しておくことで、新ドライバが異常であることをアプリケーションが検出し、旧ドライバでの復旧を要求することで、旧ドライバでの処理の復帰が可能であるようにしている。しかし、アプリケーションによりデバイスドライバが正常に動作しているかを判定したりするなどのデバイスドライバの管理などを行う必要があるため、アプリケーションに特別な処理が必要になるという問題点があった。
【0007】
さらに、以上述べた2つの従来のソフトウェア更新システムでは、デバイスドライバの更新についてのみ対応しており、アプリケーション自身の更新には対応していないため、アプリケーションの比重が大きく、アプリケーションに更新が集中するような場合には、結局、装置を停止した後、更新を行い、再度装置を立ち上げなければならないという問題点があった。
【0008】
この発明は、前述した問題点を解決するためになされたもので、ソフトウェアのうち、ブートローダ、デバイスドライバ、アプリケーションのそれぞれにおいて、装置の動作を停止させることなく、更新を実施し、もし正常に動作しなければ、更新前のソフトウェアで自動的に復旧させることができ、ソフトウェアの更新時にも動作を停止させる必要がなく、停止することが許されないような分野に装置を適用することができるソフトウェア更新システムを得ることを目的とする。
【0009】
【課題を解決するための手段】
この発明に係るソフトウェア更新システムは、最新バージョンのブートローダを保存する更新作業用端末と、制御対象機器を無停止で制御する更新対象装置とを備える。また、前記更新対象装置は、ブートローダの実行領域である第1及び第2のブートローダ領域と、前記第1及び第2のブートローダ領域に対応した更新情報を持つブートローダ管理テーブルと、前記更新作業用端末からダウンロードした最新バージョンのブートローダを、前記ブートローダ管理テーブルを参照し前記更新情報に基づいて前回更新していないブートローダ領域に更新するブートローダ管理部とを有する。
【0010】
【発明の実施の形態】
実施の形態1.
この発明の実施の形態1に係るソフトウェア更新システムのブートローダ更新処理について図面を参照しながら説明する。図1は、この発明の実施の形態1に係るソフトウェア更新システムの対象となるシステムのハードウエア構成を示す図である。なお、各図中、同一符号は同一又は相当部分を示す。
【0011】
図1において、パソコンなどのソフトウェア更新作業用端末100は、ネットワーク400などにより、CPU等を有する制御装置などのソフトウェア更新対象装置200に接続されている。ここで、ネットワーク400は、ソフトウェアの更新に必要なファイル転送機能などを備えている。また、ソフトウェア更新対象装置200は、モータなどの制御対象機器300に対して、制御を行い、その制御は、非常に重要で、かつ常に行われているため、ソフトウェア更新対象装置200を停止させることは許されないものとする。
【0012】
図2は、この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末とソフトウェア更新対象装置の動作を示す図である。
【0013】
また、図3は、この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末からソフトウェア更新対象装置へ送られる送信データの構成を示す図である。
【0014】
ソフトウェア更新作業用端末100は、図2に示すように、最新のバージョンなどの更新対象のソフトウェアをハードディスク装置(HD)12にファイルとして保存している。このファイルをソフトウェア更新対象装置200に送付する際には、インストーラ11が、図3に示すように、送信データにタイプ(Type)フィールドを付加して送信を行う。なお、通信については、イーサネット(登録商標)(Ethernet(登録商標))などのLANやRS232Cなどのシリアルなどを想定している。
【0015】
ソフトウェアの更新作業を行う作業者は、ソフトウェア更新作業用端末100のインストーラ11に対して、送信するファイル名称及び送信する種別(ブートローダ、デバイスドライバ、アプリケーション)を指定して送信を行う。インストーラ11は、指定されたファイルを読み込み、指定された種別のタイプ(Type)フィールドを付加して、ソフトウェア更新対象装置200にデータを送信する。なお、図3に示す送信データのSフィールド、Eフィールドは、通信媒体(Ethernet(登録商標)やシリアルなど)の形態に応じて付加されるものである。
【0016】
データを受信したソフトウェア更新対象装置200は、タイプ(Type)フィールドをチェックし、受信したデータが、ブートローダなのか、デバイスドライバなのか、アプリケーションなのかを種別判定プログラム(図示せず)により判定し、それぞれインストール処理を行う。
【0017】
図4は、図1で示したソフトウェア更新対象装置200に搭載されるソフトウェア構成を示す図である。
【0018】
図4において、ソフトウェア更新対象装置200は、初期化コード(プログラム)2と、ブートローダ3と、オペレーティングシステム4と、デバイスドライバ5と、アプリケーション6とを有する。ここで、ブートローダ3は、2つの領域を持ち、それぞれブートローダ領域#1(31)、ブートローダ領域#2(32)とする。また、デバイスドライバ5も同様に、デバイスドライバ領域#1(51)、デバイスドライバ領域#2(52)を持つ。さらに、アプリケーション6についても、アプリケーション領域#1(61)とアプリケーション領域#2(62)からなるものとする。なお、デバイスドライバ5、アプリケーション6は複数あるが、図示は省略している。
【0019】
図5は、図1で示したソフトウェア更新対象装置200に搭載されるソフトウェア構成を示す図である。
【0020】
図5において、ソフトウェア更新対象装置200は、ブートローダ更新プログラム7をさらに有する。また、オペレーティングシステム4は、ブートローダ管理部41を有する。
【0021】
つぎに、この実施の形態1に係るソフトウェア更新システムの更新動作について図面を参照しながら説明する。
【0022】
図6は、この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【0023】
図1に示されたソフトウェア更新作業用端末100から、ネットワーク400経由でソフトウェア更新対象装置200のブートローダ3の更新を行う場合には、種別判定プログラムの判定に基づいて、ブートローダ更新プログラム7が、その要求を受け取る。
【0024】
要求を受け取ったブートローダ更新プログラム7は、オペレーティングシステム4に対して、ブートローダ3の更新要求を発行する。オペレーティングシステム4の内部に含まれるブートローダ管理部41は、受け取ったブートローダ3の更新要求に基づいて、ブートローダ3の領域を更新する。その際、2つあるブートローダ領域31、32のうち、前回更新した領域に対して更新を行うのではなく、それ以前の領域に対して更新を行う。
【0025】
すなわち、ブートローダ管理部41が更新要求を受け付け、領域を更新する際には、交互にブートローダの領域を更新することになる。
【0026】
図6は、ブートローダ管理部が交互に領域を更新する際の動作について示している。ブートローダ3の領域には、ブートローダ3のプログラムが保存される領域に加えて、それらを管理するブートローダ管理テーブル33があり、このブートローダ管理テーブル33には、次に更新するべきブートローダ領域を示すフラグと、ブートローダが保存されるアドレスが記録されている。
【0027】
例えば、#1側の領域のフラグが0で、#2側の領域のフラグが1という値を示しているとすると、ブートローダ更新要求を受け取ったブートローダ管理部41は、フラグが0である#1に対して、ブートローダの更新を行い、更新完了後、#1のフラグを1にセットし、#2のフラグを0にセットする。その後さらに、ブートローダ更新要求がきた場合には、0にフラグがセットされている#2の領域のブートローダが更新される。
【0028】
従って、停止させることが許されないソフトウェア更新対象装置200を停止させることなく、ソフトウェア更新対象装置200のブートローダ3を更新することが可能になる。
【0029】
実施の形態2.
この発明の実施の形態2に係るソフトウェア更新システムのブートローダ更新の異常処理について図面を参照しながら説明する。図7は、この発明の実施の形態2に係るソフトウェア更新システムの動作を示す図である。
【0030】
この実施の形態2は、上記の実施の形態1で更新されたブートローダ3が正常に動作しなかった場合に自動的に復旧する方式であり、以下図7に基づいて、この実施の形態2の方式について説明する。
【0031】
初期化コード(プログラム)2は、装置の電源投入、リセットなどにより実行を開始し、ブートローダ管理テーブル33を参照し、どちらのブートローダ3を起動するかを判定する。
【0032】
図7の例では、#1のフラグが1となっているため、初期化コード(プログラム)2は、#1の領域のブートローダ31を起動する。同時に、ブートローダ監視タイマ34を起動する。ここで、このブートローダ監視タイマ34には、タイムアップしたときに起動されるタイマハンドラ35を設定しておく。ブートローダ監視タイマ34は、設定された時間になると、タイマハンドラ35を起動するが、ブートローダ3によりリセットし、そのカウントを停止することができる。
【0033】
起動されたブートローダ31は、オペレーティングシステム4を起動し、その起動を完了したときに、ブートローダ31の動作が完了したとして、ブートローダ監視タイマ34をリセットする。
【0034】
もし、ブートローダ31に問題があり、オペレーティングシステム4のブート処理ができなかった場合には、ブートローダ監視タイマ34をリセットすることができないため、ブートローダ監視タイマ34がタイムアップし、タイマハンドラ35が起動される。
【0035】
このタイマハンドラ35は、正常に装置を復帰させるため、ブートローダ管理テーブル33のフラグをチェックし、ブートローダ31の1にセットされているフラグを0にセットし、ブートローダ32の0にセットされているフラグを1にセットし直して、装置のリセットを行う。
【0036】
装置がリセットされると再び、初期化コード2から処理が再開されるが、ブートローダ管理テーブル33が、タイマハンドラ35によって書き換えられているため、前回起動に失敗したブートローダ#1ではなく、ブートローダ#2によって、ブート処理が行われ、正常にオペレーティングシステム4のブート処理が行われる。
【0037】
ブートローダ監視タイマ34に設定される値は、ブートローダ3がオペレーティングシステム4を起動できる時間を考慮した値を設定する必要がある。
【0038】
従って、更新後のブートローダが正常に動作しなかった場合でも、更新前のブートローダで自動的に処理を復旧させることができるため、信頼のできるブートローダの更新をすることができる。
【0039】
実施の形態3.
この発明の実施の形態3に係るソフトウェア更新システムのデバイスドライバ更新処理について図面を参照しながら説明する。図8は、この発明の実施の形態3に係るソフトウェア更新システムの動作を示す図である。
【0040】
オペレーティングシステム4は、図8に示すように、デバイスドライバ管理テーブル42Aを持ち、各デバイスドライバ管理テーブルのエントリは、1つのデバイスドライバに対応するものとする。
【0041】
図9では、アプリケーション6からデバイスドライバ5がどのように呼び出されるかを示している。
【0042】
ここでは、アプリケーション61のメインルーチン612が、デバイスドライバ52の機能の1つに該当するルーチンを呼び出す様子を示している。アプリケーション61がデバイスドライバ52を呼び出す際には、その機能番号(デバイスドライバ管理テーブル42Aの左端欄)で呼び出すようにする。この機能番号により、呼び出される際、オペレーティングシステム4はデバイスドライバ管理テーブル42Aに従い、そのエントリのフラグを参照し、有効なフラグがセットされたエントリからそのコール(Call)先のアドレスを得る。
【0043】
オペレーティングシステム4は、該当するサブルーチンをコールするが、同様にサブルーチンの処理を監視するためのタイマ43を起動する。また、このタイマ43には設定された時間を越えた場合にコールされるタイマハンドラ44が設定されている。
【0044】
図10は、この発明の実施の形態3に係るソフトウェア更新システムのデバイスドライバの更新動作を示す図である。
【0045】
図1に示されたソフトウェア更新作業用端末100から、ネットワーク400経由でソフトウェア更新対象装置200のデバイスドライバ5の更新を行う場合には、種別判定プログラムの判定に基づいて、デバイスドライバ更新プログラム8が、その要求を受け取る。
【0046】
要求を受け取ったデバイスドライバ更新プログラム8は、オペレーティングシステム4に対して、デバイスドライバ5の更新要求を発行する。オペレーティングシステム4の内部に含まれるデバイスドライバ管理部(図示せず)は、受け取ったデバイスドライバ5の更新要求に基づいて、デバイスドライバ5の領域を更新する。その際、2つあるデバイスドライバ領域51、52のうち、前回更新した領域に対して更新を行うのではなく、それ以前の領域に対して更新を行う。
【0047】
すなわち、デバイスドライバ管理部が更新要求を受け付け、領域を更新する際には、交互にデバイスドライバの領域を更新することになる。
【0048】
デバイスドライバ5の更新を実施した場合には、デバイスドライバ管理部は、デバイスドライバ管理テーブル42Aの各デバイスドライバのエントリを参照し、無効な領域(フラグが0)に対して更新を行った後、対応するフラグを有効にセット(1)し、反対側の領域のフラグを無効にセット(0)する。なお、デバイスドライバ5の更新は、ルーチン(機能)毎にでも実施できる。
【0049】
オペレーティングシステム4は、アプリケーション6からデバイスドライバ5の呼び出しがある度にデバイスドライバ管理テーブル42Aのフラグを参照し、最新のルーチンをコールするため、任意のタイミングでデバイスドライバ5の入れ替えを行うことが可能である。
【0050】
従って、装置を停止させることなくデバイスドライバ5の更新を可能とするため、装置の稼動中に装置のデバイスに依存する処理部分を更新することが可能になる。デバイスドライバ5の更新により、装置のソフトウェアを全く停止することがないため、停止させることが許されない装置でデバイスの制御処理などを変更することが可能になる。
【0051】
実施の形態4.
この発明の実施の形態4に係るソフトウェア更新システムのデバイスドライバ更新の異常処理について図面を参照しながら説明する。
【0052】
この実施の形態4は、上記の実施の形態3で更新されたデバイスドライバ5が正常に動作しなかった場合に自動的に復旧する方式であり、以下図9に基づいて、この実施の形態4の方式について説明する。
【0053】
オペレーティングシステム4がアプリケーション61からの要求に従い、デバイスドライバ52のルーチンをコールする際には、タイマ43をスタートさせる。このタイマ43には、その設定値を越えた時間が経過した場合に、呼び出されるタイマハンドラ44がセットされている。
【0054】
ここでもしデバイスドライバ52のサブルーチンに異常があり、オペレーティングシステム4から呼び出された後、一定時間を越えて処理が戻らなかった場合には、タイマハンドラ44が起動され、異常処理が行われる。
【0055】
このタイマハンドラ44は、各デバイスドライバのエントリのうち、異常のあったルーチンのエントリのフラグの1を0へ、0を1ヘセットする。タイマハンドラ44は、フラグの更新が完了した後、異常があった旨をオペレーティングシステム4に通知する。オペレーティングシステム4では、再度同一のデバイスドライバ52のサブルーチン呼び出しを行う。このとき、タイマハンドラ44により、該デバイスドライバの該ルーチンのフラグは書き換えられているため、再度呼び出されたときには、異常のあったデバイスドライバのルーチンではなく、前回更新された領域のデバイスドライバが呼び出され処理が再開される。
【0056】
従って、装置を停止させることなくデバイスドライバの更新を可能とするため、装置の稼動中にデバイスに依存する処理部分を更新することが可能になる。また、デバイスドライバに異常があった場合でも、自動的に復旧できるため信頼のある更新が可能になる。
【0057】
実施の形態5.
この発明の実施の形態5に係るソフトウェア更新システムのアプリケーション更新処理について図面を参照しながら説明する。図11は、この発明の実施の形態5に係るソフトウェア更新システムの動作を示す図である。
【0058】
図11において、オペレーティングシステム4は、アプリケーション管理テーブル45Aを持ち、このアプリケーション管理テーブル45Aの1エントリは、1つのアプリケーションを指すものとする。アプリケーション6は、2つのアプリケーション領域を持ち、アプリケーションを更新する際には、交互に領域を更新する。
【0059】
図12では、アプリケーション管理テーブル45Aの1エントリの構造と、その参照動作(どのようにアプリケーション領域を参照しているか)を示している。
【0060】
図12において、1エントリは、それぞれのアプリケーションのメインルーチン、サブルーチン1、サブルーチン2を指している。なお、図12では、簡略化するためサブルーチンが2つしかないアプリケーションの例を示しているが、サブルーチンの数については、適用される装置のアプリケーションの規模に応じて、適当な数に変更することができる。
【0061】
アプリケーション管理テーブル45Aのエントリ451は、2つあるアプリケーション領域61、62に存在するアプリケーションのメインルーチン612、622、サブルーチン1(613、623)、サブルーチン2(614、624)をそれぞれ参照している。
【0062】
図1に示されたソフトウェア更新作業用端末100から、ネットワーク400経由でソフトウェア更新対象装置200のアプリケーション6の更新を行う場合には、種別判定プログラムの判定に基づいて、アプリケーション更新プログラム(図示せず)が、その要求を受け取る。
【0063】
要求を受け取ったアプリケーション更新プログラムは、オペレーティングシステム4に対して、アプリケーション6の更新要求を発行する。オペレーティングシステム4の内部に含まれるアプリケーション管理部45B(図15参照)は、受け取ったアプリケーション6の更新要求に基づいて、アプリケーション6の領域を更新する。その際、2つあるアプリケーション領域61、62のうち、前回更新した領域に対して更新を行うのではなく、それ以前の領域に対して更新を行う。
【0064】
すなわち、アプリケーション管理部が更新要求を受け付け、領域を更新する際には、交互にアプリケーションの領域を更新することになる。
【0065】
アプリケーション61の更新を実施する場合には、アプリケーション管理部45Bは、アプリケーション61が持つメインルーチン612、サブルーチン1(613)、サブルーチン2(614)の更新登録をアプリケーション管理テーブル45Aに対して行う。また、アプリケーションを構成するメインルーチン、サブルーチンについては、オペレーティングシステム4からコールされ、必ず一定時間で処理を終えた後、処理をオペレーティングシステム4に返すものでなければならない。
【0066】
図13は、アプリケーション管理テーブルの構造を示す図である。
【0067】
図13において、アプリケーションのエントリ451は、メインルーチン、サブルーチン1、サブルーチン2についてそれぞれの場所を参照するためのアドレスを持つが合わせて、エントリの内容が有効であるか無効であるかのフラグを持つ。このフラグの内容は、1が有効、0が無効とする。オペレーティングシステム4は、フラグの内容を見て、有効な方のルーチンに対して呼び出し処理を行う。
【0068】
図14は、オペレーティングシステムの動作を示す図である。
【0069】
この図14は、オペレーティングシステム4がどのように各ルーチンの呼び出しを行うかを示している。オペレーティングシステム4は、各アプリケーションのエントリから、メインルーチンを参照し呼び出しを行う。図中では、メインルーチン612を呼び出す。その際、同時に、タイマ46をスタートする。このタイマ46には、タイマハンドラ48がセットされており、設定された時間が経過するとタイマハンドラ48が起動されるようになっている。このタイマ46は、リセットした場合には動作を停止させることができるようになっている。
【0070】
呼び出されたメインルーチン612は、処理実行中に、サブルーチンコールをすることがあるが、直接サブルーチンコールをするのではなく、アプリケーション61のエントリに含まれるサブルーチンを機能番号(アプリケーション管理テーブル45Aの左端欄)に従ってコールする。
【0071】
ここでは、図13で示された該アプリケーションエントリの2番を指定し、サブルーチン1をコールしたとする。オペレーティングシステム4は、アプリケーション61からの要求に従い、サブルーチン1(613)をコールするときに、タイマ47をスタートさせる。このタイマ47は、タイマ46とは独立した別のタイマである。このタイマ47にも、タイマ46と同様に、設定時間を経過したときに呼び出されるタイマハンドラ48をセットしておく。
【0072】
オペレーティングシステム4から呼び出されたサブルーチン1(613)は、処理完了後、オペレーティングシステム4ヘ処理を戻し、オペレーティングシステム4は、処理が戻ってきたときに、呼び出し時にスタートさせたタイマ47をリセットする。
【0073】
もしここで、サブルーチン1(613)に異常があり、オペレーティングシステム4に対して処理を返さない場合には、タイマ47がタイムアップし、タイマハンドラ48が呼び出される。このタイマハンドラ48は、異常処理を実施するとともに、オペレーティングシステム4へ異常があったことを通知する。
【0074】
ここでは、サブルーチン1(613)に異常がなく、正常に処理がオペレーティングシステム4ヘ戻ってきた場合を説明する。サブルーチンから処理が戻ってきた後、オペレーティングシステム4は、サブルーチンの呼び出し元であるメインルーチン612に対して、処理をリターンする。
【0075】
処理を戻されたメインルーチン612は、その処理を完了したとして、最終的にオペレーティングシステム4に処理を返す。処理を戻されたオペレーティングシステム4は、メインルーチン612を呼び出した際に起動したタイマ46をリセットする。
【0076】
もし、メインルーチン612になんらかの異常があり、処理が一定時間を越えてもオペレーティングシステム4へ返らなかった場合には、タイマ46がタイムアップし、タイマハンドラ48が起動され、オペレーティングシステム4ヘタイマハンドラ48が通知を行う。
【0077】
アプリケーションの更新を行う際には、ネットワーク400からダウンロードされたアプリケーションプログラムをアプリケーション領域6に更新することで行うことは、前述のとおりであるが、アプリケーション管理部45Bは、更新処理を行ったタイミングで、図13に示すエントリのフラグを更新し、更新された領域のフラグを1に、反対側の領域のフラグを0にセットする。各ルーチンの処理が終わった段階で常にオペレーティングシステム4に対して処理が返り、ルーチンを呼び出す際には、最新のフラグの状態に従い、有効なメインルーチン、サブルーチンを呼び出す形式のため、常に任意のタイミングでアプリケーションの更新が可能になる。ただし、アプリケーションは構成するルーチンの構造を変更することはできないようになっている。
【0078】
従って、装置を停止させることなくアプリケーションを更新することが可能であるため、装置に搭載されたアプリケーションを更新し、装置の動作を変更する際などに、動作を停止させることなく更新を行うことができる。
【0079】
実施の形態6.
この発明の実施の形態6に係るソフトウェア更新システムのアプリケーション更新の異常処理について図面を参照しながら説明する。図15は、この発明の実施の形態6に係るソフトウェア更新システムの動作を示す図である。
【0080】
この実施の形態6は、上記の実施の形態5で更新されたアプリケーション6が正常に動作しなかった場合に自動的に復旧する方式であり、以下図15に基づいて、この実施の形態6の方式について説明する。
【0081】
オペレーティングシステム4がアプリケーション61のルーチンをコールする際には、上述したようにタイマ46、47をスタートさせる。これらのタイマ46、47には、その設定値を越えた時間が経過した場合に、呼び出されるタイマハンドラ48がセットされている。
【0082】
ここでもしアプリケーション61のサブルーチンに異常があり、オペレーティングシステム4から呼び出された後、一定時間を越えて処理が戻らなかった場合には、タイマハンドラ48が起動され、異常処理が行われる。
【0083】
このタイマハンドラ48は、各アプリケーションのエントリのうち、異常のあったルーチンのエントリのフラグの1を0へ、0を1ヘセットする。タイマハンドラ48は、フラグの更新が完了した後、異常があった旨をオペレーティングシステム4に通知する。オペレーティングシステム4では、再度同一のアプリケーション61のサブルーチン呼び出しを行う。このとき、タイマハンドラ48により、該アプリケーションの該ルーチンのフラグは書き換えられているため、再度呼び出されたときには、異常のあったアプリケーションのルーチンではなく、前回更新された領域のアプリケーションが呼び出され処理が再開される。
【0084】
オペレーティングシステム4は、呼び出したルーチンに異常があったことを認識した後、再度、該当エントリに基づき、同一のルーチンをコールするが、タイマハンドラ48により、ルーチンのフラグが入れ替えられているため、異常終了したルーチンではなく、前回更新のルーチンにより再度呼び出しが行われるため、アプリケーション更新時に問題のあるルーチンが更新された場合でも、正常に復帰できるようになっている。
【0085】
従って、更新後のアプリケーションに異常があり、正常に動作できなかった場合に、自動的に前回更新のバージョンのアプリケーションで処理を復旧するため、信頼のあるアプリケーションの更新が可能である。
【0086】
実施の形態7.
この発明の実施の形態7に係るソフトウェア更新システムについて図面を参照しながら説明する。図16は、この発明の実施の形態7に係るソフトウェア更新システムの構成を示す図である。
【0087】
図16において、ソフトウェア更新対象装置200の全構成管理部9は、ブートローダ構成管理部410と、デバイスドライバ構成管理部411と、アプリケーション構成管理部412と連携して動作する。
【0088】
例えば、アプリケーション構成管理部412は、装置にインストールされた各アプリケーションのバージョン管理を行い、またそれらのアプリケーションの構成を全構成管理部9に伝える。ブートローダ構成管理部410、デバイスドライバ構成管理部411についても同様な階層構造をとる。
【0089】
全構成管理部9は、ネットワーク400を通じてサーバ(ソフトウェア更新作業用端末)500に対してそれぞれのソフトウェアの最新バージョンに対して問い合わせを行う。サーバ500は、各ソフトウェアの最新バージョンがなんであるかを全体構成管理部9に対して返し、全体構成管理部9は、各バージョンを比較した後、装置にインストールされているバージョンが古ければ、上記の実施の形態1、3、及び5に示された方法により、能動的にブートローダ、デバイスドライバ、アプリケーションの各バージョンアップを行う。
【0090】
それぞれのバージョンの更新時になんらかの異常があった場合には、上記の実施の形態2、4、及び6の方法に従い、古いバージョンのソフトウェアによりただちに処理を復旧することが可能である。
【0091】
すなわち、ブートローダ、デバイスドライバ、アプリケーションのソフトウェアの最新のバージョンがサーバ500上に保存され、全構成管理部9がサーバ500に対して定期的に各ソフトウェアの内容をチェックし、装置にインストールされているソフトウェアが古いものであれば、サーバ500上のソフトウェアで自動的に更新することにより、常に装置のソフトウェア構成を最新の状態に保つものである。
【0092】
従って、ソフトウェア更新対象装置200は、自動的にサーバ500に対して最新のバージョンのソフトウェアを問い合わせ、装置のソフトウェア構成を最新に保つことが可能になる。同一の装置が複数ある場合には、それぞれの装置のソフトウェアを更新する作業を装置が自動的に行うため、装置のバージョンアップを行う作業が大幅に軽減される。
【0093】
【発明の効果】
この発明に係るソフトウェア更新システムは、以上説明したとおり、停止させることが許されないソフトウェア更新対象装置を停止させることなく、ソフトウェア更新対象装置のブートローダ等を更新することが可能になる。
【図面の簡単な説明】
【図1】この発明の実施の形態1に係るソフトウェア更新システムの対象となるシステムのハードウエア構成を示す図である。
【図2】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末とソフトウェア更新対象装置の動作を示す図である。
【図3】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新作業用端末からソフトウェア更新対象装置へ送られる送信データの構成を示す図である。
【図4】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置に搭載されるソフトウェア構成を示す図である。
【図5】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置に搭載されるソフトウェア構成を示す図である。
【図6】この発明の実施の形態1に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図7】この発明の実施の形態2に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図8】この発明の実施の形態3に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図9】この発明の実施の形態3及び4に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図10】この発明の実施の形態3に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図11】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図12】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図13】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図14】この発明の実施の形態5に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図15】この発明の実施の形態6に係るソフトウェア更新システムのソフトウェア更新対象装置の動作を示す図である。
【図16】この発明の実施の形態7に係るソフトウェア更新システムの構成を示す図である。
【符号の説明】
2 初期化コード(プログラム)、3 ブートローダ、4 オペレーティングシステム、5 デバイスドライバ、6 アプリケーション、7 ブートローダ更新プログラム、8 デバイスドライバ更新プログラム、9 全構成管理部、11インストーラ、12 ハードディスク装置、33 ブートローダ管理テーブル、34 ブートローダ監視タイマ、35 タイマハンドラ、41 ブートローダ管理部、42A デバイスドライバ管理テーブル、43 タイマ、44 タイマハンドラ、45A アプリケーション管理テーブル、45B アプリケーション管理部、46 タイマ、47 タイマ、48 タイマハンドラ、100 ソフトウェア更新作業用端末、200 ソフトウェア更新対象装置、300 制御対象機器、400 ネットワーク、410 ブートローダ構成管理部、411 デバイスドライバ構成管理部、412 アプリケーション構成管理部、500 サーバ。
Claims (7)
- 最新バージョンのブートローダを保存する更新作業用端末と、
制御対象機器を無停止で制御する更新対象装置とを備え、
前記更新対象装置は、
ブートローダの実行領域である第1及び第2のブートローダ領域と、
前記第1及び第2のブートローダ領域に対応した更新情報を持つブートローダ管理テーブルと、
前記更新作業用端末からダウンロードした最新バージョンのブートローダを、前記ブートローダ管理テーブルを参照し前記更新情報に基づいて前回更新していないブートローダ領域に更新するブートローダ管理部と
を有することを特徴とするソフトウェア更新システム。 - 前記更新対象装置は、
前記ブートローダ管理テーブルの更新情報に基づいて前記最新バージョンのブートローダが起動されると同時に起動され、前記最新バージョンのブートローダが正常に動作しない場合にはタイムアップとなるタイマと、
前記タイマのタイムアップにより起動されると、前記ブートローダ管理テーブルの更新情報を今回の更新前の状態に戻すタイマハンドラと
をさらに有することを特徴とする請求項1記載のソフトウェア更新システム。 - 最新バージョンのデバイスドライバを保存する更新作業用端末と、
制御対象機器を無停止で制御する更新対象装置とを備え、
前記更新対象装置は、
デバイスドライバの実行領域である第1及び第2のデバイスドライバ領域と、
前記第1及び第2のデバイスドライバ領域に対応した更新情報を持つデバイスドライバ管理テーブルと、
前記更新作業用端末からダウンロードした最新バージョンのデバイスドライバを、前記デバイスドライバ管理テーブルを参照し前記更新情報に基づいて前回更新していないデバイスドライバ領域に更新するデバイスドライバ管理部と
を有することを特徴とするソフトウェア更新システム。 - 前記更新対象装置は、
前記デバイスドライバ管理テーブルの更新情報に基づいて前記最新バージョンのデバイスドライバが起動されると同時に起動され、前記最新バージョンのデバイスドライバが正常に動作しない場合にはタイムアップとなるタイマと、
前記タイマのタイムアップにより起動されると、前記デバイスドライバ管理テーブルの更新情報を今回の更新前の状態に戻すタイマハンドラと
をさらに有することを特徴とする請求項3記載のソフトウェア更新システム。 - 最新バージョンのアプリケーションを保存する更新作業用端末と、
制御対象機器を無停止で制御する更新対象装置とを備え、
前記更新対象装置は、
アプリケーションの実行領域である第1及び第2のアプリケーション領域と、
前記第1及び第2のアプリケーション領域に対応した更新情報を持つアプリケーション管理テーブルと、
前記更新作業用端末からダウンロードした最新バージョンのアプリケーションを、前記アプリケーション管理テーブルを参照し前記更新情報に基づいて前回更新していないアプリケーション領域に更新するアプリケーション管理部と
を有することを特徴とするソフトウェア更新システム。 - 前記更新対象装置は、
前記アプリケーション管理テーブルの更新情報に基づいて前記最新バージョンのアプリケーションが起動されると同時に起動され、前記最新バージョンのアプリケーションが正常に動作しない場合にはタイムアップとなるタイマと、
前記タイマのタイムアップにより起動されると、前記アプリケーション管理テーブルの更新情報を今回の更新前の状態に戻すタイマハンドラと
をさらに有することを特徴とする請求項5記載のソフトウェア更新システム。 - 前記更新対象装置は、
前記更新作業用端末に対して最新バージョンに対して問い合わせを行い、インストールされているバージョンと比較し、前記インストールされているバージョンが古い場合には、能動的に前記最新バージョンを取得する全構成管理部
をさらに有することを特徴とする請求項1から請求項6までのいずれかに記載のソフトウェア更新システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002322865A JP2004157767A (ja) | 2002-11-06 | 2002-11-06 | ソフトウェア更新システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002322865A JP2004157767A (ja) | 2002-11-06 | 2002-11-06 | ソフトウェア更新システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004157767A true JP2004157767A (ja) | 2004-06-03 |
Family
ID=32802932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002322865A Pending JP2004157767A (ja) | 2002-11-06 | 2002-11-06 | ソフトウェア更新システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004157767A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007026416A (ja) * | 2005-07-12 | 2007-02-01 | Eigyotatsu Kofun Yugenkoshi | 更新システム及び方法 |
KR100860402B1 (ko) | 2005-12-08 | 2008-09-26 | 한국전자통신연구원 | 2단계 부트로더를 이용한 시스템 업그레이드 장치 및 방법 |
KR100876748B1 (ko) | 2004-07-23 | 2009-01-07 | 삼성전자주식회사 | 부트코드 업데이트 방법 |
JP2009163532A (ja) * | 2008-01-08 | 2009-07-23 | Funai Electric Co Ltd | 電子機器 |
JP2018160208A (ja) * | 2017-03-24 | 2018-10-11 | 日立オートモティブシステムズ株式会社 | 車載制御装置、及び、プログラム更新ソフトウェア |
-
2002
- 2002-11-06 JP JP2002322865A patent/JP2004157767A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100876748B1 (ko) | 2004-07-23 | 2009-01-07 | 삼성전자주식회사 | 부트코드 업데이트 방법 |
JP2007026416A (ja) * | 2005-07-12 | 2007-02-01 | Eigyotatsu Kofun Yugenkoshi | 更新システム及び方法 |
KR100860402B1 (ko) | 2005-12-08 | 2008-09-26 | 한국전자통신연구원 | 2단계 부트로더를 이용한 시스템 업그레이드 장치 및 방법 |
JP2009163532A (ja) * | 2008-01-08 | 2009-07-23 | Funai Electric Co Ltd | 電子機器 |
JP2018160208A (ja) * | 2017-03-24 | 2018-10-11 | 日立オートモティブシステムズ株式会社 | 車載制御装置、及び、プログラム更新ソフトウェア |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6928579B2 (en) | Crash recovery system | |
US6971095B2 (en) | Automatic firmware version upgrade system | |
US6681390B2 (en) | Upgrade of a program | |
US5689640A (en) | Method and system for downloading data to network nodes | |
JP4359609B2 (ja) | 計算機システム、システムソフトウェア更新方法及び第1サーバ装置 | |
JP2006268172A (ja) | サーバシステムおよびオンラインソフトウェア更新方法 | |
JP2002328813A (ja) | プログラム修正方法 | |
US20040024878A1 (en) | Network device and automatic program update technique | |
JP2007304845A (ja) | 仮想計算機システムおよびソフトウェア更新方法 | |
JP5056504B2 (ja) | 制御装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラム | |
JP2004157767A (ja) | ソフトウェア更新システム | |
JP5683088B2 (ja) | 復旧システム、復旧方法及びバックアップ制御システム | |
JP4882291B2 (ja) | モジュール更新プログラム | |
JP2003228490A (ja) | ネットワークに接続される端末装置およびこれを用いたネットワークシステム | |
CN113678101A (zh) | 信息处理装置、移动体以及信息处理方法 | |
WO2012177597A1 (en) | Networking elements as a patch distribution platform for distributed automation and control domains | |
JPH10105407A (ja) | プログラム障害自律復旧システム | |
JP2006202220A (ja) | 引継ぎ情報の整合性を確認する処理をコンピュータに実行させるプログラム及びその方法 | |
KR100402326B1 (ko) | 프로세서간 통신 프로토콜 변경 방법 | |
JP2003259000A (ja) | Ip−pbxにおけるip電話機サービス機能のバージョンアップ方式および方法 | |
CN106970794B (zh) | 服务器集群及其启动方法 | |
KR20170006747A (ko) | 네트워크 카메라 제어 장치 및 방법 | |
JP2004126979A (ja) | バージョン移行方法 | |
JP2005266939A (ja) | ソフトウェア自動入替え方法 | |
JP2005043960A (ja) | サーバ、オンラインパッチ処理方法及びプログラム |