(57)【要約】      （修正有）【課題】制御装置において初期化処理する回路の初期設定値に変更が必要になった場合にファームウェア自体を変更せずに初期化処理を変更可能とし、また、保存されている初期設定値に不測の誤りが生じた場合でも誤った設定値で該回路を初期化してしまうことを防ぐことができる制御装置の初期化方法を提供する。【解決手段】制御装置の初期化方法は、初期化対象回路を初期化するための初期設定プログラムが記憶された第１の記憶部と前記初期化対象回路の初期設定値が記憶された第２の記憶部とを具備し、初期設定プログラムを実行するにあたり前記第２の記憶部から前記誤り検出符号を読み出して前記初期設定値の誤りの有無を検出し、誤りが検出されない場合に前記初期設定値を用いて前記初期化対象回路の初期化を行い、誤りが検出された場合に前記別の初期設定値を用いて前記初期化対象回路の初期化を行う。【選択図】図２
2011054083.tif 000002
【特許請求の範囲】
【請求項１】
制御装置の初期化方法であって、
前記制御装置は、演算処理装置と、前記演算処理装置に接続される初期化対象回路と、前記演算処理装置に接続され前記初期化対象回路を初期化するための初期設定プログラムが記憶された第１の記憶部と、前記演算処理装置に接続され前記初期化対象回路の初期設定値が記憶されかつ前記制御装置の外部から前記初期設定値を随時変更することができる第２の記憶部とを具備し、
前記第１の記憶部は前記初期化対象回路の別の初期設定値を有し、
前記第２の記憶部に記憶される前記初期設定値は誤り検出符号が付与されており、
前記制御装置の初期化において、
前記演算処理装置は、前記初期設定プログラムを実行するにあたり前記第２の記憶部から前記誤り検出符号を読み出して前記初期設定値の誤りの有無を検出し、
誤りが検出されない場合に前記初期設定値を用いて前記初期化対象回路の初期化を行い、
誤りが検出された場合に前記別の初期設定値を用いて前記初期化対象回路の初期化を行うことを特徴とする制御装置の初期化方法。
【請求項２】
前記別の初期設定値は、前記第１の記憶部の中で前記初期設定プログラムと別の領域に格納されていることを特徴とする請求項１に記載の制御装置の初期化方法。
【請求項３】
前記別の初期設定値は、前記第１の記憶部の中で前記初期設定プログラムに内蔵されていることを特徴とする請求項１に記載の制御装置の初期化方法。
【請求項４】
前記誤り検出符号が、CRC、チェックサム、またはMD5であることを特徴とする請求項１乃至請求項３に記載の制御装置の初期化方法。
【請求項５】
前記第２の記憶部が、PROMまたはフラッシュメモリであることを特徴とする請求項１乃至請求項４に記載の制御装置の初期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置の初期化方法に関し、特に制御装置内の演算処理装置が該制御装置内の他の回路に対して行う初期化方法に関するものである。
【背景技術】
【０００２】
中央演算処理装置（CPU）が搭載された制御装置の多くにおいて、制御装置内に実装されている各種の大規模集積回路（LSI）等は、その起動時に初期設定処理（初期化処理、単に初期化とも言う）が行われる。この処理は、通常、CPUで実行されるファームウェア（プログラム）により行われる。
【０００３】
従来、LSIの初期化はファームウェア自身が保持している固定的な設定値（変更不能な設定値）を用いて行われていた。LSIのレビジョン変更などによりハードウェアの特性が変更された場合、そのハードウェアの特性変更に合わせてファームウェアの設定も変更する必要があるが、従来の方法では、ファームウェアの設定変更にはファームウェアを格納するROM（Read Only Memory）交換などの多大な手間とコストが必要であった。
【０００４】
このような問題に対し、特許文献１では、LSIのレビジョン変更などにより特性変更がなされた場合でも、ファームウェアの変更を伴わずに、回路の初期化設定値を任意に変更することができる方法が開示されている。図１は、従来技術の制御装置における回路例のブロック構成図である。図１に示すように、電子回路基板1（制御装置）は、プロセッサ（CPU）2と初期設定プログラム3を格納したROMと初期設定値表示回路4と初期値設定対象回路5とから構成され、プロセッサ（CPU）2が他の３つとそれぞれ接続されている。初期設定値表示回路4は、初期値設定対象回路5に対する初期設定値が設定され、外部から随時任意に初期設定値を変えることができるようになっている。
【０００５】
特許文献１によると、電子回路基板1上でプロセッサ2が起動されるに際して、プロセッサ2が初期設定プログラム3を実行し（処理工程１）、初期設定プログラム3が初期設定値表示回路4に設定されている初期値を参照して取り込み（処理工程２）、初期設定プログラム3により取り込んだ設定値で初期値設定対象回路5が初期化される（処理工程３）。初期値設定対象回路5（例えばLSI）のレビジョン変更などによりその特性が変更された場合、初期設定値表示回路4に設定された初期設定値を外部から変更することで、初期設定プログラム3（すなわちファームウェア）を変更せずに初期化処理が変更できるとされている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００‐５６８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したような従来技術は、初期設定処理の対象となる回路（例えばLSI）の初期値を外部から設定変更可能なメモリに保存することにより、ファームウェア自体を変更せずに初期設定処理が変更できる利点を有するが、該メモリに書き込まれている設定値に誤りが生じた場合（例えば、該メモリで不測の異常が発生した場合）、誤った設定値で回路の初期化が行われ、その結果、制御装置全体が予期せぬ動作をすることが危惧される。
【０００８】
従って、本発明の目的は、制御装置において初期化処理する回路の初期設定値に変更が必要になった場合にファームウェア自体を変更せずに初期化処理を変更可能とし、また、保存されている初期設定値に不測の誤りが生じた場合でも誤った設定値で該回路を初期化処理してしまうことを防ぐことができる制御装置の初期化方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明は、上記目的を達成するため、制御装置の初期化方法であって、
前記制御装置は、演算処理装置と、前記演算処理装置に接続される初期化対象回路と、
前記演算処理装置に接続され前記初期化対象回路を初期化するための初期設定プログラムが記憶された第１の記憶部と、
前記演算処理装置に接続され前記初期化対象回路の初期設定値が記憶されかつ前記制御装置の外部から前記初期設定値を随時変更することができる第２の記憶部とを具備し、
前記第１の記憶部は前記初期化対象回路の別の初期設定値を有し、
前記第２の記憶部に記憶される前記初期設定値は誤り検出符号が付与されており、
前記制御装置の初期化において、
前記演算処理装置は、前記初期設定プログラムを実行するにあたり前記第２の記憶部から前記誤り検出符号を読み出して前記初期設定値の誤りの有無を検出し、
誤りが検出されない場合に前記初期設定値を用いて前記初期化対象回路の初期化を行い、
誤りが検出された場合に前記別の初期設定値を用いて前記初期化対象回路の初期化を行うことを特徴とする制御装置の初期化方法を提供する。
【００１０】
また、本発明は上記目的を達成するため、上記の本発明に係る制御装置の初期化方法において、以下のような改良や変更を加えることができる。
（１）前記別の初期設定値は、前記第１の記憶部の中で前記初期設定プログラムと別の領域に格納されている。
（２）前記別の初期設定値は、前記第１の記憶部の中で前記初期設定プログラムに内蔵されている。
（３）前記誤り検出符号が、CRC（Cyclic Redundancy Check、巡回冗長検査）、チェックサム、またはMD5（Message Digest Algorithm 5）である。
（４）前記第２の記憶部が、PROM（Programmable ROM）またはフラッシュメモリである。
【発明の効果】
【００１１】
本発明によれば、制御装置において初期化処理する回路の初期設定値に変更が必要になった場合にファームウェア自体を変更せずに初期化処理を変更可能とし、また、保存されている初期設定値に不測の誤りが生じた場合でも誤った設定値で該回路を初期化処理してしまうことを防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】従来技術の制御装置における回路例のブロック構成図である。
【図２】本発明の第１の実施形態に係る制御装置における回路例のブロック構成図である。
【図３】本発明の第１の実施形態に係る制御装置の初期化方法の１例を示したフローチャートである。
【図４】本発明の第２の実施形態に係る制御装置における回路例のブロック構成図である。
【図５】本発明に係る実施例となる制御装置における回路（スイッチングハブにおけるスイッチングLSIとバッファメモリ間のバスインターフェース回路）のブロック構成図である。
【図６】第２の記憶部としてのPROMにおける初期設定値の保存状態を示す模式図である。
【発明を実施するための形態】
【００１３】
以下、図を参照しながら本発明に係る実施の形態を説明する。ただし、本発明はここで取り上げた実施形態に限定されることはなく、要旨を変更しない範囲で組み合わせや改良が適宜可能である。また、同義のものには同じ符号を付すことにより重複する説明を省略する。
【００１４】
［本発明の第１の実施形態］
図２は、本発明の第１の実施形態に係る制御装置における回路例のブロック構成図である。図２に示すように、本発明の第１の実施形態に係る制御装置11は、演算処理装置12（例えばCPU）と、演算処理装置に接続される初期化対象回路13（例えばLSI）と、演算処理装置12に接続され初期化対象回路13を初期化するための初期設定プログラム（ファームウェア）15が記憶された第１の記憶部14（例えばROM）と、演算処理装置12に接続され初期化対象回路13の初期設定値17が記憶されかつ制御装置11の外部から初期設定値17を随時変更することができる第２の記憶部16（例えば不揮発性メモリ）とを具備している。
【００１５】
本発明の第１の実施形態に係る制御装置11は、ブロック構成図としては図１に示したそれと同様であるが、第２の記憶部16に格納された初期設定値17に加えて別の初期設定値（固定的な初期設定値）19がファームウェア15と共に第１の記憶部14に格納されており、かつ第２の記憶部16に格納された初期設定値17が誤り検出符号18を付与されている点において従来の制御装置と異なる。なお、本発明は、第１の記憶部14に格納されている別の初期設定値19と第２の記憶部16に格納されている初期設定値17とが同一となることを妨げるものではない。誤り検出符号18としては、例えば、CRC、チェックサム、MD5等を好適に用いることができる。また、第２の記憶部16としては、例えば、PROMやフラッシュメモリを好適に用いることができ、必要な初期設定値17と誤り検出符号18が格納できればそのメモリ容量を問わない。
【００１６】
次に、本発明に係る制御装置の初期化方法（例えば、制御装置11の起動時）について誤り検出符号18としてCRCを用いた場合を例にして説明する。図３は、本発明の第１の実施形態に係る制御装置の初期化方法の１例を示したフローチャートである。図３のフローチャートに沿って説明する。ステップ(1)：第１の記憶部14から初期設定プログラム（ファームウェア）15を読み込む。ステップ(2)：第２の記憶部16からCRC対象サイズを確認する。ステップ(3)：第２の記憶部16から正しいCRC値を読み込む。ステップ(4)：第２の記憶部16から初期設定値17を読み込む。ステップ(5)：読み込んだ初期設定値17からCRC値を算出する。ステップ(6)：ステップ(3)で読み込んだCRC値とステップ(5)で算出したCRC値とが一致するかどうか判定する。一致した場合、ステップ(7)：ステップ(4)で読み込んだ初期設定値17を用いて初期化対象回路13を初期化する。一致しない場合、ステップ(8)：第１の記憶部14から別の初期設定値19を読み込んで該別の初期設定値19を用いて初期化対象回路13を初期化する。ステップ(9)：ステップ(3)で読み込んだCRC値とステップ(5)で算出したCRC値とが不一致であり第２の記憶部16に格納されている初期設定値17に誤りがあることをエラーとして通知する。ステップ(10)：以上(2)〜(9)の各ステップを初期化対象回路13の個数分繰り返す。
【００１７】
［本発明の第２の実施形態］
図４は、本発明の第２の実施形態に係る制御装置における回路例のブロック構成図である。図４に示すように、本発明の第２の実施形態に係る制御装置21は、第１の実施形態に係る制御装置11と同様のブロック構成を有するが、第１の記憶部14（例えばROM）に記憶されている初期設定プログラム（ファームウェア）25が別の初期設定値（固定的な初期設定値）19を内蔵している点において第１の実施形態に係る制御装置11と異なる。この場合、別の初期設定値19は初期設定プログラム25と一緒に読み込まれるが、初期設定プログラム25は、初期化対象回路13を初期化するにあたり第２の記憶部16に格納されている初期設定値17を優先するようにプログラムされている。なお、第１の実施形態に係る制御装置11においては、別の初期設定値19は第１の記憶部14の中で初期設定プログラム15と別の領域に格納されている。
【００１８】
次に、図３に示したフローチャートを参照しながら、第２の実施形態に係る制御装置21の初期化方法の１例を説明する。図３におけるステップ(1)と(8)がそれぞれ次のように変わるが、他のステップ（(2)〜(7)および(9)〜(10)）は図３のそれと同じである。ステップ(1’)：第１の記憶部14から初期設定プログラム（ファームウェア）25を読み込む。このとき別の初期設定値19も同時に読み込まれる。ステップ(6)における判定においてステップ(3)で読み込んだCRC値とステップ(5)で算出したCRC値とが一致しない場合、ステップ(8’)：前記ステップ(1’)で読み込んだ別の初期設定値19を用いて初期化対象回路13を初期化する。
【実施例】
【００１９】
以下、より具体的な実施例について図を参照しながら説明する。ただし、本発明はここで取り上げた実施例に限定されるものではない。
【００２０】
図５は、本発明に係る実施例となる制御装置における回路（スイッチングハブにおけるスイッチングLSIとバッファメモリ間のバスインターフェース回路）のブロック構成図である。図５に示すように、スイッチングハブ31は、演算処理装置としてのCPU 32と、CPU 32に接続される初期化対象回路としてのスイッチングLSI 33と、CPU 32に接続されスイッチングLSI 33を初期化するためのファームウェアが記憶された第１の記憶部としてのフラッシュメモリ36と、CPU 32に接続されスイッチングLSI 33の設定値が記憶された第２の記憶部としてのPROM 37とを具備しており、スイッチングLSI 33にはバッファメモリ34と通信ポート35とが接続されている。なお、フラッシュメモリ36には、ファームウェアに加えてスイッチングLSI 33用の別の初期設定値として固定的な設定値が保持されている。
【００２１】
スイッチングハブ31の通信時、通信ポート35からの入力パケットは、スイッチングLSI 33で受信されてバッファメモリ34に転送され、バッファメモリ34で一時的に保管された後、再度スイッチングLSI 33から通信ポート35を経て宛先ポートへ出力される。そのため、スイッチングLSI 33とバッファメモリ34の間は高速なインターフェースとなっている。また、CPU 32はPCIバスでスイッチングLSI 33と接続されており、フラッシュメモリ36とPROM 37とはCPUローカルバスによりCPU 32と接続されている。スイッチングハブ31は、スイッチングLSI 33を極めて頻繁に最適な設定値で初期化する必要がある装置である。
【００２２】
図６は、第２の記憶部としてのPROMにおける初期設定値の保存状態を示す模式図である。PROM 37としては、例えば、128バイトのものを使用する。CRC対象サイズ領域38は、CRC計算範囲の大きさ（例えば、2バイト）を示す。CRC計算値領域39は、CRCの正しい計算値を格納する領域（例えば、4バイト）である。スイッチングLSI設定値領域40は、スイッチングLSI 33の初期設定値を格納する領域である。スイッチングLSI設定値領域40がCRCの対象であり、CRC対象サイズ領域38はこの領域の大きさを保持するものである。
【００２３】
スイッチングハブ31の初期化は、例えば図３に示した手順に従って行われる。このため、PROM 37に保存されている初期設定値に不測の誤りが生じた場合であっても、誤った設定値でスイッチングLSI 33を初期化処理してしまうことを防ぐことができる。なお、この場合、システムログにエラーが生じたことを記録することが望ましい。また、第２の記憶部としてPROM 37を用いていることから、スイッチングLSI 33の初期設定値に変更が必要になった場合においても、ファームウェア自体を変更せずに初期化処理を変更することができる。
【００２４】
以上説明したように、本発明は、制御装置の初期化方法において優れた信頼性と簡便性とを兼ね備えた方法である。また、製品個別データ（例えば、シリアルナンバー等）を格納しているメモリに空き領域があれば実施可能であり、種々の制御装置において有効な構成である。
【符号の説明】
【００２５】
1…電子回路基板、2…プロセッサ（CPU）、3…初期設定プログラム、
4…初期設定値表示回路、5…初期値設定対象回路、
11，21…制御装置、12…演算処理装置、13…初期化対象回路、14…第１の記憶部、
15，25…初期設定プログラム（ファームウェア）、16…第２の記憶部、
17…初期設定値、18…誤り検出符号、19…別の初期設定値、
31…スイッチングハブ、32…CPU、33…スイッチングLSI、34…バッファメモリ、
35…通信ポート、36…フラッシュメモリ、37…PROM、38…CRC対象サイズ領域、
39…CRC計算値領域、40…スイッチングLSI設定値領域。
【図１】
2011054083.tif 000003
【図２】
2011054083.tif 000004
【図３】
2011054083.tif 000005
【図４】
2011054083.tif 000006
【図５】
2011054083.tif 000007
【図６】
2011054083.tif 000008