JP2013218388A - プログラム更新装置、方法、プログラム、及び記憶媒体 - Google Patents
プログラム更新装置、方法、プログラム、及び記憶媒体 Download PDFInfo
- Publication number
- JP2013218388A JP2013218388A JP2012086004A JP2012086004A JP2013218388A JP 2013218388 A JP2013218388 A JP 2013218388A JP 2012086004 A JP2012086004 A JP 2012086004A JP 2012086004 A JP2012086004 A JP 2012086004A JP 2013218388 A JP2013218388 A JP 2013218388A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory
- block
- update
- data
- 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
【課題】複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮しプログラムデータを効率の良いメモリブロックに配置する。
【解決手段】プログラム更新装置は、更新対象の旧プログラムブロックと共に同一のメモリブロック内に格納された更新対象以外のプログラムデータを記憶媒体に複写し、不揮発性メモリ21c内の、更新対象とされた旧プログラムブロック及び複写対象データを一部に含むメモリブロックの記憶内容を消去し、新たに不揮発性メモリ21cに書き込むプログラムブロックのデータを複写データと共にメモリブロック単位で不揮発性メモリ21cに書き込む。メモリ書き込みでは、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて更新対象プログラムブロックと更新対象以外のプログラムブロックの格納場所を検証する。
【選択図】図3
【解決手段】プログラム更新装置は、更新対象の旧プログラムブロックと共に同一のメモリブロック内に格納された更新対象以外のプログラムデータを記憶媒体に複写し、不揮発性メモリ21c内の、更新対象とされた旧プログラムブロック及び複写対象データを一部に含むメモリブロックの記憶内容を消去し、新たに不揮発性メモリ21cに書き込むプログラムブロックのデータを複写データと共にメモリブロック単位で不揮発性メモリ21cに書き込む。メモリ書き込みでは、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて更新対象プログラムブロックと更新対象以外のプログラムブロックの格納場所を検証する。
【選択図】図3
Description
本発明は、プログラム更新装置、方法、プログラム、及び記憶媒体に関し、より詳細には、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置、プログラム更新方法、プログラム更新プログラム、及びそのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体に関する。
画像処理装置等における制御部を構成する各種基板は、複数のメモリブロックで構成され且つメモリブロック単位で電気的に一括消去及び書き込みが可能なフラッシュメモリを有し、そのフラッシュメモリに格納したプログラムにより各種制御動作を行う。
図1は、従来技術による、プログラムを構成するプログラムブロックをフラッシュメモリに格納した状態を説明するための概念図である。プログラム全体11は、機能I〜VIのプログラムブロックで構成される。ここで、機能IのデータをOS(Operating System)とし、他の機能II〜VIをそれぞれOSに対して追加されたプログラムA〜Eとしている。さらに、これらのプログラムをフラッシュメモリに格納する場合、メモリ使用領域の削減を目的として、各プログラムブロックを圧縮した状態で格納する。圧縮後のプログラム全体12は、フラッシュメモリのメモリブロック単位とは関係なく、機能Ia〜VIaのデータ(それぞれ機能I〜VIを圧縮したデータ)を、フラッシュメモリ上の配置13として示すようにフラッシュメモリの先頭アドレスから連続的に格納する場合が多い。
図2は、不揮発性メモリを含むMFP(Multifunction Peripheral)等の画像処理装置とPC(Personal Computer)等の情報処理装置とでなるシステムの一例を示すブロック図である。MFP21の基板は、中央処理装置(CPU:Central Processing Unit)21aと、ワークエリアとして使用するRAM(Random Access Memory)21b、更新対象となるプログラム(制御プログラム)を格納するフラッシュメモリ等の不揮発性メモリ21cとを備える。MFP21はその他、PC22と通信回線23を介して接続するための通信ポート21dや、画像処理機能を実現するための様々な構成要素を備える。MFP21の電源ON時には、CPU21aから不揮発性メモリ21cのプログラムを読み込み、RAM21b上のワークエリアにてそのプログラムのデータを伸張して実行する。
ところで、不揮発性メモリ21c内のプログラムは、開発途上や不具合改善、新規機能追加などにより頻繁に更新がなされる。なお、PC22は、CPU22a、ワークエリアとして使用するRAM22b、プログラム(PC22の制御プログラム)を格納するROM(フラッシュメモリやハードディスク等)22cと、MFP21と通信回線23を介して接続するための通信ポート22dとを備える。そして、PC22側から、MFP21の不揮発性メモリ21c内のプログラムを更新することが可能に構成されている。
そのために、不揮発性メモリ21c内のプログラムの更新は、更新を実行するためのプログラム(プログラム更新プログラム)が別途用意され、それを用いてなされる。プログラム更新プログラムの基本的な動作としては、書換対象のプログラムブロックが格納されているメモリブロックをメモリブロック単位で消去して、更新後の新プログラムブロックデータをそのメモリブロックに書き込む。なお、同メモリブロック内に書換対象以外のプログラムブロックのデータが格納されている場合は、書換対象以外のプログラムブロックのデータを一旦ワークエリア(RAM21b)上にコピー(複写)して、上記書き込み作業時に、更新後の新プログラムブロックデータと、書換対象以外のプログラムブロックのデータを合わせて、同じメモリブロックに書き込む。
仮に、図1のような状態から、機能IIaのみのプログラムブロックを書き換える場合を想定する。機能IIaはメモリブロック1とメモリブロック2に跨って配置されているため、更新対象が機能IIaだけであっても、メモリブロック1に格納されている機能Iaの一部を退避するために、機能Ia全体をワークエリア(RAM21b)上に複写する必要がある。さらに、メモリブロック2に格納されている機能IIIa全体及び機能IVaの一部を退避するために、機能IIIa及び機能IVa全体をRAM21b上に複写する必要がある。さらに、機能IVaはメモリブロック3の一部にも跨っているため、メモリブロック3に格納されている機能Va及び機能VIaまでもRAM21b上に複写する必要がある。つまり、機能IIaのみのプログラムブロックを書き換える場合であっても、メモリブロック0〜3に格納されている機能Ia〜機能VIaの全て(機能IIaを除く)をRAM21b上に複写して、メモリブロック0〜3を消去して、機能Ia〜機能VIa(機能IIaのみ更新のための新たなデータ)を書き込む処理が必要となってしまう。
例えば、特許文献1に記載のプログラム更新装置では、図1の不揮発性メモリ上の配置13のように先頭アドレスから連続的に空きを設けずに格納したものではなく、メモリブロック単位で格納された更新対象プログラムについて、上述のような複写、消去、及び書き込みを行っている。
また、特許文献2には、不揮発性メモリに対して高速にデータの書き込み、読み出しができる半導体記憶装置が開示されている。特許文献3には、フラッシュメモリのデータ更新に際して必要な部分のみデータの書き換えを実行する技術が開示されている。特許文献4には、フラッシュメモリをメモリブロックをさらに複数ブロックに分割し、その分割したブロック単位で、データの書き込み、読み出しを行うことで、データの読み書きの高速化を図る技術が開示されている。
図1で説明したような従来技術では、不揮発性メモリ上のプログラムブロックの格納位置を、フラッシュメモリのメモリブロックを考慮して配置されているわけではないため、不揮発性メモリ上のプログラムブロックの更新内容が軽微であったとしても、更新対象のプログラムブロックが格納位置によっては、更新対象のプログラムブロックが格納されているメモリブロック以外に格納されているプログラムブロックのRAMへの退避、該当メモリブロックの消去、退避データの再書き込み処理が発生する可能性がある。
また、特許文献1に記載のプログラム更新装置では、空きを設けることを許容してメモリブロック単位で各機能のプログラムデータを格納した状態に対して、そのデータの更新を行う例が記載されているが、更新後には、退避のために複写したデータを空きが無い状態で書き込んでおり、退避のために複写したデータの再書き込み時のプログラムブロックの格納位置を定めていない。よって、この装置では、次に更新の必要が生じた場合には、結局同じような事態が生じ、退避や消去の対象となるデータが増えてしまう。
また、特許文献2〜4のいずれに記載の技術においても、更新を行う際の書き込み時のプログラムブロックの格納位置を、更新を考慮して定めたものではなく、同様に、更新を繰り返すとデータの退避や消去の対象が増えていってしまう。
本発明は、上述のような実状に鑑みてなされたものであり、その目的は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能なプログラム更新装置、プログラム更新方法、プログラム更新プログラム、及びそのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供することにある。
上記課題を解決するために、本発明の第1の技術手段は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置であって、データの書き込み及び読み出しが可能な記憶媒体と、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、前記記憶媒体に複写する複写部と、前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去部と、新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込み部と、を備え、前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するプログラム格納位置検証部を有することを特徴としたものである。
本発明の第2の技術手段は、第1の技術手段において、前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックの更新履歴を保持する更新履歴保持部をさらに有することを特徴としたものである。
本発明の第3の技術手段は、第2の技術手段において、前記プログラム格納位置検証部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減により、前記更新対象とされた旧プログラムブロックが格納されているメモリブロックに格納されている更新対象以外のプログラムデータの位置を、前記更新履歴を参照して決定するプログラム格納位置決定部を有することを特徴としたものである。
本発明の第4の技術手段は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを、プログラム更新装置が更新するプログラム更新方法であって、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込みステップと、を有し、前記メモリ書き込みステップは、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップを有することを特徴としたものである。
本発明の第5の技術手段は、第4の技術手段におけるプログラム更新方法を、コンピュータに実行させるためのプログラム更新プログラムである。
本発明の第6の技術手段は、第5の技術手段におけるプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体である。
本発明によれば、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能になる。
本発明に係るプログラム更新装置は、不揮発性メモリに記憶されたプログラムデータを更新する装置である。ここで、本発明で対象とする不揮発性メモリは、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みを可能とし、電気的に一括消去及び書き込みが可能なフラッシュメモリ(ROMに分類されることもある)がその代表的なものとして挙げられるが、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能であればよい。
本発明に係るプログラム更新装置は、データの書き込み及び読み出しが可能な記憶媒体、後述の複写部、消去部、及びメモリ書き込み部を備え、図2で説明したような、不揮発性メモリを含むMFP等の画像処理装置に組み込まれる。上記の記憶媒体は、任意にデータの読み書きが可能となっており、以下、図2のRAM21bを挙げて説明する。また、本発明において、MFP21の具備する画像処理機能についてはどのような機能であってもよい。また、MFP以外の画像処理装置としては、スキャナ、プリンタ、ファクシミリ装置などが挙げられる。
図3は、本発明に係るプログラム更新装置における不揮発性メモリに書き込まれたデータの一例を示す図である。図3に示す不揮発性メモリ21cは、例えば、図2のMFP等の画像処理装置に組み込まれるものであり、プログラム更新プログラム、更新対象プログラム、管理リスト、更新履歴を格納している。
また、不揮発性メモリ21c内の更新対象プログラムは、PC22からの更新データの受信及び更新指示により更新される。無論、PC22に限らず、携帯電話機やサーバ装置等の他の機器であってもよく、さらにはMFP21自身に差し込んだUSB(登録商標。以下同様。)メモリ等の記憶媒体からの更新データの受信及び更新指示により更新されてもよいし、USBメモリ等の記憶媒体に記憶された更新データを用いてMFP21自身の操作部からユーザ操作により入力された更新指示により更新されてもよい。
上記の複写部は、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、RAM21bに複写する。上記の消去部は、不揮発性メモリ21c内の、上記更新対象とされた旧プログラムブロック及びRAM21bへの複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する。つまり、上記の消去部は、不揮発性メモリ21c内の、上記更新対象とされた旧プログラムブロックを一部に含むメモリブロックの記憶内容、及び不揮発性メモリ21c内の、RAM21bへの複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を消去する。
上記のメモリ書き込み部は、新たに不揮発性メモリ21cに書き込むプログラムブロックのデータを、RAM21bに複写により記憶されたデータ(複写データ)と共に、メモリブロック単位で不揮発性メモリ21cに書き込む。本発明における、メモリ書き込み部の主たる特徴は、このメモリブロック単位での書き込みを行う点と、メモリ書き込み部が次のプログラム格納位置検証部を有する点にある。このプログラム格納位置検証部は、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証する。
上記した複写部、消去部、及びメモリ書き込み部は、ハードウェアとして専用の回路で構成することもできるが、上述したように、不揮発性メモリ21c(又は別途設けたハードディスクや不揮発性メモリ等の記憶装置)に、各部をCPU21aに実行させるためのプログラム更新プログラムとして組み込むことが好ましい。無論、複写部、消去部、及びメモリ書き込み部をプログラムとして組み込んだ場合、そのプログラム(プログラム更新プログラム)自身については本発明の更新処理が適用できないため、プログラム更新プログラムについては、その更新により他のプログラムに影響を及ぼさないような格納領域に予め配置しておき、本発明の更新処理は、この格納領域を除いた領域を用いて実行すればよい。
このように、不揮発性メモリ21c上に格納する更新対象プログラムを、更新時(更新処理の書き込み時)に、不揮発性メモリ21cのメモリブロック単位で格納するようにすることで、その更新対象プログラムのある機能を次に更新する際に、必要最低限のメモリブロックの消去及び書込み処理を行うことで実現することができる。つまり、本発明によれば、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能になる。よって、本発明では、従来に比べて更新時間短縮、さらには不揮発性メモリの消去回数の削減を図ることができ、不揮発性メモリの寿命を延ばすことができる。
以下、本発明に係るプログラム更新装置における更新処理の一例について詳細に説明する。ここでは、図4に沿って、主にCPU21aが実行する、このようなメモリ書き込み処理について説明する。なお、複写及び消去の処理自体は従来と基本的に同様であり、その説明を省略する。
図4は、本発明に係るプログラム更新装置におけるメモリ書き込み処理の一例を説明するためのフロー図、図5は、図4のメモリ書き込み処理で使用するプログラムデータ管理リストの一例を示す図、図6は、図4のメモリ書き込み処理の具体例を説明するための概念図である。
まず、メモリブロックサイズ(Mb)を取得し(ステップS1)、図5に例示するようなプログラムブロック管理リスト51を取得する(ステップS2)。プログラムブロック管理リスト51は、図6に示すように、機能I〜VIのプログラムブロックで構成されるプログラム全体61に対して、そのプログラムが実現する各種機能毎にプログラムブロック単位で管理するためのリストであり、図3の構成例で管理リストとして示したように例えば不揮発性メモリ21cに格納しておけばよい。ここで、機能IのデータをOS(Operating System)とし、他の機能II〜VIをそれぞれOSに対して追加されたプログラムA〜Eとしているが、これに限ったものではなく、例えば各機能のデータが関連するプログラムでなくてもよい。また、図6ではメモリブロック単位の例として256Byteを挙げているが、これに限ったものではない。
プログラムブロック管理リスト51は、プログラム全体61を圧縮したプログラム全体62のように各プログラムブロックを圧縮したデータ(機能Ia〜VIaのデータ)を、不揮発性メモリ21c上の配置63のようにメモリブロック単位で格納した場合のリストである。このプログラムブロック管理リスト51には、プログラムブロック管理リスト51中のプログラムブロックの番号N毎に、機能名、プログラム名(プログラムブロック名)、不揮発性メモリ21c上の先頭アドレス、終了アドレス、データ容量(Pb.N)、使用メモリブロック番号、及びその他の情報が格納されている。
ステップS2に続き、Nを1として(ステップS3)、プログラムブロックサイズ(Pb.N)を取得し(ステップS4)、E_Mb(N)を算出する(ステップS5)。ここで、E_Mb(N)は、「メモリブロックサイズ」−「プログラムブロックサイズをメモリブロックサイズで除算した剰余」、つまり、Mb−MOD(Pb.N,Mb)として定義される。
次に、E_Mb(N)が0より大きい場合に、その値を保持し(ステップS6)、保持しているE_Mbの中にそのE_Mb(N)より大きいサイズが存在するか否かを判定する(ステップS7)。存在しなかった場合(ステップS7でNOの場合)、空きメモリブロックに対象のプログラムブロックを格納し(ステップS9)、Nをインクリメントする(ステップS10)。一方、存在した場合(ステップS7でYESの場合)、保持しているE_Mbのメモリブロックに対象のプログラムブロックを格納し(ステップS8)、Nをインクリメントする(ステップS10)。
ステップS10の後は、Nが予め定めたN(リストに含まれるプログラムブロックの数)になったか否かを判定し(ステップS11)、YESとなるまで、ステップS4に戻って次のNについて同様の処理を続け、YESとなった場合にはプログラムブロック管理リスト51の更新を行う(ステップS12)。
このような処理を行うことで、例えば図6の配置63の状態からさらに機能IIaのみを機能IIa(New)で更新させる場合でも、機能VIaをRAM21bに退避させてメモリブロック2のみを消去して、メモリブロック2に機能IIa(New)のデータ及び退避させたVIaのデータのみを書き込むだけで済む。つまり、最低限のデータのみに対しての、RAM21bへの退避及びメモリブロックの消去によって、書き換えが可能となる。
なお、ここでは、機能IIaと機能IIa(New)とでデータの容量に相違がない例を挙げたが、実際には相違があることが多い。しかし、本発明では、例えば図4のような処理手順により、プログラム格納位置検証部が、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証し、その検証結果に基づいて書き込みを行うため、相違があっても対応できる。
例えば、更新データのデータサイズが増加して(この例では機能IIa(New)のデータが機能IIaのデータから増えて)、機能VIaのデータと一緒に元のメモリブロック2に入りきらなかった場合には、更新データを余裕のあるメモリブロック(例えば余裕のあるうち、最も若いアドレスの1又は複数のメモリブロック)に書き込み、機能IIaのデータが元々格納されていた位置に、更新対象以外のプログラムブロックの1又は複数(機能VIaのデータ等)の格納場所を決定してもよい。なお、機能IIa(New)のデータが機能IIaのデータから増えて元のメモリブロックに入りきらなかった場合で、機能IIaのデータが元々格納されていた格納領域に更新対象以外のプログラムブロック(機能VIaのデータ)が書き込める容量が残っていたとしても、検証の結果として、例えば処理時間が多く必要であるなどの結論から、機能VIaのデータを余裕のあるメモリブロックに書き込んでおくだけにしてもよい。
次に、本発明に係るプログラム更新装置の他の構成例について説明する。
図3の構成例において、更新履歴が不揮発性メモリ21cに格納された例を図示したように、上記のメモリ書き込み部は、上記更新対象とされた旧プログラムブロック(通常、複数存在する)の更新履歴を保持する更新履歴保持部を有することが好ましい。無論、上述したように、更新履歴を用いなくても、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証し、その検証の結果に従い、メモリブロック単位で不揮発性メモリ21cに書き込みを行うことができる。
図3の構成例において、更新履歴が不揮発性メモリ21cに格納された例を図示したように、上記のメモリ書き込み部は、上記更新対象とされた旧プログラムブロック(通常、複数存在する)の更新履歴を保持する更新履歴保持部を有することが好ましい。無論、上述したように、更新履歴を用いなくても、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証し、その検証の結果に従い、メモリブロック単位で不揮発性メモリ21cに書き込みを行うことができる。
なお、図3の構成例では、不揮発性メモリ21cに、更新履歴や管理リスト(プログラムブロック管理リスト)も格納させているが、これらについても他のプログラム(更新可能性があり且つ本発明の処理対象となる更新対象プログラム)に影響を及ぼさないような格納領域に予め配置しておき、本発明の更新処理は、この格納領域を除いた領域を用いて実行すればよい。
さらに、上記のプログラム格納位置検証部は、次のようなプログラム格納位置決定部を有することが好ましい。このプログラム格納位置決定部は、上記更新対象とされた旧プログラムブロックからのデータサイズ増減により、上記更新対象とされた旧プログラムブロックが格納されているメモリブロックに格納されている更新対象以外のプログラムデータの位置を、更新履歴保持部で保持された更新履歴を参照して決定する。
ここで、主にCPU21aが実行する、上記のプログラム格納位置決定部におけるプログラム格納位置決定処理の一例を、図7〜図10に沿って説明する。図7は、本発明に係るプログラム更新装置におけるプログラム格納位置決定処理の一例を説明するためのフロー図で、図8〜図10は、図7に続くフロー図である。また、図10は、図7のプログラム格納位置決定処理における更新履歴マトリクス取得処理で取得する更新履歴マトリクスの一例を示す図で、図12は、図11の更新履歴マトリクスを保持する処理の一例を説明するためのフロー図である。また、図13〜図16は、図7〜図10のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
図7において、まず、メモリブロックサイズ(Mb)を取得し(ステップS21)、書き換えた対象プログラムブロックサイズ(Pb)も取得する(ステップS22)。そして、書換対象プログラムブロックが格納されているメモリブロックに他のプログラムブロック(Pb′)があるか否かを判定し(ステップS23)、無かった場合(NOの場合)には後述の図10のステップS40に進む。ステップS23でYESの場合には、他のプログラムブロック(Pb′)の移動が必要か否かを判定し(ステップS24)、不必要であった場合(NOの場合)には同じく図10のステップS40に進む。
ステップS24でYESの場合、つまり他のプログラムブロックの移動が必要な場合、更新履歴マトリクスを取得する(ステップS25)。更新履歴マトリクスは、更新履歴の一例であり、各プログラムブロックの更新の関連性を示すようなデータとして保持したものである。
図11で例示する更新履歴マトリクス110は、各プログラムブロックの更新の関連性を示すようなデータであり、例えば機能Iと機能VIとは5回以上の頻度で同時に更新されており、機能IVと機能Vとは2回以上5回未満の頻度で同時に更新されており、機能IIと機能IIIとは2回未満の頻度で同時に更新されており、機能IIと機能Vとは同時に更新されたことがないことを示している。このような更新履歴マトリクス110は、図12に示す更新履歴マトリクス保持処理で保持される。すなわち、まずこの更新履歴マトリクス110を取得し(ステップS51)、書換対象プログラムブロックの書換回数カウンターを更新し、それを更新履歴マトリクス110に反映させる(ステップS52)。なお、図11では、更新履歴マトリクス110として、閾値処理したデータ(◎、○、△、×)を記録しているが、実際には単にこの書換回数カウンターの値を格納して、例えば後述のステップS26等の判断のときに閾値処理をしてもよい。
図7の説明に戻り、ステップS25に続き、他のプログラムブロック(Pb′)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb″)があるか否かを判定する(ステップS26)。例えば上記の◎のときのみ同時更新履歴が高いと判定すればよい。ステップS26でNOの場合には、後述の図9のステップS36に進み、ステップS26でYESの場合には、図8のステップS27に進む。
図8においては、まず、同時更新履歴の高いプログラムブロック(Pb″)が格納されているメモリブロックに他のプログラムブロック(Pb″′)があるか否かを判定する(ステップS27)。存在する場合(ステップS27でYESの場合)には、他のプログラムブロック(Pb″′)の移動が必要か否かを判定する(ステップS28)。必要である場合(ステップS28でYESの場合)には、Mb−MOD(Pb″′,Mb)を満足する空きメモリブロックがあるか否かを判定する(ステップS29)。
ステップS29でYESの場合、書換対象以外且つ移動必要なプログラムブロック(Pb′)と同時更新履歴の高いプログラムブロック(Pb″)と同一メモリブロックに配置されている他のプログラムブロック(Pb″′)を一旦記憶媒体に退避してから、他のプログラムブロック(Pb″′)を空きメモリブロックに配置(書込)し(ステップS30)、後述の図9のステップS32に進む。
このように配置する場合、後述の図9のステップS32,S33の処理を経ると、図13に示すように、配置131が配置132のようになる。具体的には、機能Iaのデータサイズが大きくなったため、機能Vの格納位置を移動させないといけないが、機能Vと機能IIIとが一緒に書き換えることが多い場合、まず、機能VIaを空き領域のメモリブロック4に移動させてメモリブロック3に空き領域を作り、同一メモリブロック3に機能Vaと機能IIIaとを配置させる。
一方で、ステップS29でNOの場合、並びにステップS28でNOの場合、並びにステップS27でNOの場合には、後述の図9のステップS31に進む。
図9では、まず、Mb−MOD(Pb″,Mb)を満足する空きメモリブロックがあるか否かを判定する(ステップS31)、存在する場合(ステップS31でYESの場合)、書換対象以外且つ移動必要なプログラムブロック(Pb′)と同時更新履歴の高いプログラムブロック(Pb″)の移動先メモリブロックを消去する(ステップS32)。ステップS30の処理後もこのステップS32の処理が施される。ステップS32に続き、書換対象以外且つ移動必要なプログラムブロック(Pb′)と同時更新履歴の高いプログラムブロック(Pb″)を同一メモリブロックに配置する(ステップS33)。
このようにステップS31でYESの場合で配置した場合、図14に示すように、配置141が配置142のようになる。具体的には、機能Iaのデータサイズが大きくなったため、機能Vの格納位置を移動させないといけないが、機能Vと機能IIIとが一緒に書き換えることが多い場合、同一メモリブロック3にそれらの機能Vaと機能IIIaとを配置させる。
ステップS33の処理後、書換対象プログラムブロックの書換が全て完了したか否かを判定し(ステップS34)、未完了の場合(ステップS34でNOの場合)には図7のステップS22に戻り、完了の場合(ステップS34でYESの場合)には、プログラムデータ管理リストを更新し(ステップS35)、処理を終了する。
また、ステップS31でNOの場合や、ステップS26でNOの場合には、Mb−MOD(Pb′,Mb)を満足する空きメモリブロックがあるか否かを判定し(ステップS36)、存在しない場合(NOの場合)には、空きメモリブロックがないことによるエラー通知して(ステップS37)、処理を終了する。
ステップS36でYESの場合には、書換対象以外且つ移動必要なプログラムブロック(Pb′)の移動先メモリブロックを消去し(ステップS38)、書換対象以外且つ移動必要なプログラムブロック(Pb′)を空きメモリブロックに移動する(ステップS39)。このようにステップS36でYESの場合で配置した場合、図15に示すように、配置151が配置152のようになる。具体的には、機能Iaのデータサイズが大きくなったため、機能Vの格納位置を空きのメモリブロック4に移動させる。ステップS39の処理後は、同様に図9のステップS34に進む。
図10においては、まず、Mb−MOD(Pb,Mb)を満足するプログラムブロックサイズがあるか否かを判定し(ステップS40)、存在しない場合(NOの場合)には、空きメモリブロックがないことによるエラー通知して(ステップS41)、処理を終了する。
ステップS40でYESの場合には、更新履歴マトリクスを取得し(ステップS42)、書換対象プログラムブロック(Pb)と同時更新履歴の高いプログラムブロック(Pb″″)があるか否かを判定する(ステップS43)。存在する場合(ステップS43でYESの場合)には、書換対象プログラムブロック(Pb)が格納されているメモリブロックを消去し(ステップS44)、書換対象プログラムブロック(Pb)と同時更新履歴の高いプログラムブロック(Pb″″)を書換対象プログラムと同一メモリブロックに書き込む(ステップS45)。このようにステップS45を経て配置した場合、図16に示すように、配置161が配置162のようになる。具体的には、機能Iaのデータサイズの変更に伴い、メモリブロック1の空き領域を算出し、機能VIが機能Iと一緒に書き換えることが多い場合、同一メモリブロック1にそれらの機能Iaと機能VIaとを配置させる。ステップS45の処理後は、同様に図9のステップS34に進む。
ステップS43でNOの場合には、書換対象プログラムブロックが格納されているメモリブロックを消去し(ステップS46)、書換対象プログラムブロックが格納されているメモリブロックに書き込む(ステップS47)。ステップS47の処理後は、同様にステップS34に進む。
以上、プログラム格納位置検証部及び更新履歴保持部により、プログラムの更新毎に、不揮発性メモリ内のプログラムブロック配置を見直すことが可能となり、同時に更新される頻度が多いプログラムブロックは同一メモリブロックに配置するようにし、プログラムの更新を、必要最低限のメモリブロックの消去及び書き込み処理で実現することが可能となる。
また、本発明は、プログラム更新装置の処理手順として説明したように、そのプログラム更新装置が、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新方法としての形態も採り得る。
このプログラム更新方法は、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、上記不揮発性メモリ内の、上記更新対象とされた旧プログラムブロック及び上記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、新たに上記不揮発性メモリに書き込むプログラムブロックのデータを、上記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で上記不揮発性メモリに書き込むメモリ書き込みステップと、を有する。そして、このメモリ書き込みステップは、上記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップを有する。その他の応用例や効果については、プログラム更新装置について説明した通りであり、その説明を省略する。
また、本発明は、上記のプログラム更新方法をコンピュータに実行させるためのプログラム更新プログラム(つまり、図3で説明したプログラム更新プログラム)や、そのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体としての形態も採り得る。この記憶媒体としては、CD(Compact Disc)、DVD(Digital Versatile Disc)、BD(Blu-ray Disc)等の可搬の記録媒体が挙げられる。
21…MFP、21a…CPU、21b…RAM、21c…不揮発性メモリ、21d…通信ポート、22…PC、22a…PC側のCPU、22b…PC側のRAM、22d…PC側の通信ポート、23…通信回線。
Claims (6)
- 複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置であって、
データの書き込み及び読み出しが可能な記憶媒体と、
更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、前記記憶媒体に複写する複写部と、
前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去部と、
新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込み部と、を備え、
前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するプログラム格納位置検証部を有することを特徴とするプログラム更新装置。 - 前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックの更新履歴を保持する更新履歴保持部をさらに有することを特徴とする請求項1に記載のプログラム更新装置。
- 前記プログラム格納位置検証部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減により、前記更新対象とされた旧プログラムブロックが格納されているメモリブロックに格納されている更新対象以外のプログラムデータの位置を、前記更新履歴を参照して決定するプログラム格納位置決定部を有することを特徴とする請求項2に記載のプログラム更新装置。
- 複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを、プログラム更新装置が更新するプログラム更新方法であって、
更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、
前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、
新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込みステップと、を有し、
前記メモリ書き込みステップは、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップを有することを特徴とするプログラム更新方法。 - 請求項4に記載のプログラム更新方法を、コンピュータに実行させるためのプログラム更新プログラム。
- 請求項5に記載のプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012086004A JP2013218388A (ja) | 2012-04-05 | 2012-04-05 | プログラム更新装置、方法、プログラム、及び記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012086004A JP2013218388A (ja) | 2012-04-05 | 2012-04-05 | プログラム更新装置、方法、プログラム、及び記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013218388A true JP2013218388A (ja) | 2013-10-24 |
Family
ID=49590442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012086004A Pending JP2013218388A (ja) | 2012-04-05 | 2012-04-05 | プログラム更新装置、方法、プログラム、及び記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013218388A (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000242487A (ja) * | 1999-02-24 | 2000-09-08 | Mitsubishi Electric Corp | プログラム更新装置およびプログラム更新方法 |
JP2002251310A (ja) * | 2001-02-21 | 2002-09-06 | Ricoh Co Ltd | フラッシュメモリのファイルシステム作成方式 |
US20030142556A1 (en) * | 2002-01-29 | 2003-07-31 | Lohse Martin A. | Differential flash memory programming technique |
JP2006059217A (ja) * | 2004-08-23 | 2006-03-02 | Mitsubishi Electric Corp | ソフトウェアメモリイメージ生成装置及び組み込み機器ソフトウェア更新システム及びプログラム |
JP2007524171A (ja) * | 2004-02-27 | 2007-08-23 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | フラッシュメモリのプログラミング |
JP2008269394A (ja) * | 2007-04-23 | 2008-11-06 | Konica Minolta Business Technologies Inc | 画像形成装置、プログラム更新システム、プログラム更新方法およびプログラム更新プログラム |
JP2009009392A (ja) * | 2007-06-28 | 2009-01-15 | Sony Ericsson Mobilecommunications Japan Inc | ソフトウェア更新方法および携帯端末装置 |
-
2012
- 2012-04-05 JP JP2012086004A patent/JP2013218388A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000242487A (ja) * | 1999-02-24 | 2000-09-08 | Mitsubishi Electric Corp | プログラム更新装置およびプログラム更新方法 |
JP2002251310A (ja) * | 2001-02-21 | 2002-09-06 | Ricoh Co Ltd | フラッシュメモリのファイルシステム作成方式 |
US20030142556A1 (en) * | 2002-01-29 | 2003-07-31 | Lohse Martin A. | Differential flash memory programming technique |
JP2007524171A (ja) * | 2004-02-27 | 2007-08-23 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | フラッシュメモリのプログラミング |
JP2006059217A (ja) * | 2004-08-23 | 2006-03-02 | Mitsubishi Electric Corp | ソフトウェアメモリイメージ生成装置及び組み込み機器ソフトウェア更新システム及びプログラム |
JP2008269394A (ja) * | 2007-04-23 | 2008-11-06 | Konica Minolta Business Technologies Inc | 画像形成装置、プログラム更新システム、プログラム更新方法およびプログラム更新プログラム |
JP2009009392A (ja) * | 2007-06-28 | 2009-01-15 | Sony Ericsson Mobilecommunications Japan Inc | ソフトウェア更新方法および携帯端末装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5413572B2 (ja) | メモリストレージ装置及びその制御方法 | |
US8402202B2 (en) | Input/output control method and apparatus optimized for flash memory | |
JP2006040264A (ja) | メモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
JP2009199625A (ja) | メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
US20110113075A1 (en) | Garbage collection program, garbage collection method, and garbage collection system | |
JP2008070975A (ja) | データ保存装置及びデータ保存方法 | |
JP2010267290A (ja) | 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置 | |
JP2008299848A (ja) | 不揮発性メモリのデータ処理装置及びその処理方法 | |
US8156278B2 (en) | Non-volatile data storage system and method thereof | |
JP5183662B2 (ja) | メモリ制御装置及びメモリ制御方法 | |
JP5592478B2 (ja) | 不揮発性記憶装置及びメモリコントローラ | |
JP2013235531A (ja) | 制御装置、記憶装置、記憶制御方法 | |
JP4829202B2 (ja) | 記憶装置及びメモリ制御方法 | |
JPWO2009001514A1 (ja) | メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム | |
KR100954603B1 (ko) | 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법 | |
US11176089B2 (en) | Systems and methods for implementing dynamic file systems | |
TW202006535A (zh) | 韌體更新方法 | |
JP2014115927A (ja) | プログラム更新装置、方法、プログラム、及び記憶媒体 | |
CN100555243C (zh) | 信息处理装置、图像摄取装置以及信息处理方法 | |
JP2011227802A (ja) | データ記録装置 | |
JP5949122B2 (ja) | 制御装置、記憶装置、記憶制御方法 | |
TW201621668A (zh) | 資料儲存裝置及其資料寫入方法 | |
JP2013250603A (ja) | メモリ管理装置および方法、並びにプログラム | |
JP2013218388A (ja) | プログラム更新装置、方法、プログラム、及び記憶媒体 | |
KR101320917B1 (ko) | 파일의 특성에 따라 각기 다른 기록방식을 적용하는 파일기록방법 및 이를 적용한 전자기기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150318 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160119 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160517 |