JP4868216B2 - ファームウェア更新回路およびファームウェア更新方法 - Google Patents

ファームウェア更新回路およびファームウェア更新方法 Download PDF

Info

Publication number
JP4868216B2
JP4868216B2 JP2006011461A JP2006011461A JP4868216B2 JP 4868216 B2 JP4868216 B2 JP 4868216B2 JP 2006011461 A JP2006011461 A JP 2006011461A JP 2006011461 A JP2006011461 A JP 2006011461A JP 4868216 B2 JP4868216 B2 JP 4868216B2
Authority
JP
Japan
Prior art keywords
address
update
control device
boot loader
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006011461A
Other languages
English (en)
Other versions
JP2007193596A (ja
Inventor
雄司 菊池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2006011461A priority Critical patent/JP4868216B2/ja
Priority to US11/623,664 priority patent/US20070169098A1/en
Publication of JP2007193596A publication Critical patent/JP2007193596A/ja
Application granted granted Critical
Publication of JP4868216B2 publication Critical patent/JP4868216B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Description

本発明は、ファームウェア更新回路およびファームウェア更新方法に関する。
ファームウェア更新回路は、コンピュータ装置の制御を司るファームウェアについて、機能強化や問題回避などのために新しいファームウェアに更新する必要が生じた場合、フラッシュメモリに記憶されたファームウェアに関するデータをオンボードで書き換えるための回路である。従来、ファームウェア更新時に電源断などの障害が発生した場合、フラッシュメモリ内のデータが破壊され、フラッシュメモリを交換しないかぎり二度と立ち上がらなくなるという課題があった。この問題を解決するために、いくつかの解決手段が提案されている。
たとえば、特開2005−78336号公報に画像形成装置のプログラム書き換え方法が開示されている。このプログラム書き換え方法は、ファームウェア更新前に更新前データをFROMに退避しておく。そして、電源断などの障害が発生して、ファームウェアの更新に失敗した場合、退避データをフラッシュメモリに戻して、再びファームウェアを更新する。この従来技術の問題点は、更新前データを退避中に障害が発生した場合、退避データそのものの信頼性が失われることと、退避用のFROMが冗長であることでコストが増大することである。
また、特開2005−228225号公報にメモリーカードアダプタが開示されている。このメモリーカードアダプタは、フラッシュメモリ内のブート部を非書き換え領域にする。それにより、プログラム部の書き換え中に電源断などの障害が発生しても、ブート部は破壊されていないため、再びファームウェアを更新することを可能とする。この従来技術の問題点は、フラッシュメモリ内に固定で非書き換え領域を備える必要があるため、ファームウェア設計者にプログラム上の制限を強いることである。特に、ファームウェアはレビジョンアップするにつれて、プログラム部の容量が増大していくことは常であり、低コストのために容量の少ないファームウェアを搭載するシステムでは、大きな固定領域を持つことは致命的ともいえる。
また、特開平11−003213号公報に情報処理システムが開示されている。この情報処理システムは、立ち上げ用ROMを別に備えている。そして、フラッシュメモリの書き換え中に電源断などの障害が発生しても、この立ち上げ用ROMから再びファームウェアを立ち上げ、再び更新することを可能とする。この従来技術の問題点は、立ち上げ用のROMが冗長であることでコストが増大することと、ローダ部の更新が出来ないため、ファームウェアとしての機能が制限されることである。
また、別の方式として、フラッシュメモリ自体を二重化させる方式があった。この方式もフラッシュメモリ部分が冗長となり、高コストをもたらす問題点があった。
関連する技術として特開2001−195260号公報にブートプログラム書き換えシステムが開示されている。このブートプログラム書き換えシステムは、物理的に領域を第1の領域および第2の領域に2分され、前記第1の領域にパワーオンからシステムが立ち上がるまでの設定を行うブートプログラムを格納し、前記第2の領域に前記ブートプログラムを書き換えるための書き換えルーチンを格納する書き換え可能不揮発性リードオンリーメモリと;前記書き換え可能不揮発性リードオンリーメモリに与えられるアドレスの1ビットを論理的に反転する手動スイッチとを有することを特徴とする。
この場合、フラッシュメモリに固定領域(書き換えルーチン用)を確保しておく必要があり、ファームウェア設計者にプログラム上の制限を強いることになる。実施例2の書き換えルーチンを複数持たせる方法では、プログラム用のメモリの容量がより制限される。最上位ビットのアドレスのみを反転して、論理的上位、下位に書き込む方法も結局は、フラッシュROMを内部で二重化していることに他ならず、プログラム用のメモリの容量は半分に制限される。アップデートによるプログラムの容量アップにも対応できない。また、外部スイッチを使用することで人手の介入が必要である。
また、特開2002−222084号公報に半導体記憶装置が開示されている。この半導体記憶装置は、複数の領域に分割されている。前記複数の領域は、それぞれ、領域内の最上位の物理アドレス又は領域内の最上位の物理アドレスを含む一連の複数の物理アドレスに、1又は複数のスモールセクタを配置したことを特徴とする。この半導体記憶装置は、アドレス変換回路を有していても良い。その場合、前記複数の領域は、それぞれ、更に、スモールセクタより大きいセクタを複数有し、前記アドレス変換回路は、外部から入力された前記セクタのセクタアドレスを変換し、前記複数の領域を同一のブート・ブロック・タイプとして機能させることを特徴とする。
この場合、トップタイプとボトムタイプとを分けて同一メモリにバンクを混在させているのみで、二重化に他ならない。メモリの二重化は、フラッシュメモリ部分が冗長となり、高コストをもたらし問題点である。
また、特開平8−255084号公報にEEPROMのアップグレード方法が開示されている。このアップグレード方法は、第1のメモリにおける主アドレス空間に関連した主ブート・ブロックから代替アドレス空間に関連した代替ブート・ブロックにブート・データをコピーするステップと、前記代替ブート・ブロックがマイクロプロセッサの視点から主アドレス空間に現れ、前記主ブート・ブロックが代替アドレス空間に現れるように、第2の不揮発性メモリをセットするステップと、新しいブート・データを前記主ブート・ブロックに書き込むステップと、前記主ブート・ブロックを主アドレス空間に戻し、前記代替ブート・ブロックを代替アドレス空間に戻すように前記第2の不揮発性メモリをリセットするステップと、を備えて成る。
この場合、主ブートブロックを一時的に別領域に代替ブロックとしてコピーし、消去/書き換え後の電源障害に耐えられるようにしたもので、プログラム書き換えに特段のシーケンスが必要となり、それだけ余分な書き換え時間を要する。加えて、書き換え者(プロセッサ等)に相応のインテリジェンスをプログラム等で持たせなければならない。
また、特表2002−526828号公報にブート・ブロックへの書き込みアクセスを可能にする時のブート・ブロック・コードの保護方法が開示されている。この方法は、第1ブート・ブロック・コードを保護し、第1ブート・ブロック・コードと同じセグメントまたは領域中に常駐する他のコードまたはデータの更新を可能にする方法である。その際、第1ブート・ブロック・コードおよび他のコードもしくはデータはメモリの第1書き込み可能セグメント中に格納されており、そのセグメントは初めに保護された書き込み不可能な状態に設定されており、 a)メモリの第1書き込み可能セグメント中に格納されているすべての情報をメモリの第2書き込み可能セグメント中にコピーするステップと、 b)メモリの第2書き込み可能セグメント中のコピーされた情報の妥当性検査をするステップと、 c)第1書き込み可能セグメントを保護されていない、書き込み可能な状態に設定するステップと、 d)第1書き込み可能セグメント中に格納されているすべての情報を消去するステップと、 e)第1書き込み可能セグメントを更新されたコードまたはデータで更新するステップとを含み、更新されたコードまたはデータは第2ブート・ブロック・コードを含み、 f)第1書き込み可能セグメント中に格納されている第2ブート・ブロック・コードを第2書き込み可能セグメント中の第1ブート・ブロック・コードと比較するステップと、 g) ステップf)の比較で、第1および第2再書き込み可能セグメント中にそれぞれ格納されている第2および第1ブート・ブロック・コードが同一である場合、第1再書き込み可能セグメントを保護された、書き込み不可能な状態に設定するステップとを含む方法。
ファームウェア更新時に電源断などの障害が発生した場合でも、不揮発性メモリを交換することなく、ファームウェアに関するデータをオンボードで書き換え可能なファームウエア更新回路及びファームウエア更新方法が望まれる。上記オンボードでの書き換えの際、メインプログラムを格納するプログラム領域とブートローダを格納するローダ領域とを有する不揮発性メモリ中に、ローダ領域を固定的に確保する必要がなく、ファームウェア設計時にローダ領域を意識する必要がないようなファームウエア更新回路及びファームウエア更新方法が望まれる。上記書き換えの際、冗長な不揮発性メモリを用いる必要のないファームウエア更新回路及びファームウエア更新方法が望まれる。
特開2005−78336号公報 特開2005−228225号公報 特開平11−003213号公報 特開2001−195260号公報 特開2002−222084号公報 特開平8−255084号公報 特表2002−526828号公報
従って、本発明の目的は、ファームウェア更新時に電源断などの障害が発生した場合でも、不揮発性メモリを交換することなく、ファームウェアに関するデータをオンボードで書き換えが可能なファームウエア更新回路及びファームウエア更新方法を提供することにある。
また、本発明の他の目的は、上記オンボードでの書き換えの際、不揮発性メモリ中にブートローダを格納するローダ領域を固定的に確保する必要のないファームウエア更新回路及びファームウエア更新方法を提供することにある。
本発明の更に他の目的は、冗長な不揮発性メモリを用いる必要のないファームウエア更新回路及びファームウエア更新方法を提供することにある。
以下に、発明を実施するための最良の形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための最良の形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
上記課題を解決するために、本発明のファームウェア更新回路は、識別部(5)とアドレス反転部(4)とを具備する。識別部(5)は、ブートローダ及びメインプログラムを格納する不揮発性メモリ(3)におけるブートローダのアドレスに対応する識別データ(5a)を格納する。アドレス反転部(4)は、制御装置(2)がブートローダ及びメインプログラムの更新を実行するとき、ブートローダ及び更新用のブートローダの少なくとも一方が不揮発性メモリ(3)に存在するように、識別データ(5a)に基づいて、制御装置(2)が不揮発性メモリ(3)へ出力するブートローダの読出し用のアドレス(10)と更新用のブートローダの書込み用のアドレス(10)とが異なるように変更する。
本発明は、既存のブートローダを格納した読出し用のアドレス(10)と更新用のブートローダを格納する書込み用のアドレス(10)とを異なるようにすることができる。それにより、不揮発性メモリ(3)において、既存のブートローダの格納領域と異なる領域に、更新用のブートローダを書き込むことができる。それにより、ファームウェア(ブートローダ+メインプログラム)の更新中に電源断などの障害が発生した場合においても、不揮発性メモリ(3)内に、既存のブートローダ及び更新用のブートローダの少なくとも一方が上書きされずに残ることができる。したがって、不揮発性メモリ(3)を交換することなく、ファームウェア更新を再実行することができる。
上記のファームウェア更新回路において、アドレス反転部(4)は、更新のとき、識別データ(5a)に基づいて、読出し用のアドレス(10)について反転及び非反転のいずれか一方を行い、書込み用のアドレス(10)について他方を行う。
上記のファームウェア更新回路において、アドレス反転部(4)は、識別データ(5a)が第1状態(「0」)の場合、読出し用のアドレス(10)について非反転を行い、書込み用のアドレス(10)について反転を行う。
上記のファームウェア更新回路において、アドレス反転部(4)は、識別データ(5a)が第2状態(「1」)の場合、読出し用のアドレス(10)について反転を行い、書込み用のアドレス(10)について非反転を行う。
上記のファームウェア更新回路において、更新のとき、当該更新に関するタイムアウトを監視する監視部(6)を更に具備する。識別部(5)は、監視部(6)がタイムアウトを検出したとき、識別データ(5a)をタイムアウト前の値から変更する。アドレス反転部(4)は、変更された識別データ(5a)に基づいて、読出し用のアドレス(10)及び書込み用のアドレス(10)の反転及び非反転について、それぞれタイムアウト前のものから変更する。
上記課題を解決するために、本発明の情報処理装置は、制御装置(2)と、ブートローダ及びメインプログラムを格納する不揮発性メモリ(3)と、制御装置(2)と不揮発性メモリ(3)とに通信可能に接続され、上記のいずれか一項に記載されたファームウェア更新回路(1a)とを具備する。
上記課題を解決するために、本発明のファームウェア更新方法は、(a)制御装置(2)が不揮発性メモリ(3)に格納されたブートローダ及びメインプログラムの更新を実行するとき、ブートローダ及び更新用のブートローダの少なくとも一方が不揮発性メモリ(3)に存在するように、不揮発性メモリ(3)おけるブートローダのアドレスに対応する識別データ(5a)に基づいて、制御装置(2)が出力するブートローダの読出し用のアドレス(10)について、変更及び非変更のいずれか一方を行い不揮発性メモリ(3)へ送信するステップと;(b)識別データ(5a)に基づいて、制御装置(2)が出力する更新用のブートローダの書込み用のアドレス(10)について、変更及び非変更のうちの他方を行い不揮発性メモリ(3)へ送信するステップとを具備する。
上記のファームウェア更新方法において、(a)ステップは、(a1)更新のとき、識別データ(5a)に基づいて、読出し用のアドレス(10)について反転及び非反転のいずれか一方を行うステップを備える。(b)ステップは、(b1)更新のとき、識別データ(5a)に基づいて、書込み用のアドレス(10)について反転及び非反転のうちの他方を行うステップを備える。
上記のファームウェア更新方法において、(a1)ステップは、(a11)識別データ(5a)が第1状態(「0」)の場合、読出し用のアドレス(10)について非反転を行うステップを含む。(b1)ステップは、(b11)識別データ(5a)が第1状態(「0」)の場合、書込み用のアドレス(10)について反転を行うステップを含む。
上記のファームウェア更新方法において、(a1)ステップは、(a12)識別データ(5a)が第2状態(「1」)の場合、読出し用のアドレス(10)について反転を行うステップを含む。(b1)ステップは、(b12)識別データ(5a)が第2状態(「1」)の場合、書込み用のアドレス(10)について非反転を行うステップを含む。
上記のファームウェア更新方法において、(c)更新のとき、当該更新に関するタイムアウトを監視するステップと;(d)タイムアウトを検出したとき、識別データ(5a)をタイムアウト前の値から変更するステップと;(e)変更された識別データ(5a)に基づいて、(a)ステップ及び(b)ステップを実行するステップとを更に具備する。
本発明により、ファームウェア更新時に電源断などの障害が発生した場合でも、不揮発性メモリを交換することなく、ファームウェアに関するデータをオンボードで更新が可能となる。
以下、本発明のファームウエア更新回路及びファームウエア更新方法の実施の形態に関して、添付図面を参照して説明する。
図1は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の構成を示すブロック図である。コンピュータ装置1は、制御装置2、ファームウエア更新回路1a及びフラッシュメモリ3を具備する。ファームウエア更新回路1aは、制御装置2及びフラッシュメモリ3に通信可能に接続され、アドレス反転回路4、アドレス識別フラグ回路5、タイムアウト監視回路6及び更新フラグ回路15を備える。
コンピュータ装置1はLAN14で外部のPC(Personal Computer)12と接続されている。PC12内に持つ更新用ファームウェア13は制御装置2を介してフラッシュメモリ3に書き込まれる。
制御装置2は、CPU(Central Processing Unit)に例示される、演算処理部である。ファームウエア更新回路1a内の各回路及びフラッシュメモリ3の動作を制御する。制御装置2は、フラッシュメモリ3と接続され、ライトイネーブル信号9とアドレス信号10とデータ信号11をフラッシュメモリ3へ向けて出力する。また、フラッシュメモリ3からデータ信号11を受け取る。
フラッシュメモリ3は、ファームウェアを構成するブートローダ7とメインプログラム8とを格納している。フラッシュメモリ3は、制御装置2から出力されるライトイネーブル信号9に応答して、データ信号11をアドレス信号10の示す領域に記憶する。又は、制御装置2から出力されるアドレス信号10の示す領域のデータを、データ信号11として制御装置2へ出力する。フラッシュメモリ3は、不揮発性であれば、他の種類のメモリでも良い。
アドレス反転回路4は、ライトイネーブル信号9とアドレス識別フラグ回路5からのアドレス識別フラグ5aとを供給される。そして、それらの値からアドレス信号10をそのままフラッシュメモリ3へ送るか、アドレス信号10を反転してフラッシュメモリ3へ送るかを判定して、アドレス信号10及びアドレス信号10を反転したアドレス信号のいずれか一方を示す入力アドレス信号10aをフラッシュメモリ3へ送信する。
フラッシュメモリ3へのライトを行う場合、制御装置2は、ライトイネーブル信号9=「1」(HIGH状態)とし、アドレス信号10とデータ信号11とをフラッシュメモリ3へ出力する。この場合、アドレス信号10はフラッシュメモリ3内のライトの番地を示す。データ信号11はフラッシュメモリ3へのライトデータを示す。アドレス信号10はアドレス反転回路4へ供給される。アドレス反転回路4は、ライトイネーブル信号9とアドレス識別フラグ回路5からのアドレス識別フラグ5aとを供給され、それらに基づいて、入力アドレス信号10aをフラッシュメモリ3へ出力する。フラッシュメモリ3は、ライトイネーブル信号9に応答して、アドレス反転回路4から出力された入力アドレス信号10aに示すフラッシュメモリ3内の領域にデータ信号11を格納する。
フラッシュメモリ3へのリードを行う場合、制御装置2は、ライトイネーブル信号9=「0」(LOW状態)とし、アドレス信号10をフラッシュメモリ3へ出力する。この場合、アドレス信号10はフラッシュメモリ3内のリードの番地を示す。アドレス信号10はアドレス反転回路4へ供給される。アドレス反転回路4は、LOW状態のライトイネーブル信号9とアドレス識別フラグ回路5からのアドレス識別フラグ5aとを供給され、それらに基づいて、入力アドレス信号10aをフラッシュメモリ3へ出力する。フラッシュメモリ3は、LOW状態のライトイネーブル信号9に応答して、アドレス反転回路4から出力された入力アドレス信号10aに示すフラッシュメモリ3内の領域のデータ信号11を出力する。データ信号11はフラッシュメモリ3からのリードデータを示す。
タイムアウト監視回路6は、制御装置2及びアドレス識別フラグ回路5に接続されている。タイムアウトを検知して、アドレス識別フラグ回路5から出力されるアドレス識別フラグaの反転制御、及び制御装置2のリセットを行う。タイムアウト監視回路6は、カウンタで構成され、制御装置2が発行するセット指示をトリガとしてカウントを開始する。タイムアウト監視回路6には、通常、ファームウェア更新にかかる時間を越えた時間がタイムアウト時間として設定されている。そして、タイムアウトを検出すると、アドレス識別フラグ5aの値を反転し、制御装置2のリセットを行う。
更新フラグ回路15は、制御装置2と接続され、更新フラグ15aを格納した不揮発性レジスタから成る。更新フラグ15aは、値が「1」の時、ファームウェア更新中であることを示す。そのとき、制御装置2にリセットがかかると、制御装置2は、フラッシュメモリ3内のブートローダ7をリードする。更新フラグ15aは、値が「0」の時、通常動作中であることを示す。制御装置2にリセットがかかると、制御装置2は、フラッシュメモリ3内のメインプログラムをリードする。この更新フラグ15aは、フラッシュメモリ3内の最下位アドレスのデータを用いても良い。
アドレス識別フラグ回路5は、タイムアウト監視回路6及びアドレス反転回路4に接続され、アドレス識別フラグ5aを格納した不揮発性レジスタ1ビットから成る。アドレス識別フラグ5aは、値が「1」の時、アドレス反転回路4において、リード時のアドレスが反転され、ライト時のアドレスは反転されない。アドレス識別フラグ5aは、値が「0」の時、ライト時のアドレスが反転され、リード時のアドレスは反転されない。
なお、本実施の形態では、説明の簡単化のため、フラッシュメモリ3へのライトはファームウェア更新時のみとしている。また、フラッシュメモリ3の制御信号に関して、一般的なフラッシュメモリには、チップイネーブル信号及びライトイネーブル信号でリード及びライトを選択するが、本実施の形態では、説明の簡単化のため、ライトイネーブル=1(HIGH状態)の時をライト、ライトイネーブル=0(LOW状態)の時をリードとしている。
次に、アドレス反転回路4について詳細に説明する。アドレス反転回路4は、たとえばインバータとセレクタの組合せで実現できる。図2は、本発明のファームウエア更新回路の実施の形態におけるアドレス反転回路4の構成例を示すブロック図である。
アドレス反転回路4は、アドレス信号線1本ごとに、インバータ40、AND回路41〜44およびOR回路45を備える。AND回路41〜44およびOR回路45は、セレクタのような集合回路を用いても良い。ここでは、アドレス信号(0)100〜アドレス信号(3)103の4ビットの信号線に対応するアドレス反転回路4の例を示している。すなわち、アドレス反転回路4に入力されるアドレス信号10は、アドレス信号(0)100〜アドレス信号(3)103である。一方、アドレス反転回路4から出力される入力アドレス信号10aは、アドレス信号(0)104〜アドレス信号(3)107である。
なお、アドレス信号線の数は、この数(4)に限定されるものではなく、更に多くても良い。例えば、アドレス信号線の数は、フラッシュメモリ3のアドレス信号線数に対応して決定される。
アドレス反転回路4は、各アドレス信号線について同様なので、ここでは、アドレス信号(0)用の回路について説明する。インバータ40は、アドレス信号(0)100の出力レベルを反転させる。アドレス信号(0)100がHIGHの時、LOWを出力し、アドレス信号(0)100がLOWの時、HIGHを出力する。AND回路41は、ライトイネーブル信号9がLOW且つアドレス識別フラグ5aがLOWの時、アドレス信号(0)100の値を出力する。ライトイネーブル信号9とアドレス識別フラグ5aがそれ以外の時、LOWを出力する。AND回路42は、ライトイネーブル信号9がLOW且つアドレス識別フラグ5aがHIGHの時、アドレス信号(0)100の反転した値を出力する。ライトイネーブル信号9とアドレス識別フラグ5aがそれ以外の時、LOWを出力する。AND回路43は、ライトイネーブル信号9がHIGH且つアドレス識別フラグ5aがLOWの時、アドレス信号(0)100の反転した値を出力する。ライトイネーブル信号9とアドレス識別フラグ5aがそれ以外の時、LOWを出力する。AND回路44は、ライトイネーブル信号9がHIGH且つアドレス識別フラグ5aがHIGHの時、アドレス信号(0)100の値を出力する。ライトイネーブル信号9とアドレス識別フラグ5aがそれ以外の時、LOWを出力する。OR回路45は、AND回路41、AND回路42、AND回路43およびAND回路44の出力の論理和を入力アドレス信号(0)104として出力する。AND回路41〜44のいずれかがHIGHの時、HIGHを出力し、全てがLOWの時、LOWを出力する。アドレス信号(1)101〜アドレス信号(3)103は、アドレス信号(0)100と同等の回路で接続され、それぞれ、入力アドレス信号(1)105、入力アドレス信号(2)106、入力アドレス信号(3)107を出力する。
図3A及び図3Bは、図2に示すアドレス反転回路4の真理値表である。入力信号は、アドレス信号(0)100、アドレス信号(1)101、アドレス信号(2)102、アドレス信号(3)103、ライトイネーブル信号9およびアドレス識別フラグ5aであり、対応する出力信号が、入力アドレス信号(0)104、入力アドレス信号(1)105、入力アドレス信号(2)106および入力アドレス信号(3)107である。真理値表中の「0」は信号線がLOWレベルであることを示し、「1」は信号線がHIGHレベルであることを示す。
次に、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作(本発明のファームウエア更新方法の実施の形態)について図4〜図6を参照して説明する。図4は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作を示すフローチャートである。図5、図6は、各動作におけるフラッシュメモリ3の状態を示す概念図である。
制御装置2は、ファームウェア更新開始時、更新フラグ15aを値「1」にセットし、セルフリセットをかける(ステップS1)。制御装置2は、リセットが解除されると、アドレス識別フラグ5aの値により、ブートローダAもしくはブートローダBのどちらをリードするか判断を行う(ステップS2)。
ステップS2において、アドレス識別フラグ5aの値が「0」の時、ブートローダAをリードする(ステップS03)。制御装置2は、アドレス信号10をフラッシュメモリ3へ向けて出力する。アドレス反転回路4は、アドレス識別フラグ5aの値が「0」なので、リード時(ライトイネーブル信号9:LOW)のアドレス信号10を反転しない(アドレス反転無効)。アドレス反転回路4は、アドレス信号10をそのまま入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレス0番地からデータを出力する。すなわち、制御装置2は、アドレス0番地からリードを行う。
図5(a)を参照して、この図は、ステップS3、すなわち、ファームウエア更新前におけるフラッシュメモリ3の状態を示している。右縦軸上はアドレス(16進法表示)を示している。ファームウエア更新前、フラッシュメモリ3は、アドレス0〜1番地にブートローダAを、アドレス2〜F番地にメインプログラムをそれぞれ格納している。制御装置2は、ステップS3において、アドレス0〜1番地のブートローダAをリードする。同時に、制御装置2は、タイムアウト監視回路6へセット指示を発行する。タイムアウト監視回路6は、カウントを開始する。
図4を参照して、制御装置2は、ブートローダAを起動し、フラッシュメモリ3へのメインプログラムのライトを実行する(ステップS4)。制御装置2は、アドレス信号10、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ向けて出力する。データ信号11は、更新用ファームウエア13である。アドレス反転回路4は、アドレス識別フラグ5aの値が「0」なので、ライト時(ライトイネーブル信号9:HIGH)のアドレス信号10を反転する(アドレス反転有効)。アドレス反転回路4は、アドレス信号10を反転して入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレスF番地からデータ信号11のライトを行う。
制御装置2は、メインプログラムのライトが正常終了したかどうか判断を行う(ステップS5)。制御装置2は、正常終了と判断した場合(ステップS5:Yes)、アドレス識別フラグ5aの値を「1」にセットする(ステップS6)。その後、制御装置2は、更新フラグ15aをリセットする(ステップS7)。制御装置2は、セルフリセットされ、新しいファームウェアのメインプログラムをリードして、通常処理を起動する。
図5(b)を参照して、この図は、ステップS4においてメインプログラムのライトが正常終了した場合におけるフラッシュメモリ3の状態を示している。右縦軸上はアドレス(16進法表示)を示している。メインプログラムのライトの正常終了後、フラッシュメモリ3は、アドレスF〜E番地にブートローダBを、アドレスD〜0番地にメインプログラムをそれぞれ格納する。制御装置2は、ステップS7の後、新しいファームウェアのメインプログラムをアドレスD〜0番地からリードする。
ステップS2において、アドレス識別フラグ5aの値が「1」の時、ブートローダBをリードする(ステップS8)。制御装置2は、アドレス信号10をフラッシュメモリ3へ向けて出力する。アドレス反転回路4は、アドレス識別フラグ5aの値が「1」なので、リード時(ライトイネーブル信号9:LOW)のアドレス信号10を反転する(アドレス反転有効)。アドレス反転回路4は、アドレス信号10を反転して入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレスF番地からデータを出力する。すなわち、制御装置2は、アドレスF番地からリードを行う。
図6(a)を参照して、この図は、ステップS8、すなわち、ファームウエア更新前におけるフラッシュメモリ3の状態を示している。右縦軸上はアドレス(16進法表示)を示している。ファームウエア更新前、フラッシュメモリ3は、アドレスF〜E番地にブートローダBを、アドレスD〜0番地にメインプログラムをそれぞれ格納している。制御装置2は、ステップS8において、アドレスF〜E番地のブートローダBをリードする。同時に、制御装置2は、タイムアウト監視回路6へセット指示を発行する。タイムアウト監視回路6は、カウントを開始する。
図4を参照して、制御装置2は、ブートローダBを起動し、フラッシュメモリ3へのメインプログラムのライトを実行する(ステップS9)。制御装置2は、アドレス信号10、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ向けて出力する。データ信号11は、更新用ファームウエア13である。アドレス反転回路4は、アドレス識別フラグ5aの値が「1」なので、ライト時(ライトイネーブル信号9:HIGH)のアドレス信号10を反転しない(アドレス反転無効)。アドレス反転回路4は、アドレス信号10をそのまま入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレス0番地からデータ信号11のライトを行う。
制御装置2は、メインプログラムのライトが正常終了したかどうか判断を行う(ステップS10)。制御装置2は、正常終了と判断した場合(ステップS10:Yes)、アドレス識別フラグ5aの値をリセットして「0」にする(ステップS11)。その後、制御装置2は、更新フラグ15aをリセットする(ステップS12)。制御装置2は、セルフリセットされ、新しいファームウェアのメインプログラムをリードして、通常処理を起動する。
図6(b)を参照して、この図は、ステップS9においてメインプログラムのライトが正常終了した場合におけるフラッシュメモリ3の状態を示している。右縦軸上はアドレス(16進法表示)を示している。メインプログラムのライトの正常終了後、フラッシュメモリ3は、アドレス0〜1番地にブートローダBを、アドレス2〜F番地にメインプログラムをそれぞれ格納する。制御装置2は、ステップS12の後、新しいファームウェアのメインプログラムをアドレス2〜F番地からリードする。
このように、ファームウェアの更新のたびに、アドレス識別フラグの値が「0」から「1」、又は「1」から「0」へと遷移する。すなわち、ブートローダAが有効な場合、新しいファームウェアは有効ブートローダと反対側のアドレスF番地からライトされ、ブートローダBが有効な場合、新しいファームウェアは有効ブートローダと反対側のアドレス0番地からライトされる。
図4を参照して、ステップS5において、タイムアウト監視回路6がタイムアウトを検出した場合(ステップS13)、制御装置2は、異常終了と判断する(ステップS5:No)。本実施の形態では、タイムアウト監視回路6がタイムアウトを検出する前に、制御装置2からのリセット指示でカウンタがリセットされることで、正常終了したと判断する。ただし、フラッシュメモリ3のチェックサム照合を行い、正常終了を判断しても構わない。タイムアウト監視回路6は、タイムアウトを検出すると、アドレス識別フラグ5aの値を「1」に反転し(ステップS14)、後述する異常処理Bの動作を行う。
ステップS10において、タイムアウト監視回路6がタイムアウトを検出すると、制御装置2は、異常終了と判断する(ステップS15)。タイムアウト監視回路6は、タイムアウトを検出すると、アドレス識別フラグ5aの値を「0」に反転し(ステップS16)、後述の異常処理Aの動作を行う。
次に、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作(本発明のファームウエア更新方法の実施の形態)における異常発生時の動作について説明する。図7は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作における異常発生時の動作を示すフローチャートである。図8、図9は、異常発生時におけるフラッシュメモリ3の状態を示す概念図である。
異常処理Aにおいて、ファームウェア更新中なので更新フラグ15aの値は「1」であり、アドレス識別フラグ5aの値は「0」である。ファームウェア更新中に電源断やネットワーク障害等の障害が発生し、ファームウェアライト処理が途中で止まってしまった場合を想定する。図8は、そのフラッシュメモリ3の状態を示している。
図8(a)、(b)及び(c)は、それぞれ異常終了case4、異常終了case5及び異常終了case6を示す。異常終了case4は、ライト処理初期段階で障害が発生したケースを示し、図6(b)(正常終了case)と比較して、ブートローダAのライトの途中で処理が停止している。異常終了case5は、ライト処理中期段階で障害が発生したケースを示し、図6(b)と比較して、ブートローダAのライトは完了し、メインプログラムのライトの途中で処理が停止している。異常終了case6は、ライト処理後期段階で障害が発生したケースを示し、図6(b)と比較して、ブートローダAのライトは完了し、メインプログラムのライトの途中且つブートローダBを書き潰している段階で処理が停止している。異常終了case4は、ブートローダBのみ有効。異常終了case5は、ブートローダAとブートローダBが共に有効。異常終了case6は、ブートローダAのみ有効という状態である。
図7を参照して、異常処理Aにおいて、タイムアウト監視回路6は、制御装置2をリセットする(ステップS17)。制御装置2は、リセットが解除されると、アドレス識別フラグ5aの値が「0」の時、ブートローダAをリードする(ステップS18)。制御装置2は、アドレス信号10をフラッシュメモリ3へ向けて出力する。アドレス反転回路4は、アドレス識別フラグ5aの値が「0」なので、リード時(ライトイネーブル信号9:LOW)のアドレス信号10を反転しない(アドレス反転無効)。アドレス反転回路4は、アドレス信号10をそのまま入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレス0番地からデータを出力する。すなわち、制御装置2は、アドレス0番地からリードを行う。同時に、制御装置2は、タイムアウト監視回路6へセット指示を発行する。タイムアウト監視回路6は、カウントを開始する。
制御装置2は、ブートローダAを起動し、フラッシュメモリ3へのメインプログラムのライトを実行する(ステップSS19)。アドレス反転が有効となり、アドレスF番地からライトを行う。制御装置2は、アドレス信号10、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ向けて出力する。データ信号11は、更新用ファームウエア13である。アドレス反転回路4は、アドレス識別フラグ5aの値が「0」なので、ライト時(ライトイネーブル信号9:HIGH)のアドレス信号10を反転する(アドレス反転有効)。アドレス反転回路4は、アドレス信号10を反転して入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレスF番地からデータ信号11のライトを行う。
制御装置2は、メインプログラムのライトが正常終了したかどうか判断を行う(ステップS20)。制御装置2は、正常終了と判断した場合(ステップS20:Yes)、アドレス識別フラグ5aの値を「1」にセットする(ステップS21)。その後、制御装置2は、更新フラグ15aをリセットする(ステップS22)。制御装置2は、セルフリセットされ、新しいファームウェアのメインプログラムをリードして、通常処理を起動する。
一方、異常処理Bにおいて、ファームウェア更新中なので更新フラグ15aの値は「1」であり、アドレス識別フラグ5aの値は「1」である。ファームウェア更新中に電源断やネットワーク障害等の障害が発生し、ファームウェアライト処理が途中で止まってしまった場合を想定する。図9は、そのフラッシュメモリ3の状態を示している。
図9(a)、(b)及び(c)は、それぞれ異常終了case1、異常終了case2及び異常終了case3を示す。異常終了case1は、ライト処理初期段階で障害が発生したケースを示し、図5(b)(正常終了case)と比較して、ブートローダBのライトの途中で処理が停止している。異常終了case2は、ライト処理中期段階で障害が発生したケースを示し、図5(b)と比較して、ブートローダBのライトは完了し、メインプログラムのライトの途中で処理が停止している。異常終了case3は、ライト処理後期段階で障害が発生したケースを示し、図5(b)と比較して、ブートローダBのライトは完了し、メインプログラムのライトの途中且つブートローダAを書き潰している段階で処理が停止している。異常終了case1は、ブートローダAのみ有効。異常終了case2は、ブートローダAとブートローダBが共に有効。異常終了case3は、ブートローダBのみ有効という状態である。
図7を参照して、異常処理Bにおいて、タイムアウト監視回路6は、制御装置2をリセットする(ステップS23)。制御装置2は、リセットが解除されると、アドレス識別フラグ5aの値が「1」の時、ブートローダBをリードする(ステップS24)。制御装置2は、アドレス信号10をフラッシュメモリ3へ向けて出力する。アドレス反転回路4は、アドレス識別フラグ5aの値が「1」なので、リード時(ライトイネーブル信号9:LOW)のアドレス信号10を反転する(アドレス反転有効)。アドレス反転回路4は、アドレス信号10を反転して入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレスF番地からデータを出力する。すなわち、制御装置2は、アドレスF番地からリードを行う。同時に、制御装置2は、タイムアウト監視回路6へセット指示を発行する。タイムアウト監視回路6は、カウントを開始する。
制御装置2は、ブートローダBを起動し、フラッシュメモリ3へのメインプログラムのライトを実行する(ステップS25)。制御装置2は、アドレス信号10、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ向けて出力する。データ信号11は、更新用ファームウエア13である。アドレス反転回路4は、アドレス識別フラグ5aの値が「1」なので、ライト時(ライトイネーブル信号9:HIGH)のアドレス信号10を反転しない(アドレス反転無効)。アドレス反転回路4は、アドレス信号10をそのまま入力アドレス信号10aとして出力する。したがって、フラッシュメモリ3は、入力アドレス信号10aに基づいて、アドレス0番地からデータ信号11のライトを行う。
制御装置2は、メインプログラムのライトが正常終了したかどうか判断を行う(ステップS26)。制御装置2は、正常終了と判断した場合(ステップS26:Yes)、アドレス識別フラグ5aの値をリセットして「0」にする(ステップS27)。その後、制御装置2は、更新フラグ15aをリセットする(ステップS28)。制御装置2は、セルフリセットされ、新しいファームウェアのメインプログラムをリードして、通常処理を起動する。
異常終了case1では、ブートローダBが無効であるため、異常処理Bが動いても、ブートローダBの読み出しに失敗する(ステップS26:No)。この時、タイムアウト監視回路6が再びタイムアウトを検出し(ステップS31)、アドレス識別フラグ5aを再反転する(ステップS32)。その後、異常処理A(ステップS17〜S22)を実行する。
同様に、異常処理case4では、ブートローダAが無効であるため、異常処理Aが動いても、ブートローダAの読み出しに失敗する(ステップS20:No)。この時、タイムアウト監視回路6が再びタイムアウトを検出し(ステップS29)、アドレス識別フラグ5aを再反転する(ステップS30)。その後、異常処理B(ステップS23〜S28)を実行する。
タイムアウト検出(異常終了case)のとき、アドレス識別フラグ5aを反転させ、異常処理Aと異常処理Bとを交互に行うのは、図8及び図9に示したように、異常終了caseではブロードローダA、Bのいずれが有効であるかが不明だからである。
本実施の形態では、ファームウェアの更新が正常終了するまで、繰り返しファームウェア更新処理が行われるが、タイムアウト監視回路6のタイムアウト検出回数をカウントして、任意に設定可能な規定回数に達したら、フラッシュメモリ3自体の故障と判断し、ファームウェア更新処理を強制終了させても良い。
本発明において、このように異常処理Aと異常処理Bとを交互に実行すれば、ファームウエアの更新を行うことができる。これにより、ファームウェア更新時に電源断などの障害が発生した場合でも、フラッシュメモリ(不揮発性メモリ)を交換することなく、ファームウェアに関するデータをオンボードで書き換えることが可能となる。加えて、フラッシュメモリ中にブートローダ(A、B)を格納するローダ領域を固定的に確保することなく、上記オンボードでの書き換えを実行することができる。これらは、冗長なフラッシュメモリ(不揮発性メモリ)を用いることなく実行することができる。
次に、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作(本発明のファームウエア更新方法の実施の形態)の実施例について図10〜図11を参照して説明する。図10、図11は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作を示すタイミングチャートである。図10は、正常に行われる場合を示す。図11は、異常終了case2が発生した場合を示す。
(A)ファームウエア更新処理が正常に行われる場合
図10を参照すると、クロック300は、コンピュータ装置1内のクロック信号を示す。時間は、本実施例の説明のための時間の経過を表し、クロック300の1クロックごとに1加算される。
T0において、ファームウェア更新処理が開始される。制御装置2は、更新フラグ回路15へセット指示を発行する。
T1において、更新フラグ15aが1にセットされる(ステップS1)。制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=0(16進法表示:HEX)を発行する。アドレス識別フラグ5aが「0」であるため(ステップS2:Yes)、アドレス反転回路4は、アドレス信号10そのままの入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=0(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ0番地のデータL0をデータ信号11としてリードする。タイムアウト監視回路6はカウントを開始する。
T2において、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=1(HEX)を発行する。アドレス識別フラグ5aが「0」であるため、アドレス反転回路4は、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=1(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ1番地のデータL1をデータ信号11としてリードする。タイムアウト監視回路6のカウンタ値が「01」になる。ブートローダAのリードが完了する(ステップS3)。
T3において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=0(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、アドレス信号10を反転した入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=F(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリF番地にデータ信号11のデータL0をライトする。タイムアウト監視回路6のカウンタ値が「02」になる。
T4において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=1(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=E(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリE番地にデータ信号11のデータL1をライトする。タイムアウト監視回路6のカウンタ値が「03」になる。
T5において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=2(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=D(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリD番地にデータ信号11のデータM2をライトする。タイムアウト監視回路6のカウンタ値が「04」になる。
T6において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=3(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=C(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリC番地にデータ信号11のデータM3をライトする。タイムアウト監視回路6のカウンタ値が「05」になる。
T7において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=4(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=B(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリB番地にデータ信号11のデータM4をライトする。タイムアウト監視回路6のカウンタ値が「06」になる。
T8において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=5(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=A(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリA番地にデータ信号11のデータM5をライトする。タイムアウト監視回路6のカウンタ値が「07」になる。
T9において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=6(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=9(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ9番地にデータ信号11のデータM6をライトする。タイムアウト監視回路6のカウンタ値が「08」になる。
T10において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=7(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=8(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ8番地にデータ信号11のデータM7をライトする。タイムアウト監視回路6のカウンタ値が「09」になる。
T11において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=8(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=7(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ7番地にデータ信号11のデータM8をライトする。タイムアウト監視回路6のカウンタ値が「0A」になる。
T12において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=9(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=6(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ6番地にデータ信号11のデータM9をライトする。タイムアウト監視回路6のカウンタ値が「0B」になる。
T13において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=A(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=5(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ5番地にデータ信号11のデータMAをライトする。タイムアウト監視回路6のカウンタ値が「0C」になる。
T14において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=B(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=4(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ4番地にデータ信号11のデータMBをライトする。タイムアウト監視回路6のカウンタ値が「0D」になる。
T15において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=C(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=3(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ3番地にデータ信号11のデータMCをライトする。タイムアウト監視回路6のカウンタ値が「0E」になる。
T16において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=D(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=2(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ2番地にデータ信号11のデータMDをライトする。タイムアウト監視回路6のカウンタ値が「0F」になる。
T17において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=E(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=1(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ1番地にデータ信号11のデータMEがライトをライトする。タイムアウト監視回路6のカウンタ値が「10」になる。
T18において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=F(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「0」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=0(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ1番地にデータ信号11のデータMFをライトする。タイムアウト監視回路6のカウンタ値が「11」になる。全データのライトが完了する(ステップS04)。
完了により、制御装置2は、アドレス識別フラグ回路5へセット指示を発行する。制御装置2は、更新フラグ回路15へリセット指示を発行する。制御装置2は、タイムアウト監視回路6へリセット指示を発行する。
T19において、アドレス識別フラグ5aが「1」にセットされる(ステップS6)。更新フラグ15aが「0」にリセットされる(ステップS07)。タイムアウト監視回路6が「00」にリセットされる。制御装置2は、セルフリセットがかかり、更新フラグ15aが「0」であることにより、新しいファームウェアのメインプログラムがリードされ、通常処理が起動する。
(B)ファームウエア更新処理において異常終了case2が発生した場合
図11を参照すると、クロック300はコンピュータ装置1内のクロック信号を示す。時間は、本実施例の説明のための時間の経過を表し、クロック300の1クロックごとに1加算される。ただし、T0〜T8までは図10の正常終了時と同一であるため、それらの説明は省略する。
T9において、電源断障害が発生する。タイムアウト監視回路6は障害のあった電源と別電源で動作する回路で、障害発生後もカウントを続ける。タイムアウト監視回路6のカウンタ値が「08」になる。
T10、T11、T12、T13、T14、T15、T16、T17、T18、及びT19において、タイムアウト監視回路6のカウンタ値は、それぞれ「09」、「0A」、「0B」、「0C」、「0D」、「0E」、「0F」、「10」、「11」、及び「12」になる。
T20において、タイムアウト監視回路6は、カウンタ値が「13」になり、タイムアウトを検出する(ステップS5:No、ステップS13)。本実施例では、タイムアウト監視回路6のカウント値が「11」で正常終了するため、それを越えるカウンタ値「13」をタイムアウト値とした。タイムアウト監視回路6は、アドレス識別フラグ回路5へセット指示を発行する。アドレス識別フラグ回路5は、アドレス識別フラグ5aを「1」にする(ステップS14)。また、タイムアウト監視回路6は、制御装置2へリセット指示を発行する。制御装置2は、セルフリセットされる(ステップS23)。
T21において、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=0(HEX)を発行する。アドレス識別フラグ5aが「1」であるため、アドレス反転回路4は、アドレス信号10を反転した入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=F(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリF番地のデータL0をデータ信号11としてリードする。タイムアウト監視回路6はカウントを開始する。
T22において、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=1(HEX)を発行する。アドレス識別フラグ5aが「1」であるため、アドレス反転回路4は、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=E(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリE番地のデータL1をデータ信号11としてリードする。タイムアウト監視回路6のカウンタ値が「01」になる。ブートローダBのリードが完了する(ステップS24)。
T23において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=0(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、アドレス信号10そのままの入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=0(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ0番地にデータ信号11のデータL0をライトする。タイムアウト監視回路6のカウンタ値が「02」になる。
T24において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=1(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=1(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ1番地にデータ信号11のデータL1をライトする。タイムアウト監視回路6のカウンタ値が「03」になる。
T25において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=2(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=2(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ2番地にデータ信号11のデータM2をライトする。タイムアウト監視回路6のカウンタ値が「04」になる。
T26において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=3(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=3(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ3番地にデータ信号11のデータM3をライトする。タイムアウト監視回路6のカウンタ値が「05」になる。
T27において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=4(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=4(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ4番地にデータ信号11のデータM4をライトする。タイムアウト監視回路6のカウンタ値が「06」になる。
T28において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=5(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=5(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ5番地にデータ信号11のデータM5をライトする。タイムアウト監視回路6のカウンタ値が「07」になる。
T29において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=6(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=6(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ6番地にデータ信号11のデータM6をライトする。タイムアウト監視回路6のカウンタ値が「08」になる。
T30において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=7(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=7(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ7番地にデータ信号11のデータM7をライトする。タイムアウト監視回路6のカウンタ値が「09」になる。
T31において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=8(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=8(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ8番地にデータ信号11のデータM8をライトする。タイムアウト監視回路6のカウンタ値が「0A」になる。
T32において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=9(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=9(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリ9番地にデータ信号11のデータM9をライトする。タイムアウト監視回路6のカウンタ値が「0B」になる。
T33において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=A(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=A(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリA番地にデータ信号11のデータMAをライトする。タイムアウト監視回路6のカウンタ値が「0C」になる。
T34において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=B(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=B(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリB番地にデータ信号11のデータMBをライトする。タイムアウト監視回路6のカウンタ値が「0D」になる。
T35において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=C(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=C(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリC番地にデータ信号11のデータMCをライトする。タイムアウト監視回路6のカウンタ値が「0E」になる。
T36において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=D(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=D(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリD番地にデータ信号11のデータMDをライトする。タイムアウト監視回路6のカウンタ値が「0F」になる。
T37において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=E(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=E(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリE番地にデータ信号11のデータMEをライトする。タイムアウト監視回路6のカウンタ値が「10」になる。
T38において、制御装置2は、ライトイネーブル信号9及びデータ信号11をフラッシュメモリ3へ出力する。同時に、制御装置2は、アドレス信号10(アドレス(0)100〜アドレス(3)103)=F(HEX)を発行する。アドレス反転回路4は、アドレス識別フラグ5aが「1」であるため、入力アドレス信号10a(アドレス(0)104〜アドレス(3)107)=F(HEX)をフラッシュメモリ3へ出力する。それにより、制御装置2は、フラッシュメモリF番地にデータ信号11のデータMFをライトする。タイムアウト監視回路6のカウンタ値が「11」になる。全データのライトが完了する(ステップS25)。
完了により、制御装置2は、アドレス識別フラグ回路5へセット指示を発行する。制御装置2は、更新フラグ回路15へリセット指示を発行する。制御装置2は、タイムアウト監視回路6へリセット指示を発行する。
T39において、アドレス識別フラグ5aが「0」にリセットされる(ステップS27)。更新フラグ15aが「0」にリセットされる(ステップS28)。タイムアウト監視回路6が「00」にリセットされる。制御装置2は、セルフリセットがかかり、更新フラグ15aが「0」であることにより、新しいファームウェアのメインプログラムがリードされ、通常処理が起動する。
本発明では、フラッシュメモリ内のブートローダを更新するとき、新たなブートローダを、既存のブートローダとは別の領域に書き込むことで、フラッシュメモリ内に必ず一つ以上の有効なブートローダが残るようにすることができる。それにより、ファームウェア更新中に障害が発生しても、障害発生のタイミングに依存することなく、有効なブートローダを用いてファームウェア更新を再実行することが可能となる。
本発明では、高価なLSI等でない簡単な論理ゲートICの追加のみで本発明のファームウエア更新回路を実現することができる。それにより、フラッシュメモリ内のファームウエア更新の信頼性を向上させることが可能となる。本発明では、一般的にフラッシュメモリの二重化で実現しているのと同等の信頼性を、上記のような少ないハードウェアで実現できており、低コストで高い信頼性を実現することが可能となる。
本発明では、タイムアウト監視回路を設けたことでファームウェア更新の成功もしくは失敗を自動的に判別することが可能である。それにより、ファームウェア更新の際に正常終了確認のための人手介入が不要、すなわち、自動で行うことができる。
本発明では、ブートローダのサイズを意識することなく、ファームウェア技術者がファームウェアを設計することが可能である。一般にブートローダが固定で且つフラッシュメモリの領域を大きく占有するような場合、ファームウェア技術者に設計上の制限を強いることになる。しかし、本発明では、ファームウェアのレビジョンアップに伴い、ブートローダやメインプログラムのサイズを可変にすることができるため、ファームウェア設計者は、設計時にサイズの制限を受けず、自由に設計出来る。また、アドレスの反転に関してはファームウェア設計者は全く意識する必要がない。
本発明では、ファームウェア更新時に、一時的にブートローダを格納する領域が複数に見えるものの、ファームウェア更新終了時は一つになる。したがって、ブートローダを格納する領域がメインプログラムを格納する領域を圧迫することはない。また、ファームウェア更新時に、外部スイッチによる切替を行っておらず、システム運用者はファームウェア更新時に書き換え成功/失敗を意識せずに運用が可能である。
本発明では、ファームウェア更新時には、ファームウェア運用時とは逆の反転したアドレスを用いて、一時的に、不揮発性メモリのトップ(アドレス)及びボトム(アドレス)のうちの少なくとも一方に有効なブートローダを残すことができる。その有効なブートローダを用いることで、ファームウェアの更新を再実行することができる。また、ファームウェアの更新終了後は、通常の状態に戻り、従来と同様にファームウェアの運用を行うことができる。
本発明では、ブートローダを退避させる等のシーケンスは不要であり、簡単なハードウェア回路を追加することだけで書き換え処理を行うことができる。この場合、書き換え者(プロセッサ等)にインテリジェンスを持たせる必要はない。
上記実施の形態では、アドレス反転回路4をインバータ、AND回路、OR回路で実現しているが、例えば、PLD(プログラマブルロジックデバイス)のような集積回路で実現しても良い。このPLDの電源をフラッシュメモリ3や制御装置2と分けることで、タイムアウト監視回路6のカウンタやアドレス識別フラグ回路5、更新フラグ回路15を全てPLD内にまとめることが出来る。
この場合、論理ゲートICの組み合わせでアドレス反転回路4、タイムアウト監視回路6、アドレス識別フラグ回路5及び更新フラグ回路15を実現する場合に比べて、部品点数を削減することができ、それにより故障率が削減され、信頼性が向上する。
本発明は、例えばサーバ装置のようにファームウェアを搭載するコンピュータ装置(情報処理装置)に適用できる。特に、サーバの絶対数が多くファームウェア更新処理を多数行う必要があるブレードサーバ装置に適用することが好適である。また、サーバ装置に限らず、不揮発性メモリにファームウェアを格納し、外部装置と接続してファームウェアの更新を行う機能を有する全ての情報処理装置に適用が可能である。
図1は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の構成を示すブロック図である。 図2は、本発明のファームウエア更新回路の実施の形態におけるアドレス反転回路の構成例を示すブロック図である。 図3Aは、図2に示すアドレス反転回路の真理値表である。 図3Bは、図2に示すアドレス反転回路の真理値表である。 図4は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作を示すフローチャートである。 図5は、各動作におけるフラッシュメモリの状態を示す概念図である。 図6は、各動作におけるフラッシュメモリの状態を示す概念図である。 図7は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作における異常発生時の動作を示すフローチャートである。 図8は、異常発生時におけるフラッシュメモリの状態を示す概念図である。 図9は、異常発生時におけるフラッシュメモリの状態を示す概念図である。 図10は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作を示すタイミングチャートである。 図11は、本発明のファームウエア更新回路を適用したコンピュータ装置の実施の形態の動作を示すタイミングチャートである。
符号の説明
1 コンピュータ装置
1a ファームウエア更新回路
2 制御装置
3 フラッシュメモリ
4 アドレス反転回路
5 アドレス識別フラグ回路
5a アドレス識別フラグ
6 タイムアウト監視回路
7 ブートローダ
8 メインプログラム
10 アドレス信号
10a 入力アドレス信号
11 データ信号
12 PC(Personal Computer)
13 更新用ファームウェア
14 LAN
15 更新フラグ回路
15a 更新フラグ
40 インバータ
41〜44 AND回路
45 OR回路
100、104 アドレス信号(0)
101、105 アドレス信号(1)
102、106 アドレス信号(2)
103、107 アドレス信号(3)

Claims (9)

  1. 不揮発性メモリに格納されたブートローダ及びメインプログラムを更新するためのファームウェア更新回路であって、
    前記不揮発性メモリにおける前記ブートローダのアドレスに対応する識別データを格納する識別部と、
    制御装置が前記ブートローダ及び前記メインプログラムの更新を実行するとき、前記識別データに基づいて、前記制御装置が前記不揮発性メモリから読み出す前記ブートローダの読出し用のアドレスについて反転及び非反転のいずれか一方を行い、前記制御装置が前記不揮発性メモリに書き込む前記更新用のブートローダの書込み用のアドレスについて他方を行うアドレス反転部と
    を具備し、
    前記ブートローダは、
    前記メインプログラム及び前記ブートローダを更新するためのプログラムであり、
    前記更新のとき、
    前記制御装置に前記読み出し用のアドレスに基づいて前記不揮発性メモリから読み出され、
    前記更新用のブートローダ及び前記更新用のメインプログラムをこの順で前記不揮発性メモリの前記書込み用のアドレスから書き込み、
    前記不揮発性メモリの格納領域において、前記ブートローダは一方の端部側、前記更新用のブートローダは他方の端部側、及び前記更新用のメインプログラムは、前記更新用のブートローダの後側に格納される
    ファームウェア更新回路。
  2. 請求項に記載のファームウェア更新回路において、
    前記アドレス反転部は、
    前記識別データが第1状態の場合、前記読出し用のアドレスについて非反転を行い、
    前記書込み用のアドレスについて反転を行う
    ファームウェア更新回路。
  3. 請求項又はに記載のファームウェア更新回路において、
    前記アドレス反転部は、
    前記識別データが第2状態の場合、前記読出し用のアドレスについて反転を行い、前記書込み用のアドレスについて非反転を行う
    ファームウェア更新回路。
  4. 請求項1乃至のいずれか一方に記載のファームウェア更新回路において、
    前記更新のとき、当該更新に関するタイムアウトを監視する監視部を更に具備し、
    前記識別部は、前記監視部が前記タイムアウトを検出したとき、前記識別データを前記タイムアウト前の値から変更し、
    前記アドレス反転部は、変更された前記識別データに基づいて、前記読出し用のアドレス及び前記書込み用のアドレスの反転及び非反転について、それぞれ前記タイムアウト前のものから変更する
    ファームウェア更新回路。
  5. 制御装置と、
    ブートローダ及びメインプログラムを格納する不揮発性メモリと、
    前記制御装置と前記不揮発性メモリとに通信可能に接続され、請求項1乃至4のいずれか一項に記載されたファームウェア更新回路と
    を具備する
    情報処理装置。
  6. 不揮発性メモリに格納されたブートローダ及びメインプログラムを更新するためのファームウェア更新回路を用いたファームウェア更新方法であって、
    ここで、前記ファームウェア更新回路は、アドレス反転部を備え、
    (a)制御装置が前記ブートローダ及び前記メインプログラムの更新を実行するとき、前記アドレス反転部は、前記不揮発性メモリおける前記ブートローダのアドレスに対応する識別データに基づいて、前記制御装置が前記不揮発性メモリから読み出す前記ブートローダの読出し用のアドレスについて反転及び非反転のいずれか一方を行い、前記不揮発性メモリへ送信するステップと、
    (b)前記アドレス反転部は、前記識別データに基づいて、前記制御装置が前記不揮発性メモリに書き込む前記更新用のブートローダの書込み用のアドレスについて他方を行い前記不揮発性メモリへ送信するステップと
    を具備し、
    前記ブートローダは、
    前記メインプログラム及び前記ブートローダを更新するためのプログラムであり、
    前記更新のとき、
    前記制御装置に前記読み出し用のアドレスに基づいて前記不揮発性メモリから読み出され、
    前記更新用のブートローダ及び前記更新用のメインプログラムをこの順で前記不揮発性メモリの前記書込み用のアドレスから書き込み、
    前記不揮発性メモリの格納領域において、前記ブートローダは一方の端部側、前記更新用のブートローダは他方の端部側、及び前記更新用のメインプログラムは、前記更新用のブートローダの後側に格納される
    ファームウェア更新方法。
  7. 請求項に記載のファームウェア更新方法において、
    前記(a1)ステップは、
    (a11)前記アドレス反転部は、前記識別データが第1状態の場合、前記読出し用のアドレスについて非反転を行うステップを含み、
    前記(b1)ステップは、
    (b11)前記アドレス反転部は、前記識別データが第1状態の場合、前記書込み用のアドレスについて反転を行うステップを含む
    ファームウェア更新方法。
  8. 請求項又はに記載のファームウェア更新方法において、
    前記(a1)ステップは、
    (a12)前記アドレス反転部は、前記識別データが第2状態の場合、前記読出し用のアドレスについて反転を行うステップを含み、
    前記(b1)ステップは、
    (b12)前記アドレス反転部は、前記識別データが第2状態の場合、前記書込み用のアドレスについて非反転を行うステップを含む
    ファームウェア更新方法。
  9. 請求項乃至のいずれか一方に記載のファームウェア更新方法において、
    前記ファームウェア更新回路は、
    前記更新のとき、当該更新に関するタイムアウトを監視する監視部と、
    前記識別データを格納する識別部と
    を更に備え、
    (c)前記監視部は、前記更新のとき、当該更新に関するタイムアウトを監視するステップと、
    (d)前記識別部は、前記タイムアウトを検出したとき、前記識別データを前記タイムアウト前の値から変更するステップと、
    (e)前記アドレス反転部は、変更された前記識別データに基づいて、前記(a)ステップ及び前記(b)ステップを実行するステップと
    を更に具備する
    ファームウェア更新方法。
JP2006011461A 2006-01-19 2006-01-19 ファームウェア更新回路およびファームウェア更新方法 Expired - Fee Related JP4868216B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006011461A JP4868216B2 (ja) 2006-01-19 2006-01-19 ファームウェア更新回路およびファームウェア更新方法
US11/623,664 US20070169098A1 (en) 2006-01-19 2007-01-16 Firmware updating circuit and firmware updating method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006011461A JP4868216B2 (ja) 2006-01-19 2006-01-19 ファームウェア更新回路およびファームウェア更新方法

Publications (2)

Publication Number Publication Date
JP2007193596A JP2007193596A (ja) 2007-08-02
JP4868216B2 true JP4868216B2 (ja) 2012-02-01

Family

ID=38264898

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006011461A Expired - Fee Related JP4868216B2 (ja) 2006-01-19 2006-01-19 ファームウェア更新回路およびファームウェア更新方法

Country Status (2)

Country Link
US (1) US20070169098A1 (ja)
JP (1) JP4868216B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107851053A (zh) * 2015-07-16 2018-03-27 高通技术国际有限公司 用于管理快闪存储器内容的损坏的方法和设备

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008033827A (ja) * 2006-07-31 2008-02-14 Hitachi Ltd ストレージ装置及びプログラム更新方法
JP4903071B2 (ja) 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US7925877B2 (en) * 2007-09-27 2011-04-12 Texas Instruments Incorporated Method, system and apparatus for providing a boot loader of an embedded system
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US8392762B2 (en) * 2008-02-04 2013-03-05 Honeywell International Inc. System and method for detection and prevention of flash corruption
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US20090204803A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Handling of secure storage key in always on domain
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
JP2009230407A (ja) 2008-03-21 2009-10-08 Toshiba Corp データの更新方法、メモリシステムおよびメモリデバイス
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
US8245214B2 (en) * 2008-06-05 2012-08-14 International Business Machines Corporation Reliably updating computer firmware while performing command and control functions on a power/thermal component in a high-availability, fault-tolerant, high-performance server
US8954552B2 (en) * 2008-09-18 2015-02-10 Dell Products, Lp Method of using an information handling system to receive an update while in abare metal state, and an information handling system and machine-executable code for carrying out the method
KR101605875B1 (ko) 2009-04-03 2016-03-24 삼성전자주식회사 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법
JP5383516B2 (ja) * 2010-01-06 2014-01-08 キヤノン株式会社 画像形成装置及びそのファームウェア更新方法、並びにプログラム
WO2011114476A1 (ja) 2010-03-17 2011-09-22 富士通株式会社 マルチコアプロセッサシステム、通知プログラム、および通知方法
JPWO2012077604A1 (ja) * 2010-12-08 2014-05-19 三洋電機株式会社 処理装置、プログラム更新方法、およびプログラム
JP5810295B2 (ja) 2011-03-15 2015-11-11 パナソニックIpマネジメント株式会社 携帯端末
JP5542768B2 (ja) * 2011-09-28 2014-07-09 京セラドキュメントソリューションズ株式会社 情報処理装置及び情報処理方法
TWI528285B (zh) * 2011-12-20 2016-04-01 緯創資通股份有限公司 製造系統及韌體燒錄方法
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
JP5939896B2 (ja) * 2012-06-12 2016-06-22 キヤノン株式会社 画像形成装置
US9208072B2 (en) 2013-06-25 2015-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Firmware storage and maintenance
FR3010553B1 (fr) 2013-09-10 2015-09-04 Sagemcom Broadband Sas Procede de mise a jour d'un logiciel de demarrage d'un dispositif multiprocesseur
WO2015060853A1 (en) * 2013-10-24 2015-04-30 Intel Corporation Techniques for pre-os image rewriting to provide cross-architecture support, security introspection, and performance optimization
US10977050B2 (en) * 2018-01-11 2021-04-13 Macronix International Co., Ltd. Method for managing system boot code memory, memory device and electronic system using the same
US10795746B2 (en) * 2018-12-13 2020-10-06 Micron Technology, Inc. Automated power down based on state of firmware
KR20200089939A (ko) * 2019-01-18 2020-07-28 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568641A (en) * 1995-01-18 1996-10-22 Hewlett-Packard Company Powerfail durable flash EEPROM upgrade
US6088759A (en) * 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory
JP2001209543A (ja) * 2000-01-28 2001-08-03 Nec Ic Microcomput Syst Ltd フラッシュ・マイコンにおけるプログラム書き換え方法
JP4731020B2 (ja) * 2001-01-24 2011-07-20 富士通セミコンダクター株式会社 半導体記憶装置、セクタアドレス変換回路、アドレス変換方法及び半導体記憶装置の使用方法
US20030217357A1 (en) * 2002-05-14 2003-11-20 Parry Travis J. Monitoring firmware
US7730326B2 (en) * 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
US7523350B2 (en) * 2005-04-01 2009-04-21 Dot Hill Systems Corporation Timer-based apparatus and method for fault-tolerant booting of a storage controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107851053A (zh) * 2015-07-16 2018-03-27 高通技术国际有限公司 用于管理快闪存储器内容的损坏的方法和设备

Also Published As

Publication number Publication date
US20070169098A1 (en) 2007-07-19
JP2007193596A (ja) 2007-08-02

Similar Documents

Publication Publication Date Title
JP4868216B2 (ja) ファームウェア更新回路およびファームウェア更新方法
US7900036B2 (en) System and method for implementing boot/recovery on a data processing sysem
US5568641A (en) Powerfail durable flash EEPROM upgrade
TWI501253B (zh) 於裝置開機期間處置來自非揮發性記憶體之錯誤
US7313683B2 (en) Computer system and method which boots from a bootup-memory-image stored in nonvolatile memory and copies data within an address range of predetermined width to main memory so that the system boots quickly after initialization
EP2124151B1 (en) Information processing system and method for starting/recovering the system
WO2000019317A1 (en) Protection of boot block code while allowing write accesses to the boot block
JPH11110306A (ja) 記憶装置、データ処理システム並びにデータ処理方法
US10108469B2 (en) Microcomputer and microcomputer system
US7096351B2 (en) Single-chip microcomputer and boot region switching method thereof
US10977050B2 (en) Method for managing system boot code memory, memory device and electronic system using the same
US6925522B2 (en) Device and method capable of changing codes of micro-controller
EP1589427B1 (en) Boot control system
JP4483876B2 (ja) 二重化システムにおける記憶装置の制御方法
US20050055530A1 (en) Method and apparatus for protecting a specific memory section
JP2000293376A (ja) ブートプログラムの切替回路及び切替方法
JP2000235483A (ja) 情報処理装置
JP3358214B2 (ja) 電子装置
KR100575927B1 (ko) 이동통신 단말기에서 부팅 방법
JP4165423B2 (ja) コアi/oカードを実装したシステムボード
US7069471B2 (en) System PROM integrity checker
CN117894362A (zh) 一次性可编程存储器修改方法、装置和电子设备
JPH08185354A (ja) メモリ管理装置
JP2007058505A (ja) 情報処理装置および情報処理装置起動方法
JP2007128204A (ja) コンピュータシステム、および、コンピュータシステムの起動方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110922

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111020

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111102

R150 Certificate of patent or registration of utility model

Ref document number: 4868216

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees