JP2014115927A - プログラム更新装置、方法、プログラム、及び記憶媒体 - Google Patents

プログラム更新装置、方法、プログラム、及び記憶媒体 Download PDF

Info

Publication number
JP2014115927A
JP2014115927A JP2012270965A JP2012270965A JP2014115927A JP 2014115927 A JP2014115927 A JP 2014115927A JP 2012270965 A JP2012270965 A JP 2012270965A JP 2012270965 A JP2012270965 A JP 2012270965A JP 2014115927 A JP2014115927 A JP 2014115927A
Authority
JP
Japan
Prior art keywords
program
memory
update
block
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
Application number
JP2012270965A
Other languages
English (en)
Inventor
Hiroki Sugiyama
宏樹 すぎ山
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2012270965A priority Critical patent/JP2014115927A/ja
Publication of JP2014115927A publication Critical patent/JP2014115927A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮しプログラムデータを効率の良いメモリブロックに配置する。
【解決手段】プログラム更新装置は、更新対象の旧プログラムブロックと共に同一のメモリブロック内に格納された更新対象以外のプログラムデータを記憶媒体に複写し、不揮発性メモリ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には、フラッシュメモリをメモリブロックをさらに複数ブロックに分割し、その分割したブロック単位で、データの書き込み、読み出しを行うことで、データの読み書きの高速化を図る技術が開示されている。
特開2000−242487号公報 特開2004−318933号公報 特開2006−40168号公報 特開2006−313411号公報
図1で説明したような従来技術では、不揮発性メモリ上のプログラムブロックの格納位置を、フラッシュメモリのメモリブロックを考慮して配置されているわけではないため、不揮発性メモリ上のプログラムブロックの更新内容が軽微であったとしても、更新対象のプログラムブロックが格納位置によっては、更新対象のプログラムブロックが格納されているメモリブロック以外に格納されているプログラムブロックのRAMへの退避、該当メモリブロックの消去、退避データの再書き込み処理が発生する可能性がある。
また、特許文献1に記載のプログラム更新装置では、空きを設けることを許容してメモリブロック単位で各機能のプログラムデータを格納した状態に対して、そのデータの更新を行う例が記載されているが、更新後には、退避のために複写したデータを空きが無い状態で書き込んでおり、退避のために複写したデータの再書き込み時のプログラムブロックの格納位置を定めていない。よって、この装置では、次に更新の必要が生じた場合には、結局同じような事態が生じ、退避や消去の対象となるデータが増えてしまう。
また、特許文献2〜4のいずれに記載の技術においても、更新を行う際の書き込み時のプログラムブロックの格納位置を、更新を考慮して定めたものではなく、同様に、更新を繰り返すとデータの退避や消去の対象が増えていってしまう。
本発明は、上述のような実状に鑑みてなされたものであり、その目的は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能なプログラム更新装置、プログラム更新方法、プログラム更新プログラム、及びそのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供することにある。
上記課題を解決するために、本発明の第1の技術手段は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置であって、データの書き込み及び読み出しが可能な記憶媒体と、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、前記記憶媒体に複写する複写部と、前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去部と、新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込み部と、を備え、前記メモリ書き込み部は、各プログラムブロックの更新履歴を示す情報を保持する更新履歴保持部と、該更新履歴を示す情報に応じて、更新対象以外のプログラムブロックの格納場所を検証するプログラム格納位置検証部とを有することを特徴としたものである。
本発明の第2の技術手段は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを、プログラム更新装置が更新するプログラム更新方法であって、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込みステップと、を有し、前記メモリ書き込みステップは、各プログラムブロックの更新履歴を示す情報を保持するステップと、該更新履歴を示す情報に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップと、を有することを特徴としたものである。
本発明の第3の技術手段は、第2の技術手段におけるプログラム更新方法を、コンピュータに実行させるためのプログラム更新プログラムである。
本発明の第4の技術手段は、第3の技術手段におけるプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体である。
本発明によれば、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能になる。
従来技術による、プログラムを構成するプログラムブロックをフラッシュメモリに格納した状態を説明するための概念図である。 不揮発性メモリを含むMFPとPCとでなるシステムの一例を示すブロック図である。 本発明に係るプログラム更新装置における不揮発性メモリに書き込まれたデータの一例を示す図である。 本発明に係るプログラム更新装置におけるメモリ書き込み処理の一例を説明するためのフロー図である。 図4のメモリ書き込み処理で使用するプログラムブロック管理リストの一例を示す図である。 図4のメモリ書き込み処理の具体例を説明するための概念図である。 本発明に係るプログラム更新装置におけるプログラム格納位置決定処理の一例を説明するためのフロー図である。 図7に続くフロー図である。 図7及び図8に続くフロー図である。 図7〜図9に続くフロー図である。 図7のプログラム格納位置決定処理における更新履歴マトリクス取得処理で取得する更新履歴マトリクスの一例を示す図である。 図11の更新履歴マトリクスを保持する処理の一例を説明するためのフロー図である。 図7〜図10のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。 図7〜図10のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。 図7〜図10のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
本発明に係るプログラム更新装置は、不揮発性メモリに記憶されたプログラムデータを更新する装置である。ここで、本発明で対象とする不揮発性メモリは、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みを可能とし、電気的に一括消去及び書き込みが可能なフラッシュメモリ(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に書き込む。
本発明における、メモリ書き込み部の主たる特徴は、このようなメモリブロック単位での書き込みを行う点と、メモリ書き込み部が次の更新履歴保持部とプログラム格納位置検証部を有する点にある。
この更新履歴保持部は、図3の構成例において更新履歴情報が不揮発性メモリ21cに格納された例を図示したように、各プログラムブロックの更新履歴を示す情報(更新履歴情報)を保持する。そして、上記のプログラム格納位置検証部は、上記の更新履歴保持部で保持された更新履歴情報に応じて、更新対象以外のプログラムブロックも含め各プログラムブロックの格納場所を検証する。実際、メモリブロック単位の書き込みを行う際には、更新対象プログラムブロックのデータ量とメモリブロック単位とを比較しながら、順次メモリブロックに書き込むが、メモリブロック単位未満の残りのデータ(剰余部分)についてこのような検証により格納場所を決定する。
上記した複写部、消去部、及びメモリ書き込み部は、ハードウェアとして専用の回路で構成することもできるが、上述したように、不揮発性メモリ21c(又は別途設けたハードディスクや不揮発性メモリ等の記憶装置)に、各部をCPU21aに実行させるためのプログラム更新プログラムとして組み込むことが好ましい。無論、複写部、消去部、及びメモリ書き込み部をプログラムとして組み込んだ場合、そのプログラム(プログラム更新プログラム)自身については本発明の更新処理が適用できないため、プログラム更新プログラムについては、その更新により他のプログラムに影響を及ぼさないような格納領域に予め配置しておき、本発明の更新処理は、この格納領域を除いた領域を用いて実行すればよい。
このように、不揮発性メモリ21c上に格納する更新対象プログラムを、更新時(更新処理の書き込み時)に、不揮発性メモリ21cのメモリブロック単位で格納するようにすることで、その更新対象プログラムのある機能を次に更新する際に、必要最低限のメモリブロックの消去及び書き込み処理を行うことで実現することができる。つまり、本発明によれば、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能になる。よって、本発明では、従来に比べて更新時間短縮、さらには不揮発性メモリの消去回数の削減を図ることができ、不揮発性メモリの寿命を延ばすことができる。
以下、本発明に係るプログラム更新装置における更新処理の一例について詳細に説明する。ここでは、図4に沿って、主にCPU21aが実行する、このようなメモリ書き込み処理のうち、特に図1のようなメモリブロック単位とは無関係に格納されたデータが元々存在した状態で、本発明のプログラム更新処理プログラムをインストールして実行開始した場合の処理について説明する。なお、複写及び消去の処理自体は従来と基本的に同様であり、その説明を省略する。
図4は、本発明に係るプログラム更新装置におけるメモリ書き込み処理の一例を説明するためのフロー図である。図5は、図4のメモリ書き込み処理で使用するプログラムブロック管理リストの一例で、メモリ書き込み処理後のプログラム管理リストの一例を示す図である。また、図6は、図4のメモリ書き込み処理の具体例を説明するための概念図である。
まず、メモリブロックサイズ(Mb)を取得し(ステップS1)、図1の配置13で示すプログラム全体についてのプログラムブロック管理リストを取得する(ステップS2)。このプログラムブロック管理リストは、図1に示すように機能I〜VIのプログラムブロックで構成される配置13のプログラム全体(つまり、図6のように非圧縮プログラム全体61を圧縮した状態のプログラム全体62)に対して、そのプログラムが実現する各種機能毎にプログラムブロック単位で管理するためのリストである。このプログラムブロック管理リストは、図3の構成例で管理リストとして示したように例えば不揮発性メモリ21cに格納しておけばよい。ここで、機能IのデータをOS(Operating System)とし、他の機能II〜VIをそれぞれOSに対して追加されたプログラムA〜Eとしているが、これに限ったものではなく、例えば各機能のデータが関連するプログラムでなくてもよい。また、図1や図6等ではメモリブロック単位の例として256Byteを挙げているが、これに限ったものではない。
より具体的には、このプログラムブロック管理リストは、図5で示す図4の処理後のプログラムブロック管理リスト51と比べ、先頭、終了アドレス及び使用メモリブロックが更新される前のリストである。ここで、図5で示すプログラムブロック管理リスト51は、プログラム全体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より大きい場合(つまりE_Mb(N)≠0の場合)に、その値を保持し(ステップS6)、保持しているE_Mbの中にそのMOD(Pb.N,Mb)より大きいサイズが存在するか否かを判定する(ステップS7)。存在しなかった場合(ステップS7でNOの場合)、空きメモリブロックに対象のプログラムブロックを格納し(ステップS9)、Nをインクリメントする(ステップS10)。
一方、存在した場合(ステップS7でYESの場合)、対象のプログラムブロックを空きメモリブロックに格納していき、対象のプログラムブロックの剰余部分MOD(Pb.N,Mb)については、保持しているE_Mbのメモリブロック(ステップS7でYESとの判定に至ったE_Mbが格納されているメモリブロック)に格納し(ステップS8)、Nをインクリメントする(ステップS10)。
ステップS10の後は、Nが予め定めたN(リストに含まれるプログラムブロックの数)になったか否かを判定し(ステップS11)、YESとなるまで、ステップS4に戻って次のNについて同様の処理を続け、YESとなった場合にはプログラムブロック管理リストの更新を行う(ステップS12)。
ここでは、上述したように、プログラムブロック管理リストの先頭、終了アドレスや使用メモリブロックが更新され、図5に示すプログラムブロック管理リスト51となる。また、この時点で後述の更新履歴マトリクスを作成しておいてもよい。そして、ステップS8,S9により、図1の配置13で示すプログラム全体(つまり図6のプログラム全体62)が図6の配置63で示すようなプログラム全体の格納状態になる。
プログラムブロック管理リスト51には最終更新日時を見ると、例えば少なくとも1回、機能Iのデータと機能VIのデータとが同時に更新されているのが分かる。但し、この処理例は、本発明のプログラム更新処理プログラムをインストールして実行を開始した段階の処理例であり、最終更新日時しか分からない(つまり同時に一度更新しているか否かしか分からない)。この処理例では、このように同時更新の頻度に差がないため、上記のプログラム格納位置検証部での更新履歴情報に応じた各プログラムブロック(この処理例では更新プログラムがない状態であるため全て更新対象以外のプログラムブロック)の格納場所の検証処理を省略している。換言すれば、この処理例では、プログラムブロック管理リスト51における最終更新日時の情報を上記更新履歴情報と取り扱っていない。
本発明のプログラム更新処理プログラムをインストールして実行を開始した場合の他の処理例として、図4で説明する処理例において次のような変更を加えることもできる。すなわち、ステップS7において「大きいサイズが存在し且つ一度そのE_Mbに係るプログラムブロックと同時更新している」か否かを判定するようにしてもよい。つまり、プログラムブロック管理リスト51における最終更新日時の情報を上記更新履歴情報として取り扱ってもよい。無論、プログラムブロック管理リスト51において毎回の更新の履歴が存在した場合には、「一度」の代わりに「所定回数以上」同時更新しているかを判断するようにすればよい。なお、同じ更新開始の日時だけを同時更新と判定してもよいし、更新開始又は終了日時が所定時間以内であることで同時更新と判定することもできる。
次に、本発明のプログラム更新プログラムがインストールされ、図4のような処理例又は上記他の処理例などが実行された状態で、プログラムの更新が実行される場合の処理例について説明する。
この処理例の概略をまず説明すると、プログラムが更新される毎に、更新履歴情報の一例としての更新履歴マトリクスを書き換え、その更新履歴マトリクスに基づき、同時更新頻度が高いペア毎(或いはセット毎)になるように格納位置を検証し、その検証結果に基づきメモリブロック単位で書き込む。つまり、上記のプログラム格納位置検証部がそのような格納位置を決定し、メモリ書き込み部がその決定に従い書き込みを実行する。
なお、図3の構成例では、不揮発性メモリ21cに、更新履歴情報や管理リスト(プログラムブロック管理リスト)も格納させているが、これらについても他のプログラム(更新可能性があり且つ本発明の処理対象となる更新対象プログラム)に影響を及ぼさないような格納領域に予め配置しておき、本発明の更新処理は、この格納領域を除いた領域を用いて実行すればよい。
このような処理例の詳細として、主にCPU21aが実行する、上記のプログラム格納位置検証部におけるプログラム格納位置決定処理の一例を説明する。図7は、本発明に係るプログラム更新装置におけるプログラム格納位置決定処理の一例を説明するためのフロー図で、図8〜図10は、図7に続くフロー図である。また、図10は、図7のプログラム格納位置決定処理における更新履歴マトリクス取得処理で取得する更新履歴マトリクスの一例を示す図で、図11は、図10の更新履歴マトリクスを保持する処理の一例を説明するためのフロー図である。また、図13〜図15は、図7〜図10のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
図7において、まず、メモリブロックサイズ(Mb)を取得し(ステップS21)、更新対象(書換対象)プログラムブロック(Pb)のサイズも取得する(ステップS22)。そして、更新履歴マトリクスを取得する(ステップS23)。更新履歴マトリクスは、図3における不揮発性メモリ21cに格納される更新履歴情報の例であり、各プログラムブロックの更新の関連性を示すようなデータとして保持したものである。なお、更新履歴マトリクスが存在しない場合には、例えばプログラムブロック管理リスト51から作成すればよい。
図11で例示する更新履歴マトリクス110は、各プログラムブロックの更新の関連性を示すようなデータであり、例えば機能Iと機能VIとは5回以上の頻度で同時に更新されていること、機能IVと機能Vとは2回以上5回未満の頻度で同時に更新されていること、機能IIと機能IIIとは2回未満の頻度で同時に更新されていること、並びに機能IIと機能Vとは同時に更新されたことがないことなどを示している。
このような更新履歴マトリクス110は、図12に示す更新履歴マトリクス保持処理で保持される。すなわち、まずこの更新履歴マトリクス110を取得し(ステップS51)、書換対象プログラムブロックの書換回数カウンターを更新し、それを更新履歴マトリクス110に反映させる(ステップS52)。なお、図11では、更新履歴マトリクス110として、閾値処理したデータ(◎、○、△、×)を記録しているが、実際には単にこの書換回数カウンターの値を格納して、例えば後述のステップS24等の判定のときに閾値処理をしてもよい。この更新履歴マトリクス保持処理は、例えば後述のステップS41の処理時に行うなどすればよい。
図7の説明に戻り、ステップS23に続き、書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)があるか否かを判定する(ステップS24)。例えば上記の◎のときのみ同時更新履歴が高いと判定すればよい。ステップS24でNOの場合には、後述の図10のステップS37に進み、ステップS24でYESの場合には、図8のステップS25に進む。
図8においては、まず、書換対象プログラムブロック(Pb)と同一メモリブロックに他のプログラムブロック(Pb″)があるか否かを判定する(ステップS25)。存在する場合(ステップS25でYESの場合)には、先ほどの同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)とプログラムブロック(Pb″)が同一か否かを判定する(ステップS26)。存在しない場合(ステップS25でNOの場合)には、後述の図9のステップS29に進む。
ステップS26でYESの場合、後述の図10のステップS35に進み、プログラムブロック(PbとPb′)の書き込み先(空き)を探す。具体的には、ステップS35において、書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)を格納できる空きメモリブロック(MOD(Pb,Mb)+MOD(Pb′,Mb))が存在するか否かを判定する。ここで、MODの変数は全てサイズを指すものとする。例えば、MODの変数としてのPbはプログラムブロック(Pb)のサイズを指すことになる。なお、図7〜図10のようなプログラムの更新処理を繰り返すことで、Pb′とPb″とが同一になる、つまり同時更新履歴の高いプログラムブロック(Pb′)が書換対称プログラムブロック(Pb)と同一のメモリブロックに格納された状態になることが多くなっていく。
ステップS35でYESの場合、書換対象プログラムブロック(Pb)と同時更新履歴の高いプログラムブロック(Pb′)を記憶媒体に退避して、ステップS35で探した同一の空きメモリブロックに配置(書込)する(ステップS36)。
ステップS36の処理後、書換対象プログラムブロックの書換が全て完了したか否かを判定し(ステップS40)、未完了の場合(ステップS40でNOの場合)には図7のステップS22に戻り、完了の場合(ステップS40でYESの場合)には、プログラムブロック管理リスト51を更新し(ステップS41)、処理を終了する。
このように配置する場合、図13に示すように、配置131が配置132のようになる。具体的には、機能IVaのデータ書換に伴い、更新履歴マトリクス110を参照して同時更新履歴の高い機能を検索し、機能IVaを同時更新履歴の高い機能IIIaと共に一旦記憶媒体に退避して、機能IVaと機能IIIaを格納できる空きメモリ領域(メモリブロック3)を作り、同一メモリブロック3に機能IVaと機能IIIaとを配置させる。図13の例では、機能IVaのデータが126Byteから128Byteに増えているが、機能IVa,IIIaのデータの合計はメモリブロック単位を超えていない。
一方で、ステップS26でNOの場合には、ステップS27に進み、MOD(Pb″,Mb)を満足する空きメモリブロックがあるか否かを判定する。ステップS27でYESの場合、書換対象プログラムブロック(Pb)と同一メモリブロックに存在する他のプログラムブロック(Pb″)を記憶媒体に退避して、空きメモリブロックに配置し、図9のステップS29に進む。
一方で、そのような空きメモリブロックが存在しない場合(ステップS27でNOの場合)には、他のプログラムブロック(Pb″)はそのままにしておき、ステップS35に進み、プログラムブロック(PbとPb′)の書き込み先(空き)を探す。つまり、ステップS35では、書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)を格納できる空きメモリブロックを満足する空きメモリブロックが存在するか否かを判定する。
ステップS27でNOの場合の配置例は、図14に示すように、配置141が配置142のようになる。具体的に説明すると、機能IVaのデータ書換時に更新履歴マトリクスを参照して同時更新履歴の高い機能として機能Vaが検索され、機能IVaと同一メモリブロックに存在する機能IIIaは同時更新履歴が低いと判定されたとする。なお、図11のリスト110の記述内容とは異なる例を挙げている。このように判定された場合、機能IVaのデータ書換に伴い、同一メモリブロックに存在する機能IIIaを退避する領域がないため、機能IVaと機能IIIaを一旦記憶領域に退避し、機能IVaと同時更新履歴の高い機能Vaも記憶媒体に退避して、機能IVaと機能Vaを同一メモリ領域(メモリブロック3)に配置する。この配置はステップS36でなされ、この段階では機能IIIaが記憶領域に退避されたままの状態であり、新たに配置先を探す必要がある。図7〜図10ではその流れを図示していないが、例えば、メモリブロック4に存在する機能XXaを一旦記憶領域に退避し、新たなメモリ領域(メモリブロック5)を加えてそこに機能XXaを配置させ、一旦記憶領域に退避しておいた機能IIIaを元々機能XXaが格納されていた領域(メモリブロック4)に配置させればよい。なお、代替処理として、配置先を探す段階で新たなメモリ領域を空きメモリブロック5として加え、そこに機能IIIaを配置することもでき、これにより機能XXaの退避や移動が必要なくなる。
図9のステップS29において、同時更新履歴の高いプログラムブロック(Pb′)と同じメモリブロック内に更に他のプログラムブロック(Pb″′)が存在するか否かを判定する。ステップS29でYESの場合には、ステップS30に進み、さらに同時更新履歴の高いプログラムブロック(Pb′)と同様に他のプログラムブロック(Pb″′)も書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)が高いか否かを判定する。
そして、ステップS30でYESの場合には、ステップS31に進み、書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)と他のプログラムブロック(Pb″′)を格納できる空きメモリブロック(MOD(Pb,Mb)+MOD(Pb′,Mb)+MOD(Pb″′,Mb))が存在するか否かを判定する。ステップS31でYESの場合には、書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)と他のプログラムブロック(Pb″′)を記憶媒体に退避して、同一空きメモリブロックに配置(書込)する(ステップS32)。
ステップS30でYESとなりステップS31でYESとなった場合の配置例は、図15に示すように、配置151が配置152のようになる。具体的に説明すると、機能IVaのデータ書換時に更新履歴マトリクスを参照して同時更新履歴の高い機能として機能IIIa,VIaが検索され、機能IIIa,VIaは同時更新履歴が高いと判定されたとする。なお、図11のリスト110の記述内容とは異なる例を挙げている。このように判定された場合、機能IVaのデータ書換に伴い、機能IVaと同時更新履歴(同時更新頻度)の高いプログラムブロック(機能IIIaと機能VIa)を一旦記憶領域に退避し、機能IVaと機能IIIaと機能VIaを同一メモリ領域(メモリブロック3)に配置させる。
一方、ステップS30でNOの場合、他のプログラムブロック(Pb″′)を格納できる空きメモリブロック(MOD(Pb″′,Mb))が存在するか否かを判定する(ステップS33)。ステップS33でYESの場合には、ステップS34に進み、他のプログラムブロック(Pb″′)を空きメモリブロックに格納する。
ステップS29でNOの場合や、ステップS31でNOの場合や、ステップS33でNOの場合には、ステップS35に進み、書換対象プログラムブロック(Pb)と同時更新履歴(同時更新頻度)の高いプログラムブロック(Pb′)を格納できる空きメモリブロックを満足する空きメモリブロックが存在するか否かを判定する。なお、ステップS33でNOの場合には、プログラムブロック(Pb″′)はそのままにしておく。
また、ステップS24でNOの場合や、ステップS35でNOの場合には、ステップS37に進み、MOD(Pb,Mb)を満足する空きメモリブロックがあるか否かを判定する。ステップS37でYESの場合には、書換対象プログラムブロック(Pb)を記憶媒体に退避して、空きメモリブロックに移動する(ステップS38)。存在しない場合(ステップS37でNOの場合)には、空きメモリブロックがないことによるエラー通知して(ステップS39)、処理を終了する。
なお、図7〜図10の処理において、書換対象プログラムの剰余部分以外についてはステップS32,S36,S38での剰余部分の書き込み時などに空きメモリブロックに順に格納していけばよい。また、図7〜図10の例では、説明の簡略化のため、ステップS29,S30で他に多くて1つのプログラムブロック(Pb″′)しかないことを前提とした検証しかしていない例を挙げた。しかし、実際には同時更新履歴の高いプログラムブロックが2つ以上ある場合も想定できるため、このような場合にも対応できるようにしておけばよい。その場合、例えばステップS31では他のプログラムブロック(Pb″′)と同様の条件の全てのプログラムブロックを満足する空きがあるか否かを判定し、同時更新履歴がより低い順に判定の対象から省いていくなどすればよい。
以上、本発明によれば、プログラム格納位置検証部及び更新履歴保持部により、プログラムの更新毎に、不揮発性メモリ内のプログラムブロック配置を見直すことが可能となり、同時に更新される頻度が多いプログラムブロックは同一メモリブロックに配置するようにし、プログラムの更新を、必要最低限のメモリブロックの消去及び書き込み処理で実現することが可能となる。
また、本発明は、プログラム更新装置の処理手順として説明したように、そのプログラム更新装置が、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新方法としての形態も採り得る。
このプログラム更新方法は、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、上記不揮発性メモリ内の、上記更新対象とされた旧プログラムブロック及び上記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、新たに上記不揮発性メモリに書き込むプログラムブロックのデータを、上記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で上記不揮発性メモリに書き込むメモリ書き込みステップと、を有する。そして、このメモリ書き込みステップは、各プログラムブロックの更新履歴を示す情報を保持するステップと、その更新履歴を示す情報に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップと、を有する。その他の応用例や効果については、プログラム更新装置について説明した通りであり、その説明を省略する。
また、本発明は、上記のプログラム更新方法をコンピュータに実行させるためのプログラム更新プログラム(つまり、図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 (4)

  1. 複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置であって、
    データの書き込み及び読み出しが可能な記憶媒体と、
    更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、前記記憶媒体に複写する複写部と、
    前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去部と、
    新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込み部と、を備え、
    前記メモリ書き込み部は、各プログラムブロックの更新履歴を示す情報を保持する更新履歴保持部と、該更新履歴を示す情報に応じて、更新対象以外のプログラムブロックの格納場所を検証するプログラム格納位置検証部とを有することを特徴とするプログラム更新装置。
  2. 複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを、プログラム更新装置が更新するプログラム更新方法であって、
    更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、
    前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、
    新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込みステップと、を有し、
    前記メモリ書き込みステップは、各プログラムブロックの更新履歴を示す情報を保持するステップと、該更新履歴を示す情報に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップと、を有することを特徴とするプログラム更新方法。
  3. 請求項2に記載のプログラム更新方法を、コンピュータに実行させるためのプログラム更新プログラム。
  4. 請求項3に記載のプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
JP2012270965A 2012-12-12 2012-12-12 プログラム更新装置、方法、プログラム、及び記憶媒体 Pending JP2014115927A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012270965A JP2014115927A (ja) 2012-12-12 2012-12-12 プログラム更新装置、方法、プログラム、及び記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012270965A JP2014115927A (ja) 2012-12-12 2012-12-12 プログラム更新装置、方法、プログラム、及び記憶媒体

Publications (1)

Publication Number Publication Date
JP2014115927A true JP2014115927A (ja) 2014-06-26

Family

ID=51171829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012270965A Pending JP2014115927A (ja) 2012-12-12 2012-12-12 プログラム更新装置、方法、プログラム、及び記憶媒体

Country Status (1)

Country Link
JP (1) JP2014115927A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018179106A1 (ja) * 2017-03-28 2018-10-04 三菱電機株式会社 プログラム更新装置、プログラム更新方法及びプログラム
WO2021153224A1 (ja) * 2020-01-31 2021-08-05 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018179106A1 (ja) * 2017-03-28 2018-10-04 三菱電機株式会社 プログラム更新装置、プログラム更新方法及びプログラム
JPWO2018179106A1 (ja) * 2017-03-28 2019-11-07 三菱電機株式会社 プログラム更新装置、プログラム更新方法及びプログラム
WO2021153224A1 (ja) * 2020-01-31 2021-08-05 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法
JP2021121894A (ja) * 2020-01-31 2021-08-26 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法
JP7266216B2 (ja) 2020-01-31 2023-04-28 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法

Similar Documents

Publication Publication Date Title
US9928167B2 (en) Information processing system and nonvolatile storage unit
US8402202B2 (en) Input/output control method and apparatus optimized for flash memory
US9058255B2 (en) Solid state drive and method for constructing logical-to-physical table thereof
JP2004280752A (ja) データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP5874525B2 (ja) 制御装置、記憶装置、記憶制御方法
JP5183662B2 (ja) メモリ制御装置及びメモリ制御方法
US8156278B2 (en) Non-volatile data storage system and method thereof
JP2008299848A (ja) 不揮発性メモリのデータ処理装置及びその処理方法
KR100954603B1 (ko) 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법
US11176089B2 (en) Systems and methods for implementing dynamic file systems
JP2014115927A (ja) プログラム更新装置、方法、プログラム、及び記憶媒体
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
JP5949122B2 (ja) 制御装置、記憶装置、記憶制御方法
TW201621668A (zh) 資料儲存裝置及其資料寫入方法
JP2011227802A (ja) データ記録装置
JP2013250603A (ja) メモリ管理装置および方法、並びにプログラム
KR101320917B1 (ko) 파일의 특성에 따라 각기 다른 기록방식을 적용하는 파일기록방법 및 이를 적용한 전자기기
JP2013218388A (ja) プログラム更新装置、方法、プログラム、及び記憶媒体
JP5491201B2 (ja) 半導体記録装置及び半導体記録システム
JP4468342B2 (ja) データ管理方法
JP2013109404A (ja) 情報処理装置
JP7435470B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP6036618B2 (ja) 電子機器及びプログラム
JP2008191855A (ja) 半導体記憶装置及びメモリ制御方法