(57)【要約】  プログラム更新後に、各プログラムが正常に更新されたかの確認処理に必要な時間を短縮できる情報処理装置等を提供する。このため、情報処理装置において、メインプログラムを記憶するメモリと、メモリに記憶されたメインプログラムを読み出して実行するプロセッサと、メモリに記憶されたメインプログラムを更新するプログラム更新部と、プログラム更新部によりメモリに記憶されたメインプログラムが更新された後のプロセッサのリセット時に、更新確認モードでプロセッサを起動させる起動制御部と、を備える。プロセッサは、更新確認モードで起動すると、メインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する監視プロセスを生成し、監視プロセスの生成が正常に行われた場合に監視プロセス起動完了信号を出力する。
2017103971.tif 000002
【特許請求の範囲】
【請求項１】
第１のメインプログラムを記憶する第１のメモリと、
前記第１のメモリに記憶された前記第１のメインプログラムを読み出して実行する第１のプロセッサと、
前記第１のメモリに記憶された前記第１のメインプログラムを更新する第１のプログラム更新部と、
前記第１のプログラム更新部により前記第１のメモリに記憶された前記第１のメインプログラムが更新された後の前記第１のプロセッサのリセット時に、更新確認モードで前記第１のプロセッサを起動させる第１の起動制御部と、を備え、
前記第１のプロセッサは、更新確認モードで起動すると、前記第１のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第１の監視プロセスを生成し、前記第１の監視プロセスの生成が正常に行われた場合に第１の監視プロセス起動完了信号を出力する情報処理装置。
【請求項２】
前記第１のメモリは、Ａ面及びＢ面の２つの記憶面を有し、Ａ面及びＢ面のそれぞれに前記第１のメインプログラムを記憶するとともに、前記第１のメモリのＡ面及びＢ面に記憶された前記第１のメインプログラムのうちのいずれを実行するかを指定する第１の起動指定フラグを記憶し、
前記第１のプロセッサは、前記第１のメモリのＡ面及びＢ面に記憶された前記第１のメインプログラムのうち、前記第１の起動指定フラグにより指定された方を読み出して実行し、
前記第１のプログラム更新部は、前記第１のメモリのＡ面及びＢ面に記憶された前記第１のメインプログラムのうち、前記第１の起動指定フラグにより指定されていない方を更新し、
前記第１の起動制御部は、前記第１のプログラム更新部により前記第１のメモリに記憶された前記第１のメインプログラムが更新された後の前記第１のプロセッサのリセット時に、前記第１の起動指定フラグを、前記第１のプログラム更新部により前記第１のメインプログラムが更新された方の記憶面を指定するものとする請求項１に記載の情報処理装置。
【請求項３】
第２のメインプログラムを記憶する第２のメモリと、
前記第２のメモリに記憶された前記第２のメインプログラムを読み出して実行する第２のプロセッサと、
前記第２のメモリに記憶された前記第２のメインプログラムを更新する第２のプログラム更新部と、
前記第２のプログラム更新部により前記第２のメモリに記憶された前記第２のメインプログラムが更新された後の前記第２のプロセッサのリセット時に、更新確認モードで前記第２のプロセッサを起動させる第２の起動制御部と、を備え、
前記第２のプロセッサは、更新確認モードで起動すると、前記第２のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第２の監視プロセスを生成し、前記第２の監視プロセスの生成が正常に行われた場合に第２の監視プロセス起動完了信号を前記第１のプロセッサへと出力し、
前記第１のプロセッサは、更新確認モードで前記第１の監視プロセスの生成が正常に行われた場合に、前記第１の監視プロセス起動完了信号を前記第２のプロセッサへと出力する請求項１又は請求項２に記載の情報処理装置。
【請求項４】
請求項３に記載の情報処理装置と、
エレベータの乗りかご内に設けられ、当該乗りかご内を撮影してアナログ画像信号を前記情報処理装置へと出力するカメラと、
前記乗りかご内に設けられ、前記情報処理装置からのデジタル画像信号の入力を受けて画像を表示するモニタと、を備え、
前記第１のプロセッサは、前記情報処理装置から前記モニタに出力するデジタル画像信号を処理し、
前記第２のプロセッサは、前記カメラから前記情報処理装置に入力されたアナログ画像信号を処理するエレベータ装置。
【請求項５】
メインプログラムを記憶するメモリと、
前記メモリに記憶された前記メインプログラムを読み出して実行するプロセッサと、を備えた情報処理装置の前記メモリに記憶された前記メインプログラムを更新するプログラム更新方法であって、
前記メモリに記憶された前記メインプログラムを更新する第１の工程と、
前記第１の工程により前記メモリに記憶された前記メインプログラムが更新された後の前記プロセッサのリセット時に、更新確認モードで前記プロセッサを起動させる第２の工程と、
更新確認モードで起動した前記プロセッサが、前記メインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する監視プロセスを生成し、前記監視プロセスの生成が正常に行われた場合に監視プロセス起動完了信号を出力する第３の工程と、を備えたプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置、エレベータ装置及びプログラム更新方法に関するものである。
【背景技術】
【０００２】
従来、第１のコンピュータ、第２のコンピュータ、第１のコンピュータが実行する第１の情報処理用プログラムを記憶する不揮発性の第１の記憶手段、及び、第２のコンピュータが実行する第２の情報処理用プログラムを記憶する不揮発性の第２の記憶手段を備える情報処理装置において、第１の情報処理用プログラムを更新するためのデータを含む第１の更新データ、及び、第２の情報処理用プログラムを更新するためのデータを含む第２の更新データを取得し、第１の記憶手段に記憶させる取得手段と、第１の更新データに基づいて、第１の記憶手段に記憶されている第１の情報処理用プログラムを更新する第１の更新手段と、第２の更新データを第２のコンピュータに送信する送信手段と、送信手段により送信されてくる第２の更新データに基づいて、第２の記憶手段に記憶されている第２の情報処理用プログラムを更新する第２更新手段とを備えたものが知られている（例えば、特許文献１参照）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】日本特開２００６−０３１５２６号公報
【特許文献２】日本特開２０１５−００５０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように、特許文献１に示された従来における情報処理装置は、複数のコンピュータすなわち複数のプロセッサのそれぞれが実行するプログラムのそれぞれを一度に更新することができる。しかしながら、プログラムの更新が正常に行われたかを確認する際に、複数のプログラムのそれぞれの全体について確認処理を実施すため、確認処理に時間がかかり更新後に速やかに装置を再稼動させることができない。【０００５】
この発明は、このような課題を解決するためになされたもので、プロセッサが実行するプログラムを更新した後に、プログラムが正常に更新されたかの確認処理に必要な時間を短縮し、プログラム更新後の速やかな装置の再稼動を図ることができる情報処理装置、エレベータ装置及びプログラム更新方法を得るものである。
【課題を解決するための手段】
【０００６】
この発明に係る情報処理装置においては、第１のメインプログラムを記憶する第１のメモリと、前記第１のメモリに記憶された前記第１のメインプログラムを読み出して実行する第１のプロセッサと、前記第１のメモリに記憶された前記第１のメインプログラムを更新する第１のプログラム更新部と、前記第１のプログラム更新部により前記第１のメモリに記憶された前記第１のメインプログラムが更新された後の前記第１のプロセッサのリセット時に、更新確認モードで前記第１のプロセッサを起動させる第１の起動制御部と、を備え、前記第１のプロセッサは、更新確認モードで起動すると、前記第１のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第１の監視プロセスを生成し、前記第１の監視プロセスの生成が正常に行われた場合に第１の監視プロセス起動完了信号を出力する構成とする。【０００７】
この発明に係るエレベータ装置は、前述の情報処理装置において、さらに、第２のメインプログラムを記憶する第２のメモリと、前記第２のメモリに記憶された前記第２のメインプログラムを読み出して実行する第２のプロセッサと、前記第２のメモリに記憶された前記第２のメインプログラムを更新する第２のプログラム更新部と、前記第２のプログラム更新部により前記第２のメモリに記憶された前記第２のメインプログラムが更新された後の前記第２のプロセッサのリセット時に、更新確認モードで前記第２のプロセッサを起動させる第２の起動制御部と、を備え、前記第２のプロセッサは、更新確認モードで起動すると、前記第２のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第２の監視プロセスを生成し、前記第２の監視プロセスの生成が正常に行われた場合に第２の監視プロセス起動完了信号を前記第１のプロセッサへと出力し、前記第１のプロセッサは、更新確認モードで前記第１の監視プロセスの生成が正常に行われた場合に、前記第１の監視プロセス起動完了信号を前記第２のプロセッサへと出力する構成である情報処理装置を備えている。そして、さらに、エレベータの乗りかご内に設けられ、当該乗りかご内を撮影してアナログ画像信号を前記情報処理装置へと出力するカメラと、前記乗りかご内に設けられ、前記情報処理装置からのデジタル画像信号の入力を受けて画像を表示するモニタと、を備え、前記第１のプロセッサは、前記情報処理装置から前記モニタに出力するデジタル画像信号を処理し、前記第２のプロセッサは、前記カメラから前記情報処理装置に入力されたアナログ画像信号を処理する構成とする。【０００８】
この発明に係るプログラム更新方法においては、メインプログラムを記憶するメモリと、前記メモリに記憶された前記メインプログラムを読み出して実行するプロセッサと、を備えた情報処理装置の前記メモリに記憶された前記メインプログラムを更新するプログラム更新方法であって、前記メモリに記憶された前記メインプログラムを更新する第１の工程と、前記第１の工程により前記メモリに記憶された前記メインプログラムが更新された後の前記プロセッサのリセット時に、更新確認モードで前記プロセッサを起動させる第２の工程と、更新確認モードで起動した前記プロセッサが、前記メインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する監視プロセスを生成し、前記監視プロセスの生成が正常に行われた場合に監視プロセス起動完了信号を出力する第３の工程と、を備えたものとする。
【発明の効果】
【０００９】
この発明に係る情報処理装置、エレベータ装置及びプログラム更新方法においては、プロセッサが実行するプログラムを更新した後に、プログラムが正常に更新されたかの確認処理に必要な時間を短縮し、プログラム更新後の速やかな装置の再稼動を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１に係る情報処理装置を備えたエレベータ装置の構成を示す図である。
【図２】この発明の実施の形態１に係る情報処理装置の構成を示すブロック図である。
【図３】この発明の実施の形態１に係る情報処理装置の起動処理を示すフロー図である。
【図４】この発明の実施の形態１に係る情報処理装置の起動処理を示すフロー図である。
【図５】この発明の実施の形態１に係る情報処理装置が備える第１の不揮発性メモリに記憶される起動確認フラグについて説明する図である。
【図６】この発明の実施の形態１に係る情報処理装置が備える第２の不揮発性メモリに記憶される起動確認フラグについて説明する図である。
【図７】この発明の実施の形態１に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図８】この発明の実施の形態１に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図９】この発明の実施の形態１に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図１０】この発明の実施の形態１に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図１１】この発明の実施の形態１に係る情報処理装置のメインプログラム異常動作時の処理を示すフロー図である。
【図１２】この発明の実施の形態２に係る情報処理装置の構成を示すブロック図である。
【図１３】この発明の実施の形態２に係る情報処理装置の起動処理を示すフロー図である。
【図１４】この発明の実施の形態２に係る情報処理装置の起動処理を示すフロー図である。
【図１５】この発明の実施の形態２に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図１６】この発明の実施の形態２に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図１７】この発明の実施の形態２に係る情報処理装置のプログラム更新処理を示すフロー図である。
【図１８】この発明の実施の形態２に係る情報処理装置のプログラム更新処理を示すフロー図である。
【発明を実施するための形態】
【００１１】
この発明を実施するための形態について添付の図面を参照しながら説明する。各図において、同一又は相当する部分には同一の符号を付して、重複する説明は適宜に簡略化又は省略する。なお、本発明は以下の実施の形態に限定されることなく、本発明の趣旨を逸脱しない範囲で種々変形することが可能である。また、以下において各部の名称等で先頭に「第１の」又は「第２の」を含むものは、便宜上、各図中では末尾に「１」又は「２」の数字を付して表す。
【００１２】
実施の形態１．
図１から図１１は、この発明の実施の形態１に係るもので、図１は情報処理装置を備えたエレベータ装置の構成を示す図、図２は情報処理装置の構成を示すブロック図、図３及び図４は情報処理装置の起動処理を示すフロー図、図５は情報処理装置が備える第１の不揮発性メモリに記憶される起動確認フラグについて説明する図、図６は情報処理装置が備える第２の不揮発性メモリに記憶される起動確認フラグについて説明する図、図７から図１０は情報処理装置のプログラム更新処理を示すフロー図、図１１は情報処理装置のメインプログラム異常動作時の処理を示すフロー図である。
【００１３】
この実施の形態１においては、この発明に係る情報処理装置１０を、エレベータ装置に適用した例について説明する。なお、この発明に係る情報処理装置１０は、ここで説明するようなエレベータ装置に限られず、プロセッサにより実行するメインプログラムを更新する必要があるような情報処理装置に広く適用可能である。
【００１４】
図１に示すように、この実施の形態１においては、情報処理装置１０が適用されたエレベータ装置は、エレベータの乗りかご５００を備えている。乗りかご５００は、エレベータの昇降路（図示せず）の内部に昇降自在に設置されている。昇降路は、例えば、エレベータ装置が設置される建物の内部に設けられる。
【００１５】
乗りかご５００は例えば直方体状の箱型を呈する。乗りかご５００の例えば正面には、図示しないかご出入口が形成されている。かご出入口は、エレベータの利用者が乗りかご５００に出入りするための開口である。乗りかご５００には、かご出入口を開閉するためのかごドア５０１が設けられている。
【００１６】
乗りかご５００の内部には、かご内カメラ１１４が設置されている。かご内カメラ１１４は、乗りかご５００の内部の様子を画像として撮影する。かご内カメラ１１４は、撮影した画像をアナログ画像信号で出力する。かご内カメラ１１４から出力されたアナログ画像信号は、情報処理装置１０へと入力される。
【００１７】
なお、かご内カメラ１１４により撮影される画像は、静止画であっても動画であってもよい。ここでは、具体的に例えば、かご内カメラ１１４から出力されるアナログ画像信号は、ＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ）方式の信号であるとする。
【００１８】
乗りかご５００の内部には、モニタ１０６が設置されている。モニタ１０６は、乗りかご５００の内部にいる利用者に対して各種の情報を表示するためのものである。
【００１９】
情報処理装置１０は、監視盤３０（ＭＯＰ：ＭＯｎｉｔｏｒ  Ｐａｎｅｌ）と通信可能に接続されている。監視盤３０は、エレベータの図示しない制御装置と接続されている。監視盤３０は、エレベータの制御装置から当該エレベータに関する各種の情報を取得することができる。この当該エレベータに関する情報とは、具体的に例えば、エレベータの乗りかご５００の走行状態、走行方向及び現在位置等に関する情報である。
【００２０】
監視盤３０により取得された当該エレベータに関する情報は、情報処理装置１０へと送られる。情報処理装置１０は、当該エレベータに関する情報に基づいて、モニタ１０６に表示する画像データを生成する。そして、情報処理装置１０は、生成した画像データをデジタル画像信号でモニタ１０６へと出力する。モニタ１０６は、情報処理装置１０からのデジタル画像信号の入力を受けて画像を表示する。
【００２１】
なお、モニタ１０６により表示される画像は、静止画であっても動画であってもよい。ここでは、具体的に例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）形式で圧縮された圧縮映像データを伸張したものをモニタ１０６に表示するものとする。
【００２２】
次に、図２も参照しながら、情報処理装置１０の構成について、さらに説明する。情報処理装置１０は、第１のプロセッサ１０１及び第２のプロセッサ１１１を備えている。第１のプロセッサ１０１及び第２のプロセッサ１１１は、与えられた命令（命令の集合であるプログラムを含む）を実行して情報の演算又は加工を行う中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００２３】
第１のプロセッサ１０１は、情報処理装置１０からモニタ１０６に出力するデジタル画像信号を処理する。具体的にここでは、第１のプロセッサ１０１は、モニタ１０６に表示するＭＰＥＧ形式で圧縮された画像データを伸張し、伸張したデータをデジタル画像信号でモニタ１０６へと出力する。
【００２４】
第２のプロセッサ１１１は、かご内カメラ１１４から情報処理装置１０に入力されたアナログ画像信号を処理する。具体的にここでは、第２のプロセッサ１１１は、まず、かご内カメラ１１４から入力されたＮＴＳＣ方式のアナログ画像信号をデジタル信号に変換する。そして、デジタル信号に変換したデータに対してＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）形式での圧縮処理を行う。
【００２５】
第１のプロセッサ１０１と第２のプロセッサ１１１とは、シリアル通信線１２１により双方向に通信可能に接続されている。第１のプロセッサ１０１と第２のプロセッサ１１１とは、このシリアル通信線１２１を認介して、例えば各種のコマンド、各種の信号、プログラム及びＪＰＥＧ形式で圧縮したデータ等の送受信を行う。
【００２６】
情報処理装置１０は、第１の不揮発性メモリ１０２及び第２の不揮発性メモリ１１２を備えている。第１の不揮発性メモリ１０２及び第２の不揮発性メモリ１１２は、データ又はプログラムを不揮発的に格納する読み出し専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）である。なお、第１の不揮発性メモリ１０２及び第２の不揮発性メモリ１１２は、予め定められた特別なコマンドによりデータを書き換えることができるＲＯＭ（いわゆるＦｌａｓｈ  ＲＯＭ）である。
【００２７】
また、情報処理装置１０は、第１の揮発性メモリ１０３及び第２の揮発性メモリ１１３を備えている。第１の揮発性メモリ１０３及び第２の揮発性メモリ１１３は、データ又はプログラムを揮発的すなわち一時的に格納するための読み書き可能なランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）である。
【００２８】
第１の不揮発性メモリ１０２及び第１の揮発性メモリ１０３は、第１のプロセッサ１０１から直接にアクセス可能な主記憶装置である。また、第２の不揮発性メモリ１１２及び第２の揮発性メモリ１１３は、第２のプロセッサ１１１から直接にアクセス可能な主記憶装置である。
【００２９】
第１の不揮発性メモリ１０２は、第１のメインプログラムを記憶している。第１のプロセッサ１０１は、第１の不揮発性メモリ１０２に記憶された第１のメインプログラムを読み出して実行する。この際、第１のプロセッサ１０１は、まず、第１の不揮発性メモリ１０２から読み出したプログラムを、第１の揮発性メモリ１０３に実行可能な形式に展開して格納する。そして、第１のプロセッサ１０１は、この第１の揮発性メモリ１０３に格納されたプログラムを読み出しながら実行する。第１のプロセッサ１０１が第１のメインプログラムを実行することで、前述した第１のプロセッサ１０１によるデジタル画像信号処理が実現される。
【００３０】
第２の不揮発性メモリ１１２は、第２のメインプログラムを記憶している。第２のプロセッサ１１１は、第２の不揮発性メモリ１１２に記憶された第２のメインプログラムを読み出して実行する。この際、第２のプロセッサ１１１は、まず、第２の不揮発性メモリ１１２から読み出したプログラムを、第２の揮発性メモリ１１３に実行可能な形式に展開して格納する。そして、第２のプロセッサ１１１は、この第２の揮発性メモリ１１３に格納されたプログラムを読み出しながら実行する。第２のプロセッサ１１１が第２のメインプログラムを実行することで、前述した第２のプロセッサ１１１によるアナログ画像信号処理が実現される。
【００３１】
ここで、第１の不揮発性メモリ１０２及び第２の不揮発性メモリ１１２は、それぞれが複数の記憶面を有している。ここでは、第１の不揮発性メモリ１０２及び第２の不揮発性メモリ１１２は、それぞれがＡ面及びＢ面の２つの記憶面を有している。Ａ面及びＢ面の２つの記憶面に対しては、互いに独立して書き込み及び読み出しを行うことができる。
【００３２】
第１の不揮発性メモリ１０２のＡ面及びＢ面のそれぞれには、第１のメインプログラムが記憶されている。第１の不揮発性メモリ１０２のＡ面に記憶されている第１のメインプログラムを第１のメインプログラムＡと呼ぶ。第１の不揮発性メモリ１０２のＢ面に記憶されている第１のメインプログラムを第１のメインプログラムＢと呼ぶ。
【００３３】
第１の不揮発性メモリ１０２は、第１の不揮発性メモリ１０２のＡ面及びＢ面に記憶された第１のメインプログラムのうちのいずれを実行するかを指定する第１の起動指定フラグも記憶している。この際、第１の起動指定フラグを、第１の不揮発性メモリ１０２のＡ面及びＢ面の両方に全く同じ内容で記憶しておくようにしてもよい。又は、第１の起動指定フラグを、第１の不揮発性メモリ１０２のＡ面及びＢ面のうちの予め定めた一方に記憶しておくようにしてもよい。
【００３４】
同様に、第２の不揮発性メモリ１１２のＡ面及びＢ面のそれぞれには、第２のメインプログラムが記憶されている。第２の不揮発性メモリ１１２のＡ面に記憶されている第２のメインプログラムを第２のメインプログラムＡと呼ぶ。第２の不揮発性メモリ１１２のＢ面に記憶されている第２のメインプログラムを第２のメインプログラムＢと呼ぶ。
【００３５】
第２の不揮発性メモリ１１２は、第２の不揮発性メモリ１１２のＡ面及びＢ面に記憶された第２のメインプログラムのうちのいずれを実行するかを指定する第２の起動指定フラグも記憶している。この際、第２の起動指定フラグを、第２の不揮発性メモリ１１２のＡ面及びＢ面の両方に全く同じ内容で記憶しておくようにしてもよい。又は、第２の起動指定フラグを、第２の不揮発性メモリ１１２のＡ面及びＢ面のうちの予め定めた一方に記憶しておくようにしてもよい。
【００３６】
情報処理装置１０は、第１の起動制御部１３５を備えている。第１の起動制御部１３５は、第１のプロセッサ１０１の起動時の動作を制御する。第１のプロセッサ１０１の起動時とは、具体的に例えば、情報処理装置１０の電源投入時、又は、第１のプロセッサ１０１のリセット時等である。第１の起動制御部１３５は、第１のプロセッサ１０１の起動時に、第１のプロセッサ１０１の動作モードを設定する。動作モードについては後述する。
【００３７】
また、第１の起動制御部１３５は、第１のプロセッサ１０１の起動時に、第１の不揮発性メモリ１０２に記憶されている第１の起動指定フラグを参照する。そして、第１の起動制御部１３５は、第１の不揮発性メモリ１０２のＡ面及びＢ面に記憶された第１のメインプログラムＡ及び第１のメインプログラムＢのうち、第１の起動指定フラグにより指定された方を第１のプロセッサ１０１が読み出して実行するように制御する。したがって、第１のプロセッサ１０１は、第１の不揮発性メモリ１０２のＡ面及びＢ面に記憶された第１のメインプログラムのうち、第１の起動指定フラグにより指定された方を読み出して実行する。
【００３８】
ここでは、第１の起動制御部１３５は、第１のプロセッサ１０１に内蔵されているとする。なお、第１の起動制御部１３５を専用の回路で実現してもよいし、第１の不揮発性メモリ１０２に記憶されているプログラムを第１のプロセッサ１０１で実行することで、第１の起動制御部１３５の機能を実現するようにしてもよい。
【００３９】
または、第１の起動制御部１３５を、第１のプロセッサ１０１の外部に設けるようにしてもよい。第１の起動制御部１３５を第１のプロセッサ１０１の外部に設ける場合、第１の起動制御部１３５を第２のプロセッサ１１１に内蔵するようにしてもよい。そして、第１の起動制御部１３５を第２のプロセッサ１１１に内蔵する場合は、第２の不揮発性メモリ１１２に記憶されているプログラムを第２のプロセッサ１１１で実行することで、第１の起動制御部１３５の機能を実現するようにしてもよい。
【００４０】
情報処理装置１０は、第２の起動制御部１４５を備えている。第２の起動制御部１４５は、第２のプロセッサ１１１の起動時の動作を制御する。第２のプロセッサ１１１の起動時とは、具体的に例えば、情報処理装置１０の電源投入時、又は、第２のプロセッサ１１１のリセット時等である。第２の起動制御部１４５は、第２のプロセッサ１１１の起動時に、第２のプロセッサ１１１の動作モードを設定する。
【００４１】
また、第２の起動制御部１４５は、第２のプロセッサ１１１の起動時に、第２の不揮発性メモリ１１２に記憶されている第２の起動指定フラグを参照する。そして、第２の起動制御部１４５は、第２の不揮発性メモリ１１２のＡ面及びＢ面に記憶された第２のメインプログラムＡ及び第２のメインプログラムＢのうち、第２の起動指定フラグにより指定された方を第２のプロセッサ１１１が読み出して実行するように制御する。したがって、第２のプロセッサ１１１は、第２の不揮発性メモリ１１２のＡ面及びＢ面に記憶された第２のメインプログラムのうち、第２の起動指定フラグにより指定された方を読み出して実行する。
【００４２】
ここでは、第２の起動制御部１４５は、第２のプロセッサ１１１に内蔵されているとする。なお、第２の起動制御部１４５を専用の回路で実現してもよいし、第２の不揮発性メモリ１１２に記憶されているプログラムを第２のプロセッサ１１１で実行することで、第２の起動制御部１４５の機能を実現するようにしてもよい。
【００４３】
または、第２の起動制御部１４５を、第２のプロセッサ１１１の外部に設けるようにしてもよい。第２の起動制御部１４５を第２のプロセッサ１１１の外部に設ける場合、第２の起動制御部１４５を第１のプロセッサ１０１に内蔵するようにしてもよい。そして、第２の起動制御部１４５を第１のプロセッサ１０１に内蔵する場合は、第１の不揮発性メモリ１０２に記憶されているプログラムを第１のプロセッサ１０１で実行することで、第２の起動制御部１４５の機能を実現するようにしてもよい。
【００４４】
情報処理装置１０は、第１のプログラム更新部１３１を備えている。ここでは、第１のプログラム更新部１３１は、第１のプロセッサ１０１に内蔵されているとする。なお、第１のプログラム更新部１３１を専用の回路で実現してもよいし、第１の不揮発性メモリ１０２に記憶されているプログラムを第１のプロセッサ１０１で実行することで、第１のプログラム更新部１３１の機能を実現するようにしてもよい。
【００４５】
または、第１のプログラム更新部１３１を、第１のプロセッサ１０１の外部に設けるようにしてもよい。第１のプログラム更新部１３１を第１のプロセッサ１０１の外部に設ける場合、第１のプログラム更新部１３１を第２のプロセッサ１１１に内蔵するようにしてもよい。そして、第１のプログラム更新部１３１を第２のプロセッサ１１１に内蔵する場合は、第２の不揮発性メモリ１１２に記憶されているプログラムを第２のプロセッサ１１１で実行することで、第１のプログラム更新部１３１の機能を実現するようにしてもよい。
【００４６】
第１のプログラム更新部１３１は、第１の不揮発性メモリ１０２に記憶された第１のメインプログラムの更新を行う。第１のメインプログラムを更新するための第１の更新用メインプログラムは、ここでは、情報処理装置１０の外部から取得する。
【００４７】
情報処理装置１０は、通信ネットワーク１２を介して、サーバー１５及びＰＣ１６（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）と通信可能に接続されている。情報処理装置１０は、ネットワークコントローラ１０４を備えている。ネットワークコントローラ１０４は、情報処理装置１０が通信ネットワーク１２を介して外部と通信するために必要な処理を行う。
【００４８】
そして、例えば、サーバー１５又はＰＣ１６に予め第１の更新用メインプログラムを保存しておく。第１のプロセッサ１０１は、通信ネットワーク１２をインターフェースとして、サーバー１５又はＰＣ１６に保存されている第１の更新用メインプログラムを取得して、第１の揮発性メモリ１０３に記憶する。
【００４９】
また、別の例としては、ＵＳＢメモリ１０９を利用して第１の更新用メインプログラムを取得するようにしてもよい。ＵＳＢとは、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓのことである。この場合には、情報処理装置１０は、ＵＳＢコントローラ１０８を備えている。ＵＳＢコントローラ１０８は、情報処理装置１０がＵＳＢを介して外部と通信するために必要な処理を行う。
【００５０】
この例の場合では、ＵＳＢメモリ１０９に予め第１の更新用メインプログラムを保存しておく。次に、ＵＳＢメモリ１０９を図１に示すＵＳＢコネクタ１１０に接続する。そして、第１のプロセッサ１０１は、ＵＳＢをインターフェースとして、ＵＳＢメモリ１０９に保存されている第１の更新用メインプログラムを取得して、第１の揮発性メモリ１０３に記憶する。
【００５１】
第１のプログラム更新部１３１は、第１の揮発性メモリ１０３に一旦記憶した第１の更新用メインプログラムで、第１の不揮発性メモリ１０２に記憶された第１のメインプログラムを上書きすることで、第１の不揮発性メモリ１０２に記憶された第１のメインプログラムを更新する。このメインプログラムの更新時に、第１のプログラム更新部１３１は、第１の不揮発性メモリ１０２に記憶されている第１の起動指定フラグを参照する。そして、第１のプログラム更新部１３１は、第１の不揮発性メモリ１０２のＡ面及びＢ面に記憶された第１のメインプログラムＡ及び第１のメインプログラムＢのうち、第１の起動指定フラグにより指定されていない方を更新する。
【００５２】
第１のプログラム更新部１３１は、第１の不揮発性メモリ１０２に記憶された第１のメインプログラムを上書き更新した後、第１のプロセッサ１０１をリセットする。
【００５３】
情報処理装置１０は、第２のプログラム更新部１４１を備えている。ここでは、第２のプログラム更新部１４１は、第２のプロセッサ１１１に内蔵されているとする。なお、第２のプログラム更新部１４１を専用の回路で実現してもよいし、第２の不揮発性メモリ１１２に記憶されているプログラムを第２のプロセッサ１１１で実行することで、第２のプログラム更新部１４１の機能を実現するようにしてもよい。
【００５４】
または、第２のプログラム更新部１４１を、第２のプロセッサ１１１の外部に設けるようにしてもよい。第２のプログラム更新部１４１を第２のプロセッサ１１１の外部に設ける場合、第２のプログラム更新部１４１を第１のプロセッサ１０１に内蔵するようにしてもよい。そして、第２のプログラム更新部１４１を第１のプロセッサ１０１に内蔵する場合は、第１の不揮発性メモリ１０２に記憶されているプログラムを第２のプロセッサ１１１で実行することで、第２のプログラム更新部１４１の機能を実現するようにしてもよい。
【００５５】
第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２に記憶された第２のメインプログラムの更新を行う。第２のメインプログラムを更新するための第２の更新用メインプログラムは、ここでは、情報処理装置１０の外部から取得する。
【００５６】
この情報処理装置１０の外部から第２の更新用メインプログラムを取得する方法は、第１の更新用メインプログラムと同様に通信ネットワーク１２又はＵＳＢ等を介して外部の記憶媒体（サーバー１５、ＰＣ１６又はＵＳＢメモリ１０９）からの複製による。ただし、ここでは例えば、第２のプロセッサ１１１が直接的に通信ネットワーク１２又はＵＳＢを通じて外部と通信するのではなく、第１のプロセッサ１０１を介して複製を行う。
【００５７】
すなわち、例えば、サーバー１５、ＰＣ１６又はＵＳＢメモリ１０９に予め第２の更新用メインプログラムを保存しておく。そして、まず、第１のプロセッサ１０１が、通信ネットワーク１２をインターフェースとして、サーバー１５又はＰＣ１６に保存されている第２の更新用メインプログラムを取得して、第１の揮発性メモリ１０３に記憶する。もしくは、第１のプロセッサ１０１が、ＵＳＢをインターフェースとして、ＵＳＢメモリ１０９に保存されている第２の更新用メインプログラムを取得して、第１の揮発性メモリ１０３に記憶する。
【００５８】
次に、第１のプロセッサ１０１は、第１の揮発性メモリ１０３に一旦記憶した第２の更新用メインプログラムを、シリアル通信線１２１を介して第２のプロセッサ１１１へと送信する。第２のプロセッサ１１１は、シリアル通信線１２１を介して受信した第２の更新用メインプログラムを、第２の揮発性メモリ１１３に記憶する。
【００５９】
第２のプログラム更新部１４１は、第２の揮発性メモリ１１３に一旦記憶した第２の更新用メインプログラムで、第２の不揮発性メモリ１１２に記憶された第２のメインプログラムを上書きすることで、第２の不揮発性メモリ１１２に記憶された第２のメインプログラムを更新する。このメインプログラムの更新時に、第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２に記憶されている第２の起動指定フラグを参照する。そして、第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２のＡ面及びＢ面に記憶された第２のメインプログラムＡ及び第２のメインプログラムＢのうち、第２の起動指定フラグにより指定されていない方を更新する。
【００６０】
第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２に記憶された第２のメインプログラムを上書き更新した後、第２のプロセッサ１１１をリセットする。
【００６１】
以上のようにしてメインプログラムを更新し、プロセッサをリセットした後の動作について、さらに説明する。
【００６２】
第１の起動制御部１３５は、第１のプログラム更新部１３１により第１の不揮発性メモリ１０２に記憶された第１のメインプログラムが更新された後の第１のプロセッサ１０１のリセット時に、第１のプロセッサの動作モードを更新確認モードにして第１のプロセッサを起動させる。この際、第１の起動制御部１３５は、第１の不揮発性メモリ１０２に記憶されている第１の起動指定フラグを、Ａ面及びＢ面のうち、第１のプログラム更新部１３１により第１のメインプログラムが更新された方の記憶面を指定するものにセットする。
【００６３】
第１のプロセッサ１０１は、更新確認モードで起動すると、第１のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第１の監視プロセスを生成する。そして、第１のプロセッサ１０１は、第１の監視プロセスの生成が正常に行われた場合に第１の監視プロセス起動完了信号を第２のプロセッサ１１１へと出力する。
【００６４】
その後、第１のプロセッサ１０１は、第１の不揮発性メモリ１０２に記憶されている第１の起動指定フラグが指定する記憶面、すなわち、第１のメインプログラムが更新された方の記憶面に記憶されている第１のメインプログラムを読み出して実行する。
【００６５】
第１のメインプログラムの実行により生成されるプロセスが正常に動作しなかった場合には、第１の監視プロセスがこの異常を検知する。プロセス異常を検知した第１の監視プロセスは、プロセス異常が発生した旨を予め定められた方法により発報する。具体的に例えば、第１のプロセッサ１０１からプロセス異常が発生した旨の信号を、第２のプロセッサ１１１に送信したり情報処理装置１０の外部に送信したりする。
【００６６】
また、情報処理装置１０は第１のタイマー１３４及び第２のタイマー１４４を備えている。第２のプロセッサ１１１は、第１のメインプログラムの更新の後に第１のプロセッサ１０１をリセットしてからの経過時間を第２のタイマー１４４により計測している。そして、第２のプロセッサ１１１は、第１のプロセッサ１０１のリセット後に予め設定された一定時間が経過しても第１の監視プロセス起動完了信号を受信しなかった場合には、第１のメインプログラムの更新に失敗したことを検出するようになっている。
【００６７】
同様に、第２の起動制御部１４５は、第２のプログラム更新部１４１により第２の不揮発性メモリ１１２に記憶された第２のメインプログラムが更新された後の第２のプロセッサ１１１のリセット時に、第２のプロセッサの動作モードを更新確認モードにして第２のプロセッサを起動させる。この際、第２の起動制御部１４５は、第２の不揮発性メモリ１１２に記憶されている第２の起動指定フラグを、Ａ面及びＢ面のうち、第２のプログラム更新部１４１により第２のメインプログラムが更新された方の記憶面を指定するものにセットする。
【００６８】
第２のプロセッサ１１１は、更新確認モードで起動すると、第２のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第２の監視プロセスを生成する。そして、第２のプロセッサ１１１は、第２の監視プロセスの生成が正常に行われた場合に第２の監視プロセス起動完了信号を第２のプロセッサ１１１へと出力する。
【００６９】
その後、第２のプロセッサ１１１は、第２の不揮発性メモリ１１２に記憶されている第２の起動指定フラグが指定する記憶面、すなわち、第２のメインプログラムが更新された方の記憶面に記憶されている第２のメインプログラムを読み出して実行する。
【００７０】
第２のメインプログラムの実行により生成されるプロセスが正常に動作しなかった場合には、第２の監視プロセスがこの異常を検知する。プロセス異常を検知した第２の監視プロセスは、プロセス異常が発生した旨を予め定められた方法により発報する。具体的に例えば、第２のプロセッサ１１１からプロセス異常が発生した旨の信号を、第２のプロセッサ１１１に送信したり情報処理装置１０の外部に送信したりする。
【００７１】
また、第１のプロセッサ１０１は、第２のメインプログラムの更新の後に第２のプロセッサ１１１をリセットしてからの経過時間を第１のタイマー１３４により計測している。そして、第１のプロセッサ１０１は、第２のプロセッサ１１１のリセット後に予め設定された一定時間が経過しても第２の監視プロセス起動完了信号を受信しなかった場合には、第２のメインプログラムの更新に失敗したことを検出するようになっている。
【００７２】
以上のように構成された情報処理装置１０は、第１のメインプログラムを記憶する第１のメモリである第１の不揮発性メモリ１０２と、第１のメモリに記憶された第１のメインプログラムを読み出して実行する第１のプロセッサ１０１と、第１のメモリに記憶された第１のメインプログラムを更新する第１のプログラム更新部１３１と、第１のプログラム更新部１３１により第１のメモリに記憶された第１のメインプログラムが更新された後の第１のプロセッサ１０１のリセット時に、更新確認モードで第１のプロセッサ１０１を起動させる第１の起動制御部１３５と、を備えている。そして、第１のプロセッサ１０１は、更新確認モードで起動すると、第１のメインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する第１の監視プロセスを生成し、第１の監視プロセスの生成が正常に行われた場合に第１の監視プロセス起動完了信号を出力する。
【００７３】
また、以上のように構成された情報処理装置１０におけるプログラム更新方法は、メインプログラムを記憶するメモリである第１の不揮発性メモリ１０２又は第２の不揮発性メモリ１１２と、メモリに記憶されたメインプログラムを読み出して実行するプロセッサである第１のプロセッサ１０１又は第２のプロセッサ１１１と、を備えた情報処理装置１０のメモリに記憶されたメインプログラムを更新するプログラム更新方法である。そして、メモリに記憶されたメインプログラムを更新する第１の工程と、第１の工程によりメモリに記憶されたメインプログラムが更新された後のプロセッサのリセット時に、更新確認モードでプロセッサを起動させる第２の工程と、更新確認モードで起動したプロセッサが、メインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する監視プロセスを生成し、監視プロセスの生成が正常に行われた場合に監視プロセス起動完了信号を出力する第３の工程と、を備えている。
【００７４】
このため、プログラム更新後のリセット時においては、メインプログラムの実行により生成されるプロセスが正常に動作しているかを監視する監視プロセスの生成が正常に行われたことを確認するだけであるため、更新したプログラム全体が正常に更新されているかを確認する場合と比べて、確認にかかる時間を短縮することができる。そして、監視プロセスの生成と監視結果の送信機能については正常であることを確認しているため、以降のプログラムの実行において異常が発生した場合には、監視プロセスからの異常通報により異常発生を検知し、対処することができる。
【００７５】
また、更新確認モードは、更新により書き換えたメインプログラムが正しく書き換えできているかを確認するためのモードである。しかし、書き換えたプログラムをそのまま通常動作させてしまうと、例えば、第１のプロセッサ１０１と第２のプロセッサ１１１との間で協調して実行される協調処理があった場合に、一方のプロセッサのプログラムだけ更新されて機能が変化したために、この協調処理が正しく動作しない可能性がある。一方、双方のプロセッサのプログラムを同時に更新してしまうと、更新に失敗した場合に何が原因なのかを解析することが困難になる。
【００７６】
そこで、情報処理装置１０及びそのプログラム更新方法において上記の構成を備えることで、プログラムの書き換え後に更新確認モードで動作させることによって、各プロセスを監視するプロセスの生成と、その監視結果を別のプロセッサに送信する処理までは正常に動作するという最小限の機能の確認を行うことができる。
【００７７】
また、第１の不揮発性メモリ１０２及び第２の不揮発性メモリ１１２は、それぞれがＡ面及びＢ面の２つの記憶面を有している。そして、Ａ面及びＢ面のそれぞれに第１のメインプログラム又は第２のメインプログラムを記憶している。
【００７８】
このような構成により、２種類のプログラムのうち、一方を使って実行しているときには、もう一方のプログラムを書き換えて新しいバージョンに更新することが可能である。そして、プログラム更新後に、システムを再起動して、第１の不揮発性メモリ１０２、第２の不揮発性メモリ１１２に記録されている新しいバージョンのプログラムを実行することでシステム更新することが可能である。また、この際、仮に新しいバージョンのプログラムに何らかの不具合があって、正常に起動できない場合であっても、今回更新していない方のプログラムを使ってシステムを再起動することにより、システムを復旧させることができる。
【００７９】
また、第１のプロセッサ１０１は、更新確認モードで第１の監視プロセスの生成が正常に行われた場合に、第１の監視プロセス起動完了信号を第２のプロセッサ１１１へと出力する。そして、第２のプロセッサ１１１は、更新確認モードで第２の監視プロセスの生成が正常に行われた場合に、第２の監視プロセス起動完了信号を第１のプロセッサ１０１へと出力する。このため、プログラムの更新と更新が正常に行われたかの確認のために専用のハードウェアを用意する必要がない。
【００８０】
さらに、以上のように構成された情報処理装置１０を備えたエレベータ装置は、エレベータの乗りかご５００の内部に設けられ、当該乗りかご５００の内部を撮影してアナログ画像信号を情報処理装置１０へと出力するかご内カメラ１１４と、乗りかご５００の内部に設けられ、情報処理装置１０からのデジタル画像信号の入力を受けて画像を表示するモニタ１０６と、を備えている。そして、情報処理装置１０の第１のプロセッサ１０１により、情報処理装置１０からモニタ１０６に出力するデジタル画像信号を処理し、情報処理装置１０の第２のプロセッサ１１１により、かご内カメラ１１４から情報処理装置１０に入力されたアナログ画像信号を処理する。
【００８１】
近年、デジタル映像技術、映像圧縮技術、映像データ蓄積技術及びデータ伝送技術等が進展し、それら技術を応用して構成するデジタル映像表示器、監視レコーダーシステム及びテレビ電話システムも急速に発展している。デジタル映像表示器及び監視レコーダーシステムは、ビル及び駅等の様々な公共施設に設置され、さまざまな情報の提供と、万が一の時に備えた監視を行う。テレビ電話システムは、例えば、エレベータ内に利用者が閉じ込められた時に、監視センターの担当者と映像を通して会話することで安心感を与えることができるとともに、エレベータ内の状況を監視センターの担当者が確認できる。特に、エレベータ内は、閉じられた空間であることから、テレビ電話システムに加えて、エレベータの利用者に情報を提供するデジタル映像表示器と、利用者の監視をおこなう監視レコーダーシステムが同時に求められることがある。
【００８２】
これらデジタル映像表示器や、監視レコーダー、テレビ電話システムを実現する場合、汎用プロセッサにより、デジタル映像処理及び映像圧縮処理に相当するプログラムを実行して実現する方法がある。しかし、映像の高解像度化、映像データの高圧縮化が進んでおり、これら処理を汎用プロセッサで実行することで、汎用プロセッサの温度上昇が問題となることがある。汎用プロセッサの温度上昇は、熱暴走による動作不具合となることがあるため、ファンなどの冷却装置によって温度を下げる必要がある。しかし、ファンが故障した場合には汎用プロセッサが熱暴走してしまうため、定期的なメンテナンスが必須となり、そのためのコストが増加してしまう。
【００８３】
そこで、前述のような情報処理装置１０を備えたエレベータ装置によれば、モニタ１０６に出力するデジタル画像信号処理と、かご内カメラ１１４から入力されたアナログ画像信号処理とを、それぞれ専用のプロセッサで行うことができる。さらに、複数の専用プロセッサそれぞれのプログラム更新後の確認処理に必要な時間を短縮することが可能である。
【００８４】
なお、図２には通信ネットワーク１２に接続された監視カメラ１１を図示している。この監視カメラ１１は、撮影した映像を例えばＭＰＥＧ形式で圧縮した圧縮映像データとして情報処理装置１０に送信する。第１のプロセッサ１０１は、情報処理装置１０が受信した監視カメラ１１からの圧縮映像データを伸張してモニタ１０６に表示させる。また、第１のプロセッサ１０１は、情報処理装置１０が受信した監視カメラ１１からの圧縮映像データをＨＤＤ１０５（ハードディスクドライブ）に保存する。そして、第１のプロセッサ１０１は、ＨＤＤ１０５に保存されている圧縮映像データを読み出して伸張し、モニタ１０６に表示させることもできる。
【００８５】
次に、以上のように構成された情報処理装置１０における起動処理の流れ及びプログラム更新処理の流れについて、各種のフラグ制御及び各種の信号のやり取りも含めて、さらに詳しく説明する。これまでの説明において、第１の起動指定フラグ及び第２の起動指定フラグを用いた処理について既に説明している。以降では、さらに、第１の起動確認フラグ及び第２の起動確認フラグ、並びに、第１の更新フラグ及び第２の更新フラグを用いた処理についても説明する。
【００８６】
第１の起動確認フラグ及び第１の更新フラグは、第１の不揮発性メモリ１０２に記憶されている。第２の起動確認フラグ及び第２の更新フラグは、第２の不揮発性メモリ１１２に記憶されている。
【００８７】
第１の起動確認フラグは、第１のメインプログラムが正しく起動したことが確認できているか否かを示すフラグである。ここでは、第１の起動確認フラグは、第１のメインプログラムＡ及び第１のメインプログラムＢのそれぞれについて存在する。第２の起動確認フラグは、第２のメインプログラムが正しく起動したことが確認できているか否かを示すフラグである。第２の起動確認フラグは、第２のメインプログラムＡ及び第２のメインプログラムＢのそれぞれについて存在する。
【００８８】
ここで、起動確認フラグが無効とは、メインプログラムの起動を試みたところ、起動確認の判断を行う処理が実行されていないために起動の確認ができないということである。すなわち、メインプログラムの更新が何らかの原因で失敗したと判断できる。また、不揮発性メモリの物理的な故障により、メインプログラムの一部が正しく読み出せない、又は、メインプログラムの一部が変化してしまっている等の問題が発生した場合にも、起動確認フラグは無効となることがある。
【００８９】
第１の更新フラグは、第１のプログラム更新部１３１により、第１の不揮発性メモリ１０２に記憶されている第１のメインプログラムが第１の更新用メインプログラムで上書きされたか否かを示すものである。第２の更新フラグは、第２のプログラム更新部１４１により、第２の不揮発性メモリ１１２に記憶されている第２のメインプログラムが第２の更新用メインプログラムで上書きされたか否かを示すものである。
【００９０】
また、以降の説明においては、第１のプロセッサ１０１と第２のプロセッサ１１１との間でやり取りされる信号として、図２に示す第１のリセット制御信号及び第２のリセット制御信号、第１の更新確認フラグ信号及び第２の更新確認フラグ信号、並びに、起動反転フラグ信号がある。
【００９１】
第１のリセット制御信号及び第２のリセット制御信号、並びに、第１の更新確認フラグ信号及び第２の更新確認フラグ信号は、シリアル通信線１２１を介してやり取りされる。第１のリセット制御信号は、第１のプロセッサ１０１から第２のプロセッサ１１１をリセットするための信号である。第２のリセット制御信号は、第２のプロセッサ１１１から第１のプロセッサ１０１をリセットするための信号である。
【００９２】
第１の更新確認フラグ信号は、第１のプロセッサ１０１が、第２のプロセッサ１１１に更新確認モードで起動するように指示するための信号である。第２の更新確認フラグ信号は、第２のプロセッサ１１１が、第１のプロセッサ１０１に更新確認モードで起動するように指示するための信号である。
【００９３】
起動反転フラグ信号は、オープンドレイン構成となっている。起動反転フラグ信号は、電源電圧（ＶＤＤ）に、抵抗を介してプルアップされている。起動反転フラグ信号は、通常においては、第１のプロセッサ１０１及び第２のプロセッサ１１１の両方に入力された状態である。すなわち、第１のプロセッサ１０１及び第２のプロセッサ１１１は、通常時においては、電源電圧と同じ電圧（ハイレベル）を検出している。
【００９４】
第１のプロセッサ１０１において、第１の不揮発性メモリ１０２に保存されている第１のメインプログラムＡ及び第１のメインプログラムＢのうち、第１の起動指定フラグで指定されたメインプログラムで起動できなかった場合に、第１のプロセッサ１０１は、起動反転フラグ信号をグランドレベル（ローレベル）にドライブする。
【００９５】
第２のプロセッサ１１１は、起動反転フラグ信号がローレベルになったことを検出した場合に、第１のプロセッサ１０１が第１の起動指定フラグで指定されたメインプログラムでは起動できないことを検知することができる。そして、この場合には、第１のプロセッサ１０１は第１の起動指定フラグで指定されていない方のメインプログラムにより起動される。よって、第２のプロセッサ１１１は、第１のプロセッサ１０１が第１の起動指定フラグで指定されていない方のメインプログラムで起動していることを認識することができる。
【００９６】
同様に、第２のプロセッサ１１１において、第２の不揮発性メモリ１１２に保存されている第２のメインプログラムＡ及び第２のメインプログラムＢのうち、第２の起動指定フラグで指定されたメインプログラムで起動できなかった場合に、第２のプロセッサ１１１は、起動反転フラグ信号をグランドレベル（ローレベル）にドライブする。
【００９７】
第１のプロセッサ１０１は、起動反転フラグ信号がローレベルになったことを検出した場合に、第２のプロセッサ１１１が第２の起動指定フラグで指定されたメインプログラムでは起動できないことを検知することができる。そして、この場合には、第２のプロセッサ１１１は第２の起動指定フラグで指定されていない方のメインプログラムにより起動される。よって、第１のプロセッサ１０１は、第２のプロセッサ１１１が第２の起動指定フラグで指定されていない方のメインプログラムで起動していることを認識することができる。
【００９８】
以上のような各フラグ及び各信号の機能を前提とし、まず、図３及び図４を参照しながら、情報処理装置１０の起動処理の流れについて説明する。ステップＳ２００で情報処理装置１０の電源が投入されると、第１のプロセッサ１０１及び第２のプロセッサ１１１は、電源が投入されてから規定時間が経過した後にハードウェアで構成されたリセット回路によりリセット解除される（ステップＳ２０１及びＳ３０１）。
【００９９】
まず、第１のプロセッサ１０１での処理の流れを説明する。第１のプロセッサ１０１は、第１の不揮発性メモリ１０２から起動プログラムを読み出して実行することで、第１の起動制御部１３５の機能を実現する。すなわち、第１の起動制御部１３５による処理というのは、起動プログラムを実行している第１のプロセッサ１０１による処理と同じことを意味している。
【０１００】
ステップＳ２０１の後はステップＳ２０２へと進む。ステップＳ２０２においては、第１の起動制御部１３５は、第１のプロセッサ１０１の初期化処理を行う。第１のプロセッサ１０１の初期化処理とは、具体的に例えば、第１のプロセッサ１０１の動作に必要なクロック設定、キャッシュ設定、第１の不揮発性メモリ１０２のアクセスパラメータの設定、第１の揮発性メモリ１０３の初期化、シリアル通信線１２１を介した通信に必要なコントローラの設定、及び、第１のプロセッサ１０１の入出力ポートの設定等を含む。
【０１０１】
続くステップＳ２０３において、第１の起動制御部１３５は、第１の不揮発性メモリ１０２に保存されている第１の更新フラグを参照し、第１のプログラム更新部１３１により第１のメインプログラムが更新されたか否かを確認する。ステップＳ２０３において、第１の更新フラグが無効であって、第１のメインプログラムが更新されていない場合、ステップＳ２０４に進む。一方、第１の更新フラグが有効であって、第１のメインプログラムが更新された直後である場合、ステップＳ２０５へと進む。
【０１０２】
ステップＳ２０４においては、第１の起動制御部１３５は、第１の起動指定フラグで指定された第１のメインプログラムの第１の起動確認フラグが有効であるか否かを確認する。
【０１０３】
ここで、図５を参照しながら第１の起動確認フラグの具体的な状態について説明する。前述したように、第１の起動確認フラグは、第１のメインプログラムが正しく起動したことが確認できているか否かを示すフラグである。このため、図５（ａ）に示す定常状態では、第１のメインプログラムＡについての起動確認フラグ及び第１のメインプログラムＢについての起動確認フラグのどちらも有効である。
【０１０４】
また、第１のプログラム更新部１３１により第１のメインプログラムＡを更新した直後では、第１のメインプログラムＡが正しく起動したことが確認できていない。このため、図５（ｂ）に示すように、第１のメインプログラムＡについての起動確認フラグは無効であり、第１のメインプログラムＢについての起動確認フラグは有効である。
【０１０５】
そして、第１のプログラム更新部１３１により第１のメインプログラムＢを更新した直後では、第１のメインプログラムＢが正しく起動したことが確認できていない。このため、図５（ｃ）に示すように、第１のメインプログラムＡについての起動確認フラグは有効であり、第１のメインプログラムＢについての起動確認フラグは無効である。
【０１０６】
なお、第１のメインプログラムＡについての起動確認フラグ及び第１のメインプログラムＢについての起動確認フラグのどちらもが無効となる状態は原則として発生しない。ただし、仮にそのような状態が発生した場合には、正しく起動する第１のメインプログラムがないということになるので、故障を検出する。
【０１０７】
図３に戻って説明を続ける。ステップＳ２０４において、第１の起動指定フラグで指定されたメインプログラムの起動確認フラグが有効である場合、ステップＳ２０５に進む。一方、第１の起動指定フラグで指定されたメインプログラムの起動確認フラグが無効である場合、ステップＳ２０６に進む。
【０１０８】
ステップＳ２０５においては、第１の起動制御部１３５は、起動反転フラグ信号がハイレベルか否かを確認する。起動反転フラグ信号がハイレベルであれば、第２のプロセッサ１１１が第２の起動指定フラグで指定される第２のメインプログラムを実行しても問題ないと判断できる。この場合には、ステップＳ２０５からステップＳ２０７へと進む。一方、起動反転フラグ信号がローレベルである場合、第２のプロセッサ１１１が第２の起動指定フラグで指定される第２のメインプログラムを実行することに問題があると判断できる。この場合には、ステップＳ２０５からステップＳ２０９へと進む。
【０１０９】
ステップＳ２０６においては、第１の起動制御部１３５は、起動反転フラグ信号をローレベルに設定する。
【０１１０】
ステップＳ２０７では、第１の起動制御部１３５は、第２のプロセッサ１１１から送信される第２の更新確認フラグ信号が無効か否かを確認する。第２の更新確認フラグ信号が無効の場合、ステップＳ２０８へと進む。一方、第２の更新確認フラグ信号が有効の場合、第２のプロセッサ１１１が、第１のプロセッサ１０１に更新確認モードでの起動を指示していることを表している。この場合には、ステップＳ２０９へと進む。
【０１１１】
ステップＳ２０８においては、第１の起動制御部１３５は、第１の起動指定フラグにより指定された第１のメインプログラムを選択する。ステップＳ２０８の後はステップＳ２１０へと進む。
【０１１２】
ステップＳ２０９においては、第１の起動制御部１３５は、第１の起動指定フラグにより指定されていない方の第１のメインプログラムを選択する。ステップＳ２０９の後はステップＳ２１０へと進む。
【０１１３】
ステップＳ２１０においては、第１の起動制御部１３５は、ステップＳ２０８又はステップＳ２０９で選択されたメインプログラムが、第１のメインプログラムＡ及び第１のメインプログラムＢのいずれであるのかの結果を、第１の揮発性メモリ１０３に記憶させる。ステップＳ２１０の後は図３中の「Ｃ」に至る。そして、図４中の「Ｃ」からステップＳ２１１へと進む。
【０１１４】
ステップＳ２１１においては、第１の起動制御部１３５は、第２の更新確認フラグ信号が無効か否かを確認する。第２の更新確認フラグ信号が無効の場合には、ステップＳ２１２へと進む。ステップＳ２１２においては、第１の起動制御部１３５は、第１の更新フラグを無効に設定し、ステップＳ２１３へと進む。ステップＳ２１３においては、第１のプロセッサ１０１は、更新確認モードを無効にした状態で、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された方の第１のメインプログラムの実行を開始する。
【０１１５】
一方、ステップＳ２１１で第２の更新確認フラグ信号が有効の場合には、ステップＳ２１４へと進む。ステップＳ２１４においては、第１のプロセッサ１０１は、更新確認モードを有効にした状態で、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された方の第１のメインプログラムの実行を開始する。
【０１１６】
ステップＳ２１５においては、第１のプロセッサ１０１は、更新確認モードが無効の状態で第１のメインプログラムを動作させている。続くステップＳ２１６においては、第１のプロセッサ１０１は、起動完了通知を第２のプロセッサ１１１とやり取りする（２９０で示す点線は、このやり取りを表している）。
【０１１７】
ステップＳ２１６で起動完了通知を送信した後は、第１のメインプログラムが正常に起動したと判断できる。このため、ステップＳ２１６の後はステップＳ２１７へと進み、第１のプロセッサ１０１は、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された方の第１のメインプログラムについての第１の起動確認フラグを有効に設定する。ステップＳ２１７の後はステップＳ２１８へと進む。
【０１１８】
ステップＳ２１８においては、第１のプロセッサ１０１は、第１の起動指定フラグが指定する第１のメインプログラムと、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された方の第１のメインプログラム（選択結果）とが同じであるか否かを確認する。第１の起動指定フラグが指定する第１のメインプログラムと、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された方の第１のメインプログラムとが同じである場合にはステップＳ２１９へと進む。
【０１１９】
ステップＳ２１９においては、第１のプロセッサ１０１は、第１のメインプログラムを実行し、第１のメインプログラムに基づく通常動作を行う。第１のメインプログラムの通常動作時においては、第１のメインプログラムに搭載されている全ての機能が動作することになる。このため、第１のプロセッサ１０１と第２のプロセッサ１１１とは、継続的に相互にやり取りを行う（２９１で示す点線は、このやり取りを表している）。
【０１２０】
一方、ステップＳ２１８で、第１の起動指定フラグが指定する第１のメインプログラムと、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された第１のメインプログラムとが同じでない場合にはステップＳ２２０へと進む。
【０１２１】
ステップＳ２２０においては、第１の不揮発性メモリ１０２に記憶されている第１の起動指定フラグを、ステップＳ２１０で第１の揮発性メモリ１０３に記憶された第１のメインプログラムを指令するものへと変更する。また、第１の起動指定フラグを変更したことをログとして記録する。このログの記録は、第１の不揮発性メモリ１０２、ＨＤＤ１０５並びに通信ネットワーク１２を介して接続されたサーバー１５及びＰＣ１６の記憶装置等に対して行う。ステップＳ２２０の後はステップＳ２１９へと進む。
【０１２２】
一方、ステップＳ２１４の後はステップＳ２２１へと進む。ステップＳ２２１においては、第１のプロセッサ１０１は、更新確認モードが有効の状態で第１のメインプログラムを動作させている。そして、更新確認モードでの動作に問題がなければ、次回の再起動時に、第１のメインプログラムの全ての機能の動作確認をするために、第１のプロセッサ１０１は第１の起動確認フラグを無効に変更する。このステップＳ２２１の処理については、後述するプログラム更新処理の説明において詳細を記載する。
【０１２３】
第２のプロセッサ１１１での処理の流れは、第１のプロセッサ１０１の場合と同様である。すなわち、第２のプロセッサ１１１について実施されるステップＳ３０１からＳ３２１は、第１のプロセッサ１０１について実施されるステップＳ２０１からＳ２２１のそれぞれと同様である。より正確には、ステップＳ２０１からＳ２２１について以上で説明した内容において、第１のプロセッサ１０１に関連する事項を第２のプロセッサ１１１に関連する対応事項に読み換え、第２のプロセッサ１１１に関連する事項を第１のプロセッサ１０１に関連する対応事項に読み換えると、ステップＳ３０１からＳ３２１の内容となる。このため、第２のプロセッサ１１１について実施されるステップＳ３０１からＳ３２１については、その詳細な説明は省略する。
【０１２４】
なお、図６に示すのは、第２の起動確認フラグの具体的な状態である。この図６は第１の起動確認フラグについて示した図５に対応している。すなわち、図６（ａ）に示す定常状態では、第２のメインプログラムＡについての起動確認フラグ及び第２のメインプログラムＢについての起動確認フラグのどちらも有効である。また、第２のプログラム更新部１４１により第２のメインプログラムＡを更新した直後では、図６（ｂ）に示すように、第２のメインプログラムＡについての起動確認フラグは無効であり、第２のメインプログラムＢについての起動確認フラグは有効である。そして、第２のプログラム更新部１４１により第２のメインプログラムＢを更新した直後では、図６（ｃ）に示すように、第２のメインプログラムＡについての起動確認フラグは有効であり、第２のメインプログラムＢについての起動確認フラグは無効である。
【０１２５】
次に、図７から図１０を参照しながら、情報処理装置１０のプログラム更新処理の流れについて説明する。図７に示すステップＳ２１９は、図４におけるテップＳ２１９と同じである。このステップＳ２１９は、第１のプロセッサ１０１が第１のメインプログラムを実行して通常動作をしている状態を表している。同様に、図７に示すステップＳ３１９は、図４におけるステップＳ３１９と同じである。このステップＳ３１９は、第２のプロセッサ１１１が第２のメインプログラムを実行して通常動作をしている状態を表している。
【０１２６】
この状態において、ステップＳ２５１で、第１のプロセッサ１０１にプログラム更新イベントが入力されたとする。このプログラム更新イベントは、例えば、サーバー１５又はＰＣ１６から通信ネットワーク１２を介して入力してもよいし、ユーザーによるコマンド入力でもよい。
【０１２７】
ステップＳ２５１でプログラム更新イベントが入力されると、第１のプログラム更新部１３１は、ステップＳ２５２で、第１の更新用メインプログラム１及び第２の更新用メインプログラム２を、例えばサーバー１５から通信ネットワーク１２及びネットワークコントローラ１０４を介して取得し、取得した第１の更新用メインプログラム１及び第２の更新用メインプログラム２を第１の揮発性メモリ１０３に保存する。
【０１２８】
続くステップＳ２５３で、第１のプログラム更新部１３１は、第１の揮発性メモリ１０３に保存されている第２の更新用メインプログラムを、第２のプロセッサ１１１に送信する。この送信の際には、シリアル通信線１２１が利用される。この送信を、点線２５３で示す。
【０１２９】
第２のプロセッサ１１１では、ステップＳ３５１で、第２の更新用メインプログラムを第１のプロセッサ１０１からシリアル通信線１２１を介して受信する。そして、第２のプロセッサ１１１は、受信した第２の更新用メインプログラムを第２の揮発性メモリ１１３に保存する。
【０１３０】
ステップＳ２５３及びＳ３５１の処理が完了した時点で、第１のプロセッサ１０１に接続された第１の揮発性メモリ１０３には、第１の更新用メインプログラムが保存されている。また、第２のプロセッサ１１１に接続された第２の揮発性メモリ１１３には、第２の更新用プログラムが保存されている。
【０１３１】
次に、ステップＳ２５４で、第１のプログラム更新部１３１は、第２のプロセッサ１１１に対して、更新プログラムの実行指示を行う。ここでいう、「更新プログラム」とは、第２のプログラム更新部１４１による第２のメインプログラムの更新を指す。この実行指示を、点線２５４で示す。第２のプロセッサ１１１は、更新プログラム実行指示を受けて、ステップＳ３５２で、更新プログラムを実行する。すなわち、第２のプログラム更新部１４１による第２のメインプログラムの更新を実行する。
【０１３２】
このステップＳ３５２においては、第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２に保存されている第２の起動指定フラグを参照し、第２のメインプログラムＡ及び第２のメインプログラムＢのうち第２の起動指定フラグが指定していない方の第２のメインプログラムに、第２の揮発性メモリ１１３に保存されている第２の更新用メインプログラムを上書きする。そして、ステップＳ３５３へと進み、第２の更新用メインプログラムが書き込まれたことを記録するために、第２の更新フラグを有効にする。また、第２のプログラム更新部１４１は、更新が完了したことを第１のプロセッサ１０１に通知する。この通知を、点線２５５で示す。
【０１３３】
第１のプロセッサ１０１の第１のプログラム更新部１３１では、ステップＳ２５４で、更新プログラム実行指示をした後、ステップＳ２５５で、更新プログラムの実行が完了したかを確認する。完了していなければステップＳ２５６へと進む。
【０１３４】
ステップＳ２５６では、第１のプログラム更新部１３１は、第２のプロセッサ１１１の更新プログラム実行で、すなわち、第２のプログラム更新部１４１による第２のメインプログラム更新処理でエラーが発生したか否かを確認する。このエラーの発生は、もしあれば、第２のプロセッサ１１１のステップＳ３５２の処理で通知される。エラーが発生した場合、ステップＳ２５７へと進み、ログを記録した後に終了する。一方、ステップＳ２５６でエラーが発生していない場合には、ステップＳ２５５に戻って第２のプロセッサ１１１での更新プログラム完了を待つ。
【０１３５】
ステップＳ２５５で更新プログラムの実行が完了した場合、ステップＳ２５８に進む。ステップＳ２５８では、第２のプロセッサ１１１で更新したプログラムが正しく書き込めているか更新確認モードで確認するために、第１のプログラム更新部１３１は、第１の更新確認フラグ信号を有効に設定する。続くステップＳ２５９で、第１のプログラム更新部１３１は、第１のリセット制御信号を第２のプロセッサ１１１へと送信し、第２のプロセッサ１１１をリセットする。この時のリセット処理を、点線２５９で示す。
【０１３６】
ステップＳ２５９の後は、ステップＳ２６０へと進む。ステップＳ２６０では、第１のプログラム更新部１３１は、第１のタイマー１３４に予め定められた正の初期値をセットする。そして、第１のプログラム更新部１３１は、第１のタイマー１３４による初期値からの減算を開始させる。
【０１３７】
一方、ステップＳ３５３の後、第２のプロセッサ１１１は、第１のプロセッサ１０１からの第１のリセット制御信号によってリセットが実行され、図３の「Ｂ」から処理が開始される。このリセット後の第２のプロセッサ１１１の処理について、図３及び図４を参照しながら説明する。
【０１３８】
リセット後の第２のプロセッサ１１１では、ステップＳ３０２で初期化処理が実行された後、ステップＳ３０３で第２の更新フラグを確認する。図７のステップＳ３５３で第２の更新フラグが有効に設定されているため、ステップＳ３０５に進む。ステップＳ３０５では、起動反転フラグ信号はハイレベルのままであるから、ステップＳ３０７に進む。
【０１３９】
ステップＳ３０７では、第１の更新確認フラグ信号を確認する。図７のステップＳ２５８で第１の更新確認フラグ信号は有効に設定されているため、ステップＳ３０９に進む。ステップＳ３０９では、第２の起動指令フラグが指定しない方の第２のメインプログラムを選択する。すなわち、図７のステップＳ３５２で第２の更新用メインプログラムで上書きされた方を選択することになる。
【０１４０】
続くステップＳ３１０で、ステップＳ３０９での選択結果を第２の揮発性メモリ１１３に保存する。ステップＳ３１１へと進み、第１の更新確認フラグ信号１３３を確認する。ステップＳ３０７の時と同様に第１の更新確認フラグ信号は有効に設定されているため、ステップＳ３１４に進む。ステップＳ３１４では、更新確認モード有効で第２のメインプログラムを起動する。そして、ステップＳ３２１で、更新確認モードでの第２のメインプログラムの起動を完了し、ステップＳ３０９で選択された方の第２の起動確認フラグを無効に設定する。
【０１４１】
図８に示すステップＳ３２１は、この図４のステップＳ３２１に対応している。ステップＳ３２１で更新確認モードでの第２のメインプログラムの起動を完了すると、第２のプロセッサ１１１から第１のプロセッサ１０１にシリアル通信線１２１を介して第２の監視プロセス起動完了信号が送信される（点線２６１）。
【０１４２】
第１のプログラム更新部１３１は、ステップＳ２６１で、第２のプロセッサ１１１からの第２の監視プロセス起動完了信号を受信したか否かを確認する。第２の監視プロセス起動完了信号を受信していない場合、ステップＳ２６２へと進む。ステップＳ２６２においては、第１のプログラム更新部１３１は、ステップＳ２６０で開始した第１のタイマー１３４が０になったか否かを確認する。第１のタイマー１３４が０になっていなければ、ステップＳ２６１へと戻る。
【０１４３】
一方、第１のタイマー１３４が０になれば、ステップＳ２６３へと進む。ステップＳ２６３においては、ステップＳ３２１での更新確認モードによる第２のメインプログラムの起動に何らかの問題があり、プログラム更新が失敗したと判断できる。そこで、第１のプログラム更新部１３１は、ログを記録する。
【０１４４】
続くステップＳ２６４で、第１のプログラム更新部１３１は、第１の更新確認フラグ信号１３３を無効に設定する。そして、ステップＳ２６５へと進み、第１のプログラム更新部１３１は、第１のリセット制御信号を第２のプロセッサ１１１に送信して第２のプロセッサ１１１をリセットする。続くステップＳ２６６で、第１のプログラム更新部１３１は、第１のプロセッサ１０１をリセットする。これにより、第１のプロセッサ１０１及び第２のプロセッサ１１１は、それぞれが図３における「Ａ」及び「Ｂ」から起動処理を開始する。
【０１４５】
この時、図７のステップＳ３５３で第２の更新フラグは無効であったものが有効に変更されているが、それ以外のフラグについては、第１のプログラム更新部１３１が処理を実行する前と同じである。このため、図３及び図４の第２のプロセッサ１１１の処理を実行していくとステップＳ３１２で更新フラグが無効になるので、第１のプログラム更新部１３１が処理を実行する前と同じ状態に戻ることになる。
【０１４６】
一方、ステップＳ２６１で第２の監視プロセス起動完了信号を受信した場合、ステップＳ２６７へと進む。ステップＳ２６７においては、第１のプログラム更新部１３１は、第１の更新確認フラグ信号１３３を無効に設定する。続くステップＳ２６８で、第１のプログラム更新部１３１による処理が完了したことを、第２のプロセッサ１１１に通知する。この通知を点線２６８で示す。そして、「Ｇ」に至り処理は図９の同じく「Ｇ」からステップＳ２７１へと進む。
【０１４７】
第２のプロセッサ１１１では、ステップＳ３２１の後、ステップＳ３５４で、第１のプログラム更新部１３１による処理が完了した旨の通知を受信し、「Ｈ」に至る。そして、処理は図９の同じく「Ｈ」からステップＳ３６１へと進む。
【０１４８】
ステップＳ２７１及びＳ３６１のそれぞれから先、図９及び図１０に示す処理においては、今度は、第２のプロセッサ１１１の第２のプログラム更新部１４１が第１のプロセッサ１０１に対してプログラム更新制御を行う。
【０１４９】
図９に示すステップＳ２７１及びＳ２７２は、それぞれ、図７のステップＳ３５２及びＳ３５３における第２のプロセッサ１１１による処理と同様の処理を、第１のプロセッサ１０１が行う。また、図９に示すステップＳ３６１からＳ３６７は、それぞれ、図７のステップＳ２５４からＳ２６０における第１のプログラム更新部１３１による処理と同様の処理を、第２のプログラム更新部１４１が行う。ただし、ステップＳ３６４の後は、「Ｌ」に至り、処理は図１０の同じく「Ｌ」からステップＳ３７４へと進む点が、図７及び図８の処理とは異なっている。
【０１５０】
また、図１０に示すステップＳ２２１は、図８のステップＳ３２１における第２のプロセッサ１１１による処理と同様の処理を、第１のプロセッサ１０１が行う。図１０に示すステップＳ３６８からＳ３７０、Ｓ３７３からＳ３７５は、それぞれ、図８のステップＳ２６１からＳ２６６における第１のプログラム更新部１３１による処理と同様の処理を、第２のプログラム更新部１４１が行う。
【０１５１】
ただし、図１０に示すフローでは、ステップＳ３６８で第１の監視プロセス起動完了信号を受信した場合、ステップＳ３７１へと進む。ステップＳ３７１では、第２のプログラム更新部１４１は、起動指定フラグ更新指示を、第１のプロセッサ１０１に対して行う。そして、ステップＳ３７２へと進み、第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２に記憶されている第２の起動指定フラグを、更新した第２のメインプログラムを指定するように更新する。ステップＳ３７２の後はステップＳ３７３へと進む。
【０１５２】
一方、ステップＳ３７１で送信された起動指定フラグ更新指示を受けた第１のプロセッサ１０１は、ステップＳ２２１からＳ２７３へと進む。ステップＳ２７３においては、第１のプロセッサ１０１は、第１の不揮発性メモリ１０２に記憶されている第１の起動指定フラグを、更新した第１のメインプログラムを指定するように更新する。この際の信号のやり取りを、点線３７１で示す。
【０１５３】
ステップＳ２７３が終了すると、ステップＳ３７４で第２のプログラム更新部１４１から送信された第２のリセット制御信号を受けて、第１のプロセッサ１０１はリセットされる。そして、図１０の「Ａ」に至り、図３の同じく「Ａ」からリセット後の処理を実行する。また、ステップＳ３７５でリセットされた第２のプロセッサ１１１においては、図１０の「Ｂ」に至り、図３の同じく「Ｂ」からリセット後の処理を実行する。
【０１５４】
このリセット後の第１のプロセッサ１０１及び第２のプロセッサ１１１での処理について、図３及び図４を参照しながら簡単に説明する。第１のプロセッサ１０１及び第２のプロセッサ１１１は、リセット解除（ステップＳ２０１、Ｓ３０１）の後に、初期化処理（ステップＳ２０２、Ｓ３０２）を行う。そして、第１の更新フラグ及び第２の更新フラグが有効であるため、ステップＳ２０３、Ｓ３０３から、それぞれステップＳ２０５、Ｓ３０５に進む。
【０１５５】
続いて、起動反転フラグ信号はハイレベルであるため、ステップＳ２０７、Ｓ３０７に進む。今回は、第１の更新確認フラグ信号及び第２の更新確認フラグ信号は両方とも無効であることから、ステップＳ２０８、Ｓ３０８へと進み、第１のプロセッサ１０１及び第２のプロセッサ１１１のそれぞれが、起動指定フラグで指定されたメインプログラムを選択する。
【０１５６】
ここで、それぞれの起動指定フラグは、図１０におけるステップＳ２７３、Ｓ３７２での処理により、更新されたメインプログラムの方に変更されている。このため、ステップＳ２０８、Ｓ３０８で選択されるメインプログラムは、更新されたメインプログラムになる。
【０１５７】
次に、ステップＳ２１１、Ｓ３１１で、それぞれの更新確認フラグ信号が無効と判定され、ステップＳ２１２、Ｓ３１２へと進んで、第１及び第２それぞれの更新フラグを無効とする。続くステップＳ２１３、Ｓ３１３では、更新確認モードを無効にして、第１及び第２それぞれのメインプログラムを起動する。そして、ステップＳ２１５、Ｓ３１５で、更新確認モード無効で第１及び第２それぞれのメインプログラムを動作させ、ステップＳ２１６、Ｓ３１６で起動完了通知をお互いに通知し合う。
【０１５８】
続くステップＳ２１７、Ｓ３１７で、第１及び第２それぞれの起動確認フラグを有効に変更する。ステップＳ２１８、Ｓ３１８においては、第１及び第２それぞれの起動指定フラグとステップＳ２０８、Ｓ３０８での選択結果が同じであるので、ステップＳ２１９、Ｓ３１９へと進み、第１及び第２それぞれのメインプログラムの通常動作を行う。
【０１５９】
以上の処理の流れにより、第１のプロセッサ１０１が実行するバージョンの異なる第１のメインプログラムＡ及び第１のメインプログラムＢのうち、現在使用していない方の第１のメインプログラムの更新と、第２のプロセッサ１１１が実行するバージョンの異なる第２のメインプログラムＡ及び第２のメインプログラムＢのうち、現在使用していない方の第２のメインプログラムの更新とを、確実に行うことができる。すなわち、更新確認モードを有効にして第１及び第２それぞれのメインプログラムを一度動作させてそれぞれが正常に動作することを確認した上で、リセット後に使用するメインプログラムを更新後のものに切り換えるように構成しているため、プログラムの更新を確実に行うことができる。
【０１６０】
次に、以上のように構成された情報処理装置１０において、メインプログラムを通常動作中に不具合が発生した場合の動作について説明する。
【０１６１】
図４のフロー図のステップＳ２１９及びステップＳ３１９において、第１のプロセッサ１０１及び第２のプロセッサ１１１が、それぞれ第１及び第２のメインプログラムを実行して通常動作しているときには、定期的に互いの状態を確認して、プログラムの実行停止又はエラーの発生がないかを確認している（点線２９１で示す）。
【０１６２】
この定期的な状態確認を行っている状態で、例えば、第２のプロセッサ１１１から第１のプロセッサ１０１への応答がなくなった場合の動作例について、図１１を参照しながら説明する。
【０１６３】
図１１において、第１のプロセッサ１０１及び第２のプロセッサ１１１は、それぞれ、第１及び第２のメインプログラムの通常動作（ステップＳ２１９、Ｓ３１９）を行っている。このとき、第１のプロセッサ１０１から、第２のプロセッサ１１１への状態通知（２９２の点線で表す）を行い、第２のプロセッサ１１１から第１のプロセッサ１０１への状態通知（２９３の点線で表す）が停止したとする。
【０１６４】
第１のプロセッサ１０１は、第１のメインプログラムを実行したことで生成されたプロセス、例えば状態監視プロセスにより、第２のプロセッサ１１１からの状態通知２９３が停止したことを検知する。第２のプロセッサ１１１からの状態通知２９３が停止したことを検知すると、第１のプロセッサ１０１での処理はステップＳ４０１へと進む。ステップＳ４０１においては、第１のプロセッサ１０１は、第１の不揮発性メモリ１０２に記憶されている第１の起動確認フラグを無効にする。続くステップＳ４０２で、第１のプロセッサ１０１は、第１のリセット制御信号を第２のプロセッサ１１１への送信し、第２のプロセッサ１１１をリセットさせる（このリセット制御を点線４０２で示す）。
【０１６５】
そして、ステップＳ４０３へと進み、第１のプロセッサ１０１は、第１のプロセッサ１０１自身をリセットする。第１のプロセッサ１０１をリセットした後は、図１１の「Ａ」に至り、図３中の同じく「Ａ」からステップＳ２０１へと処理が進む。一方、第１のリセット制御信号を受けた第２のプロセッサ１１１は、リセットされた後に図１１の「Ｂ」に至り、図３中の同じく「Ｂ」からステップＳ３０１へと処理が進む。
【０１６６】
このリセット後の第１のプロセッサ１０１及び第２のプロセッサ１１１での処理は、前述した図３及び図４のフローに従って行われる。今回は、図１１のステップＳ４０１で第１の起動確認フラグが無効にされているため、図３のステップＳ２０４からＳ２０６へと進む。そして、ステップＳ２０６において、起動反転フラグ信号がローレベルに設定される。したがって、この場合には、ステップＳ２０９へと進み、第１の起動指定フラグが指定しない方の第１のメインプログラムが選択される。
【０１６７】
一方、第２の不揮発性メモリ１１２に記憶されている第２の起動確認フラグは有効のままである。このため、第２のプロセッサ１１１については、ステップＳ３０４からステップＳ３０５に進む。ステップＳ３０５では、起動反転フラグ信号がローレベルになっているため、ステップＳ３０９へと進み、第２のプロセッサ１１１においても、第２の起動指定フラグが指定しない方の第２のメインプログラムが選択される。
【０１６８】
そして、ステップＳ２１５、Ｓ３１５に至って、第１のプロセッサ１０１及び第２のプロセッサ１１１は、それぞれ、更新確認モードを無効にして、ステップＳ２０９、Ｓ３０９で選択したメインプログラム、つまり、起動指定フラグとは異なるメインプログラムを選択して起動する。
【０１６９】
したがって、Ａ面及びＢ面に記憶されているメインプログラムのうち、図１１のステップＳ２１９、Ｓ３１９で実行されていたものとは異なる方のメインプログラムを、第１のプロセッサ１０１及び第２のプロセッサ１１１のそれぞれは選択して起動することになる。なお、第２のプロセッサ１１１での異常がプログラム更新後に発生したものである場合、図１１のステップＳ２１９、Ｓ３１９で実行されていたものとは異なる方のメインプログラムとは、プログラム更新前に異常が発生することなく動作していたメインプログラムということになる。
【０１７０】
そして、ステップＳ２１８、Ｓ３１８から、それぞれステップＳ２２０、Ｓ３２０へと進み、第１及び第２それぞれの起動指定フラグの変更を行った上でログを記録する。このようにして、最終的にステップＳ２１９、Ｓ３１９で通常動作するメインプログラムは、プログラム更新前に異常が発生することなく動作していたメインプログラムである。すなわち、少なくともメインプログラムの更新前の状態に復旧して、情報処理装置１０を停止させることなく動作させ続けることができる。
【０１７１】
実施の形態２．
図１２から図１８は、この発明の実施の形態２に係るもので、図１２は情報処理装置の構成を示すブロック図、図１３及び図１４は情報処理装置の起動処理を示すフロー図、図１５から図１８は情報処理装置のプログラム更新処理を示すフロー図である。
【０１７２】
前述した実施の形態１は、第１の不揮発性メモリ１０２に第１の起動指定フラグを記憶し、第２の不揮発性メモリ１１２に第２の起動指定フラグを記憶している。すなわち、起動指定フラグを第１のプロセッサ１０１側と第２のプロセッサ１１１側とでそれぞれ別に記憶している。これに対し、ここで説明する実施の形態２は、起動指定フラグを第１のプロセッサ１０１側と第２のプロセッサ１１１側のうちの一方のみで記憶するようにしたものである。
【０１７３】
以下、この実施の形態２に係る情報処理装置１０について、実施の形態１との相違点を中心に説明する。ここでは、起動指定フラグを第２のプロセッサ１１１側で記憶するようにした場合について説明する。しかし、起動指定フラグを第１のプロセッサ１０１側で記憶するようにしても構わない。
【０１７４】
まず、図１２を参照しながら、この実施の形態２に係る情報処理装置１０の構成を示す。この図１２に示すように、実施の形態２に係る情報処理装置１０の構成は、図２に示した実施の形態１とほぼ同様である。しかしながら、実施の形態２に係る情報処理装置１０においては第１の不揮発性メモリ１０２は、第１の起動指定フラグを記憶していない点が、まず実施の形態１と異なっている。
【０１７５】
そして、第２の不揮発性メモリ１１２は、１つの起動指定フラグだけを記憶している。また、第１のプロセッサ１０１で実行する第１のメインプログムを指定するため、第２のプロセッサ１１１から第１のプロセッサ１０１へと起動指定フラグ信号が送信される。起動指定フラグ信号は、第１のプロセッサ１０１が、第１の不揮発性メモリ１０２のＡ面及びＢ面のどちらに記憶されている第１のメインプログラムを実行するかを指定するものである。
他の構成については実施の形態１と同様であって、その説明は省略する。
【０１７６】
次に、以上のように構成された情報処理装置１０の起動処理について図１３及び図１４を参照しながら説明する。図１３及び図１４の各ステップについて、実施の形態１の図３及び図４と同符号のものは、基本的に同じ内容であるため、その説明は省略する。この実施の形態２においては、図１３のステップＳ３０１の後にステップＳ３３１へと進む。ステップＳ３３１においては、第２の起動制御部１４５は、第２の不揮発性メモリ１１２に記憶されている起動指令フラグを参照して起動指定フラグ信号を設定する。このとき、例えば、第１のメインプログラムＡを指定する場合はハイレベル、第１のメインプログラムＢを指定するときはローレベルというように予め決めておく。ステップＳ３３１の後はステップＳ３０３へと進む。
【０１７７】
そして、図１３のステップＳ２０８においては、第１の起動制御部１３５は、起動指定フラグ信号を参照して、起動指定フラグ信号により指定されている方の第１のメインプログラムを選択する。また、図１３のステップＳ２０９においては、第１の起動制御部１３５は、起動指定フラグ信号を参照して、起動指定フラグ信号により指定されていない方の第１のメインプログラムを選択する。他のステップは実施の形態１と同様である。
【０１７８】
次に、以上のように構成された情報処理装置１０のプログラム更新処理について図１５から図１８を参照しながら説明する。図１５から図１８の各ステップについて、実施の形態１の図７から図１０と同符号のものは、基本的に同じ内容であるため、その説明は省略する。この実施の形態２においては、図１８のステップＳ２２１の後に図１０のステップＳ２７３を実施することなく、第１のプロセッサ１０１はリセットされる。
【０１７９】
また、図１８のステップＳ３６８の後は、図１０のステップＳ３７１を実施することなく、ステップＳ３７２へと進む。ステップＳ３７２においては、第２のプログラム更新部１４１は、第２の不揮発性メモリ１１２に記憶されている起動指定フラグを、更新した第１のメインプログラム及び更新した第２のメインプログラムを指定するように更新する。他のステップは実施の形態１と同様である。
【０１８０】
前述した実施の形態１の構成においては、図６のステップＳ３７１の実行後かつステップＳ３７２の処理の前で電源断が発生すると、第１の起動指定プラグの内容が、更新された第１のメインプログラムを指定するものではなくなってしまう。このため、第１の不揮発性メモリ１０２に記憶されている第１の起動指定プラグの内容と第２の不揮発性メモリ１１２に記憶されている第２の起動指定フラグの内容とが対応しなくなる。
【０１８１】
これに対し、以上のように構成された実施の形態２の構成によれば、実施の形態１と同様の効果を奏することができるのに加えて、起動指定フラグを１つにまとめることができるため、仮に電源断が発生したとしても、第１のプロセッサ１０１で実行する第１のメインプログラムの指定と第２のプロセッサ１１１で実行する第２のメインプログラムの指定とが対応しなくなることを防止することができる。
【０１８２】
なお、ステップＳ３７３の更新確認フラグ信号は、電源断により初期状態に戻る。そこで、更新確認フラグ信号の初期状態を無効としておけばよい。このようにすることで、電源断後の最初の起動時には、更新前のメインプログラムを用いて動作し、起動指定フラグ更新後の電源断であれば、更新後のメインプログラムを用いて動作することになり、情報処理装置１０を停止させることなく動作させ続けることができる。
【産業上の利用可能性】
【０１８３】
この発明は、メインプログラムを記憶するメモリと、このメモリに記憶されたメインプログラムを読み出して実行するプロセッサと、を備え、メモリに記憶されたメインプログラムを更新する必要のある情報処理装置に利用できる。
【符号の説明】
【０１８４】
１０    情報処理装置
１１    監視カメラ
１２    通信ネットワーク
１５    サーバー
１６    ＰＣ
３０    監視盤
１０１    第１のプロセッサ
１０２    第１の不揮発性メモリ
１０３    第１の揮発性メモリ
１０４    ネットワークコントローラ
１０５    ＨＤＤ
１０６    モニタ
１０８    ＵＳＢコントローラ
１０９    ＵＳＢメモリ
１１０    ＵＳＢコネクタ
１１１    第２のプロセッサ
１１２    第２の不揮発性メモリ
１１３    第２の揮発性メモリ
１１４    かご内カメラ
１２１    シリアル通信線
１３１    第１のプログラム更新部
１３４    第１のタイマー
１３５    第１の起動制御部
１４１    第２のプログラム更新部
１４４    第２のタイマー
１４５    第２の起動制御部
５００    乗りかご
５０１    かごドア
【図１】
2017103971.tif 000003
【図２】
2017103971.tif 000004
【図３】
2017103971.tif 000005
【図４】
2017103971.tif 000006
【図５】
2017103971.tif 000007
【図６】
2017103971.tif 000008
【図７】
2017103971.tif 000009
【図８】
2017103971.tif 000010
【図９】
2017103971.tif 000011
【図１０】
2017103971.tif 000012
【図１１】
2017103971.tif 000013
【図１２】
2017103971.tif 000014
【図１３】
2017103971.tif 000015
【図１４】
2017103971.tif 000016
【図１５】
2017103971.tif 000017
【図１６】
2017103971.tif 000018
【図１７】
2017103971.tif 000019
【図１８】
2017103971.tif 000020
【国際調査報告】
2017103971.tif 000021
2017103971.tif 000022