JP2005321843A - ファームウェアの書換え方法 - Google Patents
ファームウェアの書換え方法 Download PDFInfo
- Publication number
- JP2005321843A JP2005321843A JP2004136988A JP2004136988A JP2005321843A JP 2005321843 A JP2005321843 A JP 2005321843A JP 2004136988 A JP2004136988 A JP 2004136988A JP 2004136988 A JP2004136988 A JP 2004136988A JP 2005321843 A JP2005321843 A JP 2005321843A
- Authority
- JP
- Japan
- Prior art keywords
- firmware
- module
- version
- rewriting
- flash memory
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】 ファームウェア書換え後のブートに失敗した場合、以前のファームウェアバージョンからのブートを容易にする。
【解決手段】 フラッシュメモリ内の限られた領域に2つのファームウェアを格納する為、フラッシュメモリを書込み可能な単位で分割し、書換え時は変更のあるモジュール単位で書き換える。変更のあるモジュールの差分データを作り、書き換え領域の縮小を行う。フラッシュメモリ内のモジュールの領域と空き領域を管理し、以前のレビジョンモジュールを上書き消去せず残し、書換え後のブートに失敗した場合、以前のバージョンのファームウェアからの復旧を可能とする。
【選択図】 図1
【解決手段】 フラッシュメモリ内の限られた領域に2つのファームウェアを格納する為、フラッシュメモリを書込み可能な単位で分割し、書換え時は変更のあるモジュール単位で書き換える。変更のあるモジュールの差分データを作り、書き換え領域の縮小を行う。フラッシュメモリ内のモジュールの領域と空き領域を管理し、以前のレビジョンモジュールを上書き消去せず残し、書換え後のブートに失敗した場合、以前のバージョンのファームウェアからの復旧を可能とする。
【選択図】 図1
Description
本発明はファームウェアの書換え方法に関し、特に書換え可能なフラッシュメモリを備えるシステムのファームウェアの書換えを安全に行う方法に関する。
従来、ファームウェアを格納するフラッシュメモリを複数面持たないシステムのファームウェアの書換えは、ファームウェアイメージ全体の書換え、もしくは特開2002−342100号公報にあるような変更部分のみの書換えにより、フラッシュメモリ内のファームウェアイメージを常に新しいバージョンのファームウェアに上書き更新していた。
従来の上書き方法では書換えを行ったバージョンのファームウェアのブートに失敗した場合、以前のバージョンのファームウェアに戻す方法は、再度ファームウェアの書換えを行う他なく、書換え作業に要する時間やコストがかかるという課題がある。
前記課題を解決するため、本発明のファームウェア書換え方法は、ファームウェアを格納するフラッシュメモリ内を複数の領域に分割し、フラッシュメモリ内のファームウェアを構成するモジュールの領域と空き領域の書換え優先度を管理し、以前のバージョンのモジュールを上書きせず書込みを行う領域を決定し、書込みを行う単位をファームウェア全体でなく、ファームウェアを構成するモジュール単位とし、尚且つ変更のあるモジュールのみとすることで、書換えに必要なフラッシュメモリの領域を縮小し、以前のファームウェアバージョンを残し、復旧を可能にするものである。
本発明によりファームウェアの書換え後のブートに失敗した場合、以前のバージョンのファームウェアからブートを行うことが可能な為、以前のファームウェアバージョンに戻す作業時間が不要となり、さらに通常のファームウェアの書換え作業時間の短縮が可能である。
図1、図2、図3を用いてフラッシュメモリに2つのファームウェアを格納する為の管理方法を述べる。図1は本発明においてファームウェアを格納するフラッシュメモリ100の図であり、1つのファームウェアバージョンしか存在しない場合は、ファームウェアイメージそのものである。ファームウェアイメージは書込みをするファームウェア全体のデータであり、初期書込みの際に妥当なモジュール配置となるエントリブロック101内情報を含むものとする。例としてフラッシュメモリ100のファームウェアバージョン0003を構成するモジュールは、フラッシュメモリ100で実行される最初のコードのモジュール1(レビジョン1)、RAM上で展開実行されるモジュール2(レビジョン2)、モジュール3(レビジョン1)とする。
エントリブロック101には通常、パワーオン直後最初に実行するコードのアドレスを示すファームウェアエントリポイント106が存在するが、2つのバージョンのモジュール1が同一レビジョンでないことを考慮し、バージョンに対応したモジュール1のエントリポイントを判断する為、ファームウェアエントリポイント106にはエントリポイント判定処理110のアドレスを登録する。
エントリポイント判定処理110は、図2のフラッシュメモリ100の領域管理テーブル107と図3のバージョン構成情報108を参照し、対象となるバージョンのモジュール1のジャンプ先アドレスをサーチし、ジャンプを行う。
動作するファームウェアバージョンは通常、書換えを行ったファームウェアのバージョンであり、カレントファームウェアバージョン109に情報を格納する。
図2はフラッシュメモリ100のモジュールのレビジョン、配置位置、サイズ、書換え優先度を管理している領域管理テーブル107の例である。書換え優先度は書換え時に以前のモジュールを上書き消去しないように、書換え可能な領域を管理するものである。書換え優先度は空き領域を“高”とし、優先的に書込みが行われる。カレントファームウェアバージョン109を構成するモジュールの領域は“書換え禁止”とし、書込みを認めない。以前のバージョンを構成するモジュールの領域は書換え優先度“低”とし、空き領域のサイズでは足りない場合に書換えを認める。モジュールのレビジョン、配置位置、サイズは、図3のバージョン構成情報108のカレントファームウェアバージョンを構成するモジュールのレビジョン情報と共に参照する。カレントファームウェアバージョンのファームウェアをブートする為、必要なモジュール構成をバージョン構成情報108から取得し、該当するレビジョンのモジュールを領域管理テーブル107の配置位置から実行のエントリポイント取得や、RAM上へ展開する為に読み出しを行う。
RAM上に展開して実行するモジュールが差分データである場合、先にベースとしたレビジョンのモジュールをRAM上に展開し、差分データに置換し命令を実行する。
図4と図5のフローを用いてファームウェア書換え時に従来のバージョンのファームウェアを消去せずに2つのファームウェアを格納する方法について説明する。
ステップS200:新たに書込まれるファームウェアイメージの各モジュールのレビジョンを比較する。同一であればそのモジュールの書込みは不要である。
書込みが不要な場合、次のモジュールの比較を行う。
ステップS201:書込むモジュールがRAM上に展開して実行するモジュールか判断する。
ステップS200:新たに書込まれるファームウェアイメージの各モジュールのレビジョンを比較する。同一であればそのモジュールの書込みは不要である。
書込みが不要な場合、次のモジュールの比較を行う。
ステップS201:書込むモジュールがRAM上に展開して実行するモジュールか判断する。
RAM上で実行可能なモジュールであれば、ステップS202で以前のレビジョンのモジュールとの差分データを抽出する。差分データにはベースとなったモジュールのレビジョンと、差分位置、差分の長さ、データ情報を抽出しておく。RAM上で実行可能でないモジュールである場合はモジュールデータそのものを書込み対象のデータとする。
ステップS203:抽出した差分データのブロックサイズがモジュールでデータを書込む為に必要なブロックサイズより小さい場合、ステップS204にて差分データを書込み対象データとする。サイズが同一の場合は差分にするメリットが無い為、ステップS205にてモジュールデータを書込み対象データとする。
ステップS206:領域管理テーブル107の書換え優先度を参照し、書換え優先度“高”の空き領域に書込み対象データが格納可能か判定する。
ステップS207:空き領域に格納できない場合、書換え優先度“低”である二世代前のレビジョンのモジュール領域に格納可能か判定する。格納不可能な場合は2つのファームウェアイメージを格納不可能とし、ステップS208にてフラッシュメモリ100へ新たなバージョンのファームウェアイメージ全体を書込み、処理を終了する。
ステップS209:格納可能な領域を発見した場合、書込み対象データを書込む。
ステップS210:全てのモジュールについてステップS200からの処理を行う。
ステップS211:全てのモジュールの書込みが終了した時点で領域管理テーブル107とバージョン構成情報108、カレントファームウェアバージョン109を更新する。
ステップS203:抽出した差分データのブロックサイズがモジュールでデータを書込む為に必要なブロックサイズより小さい場合、ステップS204にて差分データを書込み対象データとする。サイズが同一の場合は差分にするメリットが無い為、ステップS205にてモジュールデータを書込み対象データとする。
ステップS206:領域管理テーブル107の書換え優先度を参照し、書換え優先度“高”の空き領域に書込み対象データが格納可能か判定する。
ステップS207:空き領域に格納できない場合、書換え優先度“低”である二世代前のレビジョンのモジュール領域に格納可能か判定する。格納不可能な場合は2つのファームウェアイメージを格納不可能とし、ステップS208にてフラッシュメモリ100へ新たなバージョンのファームウェアイメージ全体を書込み、処理を終了する。
ステップS209:格納可能な領域を発見した場合、書込み対象データを書込む。
ステップS210:全てのモジュールについてステップS200からの処理を行う。
ステップS211:全てのモジュールの書込みが終了した時点で領域管理テーブル107とバージョン構成情報108、カレントファームウェアバージョン109を更新する。
ファームウェアのブート状態を管理しておき、正常にブートしなかった場合はバージョン構成情報108から以前のファームウェアバージョンを読み出し、カレントファームウェアバージョン109を以前のバージョンに書換え、領域管理テーブルの書換え優先度を更新することによって以前のバージョンのファームウェアからのブートが可能となる。
0003…ファームウェアイメージ、100…フラッシュメモリ、101…エントリブロック、102…モジュール1、103…モジュール2、104…モジュール3、105…空き領域、106…ファームウェアエントリポイント、107…領域管理テーブル、108…バージョン構成情報、109…カレントファームウェアバージョン、110…エントリポイント判定処理。
Claims (3)
- ファームウェアを格納するフラッシュメモリ内を複数の領域に分割し、ファームウェアを構成するモジュールが格納されている領域と、空き領域とを書込みの優先度を設定して管理し、バージョンアップ時には以前のファームウェアバージョンのモジュールを上書き消去せず、復旧が可能なように優先度を参照して書込む領域を自動判別することを特徴としたファームウェアの書換え方法。
- ファームウェアを構成する各モジュールを、モジュール処理開始エントリポイントへのジャンプにより処理実行される独立したモジュールで構成し、書換え時には変更のあるモジュールのみを書込み、ファームウェアバージョンを構成するモジュールレビジョンを管理し、バージョンに応じて動作させるモジュール構成を切り換えることで、限られたフラッシュメモリに2つのバージョンのファームウェアを格納することを特徴とした請求項1のファームウェアの書換え方法。
- 変更対象となるモジュールのうち、モジュールをRAM上に展開して動作するモジュールに関しては、新しいファームウェアバージョンのモジュールと、以前のファームウェアバージョンのモジュールとの差分データを作成し、モジュールを書込む為に必要なブロック数より差分データを書込む為に必要なブロック数の方が少ない場合は差分データを書込むことを特徴とした請求項1又は、請求項2のファームウェアの書換え方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004136988A JP2005321843A (ja) | 2004-05-06 | 2004-05-06 | ファームウェアの書換え方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004136988A JP2005321843A (ja) | 2004-05-06 | 2004-05-06 | ファームウェアの書換え方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005321843A true JP2005321843A (ja) | 2005-11-17 |
Family
ID=35469111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004136988A Pending JP2005321843A (ja) | 2004-05-06 | 2004-05-06 | ファームウェアの書換え方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005321843A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006251768A (ja) * | 2005-02-10 | 2006-09-21 | Alpine Electronics Inc | 地図更新処理用データ作成方法、地図更新方法及び装置 |
JP2008165729A (ja) * | 2006-12-07 | 2008-07-17 | Denso Corp | マイクロコンピュータ |
EP1956807A1 (en) | 2005-11-07 | 2008-08-13 | Sony Ericsson Mobile Communications Japan, Inc. | Communication terminal apparatus and computer program for graphical display of contacts |
WO2010035597A1 (ja) * | 2008-09-24 | 2010-04-01 | 日立ソフトウエアエンジニアリング株式会社 | ファームウェア更新システム、及び更新イメージ生成・配布サーバ装置 |
US7934050B2 (en) | 2006-12-07 | 2011-04-26 | Denso Corporation | Microcomputer for flash memory rewriting |
JP2014142799A (ja) * | 2013-01-24 | 2014-08-07 | Hitachi Ltd | 情報処理装置、情報処理方法およびサーバ |
-
2004
- 2004-05-06 JP JP2004136988A patent/JP2005321843A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006251768A (ja) * | 2005-02-10 | 2006-09-21 | Alpine Electronics Inc | 地図更新処理用データ作成方法、地図更新方法及び装置 |
EP1956807A1 (en) | 2005-11-07 | 2008-08-13 | Sony Ericsson Mobile Communications Japan, Inc. | Communication terminal apparatus and computer program for graphical display of contacts |
JP2008165729A (ja) * | 2006-12-07 | 2008-07-17 | Denso Corp | マイクロコンピュータ |
US7934050B2 (en) | 2006-12-07 | 2011-04-26 | Denso Corporation | Microcomputer for flash memory rewriting |
JP4743182B2 (ja) * | 2006-12-07 | 2011-08-10 | 株式会社デンソー | マイクロコンピュータ |
WO2010035597A1 (ja) * | 2008-09-24 | 2010-04-01 | 日立ソフトウエアエンジニアリング株式会社 | ファームウェア更新システム、及び更新イメージ生成・配布サーバ装置 |
JP2010079438A (ja) * | 2008-09-24 | 2010-04-08 | Hitachi Software Eng Co Ltd | ファームウェア更新システム、及び更新イメージ生成・配布サーバ装置 |
JP2014142799A (ja) * | 2013-01-24 | 2014-08-07 | Hitachi Ltd | 情報処理装置、情報処理方法およびサーバ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8726262B2 (en) | Firmware update system and information apparatus, and program | |
US7558904B2 (en) | Controller, data memory system, data rewriting method, and computer program product | |
CN110096300B (zh) | 一种fpga程序文件备份管理***、运行方法及升级方法 | |
KR20010070416A (ko) | 컴퓨터 | |
JP2001209543A (ja) | フラッシュ・マイコンにおけるプログラム書き換え方法 | |
JP2016062319A (ja) | データ読み出し装置、プログラムおよびデータ読み出し方法 | |
JP2006085342A (ja) | メモリ制御装置、メモリ制御方法、プログラム | |
JP2007226798A (ja) | フラッシュメモリを制御する装置および方法 | |
JP2005321843A (ja) | ファームウェアの書換え方法 | |
JP2009048557A (ja) | データ更新装置及びデータ更新方法及びデータ更新プログラム | |
JP4826232B2 (ja) | 情報処理装置およびブートプログラムの書き換え方法 | |
US20110082995A1 (en) | Information processing apparatus | |
JP2011175361A (ja) | データ記憶装置及びデータ記憶方法 | |
JP2007122419A (ja) | 不揮発性データ更新システム、不揮発性データ更新方法及びプログラム | |
JP2009276883A (ja) | 半導体補助記憶装置 | |
JP4468342B2 (ja) | データ管理方法 | |
JP4910402B2 (ja) | 不揮発性メモリの書き換え装置及び書き換え方法 | |
JP2014112419A (ja) | 携帯端末装置、ソフトウェア更新方法、動作制御方法及びプログラム | |
JP2005128613A (ja) | 画像形成装置 | |
JP2011039825A (ja) | ファームウェア更新方法及びファームウェア更新装置 | |
JP4517607B2 (ja) | 電子機器及びそのプログラム更新方法 | |
JP2007328824A (ja) | メモリカード、不揮発性メモリ、不揮発性メモリのデータ書込み方法及びデータ書込み装置 | |
CN116954499A (zh) | 模拟eeprom的数据处理方法及装置 | |
JP2005222531A (ja) | データ記録装置及びデータ記録方法 | |
JP2005071124A (ja) | 不揮発メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060515 |