JP5683518B2 - ファームウェア更新装置およびその方法 - Google Patents

ファームウェア更新装置およびその方法 Download PDF

Info

Publication number
JP5683518B2
JP5683518B2 JP2012071748A JP2012071748A JP5683518B2 JP 5683518 B2 JP5683518 B2 JP 5683518B2 JP 2012071748 A JP2012071748 A JP 2012071748A JP 2012071748 A JP2012071748 A JP 2012071748A JP 5683518 B2 JP5683518 B2 JP 5683518B2
Authority
JP
Japan
Prior art keywords
firmware
area
storage
update
storage block
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.)
Active
Application number
JP2012071748A
Other languages
English (en)
Other versions
JP2013205933A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012071748A priority Critical patent/JP5683518B2/ja
Publication of JP2013205933A publication Critical patent/JP2013205933A/ja
Application granted granted Critical
Publication of JP5683518B2 publication Critical patent/JP5683518B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、不揮発メモリに格納したファームウェアを更新する装置、および、不揮発メモリに格納したファームウェアを更新する方法に関するものである。
CPUを内蔵した組み込み製品では、製品出荷後に見つかった不具合を解消する目的や、新しい機能の追加などを目的として、ファームウェア(Firmware)の更新機能を有するものがある。
また、更新後のファームウェアに不具合が含まれている場合への対策として、更新前のファームウェアに復元できる機能を有するものもある。
このようなファームウェアの更新や復元が可能な製品においては、不揮発メモリの書き換え中に電源断が発生しても、正しくファームウェアの更新または復元を完了できることが実用上必要となる。
例えば、特許文献1では、不揮発メモリが更新前のファイルを一時的に格納するための一時退避領域と、更新ファイルを格納する更新データ領域とを有するファームウェア更新装置および方法が開示されている。
特許文献1の方法では、演算処理部が更新前のファイルを一時退避領域に格納し、更新処理を実行した後、一時退避領域に格納した更新前のファイルを一時退避領域から削除するとともに、対応する更新ファイルと入れ換えて更新データ領域に格納するようにしている。このため、更新中に不具合が発生した場合には、一時退避領域に格納されたデータを用いて更新処理を継続することが可能である。
特開2010−79440号公報(4頁[0009])
しかしながら、特許文献1に記載されるように一時退避領域を用いた場合、ファームウェアを分割した単位であるファームウェアファイルを更新するごとに一時退避領域の書き換えが必要となるため、複数のファームウェアファイルを随時更新していく場合には、一時退避領域が複数回書き換えられることになる。このため、一時退避領域には書き換え作業が集中し、結果として、一時退避領域の寿命は他の領域より短くなる。
これは、一般に不揮発メモリの消去単位となる記憶ブロックに消去回数の上限があるためである。さらに、一時退避領域の寿命が尽きる(消去回数の上限を超える)と、ファームウェアの更新を行うことはできなくなる。
したがって、特許文献1の方法では、ファームウェア更新の上限回数が制限されてしまうという問題があった。
本発明は、上記のような問題を解決するためになされたものであり、特定の領域の更新回数の上限に制限されることなく、良好にファームウェアの更新を繰り返すことができるファームウェア更新装置、およびファームウェア更新方法を提供することを目的とする。
本発明にかかるファームウェア更新装置は、第1ファームウェアの更新処理を行う処理装置と、前記第1ファームウェアを分割した単位である第1ファームウェアファイルを、複数の第1記憶ブロックにそれぞれ記憶する不揮発性の第1記憶領域と、前記第1ファームウェアを更新する第2ファームウェアを分割した単位である第2ファームウェアファイルを、複数の第2記憶ブロックの一部にそれぞれ記憶する不揮発性の第2記憶領域とを備え、前記第2記憶領域における前記第2記憶ブロックの数は、前記第1記憶領域における前記第1記憶ブロックの数より多く、各前記第2ファームウェアファイルは、各前記第1ファームウェアファイルにそれぞれ対応し、前記処理装置が、各前記第1ファームウェアファイルを対応する各前記第2ファームウェアファイルに更新することで、前記第1ファームウェアの更新処理を行うことを特徴とする。
本発明は、第1ファームウェアを分割した単位である第1ファームウェアファイルを、複数の第1記憶ブロックにそれぞれ記憶する不揮発性の第1記憶領域と、前記第1ファームウェアを更新する第2ファームウェアを分割した単位である第2ファームウェアファイルを、複数の第2記憶ブロックの一部にそれぞれ記憶する不揮発性の第2記憶領域とを用いるファームウェア更新方法であって、前記第2記憶領域における前記第2記憶ブロックの数は、前記第1記憶領域における前記第1記憶ブロックの数より多く、各前記第2ファームウェアファイルは、各前記第1ファームウェアファイルにそれぞれ対応し、複数の前記第2記憶ブロックのうち、前記第2ファームウェアファイルを記憶していない記憶ブロックを予備記憶ブロックとし、(a)1つの前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを前記予備記憶ブロックに複製する工程と、(b)複製が完了した当該第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新する工程と、(c)前記工程(b)において更新が完了した当該第2ファームウェアファイルが記憶される前記第2記憶ブロックに、他の前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを複製する工程とを備え、前記工程(b)が、前記工程(a)または前記工程(c)において複製が完了した前記第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新する工程であることを特徴とする。
本発明にかかるファームウェア更新装置によれば、第1ファームウェアの更新処理を行う処理装置と、前記第1ファームウェアを分割した単位である第1ファームウェアファイルを、複数の第1記憶ブロックにそれぞれ記憶する不揮発性の第1記憶領域と、前記第1ファームウェアを更新する第2ファームウェアを分割した単位である第2ファームウェアファイルを、複数の第2記憶ブロックの一部にそれぞれ記憶する不揮発性の第2記憶領域とを備え、前記第2記憶領域における前記第2記憶ブロックの数は、前記第1記憶領域における前記第1記憶ブロックの数より多く、各前記第2ファームウェアファイルは、各前記第1ファームウェアファイルにそれぞれ対応し、前記処理装置が、各前記第1ファームウェアファイルを対応する各前記第2ファームウェアファイルに更新することで、前記第1ファームウェアの更新処理を行うことにより、分割した単位であるファームウェアファイルごとに異なる記憶ブロックに記憶して更新するので、特定の記憶ブロックの更新回数の上限に制限されることなく、良好にファームウェアの更新を繰り返すことができる。
本発明によれば、第1ファームウェアを分割した単位である第1ファームウェアファイルを、複数の第1記憶ブロックにそれぞれ記憶する不揮発性の第1記憶領域と、前記第1ファームウェアを更新する第2ファームウェアを分割した単位である第2ファームウェアファイルを、複数の第2記憶ブロックの一部にそれぞれ記憶する不揮発性の第2記憶領域とを用いるファームウェア更新方法であって、前記第2記憶領域における前記第2記憶ブロックの数は、前記第1記憶領域における前記第1記憶ブロックの数より多く、各前記第2ファームウェアファイルは、各前記第1ファームウェアファイルにそれぞれ対応し、複数の前記第2記憶ブロックのうち、前記第2ファームウェアファイルを記憶していない記憶ブロックを予備記憶ブロックとし、(a)1つの前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを前記予備記憶ブロックに複製する工程と、(b)複製が完了した当該第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新する工程と、(c)前記工程(b)において更新が完了した当該第2ファームウェアファイルが記憶される前記第2記憶ブロックに、他の前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを複製する工程とを備え、前記工程(b)が、前記工程(a)または前記工程(c)において複製が完了した前記第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新する工程であることにより、第2記憶領域に第1ファームウェアをダウンロードした状態で、第1記憶領域における第1ファームウェアをその第2ファームウェアで更新する場合に、できるだけ少ない不揮発メモリ容量で、特定の記憶ブロックの更新回数の上限に制限されることなく、良好にファームウェアの更新を繰り返すことができる。

