(57)【要約】【課題】  記憶媒体の使用領域のみを診断することで記憶媒体の診断に要する診断時間を短縮し、効率的な診断処理を行えるようにした記憶装置の診断装置および診断方法を提供する。【解決手段】  まず、プログラムＡヘッダ２１０の情報が読み込まれて制御プログラムの個数２１４からＲＯＭ上には３つのプログラムが存在すると認識し、それぞれの有無情報からＲＯＭに３つの制御プログラムが存在していることを確認する。それらの各制御プログラムの先頭アドレス情報から記憶された位置を認識し、先頭アドレスと各制御プログラムのヘッダに付与されたデータサイズから制御プログラム全体を認識する。制御プログラムに対して所定の演算処理を適用することで演算処理結果の値を算出してサム値２２３と合致するか判断し、合致した場合にその制御プログラムが正常と判断し、合致しない場合にはデータ破損が行われていると判断する。【選択図】図２
2007148570.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に記憶されたデータが正常であるか否かを診断する記憶装置の診断装置において、
前記記憶装置に記憶されたデータを読み出す読出手段と、
前記読出手段により前記記憶装置から読み出したデータのサム値を算出する演算処理を行う演算手段と、
前記演算手段により算出したサム値が前記読出手段で読み出したデータに対して設定された詳細情報に含まれる前記サム値の期待値と一致するか判断する判断手段と
を具備し、
前記詳細情報は、前記判断手段による判断の要否を示す判断要否情報を含み、
前記判断手段は、前記判断要否情報によって判断要が示された前記データに対してのみ前記期待値と一致するか判断し、
前記判断手段による判断の結果、前記サム値が前記期待値と一致した場合に前記記憶装置に記憶されたデータが正常であると診断する
ことを特徴とする記憶装置の診断装置。
【請求項２】
前記判断要否情報は、
前記記憶装置に前記データが記憶されているか否かを示す有無情報であることを特徴とする請求項１記載の記憶装置の診断装置。
【請求項３】
前記判断要否情報は、
前記記憶装置に記憶された前記データが有効か否かを示す有効無効情報であることを特徴とする請求項１記載の記憶装置の診断装置。
【請求項４】
前記詳細情報は、
前記記憶装置に記憶する
ことを特徴とする請求項１記載の記憶装置の診断装置。
【請求項５】
前記詳細情報は、
前記記憶装置と別に設けられた書き換え可能な記憶装置に記憶する
ことを特徴とする請求項１記載の記憶装置の診断装置。
【請求項６】
記憶装置に記憶されたデータが正常であるか否かを診断する記憶装置の診断方法において、
前記記憶装置に記憶されたデータを読出手段により読み出し、
前記読出手段により前記記憶装置から読み出したデータのサム値を算出する演算処理を演算手段により行い、
前記演算手段により算出したサム値が前記読出手段で読み出したデータに対して設定された詳細情報に含まれる前記サム値の期待値と一致するか該詳細情報に含まれる判断の要否を示す判断要否情報が判断要と示されている前記データに対して判断手段で判断し、
前記判断手段による判断の結果、前記サム値が前記期待値と一致した場合に前記記憶装置に記憶されたデータが正常であると診断する
ことを特徴とする記憶装置の診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体に記憶されたデータの正当性を診断する記憶装置の診断装置および診断方法に関し、特に、記憶媒体の全記憶領域に対して使用された記憶領域のみを診断することで高速に記憶媒体の診断を行えるようにした記憶装置の診断装置および診断方法に関する。
【背景技術】
【０００２】
近年の技術向上によりメモリなどの記憶装置の記憶容量が飛躍的に大容量化するとともに低コスト化する傾向にある。この記憶装置の大容量化に伴って、必要となるデータをその都度新たに記憶するのではなく、あらかじめその必要となるデータを記憶装置に記憶しておき、そのデータへのアクセス制御を行うように構成している。
【０００３】
これによって、データの入出力に要する時間や処理を削減することができ、処理の高速化を実現できるばかりでなく、そのデータを簡単に使用者に対して提供できるようになる。
【０００４】
記憶装置に記憶したデータを使用しない場合または使用制限を行う場合には、そのデータへのアクセスを拒否する構成とし、それに対して、これらのデータを使用する場合には、そのデータへのアクセスを許可する構成とすることでデータへのアクセス制御を行っている。
【０００５】
このようなＲＯＭの利用方法では、そのＲＯＭに記憶された全てのデータが確実に正常なデータであることが重要となり、後々利用する際に一部でもデータの破損が発見された場合には、その記憶したデータを正常に使用する（実行する）ことができず、ＲＯＭ全体の交換を余儀なくされることがあり、製品の保守に要する費用、時間が膨大になり、製品の品質とともにユーザの不満を招く結果となってしまうという問題がある。
【０００６】
そのため、製品の出荷段階でデータの検査診断を行い、データに異常がないか確認した後に出荷するというＲＯＭ診断が行われている。このＲＯＭ診断では、ＲＯＭに記憶されたデータを順次読み出し、読み出したデータに対して予め指定された所定の演算処理を実行することで、演算結果を得ることができ、この演算結果があらかじめ設定した期待値と一致するか比較検討し、一致した場合には記憶されたデータが正常であると判断する。また、不一致の場合には、データに異常（破損）が発生していると判断して製品出荷を差し止める。
【０００７】
このＲＯＭ診断では、近年の記憶領域の大容量化に伴ってＲＯＭ１つ当たりの診断時間が長くなり、それに伴って製品全体の診断時間を多く有することになり、出荷効率が悪化するという問題がある。
【０００８】
内部にＲＯＭおよびＲＯＭに書き込まれた制御プログラムに従って動作する機能回路をもつワンチップ半導体装置に対し、機能回路とＲＯＭの診断を並行して行うことで機能診断全体に要する時間を短くし、検査精度を保つようにした従来技術として、特許文献１に開示されたものがある。
【特許文献１】特開平８−２４１２５３
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に示された従来技術においては、制御プログラムを書き込んだＲＯＭとこのＲＯＭに書き込まれた制御プログラムに従って動作する機能回路との検査をそれぞれ並行して行うことで検査にかかる総診断時間を短くするようにしているが、ＲＯＭ全体に対して検査を行っているため、大容量になればなるほどその検査に要する時間が大きくなるという問題がある。
【００１０】
そこで、本発明は、記憶媒体の使用領域のみを診断することで記憶媒体の診断に要する診断時間を短縮し、効率的な診断処理を行えるようにした記憶装置の診断装置および診断方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、請求項１の発明は、記憶装置に記憶されたデータが正常であるか否かを診断する記憶装置の診断装置において、前記記憶装置に記憶されたデータを読み出す読出手段と、前記読出手段により前記記憶装置から読み出したデータのサム値を算出する演算処理を行う演算手段と、前記演算手段により算出したサム値が前記読出手段で読み出したデータに対して設定された詳細情報に含まれる前記サム値の期待値と一致するか判断する判断手段とを具備し、前記詳細情報は、前記判断手段による判断の要否を示す判断要否情報を含み、前記判断手段は、前記判断要否情報によって判断要が示された前記データに対してのみ前記期待値と一致するか判断し、前記判断手段による判断の結果、前記サム値が前記期待値と一致した場合に前記記憶装置に記憶されたデータが正常であると診断することを特徴とする。
【００１２】
また、請求項２の発明は、請求項１の発明において、前記判断要否情報は、前記記憶装置に前記データが記憶されているか否かを示す有無情報であることを特徴とする。
【００１３】
また、請求項３の発明は、請求項１の発明において、前記判断要否情報は、前記記憶装置に記憶された前記データが有効か否かを示す有効無効情報であることを特徴とする。
【００１４】
また、請求項４の発明は、請求項１の発明において、前記詳細情報は、前記記憶装置に記憶することを特徴とする。
【００１５】
また、請求項５の発明は、請求項１の発明において、前記詳細情報は、前記記憶装置と別に設けられた書き換え可能な記憶装置に記憶することを特徴とする。
【００１６】
また、請求項６の発明は、記憶装置に記憶されたデータが正常であるか否かを診断する記憶装置の診断方法において、前記記憶装置に記憶されたデータを読出手段により読み出し、前記読出手段により前記記憶装置から読み出したデータのサム値を算出する演算処理を演算手段により行い、前記演算手段により算出したサム値が前記読出手段で読み出したデータに対して設定された詳細情報に含まれる前記サム値の期待値と一致するか該詳細情報に含まれる判断の要否を示す判断要否情報が判断要と示されている前記データに対して判断手段で判断し、前記判断手段による判断の結果、前記サム値が前記期待値と一致した場合に前記記憶装置に記憶されたデータが正常であると診断することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ＲＯＭに記憶されたデータの使用領域にかかる情報を電気的な書き換えが可能な不揮発性メモリに記憶しておき、ＲＯＭに記憶されたデータの正当性を判断するＲＯＭ診断を行う際に、当該不揮発性メモリに記憶された情報をもとに特定の記憶領域のみを診断するように構成したので、大容量の記憶領域を持つＲＯＭに対する診断であっても診断時間を短くすることが可能になるという効果を奏する。
【００１８】
また、大容量のＲＯＭを用いることができるため、必要となるデータ全てを記憶してマスクＲＯＭ化して提供することができるようになり、提供するＲＯＭの共通化が実現でき、安価なＲＯＭを提供することが可能となるという効果をも奏する。
【００１９】
そして、ＲＯＭに記憶されたデータの使用領域にかかる情報を記憶する不揮発性メモリには、自身の記憶領域に対するチェックサムを記憶するように構成したので、ＲＯＭの使用領域にかかる情報に対しても誤り検出を行うことができ、誤った情報に基づくＲＯＭ診断を行うことを防止し、高い信頼性を実現したＲＯＭ診断を行うことが可能となるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係わる記憶装置の診断装置および診断方法の一実施例を添付図面を参照して詳細に説明する。
【００２１】
なお、以下に示す実施例では、診断対象となる記憶媒体であるＲＯＭに格納されたデータとして所定の処理を実行するプログラムを示しているが、これに限定されることなく、各種設定情報やイメージ画像データであってもよい。
【実施例１】
【００２２】
図１は、本発明に係わる記憶装置の診断装置および診断方法を適用して構成した装置構成図である。
【００２３】
図１において、コントロール基盤１００上にＣＰＵ（Central Processor Unit：中央演算装置）１１０、ＲＯＭ（Read Only Memory）１２０、不揮発性メモリ１３０、ＲＡＭ（Random Access Memory）１４０、通信インターフェース１５０が搭載されており、ＣＰＵ１１０による書き換えを許可しない記憶媒体であるＲＯＭの動作診断、つまり、ＲＯＭ診断を行う。このときのＲＯＭ診断では、ＲＯＭの所定の記憶領域に記憶されたプログラムの正当性を診断することで動作診断を行う。診断対象となるプログラムは、各プログラムに設けられたプログラムヘッダの内容に基づいて診断対象となるプログラムであるか判断され、診断対象と指定されたプログラムのみに対してＲＯＭ診断が行われる。
【００２４】
ＣＰＵ１１０は、ＲＯＭ診断を行うＲＯＭ診断処理プログラムを実行することでＲＯＭ１２０に記憶されたプログラムの診断を行う。また、ＣＰＵ１１０は、サム値算出部１１１、情報書換部１１２を具備し、サム値算出部１１１では、ＲＯＭ１２０に記憶された各プログラムに所定の演算処理を行うことでサム値を算出する。また、情報書換部１１２では、ＲＯＭに記憶されたプログラムごとのプログラムヘッダの内容を書き換える。
【００２５】
ＲＯＭ１２０は、コントロール基盤１００を内蔵する装置、例えば、プリンタや複合機などで実現する機能のプログラムが格納され、ＣＰＵ１１０で実行されるＲＯＭ診断処理プログラムによって診断対象となるプログラムを含む。また、そのＲＯＭ診断処理プログラム自身もＲＯＭ１２０に記憶することが可能である。
【００２６】
さらに、記憶された各プログラムには、プログラムヘッダが付与でき、プログラムとそのプログラムに対するプログラムヘッダをセットとしてＲＯＭ１２０に記憶する。このときのＲＯＭ１２０の構成を図２に示す。もちろん、プログラムをＲＯＭ１２０に記憶し、プログラムヘッダを外部の記憶デバイスに記憶しておくこともできる。このときのＲＯＭ１２０と外部の記憶デバイスの構成を図４に示す。
【００２７】
不揮発性メモリ１３０は、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）などによって構成され、ＲＯＭ１２０や外部の記憶デバイスの代わりにプログラムヘッダを記憶することができる。
【００２８】
ＲＡＭ１４０は、ＣＰＵ１１０によるＲＯＭ診断処理プログラムの実行の際に作業領域となり、外部の記憶デバイスから受信したプログラムヘッダを一時的に記憶する。
【００２９】
通信インターフェース１５０は、プログラムヘッダが外部の記憶デバイスに記憶されている場合に外部の記憶デバイスとの通信を行うインターフェースであり、プログラムヘッダの内容をＲＡＭ１４０に一時的に記憶する。これにより、ＣＰＵ１１０がＲＯＭ診断処理プログラムの実行時にそのプログラムヘッダの内容を参照できる。
【００３０】
このような構成により、プログラムヘッダの内容に基づいてＲＯＭ診断を行うことができる。
【００３１】
図２は、本願発明におけるＲＯＭに記憶されたデータの構成を示すデータ構成図である。
【００３２】
図２に示すＲＯＭには、ＲＯＭ診断を行うＲＯＭ診断処理プログラムを含むプログラムＡが記憶されており、また、このＲＯＭ診断処理プログラムが参照する情報をそのＲＯＭ診断処理プログラムを含むプログラムＡのヘッダに記憶されている。すなわち、このプログラムＡのヘッダ情報は、必ずＲＯＭ上のいずれかの位置に記憶されており、ＲＯＭ診断処理プログラムを含むプログラムＡが記憶されていない場合であってもプログラムＡのヘッダは記憶されていることを意味している。
【００３３】
そして、図２に示すＲＯＭには、３つの制御プログラム（プログラムＡ、プログラムＢ、プログラムＣ）が記憶された状態を示しており、各制御プログラムにはプログラムヘッダが付与されている。プログラムＡにはプログラムＡヘッダ２１０が付与され、プログラムＢにはプログラムＢヘッダ２２０が付与され、プログラムＣにはプログラムＣヘッダ２３０が付与されている。
【００３４】
ヘッダが付与された各制御プログラムは、ヘッダとプログラムの組み合わせをセットにしてＲＯＭ上のいずれかの位置に配置される。すなわち、プログラムの配置順序、連続配置であるか否かを問わずＲＯＭのいずれの位置にも配置することができる。
【００３５】
このとき、一例として、プログラムＡは図１に示すような基盤を搭載するプリンタの電源投入が行われる際に起動処理するブートプログラムであり、プログラムＢはそのプリンタによって行われる印刷制御や状態管理を行う基本制御プログラムであり、プログラムＣはプリンタで印刷データの編集を行う編集プログラムであって、プログラムＡにＲＯＭ診断処理プログラムを含む本図のような構成の場合、プログラムＡを実行することでＲＯＭ全体のＲＯＭ診断処理が行われる。
【００３６】
ここに示すような構成の場合、各ヘッダには次のような情報が含まれる。
【００３７】
まず、ＲＯＭ診断処理プログラムを含むプログラムＡのヘッダ（プログラムＡヘッダ２１０）は、ＲＯＭ診断の際のメインヘッダとして機能し、プログラムＡの識別子、プログラムＡのデータサイズ、プログラムＡのサム値、ＲＯＭ全体に格納された制御プログラムの個数、各制御プログラムごとの有無情報と格納された位置の先頭を示す先頭アドレス（「開始アドレス」ともいう）の情報から構成される。
【００３８】
次に、プログラムＢのヘッダ（プログラムＢヘッダ２２０）は、プログラムＢの識別子、プログラムＢのデータサイズ、プログラムＢのサム値から構成される。
【００３９】
次に、プログラムＣのヘッダ（プログラムＣヘッダ２３０）は、プログラムＣの識別子、プログラムＣのデータサイズ、プログラムＣのサム値から構成される。
【００４０】
このときの各制御プログラムの識別子は、プログラムを一意に識別する情報であり、サム値は、各制御プログラムに対して所定の演算処理を実行することにより得られる演算処理結果の値である。また、プログラムＡのヘッダに設けられた制御プログラム個数情報は、ＲＯＭに記憶されうる制御プログラムの数量を示しており、さらに各制御プログラムの有無情報は、その制御プログラムがＲＯＭ上に記憶されているか否かを示す情報であり、ＲＯＭにその制御プログラムが記憶されている場合には「有」が示され、ＲＯＭに記憶可能な領域が確保された状態で記憶されていない場合には「無」が示されている。
【００４１】
また、この有無情報は、ＣＰＵにてサム値が一致するか否かの判断の要否を指定する判断要否情報である。
【００４２】
すなわち、ＲＯＭに記憶され得る制御プログラムに対して、実際にＲＯＭに格納されているかを有無情報で示している。
【００４３】
以上に示すように、プログラムＡヘッダ２１０に示された各制御プログラムをＲＯＭに格納することが可能であり、プログラムＡヘッダ２１０の有無情報で「無」が設定された制御プログラムにおいては、ＲＯＭに記憶されていないがその制御プログラムを格納する領域が確保されていることを示している。この場合、記憶されていない制御プログラムのヘッダはＲＯＭ上に記憶してもよいし、記憶しなくてもよい。記憶した場合、その制御プログラムの識別子、サム値は共に「ＮＵＬＬ」が格納され、データサイズは「０（ゼロ）」を格納する。
【００４４】
図２に示す例では、プログラムＡヘッダ２１０に示された各制御プログラムの有無情報が全て「有」であってそれら全ての制御情報がＲＯＭに記憶されている状態を示している。
【００４５】
このような構成のＲＯＭに対してＲＯＭ診断を行う場合には、ＲＯＭ上のいずれかの位置に配置されたＲＯＭ診断処理プログラムを含んだプログラムＡを検索した後に、プログラムＡヘッダ２１０の情報に基づいてＲＯＭ診断処理プログラムを実行する。
【００４６】
ＲＯＭ診断処理プログラムが実行されると、プログラムＡヘッダ２１０の情報が読み込まれ、そのプログラムＡヘッダ２１０に含まれる制御プログラムの個数２１４からＲＯＭ上には３つのプログラムが存在し得ることを認識する。さらに、それぞれの有無情報（２１５−Ａ、２１５−Ｂ、２１５−Ｃ）からＲＯＭに３つの制御プログラムが存在していることを確認し、それらの各制御プログラムの先頭アドレス情報（２１６−Ａ、２１６−Ｂ、２１６−Ｃ）から記憶された位置を認識する。
【００４７】
そして、その指定された先頭アドレスと各制御プログラムのヘッダに付与されたデータサイズから制御プログラム全体を認識し、制御プログラムに対して所定の演算処理を適用することで演算処理結果の値を算出する。その値が各制御プログラムのヘッダに記憶したサム値２２３と合致するか判断し、合致した場合にはその制御プログラムが正常であると判断する。また、合致しない場合にはデータ破損が行われていると判断してエラー処理をしてＲＯＭ診断を終了する。これは、異常ＲＯＭであることを示し、このＲＯＭが搭載した基盤の出荷を停止することを示している。
【００４８】
このときのＲＯＭ診断の詳細な処理の流れを図３に示す。
【００４９】
図３は、図２に示すＲＯＭのデータ構成における処理の流れを示すフローチャートである。
【００５０】
図３に示すフローチャートは、プログラムＡにＲＯＭ診断処理プログラムが含まれている場合の処理の流れを示している。
【００５１】
まず、ＲＯＭ診断処理プログラムの起動が指示され、そのＲＯＭ診断処理プログラムの実行時に読み出す情報が記憶されたプログラムＡのヘッダ（プログラムＡヘッダ）に含まれるさまざまな情報を取得する（３０１）。このとき、取得した各種の情報は不揮発性メモリの作業領域に一時的に格納され、その情報に含まれる制御プログラムの個数情報からＲＯＭに記憶され得る制御プログラム数を認識し、その数分の有無情報を順次、参照する。
【００５２】
ＲＯＭ診断処理プログラムが実行されると、まず、はじめの制御プログラムに対する有無情報が「有」であるか判断し（３０２）、この制御プログラムに対する有無情報が「有」である場合（３０２でＹＥＳ）には、ヘッダ内の識別子を参照して不正の有無をチェックする（３０５）。それに対して、制御プログラムに対する有無情報が「有」でない場合（３０２でＮＯ）には、次に、その制御プログラムがＲＯＭ診断処理プログラムを含むプログラムＡであるか判断する（３０３）。
【００５３】
このときの一番初めの制御プログラムはＲＯＭ診断を行うＲＯＭ診断処理プログラムを含む制御プログラム（プログラムＡ）であり、この制御プログラムに対する有無情報が「有」でない場合にはＲＯＭ診断そのものが行えないため、そのＲＯＭ診断の診断対象となる制御プログラムがプログラムＡであるか否かを判断する必要がある。
【００５４】
このプログラムＡであるか否かの判断（３０３）でプログラムＡでないと判断された場合（３０３でＮＯ）には、次の制御プログラムに処理対象を移行するために全てのプログラムに対して診断が終了したかの判断を行う（３１１）。また、有無情報が「有」でないとした対象制御プログラムがプログラムＡであると判断されると（３０３でＹＥＳ）、ＲＯＭ診断を行えない旨を表示するエラー処理を行って（３０４）処理を終了する。
【００５５】
そして、制御プログラムの有無情報が「有」であって不正の有無をチェック（３０５）することで不正が検出しなかったか判断（３０６）し、不正を検出した場合（３０６でＮＯ）には、不正を検出した旨をその制御プログラムの識別子とともに表示するエラー処理を行って（３０４）処理を終了する。
【００５６】
また、不正を検出しない場合（３０６でＹＥＳ）には、その制御プログラムに対して所定の演算処理を行うことでサム値を算出し（３０７）、その算出したサム値とヘッダ内に格納されたサム値とを比較する（３０８）。比較した結果、両者の値が合致したか判断し（３０９）、合致しない場合（３０９でＮＯ）には、エラーが発生した旨を表示するエラー処理を行って（３０４）ＲＯＭ診断を終了する。
【００５７】
また、合致した場合（３０９でＹＥＳ）には、診断済みプログラムの個数を更新する（３１０）。はじめの制御プログラム（プログラムＡ）でサム値が合致した場合にはその診断済みプログラムの個数を「１」と更新し、２つ目以降の制御プログラム（プログラムＢまたはプログラムＣ）でサム値が合致した場合には診断済みプログラムの個数に「１」を加えて更新する。
【００５８】
診断済みプログラムの個数が更新されると、これらの処理（３０２〜３１０）がＲＯＭに記憶する全ての制御プログラムに対して行われたか判断する（３１１）。このときの判断は、プログラムＡヘッダの制御プログラム個数だけ処理が繰り返し行われたか判断する。
【００５９】
全ての制御プログラムに対してＲＯＭ診断が行われると（３１１でＹＥＳ）、ＲＯＭ診断を終了する。まだ診断していない制御プログラムが残っている場合（３１１でＮＯ）には、有無情報の判断処理（３０２）から処理を繰り返し行う。
【００６０】
図４は、図２に示した本願発明におけるＲＯＭに記憶されたデータの構成を示すデータ構成図の変形例を示した図である。
【００６１】
図４において、図４（ａ）は、コントロール基板上のＲＯＭのデータ構成を示す図を示し、図４（ｂ）は、外部ホストコンピュータ上に設けられた記憶デバイスに記憶されたデータの構成を示す図である。
【００６２】
図２では、ＲＯＭ診断処理プログラムがプログラムＡに含まれる構成であったが、図４では、ＲＯＭ診断処理プログラムはＲＯＭ以外の任意の記憶デバイスに記憶された場合の構成を示している。
【００６３】
図４（ａ）は、診断対象となるＲＯＭであって、プログラムＡ、プログラムＢ、プログラムＣの３つの制御プログラムが記憶されており、各制御プログラムには、その制御プログラムを識別することができるプログラム識別子（４０１、４０２、４０３）が付与されている。このプログラム識別子（４０１、４０２、４０３）は、ＲＯＭに記憶された制御プログラムのうち特定の制御プログラムであることを識別できるようにした情報である。
【００６４】
図４（ｂ）は、図４（ａ）のＲＯＭを搭載する基盤が通信回線によって接続された外部のホストコンピュータ、例えば、検査ＰＣに搭載する記憶デバイスの記憶領域に、プログラム管理ヘッダ４１０、プログラムＡヘッダ４２０、プログラムＢヘッダ４３０、プログラムＣヘッダ４４０が記憶された構成を示している。
【００６５】
プログラム管理ヘッダ４１０は、制御プログラム数情報４１１、各制御プログラムの有無情報（４１２−Ａ、４１２−Ｂ、４１２−Ｃ（以下、総称して「先頭アドレス情報４１３」という））、各制御プログラムが記憶されたＲＯＭの先頭アドレス情報（４１３−Ａ、４１３−Ｂ、４１３−Ｃ（以下、総称して「有無情報４１２」という））から構成され、ＲＯＭに記憶された制御プログラム全体にアクセスするための管理情報である。
【００６６】
制御プログラム数情報４１１は、ＲＯＭに記憶され得る制御プログラムの個数を示した情報であり、例えば、制御プログラムの個数が「３」である場合にはＲＯＭに３つの制御プログラムを記憶され得ることを示している。これらの情報は、図２のプログラムＡヘッダ２１０に記憶された情報と同じである。
【００６７】
また、プログラムＡヘッダ４２０、プログラムＢヘッダ４３０、プログラムＣヘッダ４４０の各制御プログラムヘッダは、図２で示した各プログラムのヘッダとして付与されたプログラムヘッダであり、プログラム識別子（４２１、４３１、４４１）、データサイズ（４２２、４３２、４４２）、サム値（４４１、４４２、４４３）から構成される。
【００６８】
このような構成において、ＲＯＭ診断処理プログラムを実行することにより、外部ホストコンピュータの記憶デバイスに記憶されたプログラム管理ヘッダ４１０から制御プログラム数を参照し、ＲＯＭに記憶し得る制御プログラム数を確認する。その制御プログラム数の各制御プログラムに対して設定された有無情報４１２をそれぞれ参照し、「有」が設定された制御プログラムの先頭アドレスを先頭アドレス情報４１３から順次、読み出すとともに各制御プログラムに対する詳細情報（プログラムヘッダ）を検索する。
【００６９】
先頭アドレス情報から読み出した先頭アドレスをもとにＲＯＭに記憶された制御プログラムを特定し、また、検索した詳細情報に含まれる制御プログラムの識別子がＲＯＭ上で特定した制御プログラムの識別子と合致するか比較する。合致した場合には、検索していた所望の制御プログラムであると判断してＲＯＭ診断が開始される。
【００７０】
ＲＯＭ診断が開始されると、所定の演算処理を制御プログラムに対して行い、演算処理の結果の値がその制御プログラムの詳細情報（プログラムヘッダ）に記憶されたサム値と合致するか判断する。合致する場合にはその制御プログラムが正常であると判断でき、合致しない場合には異常が発生していると判断してＲＯＭ診断を中止する。
【００７１】
このＲＯＭ診断の詳細な処理の流れを図５に示す。
【００７２】
図５は、図４に示すＲＯＭのデータ構成における処理の流れを示すフローチャートである。
【００７３】
図５に示すフローチャートは、ＲＯＭ診断処理プログラムが診断対象となるＲＯＭ以外の記憶デバイスに記憶されている場合におけるＲＯＭ診断の処理の流れを示す。
【００７４】
まず、ＲＯＭ診断処理プログラムの起動が指示されると処理が開始され、外部ホストコンピュータの記憶デバイスからプログラム管理ヘッダの情報を取得する（５０１）。そして、取得したプログラム管理ヘッダに含まれる有無情報４１２と先頭アドレス情報４１３とから有無情報４１２が「有」である制御プログラムのプログラムヘッダを順次、取得する（５０２）。
【００７５】
ＲＯＭ診断処理プログラムが実行されると、まず、一番初めに有無情報４１２が「有」である制御プログラムの先頭アドレスをプログラム管理ヘッダから読み出し、次に、その先頭アドレスを元にＲＯＭにアクセスすることでその先頭アドレスから記憶された制御プログラムに付与されたプログラム識別子が取得したプログラムヘッダに含まれるプログラム識別子と同一であるか比較する（５０３）。
【００７６】
プログラム識別子が同一であるか比較した結果、不正検知されたか否かを判断し（５０４）、不正検知された場合（５０４でＮＯ）には、不正を検知した旨とともにその不正を検知した制御プログラムの識別子を表示するエラー処理（５０５）を行って処理を終了する。
【００７７】
それに対して、不正が検知されなかった場合（５０４でＹＥＳ）には、その制御プログラムに所定の演算処理を行い、演算処理結果の値を算出する（５０６）。算出した値がプログラムヘッダに含まれるサム値と一致するかを比較し（５０７）、両者が一致しなかった場合（５０７でＮＯ）には、制御プログラムに異常が発生している旨とともにその制御プログラムの識別子とを表示するエラー処理（５０５）を行って処理を終了する。
【００７８】
算出した値がサム値に一致する場合（５０８でＹＥＳ）には、診断した制御プログラムの個数を更新する（５０９）。そして、これらの処理（５０２〜５０９）がＲＯＭに記憶された全てのプログラムに対して行われたか判断する（５１０）。全てのプログラムに対してＲＯＭ診断が行われた場合（５１０でＹＥＳ）には、処理を終了し、全ての制御プログラムに対してＲＯＭ診断が終了していない場合（５１０でＮＯ）には、次の制御プログラムに処理対象を移してＲＯＭ診断を行う。
【００７９】
この図５に示すフローチャートでは、全ての制御プログラムを同じレベルでＲＯＭ診断している。これは、ＲＯＭ診断処理プログラムそのものがＲＯＭ診断対象となる制御プログラムに含まれていないためである。すなわち、図３に示すフローチャートでは、ＲＯＭ診断処理プログラムが診断対象となる制御プログラムであるプログラムＡに含まれているため、プログラムＡにおいては特別な処理が必要となっている。
【００８０】
以上のような処理によって、本願発明のＲＯＭ診断装置では、制御プログラムの有り（ＲＯＭに記憶されている）／無し（ＲＯＭに記憶されていない）でＲＯＭ診断を行う診断対象を特定し、「有」と示された制御プログラムに対してのみＲＯＭ診断を実行することができる。
【実施例２】
【００８１】
上記、実施例１では、プログラムヘッダに含まれる有無情報が示す「有」または「無」によってＲＯＭ診断を行う処理対象を特定していたが、実施例２においては、プログラムヘッダに含まれる有効無効情報が示す「有効」か「無効」かによってその処理対象を特定する。
【００８２】
この有効無効情報は、サム値が一致するか否かの判断の要否を指定する判断要否情報である。
【００８３】
また、実施例１同様、実施例２でもＲＯＭに記憶するデータの一例としてプログラムを示すが、プログラムに限定されることなく、各種設定情報やイメージ画像データであってもよい。
【００８４】
図６は、本願発明におけるコントロール基盤の構成を示す図である。
【００８５】
図６に示すコントロール基盤６００には、ＣＰＵ６１０、ＲＯＭ６２０、不揮発性メモリ６３０を具備して構成され、ＣＰＵ６１０からの指示により不揮発性メモリ６３０に記憶されたデータをもとにしてＲＯＭ６２０の診断を行う。
【００８６】
ＣＰＵ６１０は、サム値算出部６０１、情報書換部６０２を含んで構成されており、ＲＯＭ診断を行う際にＲＯＭ６２０または他の記憶デバイスのいずれかに記憶されたＲＯＭ診断処理プログラムを実行する。このＲＯＭ診断処理プログラムは、不揮発性メモリ６３０に記憶された有効無効情報の値に「有効」が示されているプログラムに対してのみ診断を行う。診断によって、エラーを検知した場合にはＲＯＭ診断処理を中止し、そのエラー内容を表示して処理を終了する。
【００８７】
サム値算出部６０１は、ＲＯＭ６２０に記憶された各プログラムに対して所定の演算処理を行うことによってサム値を算出する。算出したサム値は、不揮発性メモリ６３０にプログラムヘッダとして記憶される。
【００８８】
また、不揮発性メモリに記憶されたプログラムヘッダに対しても所定の演算処理を行ってサム値を算出する。さらに、プログラムヘッダ全体に対するサム値も算出する。プログラムヘッダ全体に対するサム値である全体サム値は、以下の式によって算出される。
【００８９】
「全体サム値  ＋  各プログラムヘッダのサム値  ＝  ０（ゼロ）」
ＲＯＭ６２０に３つのプログラムが記憶されている場合には、不揮発性メモリ６３０上のプログラムヘッダも３つ存在することになり、例えば、プログラムＡ、プログラムＢ、プログラムＣがＲＯＭ６２０に記憶されている場合には、プログラムＡヘッダ、プログラムＢヘッダ、プログラムＣヘッダの３つのプログラムヘッダが不揮発性メモリ６３０に存在する。
【００９０】
この場合、全体サム値は、次の式によって求められる。
【００９１】
「全体サム値  ＋  プログラムＡヘッダのサム値  ＋  プログラムＢヘッダのサム値  ＋  プログラムＣヘッダのサム値  ＝  ０」
このようにして、さまざまなサム値を算出できる。
【００９２】
情報書換部６０２は、不揮発性メモリ６３０に記憶された有効無効情報の書き換えを行う。この有効無効情報は、機能の購入などによって発行されるパスワードの入力や特別なプログラムの実行によって「無効」から「有効」または「有効」から「無効」へと切り換えることができる。
【００９３】
さらに、初期状態として有効無効情報を「有効」にしておいたプログラムに対して、所定の期間の経過によって自動的に「無効」へと書き換えることもできる。
【００９４】
ＲＯＭ６２０は、プログラムが記憶された診断対象となる記憶領域を有する記憶媒体であって、診断対象と指定されたプログラムのサム値をサム値算出部６０１で算出して所定のサム値と比較することによりＲＯＭ診断を行う。このときの例を図７または図８に示す。
【００９５】
なお、ＲＯＭ６２０にプログラムヘッダを記憶するような構成でＲＯＭ診断を行ってもよい。
【００９６】
不揮発性メモリ６３０は、ＲＯＭ６２０に記憶されたプログラムに対するプログラムヘッダの情報を管理する。プログラムヘッダには、プログラム識別子、データサイズ、有効無効情報、サム値などを含むことができ、有効無効情報で「有効」と示されたプログラムが診断対象と指定される。このときの例を図７または図８に示す。
【００９７】
図７は、図６に示すＲＯＭのデータ構成と不揮発性メモリのデータ構成を示す図である。
【００９８】
図７は、図２または図４に示す図と類似するため異なる点を中心に説明する。
【００９９】
図７において、図７（ａ）は、ＲＯＭに記憶されたデータ構成を示し、プログラムＡ、プログラムＢ、プログラムＣを記憶する。図７（ｂ）は、不揮発性メモリに記憶されたデータ構成を示し、プログラムＡヘッダ７１０、プログラムＢヘッダ７２０、プログラムＣヘッダ７３０、全体サム値７４０を記憶する。
【０１００】
プログラムＡヘッダ７１０、プログラムＢヘッダ７２０、プログラムＣヘッダ７３０には、それぞれプログラム識別子（７１１、７２１、７３１）、先頭アドレス情報（７１２、７２２、７３２）、有効無効情報（７１３、７２３、７３３）、データサイズ（７１４、７２４、７３４）、サム値（７１５、７２５、７３５）を含み、プログラムヘッダごとに情報を管理する構成である。
【０１０１】
さらに、この不揮発性メモリには、不揮発性メモリに格納された全てのプログラムヘッダに対する全体サム値７４０が記憶され、全体サム値７４０は、不揮発性メモリの各プログラムヘッダのチェックサムを示す合計値であり、各プログラムヘッダの有効無効情報（７１３、７２３、７３３）が書き換えられる度に再計算される。
【０１０２】
有効無効情報（７１３、７２３、７３３）は、各プログラムの実行可否を指定する情報であって、「有効」が設定されているプログラムヘッダのプログラムはＣＰＵからの呼び出しにより実行可能であることを示す。それに対して、「無効」が設定されているプログラムヘッダのプログラムはＣＰＵからの呼び出しに対して応答せず実行不可能とすることを示す。もちろん、エラー処理を行うように構成してもよい。
【０１０３】
図７（ｂ）に示す例では、プログラムＡヘッダとプログラムＣヘッダの有効無効情報に「有効」が設定され、プログラムＢヘッダの有効無効情報に「無効」が設定されている状態を示しており、この場合、プログラムＢについては実行することを許可していない。
【０１０４】
以上のことから、有効無効情報の設定値を変更することで各プログラムの実行可否を設定することができる。
【０１０５】
このときの設定値の書き換えは、特定の機能を新規に購入されたときに発行されるパスワードの入力や所定プログラムを実行することにより「無効」から「有効」へまたは「有効」から「無効」へ書き換えることができる。さらに、初期状態として設定値が「有効」になっているプログラムに対して、所定のサービス期間の終了を迎えたとき、または、そのプログラムの実行を不要としたときなどに自動的に「有効」から「無効」と書き換えることもできる。
【０１０６】
すなわち、図７（ｂ）に示す不揮発性メモリ上に存在するプログラムヘッダに対するプログラムは、図７（ａ）に示すＲＯＭに記憶された状態にあることを示し、有効無効情報によってそのプログラムの実行可否の切り換えを行っている。
【０１０７】
この図７に示すような構成におけるＲＯＭ診断処理プログラムの処理の流れを示すフローチャートを図９、図１０に示す。
【０１０８】
図８は、図７に示す不揮発性メモリのデータ構成を示した他の例の図である。
【０１０９】
図８は、プログラム管理ヘッダ８００、プログラムＡヘッダ８１０、プログラムＢヘッダ８２０、プログラムＣヘッダ８３０、全体サム値８４０の各データを含んだ構成の不揮発性メモリを示す。
【０１１０】
プログラム管理ヘッダ８００は、不揮発性メモリに搭載する各プログラムヘッダの管理情報であって、プログラム数８０１、各プログラムの有効無効情報（８０２−Ａ、８０２−Ｂ、８０２−Ｃ（以下、総称して「有効無効情報８０２」という））、各プログラムの先頭アドレス情報（８０３−Ａ、８０３−Ｂ、８０３−Ｃ（以下、総称して「先頭アドレス情報８０３」という））から構成される。
【０１１１】
プログラム数８０１を参照することでＲＯＭに記憶されたプログラムの数を確認することができると共に、不揮発性メモリに記憶されたプログラムヘッダの数をも確認することができる。また、このプログラム数８０１で示された数値分だけ有効無効情報８０２と先頭アドレス情報８０３の組み合わせがプログラム管理ヘッダ８００に存在する。
【０１１２】
図８には、プログラム数として「３」が示された場合の例を示し、プログラム管理ヘッダ８００には３つのプログラムそれぞれに対する有効無効情報８０２と先頭アドレス情報８０３が示されており、さらにその各プログラムに対するプログラムヘッダを不揮発性メモリに記憶されている例を示している。このときＲＯＭには、プログラム管理ヘッダ８００の先頭アドレス情報８０３に示された先頭アドレス以降にそれら３つのプログラムが格納されている。
【０１１３】
各プログラムヘッダ（プログラムＡヘッダ８１０、プログラムＢヘッダ８２０、プログラムＣヘッダ８３０）は、プログラム識別子（８１１、８２１、８３１）、データサイズ（８１２、８２２、８３２）、サム値（８１３、８２３、８３３）を含んで構成される。これらの各情報は、図７で示すプログラム識別子（７１１、７２１、７３１）、データサイズ（７１４、７２４、７３４）、サム値（７１５、７２５、７３５）にそれぞれ対応する。
【０１１４】
また、全体サム値８４０は、図７に示す全体サム値７４０に対応し、チェックサムを示す合計値であり、プログラム管理ヘッダ８００の有効無効情報８０２が変更されるたびに再計算される。
【０１１５】
このように、プログラムヘッダを管理するプログラム管理ヘッダを各プログラムヘッダとは別に設けて記憶するような構成にしてもよい。
【０１１６】
図９は、図７に示すデータ構成におけるＲＯＭ診断処理の流れを示すフローチャートである。
【０１１７】
図９は、ＲＯＭ診断処理プログラムがプログラムＡに含む場合の処理の流れを示す。
【０１１８】
図９において、プログラムＡに含まれるＲＯＭ診断処理プログラムの起動が指示されると処理が開始され、図７または図８に示すようなプログラムヘッダが記憶された不揮発性メモリの診断処理を行い（９０１）、その診断処理の結果、正常であったか判断する（９０２）。正常であると判断されない場合（９０２でＮＯ）、すなわち不揮発性メモリのデータが破損しているなどの場合には、ＲＯＭ診断を行うための前提となるプログラムヘッダのデータが破損している旨を表示するエラー処理（９０３）をして処理を終了する。
【０１１９】
それに対して、不揮発性メモリの診断処理の結果、正常であると判断されると（９０２でＹＥＳ）、その診断を行った不揮発性メモリに記憶されたプログラムヘッダから各プログラムに対する有効無効情報を取得する（９０４）。図７に示す不揮発性メモリの場合、プログラムヘッダ（７１０、７２０、７３０）を検索してそのプログラムヘッダに含まれる有効無効情報を取得する。また、図８に示す不揮発性メモリの場合、プログラム管理ヘッダ８００に記憶された有効無効情報を取得する。
【０１２０】
そして、取得した有効無効情報が「有効」であるかを判断し（９０５）、「有効」が示されていない場合、つまり「無効」が示されている場合（９０５でＮＯ）には、続いて、その有効無効情報に「無効」が示されたプログラムがＲＯＭ診断処理プログラムを含むプログラムＡであるか判断する（９０６）。すなわち、ＲＯＭ診断処理プログラムを含む有効無効情報に「無効」が設定されている場合、ＲＯＭ診断処理プログラムを実行することができない。また、ＲＯＭ診断処理プログラムを含まないプログラムに対して「無効」が設定されている場合には、そのプログラムの診断を飛ばすことができる。
【０１２１】
有効無効情報に「無効」と示されたプログラムがプログラムＡである場合（９０６でＹＥＳ）には、ＲＯＭ診断を行えない旨を示すエラー処理（９０７）を行って処理を終了する。また、プログラムＡでない場合（９０６でＮＯ）には、次のプログラムに処理対象を移行する処理を行う。
【０１２２】
そして、有効無効情報に設定された設定値が「有効」である場合（９０５でＹＥＳ）には、プログラムＡに含まれるＲＯＭ診断処理プログラムを起動して、各プログラムヘッダに設けられたプログラム識別子の改ざんチェックを行い（９０８）、不正を検出したかを判断する（９０９）。不正が検出された場合（９０９でＮＯ）には、プログラム識別子が不正である旨を表示するエラー処理（９０７）を行って処理を終了する。
【０１２３】
不正の検出の判断で不正が検出されない場合（９０９でＹＥＳ）には、そのプログラムの先頭アドレスを参照してＲＯＭに記憶されたプログラムを特定し、そのプログラムに所定の演算処理を行うことでプログラムに対するサム値を算出する（９１０）。算出したサム値とプログラムヘッダに記憶されたサム値とを比較し（９１１）、両者の値が一致しているか判断する（９１２）。
【０１２４】
両者の値が一致しない場合（９１２でＮＯ）には、データの破損が生じていると判断してその旨を表示するエラー処理（９０７）を行って処理を終了する。また、両者の値が一致した場合（９１２でＹＥＳ）には、診断が終了したプログラム数の値を更新する（９１３）。続いて、全プログラムに対する診断処理が終了したか判断し（９１４）、終了した場合（９１４でＹＥＳ）には、ＲＯＭ診断処理プログラムを終了する。この場合、ＲＯＭ全体の診断が正常に終了したことを示す。
【０１２５】
また、全てのプログラムに対して診断処理が終了していない場合（９１４でＮＯ）には、次のプログラムに診断対象を移行する。
【０１２６】
このときの全プログラムが終了したかの判断には、更新したプログラム数の値が不揮発性メモリに記憶されたプログラムヘッダの数と同じかを判断することによって行う。特に、図８に示す不揮発性メモリの構成の場合、プログラム管理ヘッダにあるプログラム数の値と更新したプログラム数の値が同じかを判断する。
【０１２７】
このような処理の流れによって、ＲＯＭ診断の前提となるデータが記憶された不揮発性メモリの診断が行えるとともに、ＲＯＭに記憶されたプログラムのうち有効無効情報が「有効」であるプログラムに対してのみ診断処理を実行することができる。
【０１２８】
図１０は、図７に示すデータ構成におけるＲＯＭ診断処理の流れを示す他のフローチャートである。
【０１２９】
図１０は、ＲＯＭ診断処理プログラムが診断対象となるＲＯＭ以外の記憶デバイスに記憶されている場合の処理の流れを示す。
【０１３０】
図１０において、プログラムＡに含まれるＲＯＭ診断処理プログラムの起動が指示されると処理が開始され、図７または図８に示すようなプログラムヘッダが記憶された不揮発性メモリの診断処理を行い（１００１）、その診断処理の結果、正常であったか判断する（１００２）。正常であると判断されない場合（１００２でＮＯ）、すなわち不揮発性メモリのデータが破損しているなどの場合には、ＲＯＭ診断を行うための前提となるプログラムヘッダのデータが破損している旨を表示するエラー処理（１００３）をして処理を終了する。
【０１３１】
それに対して、診断処理の結果、正常であると判断された場合（１００２でＹＥＳ）、各プログラムに対して以下の処理を行う。
【０１３２】
まず、不揮発性メモリから有効無効情報を取得し（１００４）、有効無効情報が「有効」であるかを判断する（１００５）。「有効」が示されていない場合、つまり「無効」が示されている場合（１００５でＮＯ）には、次のプログラムに診断対象を移行する処理を行う。また、「有効」が示されている場合（１００５でＹＥＳ）には、ＲＯＭ以外の記憶デバイスに記憶されたＲＯＭ診断処理プログラムを起動して、各プログラムヘッダに設けられたプログラム識別子の改ざんチェックを行い（１００６）、不正の検出を判断する（１００７）。
【０１３３】
不正が検出された場合（１００７でＮＯ）には、プログラム識別子が不正である旨を表示するエラー処理（１００８）を行って次のプログラムへ診断対象を移行する処理を行う。また、不正の検出の判断で不正が検出されない場合（１００７でＹＥＳ）には、そのプログラムの先頭アドレスを参照してＲＯＭに記憶されたプログラムを特定し、そのプログラムに所定の演算処理を行うことでプログラムに対するサム値を算出する（１００９）。
【０１３４】
算出したサム値とプログラムヘッダに記憶されたサム値とを比較し（１０１０）、両者の値が一致しているか判断する（１０１１）。両者の値が一致しない場合（１０１１でＮＯ）には、データの破損が生じていると判断してその旨を表示するエラー処理（１００８）を行って次のプログラムへ診断対象を移行する処理を行う。
【０１３５】
また、両者の値が一致した場合（１０１１でＹＥＳ）には、診断が終了したプログラム数の値を更新する（１０１２）。続いて、全プログラムに対して診断処理が終了したか判断し（１０１３）、終了した場合（１０１３でＹＥＳ）には、ＲＯＭ診断処理プログラムを終了する。この場合、ＲＯＭ全体の診断が正常に終了したことを示す。
【０１３６】
また、全てのプログラムの診断が終了していない場合（１０１３でＮＯ）には、次のプログラムに診断対象を移行して１００４の処理以降を行う。
【０１３７】
このとき、上記に示す「次のプログラムへ診断対象を移行する処理」とは、全てのプログラムに対して診断処理が終了したかを判断する（１０１３）処理を示す。
【０１３８】
これにより、ＲＯＭ診断処理プログラムがＲＯＭ以外の記憶デバイスに記憶されている場合であっても、ＲＯＭ診断の前提となるデータが記憶された不揮発性メモリの診断が行えるとともに、ＲＯＭに記憶されたプログラムのうち有効無効情報が「有効」であるプログラムに対してのみ診断処理を実行することができる。
【０１３９】
図１１は、不揮発性メモリの動作診断の処理の流れを示すフローチャートである。
【０１４０】
図１１は、図９、図１０に示す不揮発性メモリの診断処理の詳細な流れを示している。
【０１４１】
図１１において、ＲＯＭ診断処理プログラムの実行が指示されると処理が開始され、不揮発性メモリに格納されたヘッダごとのサム値を所定の演算処理を行うことで算出する（１１０１）。算出したサム値を不揮発性メモリの一時記憶領域に記憶しておき（１１０２）、不揮発性メモリの全てのヘッダに対してサム値の算出が行われたか判断する（１１０３）。全てのヘッダに対してサム値の算出を行う。
【０１４２】
図７に示す不揮発性メモリの場合、各プログラムヘッダそれぞれに対して演算処理を行ってそれぞれのサム値を算出したか判断し、図８に示す不揮発性メモリの場合、プログラム管理ヘッダと各プログラムヘッダそれぞれに対して演算処理を行ってそれぞれのサム値を算出したか判断する。
【０１４３】
全てのヘッダに対して行われた場合（１１０３でＹＥＳ）には、ヘッダごとに算出したサム値を合計し、ヘッダ全体のサム値を算出する（１１０４）。そして、算出したサム値が不揮発性メモリに記憶された全体サム値の値と比較する（１１０５）。
【０１４４】
このような処理が不揮発性メモリの診断処理として行われる。
【０１４５】
以上の処理によって、本発明のＲＯＭ診断によって、プログラムの実行が有効とされたプログラムに対してのみ診断処理を行うことができる。また、診断を行う際に元となるデータを不揮発性メモリに記憶しておくことができ、その不揮発性メモリの診断処理を行うことができる。
【０１４６】
これによって、ＲＯＭに記憶され、動作するのに必要なデータのみに対してＲＯＭ診断を行うことができるようになる。また、ＲＯＭ診断を行うための元となるデータが保存された不揮発性メモリの診断により、ＲＯＭの診断処理の結果がより信頼性の高い結果となる。
【０１４７】
従って、本発明を適用することにより、ＲＯＭ診断に要する処理時間を短縮できるとともに信頼性の高いＲＯＭ診断を提供できるという効果を期待できる。
【０１４８】
本発明は、上記し、且つ図面に示す実施例に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【産業上の利用可能性】
【０１４９】
本発明は、コントロール基盤に搭載されたＲＯＭのＲＯＭ診断を行う記憶媒体診断装置および方法に適用可能であり、特に、ＲＯＭの全記憶領域に対してデータが記憶された使用領域のみを診断することで効率的に短時間でＲＯＭ診断を行うのに有用である。
【図面の簡単な説明】
【０１５０】
【図１】本発明に係わる記憶装置の診断装置および診断方法を適用して構成した装置構成図。
【図２】本願発明におけるＲＯＭに記憶されたデータの構成を示すデータ構成図。
【図３】図２に示すＲＯＭのデータ構成における処理の流れを示すフローチャート。
【図４】図２に示した本願発明におけるＲＯＭに記憶されたデータの構成を示すデータ構成図の変形例を示した図。
【図５】図４に示すＲＯＭのデータ構成における処理の流れを示すフローチャート。
【図６】本願発明におけるコントロール基盤の構成を示す図
【図７】図６に示すＲＯＭのデータ構成と不揮発性メモリのデータ構成を示す図
【図８】図７に示す不揮発性メモリのデータ構成における他の例を示す図
【図９】図７に示すデータ構成におけるＲＯＭ診断処理の流れを示すフローチャート
【図１０】図７に示すデータ構成におけるＲＯＭ診断処理の流れを示す他のフローチャート
【図１１】不揮発性メモリの動作診断の処理の流れを示すフローチャート
【符号の説明】
【０１５１】
１００      コントロール基盤
１１０      ＣＰＵ
１１１      サム値算出部
１１２      情報書換部
１２０      ＲＯＭ
１３０      不揮発性メモリ
１４０      ＲＡＭ
１５０      通信インターフェース
２１０      プログラムＡヘッダ
２１１      プログラムＡ識別子
２１２      プログラムＡデータサイズ
２１３      プログラムＡサム値
２１４      制御プログラム数
２１５−Ａ、２１５−Ｂ、２１５−Ｃ  有無情報
２１６−Ａ、２１６−Ｂ、２１６−Ｃ  先頭アドレス情報
２２０      プログラムＢヘッダ
２２１      プログラムＢ識別子
２２２      プログラムＢデータサイズ
２２３      プログラムＢサム値
２３０      プログラムＣヘッダ
２３１      プログラムＣ識別子
２３２      プログラムＣデータサイズ
２３３      プログラムＣサム値
【図１】
2007148570.tif 000003
【図２】
2007148570.tif 000004
【図３】
2007148570.tif 000005
【図４】
2007148570.tif 000006
【図５】
2007148570.tif 000007
【図６】
2007148570.tif 000008
【図７】
2007148570.tif 000009
【図８】
2007148570.tif 000010
【図９】
2007148570.tif 000011
【図１０】
2007148570.tif 000012
【図１１】
2007148570.tif 000013