情報処理装置および監視機器システム
【課題】データ復旧の信頼性を保持しつつ、データ復旧時間の短縮を目的とする。
【解決手段】それぞれのROMに格納されているデータが一致しているか否かをアドレス毎に判定する一致検出部A101と、それぞれのROMに格納されているデータの値を加算して、第1チェックサム値を算出する加算部106と、第1チェックサム値と、予めROMに格納されている第2チェックサム値とを、それぞれのROMにおいて比較する一致検出部B105と、一致検出部A101でデータの不一致が検出されたアドレスを記憶するアドレスバッファ部103と、第2の一致検出部において、チェックサム値が不一致であると判定された場合、チェックサム値が一致しているROMから、チェックサム値が一致していないROMへ、アドレスバッファ部103に記憶されているアドレスに該当するデータをコピーするデータ復旧部104と、ことを特徴とする。
【解決手段】それぞれのROMに格納されているデータが一致しているか否かをアドレス毎に判定する一致検出部A101と、それぞれのROMに格納されているデータの値を加算して、第1チェックサム値を算出する加算部106と、第1チェックサム値と、予めROMに格納されている第2チェックサム値とを、それぞれのROMにおいて比較する一致検出部B105と、一致検出部A101でデータの不一致が検出されたアドレスを記憶するアドレスバッファ部103と、第2の一致検出部において、チェックサム値が不一致であると判定された場合、チェックサム値が一致しているROMから、チェックサム値が一致していないROMへ、アドレスバッファ部103に記憶されているアドレスに該当するデータをコピーするデータ復旧部104と、ことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ復旧を行う情報処理装置および監視機器システムの技術に関する。
【背景技術】
【0002】
監視機器が接続されている監視機器システムにおいて、監視機器システムが起動できない状態になると、復旧に手間がかかる。これは、頻繁に人が行かない場所、または人が行くのに困難を伴う場所に監視機器システム設置されることが多いためである。さらに、一度、監視機器システムが稼動を開始すると、24時間を長期間に渡って稼動し続けることが多い。このため、監視機器システムは、長期間に渡って安定稼動できる状態を保つことが重要である。このような監視機器システムにおけるシステム動作用プログラムのデータ(プログラムデータ)は、フラッシュROM(Read Only Memory)などの不揮発性ROMに格納される。通常、プログラムデータは、システム起動時に不揮発性ROMからRAM(Random Access Memory)へコピーされるため、システム起動後の不揮発性ROM内のプログラムデータは、実行中のシステム動作には影響しない。
【0003】
このような監視機器システムにおいて、不慮の停電が発生し、停電復旧後に再起動し、システム動作を再開すれば問題ないが、不揮発性ROM内のプログラムデータの破壊(データ破壊)がある場合は再起動できないこととなる。つまり、不揮発性ROMのプログラムデータが破壊されていると、予期せぬ停電が生じた際に監視動作が停止してしまうこととなる。そして、管理者へ監視機器の異常状態の通知がされないと、監視動作が停止したまま放置されてしまうことになる。異常状態の通知がされたとしても、管理者が設置場所へ出向くことが困難な場合など、監視機器の動作停止は様々な問題を生じる。
【0004】
このように、長期間に渡るシステム運用の結果、不揮発性ROMに格納していたシステム動作用プログラムデータの一部が破壊されてしまうことがしばしばある。これは、不揮発性ROM固有の部品単体の問題であり、完全に防ぐことはできない。
【0005】
このような不揮発性ROMに格納していたプログラムデータの一部破壊に関する従来技術として、特許文献1がある。特許文献1では、以下の情報処理システムおよび情報処理方法が記載されている。すなわち、特許文献1に記載の情報処理システムでは、システムを起動するための第1のプログラムおよび第1のプログラムの複製を記憶した不揮発性の第1の記憶装置と、複製の第1のプログラムが転送される揮発性の第2の記憶装置と、第1のプログラムを実行するための第2のプログラムを記憶する不揮発性の第3の記憶装置と、第1のプログラムを実行するCPU(Central Procesing Unit)とを備える。第2のプログラムには、第1の記憶装置から第2の記憶装置に複数の第1のプログラムを転送し、第2の記憶装置に転送された複数の第1のプログラムの内容を比較し、複数の第1のプログラムの内容に不一致があれば、複数の第1のプログラムの中から多数決によって正常プログラムを判定する命令が含まれる。そして、CPUは、正常プログラムと判定された第1のプログラムを実行してシステムの初期起動を行う技術が記載されている。
【0006】
特許文献2には、起動用プログラムが格納される2つのフラッシュメモリを有し、フラッシュメモリに格納されたプログラムのチェックサムを定期的に求め、一方が不一致の場合、他方の正常なフラッシュメモリのプログラムを一方のフラッシュメモリに再度書き込むことで復旧させる情報処理装置、情報処理装置におけるプログラムデータ保護法方が記載されている。
【0007】
そして、特許文献3には、RAM上のファームウェアとEEPROM(Electrically Erasable and Programmable Read Only Memory)のファームウェアを定期的に比較し、もし不一致ならば、外部ファイル装置からファームウェアファイルをEEPROMおよびRAMに再度書き込みを行う記憶装置正常性確認装置および情報処理装置が記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−187199号公報
【特許文献2】特開2007−220092号公報
【特許文献3】特開平11−161554号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
通常CPUが、リセット解除後に読み出すアドレス値は固定値であり、このアドレス値を変更することはできない。
その為、システム内のメモリ配置構成は、CPUがリセット解除後に読み出すアドレス値として不揮発性ROMを配置する構成となる。CPUは、リセット解除後、この不揮発性ROM内に格納されたプログラムコードを逐次実行していく。しかし、不揮発性ROMでは読み出し速度が遅いので、プログラムデータを不揮発性ROMから読み出し速度が速いRAMへコピーし、RAM上でプログラムを実行するように切り替えることで、プログラム実行速度を上げている。RAM上にプログラムデータをコピーする際、システム内にある複数個の不揮発性ROM、または不揮発性ROM内の複数ブロック内からプログラムデータを読み出し、この読み出したプログラムデータにおけるデータ破壊がないことを確認してから、プログラムデータがRAMへコピーされる処理が行われる。
【0010】
不揮発性ROM内のデータ破壊はどの部分で発生するか不定である。CPUはリセット解除直後に実行されるデータ破壊がないことを確認しながら不揮発性ROMからRAMへコピーするコピープログラムを実行する。しかしながら、このコピープログラム自体が破壊されていると、システム起動ができないこととなる。
【0011】
一方、プログラムデータの破壊に備えて不揮発性ROMを2つ設けるシステムの公知例も多数ある。しかしながら、起動時にプログラムデータが破壊された不揮発性ROMがシステム内に存在するとどの不揮発性ROMを使用するかを切り替える回路が必要となる。さらには、不揮発性ROMを読み出す度にプログラムデータのチェックをする必要があり、システム起動が遅くなってしまうという課題がある。
【0012】
また、特許文献1に記載の技術では、ROMとRAMをそれぞれ複数用意する必要があるため、システムの規模が大きくなってしまうという課題がある。
【0013】
そして、特許文献2に記載の技術では、2つあるフラッシュメモリのどちらでデータ破壊が発生したかは分かるものの、フラッシュメモリ上の、どのアドレスでデータ破壊が発生したかは分からない。データ破壊が発生したアドレスが不明なため、プログラムデータの復旧はフラッシュメモリに格納されているすべてのプログラムデータを再書き込みする必要があり、プログラムデータの復旧に時間がかかってしまう。プログラムデータの復旧に時間がかかってしまうと、この復旧中に停電等電源断になる恐れがあり、システム起動の信頼性向上が図れない。
【0014】
特許文献3に記載の技術では、外部にファイル装置を備えるシステムでしか適用できないという課題がある。また、CPUがプログラムの実行動作を行うRAMとは別に確認用のRAMを用意する必要があり必要RAMサイズが増大してしまうという課題もある。さらに、プログラム実行用RAMとプログラムデータ確認用のRAMを兼用すると、RAM上のデータ破壊が発生した場合、その後CPUは正常動作できず、外部ファイル装置からファームウェアファイルを読み出し、EEPROMおよびRAMに再度書き込みを行うことができなくなるという課題がある。
【0015】
このような背景に鑑みて本発明がなされたのであり、本発明は、データ復旧の信頼性を保持しつつ、データ復旧時間の短縮を目的とする。
【課題を解決するための手段】
【0016】
前記課題を解決するため、本発明は、同じデータを格納している、少なくとも2つの不揮発性記憶装置の内容をチェックする情報処理装置であって、それぞれの前記不揮発性記憶装置に格納されているデータが一致しているか否かを、アドレス毎に判定する第1の一致検出部と、前記第1の一致検出部において、データの不一致が検出された場合、前記不一致が検出されたアドレスを記憶するアドレス記憶処理部と、前記それぞれの不揮発性記憶装置に格納されているデータの値を加算することにより、第1のチェックサム値を算出する加算部と、前記第1のチェックサム値と、予め前記不揮発性記憶装置に格納されている第2のチェックサム値とを、前記それぞれの不揮発性記憶装置において比較する第2の一致検出部と、前記第2の一致検出部において、一方の不揮発性記憶装置の前記第1のチェックサム値と、前記第2のチェックサム値と、が不一致であると判定された場合、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致している不揮発性記憶装置から、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致していない不揮発性記憶装置へ、前記アドレス記憶処理部に記憶されているアドレスに該当するデータをコピーするデータ復旧部と、を有することを特徴とする。
その他の解決手段は、実施形態中にて記載する。
【発明の効果】
【0017】
本発明によれば、データ復旧の信頼性を保持しつつ、データ復旧時間の短縮が可能となる。
【図面の簡単な説明】
【0018】
【図1】本実施形態に係る情報処理システムの構成例を示す図である。
【図2】本実施形態に係るROMアドレスマップのイメージを示す図である。
【図3】ROMコントローラの機能ブロックの構成例を示す図である。
【図4】本実施形態に係る情報処理システムの処理の流れを示すフローチャートである。
【図5A】本実施形態に係るROMチェック処理の流れを示すフローチャートである(その1)。
【図5B】本実施形態に係るROMチェック処理の流れを示すフローチャートである(その1)。
【図6】本実施形態に係るプログラム更新処理の流れを示すフローチャートである。
【図7】プログラムデータが複数のブロックに分けられてROMに格納されている場合におけるROMアドレスマップのイメージを示す図である。
【図8】本実施形態に係る情報処理システムを搭載した監視機器システムの構成例を示す図である。
【発明を実施するための形態】
【0019】
次に、本発明を実施するための形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。なお、本実施形態では、プログラムデータのデータ破壊のチェックおよび復旧を想定しているが、プログラムデータ以外の数値データなどに適用してもよい。
【0020】
(情報処理システムの構成)
図1は、本実施形態に係る情報処理システムの構成例を示す図である。
情報処理システム10は、CPU3、RAM2、ROMコントローラ1(情報処理装置)、2つの不揮発性記憶装置(ROM9)であるROM−A6、ROM−B7を有している。
CPU3は、起動時にROM−A6に格納されているプログラムデータをRAM2上にコピーする。そして、実際のCPU3のプログラム実行動作はRAM2上において行われる。
ROM−A6は、プログラムデータを格納しており、ROM−B7は、ROM−A6に格納されているプログラムデータのコピーがバックアップのために格納されている。
ROMコントローラ1は、ROM−A6と、ROM−B7のプログラムデータが一致しているか否かを判定し、一致していない場合(データ破壊が生じている場合)にはデータ破壊の生じていないROM9からデータ破壊が生じているROM9へプログラムデータをコピーする。
なお、ROM−A6とROM−B7のうち、いずれのROM9にデータ破壊が生じているかの判定は後記する。
【0021】
CPU3と、RAM2と、ROMコントローラ1とは、CPUバス8で接続されており、ROMコントローラ1とROM−A6とはROM−Aバス4で接続されており、ROMコントローラ1とROM−B7とはROM−Bバス5で接続されている。
また、ROMコントローラ1にはプログラムの起動成功を示す起動成功フラグがCPU3から入力される。
【0022】
(ROMのアドレスマップ)
図2は、本実施形態に係るROMアドレスマップのイメージを示す図である。
プログラムデータは、ROM9の先頭アドレスであるアドレス「0」から最終アドレスの1つ手前(アドレス値「n―1」)まで格納されている。そして、最終アドレス(アドレス値「n」)にはチェックサム値が格納されている。チェックサム値は、先頭アドレスのプログラムデータ値から、順次アドレス「n−1」までのプログラムデータ値を加算した値の下n桁が格納されている。ここで、「プログラムデータ値」とは、16進法や、8進法などで表現される数値としてのプログラムデータである。n桁の値は、ROM−A6、ROM−B7のデータビット幅により決定され、例えば、8ビット幅では2桁であり、16ビット幅では4桁となる。例えば、16ビット幅であれば、先頭アドレス「0」からアドレス「n−1」まで、DF+5H+・・・+BBといったようにプログラムデータ値の加算が行われると、その加算値は当然2桁を超える値となるため、下2桁をチェックサム値として保存することになる。
【0023】
(ROMコントローラの構成)
図3は、ROMコントローラの機能ブロックの構成例を示す図である。
ROMコントローラ1は、一致検出部A(第1の一致検出部)101、アドレス値発生・制御部102、アドレスバッファ部(アドレス記憶処理部)103、データ復旧部104、一致検出部B(第2の一致検出部)105、加算部106を有している。各回路101〜106は、ROM−A内部バス111、ROM−B内部バス112を介して接続されている。
バス切替SW(Switch)121は、CPUバス8、ROM−Aバス4、ROM−A内部バス111に接続されており、ANDゲート122を介して入力される起動成功フラグと、更新開始信号との論理積によってROM−Aバス4とROM−A内部バス111とを切り替える。
なお、図3における各信号は図5Aおよび図5Bにおいて後記して説明する。
【0024】
一致検出部A101は、ROM−A6およびROM−B7におけるアドレス毎のプログラムデータの一致・不一致を検出する機能を有する。
アドレス値発生・制御部102は、先頭アドレスから順に最終アドレスまでのアドレス値を発生させると共に、各種信号を出力し、各部101,103〜106を制御する機能を有する。
アドレスバッファ部103は、プログラムデータの不一致が生じているアドレス値を保存する機能を有する。
データ復旧部104は、プログラムデータの不一致が生じている場合(データ破壊が生じている場合)、データ破壊が生じていないROM9からデータ破壊が生じているROM9へプログラムデータをコピーする機能を有する。
【0025】
一致検出部B105は、一致検出部A101で不一致が検出された場合、各ROM9のチェックサム値を比較することによって、どちらのROM9にデータ破壊が生じているかを判定する機能を有する。
加算部106は、アドレス毎のプログラムデータ値を逐次加算する機能を有する。
【0026】
バス切替SW121は、ROM−Aバス4の接続先をCPUバス8、およびROM−A内部バス111のどちらかに切り替えるバスSWである。バス切替SW121は、「0」が入力されると、CPUバス8とROM−Aバス4とを接続し、「1」が入力されるとROM−Aバス4と、ROM−A内部バス111とを接続する。バス切替SW121には、CPU3から送られる起動成功フラグと、アドレス値発生・制御部102から送られる更新開始信号の否定信号が入力される。ここで、更新開始信号とは、ROM9に格納されているプログラムデータの更新が開始される際にアドレス値発生・制御部102から出力される信号である。
すなわち、バス切替SW121は、起動成功フラグが入力されると、ROM−Aバス4と、ROM−A内部バス111とを接続し、アドレス値発生・制御部102が更新開始信号を出力すると、CPUバス8とROM−Aバス4とを接続する。
【0027】
各部101〜105は、ROMコントローラ1中の図示しないROMに格納されているプログラムを、ROMコントローラ中の図示しないCPUが起動することによって具現化されてもよいし、各部101〜105のそれぞれを専用のIC(Integrated Circuit)チップで具現化してもよい。
【0028】
(情報処理システムの処理)
次に、図1などを参照しつつ、図4に沿って本実施形態に係る情報処理システム10の処理を説明する。
図4は、本実施形態に係る情報処理システムの処理の流れを示すフローチャートである。
一般的にCPU3は、電源の投入後、リセット信号が解除されると自発的にROM9に格納されたプログラムデータの読み込みを開始する(S101)。
そして、ROMコントローラ1は、CPUバス8と、ROM−Aバス4との接続を行う(S102)。これによりCPU3は電源投入時において、2つあるROM9のうち、常にROM−A6のプログラムデータをRAM2にコピーすることができる。
その後 CPU3は、ROM−A6に格納されたプログラムデータをRAM2上にコピーし(S103)、CPU3はRAM2上にてプログラム実行動作を行う。
CPU3がROM−A6からRAM2へプログラムデータのコピー作業を完了すると、プログラムの起動完了となり、その後は、ROM−A6からプログラムデータを読み出す必要がなくなる。つまり、これ以降、CPUによるROM9へのアクセスがない状態となる。
【0029】
このとき、CPU3から起動成功フラグがROMコントローラ1に入力され(S104)、ROMコントローラ1はCPUバス8からROM−Aバス4を切り離す(S105)。
以降、ROM−Aバス4とROM−Bバス5に対するバスマスタはROMコントローラ1となり、CPUバス8の動作とは無関係にROMコントローラ1はROM−A6およびROM−B7へのアクセスが可能となる。
【0030】
前記したように、予めROM−A6とROM−B7へは同じプログラムデータが格納されている。ステップS104でCPU3からROMコントローラ1に起動成功フラグが入力され、ステップS105の切り離しが実行されると、ROMコントローラ1は、図5Aおよび図5Bで後記するROMチェック処理を行う(S106)。
【0031】
(ROMチェック処理)
次に、図1および図3を参照しつつ、図5Aおよび図5Bに沿って図4のステップS106におけるROMチェック処理の説明を行う。
図5Aおよび図5Bは、本実施形態に係るROMチェック処理の流れを示すフローチャートである。
情報処理システム10の電源が投入されると、バス切替SW121はCPUバス8とROM−Aバス4とを接続する(図5AのS201:図4のS102に相当)。これによりCPU3は、ROM−A6からプログラムデータを読み出しシステム起動が可能となる。
CPU3がROM−A6からRAM2へのプログラムデータ読出が完了すると(S202:図4のS103に相当)、起動成功フラグが、CPU3からANDゲート122を介してバス切替SW121に入力される(S203:図4のS104に相当)。すると、バス切替SW121は、CPUバス8を、ROM−Aバス4から切り離し、ROMコントローラ1内部のROM−A内部バス111と、ROM−Aバス4とを接続する(S204)。以降、ROMコントローラ1はROM−A6へ自由にアクセス可能でとなる。なお、図3に示すように、ROM−Bバス5は、ROMコントローラ1内部のROM−B内部バス112に常時接続されている。
【0032】
なお、ステップS203において、CPU3から入力された起動成功フラグは、バス切替SW121への入力と同時にアドレス値発生・制御部102へも入力される(図3に図示せず)。
起動成功フラグが入力されたアドレス値発生・制御部102は、アドレス値をアドレス値「0」から最終アドレス値「n」まで順次発生させていく(S205)。このとき、アドレス値発生・制御部102は、検出イネーブル信号を一致検出部A101へ出力し、加算イネーブル信号を加算部106へ出力する。ただし、アドレス値が最終アドレス値である「n」である場合、アドレス値発生・制御部102は加算イネーブルを出力しない。
ROMコントローラ1は、アドレス値発生・制御部102から出力されたアドレス値に対応するプログラムデータを、ROM−A6から、ROM−Aバス4およびROM−A内部バス111を経由して取得すると(S206)、このプログラムデータを一致検出部A101、加算部106へ入力する。
同時に、ROMコントローラ1は、アドレス値発生・制御部102が発生したアドレス値に該当するROM−B7のプログラムデータも同様に、ROM−Bバス5およびROM−B内部バス112を介して取得する(S207)と、ROM−B内部バス112を経由して一致検出部A101、加算部106へ入力する。なお、この時点における加算部106の加算値は初期値としての「0」である。
【0033】
次に、一致検出部A101は、ROM−A内部バス111、ROM−B内部バス112 それぞれから入力されたプログラムデータ(アドレス値発生・制御部102が発生したアドレス値に該当するプログラムデータ)が一致しているかを、アドレス値発生・制御部102から入力される検出イネーブル信号のタイミングで判定する(S208)。
ステップS208の結果、プログラムデータ値が一致した場合(S208→Yes)、ROMコントローラ1はステップS211へ処理を進める。
ステップS208の結果、プログラムデータ値の不一致を検出した場合(S208→No)、一致検出部A101は、不一致検出信号をアドレスバッファ部103へ出力する。
不一致検出信号が入力されたアドレスバッファ部103は、不一致検出信号が入力された時においてアドレス値発生・制御部102が発生しているアドレス値をアドレスバッファ部103自身に保存する(S209)。この保存されたアドレス値はプログラムデータの復旧の際に用いられる。
【0034】
また、前記したように、ROM−A6のプログラムデータ値とROM−B7のプログラムデータ値は、加算部106へも入力される。各プログラムデータ値を入力された加算部106は、自身が保持している加算値と、ROM−A6およびROM−B7から入力されたそれぞれのプログラムデータ値とを、アドレス値発生・制御部102から入力される加算イネーブル信号のタイミングで加算し(S210)、それぞれの加算値を自身に保存する。
【0035】
次に、アドレス値発生・制御部102がアドレス値発生・制御部102で発生されたアドレス値が「n」であるか否かを判定する(S211)。
ステップS211の結果、アドレス値が「n」でない場合(S211→No)、ROMコントローラ1は、ステップS205へ処理を戻す。
ステップS211の結果、アドレス値が「n」である場合(S211→Yes)、アドレス値発生・制御部102から一致検出イネーブル信号が一致検出部B105へ出力される。すると、この一致検出イネーブル信号を受信した一致検出部B105は、加算部106からROM−A6およびROM−B7に関するチェックサム値(第1チェックサム値と称する)を取得し、ROM−Aバス4、ROM−A内部バス111を介してROM−A6に格納されているチェックサム値(第2チェックサム値と称する)を取得する。さらに、一致検出部B105は、ROM−Bバス5、ROM−B内部バス112を介してROM−B7に格納されているチェックサム値(第2チェックサム値)も取得する(S212)。なお、第1チェックサム値は、第2チェックサム値と同じ下n桁を取得する。
【0036】
そして、一致検出部B105は、取得したROM−A6およびROM−B7に関するそれぞれの第1チェックサム値および第2チェックサム値を比較する(S213)。
【0037】
すなわち、ROMコントローラ1内で先頭アドレスから順次加算してきた値(第1チェックサム値)と最終アドレスから読み出した値(第2チェックサム値)が一致していれば、ROM9でデータ破壊は発生していないと判断できる。2つのROM9それぞれにおいて第1チェックサム値と、第2チェックサム値が一致していれば、同時に2つのROM9に対してデータ破壊が発生する可能性は、ほぼ「0」であるため、この場合はどちらのROM9にもデータ破壊が発生していないと判定しても問題ない。
【0038】
プログラムデータを復旧する際、ROM−A6またはROM−B7のどちらが破壊されていたかによって、復旧元(コピー元)と復旧先(コピー席)が決定される。ROM−A6でデータ破壊を検出した場合、ROMコントローラ1はアドレスバッファ部103に記憶していたアドレス値に該当するプログラムデータをROM−B7から読み出し、ROM−A6へ上書きすることで破壊されたプログラムデータの復旧動作を行う。つまり、ROM−A6の第1チェックサム値と第2チェックサム値が不一致であり、ROM−B7の第1チェックサム値が一致していれば、ROMコントローラ1は、ROM−A6のプログラムデータが破壊していると判定する。ROM−B7でデータ破壊を検出した場合、ROMコントローラ1はROM−A6からプログラムデータを読み出し、ROM−B7へ上書きすることで破壊されたプログラムデータの復旧動作を行う。
【0039】
そして、一致検出部B105は、ステップS213の比較の結果、どちらか一方のROM9でチェックサム値の不一致を検出したか否かを判定する(S214)。
ステップS214の結果、チェックサム値の不一致を検出しなかった場合(S214→No)、2つのROM9において、データ破壊が生じている確率は非常に低いため、ROM−A6およびROM−B7に格納されているプログラムデータは正常であると判定し、ROMコントローラ1はステップS205へ処理を戻し、アドレス値「0」からチェック処理を再開する。
ステップS214の結果、チェックサム値の不一致を検出した場合(S214→Yes)、一致検出部B105は、ステップS213の比較結果を含む復旧開始信号をデータ復旧部104へ出力する。この復旧開始信号には、どちらのROM9が正常で、どちらのROM9のプログラムデータが破壊されているかの情報が含まれている。
このとき、アドレス値が「0」に戻り、ステップS205の処理をアドレス値発生・制御部102が行わないように、すなわち、プログラムデータの復旧の間、アドレス値発生・制御部102を停止させるため、復旧開始信号はアドレス値発生・制御部102へも入力される。
【0040】
復旧開始信号が入力されたデータ復旧部104は、不一致が検出されたアドレス値を保持しているアドレスバッファ部103から当該アドレス値を取得する(S215)。
そして、データ復旧部104は、復旧開始信号に含まれるコピー元のROM9からステップS215で取得したアドレス値で示されるプログラムデータを取得すると、復旧信号に含まれるコピー先のROM9におけるステップS215で取得したアドレス値へプログラムデータをコピーする(S216)ことにより、プログラムデータの復旧を行う。
【0041】
そして、データ復旧部104は、アドレスバッファ部103に保持されていたすべてのアドレス値に関してコピーが完了したか否かを判定する(S217)。
ステップS217の結果、コピー完了していない場合(S217→No)、ステップS216へ処理を戻す。
ステップS217の結果、コピーが完了している場合(S217→Yes)、データ復旧部104は、復旧完了信号をアドレス値発生・制御部102へ出力する。
プログラムデータの復旧の為に、一時停止していたアドレス値発生・制御部102は、復旧完了信号を受けると、図5AのステップS205へ処理を戻し、アドレス値を「0」から順次発生・出力していく処理を再開する。
【0042】
以上の動作を行うことにより、ROM9に格納されているプログラムデータのデータ破壊検出動作と自己復旧動作を行なう。これにより常にROM−A6には、正常なプログラムデータが格納されシステム起動の信頼性の保持と、システム起動時間の短縮が可能となる。また、アドレスバッファに保持されているアドレス値に該当するプログラムデータのみをコピーするため、復旧時間の短縮が可能となる。
【0043】
(プログラムデータ更新時)
情報処理システム10は、工場から出荷された後、性能向上の為、ROM9のプログラムデータの更新を行うことがある。更新プログラムデータは、外部から情報処理システム10に入力されるのでCPU3を用いて更新する必要がある。しかし、本実施形態に係る情報処理システム10では、プログラムの起動後において、CPU3は、ROM−A6へのアクセスは可能であるが、ROM−B7へのアクセスが不可能である。これでは、プログラム起動時において、本実施形態の目的であるROM−A6とROM−B7とに同じプログラムデータを格納することによって、データ破壊を検出し、自己復旧する処理を実現することができない。つまり、図5AのステップS208でROM−A6およびROM−B7における個々のアドレス値に該当するプログラムデータ値が不一致と判定されても、図5BのステップS213のチェックサム値の比較の段階で、ROM−A6およびROM−B7の双方の第2チェックサム値が、第1チェックサム値と一致してしまうため、一致検出部B105は、双方のプログラムデータにおいてデータ破壊はなしと判断してしまうことになる。
このような状態を避けるため、ROMコントローラ1は以下に説明する処理を行う。
【0044】
図6は、本実施形態に係るプログラム更新処理の流れを示すフローチャートである。
CPU3は、プログラムデータを更新する際、プログラム更新信号をアドレス値発生・制御部102とデータ復旧部104のそれぞれへ入力する(S301)。
プログラム更新信号が入力されたアドレス値発生・制御部102とデータ復旧部104は、現在行っている処理(すなわち、図5AのステップS205および図5BのステップS216)を停止させる(S302)。
次に、アドレス値発生・制御部102は、現在行っている動作を停止させたら、更新開始信号をバス切替SW121へ出力する。更新開始信号の否定(「0」)が入力されたバス切替SW121は、ROM−Aバス4をCPUバス8に接続するよう切り替える(S303)。これによりCPU3は、ROM−A6へアクセスできプログラムデータの更新が可能となる。
【0045】
次に、CPU3は、ROM−A6へのプログラムデータ更新を行い(S304)、プログラムデータ更新が完了すると、CPU3はプログラム更新信号を更新前の状態(「0」)に戻す)。プログラム更新信号が更新前に戻ったことを検知したアドレス値発生・制御部102は、アドレス値を「0」へリセットする(S305)。
そして、アドレス値発生・制御部102は、プログラム更新信号が更新前の状態に戻ったのに合わせ、更新開始信号を更新前の状態に戻す。更新前の状態に戻った更新開始信号の否定(「1」)が入力されたバス切替SW121は、ROM−Aバス4と、ROM−A内部バス111との接続に切り替える(S306)。
次に、アドレス値発生・制御部102が「0」から「n」までのアドレス値を順次発生し、データ復旧部104は、アドレス値発生・制御部102が発生したアドレス値に相当するプログラムデータをROM−A6からROM−B7へコピーする(S307)。なお、最終アドレスに格納されるチェックサム値(第2チェックサム値)は予め計算され更新プログラムデータに格納されている。
コピーが完了すると、データ復旧部104は、復旧完了信号をアドレス値発生・制御部102に出力する。
このとき、アドレス値発生・制御部102のアドレス値は、「0」に戻っているので、ROMコントローラ1は図5A、図5BのROMチェック処理を再開する(S308)。
【0046】
図6の処理により、システム運用中のプログラム更新へも対応可能なプログラムデータのデータ破壊検出処理と自己復旧処理が実現できる。更に2つのプログラム格納用ROM9を搭載していてもCPU3から見るとROM92つのうちの1つ分のプログラム更新時間で済み、CPU3に対するプログラム更新のシステム負荷を軽減できる。また。ユーザから個々のROM−A6またはROM−B7に対してプログラム更新の指示入力が不要になる。
【0047】
(ROMのアドレスマップの別の例)
図7は、プログラムデータが複数のブロックに分けられてROMに格納されている場合におけるROMアドレスマップのイメージを示す図である。
図7に示すように、プログラムデータが「プログラムデータA」がアドレス値「0」、「1」〜「k−1」に、「プログラムデータB」がアドレス値「k+1」、「k+2」〜「m−1」に、「プログラムデータC」がアドレス値「m+1」、「m+2」〜「n―1」の各ブロックに格納されていた場合、各プログラムデータの一番最後に各プログラムデータのチェックサム値が格納される。
すなわち、アドレス値「k」には、「プログラムデータA」のチェックサム値が、アドレス値「m」には、「プログラムデータB」のチェックサム値が、アドレス値「n」には、「プログラムデータC」のチェックサム値が格納される。そして、ROM9の最終アドレス値「n+1」には全体のチェックサム値が格納される。
【0048】
このようにすることで、ROMコントローラ1は、各プログラムデータ(ブロック)毎にデータ破壊検出処理と自己復旧処理を行うことができる。
この場合、図5の処理はプログラムデータ毎に行われることになる。
【0049】
(監視機器システム)
図8は、本実施形態に係る情報処理システムを搭載した監視機器システムの構成例を示す図である。
監視機器システム30は、アナログビデオカメラ(監視カメラ)19、ネットワークカメラ(監視カメラ)23、レコーダ21、モニタテレビ22、外部PC(Personal Computer)25を有してなる。
アナログビデオカメラ19は、アナログ映像信号を出力する機能を有し、アナログカメラの映像信号をレコーダ21へ伝送する同軸ケーブル20でレコーダ21に接続されている。
ネットワークカメラ23は、映像信号をネットワーク回線24を介してレコーダ21へ出力する機能を有している。
レコーダ21は、アナログビデオカメラ19やネットワークカメラ23から入力された映像信号を記録する機能を有する。
モニタテレビ22は、レコーダ21に入力された映像信号や、レコーダ21で再生された映像信号を表示する機能を有する。
外部PC25は、遠隔にて監視機器システム30を制御する機能を有する。
【0050】
なお、アナログビデオカメラ19やネットワークカメラ23は天井など一度設置されたらその後は簡単に操作できない場所に複数台をレコーダ21に接続することが一般的である。
そして、図8の構成では、アナログビデオカメラ19や、ネットワークカメラ23や、レコーダ21に本実施形態の情報処理装置が搭載されている。
【0051】
本実施形態のROM9は、プログラム起動後、CPU3の読み込みが行われないものであればよく、例えば、フラッシュROMなどを使用することも可能である。
なお、本実施形態では、一致検出部A101におけるアドレス毎のプログラムの一致・不一致検出と並行して、加算部106における第1チェックサム値の算出が行われているが、一致検出回路A101で不一致が検出された後、第1チェックサム値を算出してもよい。
また、本実施形態ではROM9を2つとしているが、3つ以上でもよい。この場合、ROM−A6以外のすべてのROM9がROMコントローラ1に常時接続されていてもよいし、切替SWによってROM−A6以外のROM9でROMコントローラ1に常時接続されるROM9が切り替えられてもよい。なお、ROM9が3つ以上である場合、一致検出部A101や、一致検出部B105や、加算部106はすべてのROM9に対して、本実施形態と同様の処理を行ってもよい。
【0052】
(まとめ)
本実施形態によれば、情報処理システム10の運用中にROM9内のプログラムデータが破壊してもプログラムデータを自己復旧することができ、また、自己復旧によるシステム起動が遅延を防止しながら確実なシステム起動を期待できる。
つまり、チェックサム値の比較によって、データ復旧の信頼性を保持しつつ、不一致が検出されたアドレスに該当するデータのみを復旧することで、データ復旧時間を短縮することができる。
また、本実施形態によれば、これまで通り、外部ファイル装置を必要とせず、またRAM2を1つ搭載すればよい。
【符号の説明】
【0053】
1 ROMコントローラ(情報処理装置)
2 RAM
3 CPU
4 ROM−Aバス
5 ROM−Bバス
6 ROM−A(不揮発性記憶装置)
7 ROM−B(不揮発性記憶装置)
8 CPUバス
9 ROM
10 情報処理システム
19 アナログビデオカメラ(監視カメラ)
21 レコーダ
23 ネットワークカメラ(監視カメラ)
30 監視機器システム
101 一致検出部A(第1の一致検出部)
102 アドレス値発生・制御部
103 アドレスバッファ部(アドレス記憶処理部)
104 データ復旧部
105 一致検出部B(第2の一致検出部)
106 加算部
111 ROM−A内部バス
112 ROM−B内部バス
121 バス切替SW
122 ANDゲート
【技術分野】
【0001】
本発明は、データ復旧を行う情報処理装置および監視機器システムの技術に関する。
【背景技術】
【0002】
監視機器が接続されている監視機器システムにおいて、監視機器システムが起動できない状態になると、復旧に手間がかかる。これは、頻繁に人が行かない場所、または人が行くのに困難を伴う場所に監視機器システム設置されることが多いためである。さらに、一度、監視機器システムが稼動を開始すると、24時間を長期間に渡って稼動し続けることが多い。このため、監視機器システムは、長期間に渡って安定稼動できる状態を保つことが重要である。このような監視機器システムにおけるシステム動作用プログラムのデータ(プログラムデータ)は、フラッシュROM(Read Only Memory)などの不揮発性ROMに格納される。通常、プログラムデータは、システム起動時に不揮発性ROMからRAM(Random Access Memory)へコピーされるため、システム起動後の不揮発性ROM内のプログラムデータは、実行中のシステム動作には影響しない。
【0003】
このような監視機器システムにおいて、不慮の停電が発生し、停電復旧後に再起動し、システム動作を再開すれば問題ないが、不揮発性ROM内のプログラムデータの破壊(データ破壊)がある場合は再起動できないこととなる。つまり、不揮発性ROMのプログラムデータが破壊されていると、予期せぬ停電が生じた際に監視動作が停止してしまうこととなる。そして、管理者へ監視機器の異常状態の通知がされないと、監視動作が停止したまま放置されてしまうことになる。異常状態の通知がされたとしても、管理者が設置場所へ出向くことが困難な場合など、監視機器の動作停止は様々な問題を生じる。
【0004】
このように、長期間に渡るシステム運用の結果、不揮発性ROMに格納していたシステム動作用プログラムデータの一部が破壊されてしまうことがしばしばある。これは、不揮発性ROM固有の部品単体の問題であり、完全に防ぐことはできない。
【0005】
このような不揮発性ROMに格納していたプログラムデータの一部破壊に関する従来技術として、特許文献1がある。特許文献1では、以下の情報処理システムおよび情報処理方法が記載されている。すなわち、特許文献1に記載の情報処理システムでは、システムを起動するための第1のプログラムおよび第1のプログラムの複製を記憶した不揮発性の第1の記憶装置と、複製の第1のプログラムが転送される揮発性の第2の記憶装置と、第1のプログラムを実行するための第2のプログラムを記憶する不揮発性の第3の記憶装置と、第1のプログラムを実行するCPU(Central Procesing Unit)とを備える。第2のプログラムには、第1の記憶装置から第2の記憶装置に複数の第1のプログラムを転送し、第2の記憶装置に転送された複数の第1のプログラムの内容を比較し、複数の第1のプログラムの内容に不一致があれば、複数の第1のプログラムの中から多数決によって正常プログラムを判定する命令が含まれる。そして、CPUは、正常プログラムと判定された第1のプログラムを実行してシステムの初期起動を行う技術が記載されている。
【0006】
特許文献2には、起動用プログラムが格納される2つのフラッシュメモリを有し、フラッシュメモリに格納されたプログラムのチェックサムを定期的に求め、一方が不一致の場合、他方の正常なフラッシュメモリのプログラムを一方のフラッシュメモリに再度書き込むことで復旧させる情報処理装置、情報処理装置におけるプログラムデータ保護法方が記載されている。
【0007】
そして、特許文献3には、RAM上のファームウェアとEEPROM(Electrically Erasable and Programmable Read Only Memory)のファームウェアを定期的に比較し、もし不一致ならば、外部ファイル装置からファームウェアファイルをEEPROMおよびRAMに再度書き込みを行う記憶装置正常性確認装置および情報処理装置が記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−187199号公報
【特許文献2】特開2007−220092号公報
【特許文献3】特開平11−161554号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
通常CPUが、リセット解除後に読み出すアドレス値は固定値であり、このアドレス値を変更することはできない。
その為、システム内のメモリ配置構成は、CPUがリセット解除後に読み出すアドレス値として不揮発性ROMを配置する構成となる。CPUは、リセット解除後、この不揮発性ROM内に格納されたプログラムコードを逐次実行していく。しかし、不揮発性ROMでは読み出し速度が遅いので、プログラムデータを不揮発性ROMから読み出し速度が速いRAMへコピーし、RAM上でプログラムを実行するように切り替えることで、プログラム実行速度を上げている。RAM上にプログラムデータをコピーする際、システム内にある複数個の不揮発性ROM、または不揮発性ROM内の複数ブロック内からプログラムデータを読み出し、この読み出したプログラムデータにおけるデータ破壊がないことを確認してから、プログラムデータがRAMへコピーされる処理が行われる。
【0010】
不揮発性ROM内のデータ破壊はどの部分で発生するか不定である。CPUはリセット解除直後に実行されるデータ破壊がないことを確認しながら不揮発性ROMからRAMへコピーするコピープログラムを実行する。しかしながら、このコピープログラム自体が破壊されていると、システム起動ができないこととなる。
【0011】
一方、プログラムデータの破壊に備えて不揮発性ROMを2つ設けるシステムの公知例も多数ある。しかしながら、起動時にプログラムデータが破壊された不揮発性ROMがシステム内に存在するとどの不揮発性ROMを使用するかを切り替える回路が必要となる。さらには、不揮発性ROMを読み出す度にプログラムデータのチェックをする必要があり、システム起動が遅くなってしまうという課題がある。
【0012】
また、特許文献1に記載の技術では、ROMとRAMをそれぞれ複数用意する必要があるため、システムの規模が大きくなってしまうという課題がある。
【0013】
そして、特許文献2に記載の技術では、2つあるフラッシュメモリのどちらでデータ破壊が発生したかは分かるものの、フラッシュメモリ上の、どのアドレスでデータ破壊が発生したかは分からない。データ破壊が発生したアドレスが不明なため、プログラムデータの復旧はフラッシュメモリに格納されているすべてのプログラムデータを再書き込みする必要があり、プログラムデータの復旧に時間がかかってしまう。プログラムデータの復旧に時間がかかってしまうと、この復旧中に停電等電源断になる恐れがあり、システム起動の信頼性向上が図れない。
【0014】
特許文献3に記載の技術では、外部にファイル装置を備えるシステムでしか適用できないという課題がある。また、CPUがプログラムの実行動作を行うRAMとは別に確認用のRAMを用意する必要があり必要RAMサイズが増大してしまうという課題もある。さらに、プログラム実行用RAMとプログラムデータ確認用のRAMを兼用すると、RAM上のデータ破壊が発生した場合、その後CPUは正常動作できず、外部ファイル装置からファームウェアファイルを読み出し、EEPROMおよびRAMに再度書き込みを行うことができなくなるという課題がある。
【0015】
このような背景に鑑みて本発明がなされたのであり、本発明は、データ復旧の信頼性を保持しつつ、データ復旧時間の短縮を目的とする。
【課題を解決するための手段】
【0016】
前記課題を解決するため、本発明は、同じデータを格納している、少なくとも2つの不揮発性記憶装置の内容をチェックする情報処理装置であって、それぞれの前記不揮発性記憶装置に格納されているデータが一致しているか否かを、アドレス毎に判定する第1の一致検出部と、前記第1の一致検出部において、データの不一致が検出された場合、前記不一致が検出されたアドレスを記憶するアドレス記憶処理部と、前記それぞれの不揮発性記憶装置に格納されているデータの値を加算することにより、第1のチェックサム値を算出する加算部と、前記第1のチェックサム値と、予め前記不揮発性記憶装置に格納されている第2のチェックサム値とを、前記それぞれの不揮発性記憶装置において比較する第2の一致検出部と、前記第2の一致検出部において、一方の不揮発性記憶装置の前記第1のチェックサム値と、前記第2のチェックサム値と、が不一致であると判定された場合、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致している不揮発性記憶装置から、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致していない不揮発性記憶装置へ、前記アドレス記憶処理部に記憶されているアドレスに該当するデータをコピーするデータ復旧部と、を有することを特徴とする。
その他の解決手段は、実施形態中にて記載する。
【発明の効果】
【0017】
本発明によれば、データ復旧の信頼性を保持しつつ、データ復旧時間の短縮が可能となる。
【図面の簡単な説明】
【0018】
【図1】本実施形態に係る情報処理システムの構成例を示す図である。
【図2】本実施形態に係るROMアドレスマップのイメージを示す図である。
【図3】ROMコントローラの機能ブロックの構成例を示す図である。
【図4】本実施形態に係る情報処理システムの処理の流れを示すフローチャートである。
【図5A】本実施形態に係るROMチェック処理の流れを示すフローチャートである(その1)。
【図5B】本実施形態に係るROMチェック処理の流れを示すフローチャートである(その1)。
【図6】本実施形態に係るプログラム更新処理の流れを示すフローチャートである。
【図7】プログラムデータが複数のブロックに分けられてROMに格納されている場合におけるROMアドレスマップのイメージを示す図である。
【図8】本実施形態に係る情報処理システムを搭載した監視機器システムの構成例を示す図である。
【発明を実施するための形態】
【0019】
次に、本発明を実施するための形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。なお、本実施形態では、プログラムデータのデータ破壊のチェックおよび復旧を想定しているが、プログラムデータ以外の数値データなどに適用してもよい。
【0020】
(情報処理システムの構成)
図1は、本実施形態に係る情報処理システムの構成例を示す図である。
情報処理システム10は、CPU3、RAM2、ROMコントローラ1(情報処理装置)、2つの不揮発性記憶装置(ROM9)であるROM−A6、ROM−B7を有している。
CPU3は、起動時にROM−A6に格納されているプログラムデータをRAM2上にコピーする。そして、実際のCPU3のプログラム実行動作はRAM2上において行われる。
ROM−A6は、プログラムデータを格納しており、ROM−B7は、ROM−A6に格納されているプログラムデータのコピーがバックアップのために格納されている。
ROMコントローラ1は、ROM−A6と、ROM−B7のプログラムデータが一致しているか否かを判定し、一致していない場合(データ破壊が生じている場合)にはデータ破壊の生じていないROM9からデータ破壊が生じているROM9へプログラムデータをコピーする。
なお、ROM−A6とROM−B7のうち、いずれのROM9にデータ破壊が生じているかの判定は後記する。
【0021】
CPU3と、RAM2と、ROMコントローラ1とは、CPUバス8で接続されており、ROMコントローラ1とROM−A6とはROM−Aバス4で接続されており、ROMコントローラ1とROM−B7とはROM−Bバス5で接続されている。
また、ROMコントローラ1にはプログラムの起動成功を示す起動成功フラグがCPU3から入力される。
【0022】
(ROMのアドレスマップ)
図2は、本実施形態に係るROMアドレスマップのイメージを示す図である。
プログラムデータは、ROM9の先頭アドレスであるアドレス「0」から最終アドレスの1つ手前(アドレス値「n―1」)まで格納されている。そして、最終アドレス(アドレス値「n」)にはチェックサム値が格納されている。チェックサム値は、先頭アドレスのプログラムデータ値から、順次アドレス「n−1」までのプログラムデータ値を加算した値の下n桁が格納されている。ここで、「プログラムデータ値」とは、16進法や、8進法などで表現される数値としてのプログラムデータである。n桁の値は、ROM−A6、ROM−B7のデータビット幅により決定され、例えば、8ビット幅では2桁であり、16ビット幅では4桁となる。例えば、16ビット幅であれば、先頭アドレス「0」からアドレス「n−1」まで、DF+5H+・・・+BBといったようにプログラムデータ値の加算が行われると、その加算値は当然2桁を超える値となるため、下2桁をチェックサム値として保存することになる。
【0023】
(ROMコントローラの構成)
図3は、ROMコントローラの機能ブロックの構成例を示す図である。
ROMコントローラ1は、一致検出部A(第1の一致検出部)101、アドレス値発生・制御部102、アドレスバッファ部(アドレス記憶処理部)103、データ復旧部104、一致検出部B(第2の一致検出部)105、加算部106を有している。各回路101〜106は、ROM−A内部バス111、ROM−B内部バス112を介して接続されている。
バス切替SW(Switch)121は、CPUバス8、ROM−Aバス4、ROM−A内部バス111に接続されており、ANDゲート122を介して入力される起動成功フラグと、更新開始信号との論理積によってROM−Aバス4とROM−A内部バス111とを切り替える。
なお、図3における各信号は図5Aおよび図5Bにおいて後記して説明する。
【0024】
一致検出部A101は、ROM−A6およびROM−B7におけるアドレス毎のプログラムデータの一致・不一致を検出する機能を有する。
アドレス値発生・制御部102は、先頭アドレスから順に最終アドレスまでのアドレス値を発生させると共に、各種信号を出力し、各部101,103〜106を制御する機能を有する。
アドレスバッファ部103は、プログラムデータの不一致が生じているアドレス値を保存する機能を有する。
データ復旧部104は、プログラムデータの不一致が生じている場合(データ破壊が生じている場合)、データ破壊が生じていないROM9からデータ破壊が生じているROM9へプログラムデータをコピーする機能を有する。
【0025】
一致検出部B105は、一致検出部A101で不一致が検出された場合、各ROM9のチェックサム値を比較することによって、どちらのROM9にデータ破壊が生じているかを判定する機能を有する。
加算部106は、アドレス毎のプログラムデータ値を逐次加算する機能を有する。
【0026】
バス切替SW121は、ROM−Aバス4の接続先をCPUバス8、およびROM−A内部バス111のどちらかに切り替えるバスSWである。バス切替SW121は、「0」が入力されると、CPUバス8とROM−Aバス4とを接続し、「1」が入力されるとROM−Aバス4と、ROM−A内部バス111とを接続する。バス切替SW121には、CPU3から送られる起動成功フラグと、アドレス値発生・制御部102から送られる更新開始信号の否定信号が入力される。ここで、更新開始信号とは、ROM9に格納されているプログラムデータの更新が開始される際にアドレス値発生・制御部102から出力される信号である。
すなわち、バス切替SW121は、起動成功フラグが入力されると、ROM−Aバス4と、ROM−A内部バス111とを接続し、アドレス値発生・制御部102が更新開始信号を出力すると、CPUバス8とROM−Aバス4とを接続する。
【0027】
各部101〜105は、ROMコントローラ1中の図示しないROMに格納されているプログラムを、ROMコントローラ中の図示しないCPUが起動することによって具現化されてもよいし、各部101〜105のそれぞれを専用のIC(Integrated Circuit)チップで具現化してもよい。
【0028】
(情報処理システムの処理)
次に、図1などを参照しつつ、図4に沿って本実施形態に係る情報処理システム10の処理を説明する。
図4は、本実施形態に係る情報処理システムの処理の流れを示すフローチャートである。
一般的にCPU3は、電源の投入後、リセット信号が解除されると自発的にROM9に格納されたプログラムデータの読み込みを開始する(S101)。
そして、ROMコントローラ1は、CPUバス8と、ROM−Aバス4との接続を行う(S102)。これによりCPU3は電源投入時において、2つあるROM9のうち、常にROM−A6のプログラムデータをRAM2にコピーすることができる。
その後 CPU3は、ROM−A6に格納されたプログラムデータをRAM2上にコピーし(S103)、CPU3はRAM2上にてプログラム実行動作を行う。
CPU3がROM−A6からRAM2へプログラムデータのコピー作業を完了すると、プログラムの起動完了となり、その後は、ROM−A6からプログラムデータを読み出す必要がなくなる。つまり、これ以降、CPUによるROM9へのアクセスがない状態となる。
【0029】
このとき、CPU3から起動成功フラグがROMコントローラ1に入力され(S104)、ROMコントローラ1はCPUバス8からROM−Aバス4を切り離す(S105)。
以降、ROM−Aバス4とROM−Bバス5に対するバスマスタはROMコントローラ1となり、CPUバス8の動作とは無関係にROMコントローラ1はROM−A6およびROM−B7へのアクセスが可能となる。
【0030】
前記したように、予めROM−A6とROM−B7へは同じプログラムデータが格納されている。ステップS104でCPU3からROMコントローラ1に起動成功フラグが入力され、ステップS105の切り離しが実行されると、ROMコントローラ1は、図5Aおよび図5Bで後記するROMチェック処理を行う(S106)。
【0031】
(ROMチェック処理)
次に、図1および図3を参照しつつ、図5Aおよび図5Bに沿って図4のステップS106におけるROMチェック処理の説明を行う。
図5Aおよび図5Bは、本実施形態に係るROMチェック処理の流れを示すフローチャートである。
情報処理システム10の電源が投入されると、バス切替SW121はCPUバス8とROM−Aバス4とを接続する(図5AのS201:図4のS102に相当)。これによりCPU3は、ROM−A6からプログラムデータを読み出しシステム起動が可能となる。
CPU3がROM−A6からRAM2へのプログラムデータ読出が完了すると(S202:図4のS103に相当)、起動成功フラグが、CPU3からANDゲート122を介してバス切替SW121に入力される(S203:図4のS104に相当)。すると、バス切替SW121は、CPUバス8を、ROM−Aバス4から切り離し、ROMコントローラ1内部のROM−A内部バス111と、ROM−Aバス4とを接続する(S204)。以降、ROMコントローラ1はROM−A6へ自由にアクセス可能でとなる。なお、図3に示すように、ROM−Bバス5は、ROMコントローラ1内部のROM−B内部バス112に常時接続されている。
【0032】
なお、ステップS203において、CPU3から入力された起動成功フラグは、バス切替SW121への入力と同時にアドレス値発生・制御部102へも入力される(図3に図示せず)。
起動成功フラグが入力されたアドレス値発生・制御部102は、アドレス値をアドレス値「0」から最終アドレス値「n」まで順次発生させていく(S205)。このとき、アドレス値発生・制御部102は、検出イネーブル信号を一致検出部A101へ出力し、加算イネーブル信号を加算部106へ出力する。ただし、アドレス値が最終アドレス値である「n」である場合、アドレス値発生・制御部102は加算イネーブルを出力しない。
ROMコントローラ1は、アドレス値発生・制御部102から出力されたアドレス値に対応するプログラムデータを、ROM−A6から、ROM−Aバス4およびROM−A内部バス111を経由して取得すると(S206)、このプログラムデータを一致検出部A101、加算部106へ入力する。
同時に、ROMコントローラ1は、アドレス値発生・制御部102が発生したアドレス値に該当するROM−B7のプログラムデータも同様に、ROM−Bバス5およびROM−B内部バス112を介して取得する(S207)と、ROM−B内部バス112を経由して一致検出部A101、加算部106へ入力する。なお、この時点における加算部106の加算値は初期値としての「0」である。
【0033】
次に、一致検出部A101は、ROM−A内部バス111、ROM−B内部バス112 それぞれから入力されたプログラムデータ(アドレス値発生・制御部102が発生したアドレス値に該当するプログラムデータ)が一致しているかを、アドレス値発生・制御部102から入力される検出イネーブル信号のタイミングで判定する(S208)。
ステップS208の結果、プログラムデータ値が一致した場合(S208→Yes)、ROMコントローラ1はステップS211へ処理を進める。
ステップS208の結果、プログラムデータ値の不一致を検出した場合(S208→No)、一致検出部A101は、不一致検出信号をアドレスバッファ部103へ出力する。
不一致検出信号が入力されたアドレスバッファ部103は、不一致検出信号が入力された時においてアドレス値発生・制御部102が発生しているアドレス値をアドレスバッファ部103自身に保存する(S209)。この保存されたアドレス値はプログラムデータの復旧の際に用いられる。
【0034】
また、前記したように、ROM−A6のプログラムデータ値とROM−B7のプログラムデータ値は、加算部106へも入力される。各プログラムデータ値を入力された加算部106は、自身が保持している加算値と、ROM−A6およびROM−B7から入力されたそれぞれのプログラムデータ値とを、アドレス値発生・制御部102から入力される加算イネーブル信号のタイミングで加算し(S210)、それぞれの加算値を自身に保存する。
【0035】
次に、アドレス値発生・制御部102がアドレス値発生・制御部102で発生されたアドレス値が「n」であるか否かを判定する(S211)。
ステップS211の結果、アドレス値が「n」でない場合(S211→No)、ROMコントローラ1は、ステップS205へ処理を戻す。
ステップS211の結果、アドレス値が「n」である場合(S211→Yes)、アドレス値発生・制御部102から一致検出イネーブル信号が一致検出部B105へ出力される。すると、この一致検出イネーブル信号を受信した一致検出部B105は、加算部106からROM−A6およびROM−B7に関するチェックサム値(第1チェックサム値と称する)を取得し、ROM−Aバス4、ROM−A内部バス111を介してROM−A6に格納されているチェックサム値(第2チェックサム値と称する)を取得する。さらに、一致検出部B105は、ROM−Bバス5、ROM−B内部バス112を介してROM−B7に格納されているチェックサム値(第2チェックサム値)も取得する(S212)。なお、第1チェックサム値は、第2チェックサム値と同じ下n桁を取得する。
【0036】
そして、一致検出部B105は、取得したROM−A6およびROM−B7に関するそれぞれの第1チェックサム値および第2チェックサム値を比較する(S213)。
【0037】
すなわち、ROMコントローラ1内で先頭アドレスから順次加算してきた値(第1チェックサム値)と最終アドレスから読み出した値(第2チェックサム値)が一致していれば、ROM9でデータ破壊は発生していないと判断できる。2つのROM9それぞれにおいて第1チェックサム値と、第2チェックサム値が一致していれば、同時に2つのROM9に対してデータ破壊が発生する可能性は、ほぼ「0」であるため、この場合はどちらのROM9にもデータ破壊が発生していないと判定しても問題ない。
【0038】
プログラムデータを復旧する際、ROM−A6またはROM−B7のどちらが破壊されていたかによって、復旧元(コピー元)と復旧先(コピー席)が決定される。ROM−A6でデータ破壊を検出した場合、ROMコントローラ1はアドレスバッファ部103に記憶していたアドレス値に該当するプログラムデータをROM−B7から読み出し、ROM−A6へ上書きすることで破壊されたプログラムデータの復旧動作を行う。つまり、ROM−A6の第1チェックサム値と第2チェックサム値が不一致であり、ROM−B7の第1チェックサム値が一致していれば、ROMコントローラ1は、ROM−A6のプログラムデータが破壊していると判定する。ROM−B7でデータ破壊を検出した場合、ROMコントローラ1はROM−A6からプログラムデータを読み出し、ROM−B7へ上書きすることで破壊されたプログラムデータの復旧動作を行う。
【0039】
そして、一致検出部B105は、ステップS213の比較の結果、どちらか一方のROM9でチェックサム値の不一致を検出したか否かを判定する(S214)。
ステップS214の結果、チェックサム値の不一致を検出しなかった場合(S214→No)、2つのROM9において、データ破壊が生じている確率は非常に低いため、ROM−A6およびROM−B7に格納されているプログラムデータは正常であると判定し、ROMコントローラ1はステップS205へ処理を戻し、アドレス値「0」からチェック処理を再開する。
ステップS214の結果、チェックサム値の不一致を検出した場合(S214→Yes)、一致検出部B105は、ステップS213の比較結果を含む復旧開始信号をデータ復旧部104へ出力する。この復旧開始信号には、どちらのROM9が正常で、どちらのROM9のプログラムデータが破壊されているかの情報が含まれている。
このとき、アドレス値が「0」に戻り、ステップS205の処理をアドレス値発生・制御部102が行わないように、すなわち、プログラムデータの復旧の間、アドレス値発生・制御部102を停止させるため、復旧開始信号はアドレス値発生・制御部102へも入力される。
【0040】
復旧開始信号が入力されたデータ復旧部104は、不一致が検出されたアドレス値を保持しているアドレスバッファ部103から当該アドレス値を取得する(S215)。
そして、データ復旧部104は、復旧開始信号に含まれるコピー元のROM9からステップS215で取得したアドレス値で示されるプログラムデータを取得すると、復旧信号に含まれるコピー先のROM9におけるステップS215で取得したアドレス値へプログラムデータをコピーする(S216)ことにより、プログラムデータの復旧を行う。
【0041】
そして、データ復旧部104は、アドレスバッファ部103に保持されていたすべてのアドレス値に関してコピーが完了したか否かを判定する(S217)。
ステップS217の結果、コピー完了していない場合(S217→No)、ステップS216へ処理を戻す。
ステップS217の結果、コピーが完了している場合(S217→Yes)、データ復旧部104は、復旧完了信号をアドレス値発生・制御部102へ出力する。
プログラムデータの復旧の為に、一時停止していたアドレス値発生・制御部102は、復旧完了信号を受けると、図5AのステップS205へ処理を戻し、アドレス値を「0」から順次発生・出力していく処理を再開する。
【0042】
以上の動作を行うことにより、ROM9に格納されているプログラムデータのデータ破壊検出動作と自己復旧動作を行なう。これにより常にROM−A6には、正常なプログラムデータが格納されシステム起動の信頼性の保持と、システム起動時間の短縮が可能となる。また、アドレスバッファに保持されているアドレス値に該当するプログラムデータのみをコピーするため、復旧時間の短縮が可能となる。
【0043】
(プログラムデータ更新時)
情報処理システム10は、工場から出荷された後、性能向上の為、ROM9のプログラムデータの更新を行うことがある。更新プログラムデータは、外部から情報処理システム10に入力されるのでCPU3を用いて更新する必要がある。しかし、本実施形態に係る情報処理システム10では、プログラムの起動後において、CPU3は、ROM−A6へのアクセスは可能であるが、ROM−B7へのアクセスが不可能である。これでは、プログラム起動時において、本実施形態の目的であるROM−A6とROM−B7とに同じプログラムデータを格納することによって、データ破壊を検出し、自己復旧する処理を実現することができない。つまり、図5AのステップS208でROM−A6およびROM−B7における個々のアドレス値に該当するプログラムデータ値が不一致と判定されても、図5BのステップS213のチェックサム値の比較の段階で、ROM−A6およびROM−B7の双方の第2チェックサム値が、第1チェックサム値と一致してしまうため、一致検出部B105は、双方のプログラムデータにおいてデータ破壊はなしと判断してしまうことになる。
このような状態を避けるため、ROMコントローラ1は以下に説明する処理を行う。
【0044】
図6は、本実施形態に係るプログラム更新処理の流れを示すフローチャートである。
CPU3は、プログラムデータを更新する際、プログラム更新信号をアドレス値発生・制御部102とデータ復旧部104のそれぞれへ入力する(S301)。
プログラム更新信号が入力されたアドレス値発生・制御部102とデータ復旧部104は、現在行っている処理(すなわち、図5AのステップS205および図5BのステップS216)を停止させる(S302)。
次に、アドレス値発生・制御部102は、現在行っている動作を停止させたら、更新開始信号をバス切替SW121へ出力する。更新開始信号の否定(「0」)が入力されたバス切替SW121は、ROM−Aバス4をCPUバス8に接続するよう切り替える(S303)。これによりCPU3は、ROM−A6へアクセスできプログラムデータの更新が可能となる。
【0045】
次に、CPU3は、ROM−A6へのプログラムデータ更新を行い(S304)、プログラムデータ更新が完了すると、CPU3はプログラム更新信号を更新前の状態(「0」)に戻す)。プログラム更新信号が更新前に戻ったことを検知したアドレス値発生・制御部102は、アドレス値を「0」へリセットする(S305)。
そして、アドレス値発生・制御部102は、プログラム更新信号が更新前の状態に戻ったのに合わせ、更新開始信号を更新前の状態に戻す。更新前の状態に戻った更新開始信号の否定(「1」)が入力されたバス切替SW121は、ROM−Aバス4と、ROM−A内部バス111との接続に切り替える(S306)。
次に、アドレス値発生・制御部102が「0」から「n」までのアドレス値を順次発生し、データ復旧部104は、アドレス値発生・制御部102が発生したアドレス値に相当するプログラムデータをROM−A6からROM−B7へコピーする(S307)。なお、最終アドレスに格納されるチェックサム値(第2チェックサム値)は予め計算され更新プログラムデータに格納されている。
コピーが完了すると、データ復旧部104は、復旧完了信号をアドレス値発生・制御部102に出力する。
このとき、アドレス値発生・制御部102のアドレス値は、「0」に戻っているので、ROMコントローラ1は図5A、図5BのROMチェック処理を再開する(S308)。
【0046】
図6の処理により、システム運用中のプログラム更新へも対応可能なプログラムデータのデータ破壊検出処理と自己復旧処理が実現できる。更に2つのプログラム格納用ROM9を搭載していてもCPU3から見るとROM92つのうちの1つ分のプログラム更新時間で済み、CPU3に対するプログラム更新のシステム負荷を軽減できる。また。ユーザから個々のROM−A6またはROM−B7に対してプログラム更新の指示入力が不要になる。
【0047】
(ROMのアドレスマップの別の例)
図7は、プログラムデータが複数のブロックに分けられてROMに格納されている場合におけるROMアドレスマップのイメージを示す図である。
図7に示すように、プログラムデータが「プログラムデータA」がアドレス値「0」、「1」〜「k−1」に、「プログラムデータB」がアドレス値「k+1」、「k+2」〜「m−1」に、「プログラムデータC」がアドレス値「m+1」、「m+2」〜「n―1」の各ブロックに格納されていた場合、各プログラムデータの一番最後に各プログラムデータのチェックサム値が格納される。
すなわち、アドレス値「k」には、「プログラムデータA」のチェックサム値が、アドレス値「m」には、「プログラムデータB」のチェックサム値が、アドレス値「n」には、「プログラムデータC」のチェックサム値が格納される。そして、ROM9の最終アドレス値「n+1」には全体のチェックサム値が格納される。
【0048】
このようにすることで、ROMコントローラ1は、各プログラムデータ(ブロック)毎にデータ破壊検出処理と自己復旧処理を行うことができる。
この場合、図5の処理はプログラムデータ毎に行われることになる。
【0049】
(監視機器システム)
図8は、本実施形態に係る情報処理システムを搭載した監視機器システムの構成例を示す図である。
監視機器システム30は、アナログビデオカメラ(監視カメラ)19、ネットワークカメラ(監視カメラ)23、レコーダ21、モニタテレビ22、外部PC(Personal Computer)25を有してなる。
アナログビデオカメラ19は、アナログ映像信号を出力する機能を有し、アナログカメラの映像信号をレコーダ21へ伝送する同軸ケーブル20でレコーダ21に接続されている。
ネットワークカメラ23は、映像信号をネットワーク回線24を介してレコーダ21へ出力する機能を有している。
レコーダ21は、アナログビデオカメラ19やネットワークカメラ23から入力された映像信号を記録する機能を有する。
モニタテレビ22は、レコーダ21に入力された映像信号や、レコーダ21で再生された映像信号を表示する機能を有する。
外部PC25は、遠隔にて監視機器システム30を制御する機能を有する。
【0050】
なお、アナログビデオカメラ19やネットワークカメラ23は天井など一度設置されたらその後は簡単に操作できない場所に複数台をレコーダ21に接続することが一般的である。
そして、図8の構成では、アナログビデオカメラ19や、ネットワークカメラ23や、レコーダ21に本実施形態の情報処理装置が搭載されている。
【0051】
本実施形態のROM9は、プログラム起動後、CPU3の読み込みが行われないものであればよく、例えば、フラッシュROMなどを使用することも可能である。
なお、本実施形態では、一致検出部A101におけるアドレス毎のプログラムの一致・不一致検出と並行して、加算部106における第1チェックサム値の算出が行われているが、一致検出回路A101で不一致が検出された後、第1チェックサム値を算出してもよい。
また、本実施形態ではROM9を2つとしているが、3つ以上でもよい。この場合、ROM−A6以外のすべてのROM9がROMコントローラ1に常時接続されていてもよいし、切替SWによってROM−A6以外のROM9でROMコントローラ1に常時接続されるROM9が切り替えられてもよい。なお、ROM9が3つ以上である場合、一致検出部A101や、一致検出部B105や、加算部106はすべてのROM9に対して、本実施形態と同様の処理を行ってもよい。
【0052】
(まとめ)
本実施形態によれば、情報処理システム10の運用中にROM9内のプログラムデータが破壊してもプログラムデータを自己復旧することができ、また、自己復旧によるシステム起動が遅延を防止しながら確実なシステム起動を期待できる。
つまり、チェックサム値の比較によって、データ復旧の信頼性を保持しつつ、不一致が検出されたアドレスに該当するデータのみを復旧することで、データ復旧時間を短縮することができる。
また、本実施形態によれば、これまで通り、外部ファイル装置を必要とせず、またRAM2を1つ搭載すればよい。
【符号の説明】
【0053】
1 ROMコントローラ(情報処理装置)
2 RAM
3 CPU
4 ROM−Aバス
5 ROM−Bバス
6 ROM−A(不揮発性記憶装置)
7 ROM−B(不揮発性記憶装置)
8 CPUバス
9 ROM
10 情報処理システム
19 アナログビデオカメラ(監視カメラ)
21 レコーダ
23 ネットワークカメラ(監視カメラ)
30 監視機器システム
101 一致検出部A(第1の一致検出部)
102 アドレス値発生・制御部
103 アドレスバッファ部(アドレス記憶処理部)
104 データ復旧部
105 一致検出部B(第2の一致検出部)
106 加算部
111 ROM−A内部バス
112 ROM−B内部バス
121 バス切替SW
122 ANDゲート
【特許請求の範囲】
【請求項1】
同じデータを格納している、少なくとも2つの不揮発性記憶装置の内容をチェックする情報処理装置であって、
それぞれの前記不揮発性記憶装置に格納されているデータが一致しているか否かを、アドレス毎に判定する第1の一致検出部と、
前記第1の一致検出部において、データの不一致が検出された場合、前記不一致が検出されたアドレスを記憶するアドレス記憶処理部と、
前記それぞれの不揮発性記憶装置に格納されているデータの値を加算することにより、第1のチェックサム値を算出する加算部と、
前記第1のチェックサム値と、予め前記不揮発性記憶装置に格納されている第2のチェックサム値とを、前記それぞれの不揮発性記憶装置において比較する第2の一致検出部と、
前記第2の一致検出部において、一方の不揮発性記憶装置の前記第1のチェックサム値と、前記第2のチェックサム値と、が不一致であると判定された場合、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致している不揮発性記憶装置から、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致していない不揮発性記憶装置へ、前記アドレス記憶処理部に記憶されているアドレスに該当するデータをコピーするデータ復旧部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記情報処理装置は、前記不揮発性記憶装置と、CPUとの間に接続される
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
CPUによる前記不揮発性記憶装置へのアクセスがない状態となった後、前記情報処理装置自身の処理が開始される
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記情報処理装置は、
一方の前記不揮発性記憶装置のデータの更新が検知されると、前記情報処理装置自身の処理を停止した後、
前記データ復旧部が、
データの更新が行われた不揮発性記憶装置のデータを、他方の前記不揮発性記憶装置へコピーする
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
監視カメラまたはレコーダに、請求項1から請求項4のいずれか一項に記載の情報処理装置が搭載されている
ことを特徴とする監視機器システム。
【請求項1】
同じデータを格納している、少なくとも2つの不揮発性記憶装置の内容をチェックする情報処理装置であって、
それぞれの前記不揮発性記憶装置に格納されているデータが一致しているか否かを、アドレス毎に判定する第1の一致検出部と、
前記第1の一致検出部において、データの不一致が検出された場合、前記不一致が検出されたアドレスを記憶するアドレス記憶処理部と、
前記それぞれの不揮発性記憶装置に格納されているデータの値を加算することにより、第1のチェックサム値を算出する加算部と、
前記第1のチェックサム値と、予め前記不揮発性記憶装置に格納されている第2のチェックサム値とを、前記それぞれの不揮発性記憶装置において比較する第2の一致検出部と、
前記第2の一致検出部において、一方の不揮発性記憶装置の前記第1のチェックサム値と、前記第2のチェックサム値と、が不一致であると判定された場合、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致している不揮発性記憶装置から、前記第1のチェックサム値と、前記第2のチェックサム値と、が一致していない不揮発性記憶装置へ、前記アドレス記憶処理部に記憶されているアドレスに該当するデータをコピーするデータ復旧部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記情報処理装置は、前記不揮発性記憶装置と、CPUとの間に接続される
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
CPUによる前記不揮発性記憶装置へのアクセスがない状態となった後、前記情報処理装置自身の処理が開始される
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記情報処理装置は、
一方の前記不揮発性記憶装置のデータの更新が検知されると、前記情報処理装置自身の処理を停止した後、
前記データ復旧部が、
データの更新が行われた不揮発性記憶装置のデータを、他方の前記不揮発性記憶装置へコピーする
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
監視カメラまたはレコーダに、請求項1から請求項4のいずれか一項に記載の情報処理装置が搭載されている
ことを特徴とする監視機器システム。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【公開番号】特開2011−198224(P2011−198224A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−66176(P2010−66176)
【出願日】平成22年3月23日(2010.3.23)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願日】平成22年3月23日(2010.3.23)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]