JP4826232B2 - 情報処理装置およびブートプログラムの書き換え方法 - Google Patents

情報処理装置およびブートプログラムの書き換え方法 Download PDF

Info

Publication number
JP4826232B2
JP4826232B2 JP2005341168A JP2005341168A JP4826232B2 JP 4826232 B2 JP4826232 B2 JP 4826232B2 JP 2005341168 A JP2005341168 A JP 2005341168A JP 2005341168 A JP2005341168 A JP 2005341168A JP 4826232 B2 JP4826232 B2 JP 4826232B2
Authority
JP
Japan
Prior art keywords
area
boot program
program
code
common area
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
JP2005341168A
Other languages
English (en)
Other versions
JP2007148695A (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.)
Konica Minolta Business Technologies Inc
Original Assignee
Konica Minolta Business Technologies Inc
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 Konica Minolta Business Technologies Inc filed Critical Konica Minolta Business Technologies Inc
Priority to JP2005341168A priority Critical patent/JP4826232B2/ja
Publication of JP2007148695A publication Critical patent/JP2007148695A/ja
Application granted granted Critical
Publication of JP4826232B2 publication Critical patent/JP4826232B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、ブートプログラムの書き換え方法およびブートプログラムの書き換えが行なわれる情報処理装置に係わり、特に、ブートプログラム書き換えのために専用に消費されるメモリ容量を低減するための技術に関する。
CPU(Central Processing Unit)を使用した装置では、電源オン時やリセット時にCPUが最初に実行する、ブートプログラムと呼ばれるソフトウェアプログラムを備えており、該ブートプログラムを実行することでシステムの基本的な初期化動作を行なうようになっている。
ブートプログラムはシステムを起動するための基本プログラムであることから、ブートプログラムの書き換え処理においては、書き換え中に電源断があっても、電源オン後にシステムが正常に起動されることを保証する必要がある。
そこで、このような電源断に対する保証を行なうために、ブートプログラムを格納するための不揮発メモリエリアを2つ設けておき、ブートプログラムの書き換え時には、使用していないエリアに対して新たなブートプログラムの書き込みを行ない、書き込み完了後に専用のアドレス変換回路を使用することで、以前のブートプログラムの格納エリアに対するアクセスが、新たなブートプログラムの格納エリアに対するアクセスとなるようにアドレス変換する方法が提案されている(たとえば、特許文献1参照。)。
また、不揮発メモリに、ブートプログラムを格納するための2つの格納エリアと、いずれの格納エリアのブートプログラムで起動すべきかを示す判別フラグの保存専用エリアとを設け、ブートプログラムの書き換え時には、使用していない格納エリアに対して新たなブートプログラムの書き込みを行ない、書き込み完了後に判別フラグの値を変更し、次回の起動時には判別フラグを参照して、どちらかの格納エリアにあるブートプログラムを起動する技術が開示されている(たとえば、特許文献2参照。)。
特開2001−209543号公報 特開2004−355310号公報
上記の技術では、いずれもブートプログラムを格納するためのエリアを2つ有しており、不揮発メモリのメモリ消費量が増加してしまうという問題があった。
また、判別フラグの保存専用エリアを設ける書き換え方法においては、メモリの消費量がさらに増加してしまう。特に、フラッシュメモリのようにデータの書き換えがセクタ単位に制限されている不揮発メモリを使用する場合には、判別フラグを保存するために多くのメモリが消費されてしまうという問題があった。たとえば、幅16ビットのフラッシュメモリを4個並列に使用して64ビット幅でデータをアクセスするように構成した場合には、判別フラグ(たとえば、必要量1バイト)を保存するために4セクタ(たとえば、512キロバイト)が消費されてしまい、多くのメモリが無駄になっていた。
本発明は、上記の問題を解決しようとするものであり、電源断に対する動作保証を行ないつつ、書き換え専用に消費されるメモリ容量を削減することのできるブートプログラムの書き換え方法および情報処理装置を提供することを目的としている。
上記の目的は以下に示す各項の発明により達成される。
(1)CPUと、
起動時に前記CPUによって実行される判別プログラムが記憶された判別プログラム領域と、ブートプログラムが記憶されたブートプログラム領域と、第1のアプリケーションプログラムと更新プログラムとを記憶するためのアプリケーションプログラム領域と、第2のアプリケーションプログラムまたはブートプログラムを記憶するための共通領域とを有する不揮発性メモリと
を備えた情報処理装置であって
前記CPUは、
ブートプログラムの更新時に、前記アプリケーションプログラム領域に記憶された更新プログラムに基づいて、新たなブートプログラムを取得し、前記共通領域に記憶された前記第2のアプリケーションプログラムを削除して前記取得した新たなブートプログラムの書き込みを行い、
起動時に、前記判別プログラムに基づいて、前記共通領域にブートプログラムが存在するか否かを判別し、前記共通領域にブートプログラムが存在すると判別したときは、該共通領域のブートプログラムを前記ブートプログラム領域に複製した後、前記共通領域に記憶された内容を消去し、前記ブートプログラム領域に複製されたブートプログラムを実行し、当該ブートプログラムを実行した後に前記アプリケーションプログラム領域に記憶された前記第1のアプリケーションプログラムを実行するように制御する
ことを特徴とする情報処理装置。
上記発明によれば、ブートプログラム格納用のメモリに、判別プログラムが記憶された判別プログラム領域と、ブートプログラムが記憶されたブートプログラム領域と、アプリケーションプログラムまたはブートプログラムを記憶するための共通領域とを設けておき、共通領域に新たなブートプログラムが存在するか否かをシステム起動時に調べ、存在するときは該共通領域にある新たなブートプログラムをブートプログラム領域に複製した後、共通領域の内容を消去し、その後、ブートプログラム領域に複製したブートプログラムが実行される。
すなわち、共通領域は、通常はアプリケーションプログラムの格納領域として使用されるが、ブートプログラムの書き換え時には、新たなブートプログラムを一時格納するためのエリアとして利用される。これにより、ブートプログラムの書き換え専用に消費されるメモリ容量が削減される。
なお、共通領域にブートプログラムが存在しないときは、ブートプログラム領域にあるブートプログラムがシステムの起動に使用される。従って、共通領域に対する新たなブートプログラムの書き込み途中で電源断した場合は、共通領域に新たなブートプログラムが存在しないと判断され、電源オン後はブートプログラム領域のブートプログラムでシステムが起動される。一方、共通領域のブートプログラムをブートプログラム領域に複製中に電源断があった場合は、共通領域にブートプログラムが存在しているので、電源オン後に複製処理が実行される。このようにブートプログラム書き換え中のいずれの時点で電源断があっても、電源オン後の動作が保証される。
(2) 前記CPUは、前記ブートプログラムの更新時に、前記共通領域に対する前記取得した新たなブートプログラムの書き込みを行なった後、更に、前記共通領域のブートプログラムを前記ブートプログラム領域に複製し、さらにその後、前記共通領域の内容を消去するように制御する
ことを特徴とする(1)に記載の情報処理装置。
上記発明では、ユーザからの更新指示などに基づいて更新プログラムが実行されると、まず、新たなブートプログラムを共通領域に書き込み、その後、共通領域のブートプログラムをブートプログラム領域に複製し、さらにその後、共通領域の内容を消去するというステップでブートプログラムの書き換えが行なわれる。なお、更新後はCPUのリセットや電源オフ・オンが行なわれ、ブートプログラム領域にある書き換え後のブートプログラムがシステムの起動に使用される。また、更新プログラムによるブートプログラムの書き換え中に電源断があっても、電源オン後は判別プログラムが起動されるので、(1)で説明したように電源オン後の動作は保証される。
(3)ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の末尾に設け、
前記CPUは、前記判別プログラムに基づいて、前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別するように制御する
ことを特徴とする(1)または(2)に記載の情報処理装置。
上記発明によれば、共通領域の末尾をコード領域に割り当て、該コード領域に所定の判別コードが存在するか否かに基づいて、共通領域にブートプログラムが存在するか否かが判別される。コード領域を共通領域の一部に設けることで、判別コード専用の格納領域を別途設ける必要がなくなり、メモリ消費量が削減される。また、共通領域の末尾にコード領域を配置することで、コード領域を除く共通領域が該コード領域で分断されずに連続した領域となり、アプリケーションプログラムやブートプログラムを格納する際の領域管理が容易になる。
(4)ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の先頭に設け、
前記CPUは、前記判別プログラムに基づいて、前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別するように制御する
ことを特徴とする(1)または(2)に記載の情報処理装置。
上記発明によれば、共通領域の先頭をコード領域に割り当て、該コード領域に所定の判別コードが存在するか否かに基づいて、共通領域にブートプログラムが存在するか否かが判別される。コード領域を共通領域の一部に設けることで、判別コード専用の格納領域を別途設ける必要がなくなり、メモリ消費量が削減される。また、共通領域の先頭にコード領域を配置することで、コード領域を除く共通領域が該コード領域で分断されずに連続した領域となり、アプリケーションプログラムやブートプログラムの格納する際の領域管理が容易になる。
(5) 前記CPUは、ブートプログラムの更新時に、前記コード領域以外の前記共通領域に対して新たなブートプログラムの書き込みを行なった後、前記コード領域に前記判別コードを書き込ように制御する
ことを特徴とする(3)または(4)に記載の情報処理装置。
上記発明では、ユーザからの更新指示などに基づいて更新プログラムが実行されると、まず、新たなブートプログラムを共通領域に書き込み、その後、コード領域に判別コードを書き込み、共通領域のブートプログラムをブートプログラム領域に複製し、さらにその後、共通領域(コード領域を含む)の内容を消去するというステップでブートプログラムの更新が行なわれる。該順序で書き換えることにより、コード領域に判別コードが存在するときは共通領域に新たなブートプログラムが完全な形で存在することが保証され、コード領域に判別コードがないときはブートプログラム領域にブートプログラムが完全な形で存在することが保証される。
)前記不揮発性メモリは、フラッシュメモリであり、
前記コード領域から読み出された値が、内容の消去されたフラッシュメモリから読み出される値と同一の場合に、前記コード領域に判別コードが存在しないと判定する
ことを特徴とする(3)乃至()のいずれか1つに記載の情報処理装置。
フラッシメモリはデータを書き換える際に、一旦、データを消去する必要がある。従って、判別コードの不存在を示す値を、内容の消去されたフラッシメモリから読み出される値と異なる値に設定しておけば、ブートプログラムが格納されていた共通領域や一時記憶領域を消去した時点で同時に、コード領域の内容がブートプログラムの不存在を示す値になり、不存在を示す値に変更するためのタイムラグがなくなって、電源断への対応がより確実なものになる。
)前記判別プログラム領域の先頭アドレスは、前記CPUが起動時に最初にプログラムコードをフェッチするアドレスである
ことを特徴とする(1)乃至()のいずれか1つに記載の情報処理装置。
)不揮発性メモリに、ブートプログラムが記憶されたブートプログラム領域と、第1のアプリケーションプログラムと更新プログラムとを記憶するためのアプリケーションプログラム領域と、第2のアプリケーションプログラムまたはブートプログラムを記憶するための共通領域とを設けておき、
ブートプログラムの更新時に、前記アプリケーションプログラム領域に記憶された更新プログラムに基づいて、新たなブートプログラムを取得し、前記共通領域に記憶された前記第2のアプリケーションプログラムを削除して前記取得した新たなブートプログラムの書き込みを行い、
起動時に
前記共通領域にブートプログラムが存在するか否かを判別し、
前記共通領域にブートプログラムが存在すると判別したときは、該共通領域のブートプログラムを前記ブートプログラム領域に複製し、
前記複製後に、前記共通領域に記憶された内容を消去し、
前記消去後に、前記ブートプログラム領域に複製されたブートプログラムを実行し、
当該ブートプログラムを実行した後に前記アプリケーションプログラム領域に記憶された前記第1のアプリケーションプログラムを実行する
ことを特徴とするブートプログラムの書き換え方法。
)前記ブートプログラム領域のブートプログラムを更新する際に、
前記共通領域に対する前記取得した新たなブートプログラムを書き込み、
前記書き込み後に、更に、前記共通領域のブートプログラムを前記ブートプログラム領域に複製し、
前記複製後に、前記共通領域の内容を消去する
ことを特徴とする()に記載のブートプログラムの書き換え方法。
10)ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の末尾に設けておき、
前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別する
ことを特徴とする(8)または(9)に記載のブートプログラムの書き換え方法。
11)ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の先頭に設けておき、
前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別する
ことを特徴とする(8)または(9)に記載のブートプログラムの書き換え方法。
12)ブートプログラムを更新する際に、
前記コード領域以外の前記共通領域に対して新たなブートプログラムを書き込み、
前記新たなブートプログラムの書き込み後に、前記コード領域に前記判別コードを書き込
ことを特徴とする(10)または(11)に記載のブートプログラムの書き換え方法。
13)前記不揮発性メモリは、フラッシュメモリであり、
前記コード領域から読み出された値が、内容の消去されたフラッシュメモリから読み出される値と同一の場合に、前記コード領域に判別コードが存在しないと判定する
ことを特徴とする(10)乃至(12)のいずれか1つに記載のブートプログラムの書き換え方法。
本発明に係わる情報処理装置およびブートプログラムの書き換え方法によれば、ブートプログラムの書き換え専用に消費されるメモリ容量が削減されて、メモリを有効活用することができる。
以下、図面に基づき本発明の実施の形態を説明する。
図1は、本発明の実施の形態に係わる情報処理装置10の構成を示すブロック図である。情報処理装置10は、CPU11と、メモリ12と、フラッシュメモリ13と、デバイスコントローラ14とを、システムバス15で接続して構成されている。
CPU11は、該情報処理装置10の動作を統括制御する機能を果たし、フラッシュメモリ13は、CPU11が実行する各種のプログラムを記憶するメモリである。フラッシュメモリ13は、電気的に消去および書き換え可能な不揮発性のメモリである。フラッシュメモリ13には、起動の際に用いるブートプログラムや後述する判別プログラム、アプリケーションプログラムなどが格納される。フラッシュメモリ13に代えて他の種類の不揮発性メモリを使用してもよい。
メモリ12は、CPU11がフラッシュメモリ13に格納されているプログラムを実行する際のワークメモリとして使用される電気的に書き換え可能なメモリである。デバイスコントローラ14は、書き換えに用いる新たなブートプログラムを外部のパーソナルコンピュータなどから取り込むための入出力インターフェースであり、たとえば、USB(Universal Serial Bus)やIEEE(Institute of Electrical and Electronics Engineers)1284などに対応したものである。メモリ12は、外部から受信した新たなブートプログラムを一時的に保存するための領域としても使用される。
図2(a)はフラッシュメモリ13のメモリマッピングを示し、図2(b)はメモリ12のメモリマッピングを示している。図2(a)に示すように、フラッシュメモリ13のアドレスAから始まる領域21は、後述する判別プログラムが予め格納された判別プログラム領域21である。アドレスBから始まるブートプログラム領域22はブートプログラムが格納される領域である。アドレスCから始まるアプリケーションプログラム領域23は、各種のアプリケーションプログラムの格納に使用される領域である。アプリケーションプログラム領域23には、ブートプログラムを更新するための後述する更新プログラムなどが記憶される。
アドレスDから始まる共通領域24は、アプリケーションプログラムの格納およびブートプログラムを格納するために使用される領域である。アドレスEから始まるコード領域24aは、共通領域24内の末尾の一部をなす領域であり、共通領域24に新たなブートプログラムが完全な状態で存在していることを示す判別コードの格納領域として使用される。ここでは、コード領域24aとして共通領域24の末尾の4バイトを割り当ててある。共通領域24は、アプリケーションプログラム領域23の後方に連続して配置されており、コード領域24aを除く部分は、アプリケーションプログラムを格納するときにはアプリケーションプログラム領域23と一体となった連続領域として使用することができる。
情報処理装置10の電源投入時やリセット実行時には、CPU11は、フラッシュメモリ13のアドレスAからプログラムコードをフェッチして実行するように設定されている。
なお、フラッシュメモリ13は、その特性上、データの書き換えがセクタ単位に制限されているので、判別プログラム領域21、ブートプログラム領域22、アプリケーションプログラム領域23、共通領域24のそれぞれの境界がセクタの境界となるように設定してある。コード領域24aは、1つのセクタを専用に使用するものではなく、共通領域24を構成する最終セクタ内の末尾の一部領域となっている。
また、図2(b)に示すように、メモリ12のアドレスMAから始まるバッファ領域28は、デバイスコントローラ14を通じて外部から入手した新たなブートプログラムが一時的に保存される領域である。
次に、ブートプログラムの書き換え動作について説明する。
図3は、更新プログラムによるブートプログラムの更新処理の流れを示している。また、図4、図5および図6は、ブートプログラムを更新するときのフラッシュメモリ13の記憶内容の遷移を示している。更新プログラムは、情報処理装置10が正常に立ち上がった後、図示省略の操作部やデバイスコントローラ14を介して外部端末からブートプログラムの更新指示を受けた場合に実行される。
図4(a)は更新前のフラッシュメモリ13の記憶内容を示している。ブートプログラム領域22には現用のブートプログラムが格納されており、アプリケーションプログラム領域23および共通領域24(コード領域24aを除く)には、アプリケーションプログラムが格納されている。更新プログラムは、たとえば、アプリケーションプログラム領域23に記憶されている。コード領域24aは消去状態になっている。フラッシュメモリ13の特性から、消去状態のコード領域24aを読み出すと0xFFFFFFFFの値が読み出される。すなわち、内容の消去されたフラッシュメモリから読み出される値である0xFFFFFFFFは、コード領域24aに判別コードが存在しない状態を示す値として定義してある。
図3に戻ると、情報処理装置10においては、CPU11が更新プログラムを実行することにより、以下の動作が行なわれる。まず、デバイスコントローラ14を介してパーソナルコンピュータなどの外部機器から、書き換えるべき新たなブートプログラムを受信し、該新たなブートプログラムがメモリ12のアドレスMAから始まるバッファ領域28に一時的に保持される(ステップS101)。また、新たなブートプログラム全体の受信およびバッファ領域28への保存が完了すると(ステップS102;Y)、共通領域24に記憶されている内容を消去する(ステップS103、図4(b))。
共通領域24の内容の消去が完了すると(ステップS104;Y)、バッファ領域28に保存してある新たなブートプログラムを共通領域24に書き込み、複製する(ステップS105、図4(c))。書き込みは共通領域24の先頭アドレスDから行なわれる。メモリ12からフラッシュメモリ13へのブートプログラムの複製の完了後、コード領域24aに対して判別コードを書き込む(ステップS106、図5(d))。なお、新たなプログラムの格納に共通領域24の最後のセクタが使用される場合は、該最後のセクタへ書き込む際に判別コードをコード領域24aに対して書き込む。判別コードの値は、消去状態のメモリ12から読み出される値(0xFFFFFFFF)とは異なる値になっている。
次に、CPU11は、ブートプログラム領域22の内容を消去し(ステップS107、図5(e))、該消去が完了すると(ステップS108;Y)、共通領域24に格納されている新たなブートプログラムをブートプログラム領域22に複製する(ステップS109、図5(f)、図6(g))。その後、共通領域24の内容を消去し(ステップS110、図6(h))、消去が完了すると(ステップS111;Y)、CPU11をリセット(ステップS112)して処理を終了する(エンド)。
上記の処理によれば、共通領域24に新たなブートプログラムを格納する際に、それ以前に共通領域24に格納されていたアプリケーションプログラムは消去されるが、通常、ブートプログラムを更新したときは、それに伴ってアプリケーションプログラムの更新やアプリケーションプログラムのアドレス配置を変更することが行なわれるので、ブートプログラムの更新時に共通領域24の内容を消去しても支障はない。図6(i)は、ブートプログラムの更新後、アプリケーションプログラム領域23および共通領域24にアプリケーションプログラムが改めて格納された状態の一例を示している。
次に、情報処理装置10の電源投入時またはリセット時の動作を図7に基づいて説明する。
電源投入またはCPU11に対するリセットが行なわれると(ステップS201)、CPU11は、判別プログラム領域21の先頭アドレスAからプログラムコードのフェッチを開始し、該判別プログラム領域21に格納されている判別プログラムの実行を開始する(ステップS202)。CPU11が判別プログラムを実行することにより以下の動作が行なわれる。まず、コード領域24aの内容を読み出し(ステップS203)、読み出した値が0xFFFFFFFFか否かを判定する(ステップS204)。
コード領域24aから読み出した値が0xFFFFFFFFの場合は(ステップS204;Y)、共通領域24に新たなブートプログラムが存在しないと判断し、CPU11のプログラムカウンタをブートプログラム領域22の先頭アドレスに変更し(ステップS210)、ブートプログラム領域22に格納されている現行のブートプログラムを実行する(ステップS211)。該ブートプログラムによる起動処理が終了すると(エンド)、その後は、所定のアプリケーションプログラムが実行される。
なお、ブートプログラムによる起動処理の終了直後においては、共通領域24内のアプリケーションプログラムがブートプログラム更新のために消去されている可能性がある。そこで、ブートプログラムの実行後最初に実行されるアプリケーションプログラムは、フラッシュメモリ13のアプリケーションプログラム領域23に格納されているもの、あるいは他の不揮発性メモリに保存されているものとなるように設定することが望ましい。
コード領域24aから読み出した値が0xFFFFFFFFでない場合は(ステップS204;N)、共通領域24に新たなブートプログラムが存在すると判断し、ブートプログラムの更新処理を行なう。すなわち、CPU11は、ブートプログラム領域22の内容を消去し(ステップS205、図5(e))、該消去が完了すると(ステップS206;Y)、共通領域24に格納されている新たなブートプログラムをブートプログラム領域22に複製する(ステップS207、図5(f)、図6(g))。その後、共通領域24の内容を消去し(ステップS208、図6(h))、消去が完了すると(ステップS209;Y)、CPU11のプログラムカウンタをブートプログラム領域22の先頭アドレスに変更し(ステップS210)、ブートプログラム領域22に格納された新たなブートプログラムを実行して(ステップS211)、起動処理を終了する(エンド)。その後は、アプリケーションプログラムが実行される。
次に、ブートプログラムの書き換え中に電源断が起きた場合の動作保証について説明する。図3および図7の各処理においては、コード領域24aに判別コード(0xFFFFFFFF以外の値)が格納されているときは、共通領域24に完全な状態の新たなブートプログラムが存在することが保証される。また、コード領域24aが消去状態にあるときには、ブートプログラム領域22に完全な状態のブートプログラムが存在することが保証される。そして、判別プログラムは、コード領域24aに判別コード(0xFFFFFFFF以外の値)が存在すれば共通領域24のブートプログラムをブートプログラム領域22に複製し、その後、この複製されたブートプログラムを実行し、コード領域24aに判別コードがなく消去状態(0xFFFFFFFF)のときはブートプログラム領域22のブートプログラムを実行するので、ブートプログラムの書き換え中のどの時点で電源断があっても、ブートプログラム領域22もしくは共通領域24に存在する完全な状態のブートプログラムを用いて起動処理が行なわれる。
たとえば、バッファ領域28に保存されている新たなブートプログラムを共通領域24に対して書き込み中(図4(c))に電源断した場合は、コード領域24aが消去状態(0xFFFFFFFF)となっているので、次の電源オン時には、新たなブートプログラムが共通領域24に存在しないと判別され(図7、ステップS204;Y)、ブートプログラム領域22にあるブートプログラムを使用して起動処理が行なわれる。
また、ブートプログラム領域22を消去したとき(図5(e))や共通領域24にある新たなブートプログラムをブートプログラム領域22に複製中(図5(f))に電源断した場合は、コード領域24aに判別コードが書き込まれているので、次の電源オン時には、新たなブートプログラムが共通領域24に存在すると判別され(図7、ステップS204;N)、該新たなブートプログラムのブートプログラム領域22への複製処理が実行される(図7ステップS205〜S209)。そして、ブートプログラムの更新が完了するとブートプログラム領域22に格納された新たなブートプログラムを使用して起動処理が実行される(ステップS210、S211)。
このように、ブートプログラムの更新中の電源断に対して確実な動作保証を行なうためには、現用のブートプログラムと新たなブートプログラムとを同時に格納するための記憶領域を必要とする。しかしながら本実施の形態では、通常はアプリケーションプログラムの格納される領域を、ブートプログラム書き換え中に新たなブートプログラムを一時的に格納する領域に共用したので、新たなブートプログラムを格納するための専用領域を設ける必要がなく、フラッシュメモリ13のメモリ消費量を削減することができる。
さらに、共通領域24の末尾の一部領域に判別コードを格納するためのコード領域24aを割り当てたので、フラッシュメモリのようにデータの書き換えがセクタ単位に制限されているメモリを使用した場合でも、判別コードの格納用に専用セクタを設ける必要がなく、メモリを有効活用することができる。特に、複数のメモリを並列構成にしてビット幅を増やした場合には、判別コードの格納用に消費されるセクタ数がメモリの並列個数に順じて増加するので、専用セクタを設けずに済むことによるメモリの削減効果が大きい。
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
たとえば、実施の形態ではコード領域24aを共通領域24の末尾に割り当てたが、アプリケーション領域の手前に共通領域24を配置する場合には、共通領域24の先頭にコード領域24aを割り当ててもかまわない。要するに、共通領域24にアプリケーションプログラムを格納する際に共通領域24とアプリケーションプログラム領域23とを連続した領域として使用できるように、コード領域24aがアプリケーションプログラム領域23と共通領域24とを結合させた連続領域の端に位置するようにすればよい。
実施の形態ではアプリケーションプログラム領域23と共通領域24とを設けたが、アプリケーションプログラム領域23と共通領域24とを結合させた領域全体を共通領域としてもよい。コード領域24aを該共通領域の先頭または末尾に配置すればよい。なお、アプリケーションプログラム領域23と共通領域24とを区別することでブートプログラムの書き換え時に消去すべきメモリ領域を少なくでき、処理時間が短縮される。
また、実施の形態では、共通領域24に新たなブートプログラムを一時格納するようにしたが、新たなブートプログラムの一時記憶用に専用エリアを設け、該専用エリアの一部に判別コードを保存するためのコード領域を割り当てるようにしてもよい。かかる場合においても、判別コード格納用に専用のセクタを割り当てる場合に比べて、ブートプログラムの書き換え専用に消費されるメモリ量が低減される。
フラッシュメモリはデータの書き換え前に内容の消去を要するが、ブートプログラムの格納用メモリとして、データの書き換え前に消去処理を必要としないメモリを使用する場合には、新たなブートプログラムが共通領域24に存在していないことを示す値として、消去状態で読み出される値(0xFFFFFFFF)以外の値を使用してもかまわない。
情報処理装置10は、CPUが起動時にブートプログラムを実行する装置であればよく、たとえば、複写機や複合機などの画像形成装置が該当する。
本発明の実施の形態に係わる情報処理装置の構成を示すブロック図である。 本発明の実施の形態に係わる情報処理装置におけるメモリおよびフラッシュメモリのメモリマッピングを示す説明図である。 本発明の実施の形態に係わる情報処理装置の更新プログラムの処理を示す流れ図である。 ブートプログラムの更新時におけるフラッシュメモリの記憶内容の遷移を示す説明図である。 図4の続きを示す説明図である。 図5の続きを示す説明図である。 本発明の実施の形態に係わる情報処理装置が電源投入時もしくはリセット時に行なう処理を示す流れ図である。
符号の説明
10…情報処理装置
11…CPU
12…メモリ
13…フラッシュメモリ
14…デバイスコントローラ
15…システムバス
21…判別プログラム領域
22…ブートプログラム領域
23…アプリケーションプログラム領域
24…共通領域
24a…コード領域
28…バッファ領域

