(57)【要約】【課題】マイクロコードを書き換えるアップデート作業において、マイクロコード書き込みが失敗しても二段階に復旧可能にする。【解決手段】開示されるマイクロコード書き換え方法は、コンピュータ装置に特定のハードウェアボードを搭載して構成するコンピュータ応用機器において、ハードウェアボード１０上に搭載されているメインＣＰＵ１のファームウェアやプログラム可能なＡＳＩＣのプログラムデータであるマイクロコードを書き換えるアップデート作業において、不揮発性メモリ５に領域１面，領域２面を用意し、面管理フラグによって、現状でメインＣＰＵ１を駆動するマイクロコードと、メインＣＰＵ１にこれから書き込むマイクロコードとを別々に管理することによって、マイクロコードの書き込みが失敗しても、二段階に復旧可能にするものである。【選択図】図１
2010231489.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置に特定のハードウェアボードを搭載して構成するコンピュータ応用機器において、ハードウェアボード上に搭載されているＣＰＵのファームウェアやプログラム可能なＡＳＩＣ(Application Specified IC)のプログラムデータであるマイクロコードを書き換えるアップデート作業において、複数のマイクロコード書き込み領域を用意して、現状でＣＰＵを駆動するマイクロコードと、これから書き込むマイクロコードとを別々に管理することによって、マイクロコードの書き込みが失敗しても、二段階に復旧可能にしたことを特徴とするマイクロコード書き換え方法。
【請求項２】
マイクロコードを格納する不揮発性メモリに二つのマイクロコード書き込み領域を持ち、面管理フラグによって、通常の動作に使用するマイクロコードを格納する領域である現用面と、次回のマイクロコード書き換え用に使用する領域である予備面とを自動的に交互に選択することを特徴とする請求項１記載のマイクロコード書き換え方法。
【請求項３】
前記面管理フラグが、マイクロコードを格納する不揮発性メモリに格納されていることを特徴とする請求項１または２記載のマイクロコード書き換え方法。
【請求項４】
マイクロコード書き込み後のデータチェックによって不揮発性メモリ内の予備面に新たに格納されたマイクロコードにエラーが含まれていることを検知した場合に、面管理フラグの切り換えを行わないことを特徴とする請求項１乃至３のいずれか一記載のマイクロコード書き換え方法。
【請求項５】
マイクロコード書き込み後に、不揮発性メモリに格納されたデータがエラーとなった場合に、手動操作によって面反転スイッチを有効にすることによって、予備面からマイクロコードを読み出して、一つ古い世代のマイクロコードでボードＣＰＵを起動させることを特徴とする請求項１乃至４のいずれか一記載のマイクロコード書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコンピュータ装置内蔵ボードのマイクロコード書き換え方法に係り、偶発的に発生する通信エラー，デバイスエラー，メモリ内容消失等の原因によって、ボードのマイクロコードの一部が使用できなくなった場合でも、特段の知識や冶具を必要とせずに復旧させることが可能な、マイクロコード書き換え方法に関する。
【背景技術】
【０００２】
コンピュータ装置内蔵ボードのマイクロコード書き換え方法は、従来から知られている。図６は、従来のコンピュータ装置内蔵ボードのマイクロコード書き換え手段を示したものである。
【０００３】
図６に示す、内蔵ハードウェアボード上のメインＣＰＵ（Central Processing Unit)５１や、周辺ＦＰＧＡ（Field Programmable Gate Array)５３等のマイクロコードの書き換えは、起動コードデータ格納用として装備されているフラッシュメモリ等の不揮発性メモリ５５のマイクロコード領域のデータを、メインＣＰＵ５１の周辺装置のＧＵＩ(Graphical User Interface)や入力装置，ネットワーク等を経由して、データを更新することによって行うことは、既に一般的に知られている。
【０００４】
しかしながら、従来のマイクロコード書き換え方式では、以下に示すような問題がある。すなわち、近年におけるＦＰＧＡの大型化や、ファームウェアの複雑化によって、書き込むコードデータの容量は肥大化しており、これに伴って書き込みに失敗する事故も発生している。
【０００５】
これは書き込み時に、前回のＦＰＧＡデータやファームウェアプログラムがコードデータ書き換えの際に、仲介する機能を担っているため、一度書き込みに失敗すると、再起動後にＦＰＧＡ，ＣＰＵが動作しなくなり、コードデータの書き換え仲介機能も作動しなくなるため、同じ書き込み方法では復旧できなくなるからであって、ボードの修理等が必要になる。
【０００６】
これに対して特許文献１においては、例えば電源投入時に不揮発性メモリの読み出しあるいは書き込みベリファイを禁止する禁止フラッグを設け、その禁止フラッグが、消去ベリファイで消去されていることが確認できない限り、不揮発性メモリの読み出しあるいは書き込みベリファイの禁止が解除されないように制御を行うことにより、不揮発性メモリ内のマイクロコードやデータに対して、内部データの判らない第三者による外部からの間接的なアクセスをも不可能にし、そのような第三者によるどのような手段での解読も不可能にし、また、不揮発性メモリはブロック分割されており読出し禁止をする必要のないブロックに関しては禁止フラッグを設けないようにして、不揮発性メモリから不正にデータが読み出されないようにして、内部データの判らない第三者への漏洩から、不揮発性メモリ内のデータを確実に保護することができる、マイクロコンピュータ装置が開示されている。
【０００７】
しかしながら、特許文献１記載の技術では、偶発的に発生する通信エラー，デバイスエラー，メモリ内容消失等の原因によって、ボードのマイクロコードの一部が使用できなくなった場合でも、特段の知識や冶具を必要とせずに復旧させることはできない。
【０００８】
また、特許文献２においては、マイクロコードをＲＡＭに格納する方式のプロセッサを目的プロセッサとする言語処理系において、ソースファイルから、特定のプロセッサに依存しない命令セットからなる仮実行ファイルを生成する複数の言語処理系と、仮実行ファイルに使用されるマイクロコードを生成するマイクロコードジェネレータと、仮実行ファイルおよびマイクロコードから実行形式ファイルを生成する実行ファイルジェネレータとを含む。仮実行ファイルに含まれる命令の実行に必要なマイクロコードのみを生成し、実行時にそれをＲＡＭにロードするので、効率的かつ高速に実行できるプログラムを開発できるようにすることによって、より広い応用分野で、高速かつ高効率で実行できる実行形式ファイルを開発できる、ソフトウェア開発プログラム，プログラム実行方法，プログラム作成方法，トレース装置および方法，計算装置，ならびにプログラムの評価方法が開示されている。
【０００９】
しかしながら、特許文献２記載の技術では、偶発的に発生する通信エラー，デバイスエラー，メモリ内容消失等の原因によって、ボードのマイクロコードの一部が使用できなくなった場合でも、特段の知識や冶具を必要とせずに復旧させることはできない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００３−２０３０１２号公報
【特許文献２】特開平０９−３１９６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
一般的なコンピュータ装置に、特定機能のハードウェアボードを組み込んだ特定用途向けのコンピュータ応用機器において、ハードウェアボード上に搭載されているボードＣＰＵのファームウェアや、プログラム可能なＡＳＩＣ(Application Specific Integrated Circuit; ここではＦＰＧＡ(Field Programmable Gate Array)) のプログラムデータであるマイクロコードを書き換えることによって、装置に新たな機能を追加したり、潜在的なプログラムミスを修正したりすることが一般的に可能になっている。
【００１２】
マイクロコードは、高級オペレーティングシステムを持つホストコンピュータ装置が備えているファイル装置やネットワークから、マイクロコードファイルとして提供されるのが一般的である。
ボード上のボードＣＰＵのマイクロコードと、ボードＣＰＵの周辺回路を構成するＦＰＧＡ用のマイクロコードを自動的に書き換えるために、ボードＣＰＵのプログラム自体に書き換え機能を装備する。
【００１３】
マイクロコード書き換え動作時、ボードＣＰＵは、ホストコンピュータ装置からマイクロコードを受け取り、周辺回路として持つ不揮発性メモリに書き込む。ボードＣＰＵが動作するプログラムは、再起動時に不揮発性メモリから作業用メモリにコピーしたデータなので、途中で再起動しない限り、不揮発性メモリのデータは、自由に書き換え可能である。
【００１４】
しかしながら、近年における機器機能の複雑化によって、マイクロコードのデータ量は肥大しており、不揮発性メモリもこれに対応して容量を増大させているため、確率的に書き換えデータの部分破壊等によるデータエラーが発生して、書き込み作業に失敗する場合が増加してきた。
【００１５】
不揮発性メモリへのデータ書き換えに失敗すると、書き換え後の再起動時にボードＣＰＵがロードするマイクロコードの破損個所によっては、正しくプログラムが起動しなくなり、そのため、再度書き換えを行おうとしても、書き換えプログラムが動作しないので、復旧不可能な状態になってしまうという問題がある。
このような場合は装置を修理する必要があり、特に工業用，商業用に使用される機器では、機器を使用できない時間の損失が大きく、さらに大きな問題である。
【００１６】
これと別の対処方法として、同じ不揮発性メモリの中に複数のデータ格納面を持ち、書き換え時および書き込み時のデータ格納面をスイッチで指定する方法があるが、書き換えの都度、スイッチを手動で正確に操作する必要があるのと、また、それぞれの面にどのようなマイクロコードが書き込まれているかという履歴を管理しなければならず、複雑化することを避けられない。
【００１７】
この発明は、このような事情に鑑みてなされたものであって、偶発的に発生する通信エラー，メモリ内容消失等の原因によって、ボードのマイクロコードの一部が使用できなくなった場合でも、特段の知識や冶具を必要とせずに復旧させることができる、マイクロコード書き換え方法を提供することを目的としている。
【課題を解決するための手段】
【００１８】
上記課題を解決するため、この発明はマイクロコード書き換え方法に係り、コンピュータ装置に特定のハードウェアボードを搭載して構成するコンピュータ応用機器において、ハードウェアボード上に搭載されているＣＰＵのファームウェアやプログラム可能なＡＳＩＣ(Application Specified IC)のプログラムデータであるマイクロコードを書き換えるアップデート作業において、複数のマイクロコード書き込み領域を用意して、現状でＣＰＵを駆動するマイクロコードと、これから書き込むマイクロコードとを別々に管理することによって、マイクロコードの書き込みが失敗しても、二段階に復旧可能にしたことを特徴としている。
【発明の効果】
【００１９】
この発明のマイクロコード書き換え方法の第１の効果は、不揮発性メモリにマイクロコード格納領域を二つ持ち、面管理フラグを備えて、書き込みプロセスの中で、書き込みエラーをチェックしたのちにフラグを更新するので、書き込みで偶発的に失敗した場合でも、特段の回復措置を行うことなしに、何度でも再実行できることである。
【００２０】
また、第２の効果は、不揮発性メモリへの書き込みが正常に終了して再起動したのち、電気的，物理的な影響によって、書き込みデータが不正に変化した場合にも、面反転スイッチの操作だけで、一つ古いマイクロコードでＣＰＵを再起動させることができ、特別な修理冶具等を使用しなくても、ボードを復旧させることができることである。
【図面の簡単な説明】
【００２１】
【図１】本発明のマイクロコード書き換え方法の機能構成を示す図である。
【図２】本発明のマイクロコード書き換え方法における不揮発性メモリの内容を示す図である。
【図３】本発明の一実施形態である、ビデオレコーダ装置の構成を示す図である。
【図４】本発明のマイクロコード書き換え方法における、各機能構成の動作を説明するフローチャートである。
【図５】マイクロコードの書き換え処理終了後に、不揮発性メモリのデータが不正になった場合の復旧方法を示す図である。
【図６】従来のコンピュータ装置内蔵ボードのマイクロコード書き換え手段を示す図である。
【発明を実施するための形態】
【実施形態】
【００２２】
以下、本発明のマイクロコード書き換え方法の機能構成について、図面を参照して詳細に説明する。
図１は、本発明のマイクロコード書き換え方法の機能構成を示したものであって、データバスに接続されたメインＣＰＵ１とボードＣＰＵ２，周辺ＦＰＧＡ３，作業用メモリ４，不揮発性メモリ５，面反転スイッチ６を備えた、ハードウェアボード１０が示されている。
【００２３】
図１において、メモリＣＰＵ１によってハードウェアボード１０に伝送されたマイクロコードは、ボードＣＰＵ２の操作によって、ハードウェアボード１０にマイクロコード保持用として装備されている不揮発性メモリ５に格納される。
【００２４】
不揮発性メモリ５は、図２に示すように、同種のマイクロコードを二つ分格納できるように、領域１面，領域２面からなる２面分のデータ領域を持ち、ボードＣＰＵ２のプログラムが面管理フラグを管理することにより、面管理フラグによって、通常の動作に使用するマイクロコードを格納する現用面と、次回のマイクロコード書き換え用に使用する予備面とが、自動的に交互に使用されるようになる。
【００２５】
これによって、図１の機能構成において、マイクロコード書き換え時に予備面に書き込みを行っている間、ボードＣＰＵ２を駆動するプログラムは、不揮発性メモリ５の現用面マイクロコードから作業用メモリ４にコピーしたマイクロコードで動作する。
書き込み終了後は、面管理フラグの極性を切り替えたのち、新しいマイクロコードを作業用メモリ４にロードして、ボードＣＰＵ２を再起動することによって、書き換えが完了する。
【００２６】
マイクロコードの予備面側への書き込みが失敗に終わった場合、そのまま面管理フラグを切り替えてしまうと、エラーを含んだ新しいマイクロコードが作業メモリ４にロードされて、ボードＣＰＵ２が正しく動作しなくなってしまうので、書き込み後のデータチェックでエラー検知を行って、データエラーを確認した場合には、面管理フラグの切り替えを行わないことによって、動作不良の発生が防止される。
【００２７】
また、マイクロコードの書き込み後にはデータエラーを含まないが、一定時間後に不揮発性メモリ５のデータが破壊された場合は、既に面管理フラグが切り替えられてしまっているので、現用面のマイクロコードにエラーが含まれ、従って、このマイクロコードでボードＣＰＵ２を動作させることはできない。
この場合には、手動操作によって面反転スイッチ６を有効にすることで、予備面からのマイクロコード読み出しを行って、一つ古い世代のマイクロコードでボードＣＰＵ２を起動させることにより、動作不良を防止すればよい。
【００２８】
次に、本発明の実施形態について説明する。図３は、本発明の一実施形態である、ビデオレコーダ装置の構成を示したものである。
【００２９】
図３に示されたビデオレコーダ装置本体は、ＯＳ（Operating System) として、一般的な高級オペレーティングシステムである、Ｗｉｎｄｏｗｓ（登録商標）を搭載したコンピュータであって、メインＣＰＵ１１と、メインメモリ１２と、システムブートディスク１３と、ディスプレイやキーボード等の外部装置へ接続するための外部Ｉ／Ｆ（Interface)ボード１４と、ネットワークボード１５とで構成されており、ビデオ信号を記録するための専用のハードウェアボード３０を搭載していて、ハードウェアボード３０で処理した映像と音声を、保存用ディスク１７へ記録する。ハードウェアボード３０では、入力された映像・音声信号を、ＦＰＧＡ２３で記録用に処理加工し、ボードＣＰＵ１９が加工された映像・音声データを、バスインターフェース１８を介して、メインＣＰＵ１１へ伝送する。
【００３０】
システム起動時、ハードウェアボード３０内では、ブートＲＯＭ２０の基本マイクロコードによって、ボードＣＰＵ１９がファームウェア用不揮発性メモリ２４から現用マイクロコードを作業用メモリ２２にコピーし、以降は、作業用メモリ２２にコピーされたマイクロコードプログラムを実行することによって、処理を継続する。
また、ＦＰＧＡデータ用不揮発性メモリ２５から、ＦＰＧＡプログラムデータをＦＰＧＡ２３にコピーすることによって、ＦＰＧＡ２３における画像・音声処理回路が動作する。
【００３１】
マイクロコードを書き換える場合、必要なデータはマイクロコードファイル１６として、ネットワーク経由で供給される。メインＣＰＵ１１が、マイクロコードをボードＣＰＵ１９に伝送すると、ボードＣＰＵ１９は、マイクロコードを作業用メモリ２に一旦格納して、データチェックを行ったのち、不揮発性メモリ２４，２５の予備面のマイクロコード領域に書き込む。
書き込みが終了したのち、不揮発性メモリ２４，２５の面管理フラグを反転させ、ボードＣＰＵ１９をリセットすると、マイクロコード領域１，２のうちの現用面が新しく書き込まれた領域側となり、新しいマイクロコードで、ボードＣＰＵ１９，ＦＰＧＡ２３が動作するようになる。
【００３２】
マイクロコードの書き込み途中で、通信エラーや不揮発性メモリ２４，２５の書き込みエラーで書き込みに失敗した場合は、面管理フラグはまだ反転していないので、何回でもやり直すことができる。
【００３３】
マイクロコードの書き込みが正常に終了し、ボードＣＰＵ１９をリセットしたのちに、不揮発性メモリ２４，２５の現用マイクロコードにデータ異常が発生して、ボードＣＰＵ１９またはＦＰＧＡ２３が正常に機能しなくなった場合には、再書き込み動作を行うことはできないことが多いため、面反転スイッチ２１をオンにして、一つ古いマイクロコードでボードＣＰＵ１９，ＦＰＧＡ２３を起動して、マイクロコード書き込みを再度行うことができる。
【００３４】
次に、図１に示された本発明のマイクロコード書き換え方法における、各機能構成の動作を説明する。
図４は本発明のマイクロコード書き換え方法における、ネットワーク書き込み開始後の動作の流れを示すフローチャートである。
【００３５】
ネットワーク書き込み開始により、メインＣＰＵ１からボードＣＰＵ２がマイクロコードのデータを受信し（ステップ３１）、データの種別がファームウェアかＦＰＧＡかを判定したのち、それぞれの現在の予備面（書き込み面）を、面管理フラグから取得する（ステップ３２，３３）。そして、マイクロコードデータを作業用メモリ４に一時的に展開し（ステップ３４）、データチェックを行う。
【００３６】
ここでエラーが検出された場合は、ＣＰＵ間の伝送エラーとなり、エラー終了する。このあと、何回でも再書き込みを行うことができる。
エラーが検出されない場合は、不揮発性メモリ５に、マイクロコードの書き込みを行う（ステップ３５）。不揮発性メモリへの書き込み中に、書き込み結果の確認によって、デバイスエラーを検知したときは、エラー終了する。
この場合も、このあと、マイクロコードの再書き込みが可能である。
【００３７】
書き込みの確認結果、マイクロコードの書き込みが正常に完了した場合は、面管理フラグを反転して（ステップ３６）、書き込みを終了する。
これ以降において、ボードＣＰＵ２をリセットすれば、次回起動時には新しいマイクロコードによって処理を実行するようになる。
【００３８】
次に、図５を参照して、マイクロコードの書き換え処理終了後に、不揮発性メモリのデータが不正になった場合の復旧方法について説明する。
【００３９】
マイクロコードの書き込み終了後、ボードＣＰＵ２を再起動させて（ステップ４１）、ボードＣＰＵ２の起動が失敗した場合（ステップ４２）は、手動で面反転スイッチ６をオンＯＮにする（ステップ４３）。こののち、ボードＣＰＵ２を再起動させると（ステップ４４）、ボードＣＰＵ２は、前回のファームウェアやＦＰＧＡデータによって起動する（ステップ４５）。
【００４０】
最新のマイクロコードに戻したい場合は、この状態からマイクロコード書き込みを再度実施する（ステップ４６）。書き込み結果を確認して、書き込みが正常に終了した場合は、面管理フラグは正常時と同様に自動的に更新される（ステップ４７）ので、手動で面反転スイッチ６をＯＦＦし（ステップ４８）、ボードＣＰＵ２を再起動することによって、正常な状態に戻る。
マイクロコードの書き込みに失敗した場合、面反転スイッチ６はそのままで、何度でも再書き込みを行うことができる。
【００４１】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれる。
【産業上の利用可能性】
【００４２】
この発明のマイクロコード書き換え方法は、産業用，商業用に使用される特定機能を持つハードウェアボードを搭載したコンピュータ応用装置において、広く利用可能なものである。
【符号の説明】
【００４３】
１    メインＣＰＵ
２    ボードＣＰＵ
３    周辺ＦＰＧＡ
４    作業用メモリ
５    不揮発性メモリ
６    面反転スイッチ
１０    ハードウェアボード
１１    メインＣＰＵ
１２    メインメモリ
１３    システムブートディスク
１４    外部Ｉ／Ｆポート
１５    ネットワークポート
１６    マイクロコードファイル
１７    保存用ディスク
１８    バスインターフェース
１９    ボードＣＰＵ
２０    ブートＲＯＭ
２１    面反転スイッチ
２２    作業用メモリ
２３    ＦＰＧＡ
２４    ファームウェア用不揮発性メモリ
２５    ＦＰＧＡデータ用不揮発性メモリ
３０    ハードウェアボード
【図１】
2010231489.tif 000003
【図２】
2010231489.tif 000004
【図３】
2010231489.tif 000005
【図４】
2010231489.tif 000006
【図５】
2010231489.tif 000007
【図６】
2010231489.tif 000008