本発明の実施の形態にかかるファームウェア更新装置の構成を概念的に示す図である。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を説明する図である。 本発明の実施の形態にかかるファームウェア更新装置の動作を説明する図である。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を説明する図である。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。 本発明の実施の形態にかかるファームウェア更新装置の動作を説明する図である。 本発明の実施の形態にかかるファームウェア更新装置の動作を示すフローチャートである。
<実施の形態>
<構成>
図1は、本発明におけるファームウェア更新装置の概念的な構成図である。
図1に示すように本実施の形態にかかるファームウェア更新装置は、処理装置としてのCPU(Central Processing Unit)101と、RAM(Random Access Memory)102と、不揮発メモリA109と、不揮発メモリB110とを備えている。
CPU101は、不揮発メモリB110に格納された命令、または、RAM102に格納された命令と、RAM102に格納された一時データと、不揮発メモリA109に格納された永続データとを用いて、ハードウェアを制御するためのソフトウェア等のファームウェア更新処理を行う。
不揮発メモリA109は、ファームウェア更新処理の実行状態(進捗状況等)を格納するための状態管理領域103を構成要素とする。状態管理領域103は、ファームウェアの更新過程において頻繁に更新されることになるため、不揮発メモリA109の種類としては、比較的寿命の長いEEPROMなどが適切である。
不揮発メモリB110は、ブートプログラム領域104と、第1記憶領域としての実行領域105と、第2記憶領域としての待機領域106とから構成される。
実行領域105および待機領域106は、それぞれがファームウェアを保持する領域であり、実行領域105が、運用時に実行対象となるファームウェアAを格納している。なお、実行領域105の記憶サイズは、更新可能なファームウェアの上限サイズに対応する。
ブートプログラム領域104は、ファームウェアの切換えプログラムを一部として含むブートプログラムを格納しており、CPU101がリセットすると、必ずはじめに実行対象とされる領域である。
ブートプログラムは、起動時に状態管理領域103を参照し、必要に応じてファームウェアの切換えプログラムを実行した後、実行領域105に格納されたファームウェアAに制御を移す。
待機領域106は、保存領域107と予備領域108から構成される。
保存領域107は、実行領域105のファームウェアAと交換可能なファームウェアBを保持する領域である。また、予備領域108は、不揮発メモリの消去単位の例えば1記憶ブロック分のサイズの領域であり、意味のあるデータは保持していない。
保存領域107と予備領域108とに対する記憶ブロックの割当て方は固定ではなく、ファームウェア交換時に変化する。
本実施の形態では、待機領域106にファームウェアBを格納した後、実行領域105のファームウェアAとファームウェアBとを交換することで、実行領域105のファームウェアAの更新を行う。このファームウェア交換を実際に行う実行主体は、ブートプログラム領域104に格納されたファームウェアの切換えプログラムである。
<動作>
以降では、図1の構成のファームウェア更新装置が、待機領域106に新しいファームウェアBを取得してから、実行領域105のファームウェアAと待機領域106のファームウェアBとを切換えることでファームウェアAを更新する方法と、更新したファームウェアAから更新前のファームウェアAに復元する方法とを順に説明する。ここで、「復元」処理は、更新前のファームウェアに戻す処理であるが、既に実行領域に記憶されているファームウェアを交換して新たなファームウェアを記憶させるという点では、更新処理の一種であるといえる。
はじめに、新しいファームウェアBを取得し、当該ファームウェアに更新するまでの処理を説明する。
図2は、ファームウェア更新の手順を示すフローチャートである。
はじめに、実行領域105に格納されているファームウェアAは、ネットワークを介してファームウェアBをダウンロードする(ステップS201)。
次に、ファームウェアAは、ファームウェア切換え指示処理を行う(ステップS202)。このファームウェア切換え処理では、実行領域105のファームウェアAと保存領域107のファームウェアBとの切換えをブートプログラムに指示するために、状態管理領域103を初期化する。
次に、ファームウェアAは、ブートプログラムを起動するため、CPU101をリセットする(ステップS203)。
リセット後のCPU101がブートプログラムの実行を開始すると、ブートプログラムは、ファームウェア切換え処理を行い(ステップ204)、ステップS202で実行されたファームウェア切換え指示に従って、ファームウェアを切換える。
ここでは、図2の処理をファームウェアAとブートプログラムとが分担して行ったが、ブートプログラムがすべての処理を行ってもよい。その場合、ステップS203のリセット処理は不要である。
また、ダウンロードするファームウェアは、ファームウェアの全体である必要はない。例えば、実行領域105に格納されたファームウェアAとの差分パッチのみをダウンロードし、実行領域105に格納されたファームウェアAに対して差分パッチを適用して得られるファームウェアBを、保存領域107に格納してもよい。
さらに、ファームウェア全体または差分パッチの取得は、ネットワークを介したダウンロードである必要はなく、外部記憶装置などからの読み出しなどでも代替可能である。
次に、図3に、図2のステップS201でファームウェアをダウンロードした後の、不揮発メモリB110の記憶ブロック構成を示す。
ここで記憶ブロックとは、不揮発メモリの消去操作を行うデータの単位である。
実行領域105がN個の記憶ブロックから構成される場合、待機領域106をN+1個の記憶ブロックで構成する。本文および図面では、実行領域105を構成するN個の記憶ブロックに対して0〜N−1の整数を記憶ブロック番号として一意に付与し、実行領域105のi番目の記憶ブロックを記憶ブロックE[i]と表記するものとする。同様に、待機領域106のN+1個の記憶ブロックに対して0〜Nの整数を一意に付与し、待機領域106のi番目の記憶ブロックを記憶ブロックS[i]と表記するものとする。
図3では、付与された番号が連番となっている記憶ブロック同士が隣接しているが、必ずしも隣接している必要はない。
図2におけるステップS201では、待機領域106の1〜Nの番号の記憶ブロックS[i]に、ダウンロードしたファームウェアBの分割した単位であるファームウェアファイルBをそれぞれ格納する。なお、実行領域105の0〜N−1の番号の記憶ブロックE[i]には、ファームウェアAの分割した単位であるファームウェアファイルAがそれぞれ格納されている。
このとき、ファームウェア更新後に記憶ブロックE[i]に格納されるべきファームウェアファイルBが、記憶ブロックS[i+1]に格納されるようにする。
待機領域106の記憶ブロックS[0]は、予備領域108であり、ファームウェアダウンロード時には更新不要である。
次に、図4に状態管理領域103の記憶ブロック構成を示す。
状態管理領域103は、ファームウェアを格納する領域(実行領域105および待機領域106)と同様に、複数の記憶ブロックから構成され、状態番号領域401、予備領域ブロック番号402、切替えフラグ403、退避領域404を備える。
状態番号領域401は、ファームウェア切換えの進捗状況を一連の状態番号で管理するための領域であり、3つの記憶ブロックで1つの状態番号を表現する。
状態番号は、0からはじまり、ファームウェア切換え処理が進むごとに1ずつ増加する値である。本実施の形態では、3つの記憶ブロックのうち少なくとも2つは、常に連続する整数を保持する状態を保つように、状態番号領域401を更新する。このとき、状態番号領域401が保持する値は、連続する整数の中で最大の数である。
3つの記憶ブロックのうち少なくとも2つが常に連続する状態を保つように状態番号に1を加えるには、最大の数を含む記憶ブロックと最大の数より1小さい数を含む記憶ブロックとを1つずつ選択し、残った記憶ブロックに対して、最大の数に1を加えた値を書き込めばよい。
このように状態番号領域401の値を更新することで、状態番号の更新中に電源断が発生し、更新対象とした記憶ブロックが不定な値になったとしても、状態番号領域401が保持する値を表す残りの2つの記憶ブロックは不変であるため、更新前の値が失われることはない。
予備領域ブロック番号402は、待機領域106における予備領域108の記憶ブロック番号である。この予備領域108は、ファームウェア切換え(更新処理、復元処理)を行うと位置が変更される領域である。
切替えフラグ403は、ブートプログラムに対してファームウェア切換えを指示するための領域である。ブートプログラムは、切替えフラグ403を確認し、有効な場合のみ実行領域105と待機領域106とのファームウェアの交換処理を行う。
退避領域404は、予備領域ブロック番号402を更新する前に、更新前の予備領域ブロック番号402を退避する(格納する)領域である。
予備領域ブロック番号402の更新中に電源断が発生し、予備領域ブロック番号402の内容が不定値になった場合、電源投入後に退避領域404の値を使用することにより、予備領域ブロック番号402の値を正しく更新することが可能である。
次に、図5において、図2のステップS202のファームウェア切換え指示処理のフローチャートを示す。
ファームウェア切換え指示処理は、実行領域105と待機領域106とにそれぞれ格納されたファームウェアの切換えをブートプログラムに行わせるために、状態管理領域103を初期化する処理である。
実行中のファームウェアは、予備領域ブロック番号402に0を設定し(ステップS501)、状態番号領域401に初期値を書き込んだ後(ステップS502)、切替えフラグを有効化する(ステップS503)。ステップS501とステップS502との順序は任意であるが、ステップS503は最後である。
このようにすることで、ファームウェア切換え指示処理中の電源断で予備領域ブロック番号402、または、状態番号領域401が不定になった場合であっても、ブートプログラムによる誤ったファームウェア切換え処理は発生しない。これは、切替えフラグ403が有効になった時点で、予備領域ブロック番号402と状態番号領域401とが正しく初期化されていることが保証されているためである。
次に、図6において、図2のステップS204のファームウェア切換え処理のフローチャートを示す。
ファームウェア切換え処理は、図6のフローによってのみ実行されるのではなく、ブートプログラムが起動されると常に実行対象となる。
ファームウェア切換え処理において、ブートプログラムは切替えフラグ403を参照し、切替えフラグ403が有効か否かで切替え指示の有無を判定する(ステップS601)。そして、切替えフラグが有効でない場合(NO)、直ちに処理を終了する。
一方、切替えフラグ403が有効な場合(YES)、状態番号領域401から状態番号を取得し(ステップS602)、状態番号に応じて実行する処理を決定する(ステップS603)。
図2のフローから実行される場合は、状態番号0からのスタートであるが、ファームウェア切換え処理中に電源断が発生した場合は、電源断直前までに行われていた処理の状態番号が、状態番号領域401において格納されている。
ステップS603では、状態番号が0以上2N未満の場合、ファームウェア交換中であると判定し、ステップS604に進む。一方で、2Nの場合はステップS608へ進み、2N+1の場合はステップS610へ進む。
ステップS603〜ステップS607では、実行領域105と待機領域106とのファームウェアの交換を行う。ブートプログラムは、予備領域ブロック番号を変数aに読み出し(ステップS604)、ステップS605において、変数aの値について判断する。
すなわち、変数aの値が0であればステップS606に進み、変数aの値がNであればステップS607に進む。
予備領域108は、待機領域106の記憶ブロックS[0]である場合と、待機領域106の記憶ブロックS[N]である場合との2通りがあり、予備領域108の位置によってファームウェアの交換方法が異なる。
図2のステップS201でファームウェアをダウンロードした直後では、図3のとおり予備領域108を待機領域106の記憶ブロックS[0]に確保しているため、図3の状態からファームウェア切換え処理が行われている場合、ステップS606に進むことになる。
ステップS606は、状態番号を入力とする順方向ファームウェア交換処理であり、予備領域108の位置が記憶ブロックS[0]であることを前提に、実行領域105と待機領域106とのファームウェアを交換する処理である。
順方向ファームウェア交換処理が完了した時点で、予備領域108の位置は記憶ブロックS[0]から記憶ブロックS[N]に変更される。
ステップS607は、状態番号を入力とする逆方向ファームウェア交換処理であり、順方向ファームウェア交換処理で行ったファームウェア交換を元に戻す処理である。
逆方向ファームウェア交換処理では、予備領域108の位置が記憶ブロックS[N」であることを前提に、実行領域105と待機領域106とのファームウェアを交換する。
逆方向ファームウェア交換処理が完了した時点で、予備領域108の位置は記憶ブロックS[N]から記憶ブロックS[0]に変更される。
このため、逆方向ファームウェア交換処理で行ったファームウェア交換を、順方向ファームウェア交換処理で元に戻すことが可能である。
ステップS607またはステップS608の実行過程において、状態番号は0から2Nまで順次更新され、処理完了時点で状態番号が2Nとなる。ブートプログラムは、ステップS606またはステップS607の処理が完了すると、ステップS608に進む。
ステップS608〜ステップS615では、予備領域ブロック番号402を更新し、切替えフラグ403を無効化することで、ファームウェア切換え処理を完了させる。
ブートプログラムはまず、予備領域ブロック番号402の値を読み出して退避領域404に書き込み(ステップS608)、状態番号を2N+1に更新する(ステップS609)。
ステップS608またはステップS609の処理中に電源断が発生した場合でも、ブートプログラムは状態番号の2Nを電源投入後に読み出すことで、ステップS603を経てステップS608から処理を再開することが可能である。
次に、ブートプログラムは、退避領域404に格納された予備領域ブロック番号402の値を変数bに読出し(ステップS610)、ステップS611において、変数bの値について判断する。
すなわち、変数bの値が0であればステップS612に進み、変数bの値がNであればステップS613に進む。
ステップS612は、順方向ファームウェア交換を行った結果として、予備領域ブロック番号がNになったことを予備領域ブロック番号に反映する処理である。処理が終了したら、ステップS614に進む。
一方、ステップS613は、逆方向ファームウェア交換を行った結果として、予備領域ブロック番号が0になったことを予備領域ブロック番号に反映する処理である。処理が終了したら、ステップS614に進む。
ブートプログラムは、ステップS614において状態番号を2N+2に更新すると(1を加算)、切替えフラグを無効化することで、ファームウェア切換え処理を完了させる(ステップS615)。
ステップS610〜ステップS615のいずれかで電源断が発生した場合、再起動後にブートプログラムが状態番号として2N+1を読み出すため、ステップS603を経て、ステップS610から処理を再開することが可能である。
仮に、予備領域ブロック番号402の値が不定値となってしまっていた場合でも、ステップ610で読み出す値は、更新前の予備領域ブロック番号402として退避領域404から読み出すため、正常に処理を継続することができる。
順方向ファームウェア更新処理は、入力状態番号i(0≦i<2N)に基づいて、実行領域105と待機領域106とのファームウェアを交換する処理である。
図7と図8を用いて、順方向ファームウェア交換処理を説明する。
図7は、順方向ファームウェア交換処理の模式図である。
実行領域105はN個の記憶ブロックから構成されており、待機領域106はN+1個の記憶ブロックから構成されている。
待機領域106における記憶ブロックS[0]は予備領域108であり、記憶ブロックS[1]以降にファームウェアファイルBが格納されている(保存領域107)。
図7において、記憶ブロック同士を結ぶ辺は記憶ブロックに格納されたファームウェアファイルのコピー動作を意味しており、矢印はコピーの向きを意味する。さらに、辺のラベルは状態番号を意味する。
順方向ファームウェア交換処理では、状態番号iが偶数(0を含む)の場合、記憶ブロックE[i/2]から記憶ブロックS[i/2]へのファームウェアファイルAのコピーを行い、状態番号iが奇数の場合、記憶ブロックS[i/2+1]から記憶ブロックE[i/2]へのファームウェアファイルBのコピーを行う。ここでは、除算/は整数の除算を意味し、商は整数である。
図8は、順方向ファームウェア交換処理のフローチャートである。
はじめにブートプログラムは、順方向ファームウェア交換処理のはじめに入力となる状態番号を変数kに読み出す(ステップS801)。
ステップS802〜ステップS807は、実行領域105と待機領域106とのファームウェアを記憶ブロックごと(ファームウェアファイルごと)に交換するためのループ処理である。
次に、ブートプログラムはkが偶数か否かを判定し(ステップS802)、kが偶数(0を含む)であれば(YES)ステップS803に進み、kが奇数であれば(NO)ステップS804に進む。
ステップS803は、実行領域105の記憶ブロックE[k/2]から待機領域106の記憶ブロックS[k/2]へのファームウェアファイルAのコピー処理である。
一方、ステップS804は、待機領域106の記憶ブロックS[k/2+1]から実行領域105の記憶ブロックE[k/2]へのファームウェアファイルBのコピー処理である。
ブートプログラムは、ステップS803またはステップS804が完了すると、状態番号更新処理を行うことで状態番号に1を加算し(ステップS805)、kの値も同様に1加算する(ステップS806)。
次に、kの値が2N以上か否かを比較することで、全記憶ブロック分の交換が完了したか否かを判定し(ステップS807)、kの値が2N以上であれば(YES)全記憶ブロック分の交換が完了しているとして動作を終了し、kの値が2N未満であれば(NO)全記憶ブロック分の交換が完了していないとして、ステップS802に戻る。
ファームウェアの交換処理の進捗状態を一連番号化して更新することで、進捗状態の更新中に電源断が発生したとしても、更新前の状態を保持し続けることが可能である。
また、実行領域105と待機領域106との記憶ブロック単位のファームウェア交換において、同一番号同士の記憶ブロックを交換するのではなく、待機領域106の記憶ブロックをずらして交換することで、後述する逆方向ファームウェア更新処理と合わせて、特定の記憶ブロックにおける消去および書込みの集中を緩和して、ファームウェアの交換を行うことが可能である。
次に、状態番号領域401に格納された値を取得する方法を図9を用いて、状態番号領域401に格納された値を更新する方法を図10を用いてそれぞれ説明する。
本実施の形態では、状態番号領域401の記憶ブロックについて、B[i]=B[(i+2)%2]+1を満たす記憶ブロック番号i∈{0,1,2}が少なくとも1つ存在する、すなわち、少なくとも2つの記憶ブロックは値が連続するという命題が常に成立するように、状態番号領域を初期化する。なお、「%」は剰余の演算子であり、除算を行った場合の余りの数(整数)が代入されることを示す。すなわち、「B[(i+2)%2]」の場合、(i+2)を2で割った余りの整数が、ブロックBの番号である。
図9は、状態番号取得処理のフローチャートである。
状態番号取得処理では、上記命題が成立することを利用して、状態番号領域401から状態を読み出す。
ブートプログラムは、はじめに状態番号領域401の3つの記憶ブロックの中から最大数を含む記憶ブロックの番号を取得して変数mに格納し(ステップS901)、B[m]の値を変数xに読出し(ステップS902)、変数xの値を状態番号取得処理の出力とする(ステップS903)。
ここで、ステップS902で取得する最大数は、状態番号領域401の記憶ブロックが保持する連続する数の中における最大数であり、他の記憶ブロックが保持する値と連続しない値は対象外である。
図10は、状態番号更新処理のフローチャートである。
状態番号更新処理は、状態番号領域401が保持する値を、現在の値に1を加算した値で更新する処理である。
ブートプログラムは、はじめに状態番号領域401の3つの記憶ブロックの中から最大数を含む記憶ブロックの番号を取得し変数mに格納する(ステップS1001)。
このときの最大数は、状態管理領域103の記憶ブロックが保持する連続する数の中における最大数であり、他の記憶ブロックが保持する値と連続しない値は対象外である。
次にブートプログラムは更新対象の記憶ブロック番号を(m+1)%3の演算によって決定し、値を変数nに格納する(ステップS1002)。
ステップS1003では、B[n]の値をB[m]+1で更新する。
このとき、B[n]の更新中に電源断が発生してB[n]の値がB[m]+1以外の任意の値になったとしても、他の2つの記憶ブロックの値は不変であり、ステップS1001で得られる記憶ブロックの番号はmのままである。
したがって、図10の状態更新処理の途中に電源断が発生しても、状態番号領域401が保持する値B[m]は不変である。
状態番号領域401が保持する値を0に初期化するときに、B[0]=ANY、B[1]=−1、B[2]=0で状態番号0を表現することで、図10の処理を複数回数繰り返した後も、状態番号領域401の記憶ブロックについてB[i]=B[(i+2)%2]+1を満たす記憶ブロック番号i∈{0,1,2}が少なくとも1つ存在するという命題を成立することが可能である。
次に図11に、状態番号領域401に含まれる連続する数の中で最大数を含む記憶ブロックを取得するための処理を示す。
ブートプログラムは、状態番号領域401に含まれる連続する数の中で最大数を含む記憶ブロックのみが満足する条件を全ての記憶ブロックに対してチェックすることにより、目的とする記憶ブロックの番号を取得する。
図10の状態更新処理により、状態番号領域401の記憶ブロックについてB[i]=B[(i+2)%2]+1を満たす記憶ブロック番号i∈{0,1,2}が少なくとも1つ存在することを前提とすると、記憶ブロックiが連続する数の中で最大数を含む記憶ブロックであることの必要十分条件は、B[i]=B[(i+2)%3]+1、かつ、B[i]≠B[(i+1)%3]−1である。
ブートプログラムは、はじめに記憶ブロック番号iを0で初期化し(ステップS1101)、記憶ブロック番号iの記憶ブロック番号が連続する数の中で最大数か否かを、B[i]=B[(i+2)%3]+1、かつ、B[i]≠B[(i+1)%3]−1の条件を満たすか否かで判定する(ステップS1102)。
上記の条件を満たす場合(YES)、iを最大数を含む記憶ブロック番号として出力する(ステップS1104)。
一方、上記の条件を満足しない場合(NO)、記憶ブロック番号を1だけ加算し(ステップS1103)、ステップS1102に戻る。
ここまでで、ファームウェアの更新処理を示した。以降では、更新前のファームウェアに復元する方法を示す。
図12は、ファームウェア復元処理のフローチャートである。
実行中のファームウェアは、状態番号領域401が保持する値を0で初期化し(ステップS1201)、切替えフラグを有効化する(ステップS1202)。その後、CPUをリセットする(ステップS1203)し、ブートプログラムが動作を開始する。
ブートプログラムは、起動後、ファームウェア切換え処理を行い、実行領域105のファームウェアと待機領域の106のファームウェアとを切り換える(ステップS1204)。
次に逆方向ファームウェア更新処理について説明する。
逆方向ファームウェア更新処理は、入力状態番号i(0≦i<2N)に基づいて、実行領域105と待機領域106とのファームウェアを交換する処理である。
図13と図14を用いて、逆方向ファームウェア交換処理を説明する。
図13は、逆方向ファームウェア交換処理の模式図である。
実行領域105はN個の記憶ブロックから構成されており、待機領域106はN+1個の領域から構成されている。
待機領域106における記憶ブロックS[0]は予備領域108であり、記憶ブロックS[1]以降にファームウェアファイルAが格納されている(保存領域107)。
図13において、記憶ブロック同士を結ぶ辺は記憶ブロックに格納されたファームウェアファイルのコピー動作を意味しており、矢印はコピーの向きを意味する。さらに、辺のラベルは状態番号を意味する。
逆方向ファームウェア交換処理では、状態番号iが偶数(0を含む)の場合、記憶ブロックE[N−i/2−1]から記憶ブロックS[N−i/2]へのファームウェアファイルBのコピーを行い、状態番号iが奇数の場合、記憶ブロックS[N−i/2−1]から記憶ブロックE[N−i−1]へのファームウェアファイルAのコピーを行う。ここでは、除算/は整数の除算を意味し、商は整数である。
図14は、逆方向ファームウェア交換処理のフローチャートである。
はじめにブートプログラムは、逆方向ファームウェア交換処理のはじめに入力となる状態番号を変数kに読み出す(ステップS1401)。
ステップS1402〜ステップS1407は、実行領域105と待機領域106とのファームウェアを記憶ブロックごと(ファームウェアファイルごと)に交換するためのループ処理である。変数kは、当該ループの制御変数としての意味も持つ。
次に、ブートプログラムはkが偶数か否かを判定し(ステップS1402)、kが偶数(0を含む)であれば(YES)ステップS1403に進み、kが奇数であれば(NO)ステップS1404に進む。
ステップS1403は、実行領域105の記憶ブロックE[N−k/2−1]から待機領域106の記憶ブロックS[N−k/2]へのファームウェアファイルBのコピー処理である。
一方、ステップS1404は、待機領域106の記憶ブロックS[N−k/2−1]から実行領域105の記憶ブロックE[N−k/2−1]へのファームウェアファイルAのコピー処理である。
ブートプログラムは、ステップS1403またはステップS1404が完了すると、状態番号更新処理を行うことで状態番号に1を加算し(ステップS1405)、kの値も同様に1加算する(ステップS1406)。
次に、kの値が2N以上か否かを比較することで、全記憶ブロック分の交換が完了したか否かを判定し(ステップS1407)、kの値が2N以上であれば(YES)全記憶ブロック分の交換が完了しているとして動作を終了し、kの値が2N未満であれば(NO)全記憶ブロック分の交換が完了していないとして、ステップS1402に戻る。
ファームウェアの交換処理の進捗状態を一連番号化して更新することで、進捗状態の更新中に電源断が発生したとしても、更新前の状態を保持し続けることが可能である。
また、実行領域105と待機領域106との記憶ブロック単位のファームウェア交換において、同一番号同士の記憶ブロックを交換するのではなく、待機領域106の記憶ブロックをずらして交換することで、順方向ファームウェア更新処理と合わせて、特定の記憶ブロックにおける消去および書込みの集中を緩和して、ファームウェアの交換を行うことが可能である。
<変形例>
本実施の形態では、状態番号領域401を3つの記憶ブロックを用いて構成したが、4つ以上の記憶ブロックを用いて構成することも可能である。状態番号領域401が保持する値を更新する場合、更新に必要な記憶ブロックは、状態番号領域401を構成する記憶ブロックのうちの1つであるため、記憶ブロック数を増加させることで、状態番号領域401の更新上限回数を増加させることが可能である。
また本実施の形態では、予備領域108として1つの記憶ブロックを割り当てたが、2つ以上の記憶ブロックを用いて構成することも可能である。複数の記憶ブロックを仮想的に1つの記憶ブロックとして扱うと、仮想的な記憶ブロック総数が減る。このため、状態番号の総数が減り、状態番号領域401の更新回数も減らすことが可能である。
<効果>
本発明にかかる実施の形態によれば、ファームウェア更新装置において、第1ファームウェアとしてのファームウェアAの更新処理を行う処理装置(CPU101)と、ファームウェアAを分割した単位である第1ファームウェアファイルとしてのファームウェアファイルAを、複数の第1記憶ブロックとしての記憶ブロックE[i]にそれぞれ記憶する不揮発性の第1記憶領域(実行領域105)と、ファームウェアAを更新する第2ファームウェアとしてのファームウェアBを分割した単位である第2ファームウェアファイルとしてのファームウェアファイルBを、複数の第2記憶ブロックとしての記憶ブロックS[i]にそれぞれ記憶する不揮発性の第2記憶領域(待機領域106)とを備える。
待機領域106における記憶ブロックS[i]の数は、予備領域108の分、実行領域105における記憶ブロックE[i]の数より多い。
各ファームウェアファイルBは、各ファームウェアファイルAにそれぞれ対応し、CPU101が、各ファームウェアファイルAを対応する各ファームウェアファイルBに更新することで、ファームウェアAの更新処理を行う。
このようなファームウェア更新装置によれば、分割した単位であるファームウェアファイルごとに異なる記憶ブロックに記憶して更新するので、特定の記憶ブロックの更新回数の上限に制限されることなく、良好にファームウェアの更新を繰り返すことができる。
ファームウェアAを更新する際には、更新対象であるファームウェアファイルAを記憶するすべての記憶ブロックE[i]が常に不揮発メモリB110上に記憶されている状態を維持するとともに、実行領域105と待機領域106とに含まれる各記憶ブロックの消去回数を軽減することができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、複数の第2記憶ブロックとしての記憶ブロックS[i]のうち、第2ファームウェアファイルとしてのファームウェアファイルBを記憶していない記憶ブロックを予備記憶ブロック(予備領域108)とし、CPU101が、1つの第1記憶ブロックとしての記憶ブロックE[i]に記憶された第1ファームウェアファイルとしてのファームウェアファイルAを予備領域108に複製し、複製が完了した当該ファームウェアファイルAを、対応する各ファームウェアファイルBに更新し、更新が完了した当該ファームウェアファイルBが記憶される記憶ブロックS[i]に、他の記憶ブロックE[i]に記憶されたファームウェアファイルAを複製する更新処理を繰り返し行う。
このようなファームウェア更新装置によれば、待機領域106にファームウェアBをダウンロードした状態で、実行領域105におけるファームウェアAをそのファームウェアBで更新する場合に、できるだけ少ない不揮発メモリ容量で、特定の記憶ブロックの更新回数の上限に制限されることなく、良好にファームウェアの更新を繰り返すことができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、予備記憶ブロックとしての予備領域108となる第2記憶ブロック(記憶ブロックS[i])が、更新処理ごとに異なる。
このようなファームウェア更新装置によれば、待機領域106にファームウェアBをダウンロードした状態で、実行領域105におけるファームウェアAをそのファームウェアBで更新する場合に、特定の記憶ブロックに書き換えを集中することなくファームウェアAとファームウェアBとを入れ換えることにより、特定の記憶ブロックの更新回数の上限による制限を緩和することができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、第1ファームウェアとしてのファームウェアAの更新処理の進捗状態を管理する状態管理領域103をさらに備える。
状態管理領域103は、第1記憶領域としての実行領域105、および、第2記憶領域としての待機領域106を備える不揮発性メモリB110とは異なる、不揮発性メモリA109において備えられる。
このようなファームウェア更新装置によれば、更新処理の間、実行領域105や待機領域106よりも状態管理領域103が頻繁に書き換え動作を行う場合に、不揮発メモリB110より寿命の長い不揮発メモリA109に状態管理領域103を備えることにより、ファームウェア更新処理の上限回数の制限を、さらに緩和することができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、状態管理領域103が、更新処理の進捗状態を、一連番号で管理する。
このようなファームウェア更新装置によれば、更新処理中に電源断が発生しても、更新前の状態番号の値を一連で保持しているため、確実に更新処理を再開することができる。また、確実に更新前の状態に復元することができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、状態管理領域103は、複数の記憶ブロックを備え、状態管理領域103が、一連番号を複数の記憶ブロックでそれぞれ保持することによって、更新処理の進捗状態を管理する。
このようなファームウェア更新装置によれば、一連番号の更新処理中に電源断が発生しても、確実に更新処理を再開することができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、状態管理領域103は、更新処理の進捗状態を示す状態番号と、予備記憶ブロックとしての予備領域108に対応する第2記憶ブロック(記憶ブロックS[i])の位置を示す予備記憶ブロック番号402と、更新処理を開始できるか否かを切り替える切替えフラグ403とを管理する。
状態管理領域103は、状態番号と予備記憶ブロック番号402とを先に初期化した後に、切替えフラグ403を有効にすることで、更新処理を開始させる。
このようなファームウェア更新装置によれば、更新指示を出しているときに電源断が発生しても、不定な状態番号のまま誤ってファームウェアが更新されることを防ぐことができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新装置において、状態管理領域103が、更新処理が完了した場合に切替えフラグ403を無効にする。
このようなファームウェア更新装置によれば、途中で電源断が発生しても、電源投入後に人の手を介することなく、切替え処理を継続することができる。
また、本発明にかかる実施の形態によれば、ファームウェア更新方法において、第1ファームウェアとしてのファームウェアAを分割した単位である第1ファームウェアファイル(ファームウェアファイルA)を、複数の第1記憶ブロックとしての記憶ブロックE[i]にそれぞれ記憶する不揮発性の第1記憶領域(実行領域105)と、ファームウェアAを更新する第2ファームウェアとしてのファームウェアBを分割した単位である第2ファームウェアファイル(ファームウェアファイルB)を、複数の第2記憶ブロックとしての記憶ブロックS[i]にそれぞれ記憶する不揮発性の第2記憶領域(待機領域106)とを用いる。
待機領域106における記憶ブロックS[i]の数は、予備領域108の分、実行領域105における記憶ブロックE[i]の数より多い。
各ファームウェアファイルBは、各ファームウェアファイルAにそれぞれ対応し、複数の記憶ブロックS[i]のうち、ファームウェアファイルBを記憶していない記憶ブロックを予備記憶ブロック(予備領域108)とする。
そして、(a)1つの記憶ブロックE[i]に記憶されたファームウェアファイルAを予備領域108に複製する工程と、(b)複製が完了した当該ファームウェアファイルAを、対応する各ファームウェアファイルBに更新する工程と、(c)工程(b)において更新が完了した当該ファームウェアファイルBが記憶される記憶ブロックS[i]に、他の記憶ブロックE[i]に記憶されたファームウェアファイルAを複製する工程とを備える。
工程(b)は、工程(a)または工程(c)において複製が完了したファームウェアファイルAを、対応する各ファームウェアファイルBに更新する工程である。
このようなファームウェア更新方法によれば、待機領域106にファームウェアBをダウンロードした状態で、実行領域105におけるファームウェアAをそのファームウェアBで更新する場合に、できるだけ少ない不揮発メモリ容量で、特定の記憶ブロックの更新回数の上限に制限されることなく、良好にファームウェアの更新を繰り返すことができる。
なお本発明は、その発明の範囲内において、本実施の形態における任意の構成要素の変形もしくは省略が可能である。
101 CPU、103 状態管理領域、104 ブートプログラム領域、105 実行領域、106 待機領域、107 保存領域、108 予備領域、109 不揮発メモリA、110 不揮発メモリB、401 状態番号領域、402 予備領域ブロック番号、403 切替えフラグ、404 退避領域。

Claims (9)

  1. 第1ファームウェアの更新処理を行う処理装置と、
    前記第1ファームウェアを分割した単位である第1ファームウェアファイルを、複数の第1記憶ブロックにそれぞれ記憶する不揮発性の第1記憶領域と、
    前記第1ファームウェアを更新する第2ファームウェアを分割した単位である第2ファームウェアファイルを、複数の第2記憶ブロックの一部にそれぞれ記憶する不揮発性の第2記憶領域とを備え、
    前記第2記憶領域における前記第2記憶ブロックの数は、前記第1記憶領域における前記第1記憶ブロックの数より多く、
    各前記第2ファームウェアファイルは、各前記第1ファームウェアファイルにそれぞれ対応し、
    前記処理装置が、各前記第1ファームウェアファイルを対応する各前記第2ファームウェアファイルに更新することで、前記第1ファームウェアの更新処理を行うことを特徴とする、
    ファームウェア更新装置。
  2. 複数の前記第2記憶ブロックのうち、前記第2ファームウェアファイルを記憶していない記憶ブロックを予備記憶ブロックとし、
    前記処理装置が、
    1つの前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを前記予備記憶ブロックに複製し、
    複製が完了した当該第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新し、
    更新が完了した当該第2ファームウェアファイルが記憶される前記第2記憶ブロックに、他の前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを複製する更新処理を繰り返し行うことを特徴とする、
    請求項1に記載のファームウェア更新装置。
  3. 前記予備記憶ブロックとなる前記第2記憶ブロックが、更新処理ごとに異なることを特徴とする、
    請求項2に記載のファームウェア更新装置。
  4. 前記第1ファームウェアの更新処理の進捗状態を管理する状態管理領域をさらに備え、
    前記状態管理領域が、前記第1記憶領域および前記第2記憶領域を備える不揮発性メモリとは異なる不揮発性メモリにおいて備えられることを特徴とする、
    請求項2または3に記載のファームウェア更新装置。
  5. 前記状態管理領域が、更新処理の進捗状態を、一連番号で管理することを特徴とする、
    請求項4に記載のファームウェア更新装置。
  6. 前記状態管理領域は、複数の記憶ブロックを備え、
    前記状態管理領域が、前記一連番号を複数の前記記憶ブロックでそれぞれ保持することによって、更新処理の進捗状態を管理することを特徴とする、
    請求項5に記載のファームウェア更新装置。
  7. 前記状態管理領域は、更新処理の進捗状態を示す状態番号と、前記予備記憶ブロックに対応する前記第2記憶ブロックの位置を示す予備記憶ブロック番号と、更新処理を開始できるか否かを切り替える切替えフラグとを管理し、
    前記状態管理領域が、前記状態番号と前記予備記憶ブロック番号とを先に初期化した後に、前記切替えフラグを有効にすることで、更新処理を開始させることを特徴とする、
    請求項4〜6のいずれかに記載のファームウェア更新装置。
  8. 前記状態管理領域が、更新処理が完了した場合に前記切替えフラグを無効にすることを特徴とする、
    請求項7に記載のファームウェア更新装置。
  9. 第1ファームウェアを分割した単位である第1ファームウェアファイルを、複数の第1記憶ブロックにそれぞれ記憶する不揮発性の第1記憶領域と、
    前記第1ファームウェアを更新する第2ファームウェアを分割した単位である第2ファームウェアファイルを、複数の第2記憶ブロックの一部にそれぞれ記憶する不揮発性の第2記憶領域とを用いるファームウェア更新方法であって、
    前記第2記憶領域における前記第2記憶ブロックの数は、前記第1記憶領域における前記第1記憶ブロックの数より多く、
    各前記第2ファームウェアファイルは、各前記第1ファームウェアファイルにそれぞれ対応し、
    複数の前記第2記憶ブロックのうち、前記第2ファームウェアファイルを記憶していない記憶ブロックを予備記憶ブロックとし、
    (a)1つの前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを前記予備記憶ブロックに複製する工程と、
    (b)複製が完了した当該第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新する工程と、
    (c)前記工程(b)において更新が完了した当該第2ファームウェアファイルが記憶される前記第2記憶ブロックに、他の前記第1記憶ブロックに記憶された前記第1ファームウェアファイルを複製する工程とを備え、
    前記工程(b)が、前記工程(a)または前記工程(c)において複製が完了した前記第1ファームウェアファイルを、対応する各前記第2ファームウェアファイルに更新する工程であることを特徴とする、
    ファームウェア更新方法。
JP2012071748A 2012-03-27 2012-03-27 ファームウェア更新装置およびその方法 Active JP5683518B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012071748A JP5683518B2 (ja) 2012-03-27 2012-03-27 ファームウェア更新装置およびその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012071748A JP5683518B2 (ja) 2012-03-27 2012-03-27 ファームウェア更新装置およびその方法

Publications (2)

Publication Number Publication Date
JP2013205933A JP2013205933A (ja) 2013-10-07
JP5683518B2 true JP5683518B2 (ja) 2015-03-11

Family

ID=49524993

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012071748A Active JP5683518B2 (ja) 2012-03-27 2012-03-27 ファームウェア更新装置およびその方法

Country Status (1)

Country Link
JP (1) JP5683518B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6547904B2 (ja) * 2017-02-01 2019-07-24 住友電気工業株式会社 制御装置、プログラム更新方法、およびコンピュータプログラム
JP2018160207A (ja) * 2017-03-24 2018-10-11 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア
JP2018160208A (ja) * 2017-03-24 2018-10-11 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア
KR102434126B1 (ko) 2018-05-03 2022-08-18 엘에스일렉트릭(주) Plc 프로그램 처리 장치
DE102018208096A1 (de) 2018-05-23 2019-11-28 Robert Bosch Gmbh Verfahren zum Austauschen eines ersten ausführbaren Programm-Codes und eines zweiten ausführbaren Programm-Codes und Steuergerät

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124403A (ja) * 1996-10-24 1998-05-15 Hitachi Ltd ブロック消去型フラッシュメモリの書込み方法
DE19839680B4 (de) * 1998-09-01 2005-04-14 Robert Bosch Gmbh Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
JP3632543B2 (ja) * 1999-02-19 2005-03-23 三菱電機株式会社 データ記憶方法および情報処理装置
JP2000298626A (ja) * 1999-04-13 2000-10-24 Nec Corp フラッシュメモリ回路の活性化方式及びその方法
JP2000339232A (ja) * 1999-05-31 2000-12-08 Oki Data Corp 不揮発性メモリへのカウント値の書込み方法
JP2001053891A (ja) * 1999-08-17 2001-02-23 Hitachi Kokusai Electric Inc 携帯端末装置のプログラム更新方法およびその装置
JP2003316592A (ja) * 2002-04-25 2003-11-07 Mitsubishi Electric Corp プログラム情報のフラッシュrom管理方法
JP2004071033A (ja) * 2002-08-05 2004-03-04 Mitsubishi Electric Corp フラッシュメモリのデータ記録法
JP5346253B2 (ja) * 2009-08-24 2013-11-20 株式会社日立ソリューションズ ファームウェア更新システム、及び情報機器、並びにプログラム
JP2011150383A (ja) * 2010-01-19 2011-08-04 Hitachi Medical Corp ファームウェア書き込み方法

Also Published As

Publication number Publication date
JP2013205933A (ja) 2013-10-07

Similar Documents

Publication Publication Date Title
JP5683518B2 (ja) ファームウェア更新装置およびその方法
CN102971717B (zh) 存储器访问表保存和复原系统及方法
JP5113700B2 (ja) ファームウェア更新装置及び方法
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
JP5057519B2 (ja) 記憶装置に記憶されたコンテンツをインプレース更新するための方法およびシステム
JP5346253B2 (ja) ファームウェア更新システム、及び情報機器、並びにプログラム
JP3906825B2 (ja) 計算機システム、計算機システム起動方法およびプログラム
CN106155915B (zh) 数据存储的处理方法及装置
US7971022B2 (en) Apparatus and method of processing data of non-volatile memory using transaction block
WO2009017368A2 (en) Input/output control method and apparatus optimized for flash memory
US20190220221A1 (en) Method, device and computer program product for writing data
KR20070006502A (ko) 데이터 저장장치, 데이터 저장방법, 및 그 기록매체
JP2017174387A (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法
JP5057887B2 (ja) データ更新装置及びデータ更新方法及びデータ更新プログラム
JP6575157B2 (ja) ファームウェアのダウンロード方法及びファームウェア組込機器
KR20150094292A (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
US20150339198A1 (en) Semiconductor memory device including nonvolatile semiconductor memory, control method of memory controller, and memory controller
JP2010009553A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP5521437B2 (ja) 携帯端末装置、ソフトウェア更新方法及びプログラム
JP2006350572A (ja) 記憶装置、画像形成装置及びシステムデータ管理方法
JP4572205B2 (ja) フラッシュメモリドライブ装置、その制御方法及びそのプログラム
WO2018150820A1 (ja) 情報処理装置
JP2005222531A (ja) データ記録装置及びデータ記録方法
US8555020B2 (en) Reclaiming space occupied by an expired variable record in a non-volatile record storage
JP6242711B2 (ja) ストレージ装置及びデータ管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140821

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: 20141216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150113

R150 Certificate of patent or registration of utility model

Ref document number: 5683518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250