Claims (13)

  1. CPUと、
    起動時に前記CPUによって実行される判別プログラムが記憶された判別プログラム領域と、ブートプログラムが記憶されたブートプログラム領域と、第1のアプリケーションプログラムと更新プログラムとを記憶するためのアプリケーションプログラム領域と、第2のアプリケーションプログラムまたはブートプログラムを記憶するための共通領域とを有する不揮発性メモリと
    を備えた情報処理装置であって
    前記CPUは、
    ブートプログラムの更新時に、前記アプリケーションプログラム領域に記憶された更新プログラムに基づいて、新たなブートプログラムを取得し、前記共通領域に記憶された前記第2のアプリケーションプログラムを削除して前記取得した新たなブートプログラムの書き込みを行い、
    起動時に、前記判別プログラムに基づいて、前記共通領域にブートプログラムが存在するか否かを判別し、前記共通領域にブートプログラムが存在すると判別したときは、該共通領域のブートプログラムを前記ブートプログラム領域に複製した後、前記共通領域に記憶された内容を消去し、前記ブートプログラム領域に複製されたブートプログラムを実行し、当該ブートプログラムを実行した後に前記アプリケーションプログラム領域に記憶された前記第1のアプリケーションプログラムを実行するように制御する
    ことを特徴とする情報処理装置。
  2. 前記CPUは、前記ブートプログラムの更新時に、前記共通領域に対する前記取得した新たなブートプログラムの書き込みを行なった後、更に、前記共通領域のブートプログラムを前記ブートプログラム領域に複製し、さらにその後、前記共通領域の内容を消去するように制御する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の末尾に設け、
    前記CPUは、前記判別プログラムに基づいて、前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別するように制御する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の先頭に設け、
    前記CPUは、前記判別プログラムに基づいて、前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別するように制御する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  5. 前記CPUは、ブートプログラムの更新時に、前記コード領域以外の前記共通領域に対して新たなブートプログラムの書き込みを行なった後、前記コード領域に前記判別コードを書き込ように制御する
    ことを特徴とする請求項3または4に記載の情報処理装置。
  6. 前記不揮発性メモリは、フラッシュメモリであり、
    前記コード領域から読み出された値が、内容の消去されたフラッシュメモリから読み出される値と同一の場合に、前記コード領域に判別コードが存在しないと判定する
    ことを特徴とする請求項3乃至のいずれか1つに記載の情報処理装置。
  7. 前記判別プログラム領域の先頭アドレスは、前記CPUが起動時に最初にプログラムコードをフェッチするアドレスである
    ことを特徴とする請求項1乃至のいずれか1つに記載の情報処理装置。
  8. 不揮発性メモリに、ブートプログラムが記憶されたブートプログラム領域と、第1のアプリケーションプログラムと更新プログラムとを記憶するためのアプリケーションプログラム領域と、第2のアプリケーションプログラムまたはブートプログラムを記憶するための共通領域とを設けておき、
    ブートプログラムの更新時に、前記アプリケーションプログラム領域に記憶された更新プログラムに基づいて、新たなブートプログラムを取得し、前記共通領域に記憶された前記第2のアプリケーションプログラムを削除して前記取得した新たなブートプログラムの書き込みを行い、
    起動時に
    前記共通領域にブートプログラムが存在するか否かを判別し、
    前記共通領域にブートプログラムが存在すると判別したときは、該共通領域のブートプログラムを前記ブートプログラム領域に複製し、
    前記複製後に、前記共通領域に記憶された内容を消去し、
    前記消去後に、前記ブートプログラム領域に複製されたブートプログラムを実行し、
    当該ブートプログラムを実行した後に前記アプリケーションプログラム領域に記憶された前記第1のアプリケーションプログラムを実行する
    ことを特徴とするブートプログラムの書き換え方法。
  9. 前記ブートプログラム領域のブートプログラムを更新する際に、
    前記共通領域に対する前記取得した新たなブートプログラムを書き込み、
    前記書き込み後に、更に、前記共通領域のブートプログラムを前記ブートプログラム領域に複製し、
    前記複製後に、前記共通領域の内容を消去する
    ことを特徴とする請求項に記載のブートプログラムの書き換え方法。
  10. ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の末尾に設けておき、
    前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別する
    ことを特徴とする請求項8または9に記載のブートプログラムの書き換え方法。
  11. ブートプログラムが前記共通領域に存在することを示す判別コードを格納するためのコード領域を前記共通領域の先頭に設けておき、
    前記コード領域に前記判別コードが存在するか否かに基づいて前記共通領域にブートプログラムが存在するか否かを判別する
    ことを特徴とする請求項8または9に記載のブートプログラムの書き換え方法。
  12. ブートプログラムを更新する際に、
    前記コード領域以外の前記共通領域に対して新たなブートプログラムを書き込み、
    前記新たなブートプログラムの書き込み後に、前記コード領域に前記判別コードを書き込
    ことを特徴とする請求項10または11に記載のブートプログラムの書き換え方法。
  13. 前記不揮発性メモリは、フラッシュメモリであり、
    前記コード領域から読み出された値が、内容の消去されたフラッシュメモリから読み出される値と同一の場合に、前記コード領域に判別コードが存在しないと判定する
    ことを特徴とする請求項10乃至12のいずれか1つに記載のブートプログラムの書き換え方法。
