(57)【要約】【課題】フラッシュメモリへの更新起動プログラムの書込みに失敗した場合にも、フラッシュメモリの交換を必要とせず、更新起動プログラムの再書込みを可能とする情報処理装置を得る。【解決手段】ＣＰＵ１からＦＰＧＡ２を経由してアクセスされ、起動プログラムをそれぞれ格納した複数のフラッシュメモリ３１、３２と、このフラッシュメモリのいずれかを選択するようにフラッシュメモリの切替を手動で設定するディップスイッチ４とを有し、起動時にはＦＰＧＡ２が、ディップスイッチ４の設定に応じたフラッシュメモリから起動プログラムを読み出し、ＣＰＵ１に送るようにした。【選択図】図１
2014089497.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵを有する情報処理装置であって、
起動プログラムをそれぞれ格納した複数の不揮発性メモリ、
この不揮発性メモリのいずれかを選択するように設定できる不揮発性メモリ選択手段、
及び起動時に上記不揮発性メモリ選択手段の設定に応じた上記不揮発性メモリから上記起動プログラムを読み出し、上記ＣＰＵに送るＦＰＧＡを備えたことを特徴とする情報処理装置。
【請求項２】
ＣＰＵを有する情報処理装置であって、
起動プログラムを格納した不揮発性メモリ、
上記起動プログラムを内部メモリに格納したＦＰＧＡ、
及び上記不揮発性メモリと上記内部メモリのいずれかを選択するように設定できる不揮発性メモリ選択手段を備え、
上記ＦＰＧＡは、起動時に上記不揮発性メモリ選択手段の設定に応じた上記不揮発性メモリまたは上記内部メモリから上記起動プログラムを読み出し、上記ＣＰＵに送ることを特徴とする情報処理装置。
【請求項３】
ＣＰＵを有する情報処理装置であって、
起動プログラムをそれぞれ格納した複数の領域を有する不揮発性メモリ、
この不揮発性メモリの領域のいずれかを選択するように設定できる不揮発性メモリ選択手段、
及び起動時に上記不揮発性メモリ選択手段の設定に応じた上記不揮発性メモリの領域から上記起動プログラムを読み出し、上記ＣＰＵに送るＦＰＧＡを備えたことを特徴とする情報処理装置。
【請求項４】
上記不揮発性メモリの領域は、物理セクタであることを特徴とする請求項３記載の情報処理装置。
【請求項５】
上記ＦＰＧＡの内部メモリはそれぞれ起動プログラムを格納した複数の領域に分割され、
上記不揮発性メモリ選択手段は、上記不揮発性メモリと上記内部メモリの領域のいずれかを選択するように設定できることを特徴とする請求項２記載の情報処理装置。
【請求項６】
上記ＦＰＧＡの内部メモリの領域の一つを上記不揮発性メモリに格納された起動プログラムのバックアップに用いることを特徴とする請求項５記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、監視制御システムにおいて、マイクロプロセッサ（以下ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））とフラッシュメモリなどの不揮発性メモリで構成される情報処理装置に関するものである。
【背景技術】
【０００２】
組込み装置でも近年、プログラムの書換えができるように、フラッシュメモリを不揮発性メモリとして採用することが一般的となっている。しかし、書換え中の不用意な操作や電源断などの要因で起動プログラムの書換えに失敗した場合、装置の起動ができなくなりフラッシュメモリの交換が必要となっていた。
こうした場合に対応するために、フラッシュメモリを２個持ち、それぞれに起動プログラムを記録しておき、さらに一方の起動プログラムで正しく起動しない場合に他方の起動プログラムで起動する切替手段を持った手法が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１０９６２９号公報（第３〜５頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の手法では、一方の起動プログラムで正しく起動したかどうかを判定し、また正しく起動しなかった場合に切替を行うために、ブート制御用ＣＰＵ、切替回路、アドレスデコーダなどの機構を備える必要がある。これらのハードウェア部品、ハードウェア回路、ブート制御用ＣＰＵを動作させる判定プログラムが必要となるため、基板実装効率が悪くなり、部品コストが余分にかかる、という問題があった。
一方、起動プログラムの更新書込みを行う場合には、書込み失敗すると装置起動ができなくなり装置にとって致命的な状態となる。自動的に切替を行うことはリスクを伴うため、実際の運用では手動で切替する場合も多い。こうした手動切替の場合には自動化を考慮した特別な機構は不要なので、余分な部品を削減したいという課題があった。
【０００５】
この発明は上記のような課題を解決するためになされたものであり、フラッシュメモリへの更新起動プログラムの書込みに失敗した場合にも、フラッシュメモリの交換を必要とせず、更新起動プログラムの再書込みを可能とする情報処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係わる情報処理装置においては、ＣＰＵを有する情報処理装置であって、起動プログラムをそれぞれ格納した複数の不揮発性メモリ、この不揮発性メモリのいずれかを選択するように設定できる不揮発性メモリ選択手段、及び起動時に不揮発性メモリ選択手段の設定に応じた不揮発性メモリから起動プログラムを読み出し、ＣＰＵに送るＦＰＧＡを備えたものである。
【発明の効果】
【０００７】
この発明によれば、ＣＰＵを有する情報処理装置であって、起動プログラムをそれぞれ格納した複数の不揮発性メモリ、この不揮発性メモリのいずれかを選択するように設定できる不揮発性メモリ選択手段、及び起動時に不揮発性メモリ選択手段の設定に応じた不揮
発性メモリから起動プログラムを読み出し、ＣＰＵに送るＦＰＧＡを備えたので、不揮発性メモリの切替えのための回路を必要とせず、不揮発性メモリへの更新起動プログラムの書込みに失敗した場合にも、不揮発性メモリの交換を必要とせず、更新起動プログラムの再書込みを可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１による情報処理装置を示すブロック図である。
【図２】この発明の実施の形態２による情報処理装置を示すブロック図である。
【図３】この発明の実施の形態３による情報処理装置を示すブロック図である。
【図４】この発明の実施の形態４による情報処理装置を示すブロック図である。
【図５】この発明の実施の形態５による情報処理装置を示すブロック図である。
【図６】この発明の実施の形態６による情報処理装置を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
以下、この発明の実施の形態１を説明する。
図１は、この発明の実施の形態１による情報処理装置を示すブロック図である。
図１において、ＣＰＵ１には、システムバス５を介してＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）２が接続されている。ＦＰＧＡ２には、フラッシュメモリ３１、フラッシュメモリ３２、ディップスイッチ４が接続されている。
フラッシュメモリ３１（不揮発性メモリ）には、起動プログラムと、起動後にメインメモリ６に展開されて動作するＯＳやアプリケーション等のプログラムが記録されている。
【００１０】
一方、フラッシュメモリ３２（不揮発性メモリ）は、フラッシュメモリ３１と同じプログラムを記録しておいてもよいし、起動プログラムとフラッシュメモリ書込みを行うためのプログラム群のみを記録しておいてもよい。
ディップスイッチ４（不揮発性メモリ選択手段）は、スイッチ状態により、フラッシュメモリ３１、３２のいずれかを選択する。メインメモリ６は、システムバス５によりＣＰＵ１とＦＰＧＡ２に接続されている。
このように、実施の形態１では、システムバス５上でＣＰＵ１から直接フラッシュメモリ３１、３２にアクセスするのではなく、ＦＰＧＡ２を経由してフラッシュメモリ３１、３２にアクセスする点が従来と異なっている。
【００１１】
次に、動作について説明する。
ＦＰＧＡ２は、ディップスイッチ４のスイッチ状態に基づいて、フラッシュメモリ３１、３２のいずれを選択するかを決定するように論理回路を構成する。通常は、フラッシュメモリ３１を選択するようにディップスイッチ４を設定して起動する。すなわち、ＦＰＧＡ２経由でＣＰＵ１がフラッシュメモリの起動プログラムを読み込み、情報処理装置を起動するようになっている。
【００１２】
フラッシュメモリ３１への更新起動プログラムの書込みを失敗した場合は、ディップスイッチ４のスイッチを切り替えて起動する。この場合、ＦＰＧＡ２はディップスイッチ４の設定に基づいて、フラッシュメモリ３２を選択して起動プログラムをＣＰＵ１が読み込めるようにする。
この状態で、フラッシュメモリ３１への更新起動プログラムを再度書込みして成功すると、ディップスイッチ４の設定を元に戻して再起動することにより、再びフラッシュメモリ３１から起動プログラムが実行可能となる。
【００１３】
なお、ここではフラッシュメモリ切替手段（不揮発性メモリ選択手段）として、実装が容易な点からディップスイッチ４を採用しているが、手動で切替ができる部品であれば、ディップスイッチに限るものではない。
また、ソフトウェアコマンドによりＦＰＧＡ２のレジスタや内部メモリに設定することにより同じ手法を実現することもできる。
【００１４】
このように、実施の形態１によれば、ＣＰＵからＦＰＧＡを経由してフラッシュメモリにアクセスするように構成し、フラッシュメモリ切替手段によってアクセスするフラッシュメモリをＦＰＧＡで切替できるように構成したので、ブート制御用ＣＰＵ、アドレスデコーダ、切替回路といった部品、回路を備える必要がなく、起動プログラムの書込みに失敗した場合でもプログラムの再書込みで復旧が可能となる。
【００１５】
実施の形態２．
次に実施の形態２について説明する。
図２は、この発明の実施の形態２による情報処理装置を示すブロック図である。
図２において、１、２、３１、４〜６は、図１におけるものと同一のものである。図２では、ＦＰＧＡ２に内部メモリ２１を持たせ、内部メモリ２１には、起動プログラムと、フラッシュメモリ３１に記録されるプログラムを書換えるためのプログラムを記録しておく。
近年のＦＰＧＡは大容量化が進み、起動プログラムを保存するのに十分な大容量の内部メモリを持つＦＰＧＡが存在するようになった。このため、実施の形態２では、ＦＰＧＡ２に内部メモリ２１を持つものとし、フラッシュメモリはフラッシュメモリ３１の１個だけで構成する。
【００１６】
次に、動作について説明する。
実施の形態１と同様に、フラッシュメモリ３１に更新起動プログラムを書込み失敗した場合は、ディップスイッチ４のスイッチを切り替えて起動する。この場合、ＦＰＧＡ２はディップスイッチ４の設定に基づいて、フラッシュメモリ３２の代わりに内部メモリ２１を選択して起動プログラムをＣＰＵ１が読み込めるようにする。
この状態で、フラッシュメモリ３１への更新起動プログラムを再度書込みして成功すると、ディップスイッチ４の設定を元に戻して再起動することにより、再びフラッシュメモリ３１から更新された起動プログラムが実行可能となる。
【００１７】
このように、実施の形態２によれば、ＦＰＧＡ内の内部メモリに起動プログラムとフラッシュメモリ書込みプログラムを記録し、フラッシュメモリ切替手段によってフラッシュメモリかＦＰＧＡ内部メモリかのいずれかをＦＰＧＡで切替できるように構成したので、実施の形態１に加えて、フラッシュメモリ１個だけの構成としても、更新起動プログラムの書込みに失敗した場合でも起動プログラムの再書込みで復旧が可能となり、フラッシュメモリを複数で構成する必要がない。
【００１８】
実施の形態３．
次に実施の形態３について説明する。
図３は、この発明の実施の形態３による情報処理装置を示すブロック図である。
図３において、１、２、２１、３１、４〜６は、図２におけるものと同一のものである。図３では、フラッシュメモリ３１は領域１（３１ａ）と領域２（３１ｂ）を有している。
【００１９】
近年はフラッシュメモリについても大容量化が進んでおり、格納したいプログラムのサイズに対して十二分に大きな容量を備えるフラッシュメモリを情報処理装置に実装することができるようになった。この場合、使用しないメモリ領域を利用して起動プログラムの多重化が可能となる。ここではフラッシュメモリ３１を領域１（３１ａ）、領域２（３１ｂ）の２つに分けるものとするが、フラッシュメモリの容量とプログラム記録に必要な容量に応じて、３つ以上の領域に分割することも当然可能である。
また、ＦＰＧＡ２内には、フラッシュメモリ領域毎の先頭アドレス（ベースアドレスと呼ぶ）を定義しておく。この定義は内部メモリ２１内に保存することで実現できるが、ここでは特にベースアドレス指定テーブルと呼ぶ。
【００２０】
次に、動作について説明する。
実施の形態１、２と同様に、フラッシュメモリ３１の領域１（３１ａ）に更新起動プログラムを書込み失敗した場合は、ディップスイッチ４のスイッチを切り替えて起動する。この場合、ＦＰＧＡ２はディップスイッチ４の設定に基づいて、フラッシュメモリ３１の領域２（３１ｂ）をベースアドレスとして起動プログラムをＣＰＵ１が読み込めるようにする。
また、別のディップスイッチ設定をすることにより、内部メモリ２１を選択して起動プログラムをＣＰＵ１が読み込めることもできるようにする。この状態でフラッシュメモリ３１の領域１（３１ａ）への更新起動プログラムを再度書込みして成功すると、ディップスイッチ４の設定を元に戻して再起動することにより、再びフラッシュメモリ３１の領域１（３１ａ）から更新された起動プログラムが実行可能となる。
【００２１】
このように、実施の形態３によれば、フラッシュメモリのメモリ領域を複数に分割し、ＦＰＧＡでベースアドレス指定テーブルを持つように構成したので、実施の形態１、２に加えて、１個のフラッシュメモリ上で起動プログラムの多重化が可能となり、更新起動プログラムの書込みに失敗した場合でもプログラムの再書込みで復旧可能になるとともに、ＯＳ、アプリケーションを含めた全プログラムの多重化が可能となる。
さらにＦＰＧＡ内部メモリからもフラッシュメモリ書込み可能な構成としておけば、フラッシュメモリの全領域のデータが全て破壊された場合でも、フラッシュメモリを交換することなく、再度書込みが可能となる。
【００２２】
実施の形態４．
次に実施の形態４について説明する。
図４は、この発明の実施の形態４による情報処理装置を示すブロック図である。
図４において、１、２、２１、３１、４〜６は、図３におけるものと同一のものである。図４では、内部メモリ２１にセクタ番号テーブルを有し、フラッシュメモリ３１は複数の物理セクタをもつ。
【００２３】
フラッシュメモリは通常、物理セクタ毎にデータの書換えが行われるが、消去、書込みが可能な回数は無限ではなく、十万回程度の有限回しかできないという物理的な制約がある。このため、書換えを頻繁に行う使い方をする必要がある場合には、特定の物理セクタが書込み不可となってしまい、二度とそのアドレスのデータを記録できなくなる可能性がある。
こうした問題を解決するため、実施の形態４では、特定の物理セクタが物理的に書込み不可となった場合でも、フラッシュメモリを交換せずに装置寿命を延ばすための手段を提供する。
図４のフラッシュメモリ３１は、複数の物理セクタを持つ。このため、起動プログラムを記録する領域内でセクタ＃１〜セクタ＃Ｎとして複数のセクタ領域を保持しておく。
ＦＰＧＡ２では、フラッシュメモリのうち起動プログラムを記録する領域の各セクタ番号とベースアドレスの関係を保持したテーブルを定義する。この定義も内部メモリ２１内に保存することで実現できるが、ここでは特にセクタ番号テーブルと呼ぶ。
【００２４】
次に、動作について説明する。
実施の形態１〜３と同様に、フラッシュメモリ３１のセクタ＃１に更新起動プログラムを書込み失敗した場合は、ディップスイッチ４のスイッチを切り替えて起動する。しかし、何度書込みを試行しても失敗する場合は、物理セクタが壊れて物理的に書込み不可になったと判断することができる。
この場合、ディップスイッチ４の設定で、セクタ＃２となるように変更して、このセクタに対して更新起動プログラムの書込みを行う。この状態で再起動すると、セクタ＃２に記録した起動プログラムをＦＰＧＡ２経由で読み込んでＣＰＵ１が起動できるようになる。
【００２５】
このように、実施の形態４によれば、フラッシュメモリの物理セクタの物理的制約と構成に着目し、起動プログラムを記録する領域を複数セクタ準備しておき、通常使っている物理セクタが故障した場合には、次のセクタに起動プログラムを記録し、このセクタのベースアドレスから起動するように構成したので、フラッシュメモリの特定セクタが故障した場合でもフラッシュメモリを交換することなく情報処理装置を起動できるので、装置寿命の長期化が可能となる。
【００２６】
実施の形態５．
次に、実施の形態５について説明する。
実施の形態３、４では、フラッシュメモリの大容量化に着目して、フラッシュメモリ内での起動プログラム多重化を行う手法を説明したが、実施の形態５では、ＦＰＧＡ２の内部メモリ２１の大容量化により、内部メモリ２１でのプログラム多重化を行う手段を提供する。
特に、起動プログラムやフラッシュメモリ書込みプログラムの変更が、ＦＰＧＡ内部メモリ２１に記録しているプログラムに対しても必要となる場合には、内部メモリ２１のプログラムを多重化することにより、書込み失敗した場合でも再書込み可能となることが保証されるので、書込み操作に対する保守性を高めることができる。
【００２７】
図５は、この発明の実施の形態５による情報処理装置を示すブロック図である。
図５において、１、２、２１、３１、４〜６は、図２におけるものと同一のものである。図５では、内部メモリ２１は領域１（２１ａ）と領域２（２１ｂ）を有している。
図５のＦＰＧＡ２は内部メモリ２１を持ち、この内部メモリ２１を複数の領域に分割する。ここでは、内部メモリ２１の領域１（２１ａ）、領域２（２１ｂ）の２つに分けるものとするが、内部メモリの容量とプログラム記録に必要な容量に応じて、３つ以上の領域に分割することも当然可能である。
【００２８】
次に、動作について説明する。
実施の形態１〜４と同様に、フラッシュメモリ３１に更新起動プログラムを書込み失敗した場合は、ディップスイッチ４のスイッチを切り替えて起動する。
フラッシュメモリ３１に書き換えた起動プログラムで正しく起動することが確認できれば、この新しい起動プログラムをＦＰＧＡ２の内部メモリ２１に対しても書換えしておく必要が生じる場合がある。
この場合は、内部メモリ２１の領域１（２１ａ）のフラッシュメモリ書込みプログラムを用いて、フラッシュメモリ３１に記録された起動プログラム、または別途読み込んだ起動プログラムを内部メモリ２１の領域２（２１ｂ）に書き込んでおく。
このようにすることで、内部メモリの起動プログラムを新しいものに更新することができる。同様に、ディップスイッチ４の設定により、内部メモリ２１の領域２（２１ｂ）のフラッシュメモリ書込みプログラムを起動して、内部メモリ２１の領域１（２１ａ）の起動プログラムを書き換えることも可能となる。
【００２９】
このように、実施の形態５によれば、ＦＰＧＡの内部メモリを複数の領域に分割して構成するようにしたので、内部メモリでも起動プログラムを多重化保持することが可能となる。
【００３０】
実施の形態６．
次に、実施の形態６について説明する。
実施の形態１〜５では、更新起動プログラムの書込み操作中において失敗した場合でも再書込みできることを保証するための手段を提供した。しかし、新しく書き込もうとする起動プログラム自体に問題があって正しく起動が完了しない場合には、何度書込みをやり直しても正しく起動が完了できないので、速やかに元のプログラムに戻すことが必要になる。
実施の形態６は、新たに書き込んだ起動プログラムに問題がある場合に元の起動プログラムに速やかに戻す手段を提供する。
【００３１】
図６は、この発明の実施の形態６による情報処理装置を示すブロック図である。
図６において、１、２、２１、２１ａ、２１ｂ、３１、４〜６は、図５におけるものと同一のものである。
実施の形態５では、内部メモリ２１の領域１（２１ａ）と領域２（２１ｂ）は同じ役割であったが、実施の形態６では、内部メモリ２１の領域２（２１ｂ）を起動プログラムのバックアップ用途に割当てるものとする。
【００３２】
次に、動作について説明する。
フラッシュメモリ３１を書き換える前に、フラッシュメモリ３１から書換え前の起動プログラムを内部メモリ２１の領域２（２１ｂ）に記録する。これが起動プログラムのバックアップの役割を果たす。
内部メモリ２に起動プログラムをバックアップした後で、フラッシュメモリ３１に対して更新起動プログラム書込みを行う。書込み失敗した場合には、実施の形態１〜５の方法で再書込みを行う。
この後、更新起動プログラムを用いて再起動しても正しく起動しないことが確認された場合には、起動プログラムの書き戻しを行う。ディップスイッチ４の設定により、内部メモリ２１の領域２（２１ｂ）からフラッシュメモリ３１に対して起動プログラム書込みを行うようにＦＰＧＡ２に処理を定義しておく。
【００３３】
このように、実施の形態６によれば、ＦＰＧＡの内部メモリを複数の領域に分割して構成するとともに、そのうち１つの領域を起動プログラムのバックアップ領域として定義し、更新起動プログラム書込み後に正常に起動しない場合には元の起動プログラムを書き戻せるようにしたので、新たに書込みした起動プログラムに異常があった場合でも元の起動プログラムで起動できるようになり、情報処理装置の可用性、信頼性を高めることができる。
【００３４】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【００３５】
１  ＣＰＵ、２  ＦＰＧＡ、２１  ＦＰＧＡの内部メモリ、
３１、３２  フラッシュメモリ、４  ディップスイッチ、５  システムバス、
６  メインメモリ。
【図１】
2014089497.tif 000003
【図２】
2014089497.tif 000004
【図３】
2014089497.tif 000005
【図４】
2014089497.tif 000006
【図５】
2014089497.tif 000007
【図６】
2014089497.tif 000008