(57)【要約】  第１プロセッサ（１０１）は、メインプログラムを起動させる際に、メインプログラムを起動する処理の履歴を構成する第１起動ログを第２プロセッサ（１１１）に送り、第２プロセッサ（１１１）は、第１プロセッサ（１０１）から送られてきた第１起動ログを第２ＲＡＭ（１１３）に記憶させるとともに、メインプログラムを起動させる際に、メインプログラムを起動する処理の履歴を構成する第２起動ログを第１プロセッサ（１０１）に送り、第１プロセッサ（１０１）は、第２起動ログを第１ＲＡＭ（１０３）に記憶させ、予め定められた時間内に、第１プロセッサ（１０１）で第１メインプログラムの起動が完了しないときには、第２プロセッサ（１１１）が第２メインプログラムの起動を開始する。
2016098376.tif 000002
【特許請求の範囲】
【請求項１】
第１メインプログラム及び当該第１メインプログラムの起動を行う第１起動プログラムを記憶する第１不揮発メモリと、
第１揮発メモリと、
前記第１起動プログラムを前記第１揮発メモリに読み出して、実行することで、前記第１メインプログラムを起動させる第１プロセッサと、
第２メインプログラム及び当該第２メインプログラムの起動を行う第２起動プログラムを記憶する第２不揮発メモリと、
第２揮発メモリと、
前記第２起動プログラムを前記第２揮発メモリに読み出して、実行することで、前記第２メインプログラムを起動させる第２プロセッサと、
前記第１プロセッサ及び前記第２プロセッサの起動を管理する起動管理部と、
第２プロセッサを起動させる指示を前記起動管理部に行わせる強制起動部と、を備え、
前記第１プロセッサは、前記第１起動プログラムを実行することで、前記第１メインプログラムを起動させる際に、前記第１メインプログラムを起動する処理の履歴を構成する第１起動ログを前記第２プロセッサに送り、
前記第２プロセッサは、前記第２起動プログラムを実行することで、前記第１プロセッサから送られてきた第１起動ログを受け取り、当該受け取られた第１起動ログを前記第２揮発メモリに記憶させ、
前記起動管理部は、前記第１プロセッサでの第１メインプログラムの起動完了時に、前記第２プロセッサに前記第２メインプログラムの起動開始を指示し、
前記第２プロセッサは、前記第２メインプログラムの起動を開始し、前記第２メインプログラムを起動させる際に、前記第２メインプログラムを起動する処理の履歴を構成する第２起動ログを前記第１プロセッサに送り、
前記第１プロセッサは、起動が完了した前記第１メインプログラムを実行することで、前記第２プロセッサから送られてきた第２起動ログを受け取り、当該受け取られた第２起動ログを前記第１揮発メモリに記憶させ、
前記強制起動部は、予め定められた時間内に、前記第１プロセッサで第１メインプログラムの起動が完了しないときには、前記第２プロセッサが前記第２メインプログラムを起動開始するように、前記起動管理部に指示させること
を特徴とする監視レコーダ。
【請求項２】
前記起動管理部は、
前記第１プロセッサが前記第１メインプログラムの起動に失敗したと判断した場合には、前記第２プロセッサに、前記第２不揮発メモリの記憶されている第１起動ログを前記第２不揮発メモリに記憶させ、
前記第２プロセッサが前記第２メインプログラムの起動に失敗したと判断した場合には、前記第１プロセッサに、前記第１不揮発メモリに記憶されている第２起動ログを前記第１不揮発メモリに記憶させること
を特徴とする請求項１に記載の監視レコーダ。
【請求項３】
時間を計測するタイマをさらに備え、
前記起動管理部は、
前記第１プロセッサが前記第１メインプログラムの起動を開始してから、前記第１メインプログラムの起動を完了する前に、前記タイマで計測された時間が予め定められた時間を経過した場合に、前記第１メインプログラムの起動に失敗したと判断し、
前記第２プロセッサが前記第２メインプログラムの起動を開始してから、前記第２メインプログラムの起動を完了する前に、前記タイマで計測された時間が予め定められた時間を経過した場合に、前記第２メインプログラムの起動に失敗したと判断すること
を特徴とする請求項２に記載の監視レコーダ。
【請求項４】
前記第１不揮発メモリは、前記第１メインプログラムの代わりに実行することのできる第３メインプログラムをさらに記憶し、
前記第２不揮発メモリは、前記第２メインプログラムの代わりに実行することのできる第４メインプログラムをさらに記憶し、
前記起動管理部は、
前記第１メインプログラムの起動に失敗したと判断した場合には、前記第１プロセッサに、前記第１メインプログラムの代わりに前記第３メインプログラムを起動させ、
前記第２メインプログラムの起動に失敗したと判断した場合には、前記第２プロセッサに、前記第２プロセッサの代わりに前記第４メインプログラムを起動させること、
を特徴とする請求項２又は３に記載の監視レコーダ。
【請求項５】
前記第１プロセッサ又は前記第２プロセッサの起動失敗回数を記憶する起動失敗回数記憶部をさらに備え、
前記第２プロセッサは、前記第２メインプログラム又は前記第４メインプログラムの起動完了後に、前記起動失敗回数が１以上である場合には、起動ログが記憶されていることを利用者に告知すること
を特徴とする請求項４に記載の監視レコーダ。
【請求項６】
エラーを通知するための表示デバイスをさらに有し、
前記第１プロセッサは、前記監視レコーダに電源が入れられた場合には、前記第１起動プログラムを、前記第１不揮発メモリから前記第１揮発メモリに読み出して起動させ、
前記第２プロセッサは、前記監視レコーダに電源が入れられた場合には、前記第２起動プログラムを、前記第２不揮発メモリから前記第２揮発メモリに読み出して起動させ、
前記起動管理部は、前記第１起動プログラムの起動にエラーが生じたと判断した場合、又は、前記第２起動プログラムの起動にエラーが生じたと判断した場合には、前記表示デバイスにエラーを通知させること
を特徴とする請求項２から５の何れか一項に記載の監視レコーダ。
【請求項７】
前記第２プロセッサは、前記第１プロセッサから送られてきた第１起動ログのデータサイズの合計を算出し、当該合計を前記第２揮発メモリに記憶させること
を特徴とする請求項１から６の何れか一項に記載の監視レコーダ。
【請求項８】
前記合計は、前記第２揮発メモリにおいて、前記第１起動ログを記憶する領域の直前の領域に記憶されること
を特徴とする請求項７に記載の監視レコーダ。
【請求項９】
前記第２プロセッサは、前記第２不揮発メモリに記憶されている第１起動ログを前記第２起動ログに含めて、前記第１プロセッサに送信すること
を特徴とする請求項１から８の何れか一項に記載の監視レコーダ。
【請求項１０】
書き込み回数に制限のない記憶装置をさらに備え、
前記第１プロセッサは、前記第１不揮発メモリに記憶されている第２起動ログを前記記憶装置に記憶させること
を特徴とする請求項１から９の何れか一項に記載の監視レコーダ。
【請求項１１】
サーバと通信を行う通信部をさらに備え、
前記第１プロセッサは、前記第１不揮発メモリに記憶されている第２起動ログを前記サーバに送信し、前記サーバに記憶させること
を特徴とする請求項１から１０の何れか一項に記載の監視レコーダ。
【請求項１２】
第１プロセッサ及び第２プロセッサを備える監視レコーダの起動方法であって、
第１プロセッサが、第１メインプログラムの起動を行う第１起動プログラムを実行することで、前記第１メインプログラムを起動するとともに、前記第１メインプログラムを起動させる際に、前記第１メインプログラムを起動する処理の履歴を構成する第１起動ログを前記第２プロセッサに送り、
前記第２プロセッサが、第２メインプログラムの起動を行う第２起動プログラムを実行することで、前記第１プロセッサから送られてきた第１起動ログを受け取り、当該受け取られた第１起動ログを記憶し、
前記第１プロセッサでの前記第１メインプログラムの起動完了時に、前記第２プロセッサが、第２メインプログラムの起動を行う第２起動プログラムを実行することで、前記第２メインプログラムを起動するとともに、前記第２メインプログラムを起動させる際に、前記第２メインプログラムを起動する処理の履歴を構成する第２起動ログを前記第１プロセッサに送り、
前記第１プロセッサが、起動が完了した前記第１メインプログラムを実行することで、前記第２プロセッサから送られてきた第２起動ログを受け取り、当該受け取られた第２起動ログを記憶し、
予め定められた時間内に、前記第１プロセッサで前記第１メインプログラムの起動が完了しないときには、前記第２プロセッサが前記第２メインプログラムの起動を開始すること
を特徴とする起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視レコーダ及びその起動方法に関し、特に、複数のプロセッサを有する監視レコーダ及びその起動方法に関する。
【背景技術】
【０００２】
近年、デジタル映像技術、映像圧縮技術及び映像データ蓄積技術等が進展し、それら技術を応用して構成する監視レコーダシステムも急速に普及している。監視レコーダシステムは、監視カメラで撮影した映像を、Ｍｏｔｉｏｎ  ＪＰＥＧやＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｔｓ  Ｇｒｏｕｐ）等の映像圧縮技術を用いて圧縮した圧縮映像データとしてレコーダに送信する。レコーダは、その圧縮映像データの記憶及び再生を行う。【０００３】
監視レコーダでは、監視カメラからの圧縮映像データを全てハードディスクに記憶し、その記憶した複数の圧縮映像データをＭＰＥＧデコーダ等で同時に伸張再生し、４個、９個、あるいは１６個の映像をモニタ等の表示器上に同時に分割表示することが求められる。【０００４】
複数の圧縮映像データを再生し表示する再生表示処理においては、分割表示数が多くなればなるほど処理負荷も高くなる。監視カメラからの圧縮映像データをハードディスクに記憶する記憶処理を含めた監視レコーダとしての処理を単一のプロセッサで実現すると、分割表示数によっては、記憶処理が間に合わなくなり、監視カメラから送信される圧縮映像データの記憶処理が間に合わず、データを取りこぼす問題が発生する。【０００５】
このような記憶処理が間に合わない状況に陥らないようにするために、記憶処理を担当するプロセッサとは別に、再生表示処理を担当するプロセッサを設けることで、再生表示処理負荷の影響を、記憶処理に及ぼさないようにすることができる。【０００６】
このように、複数のプロセッサを搭載して監視レコーダを構成する場合、それぞれのプロセッサが確実に起動する必要がある。特許文献１に記載された情報処理装置は、プロセッサ各々の起動処理がどこまで進んだかという情報を起動情報として別のプロセッサのメモリデバイスに書き込み、それぞれのプロセッサは、自己に接続されたメモリデバイスを参照することで、別のプロセッサの起動状況を把握し、別のプロセッサの起動に異常が発生したか否かを検知することができる（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２３４４８３号公報（段落００１９〜０１１９、図１〜図７）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の情報処理装置は、２つのプロセッサにそれぞれメモリデバイスを接続し、それぞれの起動ログを別のプロセッサの管理するメモリに保存する構成になっている。このため、一方のプロセッサから別のプロセッサに接続されているメモリデバイスに直接アクセスできるようにバスブリッジを搭載する必要がある。【０００９】
しかしながら、一般にバスブリッジは、例えばＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）や、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）等の汎用インターフェースを用いて接続されることが多く、汎用インターフェースを動作させるため、動作クロックの設定及びアクセスタイミングの設定等を行う必要がある。このような設定は、一般的にはプログラムを実行することで実現されるが、プログラムが正しく動作しない場合には、バスブリッジが正常に動作せず、一方のプロセッサから別のプロセッサに接続されているメモリデバイスにアクセスできなくなるという問題がある。
また、既にＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）として構成されているプロセッサを使用して、監視レコーダを構成する場合、ＩＣにバスブリッジの機能が搭載されていなければ、バスブリッジを追加搭載してメモリデバイスを共有化する必要がある。このため、システム構成が複雑になるという問題がある。【００１０】
そこで、本発明は、複数のプロセッサを簡易的な通信方法で接続して、起動時のログをお互いが記憶するように構成し、一方のプロセッサが起動失敗した場合でも、別のプロセッサに記憶されている起動失敗時のログを参照することで、起動不具合原因を解析できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様に係る監視レコーダは、第１メインプログラム及び当該第１メインプログラムの起動を行う第１起動プログラムを記憶する第１不揮発メモリと、第１揮発メモリと、前記第１起動プログラムを前記第１揮発メモリに読み出して、実行することで、前記第１メインプログラムを起動させる第１プロセッサと、第２メインプログラム及び当該第２メインプログラムの起動を行う第２起動プログラムを記憶する第２不揮発メモリと、第２揮発メモリと、前記第２起動プログラムを前記第２揮発メモリに読み出して、実行することで、前記第２メインプログラムを起動させる第２プロセッサと、前記第１プロセッサ及び前記第２プロセッサの起動を管理する起動管理部と、第２プロセッサを起動させる指示を前記起動管理部に行わせる強制起動部と、を備え、前記第１プロセッサは、前記第１起動プログラムを実行することで、前記第１メインプログラムを起動させる際に、前記第１メインプログラムを起動する処理の履歴を構成する第１起動ログを前記第２プロセッサに送り、前記第２プロセッサは、前記第２起動プログラムを実行することで、前記第１プロセッサから送られてきた第１起動ログを受け取り、当該受け取られた第１起動ログを前記第２揮発メモリに記憶させ、前記起動管理部は、前記第１プロセッサでの第１メインプログラムの起動完了時に、前記第２プロセッサに前記第２メインプログラムの起動開始を指示し、前記第２プロセッサは、前記第２メインプログラムの起動を開始し、前記第２メインプログラムを起動させる際に、前記第２メインプログラムを起動する処理の履歴を構成する第２起動ログを前記第１プロセッサに送り、前記第１プロセッサは、起動が完了した前記第１メインプログラムを実行することで、前記第２プロセッサから送られてきた第２起動ログを受け取り、当該受け取られた第２起動ログを前記第１揮発メモリに記憶させ、前記強制起動部は、予め定められた時間内に、前記第１プロセッサで第１メインプログラムの起動が完了しないときには、前記第２プロセッサが前記第２メインプログラムを起動開始するように、前記起動管理部に指示させることを特徴とする。【００１２】
本発明の一態様に係る起動方法は、第１プロセッサ及び第２プロセッサを備える監視レコーダの起動方法であって、第１プロセッサが、第１メインプログラムの起動を行う第１起動プログラムを実行することで、前記第１メインプログラムを起動するとともに、前記第１メインプログラムを起動させる際に、前記第１メインプログラムを起動する処理の履歴を構成する第１起動ログを前記第２プロセッサに送り、前記第２プロセッサが、第２メインプログラムの起動を行う第２起動プログラムを実行することで、前記第１プロセッサから送られてきた第１起動ログを受け取り、当該受け取られた第１起動ログを記憶し、前記第１プロセッサでの前記第１メインプログラムの起動完了時に、前記第２プロセッサが、第２メインプログラムの起動を行う第２起動プログラムを実行することで、前記第２メインプログラムを起動するとともに、前記第２メインプログラムを起動させる際に、前記第２メインプログラムを起動する処理の履歴を構成する第２起動ログを前記第１プロセッサに送り、前記第１プロセッサが、起動が完了した前記第１メインプログラムを実行することで、前記第２プロセッサから送られてきた第２起動ログを受け取り、当該受け取られた第２起動ログを記憶し、予め定められた時間内に、前記第１プロセッサで前記第１メインプログラムの起動が完了しないときには、前記第２プロセッサが前記第２メインプログラムの起動を開始することを特徴とする。
【発明の効果】
【００１３】
本発明の一態様によれば、複数のプロセッサを簡易的な通信方法で接続して、起動時のログをお互いが記憶するように構成されているため、一方のプロセッサが起動失敗した場合でも、別のプロセッサに記憶されている起動失敗時のログを参照することで、起動不具合原因を解析することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１及び２に係る監視レコーダの構成を概略的に示すブロック図である。
【図２】実施の形態１における、第１プロセッサ、第２プロセッサ及び制御部の処理の流れを説明するシーケンス図（その１）。
【図３】実施の形態１における、第１プロセッサ、第２プロセッサ及び制御部の処理の流れを説明するシーケンス図（その２）。
【図４】実施の形態１における、第１プロセッサ、第２プロセッサ及び制御部の処理の流れを説明するシーケンス図（その３）。
【図５】実施の形態１における第１ＲＯＭに記憶されているプログラムの配置例を示す概略図である。
【図６】実施の形態１における第１プロセッサがＯＳを実行しているときの第１ＲＡＭのプログラムの配置例を示す概略図である。
【図７】実施の形態１における第２プロセッサが、第１プロセッサからシリアル通信路で送信される起動ログを取得しているときの第２ＲＡＭのプログラムの配置例を示す概略図である。
【図８】実施の形態１におけるＯＳ起動完了フラグの第１の例を示す概略図である。
【図９】実施の形態１における第２ＲＯＭに記憶されているプログラムの配置例を示す概略図である。
【図１０】実施の形態１における第２ＲＡＭの利用例を示す概略図（その１）である。
【図１１】実施の形態１における第２ＲＡＭの利用例を示す概略図（その２）である。
【図１２】実施の形態１における第２ＲＡＭの利用例を示す概略図（その３）である。
【図１３】実施の形態１におけるＯＳ起動完了フラグの第２の例を示す概略図である。
【図１４】実施の形態２における第２ＲＡＭの利用例を示す概略図である。
【図１５】実施の形態３に係る監視レコーダの構成を概略的に示すブロック図である。
【発明を実施するための形態】
【００１５】
実施の形態１．
図１は、実施の形態１に係る情報処理装置としての監視レコーダ１００の構成を概略的に示すブロック図である。
図１において、符号１００は、監視レコーダであり、符号１４０は、監視カメラである。監視カメラ１４０は、監視レコーダ１００とネットワーク１４１で接続されている。監視カメラ１４０は、撮影された映像をＭＰＥＧ等の映像圧縮技術を用いて圧縮した圧縮映像データとして監視レコーダ１００に送信する。
【００１６】
監視レコーダ１００は、第１プロセッサ１０１と、第１ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、第１ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、ネットワークコントローラ１０４と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０５と、第１ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）コントローラ１０６と、第２プロセッサ１１１と、第２ＲＯＭ１１２と、第２ＲＡＭ１１３と、第２ＬＡＮコントローラ１１４と、制御部１２１と、リセット制御部１２２と、タイマ１２３と、エラーＬＥＤ１２４と、プログラム起動面記憶部１２５と、ＯＳ起動完了フラグ記憶部１２６と、起動失敗回数記憶部１２７と、シリアル通信路１３０と、ＬＡＮ１３１とを備える。
図１の括弧内の符号は、実施の形態２における構成を示す。
【００１７】
第１プロセッサ１０１は、主に記憶処理を行うプロセッサである。第１プロセッサ１０１は、第２プロセッサ１１１とシリアル通信を行うため、シリアル通信機能を備えている。
第１ＲＯＭ１０２は、第１プロセッサ１０１を動作させるためのプログラムを記憶した記憶装置（不揮発メモリ）である。第１ＲＯＭ１０２は、プログラムアップデートを実現するために、少なくとも２種類のメインプログラム（第１メインプログラム及び第２メインプログラム）を記憶する。言い換えると、２種類のメインプログラムのうち、一方を使って実行しているときには、もうひとつのメインプログラムをアップデート（書き換え）することができる。また、プログラムアップデート後に、システムを再起動して、第１ＲＯＭ１０２に記憶されている新しいバージョンのメインプログラムを実行することでシステムの更新を行うことができる。仮に新しいバージョンのメインプログラムに何らかの不具合があって、正常に起動できない場合には、後述する起動不具合の検出方法によって、第１プロセッサ１０１を再起動し、元のメインプログラムを使って起動させる。なお、第１ＲＯＭ１０２は、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙではあるが、特別なコマンドによりデータを書き換え可能なＲＯＭ（いわゆるＦｌａｓｈＲＯＭ）である。ここで、第１プロセッサ１０１は、メインプログラムを実行することで、監視レコーダ１００における記憶処理及び第２プロセッサ１１１の起動ログの取得処理を行う。起動ログは、メインプログラムを起動する処理の履歴を構成するデータである。
また、第１ＲＯＭ１０２は、第１プロセッサ１０１のメインプログラムの起動を行う起動プログラムであるブートローダを記憶する。第１プロセッサ１０１は、ブートローダを第１ＲＡＭ１０３に読み出して、実行することで、メインプログラムを起動させる。そして、第１プロセッサ１０１は、メインプログラムを起動する際の処理の履歴を構成する起動ログを第２プロセッサ１１１にシリアル通信路１３０を介して送る。例えば、第１プロセッサ１０１は、メインプログラムの起動時に予め定められた処理を行うと、予め定められた起動ログをシリアル通信路１３０を介して第２プロセッサ１１１に送る。第２プロセッサ１１１では、第１プロセッサ１０１からの起動ログをシリアル通信路１３０を介して蓄積することにより、第１プロセッサ１０１のメインプログラムの起動時の処理の履歴を取得することができる。
【００１８】
第１ＲＡＭ１０３は、第１プロセッサ１０１がプログラムを実行するための一時記憶装置（揮発メモリ）である。
【００１９】
ネットワークコントローラ１０４は、ネットワーク１４１との間で通信を行う通信部である。例えば、ネットワークコントローラ１０４は、監視カメラ１４０からの圧縮映像データを受信する。
ＨＤＤ１０５は、監視レコーダ１００で必要なデータを記憶する記憶装置である。例えば、ＨＤＤ１０５は、ネットワークコントローラ１０４で受信された圧縮映像データを記憶する。なお、ＨＤＤ１０５は、書き込み回数に制限のない記憶装置である。
第１ＬＡＮコントローラ１０６は、第２プロセッサ１１１に圧縮映像データを送信する。
【００２０】
第２プロセッサ１１１は、監視レコーダ１００において、主に再生表示処理を行うプロセッサである。例えば、第２プロセッサ１１１は、第１プロセッサ１０１から、ＬＡＮ１３１を介して圧縮映像データを受信して、圧縮映像データを伸張し、表示部としての表示装置１５０に表示させる。第２プロセッサ１１１は、第１プロセッサ１０１とシリアル通信を行うため、シリアル通信機能を備えている。
第２ＲＯＭ１１２は、第２プロセッサ１１１を動作させるためのプログラムを記憶した記憶装置（不揮発メモリ）である。第２ＲＯＭ１１２は、プログラムアップデートを実現するために、少なくとも２種類のメインプログラム（第１メインプログラム及び第２メインプログラム）を記憶する。言い換えると、２種類のメインプログラムのうち、一方を使って実行しているときには、もうひとつのメインプログラムをアップデート（書き換え）することができる。また、プログラムアップデート後に、システムを再起動して、第２ＲＯＭ１１２に記憶されている新しいバージョンのメインプログラムを実行することでシステムの更新を行うことができる。仮に新しいバージョンのメインプログラムに何らかの不具合があって、正常に起動できない場合には、後述する起動不具合の検出方法によって、第１プロセッサ１０１を再起動し、元のメインプログラムを使って起動させる。なお、第２ＲＯＭ１１２は、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙではあるが、特別なコマンドによりデータを書き換え可能なＲＯＭ（いわゆるＦｌａｓｈＲＯＭ）である。ここで、第２プロセッサ１１１は、メインプログラムを実行することで、監視レコーダ１００における再生表示処理を行う。
また、第２ＲＯＭ１１２は、第２プロセッサ１１１のメインプログラムの起動を行う起動プログラムであるブートローダを記憶する。第２プロセッサ１１１は、ブートローダを第２ＲＡＭ１１３に読み出して、実行することで、第１プロセッサ１０１から、シリアル通信路１３０を介して送信される起動ログの取得処理を行う。また、第２プロセッサ１１１は、ブートローダを第２ＲＡＭ１１３に読み出して、実行することで、メインプログラムを起動させる。そして、第２プロセッサ１１１は、メインプログラムの起動時の処理の履歴を構成する起動ログを第１プロセッサ１０１にシリアル通信路１３０を介して送る。例えば、第２プロセッサ１１１は、メインプログラムの起動時に予め定められた処理を行うと、予め定められた起動ログをシリアル通信路１３０を介して第１プロセッサ１０１に送る。第１プロセッサ１０１では、第２プロセッサ１１１からシリアル通信路１３０を介して送信される起動ログを蓄積することにより、第２プロセッサ１１１のメインプログラムの起動時の処理の履歴を取得することができる。
【００２１】
第２ＲＡＭ１１３は、第２プロセッサ１１１がプログラムを実行するための一時記憶装置（揮発メモリ）である。
第２ＬＡＮコントローラ１１４は、第１ＬＡＮコントローラ１０６から送信された圧縮映像データを受信する。
【００２２】
シリアル通信路１３０は、第１プロセッサ１０１及び第２プロセッサ１１１をシリアル通信で接続するための通信路である。
ＬＡＮ１３１は、第１ＬＡＮコントローラ１０６と、第２ＬＡＮコントローラ１１４とを接続するための通信路である。
【００２３】
制御部１２１は、第１プロセッサ１０１及び第２プロセッサ１１１の管理を行う。
制御部１２１は、起動管理部１２１ａと、強制起動部１２１ｂとを備える。
起動管理部１２１ａは、第１プロセッサ１０１及び第２プロセッサ１１１の起動を管理する。例えば、起動管理部１２１ａは、第１プロセッサ１０１と、第２プロセッサ１１１のリセット制御、起動状態監視、及び、起動するメインプログラムの指示等を行う。
強制起動部１２１ｂは、第１プロセッサ１０１にてメインプログラムの起動が完了しないとき、起動管理部１２１ａに指示して、第２プロセッサ１１１にメインプログラムを起動させる。言い換えると、強制起動部１２１ｂは、予め定められた時間内に、第１プロセッサ１０１で第１メインプログラムの起動が完了しないときには、第２プロセッサ１１１が第２メインプログラムを起動開始するように、起動管理部１２１ａに指示させる。
リセット制御部１２２は、電源ＯＮ時に起動管理部１２１ａに対してリセット制御を行う。
タイマ１２３は、時間を計測する。例えば、タイマ１２３は、起動管理部１２１ａから設定された時間からカウントダウンして、「０」になると起動管理部１２１ａに通知する。
エラーＬＥＤ１２４は、第１プロセッサ１０１及び第２プロセッサ１１１のいずれも起動不具合となった場合のエラー状態を表示するための表示デバイスである。
【００２４】
プログラム起動面記憶部１２５は、第１ＲＯＭ１０２及び第２ＲＯＭ１１２に記憶されている２種類のメインプログラムのうち、どちらから起動するかの起動面を指定する起動面情報を記憶する。起動するメインプログラムの指示は、第１プロセッサ１０１又は第２プロセッサ１１１が、起動管理部１２１ａに問合せを行い、起動管理部１２１ａが、プログラム起動面記憶部１２５に記憶されている起動面情報に基づいて、起動するメインプログラムを伝えることで行われる。
ＯＳ起動完了フラグ記憶部１２６は、ＯＳの起動が完了したか、ＯＳの起動が失敗したかを示すＯＳ起動完了フラグを記憶する。
起動失敗回数記憶部１２７は、ＯＳの起動に失敗した回数を示す起動失敗回数を記憶する。
【００２５】
ここで、制御部１２１及びリセット制御部１２２は、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）又はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等で実現することができる。なお、プログラム起動面記憶部１２５及び起動失敗回数記憶部１２７は、ＲＯＭ等の書き換え可能な不揮発メモリ、ＯＳ起動完了フラグ記憶部１２６は、ＲＡＭ等の揮発メモリにより実現することができる。
【００２６】
次に、システム起動時の動作について、図２〜図４のフロー図を用いて説明する。
図２〜図４は、第１プロセッサ１０１、第２プロセッサ１１１及び制御部１２１の処理の流れを説明するシーケンス図である。なお、図２〜図４では、メインプログラムとしてＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が起動される。
【００２７】
まず、監視レコーダ１００の電源がＯＮにされることで、第１プロセッサ１０１、第２プロセッサ１１１及び制御部１２１の電源がＯＮになる（Ｓ５０１）。
制御部１２１は、電源ＯＮ（Ｓ５０１）の後、リセット制御部１２２の制御に従って、リセットが解除される（Ｓ６０１）。この時、第１プロセッサ１０１及び第２プロセッサ１１１は、制御部１２１からの制御でリセット状態となっている。
【００２８】
次に、制御部１２１の起動管理部１２１ａは、第１プロセッサ１０１と第２プロセッサ１１１のリセット解除を行う（Ｓ５０２、Ｓ７０１）とともに、タイマ１２３に対して、５秒の時間を設定し、カウントダウンをスタートさせる（Ｓ６０２）。
第１プロセッサ１０１は、起動管理部１２１ａがリセットを解除すると（Ｓ５０２）、ブートローダと呼ばれる起動プログラムを起動させる（Ｓ５０３）。
また、第２プロセッサ１１１も、起動管理部１２１ａがリセットを解除すると（Ｓ７０１）、ブートローダを起動させる（Ｓ７０２）。
ここで、ブートローダは、プロセッサの動作に必要な設定を行い、システムに必要なメインプログラムであるオペレーティングシステム（ＯＳ）を読み出して実行することまでを行うプログラムである。
【００２９】
第１プロセッサ１０１は、ブートローダを起動することで、プロセッサのクロック設定、キャッシュ設定、第１ＲＯＭ１０２のアクセスパラメータの設定、第１ＲＡＭ１０３の初期化、シリアル通信路１３０に必要なコントローラの設定、及び、第１プロセッサ１０１の入出力ポートの設定等、必要最小限の設定のみを行ったあと、ブートローダの起動完了通知を起動管理部１２１ａに行う（Ｓ５０４）。言い換えると、第１プロセッサ１０１は、ブートローダの起動がＯＳを読み出す前まで完了すると、起動管理部１２１ａにブートローダ起動完了の通知を行う。
その後、第１プロセッサ１０１は、ブートローダを起動することで、ＯＳを第１ＲＯＭ１０２から読み出して、第１ＲＡＭ１０３にコピーし、ＯＳを実行するところまでを行う（Ｓ５０５）。そして、第１プロセッサ１０１での処理は、図３のステップＳ５０６に進む。
【００３０】
第２プロセッサ１１１でも同様に、ブートローダを起動することで、プロセッサのクロック設定、キャッシュ設定、第２ＲＯＭ１１２のアクセスパラメータの設定、第２ＲＡＭ１１３の初期化、シリアル通信路１３０に必要なコントローラの設定、及び、第２プロセッサ１１１の入出力ポートの設定等、必要最小限の設定のみを行ったあと、ブートローダの起動完了通知を行う（Ｓ７０３）。言い換えると、第２プロセッサ１１１も、ブートローダの起動がＯＳを読み出す前まで完了すると、起動管理部１２１ａにブートローダ起動完了の通知を行う。
その後、第２プロセッサ１１１は、ブートローダを起動することで、ＯＳを第２ＲＯＭ１１２から読み出して、第２ＲＡＭ１１３にコピーし、ＯＳを実行するところまでを行う（Ｓ７０４）。そして、第２プロセッサ１１１での処理は、図３のステップＳ７０５に進む。
【００３１】
なお、ブートローダの起動完了通知は、例えば、第１プロセッサ１０１及び第２プロセッサ１１１の特定の端子を起動管理部１２１ａが監視することで実現できる。具体的には、第１プロセッサ１０１の特定の端子が、リセット解除後に、ＨｉｇｈレベルからＬｏｗレベルに変化したことを起動管理部１２１ａが監視することで、把握することができる。第２プロセッサ１１１から起動管理部１２１ａに通知する場合も同様である。
【００３２】
なお、ネットワークコントローラ１０４、ＨＤＤ１０５、第１ＬＡＮコントローラ１０６及び第２ＬＡＮコントローラ１１４については、それらを動作させるために必要なプログラムが多く、ＯＳを起動させるまでは必要ではないので、ブートローダでは初期化等を行わず、ＯＳ起動時に初期化及び設定等が行われ、使用可能になる。
【００３３】
第１プロセッサ１０１及び第２プロセッサ１１１がブートローダを起動させている間、起動管理部１２１ａは、タイマ１２３から時間の経過が通知されたか否かを確認する（Ｓ６０３）。ここで、第１プロセッサ１０１及び第２プロセッサ１１１のブートローダの起動完了通知の前に、ステップＳ６０２で設定した５秒の時間が経過した場合（Ｓ６０３でＹｅｓ）、言い換えると、５秒以内に、ブートローダの起動が完了しなかった場合には、何らかの問題が発生したと判断し、エラーＬＥＤ１２４を点滅させて利用者に知らせる（Ｓ６０４）。ブートローダは、前述の通り、クロックの初期化及びＲＡＭの初期化等、ハードウエアの基本的な設定のみをおこなっているプログラムであるため、ブートローダの起動が完了しない（ブートローダの起動完了通知まで処理が進まない）場合は、ハードウエア故障の可能性が高い。このため、起動管理部１２１ａは、それ以降の処理を中止し、その旨をエラーＬＥＤ１２４に表示させる。言い換えると、第１プロセッサ１０１及び第２プロセッサ１１１が、ブートローダの実行を開始してから、予め定められた処理が行われる前に、予め定められた時間が経過した場合には、ブートローダの起動エラーとして、通知が行われる。
【００３４】
次に、起動管理部１２１ａは、第１プロセッサ１０１及び第２プロセッサ１１１からブートローダ起動完了通知を受信したか否かを確認する（Ｓ６０５）。受信していない場合（Ｓ６０５でＮｏ）には、起動管理部１２１ａの処理はステップＳ６０３に戻る。両方からのブートローラ起動完了通知を受信した場合（Ｓ６０５でＹｅｓ）には、起動管理部１２１ａの処理は、図３のステップＳ６０６に進む。
【００３５】
図３のステップＳ５０６では、第１プロセッサ１０１は、起動プログラムを実行して、起動管理部１２１ａに指示することで、プログラムの起動面を確認する。起動管理部１２１ａは、プログラム起動面記憶部１２５に記憶されている起動面を指定する情報を第１プロセッサ１０１に通知し、第１プロセッサ１０１は、起動面を指定する情報に基づいて、指定されるＯＳを第１ＲＯＭ１０２から読み出して、ＯＳを起動する（Ｓ５０７）。
【００３６】
図５は、第１ＲＯＭ１０２に記憶されているプログラムの配置例を示す概略図である。
第１ＲＯＭ１０２は、ブートローダ１０と、第１プロセッサ用第１メインプログラム１１と、第１プロセッサ用第２メインプログラム１２と、第２プロセッサの起動ログ１３とを記憶する。
ブートローダ１０は、第１プロセッサ１０１用のブートローダである。第１プロセッサ１０１のリセット解除後は、第１プロセッサ１０１は、必ず、アドレス０ｘ００００００００番地からプログラムを読み出し、実行するように構成されているため、ブートローダ１０は、アドレス０ｘ００００００００番地から配置される。
第１プロセッサ用第１メインプログラム１１及び第１プロセッサ用第２メインプログラム１２は、第１プロセッサ１０１用のＯＳを含む。第１プロセッサ１０１は、起動管理部１２１ａに指示することで、プログラムの起動面を確認し、その指示に従って、第１プロセッサ用第１メインプログラム１１又は第１プロセッサ用第２メインプログラム１２に含まれるＯＳを読み出し、実行する。
第２プロセッサの起動ログ１３は、後述のようにして、第２プロセッサ１１１から送られてきた起動ログである。
【００３７】
図３に戻り、第１プロセッサ１０１は、ブートローダを第１ＲＡＭ１０３に読み出して、実行することで、ＯＳの起動面を確認（Ｓ５０６）し、ＯＳを起動する（Ｓ５０７）。ＯＳは、第１プロセッサ１０１上で動作するプログラムの基本システムであり、ＯＳを起動することで、第１プロセッサ１０１は、ネットワークコントローラ１０４、ＨＤＤ１０５及び第１ＬＡＮコントローラ１０６の初期設定、並びに、必要なプログラムの初期化を行う。その時の起動ログについては、シリアル通信路１３０に出力され、第２プロセッサ１１１が受信する（Ｓ５０８）。
【００３８】
図６は、第１プロセッサ１０１がＯＳを実行しているときの第１ＲＡＭ１０３のプログラムの配置（メモリマップ）例を示す概略図である。
第１ＲＡＭ１０３は、アドレス０ｘＣ０００００００から配置され、アドレス０ｘＦＦＦＦＦＦＦＦまでの１ＧＢｙｔｅ分搭載されているとする。なお、ＯＳがメモリ内でどのように動作していくかについては、次の通りである。
ＯＳには、１ＧＢｙｔｅあるメモリのうち、アドレス０ｘＣ０００００００から、アドレス０ｘＢＦＦＦＦＦＦＦまでの５１２ＭＢｙｔｅの領域２０が割り当てられている。このような場合、ＯＳは、メモリを有効に使用するため、メモリ領域の先頭から配置され、ＯＳが利用可能な範囲まで確保する。その領域２０の中に、ネットワークコントローラ１０４用のバッファ２１や、ＬＡＮコントローラ１０６用のバッファ２２及びＨＤＤドライブにアクセスするためのバッファ２３等が適宜配置される。
【００３９】
図３のステップＳ７０５では、第２プロセッサ１１１は、ブートローダを第２ＲＡＭ１１３に読み出して、実行することで、第１プロセッサ１０１からシリアル通信路１３０を介して送信された起動ログを受信し、第２ＲＡＭ１１３に記憶する。
【００４０】
図７は、第２プロセッサ１１１が、第１プロセッサ１０１からシリアル通信路１３０で送信される起動ログを取得しているときの第２ＲＡＭ１１３のプログラムの配置（メモリマップ）例を示す概略図である。
第２ＲＡＭ１１３は、アドレス０ｘ８０００００００から配置され、アドレス０ｘＦＦＦＦＦＦＦＦまでの２ＧＢｙｔｅ分搭載されているとする。
ブートローダは、この２ＧＢｙｔｅを全て利用することが可能であるが、ＯＳの実行を考慮すると、アドレス０ｘ８１００００００から０ｘ８１ＦＦＦＦＦＦまでの１６ＭＢｙｔｅの領域３０をワークメモリとして使用する。また、第２ＲＯＭ１１２に記憶されているＯＳを一旦コピーする領域３１として、アドレス０ｘ０８２０００００からの１６ＭＢｙｔｅが確保されている。
そして、第１プロセッサ１０１がシリアル通信路１３０を介して送信してくる起動ログを、第２プロセッサ１１１は、第２ＲＡＭ１１３のアドレス０ｘ８８００００００以降の領域３２に順次書き込んでいく。
【００４１】
図２において、第１プロセッサ１０１及び第２プロセッサ１１１からブートローダ起動完了通知を受けた後（Ｓ６０５でＹｅｓ）、図３のステップＳ６０６において、起動管理部１２１ａは、タイマ１２３に対して、３０秒の時間を設定して、カウントダウンをスタートさせる。この３０秒の時間は、第１プロセッサ１０１でのＯＳの起動の失敗を判断する時間である。３０秒以内に第１プロセッサ１０１のＯＳ起動が完了しなければ、起動管理部１２１ａは、ＯＳの起動に何らかの問題があったと判断する。
【００４２】
そして、起動管理部１２１ａは、タイマ１２３から時間の経過が通知されたか否かを確認する（Ｓ６０７）。時間の経過が通知されていなければ（Ｓ６０７でＮｏ）、処理はステップＳ６０８に進み、時間の経過が通知されていれば（Ｓ６０７でＹｅｓ）、処理はステップＳ６１１に進む。
ステップＳ６０８では、起動管理部１２１ａは、第１プロセッサ１０１でＯＳの起動が完了したか否かを確認する。ＯＳの起動が完了していなければ（Ｓ６０８でＮｏ）、処理はステップＳ６０７に戻り、ＯＳの起動が完了していれば（Ｓ６０８でＹｅｓ）、処理はステップＳ６０９に進む。
【００４３】
第１プロセッサ１０１は、ＯＳの起動が完了すると（Ｓ５０９）、起動管理部１２１ａにＯＳ起動完了の通知を行う（Ｓ５１０）。この通知は、ブートローダ起動完了のときと同様に、第１プロセッサ１０１の特定の端子を起動管理部１２１ａが監視することで実現できる。例えば、第１プロセッサ１０１の特定の端子（ブートローダ起動完了通知の端子とは別）が、リセット解除後に、ＨｉｇｈレベルからＬｏｗレベルに変化したことを起動管理部１２１ａが監視することで、把握することができる。
【００４４】
ステップＳ６０８において、第１プロセッサ１０１のＯＳ起動完了が確認できると（Ｓ６０８でＹｅｓ）、ステップＳ６０９において、起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されている第１プロセッサ１０１のＯＳ起動完了フラグを「起動完了」にセットする。次に、起動管理部１２１ａは、第２プロセッサ１１１にＯＳを起動させるため（Ｓ６１０）、そのような指示を行う（Ｓ７０６）。
【００４５】
図８は、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグ１２６ａの一例を示す概略図である。
ＯＳ起動完了フラグ１２６ａは、第１プロセッサ１０１用のフラグ格納領域１２６ｂと、第２プロセッサ１１１用のフラグ格納領域１２６ｃとを備える。ステップＳ６０９での処理により、第１プロセッサ１０１用のフラグ格納領域１２６ｂに、「起動完了」を示す情報が格納されている。
【００４６】
図３に戻り、ステップＳ６０７で、３０秒の時間が経過している場合（Ｓ６０７でＹｅｓ）には、ステップＳ６１１において、起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグ１２６ａにおいて、第１プロセッサ１０１用のフラグ格納領域１２６ｂに「起動失敗」を示す情報を格納する。このとき、強制起動部１２１ｂは、第１プロセッサのＯＳが起動失敗したと判断し、第２プロセッサ１１１にＯＳを強制的に起動させるため（Ｓ６１２）、起動管理部１２１ａにそのような指示を行わせる（Ｓ７０７）。これにより、第１プロセッサのＯＳが起動失敗した場合においても、第２ＲＡＭ１１３上に一時的に記憶していた第１プロセッサ１０１の起動ログを、第２ＲＯＭ１１２の第１プロセッサ起動ログ領域（図９参照）に記憶することが可能となる。
【００４７】
次に、起動管理部１２１ａは、タイマ１２３に対して、３０秒間の時間を設定してカウントダウンをスタートさせる（Ｓ６１３）。この３０秒の時間は、第２プロセッサ１１１でのＯＳの起動の失敗を判断する時間である。３０秒以内に第２プロセッサ１１１がＯＳの起動を完了しなければ、起動管理部１２１ａは、ＯＳの起動に何らかの問題があったと判断する。
【００４８】
第２プロセッサ１１１は、ブートプログラムを第２ＲＡＭ１１３に読み出して、実行し、起動管理部１２１ａに指示することで、プログラムの起動面を確認する（Ｓ７０８）。起動管理部１２１ａは、プログラム起動面記憶部１２５に記憶されている起動面を指定する情報を第２プロセッサ１１１に通知し、第２プロセッサ１１１は、起動面を指定する情報に基づいて、指定されるＯＳを第２ＲＯＭ１１２から読み出して、ＯＳを起動する（Ｓ７０９）。
【００４９】
図９は、第２ＲＯＭ１１２に記憶されているプログラムの配置例を示す概略図である。
第２ＲＯＭ１１２は、ブートローダ４０と、第２プロセッサ用第１メインプログラム４１と、第２プロセッサ用第２メインプログラム４２と、第１プロセッサの起動ログ４３とを記憶する。
ブートローダ４０は、第２プロセッサ１１１用のブートローダである。第２プロセッサ１１１は、ＯＳの起動指示を受けると、必ず、アドレス０ｘ００００００００番地からプログラムを読み出し、実行するように構成されているため、ブートローダ４０は、アドレス０ｘ００００００００番地から配置される。
第２プロセッサ用第１メインプログラム４１及び第２プロセッサ用第２メインプログラム４２は、第２プロセッサ１１１用のＯＳを含む。第２プロセッサ１１１は、起動管理部１２１ａに指示することで、プログラムの起動面を確認し、その指示に従って、第２プロセッサ用第１メインプログラム４１又は第２プロセッサ用第２メインプログラム４２に含まれるＯＳを読み出し、実行する。
第１プロセッサの起動ログ４３は、後述のようにして、第１プロセッサ１０１から送られてきた起動ログである。
【００５０】
ここで、ブートローダが動作した後、ＯＳが起動するときのメモリ（ＲＡＭ）内での動作について説明する。ＯＳ（カーネルともいう）も実態はひとつの実行プログラムが動作しており、高速で動作するためにＲＡＭ上にプログラムを全て配置して実行される。この時、連続したメモリ領域のほうが効率的、かつ高速に動作することができるため、ＲＡＭの先頭からＯＳが配置される。
【００５１】
ブートローダは、ＯＳ（カーネル）の実行イメージをＲＯＭからＲＡＭ上に一旦コピーして、それを実行することで、その後は、ＯＳがＲＡＭの先頭に配置される。そして、ＯＳが動作していくに従って、メモリ配置は、ＯＳが指定するメモリ配置に変更されていく。従って、ブートローダの配置したメモリ配置は、ＯＳが起動し、ＯＳの指定するメモリ配置でプログラムが動作するまでである。
【００５２】
以上の動作を、第２プロセッサ１１１の例として、図１０及び図１１を用いて説明する。
図１０において、ブートローダは、ＯＳダウンロード領域５０にＯＳ５１をコピーする。そして、ブートローダは、ＯＳ５１を実行する。
【００５３】
ＯＳ５１は、実行されると第２ＲＡＭ１１３の先頭の領域５２にプログラムを配置する。また、ＯＳ５１は、例えば、第１プロセッサ１０１の起動ログを保存したログ記憶領域５３（アドレス０ｘ８８００００００以降の１６ＭＢｙｔｅ）についても、グラフィック用メモリ領域として割り当てる場合、起動ログが消えてしまう。このため、ＯＳ５１は、図１１に示されているように、ログ記憶領域５３をグラフィック用メモリ領域として使用する前に、起動ログ５４を、ＯＳが使用する領域５５にコピーする。
【００５４】
その後、図１２に示されているように、ＯＳ５１は、ログ記憶領域をグラフィック用メモリ領域５６として割り当て、それ以外のメモリ領域についても、例えば、デコーダ使用領域５７等に割り当てる。
【００５５】
この起動ログ５４は、ＯＳの使用する領域５５に保存されているが、このような例に限定されない。例えば、起動ログ５４は、第２ＲＡＭ１１３上に一時的に生成されるＲＡＭディスク、第２ＲＯＭ１１２内に用意される起動ログ保存領域（図５参照）に保存されてもよい。
【００５６】
また、起動不具合時に多くの起動ログが出力されることが多いが、起動不具合解析に必要な情報は、不具合発生直後に含まれることがほとんどで、不具合状態になってから出力される起動ログについては、あまり意味がない場合も多い。このため、起動ログ５４として確保しておくメモリ容量は一定量（例えば、１ＭＢｙｔｅ程度）でもかまわない。
【００５７】
図３に戻り、第２プロセッサ１１１は、第１プロセッサ１０１の起動ログをＯＳ起動後に確認可能な領域に退避させ、ＯＳの起動を完了させると（Ｓ７１１）、完了通知を起動管理部１２１ａに送信する（Ｓ７１２）。そして、第２プロセッサ１１１での処理は、図４のステップＳ７１３に進む。
【００５８】
一方、第１プロセッサ１０１は、ステップＳ５０９でＯＳの起動を完了しており、第２プロセッサ１１１の起動ログの取得を行う（Ｓ５１１）。第２プロセッサ１１１は、第１プロセッサ１０１にシリアル通信路１３０を介して起動ログを送信する（Ｓ７１０）。
第１プロセッサ１０１では、既にＯＳが起動した後であるため、第１プロセッサ１０１は、ＯＳ上で動作するシリアル通信データを取得するプログラムで、第２プロセッサ１１１の起動ログを取得し、その起動ログを、そのまま、既に動作しているＨＤＤ１０５に記憶してもよい。また、第１プロセッサ１０１は、起動ログを、第１ＲＡＭ１０３上に一時的に生成するＲＡＭディスクに保存し、第２プロセッサ１１１がＯＳ起動に失敗したと判定されたときに、第１ＲＯＭ１０２内の、第２プロセッサ１１１の起動ログの格納領域に保存してもよい。そして、第１プロセッサ１０１での処理は、図４のステップＳ５１３に進む。
【００５９】
起動管理部１２１ａは、ステップＳ６１３で、タイマ１２３に３０秒の時間を設定した後、タイマ１２３から時間の経過が通知されたか否かを確認する（Ｓ６１４）。時間の経過が通知されていなければ（Ｓ６１４でＮｏ）、処理はステップＳ６１５に進み、時間の経過が通知されていれば（Ｓ６１４でＹｅｓ）、処理はステップＳ６１７に進む。
ステップＳ６１５では、起動管理部１２１ａは、第２プロセッサ１１１でＯＳの起動が完了したか否かを確認する。ＯＳの起動が完了していなければ（Ｓ６１５でＮｏ）、処理はステップＳ６１４に戻り、ＯＳの起動が完了していれば（Ｓ６１５でＹｅｓ）、処理はステップＳ６１６に進む。
【００６０】
ステップＳ６１５において、第２プロセッサ１１１のＯＳ起動完了が確認できると（Ｓ６１５でＹｅｓ）、ステップＳ６１６において、起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されている第２プロセッサ１１１のＯＳ起動完了フラグを「起動完了」にセットする。
図１３に示されているように、ステップＳ６１６の処理が行われることにより、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグ１２６ａにおいて、第２プロセッサ１１１用のフラグ格納領域１２６ｃに、「起動完了」を示す情報が格納される。
【００６１】
図３に戻り、ステップＳ６１４で、３０秒の時間が経過している場合（Ｓ６１４でＹｅｓ）には、ステップＳ６１７において、起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグ１２６ａにおいて、第２プロセッサ１１１用のフラグ格納領域１２６ｃに「起動失敗」を示す情報を格納する。
【００６２】
次に、起動管理部１２１ａは、第１プロセッサ１０１に対して、第２プロセッサ１１１の起動ログ取得を完了する指示を通知する（Ｓ６１８）。このような完了通知を受けて（Ｓ５１２）、第１プロセッサ１０１は、第２プロセッサ１１１の起動ログ取得を停止する。この通知は、ブートローダ起動完了のときと同様に、第１プロセッサ１０１の特定の端子を起動管理部１２１ａが監視することで実現できる。例えば、第１プロセッサ１０１の特定の端子が、ＨｉｇｈレベルからＬｏｗレベルに変化したことを起動管理部１２１ａが監視することで、把握することができる。そして、制御部１２１での処理は、図４のステップＳ６１９に進む。
【００６３】
図４のステップＳ６１９では、起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグに基づいて、第１プロセッサ１０１及び第２プロセッサ１１１のＯＳ起動状態を判定する。そして、第１プロセッサ１０１及び第２プロセッサ１１１の少なくとも何れか一方において、ＯＳの起動に成功している場合（Ｓ６１９でＮｏ）には、起動管理部１２１ａにおける起動処理を終了する（Ｓ６２０）。一方、第１プロセッサ１０１及び第２プロセッサ１１１の両方でＯＳの起動に失敗している場合（Ｓ６１９でＹｅｓ）には、処理はステップＳ６２１に進む。
【００６４】
ステップＳ６２１では、起動管理部１２１ａは、プログラム起動面記憶部１２５に記憶されている起動面情報を、現在の起動面とは逆の起動面となるように更新する。そして、起動管理部１２１ａは、起動失敗回数記憶部１２７の起動失敗回数に「１」を加算して、第１プロセッサ１０１及び第２プロセッサ１１１の両方を再起動する。
【００６５】
また、図４のステップＳ５１３では、第１プロセッサ１０１は、第２プロセッサ１１１のＯＳの起動状態を確認する。例えば、第１プロセッサ１０１は、起動管理部１２１ａに、第２プロセッサ１１１のＯＳの起動状態が起動完了か、起動失敗か、を問い合わせる。このような問い合わせを受けた起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグ１２６ａを参照して、第２プロセッサ１１１のＯＳ起動状態を第１プロセッサ１０１に通知する。そして、第１プロセッサ１０１は、このような通知に基づいて、第２プロセッサ１１１のＯＳの起動状態を判定する。第２プロセッサ１１１が起動失敗の場合（Ｓ５１３でＹｅｓ）には、処理はステップＳ５１４に進み、第２プロセッサ１１１が起動完了の場合（Ｓ５１３でＮｏ）には、処理はステップＳ５１５に進む。
【００６６】
ステップＳ５１４では、第１プロセッサ１０１は、第１ＲＡＭ１０３上に一時的に記憶していた第２プロセッサ１１１の起動ログを、ＨＤＤ１０５、又は、第１ＲＯＭ１０２の第２プロセッサ起動ログ領域（図５参照）に記憶する。そして、処理はステップＳ６２１に進む。
一方、ステップＳ５１５では、第１プロセッサ１０１は、監視レコーダ１００に必要なプログラムを実行する。
【００６７】
図４のステップＳ７１３では、第２プロセッサ１１１は、第１プロセッサ１０１のＯＳの起動状態を確認する。例えば、第２プロセッサ１１１は、起動管理部１２１ａに、第１プロセッサ１０１のＯＳの起動状態が起動完了か、起動失敗か、を問い合わせる。このような問い合わせを受けた起動管理部１２１ａは、ＯＳ起動完了フラグ記憶部１２６に記憶されているＯＳ起動完了フラグ１２６ａを参照して、第１プロセッサ１０１の起動状態を第２プロセッサ１１１に通知する。そして、第２プロセッサ１１１は、このような通知に基づいて、第１プロセッサ１０１のＯＳの起動状態を判定する。第１プロセッサ１０１が起動失敗の場合（Ｓ７１３でＹｅｓ）には、処理はステップＳ７１４に進み、第１プロセッサ１０１が起動完了の場合（Ｓ７１３でＮｏ）には、処理はステップＳ７１５に進む。
【００６８】
ステップＳ７１４では、第２プロセッサ１１１は、第２ＲＡＭ１１３上に一時的に記憶していた第１プロセッサ１０１の起動ログを、第２ＲＯＭ１１２の第１プロセッサ起動ログ領域（図９参照）に記憶する。ここまでの処理により、第１プロセッサ１０１のＯＳが起動失敗した場合においても、第１プロセッサ１０１の起動ログを保管しておくことが可能となり、ＯＳ起動失敗の原因調査を容易化できるという効果が得られる。また、この効果により、客先に設置された監視レコーダにてＯＳが起動失敗したときの原因調査及び対策の迅速化を図ることが可能となり、顧客へのサービス対応を向上できるという効果も得られる。そして、処理はステップＳ６２１に進む。
一方、ステップＳ７１５では、第２プロセッサ１１１は、監視レコーダ１００に必要なプログラムを実行する。
【００６９】
ステップＳ６２１の再起動によって、第１プロセッサ１０１は、第１ＲＯＭ１０２のもう一つのメインプログラムを用いて起動し、第２プロセッサ１１１は、第２ＲＯＭ１１２のもう一つのメインプログラムを用いて起動するため、ハードウエアが原因の起動不具合でなければ、正常起動する確率は非常に高くなる。このため、監視レコーダ１００におけるシステムの品質を高めることができる。
起動後、例えば、第１プロセッサ１０１又は第２プロセッサ１１１は、起動失敗回数記憶部１２７の起動失敗回数がゼロでない場合、何らかの起動失敗が前回の起動時にあったと認識することができる。このため、第１プロセッサ１０１又は第２プロセッサ１１１は、ＨＤＤ１０５又は第１ＲＯＭ１０２に記憶されている第２プロセッサ１１１の起動ログ、又は、第２ＲＯＭ１１２に記憶されている第１プロセッサ１０１の起動ログを利用者に表示したり、起動ログが記憶されていることを利用者に告知したりすることができる。例えば、第２プロセッサ１１１は、表示装置１５０に起動ログを表示する画面、又は、起動ログが記憶されていることを示す画面を表示させることができる。また、第１プロセッサ１０１は、起動ログが記憶されていることを示す情報を含む電子メールを生成し、ネットワークコントローラ１０４を介して、予め定められた利用者の端末に送信することができる。さらに、起動管理部１２１ａは、エラーＬＥＤ１２４を点滅させることで、起動ログが記憶されていることを利用者に通知してもよい。
【００７０】
実施の形態２
図１に示されているように、実施の形態２に係る監視レコーダ２００は、第１プロセッサ１０１と、第１ＲＯＭ１０２と、第１ＲＡＭ１０３と、ネットワークコントローラ１０４と、ＨＤＤ１０５と、第１ＬＡＮコントローラ１０６と、第２プロセッサ２１１と、第２ＲＯＭ１１２と、第２ＲＡＭ１１３と、第２ＬＡＮコントローラ１１４と、制御部１２１と、リセット制御部１２２と、タイマ１２３と、エラーＬＥＤ１２４と、プログラム起動面記憶部１２５と、ＯＳ起動完了フラグ記憶部１２６と、起動失敗回数記憶部１２７と、シリアル通信路１３０と、ＬＡＮ１３１とを備える。実施の形態２に係る監視レコーダ２００は、第２プロセッサ２１１の第２ＲＡＭ１１３の利用方法が異なる他は、実施の形態１に係る監視レコーダ１００と同様に構成されている。
【００７１】
実施の形態１においては、図７に示されているように、第２プロセッサ１１１のブートローダ動作時における第２ＲＡＭ１１３のメモリ配置において、アドレス０ｘ８８００００００以降がログ領域とされている。このため、実施の形態１では、取得した起動ログが、どこまで書き込まれているかを判断することができない。
そこで、実施の形態２における第２プロセッサ２１１は、起動ログ取得時に、起動ログのデータサイズの合計をカウントして、起動ログ取得終了時に、カウントされたデータサイズの合計をヘッダ情報として、起動ログの先頭に書き込んでおく。
【００７２】
例えば、図１４に示すように、第２プロセッサ２１１は、第２ＲＡＭ１１３のアドレス０ｘ８８００００１０以降の領域６０に起動ログを書き込んで、そのデータの書き込み後に、アドレス０ｘ８８００００００の領域６１に、起動ログのデータサイズを書き込む。そして、第１プロセッサ１０１の起動が失敗して、起動ログを第２ＲＯＭ１１２に記憶するときには、第２プロセッサ２１１は、アドレス０ｘ８８００００００の領域６１に記載されている起動ログのデータサイズを参照してから、そのサイズ分のデータを、第２ＲＯＭ１１２に書き込む。このように構成することで、第２ＲＯＭ１１２に書き込むデータサイズを少なくすることができ、第２ＲＯＭ１１２への書き込み処理時間を少なくすることができる。
【００７３】
以上に記載した実施の形態２においては、第２プロセッサ２１１が第２ＲＡＭ１１３に第１プロセッサ１０１の起動ログを記憶する際の処理を記載したが、第１プロセッサ１０１が第１ＲＡＭ１０３に第２プロセッサ２１１の起動ログを記憶する際に同様の処理を行ってもよい。
【００７４】
実施の形態３
図１５は、実施の形態３に係る監視レコーダ３００の構成を概略的に示すブロック図である。
図１５に示されているように、実施の形態３に係る監視レコーダ３００は、第１プロセッサ３０１と、第１ＲＯＭ１０２と、第１ＲＡＭ１０３と、ネットワークコントローラ１０４と、ＨＤＤ１０５と、第１ＬＡＮコントローラ１０６と、第２プロセッサ３１１と、第２ＲＯＭ１１２と、第２ＲＡＭ１１３と、第２ＬＡＮコントローラ１１４と、制御部１２１と、リセット制御部１２２と、タイマ１２３と、エラーＬＥＤ１２４と、プログラム起動面記憶部１２５と、ＯＳ起動完了フラグ記憶部１２６と、起動失敗回数記憶部１２７と、シリアル通信路１３０と、ＬＡＮ１３１とを備える。実施の形態３に係る監視レコーダ３００は、第１プロセッサ３０１及び第２プロセッサ３１１での処理を除いて、実施の形態１に係る監視レコーダ１００と同様に構成されている。
なお、実施の形態３においては、ネットワーク１４１にサーバ３６０が接続されている。
実施の形態１では、第２プロセッサ１１１で取得された第１プロセッサ１０１の起動ログは、第２ＲＯＭ１１２に記憶している。ここで、第２ＲＯＭ１１２は、ＦｌａｓｈＲＯＭで構成されているため、データの書き込み回数に制限がある。一方、ＨＤＤ１０５は、書き込み制限がない。
【００７５】
実施の形態３では、第２プロセッサ３１１で取得された第１プロセッサ３０１の起動ログの全部を、第２プロセッサ３１１がＯＳを起動するときの起動ログに追記して、第１プロセッサ３０１に送信する。これにより、第１プロセッサ３０１は、自身の起動ログを取得することができ、第１プロセッサ３０１及び第２プロセッサ３１１の起動ログを一つに集約することできる。さらに、第１プロセッサ３０１又は第２プロセッサ３１１は、起動が正常に行われた場合にも、起動のたびに、ＨＤＤ１０５に起動ログを記憶することができる。このため、起動はするが普段と違う起動ログ、又は、起動しなくなる予兆を含む起動ログ等を取得することが可能になり、起動ログを有効に活用することができる。
【００７６】
また、第１プロセッサ３０１は、ネットワーク１４１に接続されているサーバ３６０に、ＨＤＤ１０５に保存されている起動ログ、第１ＲＯＭ１０２及び第２ＲＯＭ１１２に保存されている起動ログ、又は、第１ＲＡＭ１０３及び第２ＲＡＭ１１３に一時保存されている起動ログを送信して、記憶させてもよい。
このように構成することで、監視レコーダ３００の起動時の起動ログを遠隔地から監視して、不具合の予兆や、不具合そのものを早期に発見することが可能となり、監視レコーダ３００のシステムの品質を向上させることができる。
【符号の説明】
【００７７】
１００，２００，３００  監視レコーダ、  １０１，３０１  第１プロセッサ、  １０２  第１ＲＯＭ、  １０３  第１ＲＡＭ、  １０４  ネットワークコントローラ、  １０５  ＨＤＤ、  １０６  第１ＬＡＮコントローラ、  １１１，２１１，３１１  第２プロセッサ、  １１２  第２ＲＯＭ、  １１３  第２ＲＡＭ、  １１４  第２ＬＡＮコントローラ、  １２１  制御部、  １２１ａ  起動管理部、  １２１ｂ  強制起動部、  １２２  リセット制御部、  １２３  タイマ、  １２４  エラーＬＥＤ、  １２５  プログラム起動面記憶部、  １２６  ＯＳ起動完了フラグ記憶部、  １２７  起動失敗回数記憶部、１３０  シリアル通信路、  １３１  ＬＡＮ。
【図１】
2016098376.tif 000003
【図２】
2016098376.tif 000004
【図３】
2016098376.tif 000005
【図４】
2016098376.tif 000006
【図５】
2016098376.tif 000007
【図６】
2016098376.tif 000008
【図７】
2016098376.tif 000009
【図８】
2016098376.tif 000010
【図９】
2016098376.tif 000011
【図１０】
2016098376.tif 000012
【図１１】
2016098376.tif 000013
【図１２】
2016098376.tif 000014
【図１３】
2016098376.tif 000015
【図１４】
2016098376.tif 000016
【図１５】
2016098376.tif 000017
【国際調査報告】
2016098376.tif 000018
2016098376.tif 000019