JP2005341168A 2005-11-25 2005-11-25 情報処理装置およびブートプログラムの書き換え方法 Expired - Fee Related JP4826232B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005341168A JP4826232B2 (ja) 2005-11-25 2005-11-25 情報処理装置およびブートプログラムの書き換え方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005341168A JP4826232B2 (ja) 2005-11-25 2005-11-25 情報処理装置およびブートプログラムの書き換え方法

Publications (2)

Publication Number Publication Date
JP2007148695A JP2007148695A (ja) 2007-06-14
JP4826232B2 true JP4826232B2 (ja) 2011-11-30

Family

ID=38210056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005341168A Expired - Fee Related JP4826232B2 (ja) 2005-11-25 2005-11-25 情報処理装置およびブートプログラムの書き換え方法

Country Status (1)

Country Link
JP (1) JP4826232B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4973472B2 (ja) * 2007-12-03 2012-07-11 富士通株式会社 ファームウェア組込方法、ファームウェア組込装置、及び、ファームウェア組込プログラム
GB2515364B (en) * 2013-12-20 2015-06-17 Nordic Semiconductor Asa Updatable integrated-circuit radio
CN110968337A (zh) * 2018-09-28 2020-04-07 杭州萤石软件有限公司 软件升级方法及装置
CN112667265B (zh) * 2021-01-20 2024-05-07 北京经纬恒润科技股份有限公司 一种引导程序更新方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003157204A (ja) * 2001-11-20 2003-05-30 Canon Inc データ書き換え装置及びデータ書き換え方法並びに記憶媒体
JP2004013536A (ja) * 2002-06-06 2004-01-15 Seiko Epson Corp フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体
JP2004320591A (ja) * 2003-04-18 2004-11-11 Sony Ericsson Mobilecommunications Japan Inc 携帯通信端末
JP2004355310A (ja) * 2003-05-29 2004-12-16 Konica Minolta Business Technologies Inc 画像処理装置

