(57)【要約】  第１のプログラムを記憶する第１の記憶領域及び第２のプログラムを記憶する第２の記憶領域を有する記録系プログラム記憶部１２１と、第１のプログラムに対応する第３のプログラムを記憶する第３の記憶領域及び第２のプログラムに対応する第４のプログラムを記憶する第４の記憶領域を有する再生系プログラム記憶部１３１とを備え、記録系ＣＰＵ１２４は、第１のプログラム又は第２のプログラムを使用して起動するとともに、起動に必要なプログラムの記憶領域を示す記憶領域情報を再生系ＣＰＵ１３３に通知して、再生系ＣＰＵ１３３に起動を行わせる。
2016136014.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサを起動するために使用される第１のプログラムを記憶する第１の記憶領域、及び、当該第１のプログラムとバージョンが異なり、前記第１のプロセッサを起動するために使用される第２のプログラムを記憶する第２の記憶領域を有する第１の記憶部と、
第２のプロセッサと、
前記第２のプロセッサを起動するために使用され、前記第１のプログラムに対応する第３のプログラムを記憶する第３の記憶領域、及び、前記第２のプロセッサを起動するために使用され、前記第２のプログラムに対応する第４のプログラムを記憶する第４の記憶領域を有する第２の記憶部と、を備え、
前記第１のプロセッサは、前記第１のプログラム又は前記第２のプログラムを使用して起動するとともに、前記第３の記憶領域及び第４の記憶領域の内、起動に必要なプログラムの記憶領域を示す記憶領域情報を前記第２のプロセッサに通知し、
前記第２のプロセッサは、前記第１のプロセッサから通知された記憶領域情報に示されている記憶領域に記憶されているプログラムを使用して起動すること
を特徴とする監視レコーダ。
【請求項２】
前記第１の記憶部は、起動に使用するプログラムを記憶している領域として、当該第１の記憶領域及び当該第２の記憶領域の何れか一方を示す記憶領域指定値を含むプログラム管理情報を記憶しており、
前記第１のプロセッサは、前記記憶領域指定値で示される記憶領域に記憶されているプログラムを使用して起動すること
を特徴とする請求項１に記載の監視レコーダ。
【請求項３】
前記第１の記憶部及び前記第２の記憶部に記憶されているプログラムを更新する際に、
前記第１のプロセッサは、前記第１のプログラム及び前記第２のプログラムの内、起動に使用されたプログラムを記憶している記憶領域とは別の記憶領域に記憶されているプログラムを更新し、
前記第２のプロセッサは、前記第３のプログラム及び前記第４のプログラムの内、起動に使用されたプログラムを記憶している記憶領域とは別の記憶領域に記憶されているプログラムを更新し、
前記第１のプロセッサは、前記第１の記憶部及び前記第２の記憶部に記憶されているプログラムの更新後に、前記記憶領域指定値を更新された側のプログラムを記憶している記憶領域を示すように更新すること
を特徴とする請求項２に記載の監視レコーダ。
【請求項４】
前記第１のプロセッサ及び前記第２のプロセッサの起動を制御するプログラム起動制御部をさらに備え、
前記プログラム起動制御部は、前記第１のプロセッサ及び前記第２のプロセッサの少なくとも何れか一方の起動にエラーが生じた場合には、前記第１のプロセッサ及び前記第２のプロセッサを再起動させるともに、前記第１のプロセッサに、前記記憶領域指定値で示される記憶領域とは別の記憶領域に記憶されているプログラムを使用して起動するように指示し、
前記第１のプログラムは、前記記憶領域指定値で示される記憶領域とは別の記憶領域に記憶されているプログラムを使用して再起動を行うこと
を特徴とする請求項２又は３に記載の監視レコーダ。
【請求項５】
前記記憶領域指定値は、２以上のビット幅の２進数のデータで構成され、値が「１」であるビット数に応じて、前記第１の記憶領域及び前記第２の記憶領域の何れか一方を示すこと
を特徴とする請求項２から４の何れか一項に記載の監視レコーダ。
【請求項６】
前記第１の記憶部に記憶されているプログラム管理情報は、第１のプログラム管理情報及び第２のプログラム管理情報を備え、
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれ前記記憶領域指定値を含み、
前記第１のプロセッサは、起動を行う際に、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の何れかに含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項２から５の何れか一項に記載の監視レコーダ。
【請求項７】
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれのプログラム管理情報のバージョンを示すバージョン番号をそれぞれ含んでおり、
前記第１のプロセッサは、前記バージョン番号を参照して、より新しいバージョンのプログラム管理情報に含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項６に記載の監視レコーダ。
【請求項８】
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれの誤りを検出するためのチェック値をそれぞれ含んでおり、
前記第１のプロセッサは、前記チェック値を用いて、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の誤りチェックを行い、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の何れか一方に誤りが検出された場合には、他方に含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項６に記載の監視レコーダ。
【請求項９】
前記第１のプロセッサ及び前記第２のプロセッサは、１度に１ビットのデータのみを伝送することのできる第１の信号線で接続されており、
前記第１のプロセッサは、前記第１の信号線を介して、前記記憶領域情報を前記第２のプロセッサに通知すること
を特徴とする請求項１から８の何れか一項に記載の監視レコーダ。
【請求項１０】
前記第１のプロセッサ及び前記第２のプロセッサは、前記第１の信号線よりも高速にデータを伝送することのできる第２の信号線でさらに接続されており、
前記第１のプロセッサは、前記第２の信号線を介して、更新に用いるプログラムを前記第２のプロセッサに伝送すること
を特徴とする請求項９に記載の監視レコーダ。
【請求項１１】
前記第１のプロセッサが前記第１のプログラム又は前記第２のプログラムの起動を完了した後に、前記第２のプロセッサは、前記記憶領域情報を受け取ること
を特徴とする請求項１から１０の何れか一項に記載の監視レコーダ。
【請求項１２】
前記第１のプロセッサは、前記第２のプロセッサが前記記憶領域情報を受け取るまで、前記記憶領域情報を出力し続けること
を特徴とする請求項１１に記載の監視レコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視レコーダに関し、特に、複数のプロセッサを備える監視レコーダに関する。
【背景技術】
【０００２】
一般に、監視システムにおける映像記録再生装置である監視レコーダは、カメラから送信される映像データを大容量メモリに記録する記録系と、大容量メモリに記録された映像データを再生する再生系とを備える。【０００３】
特に、監視レコーダは、カメラから送信される映像データを記録し続けることが重要である。このため記録系のプロセッサである記録系ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と再生系のプロセッサである再生系ＣＰＵとを別個独立して備えることで、再生系ＣＰＵからの影響を受けることなく記録系ＣＰＵを動作させ続けることができる。【０００４】
監視レコーダでは、時々刻々と変化するセキュリティの脅威への対応、操作性の向上又は動作不具合への対応を目的として、プログラムの更新が必要となる。一方、記録系ＣＰＵと再生系ＣＰＵとで協調動作して監視レコーダとして正常に動作するために、記録系ＣＰＵ及び再生系ＣＰＵのそれぞれで実行するプログラムのバージョンが、正常動作することを検証済みの組み合わせとなっている必要がある。【０００５】
プログラムの更新処理が正常に終了しなかった場合、あるいは、新しく更新されたプログラム同士のバージョンが正常動作不可能な組み合わせとなっている場合等に、更新された新しいプログラムで起動すると、記録系ＣＰＵと再生系ＣＰＵとが正しく協調動作せず、正常に監視レコーダとして機能しないことがある。そのため、正常動作可能なプログラムの組み合わせとなるようなプログラム更新処理及び起動処理が必要となる。【０００６】
そこで、例えば、特許文献１に記載のソフトウエアバージョンアップ管理システムでは、複数のＣＰＵのメモリ内に格納するプログラムを、１つのＣＰＵでバージョンアップすると共に、バージョン番号を一元管理することで、各ＣＰＵで実行するプログラムが正常動作可能な組み合せとなるようにしている。【０００７】
また、特許文献２に記載されたマルチＣＰＵシステムでは、複数のＣＰＵのそれぞれについて、主バンクと蓄積バンクとを備え、更新プログラムを主バンクに、更新前のプログラムを蓄積バンクに格納する。システム起動時に、各ＣＰＵが自己のプログラムバージョンを他のＣＰＵに通知し、すべての主バンクのプログラムのバージョンが、正常動作可能な組み合せとなっていることを確認する。正常動作可能な組み合せとなっている場合、全てのＣＰＵは、主バンクのプログラムを起動する。正常動作可能な組み合せではない場合、更新前のプログラムと更新後のプログラムとが混在している状態のため、各ＣＰＵを再起動し、プログラム更新前のＣＰＵでは主バンクのプログラムを起動し、プログラム更新後のＣＰＵでは蓄積バンクに格納した更新前のプログラムを起動する。これにより、各ＣＰＵにおいて、正常動作可能な組み合せのプログラムが実行される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−１１７７６０号公報
【特許文献２】特開２００３−１６０４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載されたバージョンアップ管理システムでは、プログラムの更新処理の際にプログラムが正しく更新されなかった場合、システムが起動しなくなり、プログラムの更新処理の再実行も不可能な状態に陥る。そのような場合、メーカーの工場にて、専用のプログラム書き込み装置を使用して、プログラムを書き込み直す必要がある。【００１０】
また、特許文献２に記載されたマルチＣＰＵシステムにおいては、プログラムのバージョンを確認するために、まず、各々のＣＰＵは、自己のバージョンをメモリから読み出して特定の通信プロトコルに従って他方のＣＰＵに送信する。また、各々のＣＰＵは、他方のＣＰＵから送信されたバージョンを受信して、正常動作可能な組み合せとなっていることを確認する必要がある。起動時にこのような処理を行うためには、起動プログラム又はＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が正常に起動する必要がある。起動プログラム又はＯＳの起動時にエラーが発生した場合には、各々のＣＰＵは他方のＣＰＵのプログラムバージョンを確認できず、再起動しても、正常動作可能な組み合せのプログラムの実行が不可能である。【００１１】
そこで、本発明は、上記の課題を解決するためになされたものであり、プログラムが正しく更新されなかった場合でも、再度プログラムを更新することができ、また、プログラムのバージョン確認が不要で、複数ＣＰＵのそれぞれにおいて、正常動作可能な組み合せのプログラムを実行できるようにすることを目的としている。
【課題を解決するための手段】
【００１２】
本発明の一態様に係る監視レコーダは、第１のプロセッサと、前記第１のプロセッサを起動するために使用される第１のプログラムを記憶する第１の記憶領域、及び、当該第１のプログラムとバージョンが異なり、前記第１のプロセッサを起動するために使用される第２のプログラムを記憶する第２の記憶領域を有する第１の記憶部と、第２のプロセッサと、前記第２のプロセッサを起動するために使用され、前記第１のプログラムに対応する第３のプログラムを記憶する第３の記憶領域、及び、前記第２のプロセッサを起動するために使用され、前記第２のプログラムに対応する第４のプログラムを記憶する第４の記憶領域を有する第２の記憶部と、を備え、前記第１のプロセッサは、前記第１のプログラム又は前記第２のプログラムを使用して起動するとともに、前記第３の記憶領域及び第４の記憶領域の内、起動に必要なプログラムの記憶領域を示す記憶領域情報を前記第２のプロセッサに通知し、前記第２のプロセッサは、前記第１のプロセッサから通知された記憶領域情報に示されている記憶領域に記憶されているプログラムを使用して起動することを特徴とする。
【発明の効果】
【００１３】
本発明の一態様によれば、プログラムが正しく更新されなかった場合でも、再度プログラムを更新することができ、また、プログラムのバージョン確認が不要で、複数ＣＰＵのそれぞれにおいて、正常動作可能な組み合せのプログラムを実行することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係る監視レコーダの構成を概略的に示すブロック図である。
【図２】実施の形態１における記録系プログラム記憶部に記憶されているプログラムの一例を示す概略図である。
【図３】実施の形態１におけるプログラム管理領域の一例を示す概略図である。
【図４】実施の形態１における書き込み完了フラグの値の一例を示す概略図である。
【図５】実施の形態１における再生系プログラム記憶部に記憶されているプログラムの一例を示す概略図である。
【図６】実施の形態１における記録部の起動動作を示すフローチャートである。
【図７】実施の形態１における管理領域を選択する処理の一例を示すフローチャートである。
【図８】実施の形態１における起動面を決定する処理の一例を示すフローチャートである。
【図９】実施の形態１における再生部の起動動作を示すフローチャートである。
【図１０】実施の形態１における、記録部の起動動作と、再生部の起動動作との関係を示す概略図である。
【図１１】実施の形態１における監視レコーダのプログラム更新処理を示すフローチャートである。
【図１２】実施の形態１における監視レコーダのプログラム更新前から更新後までのタイミングを示す概略図である。
【発明を実施するための形態】
【００１５】
実施の形態１．
次に、図面を用いて、この発明の実施の形態を説明する。図面において、同一又は類似の部分には同一又は類似の符号を付している。但し、図面は模式的なものであり、各寸法の比率等は現実のものとは異なる。従って、具体的な寸法等は以下の説明を参酌して判断すべきものである。また、図面相互間においても互いの寸法の関係又は比率が異なる部分が含まれていることは勿論である。
【００１６】
図１は、実施の形態１に係る監視レコーダ１１０の構成を概略的に示すブロック図である。図１において、監視レコーダ１１０を含む監視システム１００は、監視レコーダ１１０以外に監視カメラとしての複数のカメラ１５０Ａ、１５０Ｂ、１５０Ｃ及び映像表示装置としての表示装置１６０を含む。
【００１７】
監視カメラは、第１のカメラ１５０Ａ、第２のカメラ１５０Ｂ及び第３のカメラ１５０Ｃからなり、それぞれが監視レコーダ１１０に接続されている。なお、第１のカメラ１５０Ａ、第２のカメラ１５０Ｂ及び第３のカメラ１５０Ｃの各々を特に区別する必要がない場合には、カメラ１５０という。カメラ１５０は、監視対象を撮影して得られた映像データを監視レコーダ１１０に送信する。カメラ１５０は、例えば、監視レコーダ１１０から離れた場所に設置されてもよい。
【００１８】
監視レコーダ１１０は、カメラ１５０から送信された映像データを受信し記録する映像記録再生装置として機能する。表示装置１６０は、監視レコーダ１１０に接続される出力装置であり、監視レコーダ１１０に記録された映像データに基づく記録映像、又は、カメラ１５０の撮影によって生成された映像データに基づく現在映像を表示する。なお、ここでカメラ１５０の台数を３台としたが、３台に限られないことはいうまでもない。例えば、１台、２台又は４台以上のいずれであってもよい。カメラ１５０と監視レコーダ１１０との接続は、データのやり取りが可能な接続であれば、有線及び無線の何れの接続方式でもよく、それらが混在した接続方式でもよい。また、ネットワーク又は他の中継装置を介した接続であってもよい。
【００１９】
図１に示されるように、監視レコーダ１１０は、通信Ｉ／Ｆ（ＩｎｔｅｒＦａｃｅ）部１１１と、出力Ｉ／Ｆ部１１２と、接続Ｉ／Ｆ部１１３と、第１システムとしての記録系である記録部１２０と、第２システムとしての再生系である再生部１３０と、プログラム起動制御部１４０と、通知部１４５とを備える。
【００２０】
通信Ｉ／Ｆ部１１１は、カメラ１５０との間の通信を行うインタフェースである。例えば、通信Ｉ／Ｆ部１１１は、カメラ１５０から送信された映像データを受信する。
出力Ｉ／Ｆ部１１２は、表示装置１６０との間の通信を行うインタフェースである。例えば、出力Ｉ／Ｆ部１１２は、表示装置１６０に再生データを出力する。
接続Ｉ／Ｆ部１１３は、外部記憶装置１７０を接続するためのインタフェースである。
【００２１】
記録部１２０は、通信Ｉ／Ｆ部１１１を介して、カメラ１５０から映像データを取得して、記録を行う。記録部１２０は、記録系プログラム記憶部１２１と、記録系ワークメモリ１２２と、情報格納部１２３と、第１のプロセッサとしての記録系ＣＰＵ１２４とを備える。
【００２２】
記録系プログラム記憶部１２１は、監視レコーダ１１０の電源が投入され記録系ＣＰＵ１２４が起動処理を開始するときに実行するプログラムを記憶する記憶部である。記録系プログラム記憶部１２１は、電源を落としても記憶内容が保持される不揮発のメモリにより実現できる。実施の形態１では、記録系ＣＰＵ１２４で実行されるプログラムは、ブートローダ、ＯＳ及び記録系ＡＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ）であるものとして説明する。
【００２３】
ブートローダは、ＯＳを起動するための処理を実行するプログラムである。例えば、ブートローダは、実行するＯＳの指定、ワークメモリの初期化及び起動ログの取得等を行う。さらに、ブートローダは、ＯＳに比べ機能が制限されており、一般的に複数の処理を並列的に処理することができない。ＯＳは、記録部１２０の全体を管理するための基本ソフトである。
【００２４】
記録系ＡＰは、例えば、カメラ１５０から送信された映像データを受け取り、情報格納部１２３に記録する動作を行うプログラム等を含む。記録系ＡＰは、ＯＳの起動後に、処理を開始することができる。また、ＯＳの起動後であれば、同じＡＰを複数同時に実行することができ、また、異なるＡＰを複数同時に実行することもできる。言い換えると、ＯＳ及び記録系ＡＰは、記録系ＣＰＵ１２４が予め定められた処理を行うためのプログラムである。
【００２５】
図２は、記録系プログラム記憶部１２１に記憶されているプログラムの一例を示す概略図である。
図示するように、記録系プログラム記憶部１２１は、記録系ブートローダ１２１ａと、プログラム管理領域１２１ｆと、第１の記憶領域としての第１の記録系プログラム領域１２１ｇと、第２の記憶領域としての第２の記録系プログラム領域１２１ｈとを有する。
また、第１の記録系プログラム領域１２１ｇは、第１の記録系ＯＳ１２１ｂと、第１の記録系ＡＰ１２１ｃとを有する。
第２の記録系プログラム領域１２１ｈは、第２の記録系ＯＳ１２１ｄと、第２の記録系ＡＰ１２１ｅとを有する。
なお、監視レコーダ１１０を起動する際に、第１の起動面が指定されている場合には、第１の記録系プログラム領域１２１ｇに記憶されているプログラム（第１のプログラム）が使用され、第２の起動面が指定されている場合には、第２の記録系プログラム領域１２１ｈに記憶されているプログラム（第２のプログラム）が使用される。
【００２６】
図３は、プログラム管理領域１２１ｆの一例を示す概略図である。
図示するように、プログラム管理領域１２１ｆは、第１の管理領域３０１と、第２の管理領域３０２とを有する。
また、第１の管理領域３０１及び第２の管理領域３０２は、書き込み完了フラグ３０３ａ、３０３ｂ（特に各々を区別する必要がないときは、書き込み完了フラグ３０３という）と、管理領域バージョン番号３０４ａ、３０４ｂ（特に各々を区別する必要がないときは、管理領域バージョン番号３０４という）と、記憶領域指定値としての起動面指定値３０５ａ、３０５ｂ（特に各々を区別する必要がないときは、起動面指定値３０５という）と、ＯＳバージョン番号３０６ａ、３０６ｂ（特に各々を区別する必要がないときは、ＯＳバージョン番号３０６という）と、ＡＰバージョン番号３０７ａ、３０７ｂ（特に各々を区別する必要がないときは、ＡＰバージョン番号３０７という）と、ＣＲＣ値３０８ａ、３０８ｂ（特に各々を区別する必要がないときは、ＣＲＣ値３０８という）とを有する。
監視レコーダ１１０は、第１の管理領域３０１と第２の管理領域３０２という２つの領域を設けることにより冗長性を持たせ、一方の領域の内容が壊れた場合でも他方の領域の情報により、起動することができる。
【００２７】
記録部１２０で使用する記録系ＯＳ及び記録系ＡＰは、セキュリティ対策、性能向上、操作性向上又は不具合の改修等の理由により、更新される。プログラムの更新は、実行中の記録系ＯＳ及び記録系ＡＰが格納されたプログラム領域とは異なるプログラム領域の記録系ＯＳ及び記録系ＡＰを書き換えることにより行われる。例えば、記録系ＣＰＵ１２４が、第１の記録系プログラム領域１２１ｇに格納された第１の記録系ＯＳ１２１ｂ及び第１の記録系ＡＰ１２１ｃを実行している場合、第２の記録系プログラム領域１２１ｈ内の第２の記録系ＯＳ１２１ｄ及び第２の記録系ＡＰ１２１ｅが新しいプログラムに書き換えられる。
この場合、第１の記録系ＯＳ１２１ｂ及び第１の記録系ＡＰ１２１ｃは、第２の記録系ＯＳ１２１ｄ及び第２の記録系ＡＰ１２１ｅの古いバージョンのプログラムとなる。古いバージョンのプログラムは、既に処理が実行されており、後述する再生部１３０と互換性のとれた、安定して実行することのできるプログラムである。従って、記録系ＣＰＵ１２４は、起動時に、前回起動した第１の記録系ＯＳ１２１ｂ及び第１の記録系ＡＰ１２１ｃで起動するか、又は、新しく更新された第２の記録系ＯＳ１２１ｄ及び第２の記録系ＡＰ１２１ｅで起動するかを選択する。この選択のための基となる起動面指定値３０５が、プログラム管理領域１２１ｆに格納されている。プログラムの更新の際には、新しく更新されたＯＳ及びＡＰを選択するようにプログラム管理領域１２１ｆが書き換えられる。
【００２８】
プログラム管理領域１２１ｆは、プログラム更新の度に、内容が更新される。プログラム管理領域１２１ｆについて詳細を以下に説明する。
【００２９】
書き込み完了フラグ３０３は、プログラム更新の状況を示すフラグである。
図４は、書き込み完了フラグの値の一例を示す概略図である。図４の例では、書き込み完了フラグが「０ｘｆｆｆｆｆｆｆｆ」のときには、プログラム更新の途中であることを示す。また、書き込み完了フラグが「０ｘ０００００００００」のときには、プログラムの更新が完了し、すでに１回以上、監視レコーダ１１０が起動されたことを示している。さらに、書き込み完了フラグが「０ｘ８０００００００」のときには、プログラムの更新が完了したものの、まだ１度も監視レコーダ１１０が起動されていないことを示している。
この例の場合、プログラムの更新開始の際に、書き込み完了フラグが「０ｘｆｆｆｆｆｆｆｆ」に変更され、プログラム更新が完了した時点で、書き込み完了フラグが「０ｘ８０００００００」に変更される。次に、監視レコーダ１１０が正常に起動した時点で、書き込み完了フラグが「０ｘ００００００００」に変更される。このようにすることで、記録系ＣＰＵ１２４は、書き込み完了フラグ３０３により、プログラム更新の状況を判断することができる。
【００３０】
管理領域バージョン番号３０４は、それぞれの管理領域（第１の管理領域３０１又は第２の管理領域３０２）のバージョンを示すためのバージョン番号である。例えば、最初のプログラム書き込みの際に、「０」を書き込まれ、それ以降のプログラム更新の際に「１」ずつインクリメントした値が書き込まれる。これにより、第１の管理領域３０１の管理領域バージョン番号３０４ａと第２の管理領域３０２の管理領域バージョン番号３０４ｂとを比較することにより、どちらが最新のものであるかを判定することが可能となる。
【００３１】
起動面指定値３０５は、記録系プログラム記憶部１２１内の第１の記録系プログラム領域１２１ｇ及び第２の記録系プログラム領域１２１ｈのいずれの領域のプログラムを用いて起動するかを示すための値である。また、起動面指定値３０５は、後述する、再生系プログラム記憶部１３１内の第１の再生系プログラム領域１３１ｇ及び第２の再生系プログラム領域１３１ｈのいずれの領域のプログラムを用いて起動するかを示すための値でもある。
仮に、記録系プログラム記憶部１２１と再生系プログラム記憶部１３１のそれぞれに、起動に用いるプログラム領域を示す起動面指定値３０５を持たせた場合、起動面指定値３０５の書き込み誤り、又は、経年劣化による起動面指定値３０５の値の変化により、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３で想定しない組み合せのプログラムを使用する可能性がある。これに対し、本実施の形態では、記録部１２０と再生部１３０とで共通の起動面指定値３０５を使用するため、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３で起動面の不整合が発生しないようにすることができる。
【００３２】
起動面指定値３０５が、例えば、「０ｘｆｆｆｆｆｆｆｆ」のとき、記録系ＣＰＵ１２４は、記録系プログラム記憶部１２１内の第１の記録系プログラム領域１２１ｇのプログラムを用いて起動する。また、後述するように、再生系ＣＰＵ１３３は、再生系プログラム記憶部１３１内の第１の再生系プログラム領域１３１ｇのプログラムを用いて起動する。便宜的に、ここでは、第１の記録系プログラム領域１２１ｇと第１の再生系プログラム領域１３１ｇを第１の起動面と表現する。
起動面指定値３０５が、例えば、「０ｘ００００００００」のとき、記録系ＣＰＵ１２４は、記録系プログラム記憶部１２１内の第２の記録系プログラム領域１２１ｈのプログラムを用いて起動する。また、再生系ＣＰＵ１３３は、後述するように、再生系プログラム記憶部１３１内の第２の再生系プログラム領域１３１ｈのプログラムを用いて起動する。便宜的に、ここでは、第２の記録系プログラム領域１２１ｈと第２の再生系プログラム領域１３１ｈを第２の起動面と表現する。
起動面指定値３０５は、ここに記載した例のように、多ビットの値として冗長性を持たせることにより、数ビットのデータ化けが発生しても、起動面を正しく選択することが可能となる。
【００３３】
ＯＳバージョン番号３０６は、記録系プログラム記憶部１２１内に格納する第１の記録系ＯＳ１２１ｂ又は第２の記録系ＯＳ１２１ｄのバージョン番号を示す。
また、ＡＰバージョン番号３０７は、記録系プログラム記憶部１２１内に格納する第１の記録系ＡＰ１２１ｃ又は第２の記録系ＡＰ１２１ｅのバージョン番号を示す。
ただし、これらのＯＳとＡＰのバージョン番号は、起動するプログラムの選択の際には使用せず、ＡＰにてプログラムのバージョンを管理する際に使用するためのものである。
【００３４】
ＣＲＣ値３０８は、管理領域（第１の管理領域３０１又は第２の管理領域３０２）の情報が壊れておらず正常であること、言い換えると、管理領域の誤りを確認するためのチェック値である。
第１の管理領域３０１の情報が正常であることの確認のためには、第１の管理領域３０１内のＣＲＣ値３０８ａが使用され、第２の管理領域３０２の情報が正常であることの確認のためには、第２の管理領域３０２内のＣＲＣ値３０８ｂが使用される。
第１の管理領域３０１内のＣＲＣ値３０８ａは、例えば、第１の管理領域３０１内の書き込み完了フラグ３０３ａと、管理領域バージョン番号３０４ａと、起動面指定値３０５ａと、ＯＳバージョン番号３０６ａと、ＡＰバージョン番号３０７ａとが格納されている領域の値に基づいて計算される。
ここで、ＣＲＣ値を計算するためのＣＲＣ多項式としては、例えば、ｘ＾１６＋ｘ＾１２＋ｘ＾５＋１を使用する。ただし、＾はべき乗を表すものとする。またＣＲＣ多項式としては、この多項式に限らず、他の多項式としても良い。
このＣＲＣ値３０８を使用して、第１の管理領域３０１と第２の管理領域３０２のそれぞれの情報が壊れているかどうかを確認することが可能である。なおＣＲＣ値３０８は、第１の管理領域３０１内の書き込み完了フラグ３０３ａ、管理領域バージョン番号３０４ａ、起動面指定値３０５ａ、ＯＳバージョン番号３０６ａ及びＡＰバージョン番号３０７ａ等、ＣＲＣ計算対象領域の情報の少なくとも１つ、又は、複数が更新される度に、再度計算され、新しいＣＲＣ値により更新されるものとする。
【００３５】
以下、プログラム管理領域１２１ｆに記憶されている情報をプログラム管理情報といい、第１の管理領域３０１に記憶されている情報を第１のプログラム管理情報といい、第２の管理領域３０２に記憶されている情報を第２のプログラム管理情報という場合がある。
【００３６】
以下では、第１の記録系ＯＳ１２１ｂ及び第１の記録系ＡＰ１２１ｃを第１の記録系プログラム（第１のプログラム）といい、第２の記録系ＯＳ１２１ｄ及び第２の記録系ＡＰ１２１ｅを第２の記録系プログラム（第２のプログラム）という場合もある。
【００３７】
プログラムの更新は、監視レコーダ１１０の接続Ｉ／Ｆ部１１３に外部記憶装置１７０を接続し、データを読み出すことで行われる。外部記憶装置１７０は、例えば、ＵＳＢメモリのような記憶媒体であってもよいし、ネットワークに接続されたコンピュータ等の情報処理装置であってもよい。
【００３８】
図１に戻り、カメラ１５０は、監視レコーダ１１０から電源の投入制御を行うことが可能であり、監視レコーダ１１０の電源投入以降の起動処理中に記録部１２０から送信される制御信号によって起動を開始する。
【００３９】
記録系ワークメモリ１２２は、記録系ＣＰＵ１２４が作業領域として使用するメモリである。記録系ワークメモリ１２２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。記録系ＣＰＵ１２４は、ＯＳ又はＡＰ等を記録系プログラム記憶部１２１から読み出し、記録系ワークメモリ１２２に書き込んだ上で実行し、記録部１２０の動作を制御する。
【００４０】
情報格納部１２３は、カメラ１５０で撮影された映像の映像データを記録する情報記憶部である。情報格納部１２３は、例えば、フラッシュメモリ又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）といった記憶媒体で構成される。なお、情報格納部１２３は、記録部１２０の外部、又は、監視レコーダ１１０の外部に切り離して独立に構成されてもよい。また、情報格納部１２３は、監視レコーダ１１０に、着脱可能に構成されてもよい。
【００４１】
記録系ＣＰＵ１２４は、記録系プログラム記憶部１２１に記憶されている第１の記録系プログラム又は第２の記録系プログラムを起動して、記録部１２０での処理を制御する記録系の処理部である。記録系ＣＰＵ１２４は、監視レコーダ１１０の電源が投入され、プログラム起動制御部１４０から起動処理開始の命令が発行されると、その命令に従い起動処理を順次実行する。また、記録系ＣＰＵ１２４は、自己の起動処理だけでなく、例えば、カメラ１５０の起動を制御する機能も有する。記録系ＣＰＵ１２４は、自己の起動状況だけでなく、記録系ＣＰＵ１２４が起動制御を行うものの起動状況を示す情報を、例えば、プログラム起動制御部１４０又は情報格納部１２３に出力する機能を有する。
さらに、記録系ＣＰＵ１２４は、監視レコーダ１１０の電源投入時に、記録系プログラム記憶部１２１から、ＯＳ又はＡＰ等を、記録系ワークメモリ１２２に読み出して実行し、記録部１２０の起動動作を制御する。
【００４２】
信号線１８０は、記録系ＣＰＵ１２４で決定した、起動に必要なプログラムの記憶領域を示す記憶領域情報としての起動面情報を再生系ＣＰＵ１３３に伝えるための信号線である。起動面情報は、２つのプログラム領域の何れかを選択して、そこに格納されたプログラムを実行するための情報であるため、信号線１８０は、１度に１ビットのデータを伝達可能な信号線である。起動面情報は、１回の起動につき、１回更新されるだけの情報であるため、信号線１８０は、低速の信号線により実現できる。また、記録系ＣＰＵ１２４から再生系ＣＰＵ１３３に向けて起動面情報を伝達できれば良いため、単方向の信号線により実現できる。そのため、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３において、信号線１８０が接続されるポートとして、送受信可能な双方向ポートは不要である。記録系ＣＰＵ１２４は送信ポート、再生系ＣＰＵ１３３は受信ポートのみ備えていれば良い。
【００４３】
信号線１８１は、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３の両方が起動完了した後で、ＣＰＵ間で通信するための双方向の信号線である。信号線１８１は、信号線１８０に比較して大容量のデータを高速に伝送することが可能な信号線により構成する。信号線１８１は、例えば、イーサネット（登録商標）により実現できる。
【００４４】
システムが起動完了するまでは、信号線１８１による高速通信は使用できないため、信号線１８０により起動に必要な情報を記録系ＣＰＵ１２４から再生系ＣＰＵ１３３へ伝達することができる。また、システムが起動した後は、信号線１８１により、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３の間でデータを高速に伝送することができる。
【００４５】
プログラム更新の際に、記録系ＣＰＵ１２４から再生系ＣＰＵ１３３に新しいプログラムを伝送する必要がある。また、再生系ＣＰＵ１３３が受信した新しいプログラムを再生系プログラム記憶部１３１に書き込んだ後に、再生系ＣＰＵ１３３から記録系ＣＰＵ１２４に書き込み完了を通知する必要がある。プログラムの更新は、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３の両方が起動完了し、信号線１８１によるＣＰＵ間通信も有効となった後で実施される。このため、信号線１８１により、新しいプログラムの伝送、再生系ＣＰＵ１３３での新しいプログラムの書き込み完了を通知することができる。
【００４６】
再生部１３０は、記録部１２０内の情報格納部１２３に記録された映像データに基づいて、映像を再生した再生データを生成して、この再生データを表示装置１６０に送り、映像データに基づく映像を表示装置１６０に表示させる。再生部１３０は、カメラ１５０によって撮影された映像データに基づく映像をリアルタイムで表示装置１６０に表示させることもできる。再生部１３０は、再生系プログラム記憶部１３１と、再生系ワークメモリ１３２と、第２のプロセッサとしての再生系ＣＰＵ１３３とを備える。
【００４７】
再生系プログラム記憶部１３１は、監視レコーダ１１０の電源が投入され再生系ＣＰＵ１３３が起動処理を開始するときに実行するプログラムが記憶されている記憶部である。実施の形態１では、再生系ＣＰＵ１３３で実行されるプログラムは、ブートローダ、ＯＳ及び再生系ＡＰであるものとして説明する。
【００４８】
ブートローダは、上述のように、ＯＳを起動するための処理を実行するプログラムである。ＯＳは、再生部１３０の全体を管理するための基本ソフトである。
再生系ＡＰは、例えば、情報格納部１２３に記録された映像データを複数読み出し、読み出した複数の映像データに基づいて、複数の映像を表示装置１６０に並べて表示させるプログラムである。再生系ＡＰは、ＯＳが起動後に、処理を開始することができる。また、ＯＳの起動後であれば、同じＡＰを複数同時に実行することができ、また、異なるＡＰを複数同時に実行することもできる。
【００４９】
図５は、再生系プログラム記憶部１３１に記憶されているプログラムの一例を示す概略図である。
図示するように、再生系プログラム記憶部１３１は、再生系ブートローダ１３１ａと、第３の記憶領域としての第１の再生系プログラム領域１３１ｇと、第４の記憶領域としての第２の再生系プログラム領域１３１ｈとを有する。第１の再生系プログラム領域１３１ｇは、第１の再生系ＯＳ１３１ｂと、第１の再生系ＡＰ１３１ｃとを有する。第２の再生系プログラム領域１３１ｈは、第２の再生系ＯＳ１３１ｄと、第２の再生系ＡＰ１３１ｅとを有する。
【００５０】
再生部１３０で使用する再生系ＯＳ及び再生系ＡＰは、セキュリティ対策、性能向上、操作性向上又は不具合の改修等の理由により、更新される。プログラムの更新は、実行中の再生系ＯＳ及び再生系ＡＰが格納されたプログラム領域とは異なるプログラム領域の再生系ＯＳ及び再生系ＡＰを書き換えることにより行われる。例えば、再生系ＣＰＵ１３３が、第１の再生系プログラム領域１３１ｇに格納された第１の再生系ＯＳ１３１ｂ及び第１の再生系ＡＰ１３１ｃを実行している場合、第２の再生系プログラム領域１３１ｈ内の第２の再生系ＯＳ１３１ｄ及び第２の再生系ＡＰ１３１ｅが新しいプログラムに書き換えられる。
この場合、第１の再生系ＯＳ１３１ｂ及び第１の再生系ＡＰ１３１ｃは、第２の再生系ＯＳ１３１ｄ及び第２の再生系ＡＰ１３１ｅの古いバージョンのプログラムである。古いバージョンのプログラムは、既に処理が実行されており、記録部１２０と互換性のとれた、安定して実行することのできるプログラムである。従って、再生系ＣＰＵ１３３は、起動時に、前回起動した第１の再生系ＯＳ１３１ｂ及び第１の再生系ＡＰ１３１ｃで起動するか、又は、新しく更新された第２の再生系ＯＳ１３１ｄ及び第２の再生系ＡＰ１３１ｅで起動するかを選択する。この選択のために、再生系ＣＰＵ１３３は、記録系ＣＰＵ１２４が出力した起動面情報を受信して使用する。
【００５１】
以下では、第１の再生系ＯＳ１３１ｂ及び第１の再生系ＡＰ１３１ｃを第１の再生系プログラム（第３のプログラム）といい、第２の再生系ＯＳ１３１ｄ及び第２の再生系ＡＰ１３１ｅを第２の再生系プログラム（第４のプログラム）という場合もある。
【００５２】
記録系ＣＰＵ１２４から再生系ＣＰＵ１３３へ起動面情報を伝える構成としているため、再生系プログラム記憶部１３１は、起動面に関する情報を格納しておくためのプログラム管理領域を必要としない。そのため、再生系プログラム記憶部１３１は、プログラム管理領域がある場合に比べて、記憶容量を小さくすることが可能となる。また、再生系プログラム記憶部１３１に格納したプログラムの更新の際に、再生系プログラム記憶部１３１内のプログラム管理領域への書き込みが不要となるため、プログラム更新の時間を短縮することができる。
【００５３】
図１に戻り、再生系ワークメモリ１３２は、再生系ＣＰＵ１３３が作業領域として使用するメモリである。再生系ワークメモリ１３２は、例えば、ＲＡＭである。再生系ＣＰＵ１３３は、ＯＳ又はＡＰ等を再生系プログラム記憶部１３１から読み出し、再生系ワークメモリ１３２に書き込んだ上で実行し、再生部１３０の起動動作を制御する。
【００５４】
再生系ＣＰＵ１３３は、再生系プログラム記憶部１３１に記憶されている第１の再生系プログラム又は第２の再生系プログラムを起動して、再生部１３０での処理を制御する再生系の処理部である。再生系ＣＰＵ１３３は、監視レコーダ１１０の電源が投入され、プログラム起動制御部１４０から起動処理開始の命令が発行されると、その命令に従い起動処理を順次実行する。
【００５５】
プログラム起動制御部１４０は、監視レコーダ１１０での起動処理、言い換えると、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３における起動処理を制御する。例えば、プログラム起動制御部１４０は、監視レコーダ１１０の電源が投入されると、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３の起動状況を確認する。そして、プログラム起動制御部１４０は、それぞれに対し起動処理開始命令を発行する。プログラム起動制御部１４０は、予め記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３の起動動作における情報、例えば、起動処理の順序を記憶しており、正しくその順序で起動動作が進むように起動状況を確認し、起動処理命令を発行する。
【００５６】
また、プログラム起動制御部１４０は、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３の少なくとも何れか一方の起動にエラーが生じた場合には、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３を再起動させる。例えば、プログラム起動制御部１４０は、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が起動状況を通知してからの経過時間を計測しており、次の起動状況を通知するまでに予め定められた時間を経過した場合には、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３を再起動させるためのリセット信号を出力する。
さらに、プログラム起動制御部１４０は、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３を再起動させる際には、記録系ＣＰＵ１２４に、起動面指定値３０５で指定される起動面とは別の起動面に記憶されているプログラムを使用して起動するように指示する。例えば、プログラム起動制御部１４０は、監視レコーダ１１０の再起動を行う際には、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が再起動を行うプログラムを動作実績のある古いバージョンに戻すために、起動面変更フラグの値を変更して出力する。プログラム起動制御部１４０は、記録系ＣＰＵ１２４が最新のバージョンである第２の記録系プログラムの起動に失敗した場合、又は、再生系ＣＰＵ１３３が最新のバージョンである第２の再生系プログラムの起動に失敗した場合には、記録系ＣＰＵ１２４を再起動させ、記録系ＣＰＵ１２４に古いバージョンの第１の記録系プログラムを実行させるとともに、再生系ＣＰＵ１３３を再起動させ、再生系ＣＰＵ１３３に古いバージョンの第１の再生系プログラムを実行させる。これによりプログラムの更新に失敗して、最新のプログラムで起動できなくなっても、古いプログラムで再度起動して、再度プログラムの更新を行うことが可能となる。なお、第１の記録系プログラム及び第１の再生系プログラムが最新である場合には、プログラム起動制御部１４０は、古いバージョンのプログラムとして、記録系ＣＰＵ１２４に第２の記録系プログラムを、再生系ＣＰＵ１３３に第２の再生系プログラムを実行させる。
【００５７】
なお、プログラム起動制御部１４０についても、図示しないＣＰＵを備えることにより実現することができる。また、プログラム起動制御部１４０は、フラグ等の情報を記憶するためのメモリ１４０ａを備えている。このメモリ１４０ａは、揮発性のメモリであっても、不揮発性のメモリであってもよい。また、プログラム起動制御部１４０は、図示しないＣＰＵの代わりに、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）等のプログラマブルロジックデバイスにより実現することもできる。
【００５８】
通知部１４５は、起動エラーが生じたことを通知する。例えば、通知部１４５は、ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）を備え、その点灯により起動エラーが生じたことを通知する。
【００５９】
以下に、実施の形態１に係る監視レコーダ１１０の動作、すなわち、監視レコーダ１１０の起動制御方法について説明する。
【００６０】
まず、実施の形態１に係る監視レコーダ１１０の記録部１２０の起動動作を説明する。
図６は、記録部１２０の起動動作を示すフローチャートである。
まず、電源が投入されると、記録系ＣＰＵ１２４は、記録系プログラム記憶部１２１に記憶されている記録系ブートローダ１２１ａに書かれた処理を起動する（Ｓ１０）。
【００６１】
記録系ブートローダ１２１ａにより、記録系ＣＰＵ１２４は、記録系ワークメモリ１２２等のＨ／Ｗ回路を初期設定する（Ｓ１１）。
【００６２】
次に、記録系ＣＰＵ１２４は、プログラム管理領域１２１ｆ内の第１の管理領域３０１及び第２の管理領域３０２の何れかを選択する（Ｓ１２）。ここでの処理は、図７を用いて詳細に説明する。
【００６３】
次に、記録系ＣＰＵ１２４は、起動面を決定する（Ｓ１３）。ここでの処理は、図８を用いて詳細に説明する。
【００６４】
次に、記録系ＣＰＵ１２４は、ステップＳ１３で決定した起動面を起動面情報として、信号線１８０を介して、再生部１３０に出力する（Ｓ１４）。
【００６５】
次に、記録系ＣＰＵ１２４は、ステップＳ１３で決定した起動面により、第１の記録系プログラム領域１２１ｇ及び第２の記録系プログラム領域１２１ｈの何れかを選択し、選択したプログラム領域内に格納されているＯＳを起動する（Ｓ１５）。
【００６６】
ＯＳの起動が完了したら、記録系ＣＰＵ１２４は、ＯＳ起動完了通知を出力する（Ｓ１６）。ここで出力される完了通知は、例えば、図１のプログラム起動制御部１４０経由で、再生系ＣＰＵ１３３へ通知される。
【００６７】
次に、記録系ＣＰＵ１２４は、ステップＳ１５にて選択されたプログラム領域内に格納されているＡＰを起動する（Ｓ１７）。
なお、記録系ＣＰＵ１２４は、起動に使用した管理領域の書き込み完了フラグ３０３の値が「０ｘ８０００００００」である場合には、起動完了後に、その値を「０ｘ００００００００」に変更するとともに、そのＣＲＣ値３０８を再度計算して、更新する。
【００６８】
以上に記載したような手順により、記録部１２０が起動する。次に、図６の管理領域選択（ステップＳ１２）について詳細に説明する。
図７は、管理領域選択での処理内容の一例を示すフローチャートである。
【００６９】
まず、記録系ＣＰＵ１２４は、プログラム管理領域１２１ｆ内の第１の管理領域３０１及び第２の管理領域３０２のＣＲＣチェックを実施し、両方の領域のＣＲＣチェック結果がＮＧか否かを確認する（Ｓ２０）。第１の管理領域３０１のＣＲＣチェックは、例えば、第１の管理領域３０１内の、書き込み完了フラグ３０３ａ、管理領域バージョン番号３０４ａ、起動面指定値３０５ａ、ＯＳバージョン番号３０６ａ及びＡＰバージョン番号３０７ａが格納されている領域のＣＲＣ値を計算し、計算の結果得られたＣＲＣ値と、第１の管理領域３０１内のＣＲＣ値３０８ａを比較することにより行われる。計算の結果得られたＣＲＣ値と、第１の管理領域３０１内のＣＲＣ値３０８ａとが一致していれば、ＣＲＣチェックＯＫと判定し、不一致の場合はＣＲＣチェックＮＧと判定する。第２の管理領域３０２のＣＲＣチェックも、第１の管理領域３０１のＣＲＣチェックと同様に行われる。両方の領域のＣＲＣチェック結果がＮＧの場合（Ｓ２０でＹＥＳ）には、プログラム管理領域１２１ｆが無効であると判断し、処理はステップＳ３１（管理領域ＮＧ）へ進む。それ以外の場合（Ｓ２０でＮＯ）には、処理はステップＳ２１へ進む。
【００７０】
ステップＳ２１では、記録系ＣＰＵ１２４は、第１の管理領域３０１のＣＲＣチェックがＯＫ、かつ、第２の管理領域３０２のＣＲＣチェックがＮＧであるか否かを確認する。第１の管理領域３０１のＣＲＣチェックがＯＫ、かつ、第２の管理領域３０２のＣＲＣチェックがＮＧの場合（Ｓ２１でＹＥＳ）には、処理はステップＳ２９（第１の管理領域を使用）へ進む。それ以外の場合（Ｓ２１でＮＯ）には、処理はステップＳ２２へ進む。
【００７１】
ステップＳ２２では、記録系ＣＰＵ１２４は、第１の管理領域３０１のＣＲＣチェックがＮＧ、かつ、第２の管理領域３０２のＣＲＣチェックがＯＫであるか否かを確認する。第１の管理領域３０１のＣＲＣチェックがＮＧ、かつ、第２の管理領域３０２のＣＲＣチェックがＯＫの場合（Ｓ２２でＹＥＳ）、処理はステップＳ３０（第２の管理領域を使用）へ進む。それ以外の場合（Ｓ２２でＮＯ）、処理はステップＳ２３へ進む。
【００７２】
ステップＳ２３では、記録系ＣＰＵ１２４は、第１の管理領域３０１及び第２の管理領域３０２内に格納された管理領域バージョン番号３０４が、ともに「０ｘｆｆｆｆｆｆｆｆ」であるか否かを確認する。記録系プログラム記憶部１２１がフラッシュメモリ等の不揮発メモリにより構成される場合、第１の管理領域３０１及び第２の管理領域３０２に管理領域バージョン番号３０４が書き込まれていないときは、初期値「０ｘｆｆｆｆｆｆｆｆ」の状態となる。管理領域バージョン番号３０４がともに初期値の場合（Ｓ２３でＹＥＳ）、処理はステップＳ２９（第１の管理領域を使用）へ進む。それ以外の場合（Ｓ２３でＮＯ）、処理はステップＳ２４へ進む。
【００７３】
ステップＳ２４では、記録系ＣＰＵ１２４は、第１の管理領域３０１内の書き込み完了フラグ３０３ａが、無効であるか否かを確認する。例えば、プログラム更新中は、書き込み完了フラグ３０３の値は「０ｘｆｆｆｆｆｆｆｆ」である。また、プログラム更新後の初回起動までは、書き込み完了フラグ３０３の値は「０ｘ８０００００００」である。さらに、プログラム更新後の初回起動以降は、書き込み完了フラグ３０３の値は「０ｘ００００００００」である。第１の管理領域３０１内の書き込み完了フラグ３０３ａが、これらのいずれの値でも無く、無効である場合（Ｓ２４でＹＥＳ）には、処理はステップＳ３０（第２の管理領域を使用）へ進む。それ以外の場合（Ｓ２４でＮＯ）、処理はステップＳ２５へ進む。
【００７４】
ステップＳ２５では、記録系ＣＰＵ１２４は、第２の管理領域３０２がプログラム更新中であるか否かを確認する。第２の管理領域３０２内の書き込み完了フラグ３０３ｂの値が、例えば、「０ｘｆｆｆｆｆｆｆｆ」で書き込み途中の場合（Ｓ２５でＹＥＳ）には、処理はステップＳ２９（第１の管理領域を使用）へ進む。それ以外の場合（Ｓ２５でＮＯ）には、処理はステップＳ２６へ進む。
【００７５】
ステップＳ２６では、記録系ＣＰＵ１２４は、第１の管理領域３０１がプログラム更新中であるか否かを確認する。第１の管理領域３０１内の書き込み完了フラグ３０３ａの値が、例えば、「０ｘｆｆｆｆｆｆｆｆ」で書き込み途中の場合（Ｓ２６でＹＥＳ）、処理はステップＳ３０（第２の管理領域を使用）へ進む。それ以外の場合（Ｓ２６でＮＯ）、処理はステップＳ２７へ進む。
【００７６】
ステップＳ２７では、記録系ＣＰＵ１２４は、第２の管理領域３０２内の書き込み完了フラグ３０３ｂが、無効であるか否かを確認する。ステップＳ２４で説明したように、書き込み完了フラグ３０３は、予め定められた複数の値の何れかである。このため、第２の管理領域３０２内の書き込み完了フラグ３０３ｂが、これらの何れの値でも無く、無効である場合（Ｓ２７でＹＥＳ）、処理はステップＳ２９（第１の管理領域を使用）へ進む。それ以外の場合（Ｓ２７でＮＯ）、処理はステップＳ２８へ進む。
【００７７】
ステップＳ２８では、記録系ＣＰＵ１２４は、第１の管理領域３０１の管理領域バージョン番号３０４ａと、第２の管理領域３０２の管理領域バージョン番号３０４ｂとを比較する。管理領域バージョン番号３０４ａが管理領域バージョン番号３０４ｂより小さい場合（Ｓ２８でＹＥＳ）、処理はステップＳ３０（第２の管理領域を使用）へ進む。それ以外の場合（Ｓ２８でＮＯ）、ステップＳ２９（第１の管理領域を使用）へ進む。
【００７８】
ステップＳ２９では、記録系ＣＰＵ１２４は、第１の管理領域３０１及び第２の管理領域３０２のうち、第１の管理領域３０１を選択して使用することを決定する。
【００７９】
ステップＳ３０では、記録系ＣＰＵ１２４は、第１の管理領域３０１及び第２の管理領域３０２のうち、第２の管理領域３０２を選択して使用することを決定する。
【００８０】
ステップＳ３１では、記録系ＣＰＵ１２４は、第１の管理領域３０１及び第２の管理領域３０２の両方が無効であるとして、システムの起動停止を決定する。なお、ステップＳ３１にて、装置の仕様によっては、システムの起動停止を決定する代わりに、強制的に何れか一方の管理領域、例えば、第１の管理領域３０１を使用するとしてもよい。
【００８１】
以上のようにして、図６の管理領域選択（ステップＳ１２）では、管理領域を選択する。以上に記載したように、ＣＲＣ値３０８を使用して第１の管理領域３０１と第２の管理領域３０２のＣＲＣチェックを行うことにより、第１の管理領域３０１又は第２の管理領域３０２に格納された情報が壊れている場合、壊れていない方の管理領域の情報を使用して起動することができる。
【００８２】
また、書き込み完了フラグ３０３で示される状態により、第１の管理領域３０１又は第２の管理領域３０２のうち、プログラム更新が完了していない領域の情報は使用せず、プログラム更新が完了した領域の情報を使用して起動することができる。
【００８３】
また、第１の管理領域３０１又は第２の管理領域３０２のうち、管理領域バージョン番号３０４の値が大きい方の領域を選択して使用することにより、最新の管理情報での起動が可能となる。
【００８４】
次に、図６の起動面決定（ステップＳ１３）について詳細に説明する。
図８は、起動面決定での処理内容の一例を示すフローチャートである。
【００８５】
ステップＳ４０では、記録系ＣＰＵ１２４は、図３に示されている第１の管理領域３０１及び第２の管理領域３０２のうち、図６の管理領域選択（ステップＳ１２）にて選択された管理領域から、起動面指定値３０５を読み出す。
【００８６】
ステップＳ４１では、記録系ＣＰＵ１２４は、ステップＳ４０で読み出された起動面指定値３０５を２進数で表現したときに、値が「１」であるビットの数を数える。例えば、起動面指定値３０５が「０ｘｆｆｆｆｆｆｆｆ」の場合、２進数で表現すると「１１１１１１１１  １１１１１１１１  １１１１１１１１  １１１１１１１１」となるため、値が「１」であるビットの数は「３２」となる。
【００８７】
ステップＳ４２では、記録系ＣＰＵ１２４は、ステップＳ４１で数えたビットの数が、予め定められたしきい値（例えば、１６）以上であるか否かを判断する。そのビットの数が予め定められたしきい値以上である場合（Ｓ４２でＹＥＳ）には、処理はステップＳ４３（第１の起動面に仮決め）に進む。それ以外の場合（Ｓ４２でＮＯ）には、処理はステップＳ４６（第２の起動面に仮決め）に進む。このようにして起動面の仮決めを行うことにより、起動面指定値３０５の情報が、数ビット壊れている場合でも、正しく起動面を選択することが可能となる。
【００８８】
ステップＳ４３では、記録系ＣＰＵ１２４は、起動面を第１の起動面に仮決めする。
ステップＳ４４では、記録系ＣＰＵ１２４は、プログラム起動制御部１４０から入力される起動面変更フラグが「１」であるか否かを判断する。起動面変更フラグが「１」の場合（Ｓ４４でＹＥＳ）には、起動面を反転するために、処理はステップＳ４８（第２の起動面に決定）に進む。それ以外の場合（Ｓ４４でＮＯ）には、処理はステップＳ４５（第１の起動面に決定）に進む。
【００８９】
ステップＳ４６では、記録系ＣＰＵ１２４は、起動面を第２の起動面に仮決めする。
ステップＳ４７では、記録系ＣＰＵ１２４は、プログラム起動制御部１４０から入力される起動面変更フラグが「１」であるか否かを判断する。起動面変更フラグが「１」の場合（Ｓ４７でＹＥＳ）には、起動面を反転するために、処理はステップＳ４５（第１の起動面に決定）に進む。それ以外の場合（Ｓ４７でＮＯ）には、処理はステップＳ４８（第２の起動面に決定）に進む。
【００９０】
ステップＳ４５では、記録系ＣＰＵ１２４は、起動面を第１の起動面に決定する。
一方、ステップＳ４８では、記録系ＣＰＵ１２４は、起動面を第２の起動面に決定する。
【００９１】
以上のようにして、図６の起動面決定（ステップＳ１３）では、起動面を決定する。このようにして起動面を決定することにより、プログラム起動制御部１４０から出力される起動面変更フラグにより、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３の起動面を変更することが可能となる。
【００９２】
これまで述べてきたようにして、実施の形態１に係る監視レコーダ１１０の記録部１２０は起動する。
【００９３】
次に、実施の形態１に係る監視レコーダ１１０の再生部１３０の起動動作を説明する。
図９は、再生部１３０の起動動作を示すフローチャートである。
まず、電源が投入されると、再生系ＣＰＵ１３３は、再生系プログラム記憶部１３１に記憶されている再生系ブートローダ１３１ａに書かれた処理を起動する（Ｓ５０）。
【００９４】
再生系ブートローダ１３１ａにより、再生系ＣＰＵ１３３は、再生系ワークメモリ１３２等のＨ／Ｗ回路を初期設定する（Ｓ５１）。
【００９５】
次に、再生系ＣＰＵ１３３は、記録系ＣＰＵ１２４でのＯＳ起動完了を待つ（Ｓ５２）。図６に示された記録系ＣＰＵ１２４の起動に関するフローチャートのステップＳ１４により、記録系ＣＰＵ１２４でのＯＳ起動完了が、再生系ＣＰＵ１３３へ通知されると、処理は次のステップＳ５３に進む。
【００９６】
ステップＳ５３では、再生系ＣＰＵ１３３は、信号線１８０を介して、記録系ＣＰＵ１２４から出力された起動面情報を受信する。
【００９７】
次に、再生系ＣＰＵ１３３は、ステップＳ５３にて受信された起動面情報により、第１の再生系プログラム領域１３１ｇ及び第２の再生系プログラム領域１３１ｈの何れかを選択し、選択したプログラム領域内に格納されているＯＳを起動する（Ｓ５４）。
【００９８】
次に、再生系ＣＰＵ１３３は、ステップＳ５３にて選択されたプログラム領域内に格納されているＡＰを起動する（Ｓ５５）。
【００９９】
これまで述べてきたようにして、実施の形態１に係る監視レコーダ１１０の再生部１３０は起動する。
【０１００】
図１０は、図６に示された記録部１２０の起動動作を示すフローチャートと、図９に示された再生部１３０の起動動作を示すフローチャートとの関係を示した図である。
電源が投入されると記録部１２０と再生部１３０とが同時に動作を開始する。図９では、これはタイミングＴ０で示されている。
【０１０１】
記録系ＣＰＵ１２４は、ステップＳ１１のＨ／Ｗ初期化での処理の１つとして、起動面情報を伝える信号線１８０に接続されるポートを出力状態に切り替え、初期値を出力する。初期値は、例えば、「０」である。図９では、これはタイミングＴ１で示されている。
【０１０２】
記録系ＣＰＵ１２４は、ステップＳ１４の起動面情報出力にて、起動面情報を伝える信号線１８０に接続されるポートから、ステップＳ１３にて決定した起動面を示す起動面情報を出力する。図９では、これはタイミングＴ２で示されている。このとき、再生系ＣＰＵ１３３は、ステップＳ５２の記録系ＯＳ起動完了待ちにて、記録系ＣＰＵ１２４でのＯＳ起動完了を待ち続けている。
【０１０３】
記録系ＣＰＵ１２４は、ステップＳ１５でＯＳ起動が完了すると、ステップＳ１６でＯＳ起動完了を再生系ＣＰＵ１３３へ通知する。図９では、これはタイミングＴ３で示されている。
再生系ＣＰＵ１３３は、記録系ＣＰＵ１２４からのＯＳ起動完了通知を受けて、ステップＳ５２の記録系ＯＳ起動完了待ちを終了し、ステップＳ５３にて、記録系ＣＰＵ１２４が出力した起動面情報を受信する。図９では、これはタイミングＴ４で示されている。
【０１０４】
仮に、再生系ＣＰＵ１３３が、ステップＳ５２の記録系ＯＳ起動完了待ちを行わずに、ステップＳ５３の起動面情報受信を行った場合、起動面情報を正常に受け取れない可能性がある。これは、記録系ＣＰＵ１２４のステップＳ１４での起動面情報出力よりも、再生系ＣＰＵ１３３のステップＳ５３の起動面受信の方が早いタイミングで実行された場合に発生する。このとき、再生系ＣＰＵ１３３は、誤った起動面受信情報で、再生系プログラム記憶部１３１に格納されたプログラムを選択して実行し、監視レコーダ１１０が正常に動作できなくなる可能性がある。これに対して、ステップＳ５２にて記録系ＯＳの起動を待つことにより、記録系ＣＰＵ１２４から再生系ＣＰＵ１３３へ起動面情報を正常に伝えることができる。このため、伝えられた起動面情報により、再生系ＣＰＵ１３３が、再生系プログラム記憶部１３１に格納されたプログラムを選択して実行することにより、監視レコーダ１１０を正常に起動できるという効果がある。
【０１０５】
このような起動面情報の伝達動作において、図１０のタイミングＴ２〜タイミングＴ４までの期間、記録系ＣＰＵ１２４は、信号線１８０に起動面情報を出力し続ける必要がある。ところが、記録系ＣＰＵ１２４は、ステップＳ１４にて起動面情報を出力した後、ステップＳ１５にてＯＳの起動を開始し、ＯＳの起動処理では記録系ＣＰＵ１２４の各ポートが初期設定される。これにより、信号線１８０に接続されるＣＰＵ１２４のポートも初期化され、起動面情報を出力し続けることが不可能となる。
【０１０６】
そこで、記録系ＣＰＵ１２４の起動面情報を出力するポートについては、ＯＳの起動時の初期設定の際に、それ以前の状態を保持する動作とする。そして、再生系ＣＰＵ１３３が起動面情報を受け取った後、つまり図１０のタイミングＴ４以降に、ポートの設定が行われる。なお、再生部１３０のＯＳ起動（ステップＳ５４）が完了した時点で、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３を直接接続する図示されていない信号線により、再生系ＣＰＵ１３３から記録系ＣＰＵ１２４へ、ＯＳ起動完了を通知することで、記録系ＣＰＵ１２４は、再生系ＣＰＵ１３３が起動面情報を受け取ったことを認識することができる。
これにより、記録系ＣＰＵ１２４から再生系ＣＰＵ１３３へ起動面情報を正常に伝えることができ、伝えられた起動面情報により、再生系ＣＰＵ１３３が、再生系プログラム記憶部１３１に格納されたプログラムを選択及び実行して、監視レコーダ１１０を正常に起動できる。また、これにより、記録系ＣＰＵ１２４にて、起動面情報を出力するポートは、起動面情報を伝達した後は、別の用途に使用可能となる。なお、記録系ＣＰＵ１２４にて、起動面情報の伝達後に、起動面情報を出力するポートを別の用途に使用しない場合は、起動面情報の伝達後のポートの設定を省略することも可能である。
【０１０７】
次に、実施の形態１に係る監視レコーダ１１０のプログラム更新方法について説明する。
図１１は、監視レコーダ１１０のプログラム更新処理を示すフローチャートである。
【０１０８】
監視レコーダ１１０において、記録部１２０及び再生部１３０の両方でアプリケーションの起動が完了し、信号線１８１により記録系ＣＰＵ１２４と再生系ＣＰＵ１３３とが高速に通信可能になった後、監視レコーダ１１０の操作者が図１には記載していないユーザＩ／Ｆにより、プログラム更新を指示すると、監視レコーダ１１０は、プログラムの更新を開始する。
【０１０９】
まず、ステップＳ６０では、記録系ＣＰＵ１２４は、第１の管理領域３０１を選択して起動したかを確認する。例えば、記録系ＣＰＵ１２４は、起動に使用した管理領域を記録系ワークメモリ１２２等に記憶させておくものとする。第１の管理領域を選択して起動した場合（Ｓ６０でＹＥＳ）、処理はステップＳ６１に進む。第２の管理領域を選択して起動した場合（Ｓ６０でＮＯ）、処理はステップＳ６２に進む。
【０１１０】
ステップＳ６１では、記録系ＣＰＵ１２４は、第２の管理領域３０２の書き込み完了フラグ３０３ｂをプログラム更新中に書き換える。例えば、図４に示されているように、記録系ＣＰＵ１２４は、その値を「０ｘｆｆｆｆｆｆｆｆ」に書き換える。そして、処理はステップＳ６３に進む。
ステップＳ６２では、記録系ＣＰＵ１２４は、第１の管理領域３０１の書き込み完了フラグ３０３ａを、ステップＳ６１と同様にプログラム更新中に書き換える。そして、処理はステップＳ６３に進む。
【０１１１】
ステップＳ６３では、記録系ＣＰＵ１２４は、第１のプログラム領域と第２のプログラム領域のいずれの領域を使用して起動したかを示す起動面を取得し、第１の起動面で起動したか否かを判断する。例えば、記録系ＣＰＵ１２４は、起動に使用した起動面又はプログラム領域を記録系ワークメモリ１２２等に記憶させておくものとする。
第１の起動面で起動した場合、つまり第１のプログラム領域を使用して起動した場合（Ｓ６３でＹＥＳ）には、処理はステップＳ６４に進む。第２の起動面で起動した場合、つまり第２のプログラム領域を使用して起動した場合（Ｓ６３でＮＯ）には、処理はステップＳ６６に進む。
【０１１２】
ステップＳ６４では、記録系ＣＰＵ１２４は、信号線１８１による高速通信により、新しい再生系ＯＳと新しい再生系ＡＰを、再生系ＣＰＵ１３３に伝送する。再生系ＣＰＵ１３３は、受信した新しい再生系ＯＳと新しい再生系ＡＰにより、再生系プログラム記憶部１３１の第２の再生系プログラム領域１３１ｈの第２の再生系ＯＳ１３１ｄと第２の再生系ＡＰ１３１ｅとを書き換える。なお、再生系ＣＰＵ１３３は、新しいプログラムの書き込みを完了すると、信号線１８１経由で、記録系ＣＰＵ１２４へ書き込み完了を通知する。
【０１１３】
ステップＳ６５では、記録系ＣＰＵ１２４は、新しい記録系ＯＳと新しい記録系ＡＰにより、記録系プログラム記憶部１２１の第２の記録系プログラム領域１２１ｈの第２の記録系ＯＳ１２１ｄと第２の記録系ＡＰ１２１ｅとを書き換える。
【０１１４】
ステップＳ６６では、ステップＳ６４と同様にして、再生系ＣＰＵ１３３は、再生系プログラム記憶部１３１の第１の再生系プログラム領域１３１ｇを書き換える。なお、再生系ＣＰＵ１３３は、新しいプログラムの書き込みを完了すると、信号線１８１経由で、記録系ＣＰＵ１２４へ書き込み完了を通知する。
【０１１５】
ステップＳ６７では、ステップＳ６５と同様にして、記録系ＣＰＵ１２４は、記録系プログラム記憶部１２１の第１の記録系プログラム領域１２１ｇを書き換える。
【０１１６】
ステップＳ６８では、記録系ＣＰＵ１２４は、第１の管理領域３０１を選択して起動したか否かを確認する。第１の管理領域を選択して起動した場合（Ｓ６８でＹＥＳ）には、処理はステップＳ６９に進む。第２の管理領域を選択して起動した場合（Ｓ６８でＮＯ）、処理はステップＳ７４に進む。
【０１１７】
ステップＳ６９では、記録系ＣＰＵ１２４は、第２の管理領域３０２の管理領域バージョン番号３０４ｂを書き換える。記録系ＣＰＵ１２４は、例えば、起動に使用した第１の管理領域３０１の管理領域バージョン番号３０４ａを読み出し、読み出した値を、例えば「１」増加させた後、第２の管理領域３０２の管理領域バージョン番号３０４ｂとして書き込む。
【０１１８】
ステップＳ７０では、記録系ＣＰＵ１２４は、第２の管理領域３０２の起動面指定値３０５ｂを書き換える。記録系ＣＰＵ１２４は、第１のプログラム領域と第２のプログラム領域のいずれの領域を使用して起動したかを示す起動面を得た後、反対の起動面を示す値により、第２の管理領域３０２の起動面指定値３０５ｂを書き換える。第１の起動面により起動した場合は、記録系ＣＰＵ１２４は、第２の起動面を示す値として、例えば、「０ｘ００００００００」を書き込む。第２の起動面により起動した場合は、記録系ＣＰＵ１２４は、第１の起動面を示す値として、例えば、「０ｘｆｆｆｆｆｆｆｆ」を書き込む。
ここで、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が新しいプログラムの書き込みを完了した後に、記録系ＣＰＵ１２４は、起動面指定値３０５ｂの書き換えを行う。
【０１１９】
ステップＳ７１では、記録系ＣＰＵ１２４は、第２の管理領域３０２のＯＳバージョン番号３０６ｂ及びＡＰバージョン番号３０７ｂを書き換える。これらの値は、起動時のプログラム領域の選択には使用しないため、記録系ＣＰＵ１２４は、ＯＳやアプリケーションの管理に都合の良い番号を選べば良い。
【０１２０】
ステップＳ７２では、記録系ＣＰＵ１２４は、第２の管理領域３０２のＣＲＣ値３０８ｂを書き換える。ＣＲＣ値３０８ｂは、例えば、第２の管理領域３０２内の書き込み完了フラグ３０３ｂ、管理領域バージョン番号３０４ｂ、起動面指定値３０５ｂ、ＯＳバージョン番号３０６ｂ及びＡＰバージョン番号３０７ｂが格納されている領域に基づいて算出される。
【０１２１】
ステップＳ７３では、記録系ＣＰＵ１２４は、第２の管理領域３０２の書き込み完了フラグ３０３ｂをプログラム更新完了（未起動）に書き換える。例えば、図４に示されているように、記録系ＣＰＵ１２４は、その値を「０ｘ８０００００００」に書き換える。
【０１２２】
ステップＳ７４では、ステップＳ６９と同様にして、記録系ＣＰＵ１２４は、第１の管理領域３０１の管理領域バージョン番号３０４ａを書き換える。
【０１２３】
ステップＳ７５では、ステップＳ７０と同様にして、記録系ＣＰＵ１２４は、第１の管理領域３０１の起動面指定値３０５ａを書き換える。
【０１２４】
ステップＳ７６では、ステップＳ７１と同様にして、記録系ＣＰＵ１２４は、第１の管理領域３０１のＯＳバージョン番号３０６ａ及びＡＰバージョン番号３０７ａを書き換える。
【０１２５】
ステップＳ７７では、ステップＳ７２と同様にして、記録系ＣＰＵ１２４は、第１の管理領域３０１のＣＲＣ値３０８ａを書き換える。
【０１２６】
ステップＳ７８では、ステップＳ７３と同様にして、記録系ＣＰＵ１２４は、第１の管理領域３０１の書き込み完了フラグ３０３ａをプログラム更新完了（未起動）に書き換える。
【０１２７】
以上のような手順により、監視レコーダ１１０のプログラムを更新する。以上に示した手順により、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３の両方のプログラムを、バージョンが合った状態で、更新可能となる。
【０１２８】
次に、図１２は、監視レコーダ１１０のプログラム更新前から更新後までのタイミングを示す概略図である。
図１１のフローチャートに示したプログラム更新動作は、図１２のタイミングＴｂ〜タイミングＴｃの期間で実施される。
【０１２９】
まず、図１２のタイミングＴａにて、監視レコーダ１１０の電源が投入され、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が起動する。このとき、記録系ＣＰＵ１２４では、図６に示されているフローチャートに従って、処理が実行される。また、再生系ＣＰＵ１３３では、図９に示されているフローチャートに従って、処理が実行される。なお、ここでは、第１の起動面を用いて起動する場合を示している。また、ここでは、プログラム起動制御部１４０から出力される起動面変更フラグが「０（起動面変更なし）」の場合を示している。このとき、図８に示されているフローチャートにより、起動面が第１の起動面に決定され、第１の起動面を示す起動面情報が出力される。これにより、記録系ＣＰＵ１２４は、第１の起動面のプログラム、即ち、図２の第１の記録系プログラム領域１２１ｇに格納されたプログラムを実行する。また、再生系ＣＰＵ１３３も、第１の起動面のプログラム、即ち、図５の第１の再生系プログラム領域１３１ｇに格納されたプログラムを実行する。
【０１３０】
図１２のタイミングＴｂにて、プログラムの更新が指示されると、記録系ＣＰＵ１２４は、例えば、外部記憶装置１７０に格納されている更新用の新しいプログラム（記録系ＣＰＵ１２４用と再生系ＣＰＵ１３３用の両方のプログラム）を読み出す。
記録系ＣＰＵ１２４は、記録系ＣＰＵ１２４用の新しいプログラムを、図１１のフローチャートに示した手順により、記録系プログラム記憶部１２１内の第２の記録系プログラム領域１２１ｈ（第２の起動面）に書き込む。即ち、第１の起動面により起動しているため、記録系ＣＰＵ１２４は、現在使用していない第２の起動面にそれを書き込む。また、記録系ＣＰＵ１２４は、再生系ＣＰＵ１３３用の新しいプログラムを、信号線１８１を使用して高速に、再生系ＣＰＵ１３３へ伝送する。
再生系ＣＰＵ１３３は、記録系ＣＰＵ１２４から伝送された再生系ＣＰＵ１３３用の新しいプログラムを、図１１のフローチャートに示したように、再生系プログラム記憶部１３１内の第２の再生系プログラム領域１３１ｈ（第２の起動面）に書き込む。即ち、第１の起動面により起動しているため、再生系ＣＰＵ１３３は、現在使用していない第２の起動面にそれを書き込む。
【０１３１】
再生系ＣＰＵ１３３は、新しいプログラムの書き込みを完了すると、信号線１８１経由で、記録系ＣＰＵ１２４へ書き込み完了を通知する。記録系ＣＰＵ１２４は、再生系ＣＰＵ１３３の書き込み完了通知を受け取り、かつ、記録系ＣＰＵ１２４自身の新しいプログラム書き込みを完了したときに、図１１のフローチャートに示したように、プログラム管理領域１２１ｆの第１の管理領域３０１又は第２の管理領域３０２を書き換える。図１２では、これを、タイミングＴｃで示している。図１２では、プログラムの更新により、次回起動時に使用される起動面指定値が、第１の起動面から第２の起動面に変わったことを示している。
【０１３２】
図１２のタイミングＴｄでは、プログラムの更新が完了し、監視レコーダ１１０の電源がＯＦＦにされる。プログラム更新完了後に、監視レコーダ１１０の電源をＯＦＦにし、再度電源をＯＮする処理は、監視レコーダ１１０が自動で実行しても良いし、監視レコーダのユーザが手作業で実施してもよい。
【０１３３】
図１２のタイミングＴｅにて、監視レコーダ１１０の電源が再度ＯＮにされ、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が起動する。このとき、記録系ＣＰＵ１２４では、図６に示されているフローチャートに従って、処理が実行される。また、再生系ＣＰＵ１３３では、図９に示されているフローチャートに従って、処理が実行される。
記録系ＣＰＵ１２４で読み出される起動面指定値は、プログラム更新により第２の起動面に切り替わっている。また、ここでは、プログラム起動制御部１４０から出力される起動面変更フラグは「０（起動面変更なし）」のままである。このため、図８に示されているフローチャートに従って、第２の起動面の使用が決定され、第２の起動面を示す起動面情報が出力される。これにより、記録系ＣＰＵ１２４は、第２の起動面のプログラム、即ち、図２の第２の記録系プログラム領域１２１ｈに格納された更新後の新しいプログラムを実行する。また、再生系ＣＰＵ１３３も、第２の起動面のプログラム、すなわち、図５の第２の再生系プログラム領域１３１ｈに格納された更新後の新しいプログラムを実行する。
【０１３４】
図１２のタイミングＴｆでは、記録系ＣＰＵ１２４と再生系ＣＰＵ１３３の何れか、または両方が正常に起動せず、そのことをプログラム起動制御部１４０が検出し、起動面変更フラグを「０」から「１」に変更した上で、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３を再起動している。プログラム起動制御部１４０は、例えば、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３と信号線１８２、１８３で接続されていて、これらの信号線１８２、１８３により各ＣＰＵ１２４、１３３と通信して、各ＣＰＵ１２４、１３３が正常に起動したかどうかを判定するものとする。
【０１３５】
図１２のタイミングＴｆでは、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が再起動する。このとき、記録系ＣＰＵ１２４では、図６に示されているフローチャートに従って、処理が実行される。また再生系ＣＰＵ１３３では、図９に示されているフローチャートに従って、処理が実行される。記録系ＣＰＵ１２４によって読み出された起動面指定値は、プログラム更新により第２の起動面に切り替わっている。また、図１２では、プログラム起動制御部１４０から出力される起動面変更フラグは「１」に変更されている。このため、使用される起動面は、第１の起動面に決定され、第１の起動面を示す起動面情報が出力される。これにより、記録系ＣＰＵ１２４は、第１の起動面のプログラム、すなわち、図２の第１の記録系プログラム領域１２１ｇに格納されたプログラムを実行する。また、再生系ＣＰＵ１３３も、第１の起動面のプログラム、すなわち、図５の第１の再生系プログラム領域１３１ｇに格納されたプログラムを実行する。
再起動により、記録系ＣＰＵ１２４がアプリケーションの起動（図６のステップＳ１７）まで正常に動作し、かつ、再生系ＣＰＵ１３３がアプリケーションの起動（図９のステップＳ５５）まで正常に動作した時点で、それぞれのＣＰＵ１２４、１３３がそのことをプログラム起動制御部１４０へ通知する。それによりプログラム起動制御部１４０は、起動面変更フラグを「１」から「０」に戻す。
【０１３６】
図１２のタイミングＴｆでの動作により、更新後の新しいプログラム（第２の起動面に格納）で正常に監視レコーダ１１０が起動しなくなった場合でも、動作実績のある第１の起動面のプログラムにより正常起動することが可能である。そして、正常起動した後で、再度、第２の起動面に対してプログラムの更新が行われることで、プログラムの更新を完了することができる。
【０１３７】
以上に記載した実施の形態１によれば、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３のそれぞれが複数のプログラム領域を備えているため、プログラム更新の際にプログラムが正しく更新されず、新しいプログラムに破損があった場合でも、更新前のプログラムを格納したプログラム領域を選択して、システムを起動することができ、さらに、再度プログラムの更新処理を実施することができる。
【０１３８】
また、記録系ＣＰＵ１２４及び再生系ＣＰＵ１３３が共通の起動面情報を使用して、それぞれのＣＰＵが起動するプログラムを格納したプログラム領域を選択するため、プログラムのバージョンを確認することなく複数ＣＰＵのプログラムのバージョンを正常動作可能な組み合せとすることができる。
【符号の説明】
【０１３９】
１００  監視システム、  １１０  監視レコーダ、  １１１  通信Ｉ／Ｆ部、  １１２  出力Ｉ／Ｆ部、  １１３  接続Ｉ／Ｆ部、  １２０  記録部、  １２１  記録系プログラム記憶部、  １２２  記録系ワークメモリ、  １２３  情報格納部、  １２４  記録系ＣＰＵ、  １３０  再生部、  １３１  再生系プログラム記憶部、  １３２  再生系ワークメモリ、  １３３  再生系ＣＰＵ、  １４０  プログラム起動制御部、  １４５  通知部、  １５０  カメラ、  １６０  表示装置、  １７０  外部記憶装置、  １８０，１８１，１８２，１８３  信号線。
【図１】
2016136014.tif 000003
【図２】
2016136014.tif 000004
【図３】
2016136014.tif 000005
【図４】
2016136014.tif 000006
【図５】
2016136014.tif 000007
【図６】
2016136014.tif 000008
【図７】
2016136014.tif 000009
【図８】
2016136014.tif 000010
【図９】
2016136014.tif 000011
【図１０】
2016136014.tif 000012
【図１１】
2016136014.tif 000013
【図１２】
2016136014.tif 000014
【手続補正書】
【提出日】平成28年2月17日(2016.2.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサを起動するために使用される第１のプログラムを記憶する第１の記憶領域、及び、当該第１のプログラムとバージョンが異なり、前記第１のプロセッサを起動するために使用される第２のプログラムを記憶する第２の記憶領域を有する第１の記憶部と、
第２のプロセッサと、
前記第２のプロセッサを起動するために使用され、前記第１のプログラムに対応する第３のプログラムを記憶する第３の記憶領域、及び、前記第２のプロセッサを起動するために使用され、前記第２のプログラムに対応する第４のプログラムを記憶する第４の記憶領域を有する第２の記憶部と、を備え、
前記第１のプロセッサは、前記第１のプログラム又は前記第２のプログラムを使用して起動するとともに、前記第３の記憶領域及び第４の記憶領域の内、起動に必要なプログラムの記憶領域を示す記憶領域情報を前記第２のプロセッサに通知し、
前記第２のプロセッサは、前記第１のプロセッサから通知された記憶領域情報に示されている記憶領域に記憶されているプログラムを使用して起動し、
前記第１の記憶部は、起動に使用するプログラムを記憶している領域として、当該第１の記憶領域及び当該第２の記憶領域の何れか一方を示す記憶領域指定値を含むプログラム管理情報を記憶しており、
前記第１のプロセッサは、前記記憶領域指定値で示される記憶領域に記憶されているプログラムを使用して起動し、
前記プログラム管理情報は、プログラム更新の状況を示す書き込み完了フラグも含んでいること
を特徴とする監視レコーダ。
【請求項２】
前記第１の記憶部及び前記第２の記憶部に記憶されているプログラムを更新する際に、
前記第１のプロセッサは、前記書き込み完了フラグを、プログラム更新中であることを示すように変更し、
前記第１のプロセッサは、前記第１のプログラム及び前記第２のプログラムの内、起動に使用されたプログラムを記憶している記憶領域とは別の記憶領域に記憶されているプログラムを更新し、
前記第２のプロセッサは、前記第３のプログラム及び前記第４のプログラムの内、起動に使用されたプログラムを記憶している記憶領域とは別の記憶領域に記憶されているプログラムを更新し、
前記第１のプロセッサは、前記第１の記憶部及び前記第２の記憶部に記憶されているプログラムの更新後に、前記記憶領域指定値を更新された側のプログラムを記憶している記憶領域を示すように更新した後に、前記書き込み完了フラグを、プログラム更新が完了したことを示すように変更すること
を特徴とする請求項１に記載の監視レコーダ。
【請求項３】
前記第１のプロセッサ及び前記第２のプロセッサの起動を制御するプログラム起動制御部をさらに備え、
前記プログラム起動制御部は、前記第１のプロセッサ及び前記第２のプロセッサの少なくとも何れか一方の起動にエラーが生じた場合には、前記第１のプロセッサ及び前記第２のプロセッサを再起動させるともに、前記第１のプロセッサに、前記記憶領域指定値で示される記憶領域とは別の記憶領域に記憶されているプログラムを使用して起動するように指示し、
前記第１のプログラムは、前記記憶領域指定値で示される記憶領域とは別の記憶領域に記憶されているプログラムを使用して再起動を行うこと
を特徴とする請求項１又は２に記載の監視レコーダ。
【請求項４】
前記記憶領域指定値は、２以上のビット幅の２進数のデータで構成され、値が「１」であるビット数に応じて、前記第１の記憶領域及び前記第２の記憶領域の何れか一方を示すこと
を特徴とする請求項１から３の何れか一項に記載の監視レコーダ。
【請求項５】
前記第１の記憶部に記憶されているプログラム管理情報は、第１のプログラム管理情報及び第２のプログラム管理情報を備え、
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれ前記記憶領域指定値を含み、
前記第１のプロセッサは、起動を行う際に、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の何れかに含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項１から４の何れか一項に記載の監視レコーダ。
【請求項６】
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれのプログラム管理情報のバージョンを示すバージョン番号をそれぞれ含んでおり、
前記第１のプロセッサは、前記バージョン番号を参照して、より新しいバージョンのプログラム管理情報に含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項５に記載の監視レコーダ。
【請求項７】
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれの誤りを検出するためのチェック値をそれぞれ含んでおり、
前記第１のプロセッサは、前記チェック値を用いて、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の誤りチェックを行い、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の何れか一方に誤りが検出された場合には、他方に含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項５に記載の監視レコーダ。
【請求項８】
前記第１のプログラム管理情報及び前記第２のプログラム管理情報は、それぞれ、プログラムの更新状況を示す前記書き込み完了フラグを含んでおり、
前記第１のプロセッサは、前記書き込み完了フラグを用いて、プログラム更新中であるかどうかを判断し、前記第１のプログラム管理情報及び前記第２のプログラム管理情報の何れか一方がプログラム更新中であることを示している場合には、他方に含まれている前記記憶領域指定値に基づいて、前記第１の記憶領域及び前記第２の記憶領域の何れに記憶されているプログラムを使用して起動するかを決定すること
を特徴とする請求項５に記載の監視レコーダ。
【請求項９】
前記第１のプロセッサ及び前記第２のプロセッサは、１度に１ビットのデータのみを伝送することのできる第１の信号線で接続されており、
前記第１のプロセッサは、前記第１の信号線を介して、前記記憶領域情報を前記第２のプロセッサに通知すること
を特徴とする請求項１から８の何れか一項に記載の監視レコーダ。
【請求項１０】
前記第１のプロセッサ及び前記第２のプロセッサは、前記第１の信号線よりも高速にデータを伝送することのできる第２の信号線でさらに接続されており、
前記第１のプロセッサは、前記第２の信号線を介して、更新に用いるプログラムを前記第２のプロセッサに伝送すること
を特徴とする請求項９に記載の監視レコーダ。
【請求項１１】
前記第１のプロセッサが前記第１のプログラム又は前記第２のプログラムの起動を完了した後に、前記第２のプロセッサは、前記記憶領域情報を受け取ること
を特徴とする請求項１から１０の何れか一項に記載の監視レコーダ。
【請求項１２】
前記第１のプロセッサは、前記第２のプロセッサが前記記憶領域情報を受け取るまで、前記記憶領域情報を出力し続けること
を特徴とする請求項１１に記載の監視レコーダ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
本発明の一態様に係る監視レコーダは、第１のプロセッサと、前記第１のプロセッサを起動するために使用される第１のプログラムを記憶する第１の記憶領域、及び、当該第１のプログラムとバージョンが異なり、前記第１のプロセッサを起動するために使用される第２のプログラムを記憶する第２の記憶領域を有する第１の記憶部と、第２のプロセッサと、前記第２のプロセッサを起動するために使用され、前記第１のプログラムに対応する第３のプログラムを記憶する第３の記憶領域、及び、前記第２のプロセッサを起動するために使用され、前記第２のプログラムに対応する第４のプログラムを記憶する第４の記憶領域を有する第２の記憶部と、を備え、前記第１のプロセッサは、前記第１のプログラム又は前記第２のプログラムを使用して起動するとともに、前記第３の記憶領域及び第４の記憶領域の内、起動に必要なプログラムの記憶領域を示す記憶領域情報を前記第２のプロセッサに通知し、前記第２のプロセッサは、前記第１のプロセッサから通知された記憶領域情報に示されている記憶領域に記憶されているプログラムを使用して起動し、前記第１の記憶部は、起動に使用するプログラムを記憶している領域として、当該第１の記憶領域及び当該第２の記憶領域の何れか一方を示す記憶領域指定値を含むプログラム管理情報を記憶しており、前記第１のプロセッサは、前記記憶領域指定値で示される記憶領域に記憶されているプログラムを使用して起動し、前記プログラム管理情報は、プログラム更新の状況を示す書き込み完了フラグも含んでいることを特徴とする。
【国際調査報告】
2016136014.tif 000015
2016136014.tif 000016
2016136014.tif 000017
2016136014.tif 000018