Also Published As

Publication number Publication date
JP2007148695A (ja) 2007-06-14

Similar Documents

Publication Publication Date Title
JP5336060B2 (ja) 不揮発性メモリ装置およびそれを動作させる方法
JP3838840B2 (ja) コンピュータ
JP5035636B2 (ja) フラッシュメモリ内のブロックにおける移動セクタ
US7663933B2 (en) Memory controller
US6601132B2 (en) Nonvolatile memory and method of writing data thereto
JP2001209543A (ja) フラッシュ・マイコンにおけるプログラム書き換え方法
JP2006079543A (ja) メモリ管理装置
JP2004295865A (ja) 自動ブーティングシステム及び自動ブーティング方法
JP2006243780A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP3830867B2 (ja) シングルチップマイクロコンピュータおよびそのブート領域切り替え方法
JP4826232B2 (ja) 情報処理装置およびブートプログラムの書き換え方法
JP2007034581A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006003966A (ja) フラッシュメモリの書込方法
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP2013033338A (ja) メモリシステム
JP5520880B2 (ja) フラッシュメモリ装置
JP2009276883A (ja) 半導体補助記憶装置
US6898680B2 (en) Minimization of overhead of non-volatile memory operation
JP4572205B2 (ja) フラッシュメモリドライブ装置、その制御方法及びそのプログラム
KR100811559B1 (ko) 비휘발성 메모리의 데이터 저장영역 관리 방법 및 장치
JP3999564B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2004310268A (ja) フラッシュメモリ内蔵の半導体装置、フラッシュメモリの制御方法およびそのプログラム
JP2000276461A (ja) マイクロコンピュータ
JP2005293177A (ja) メモリコントローラ及びフラッシュメモリシステム
JP2006040168A (ja) フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080818

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110728

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

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

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

Free format text: PAYMENT UNTIL: 20140922

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4826232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees