(57)【要約】【課題】複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮しプログラムデータを効率の良いメモリブロックに配置する。【解決手段】プログラム更新装置は、更新対象の旧プログラムブロックと共に同一のメモリブロック内に格納された更新対象以外のプログラムデータを記憶媒体に複写し、不揮発性メモリ２１ｃ内の、更新対象とされた旧プログラムブロック及び複写対象データを一部に含むメモリブロックの記憶内容を消去し、新たに不揮発性メモリ２１ｃに書き込むプログラムブロックのデータを複写データと共にメモリブロック単位で不揮発性メモリ２１ｃに書き込む。メモリ書き込みでは、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて更新対象プログラムブロックと更新対象以外のプログラムブロックの格納場所を検証する。【選択図】図３
2013218388.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置であって、
データの書き込み及び読み出しが可能な記憶媒体と、
更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、前記記憶媒体に複写する複写部と、
前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去部と、
新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込み部と、を備え、
前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するプログラム格納位置検証部を有することを特徴とするプログラム更新装置。
【請求項２】
前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックの更新履歴を保持する更新履歴保持部をさらに有することを特徴とする請求項１に記載のプログラム更新装置。
【請求項３】
前記プログラム格納位置検証部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減により、前記更新対象とされた旧プログラムブロックが格納されているメモリブロックに格納されている更新対象以外のプログラムデータの位置を、前記更新履歴を参照して決定するプログラム格納位置決定部を有することを特徴とする請求項２に記載のプログラム更新装置。
【請求項４】
複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを、プログラム更新装置が更新するプログラム更新方法であって、
更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、
前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、
新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込みステップと、を有し、
前記メモリ書き込みステップは、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップを有することを特徴とするプログラム更新方法。
【請求項５】
請求項４に記載のプログラム更新方法を、コンピュータに実行させるためのプログラム更新プログラム。
【請求項６】
請求項５に記載のプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム更新装置、方法、プログラム、及び記憶媒体に関し、より詳細には、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置、プログラム更新方法、プログラム更新プログラム、及びそのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【０００２】
画像処理装置等における制御部を構成する各種基板は、複数のメモリブロックで構成され且つメモリブロック単位で電気的に一括消去及び書き込みが可能なフラッシュメモリを有し、そのフラッシュメモリに格納したプログラムにより各種制御動作を行う。
【０００３】
図１は、従来技術による、プログラムを構成するプログラムブロックをフラッシュメモリに格納した状態を説明するための概念図である。プログラム全体１１は、機能I〜VIのプログラムブロックで構成される。ここで、機能IのデータをＯＳ（Operating System）とし、他の機能II〜VIをそれぞれＯＳに対して追加されたプログラムＡ〜Ｅとしている。さらに、これらのプログラムをフラッシュメモリに格納する場合、メモリ使用領域の削減を目的として、各プログラムブロックを圧縮した状態で格納する。圧縮後のプログラム全体１２は、フラッシュメモリのメモリブロック単位とは関係なく、機能Iａ〜VIａのデータ（それぞれ機能I〜VIを圧縮したデータ）を、フラッシュメモリ上の配置１３として示すようにフラッシュメモリの先頭アドレスから連続的に格納する場合が多い。
【０００４】
図２は、不揮発性メモリを含むＭＦＰ（Multifunction Peripheral）等の画像処理装置とＰＣ（Personal Computer）等の情報処理装置とでなるシステムの一例を示すブロック図である。ＭＦＰ２１の基板は、中央処理装置（ＣＰＵ：Central Processing Unit）２１ａと、ワークエリアとして使用するＲＡＭ（Random Access Memory）２１ｂ、更新対象となるプログラム（制御プログラム）を格納するフラッシュメモリ等の不揮発性メモリ２１ｃとを備える。ＭＦＰ２１はその他、ＰＣ２２と通信回線２３を介して接続するための通信ポート２１ｄや、画像処理機能を実現するための様々な構成要素を備える。ＭＦＰ２１の電源ＯＮ時には、ＣＰＵ２１ａから不揮発性メモリ２１ｃのプログラムを読み込み、ＲＡＭ２１ｂ上のワークエリアにてそのプログラムのデータを伸張して実行する。
【０００５】
ところで、不揮発性メモリ２１ｃ内のプログラムは、開発途上や不具合改善、新規機能追加などにより頻繁に更新がなされる。なお、ＰＣ２２は、ＣＰＵ２２ａ、ワークエリアとして使用するＲＡＭ２２ｂ、プログラム（ＰＣ２２の制御プログラム）を格納するＲＯＭ（フラッシュメモリやハードディスク等）２２ｃと、ＭＦＰ２１と通信回線２３を介して接続するための通信ポート２２ｄとを備える。そして、ＰＣ２２側から、ＭＦＰ２１の不揮発性メモリ２１ｃ内のプログラムを更新することが可能に構成されている。
【０００６】
そのために、不揮発性メモリ２１ｃ内のプログラムの更新は、更新を実行するためのプログラム（プログラム更新プログラム）が別途用意され、それを用いてなされる。プログラム更新プログラムの基本的な動作としては、書換対象のプログラムブロックが格納されているメモリブロックをメモリブロック単位で消去して、更新後の新プログラムブロックデータをそのメモリブロックに書き込む。なお、同メモリブロック内に書換対象以外のプログラムブロックのデータが格納されている場合は、書換対象以外のプログラムブロックのデータを一旦ワークエリア（ＲＡＭ２１ｂ）上にコピー（複写）して、上記書き込み作業時に、更新後の新プログラムブロックデータと、書換対象以外のプログラムブロックのデータを合わせて、同じメモリブロックに書き込む。
【０００７】
仮に、図１のような状態から、機能IIａのみのプログラムブロックを書き換える場合を想定する。機能IIａはメモリブロック１とメモリブロック２に跨って配置されているため、更新対象が機能IIａだけであっても、メモリブロック１に格納されている機能Iａの一部を退避するために、機能Iａ全体をワークエリア（ＲＡＭ２１ｂ）上に複写する必要がある。さらに、メモリブロック２に格納されている機能IIIａ全体及び機能IVａの一部を退避するために、機能IIIａ及び機能IVａ全体をＲＡＭ２１ｂ上に複写する必要がある。さらに、機能IVａはメモリブロック３の一部にも跨っているため、メモリブロック３に格納されている機能Vａ及び機能VIａまでもＲＡＭ２１ｂ上に複写する必要がある。つまり、機能IIａのみのプログラムブロックを書き換える場合であっても、メモリブロック０〜３に格納されている機能Iａ〜機能VIａの全て（機能IIａを除く）をＲＡＭ２１ｂ上に複写して、メモリブロック０〜３を消去して、機能Iａ〜機能VIａ（機能IIａのみ更新のための新たなデータ）を書き込む処理が必要となってしまう。
【０００８】
例えば、特許文献１に記載のプログラム更新装置では、図１の不揮発性メモリ上の配置１３のように先頭アドレスから連続的に空きを設けずに格納したものではなく、メモリブロック単位で格納された更新対象プログラムについて、上述のような複写、消去、及び書き込みを行っている。
【０００９】
また、特許文献２には、不揮発性メモリに対して高速にデータの書き込み、読み出しができる半導体記憶装置が開示されている。特許文献３には、フラッシュメモリのデータ更新に際して必要な部分のみデータの書き換えを実行する技術が開示されている。特許文献４には、フラッシュメモリをメモリブロックをさらに複数ブロックに分割し、その分割したブロック単位で、データの書き込み、読み出しを行うことで、データの読み書きの高速化を図る技術が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−２４２４８７号公報
【特許文献２】特開２００４−３１８９３３号公報
【特許文献３】特開２００６−４０１６８号公報
【特許文献４】特開２００６−３１３４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
図１で説明したような従来技術では、不揮発性メモリ上のプログラムブロックの格納位置を、フラッシュメモリのメモリブロックを考慮して配置されているわけではないため、不揮発性メモリ上のプログラムブロックの更新内容が軽微であったとしても、更新対象のプログラムブロックが格納位置によっては、更新対象のプログラムブロックが格納されているメモリブロック以外に格納されているプログラムブロックのＲＡＭへの退避、該当メモリブロックの消去、退避データの再書き込み処理が発生する可能性がある。
【００１２】
また、特許文献１に記載のプログラム更新装置では、空きを設けることを許容してメモリブロック単位で各機能のプログラムデータを格納した状態に対して、そのデータの更新を行う例が記載されているが、更新後には、退避のために複写したデータを空きが無い状態で書き込んでおり、退避のために複写したデータの再書き込み時のプログラムブロックの格納位置を定めていない。よって、この装置では、次に更新の必要が生じた場合には、結局同じような事態が生じ、退避や消去の対象となるデータが増えてしまう。
【００１３】
また、特許文献２〜４のいずれに記載の技術においても、更新を行う際の書き込み時のプログラムブロックの格納位置を、更新を考慮して定めたものではなく、同様に、更新を繰り返すとデータの退避や消去の対象が増えていってしまう。
【００１４】
本発明は、上述のような実状に鑑みてなされたものであり、その目的は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能なプログラム更新装置、プログラム更新方法、プログラム更新プログラム、及びそのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供することにある。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明の第１の技術手段は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新装置であって、データの書き込み及び読み出しが可能な記憶媒体と、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、前記記憶媒体に複写する複写部と、前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去部と、新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込み部と、を備え、前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するプログラム格納位置検証部を有することを特徴としたものである。
【００１６】
本発明の第２の技術手段は、第１の技術手段において、前記メモリ書き込み部は、前記更新対象とされた旧プログラムブロックの更新履歴を保持する更新履歴保持部をさらに有することを特徴としたものである。
【００１７】
本発明の第３の技術手段は、第２の技術手段において、前記プログラム格納位置検証部は、前記更新対象とされた旧プログラムブロックからのデータサイズ増減により、前記更新対象とされた旧プログラムブロックが格納されているメモリブロックに格納されている更新対象以外のプログラムデータの位置を、前記更新履歴を参照して決定するプログラム格納位置決定部を有することを特徴としたものである。
【００１８】
本発明の第４の技術手段は、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを、プログラム更新装置が更新するプログラム更新方法であって、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、前記不揮発性メモリ内の、前記更新対象とされた旧プログラムブロック及び前記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、新たに前記不揮発性メモリに書き込むプログラムブロックのデータを、前記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で前記不揮発性メモリに書き込むメモリ書き込みステップと、を有し、前記メモリ書き込みステップは、前記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップを有することを特徴としたものである。
【００１９】
本発明の第５の技術手段は、第４の技術手段におけるプログラム更新方法を、コンピュータに実行させるためのプログラム更新プログラムである。
【００２０】
本発明の第６の技術手段は、第５の技術手段におけるプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体である。
【発明の効果】
【００２１】
本発明によれば、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能なフラッシュメモリ等の不揮発性メモリに記憶されたプログラムデータを更新するに際し、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能になる。
【図面の簡単な説明】
【００２２】
【図１】従来技術による、プログラムを構成するプログラムブロックをフラッシュメモリに格納した状態を説明するための概念図である。
【図２】不揮発性メモリを含むＭＦＰとＰＣとでなるシステムの一例を示すブロック図である。
【図３】本発明に係るプログラム更新装置における不揮発性メモリに書き込まれたデータの一例を示す図である。
【図４】本発明に係るプログラム更新装置におけるメモリ書き込み処理の一例を説明するためのフロー図である。
【図５】図４のメモリ書き込み処理で使用するプログラムデータ管理リストの一例を示す図である。
【図６】図４のメモリ書き込み処理の具体例を説明するための概念図である。
【図７】本発明に係るプログラム更新装置におけるプログラム格納位置決定処理の一例を説明するためのフロー図である。
【図８】図７に続くフロー図である。
【図９】図７及び図８に続くフロー図である。
【図１０】図７〜図９に続くフロー図である。
【図１１】図７のプログラム格納位置決定処理における更新履歴マトリクス取得処理で取得する更新履歴マトリクスの一例を示す図である。
【図１２】図１１の更新履歴マトリクスを保持する処理の一例を説明するためのフロー図である。
【図１３】図７〜図１０のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
【図１４】図７〜図１０のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
【図１５】図７〜図１０のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
【図１６】図７〜図１０のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
【発明を実施するための形態】
【００２３】
本発明に係るプログラム更新装置は、不揮発性メモリに記憶されたプログラムデータを更新する装置である。ここで、本発明で対象とする不揮発性メモリは、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みを可能とし、電気的に一括消去及び書き込みが可能なフラッシュメモリ（ＲＯＭに分類されることもある）がその代表的なものとして挙げられるが、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能であればよい。
【００２４】
本発明に係るプログラム更新装置は、データの書き込み及び読み出しが可能な記憶媒体、後述の複写部、消去部、及びメモリ書き込み部を備え、図２で説明したような、不揮発性メモリを含むＭＦＰ等の画像処理装置に組み込まれる。上記の記憶媒体は、任意にデータの読み書きが可能となっており、以下、図２のＲＡＭ２１ｂを挙げて説明する。また、本発明において、ＭＦＰ２１の具備する画像処理機能についてはどのような機能であってもよい。また、ＭＦＰ以外の画像処理装置としては、スキャナ、プリンタ、ファクシミリ装置などが挙げられる。
【００２５】
図３は、本発明に係るプログラム更新装置における不揮発性メモリに書き込まれたデータの一例を示す図である。図３に示す不揮発性メモリ２１ｃは、例えば、図２のＭＦＰ等の画像処理装置に組み込まれるものであり、プログラム更新プログラム、更新対象プログラム、管理リスト、更新履歴を格納している。
【００２６】
また、不揮発性メモリ２１ｃ内の更新対象プログラムは、ＰＣ２２からの更新データの受信及び更新指示により更新される。無論、ＰＣ２２に限らず、携帯電話機やサーバ装置等の他の機器であってもよく、さらにはＭＦＰ２１自身に差し込んだＵＳＢ（登録商標。以下同様。）メモリ等の記憶媒体からの更新データの受信及び更新指示により更新されてもよいし、ＵＳＢメモリ等の記憶媒体に記憶された更新データを用いてＭＦＰ２１自身の操作部からユーザ操作により入力された更新指示により更新されてもよい。
【００２７】
上記の複写部は、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、ＲＡＭ２１ｂに複写する。上記の消去部は、不揮発性メモリ２１ｃ内の、上記更新対象とされた旧プログラムブロック及びＲＡＭ２１ｂへの複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する。つまり、上記の消去部は、不揮発性メモリ２１ｃ内の、上記更新対象とされた旧プログラムブロックを一部に含むメモリブロックの記憶内容、及び不揮発性メモリ２１ｃ内の、ＲＡＭ２１ｂへの複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を消去する。
【００２８】
上記のメモリ書き込み部は、新たに不揮発性メモリ２１ｃに書き込むプログラムブロックのデータを、ＲＡＭ２１ｂに複写により記憶されたデータ（複写データ）と共に、メモリブロック単位で不揮発性メモリ２１ｃに書き込む。本発明における、メモリ書き込み部の主たる特徴は、このメモリブロック単位での書き込みを行う点と、メモリ書き込み部が次のプログラム格納位置検証部を有する点にある。このプログラム格納位置検証部は、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証する。
【００２９】
上記した複写部、消去部、及びメモリ書き込み部は、ハードウェアとして専用の回路で構成することもできるが、上述したように、不揮発性メモリ２１ｃ（又は別途設けたハードディスクや不揮発性メモリ等の記憶装置）に、各部をＣＰＵ２１ａに実行させるためのプログラム更新プログラムとして組み込むことが好ましい。無論、複写部、消去部、及びメモリ書き込み部をプログラムとして組み込んだ場合、そのプログラム（プログラム更新プログラム）自身については本発明の更新処理が適用できないため、プログラム更新プログラムについては、その更新により他のプログラムに影響を及ぼさないような格納領域に予め配置しておき、本発明の更新処理は、この格納領域を除いた領域を用いて実行すればよい。
【００３０】
このように、不揮発性メモリ２１ｃ上に格納する更新対象プログラムを、更新時（更新処理の書き込み時）に、不揮発性メモリ２１ｃのメモリブロック単位で格納するようにすることで、その更新対象プログラムのある機能を次に更新する際に、必要最低限のメモリブロックの消去及び書込み処理を行うことで実現することができる。つまり、本発明によれば、次の更新も考慮してプログラムデータを効率の良いメモリブロックに配置することが可能になる。よって、本発明では、従来に比べて更新時間短縮、さらには不揮発性メモリの消去回数の削減を図ることができ、不揮発性メモリの寿命を延ばすことができる。
【００３１】
以下、本発明に係るプログラム更新装置における更新処理の一例について詳細に説明する。ここでは、図４に沿って、主にＣＰＵ２１ａが実行する、このようなメモリ書き込み処理について説明する。なお、複写及び消去の処理自体は従来と基本的に同様であり、その説明を省略する。
【００３２】
図４は、本発明に係るプログラム更新装置におけるメモリ書き込み処理の一例を説明するためのフロー図、図５は、図４のメモリ書き込み処理で使用するプログラムデータ管理リストの一例を示す図、図６は、図４のメモリ書き込み処理の具体例を説明するための概念図である。
【００３３】
まず、メモリブロックサイズ（Ｍｂ）を取得し（ステップＳ１）、図５に例示するようなプログラムブロック管理リスト５１を取得する（ステップＳ２）。プログラムブロック管理リスト５１は、図６に示すように、機能I〜VIのプログラムブロックで構成されるプログラム全体６１に対して、そのプログラムが実現する各種機能毎にプログラムブロック単位で管理するためのリストであり、図３の構成例で管理リストとして示したように例えば不揮発性メモリ２１ｃに格納しておけばよい。ここで、機能IのデータをＯＳ（Operating System）とし、他の機能II〜VIをそれぞれＯＳに対して追加されたプログラムＡ〜Ｅとしているが、これに限ったものではなく、例えば各機能のデータが関連するプログラムでなくてもよい。また、図６ではメモリブロック単位の例として２５６Ｂｙｔｅを挙げているが、これに限ったものではない。
【００３４】
プログラムブロック管理リスト５１は、プログラム全体６１を圧縮したプログラム全体６２のように各プログラムブロックを圧縮したデータ（機能Iａ〜VIａのデータ）を、不揮発性メモリ２１ｃ上の配置６３のようにメモリブロック単位で格納した場合のリストである。このプログラムブロック管理リスト５１には、プログラムブロック管理リスト５１中のプログラムブロックの番号Ｎ毎に、機能名、プログラム名（プログラムブロック名）、不揮発性メモリ２１ｃ上の先頭アドレス、終了アドレス、データ容量（Ｐｂ．Ｎ）、使用メモリブロック番号、及びその他の情報が格納されている。
【００３５】
ステップＳ２に続き、Ｎを１として（ステップＳ３）、プログラムブロックサイズ（Ｐｂ．Ｎ）を取得し（ステップＳ４）、Ｅ＿Ｍｂ（Ｎ）を算出する（ステップＳ５）。ここで、Ｅ＿Ｍｂ（Ｎ）は、「メモリブロックサイズ」−「プログラムブロックサイズをメモリブロックサイズで除算した剰余」、つまり、Ｍｂ−ＭＯＤ（Ｐｂ．Ｎ，Ｍｂ）として定義される。
【００３６】
次に、Ｅ＿Ｍｂ（Ｎ）が０より大きい場合に、その値を保持し（ステップＳ６）、保持しているＥ＿Ｍｂの中にそのＥ＿Ｍｂ（Ｎ）より大きいサイズが存在するか否かを判定する（ステップＳ７）。存在しなかった場合（ステップＳ７でＮＯの場合）、空きメモリブロックに対象のプログラムブロックを格納し（ステップＳ９）、Ｎをインクリメントする（ステップＳ１０）。一方、存在した場合（ステップＳ７でＹＥＳの場合）、保持しているＥ＿Ｍｂのメモリブロックに対象のプログラムブロックを格納し（ステップＳ８）、Ｎをインクリメントする（ステップＳ１０）。
【００３７】
ステップＳ１０の後は、Ｎが予め定めたＮ（リストに含まれるプログラムブロックの数）になったか否かを判定し（ステップＳ１１）、ＹＥＳとなるまで、ステップＳ４に戻って次のＮについて同様の処理を続け、ＹＥＳとなった場合にはプログラムブロック管理リスト５１の更新を行う（ステップＳ１２）。
【００３８】
このような処理を行うことで、例えば図６の配置６３の状態からさらに機能IIａのみを機能IIa（New）で更新させる場合でも、機能VIaをＲＡＭ２１ｂに退避させてメモリブロック２のみを消去して、メモリブロック２に機能IIa（New）のデータ及び退避させたVIａのデータのみを書き込むだけで済む。つまり、最低限のデータのみに対しての、ＲＡＭ２１ｂへの退避及びメモリブロックの消去によって、書き換えが可能となる。
【００３９】
なお、ここでは、機能IIａと機能IIa（New）とでデータの容量に相違がない例を挙げたが、実際には相違があることが多い。しかし、本発明では、例えば図４のような処理手順により、プログラム格納位置検証部が、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証し、その検証結果に基づいて書き込みを行うため、相違があっても対応できる。
【００４０】
例えば、更新データのデータサイズが増加して（この例では機能IIａ（New）のデータが機能IIａのデータから増えて）、機能VIａのデータと一緒に元のメモリブロック２に入りきらなかった場合には、更新データを余裕のあるメモリブロック（例えば余裕のあるうち、最も若いアドレスの１又は複数のメモリブロック）に書き込み、機能IIａのデータが元々格納されていた位置に、更新対象以外のプログラムブロックの１又は複数（機能VIａのデータ等）の格納場所を決定してもよい。なお、機能IIａ（New）のデータが機能IIａのデータから増えて元のメモリブロックに入りきらなかった場合で、機能IIａのデータが元々格納されていた格納領域に更新対象以外のプログラムブロック（機能VIａのデータ）が書き込める容量が残っていたとしても、検証の結果として、例えば処理時間が多く必要であるなどの結論から、機能VIａのデータを余裕のあるメモリブロックに書き込んでおくだけにしてもよい。
【００４１】
次に、本発明に係るプログラム更新装置の他の構成例について説明する。
図３の構成例において、更新履歴が不揮発性メモリ２１ｃに格納された例を図示したように、上記のメモリ書き込み部は、上記更新対象とされた旧プログラムブロック（通常、複数存在する）の更新履歴を保持する更新履歴保持部を有することが好ましい。無論、上述したように、更新履歴を用いなくても、更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証し、その検証の結果に従い、メモリブロック単位で不揮発性メモリ２１ｃに書き込みを行うことができる。
【００４２】
なお、図３の構成例では、不揮発性メモリ２１ｃに、更新履歴や管理リスト（プログラムブロック管理リスト）も格納させているが、これらについても他のプログラム（更新可能性があり且つ本発明の処理対象となる更新対象プログラム）に影響を及ぼさないような格納領域に予め配置しておき、本発明の更新処理は、この格納領域を除いた領域を用いて実行すればよい。
【００４３】
さらに、上記のプログラム格納位置検証部は、次のようなプログラム格納位置決定部を有することが好ましい。このプログラム格納位置決定部は、上記更新対象とされた旧プログラムブロックからのデータサイズ増減により、上記更新対象とされた旧プログラムブロックが格納されているメモリブロックに格納されている更新対象以外のプログラムデータの位置を、更新履歴保持部で保持された更新履歴を参照して決定する。
【００４４】
ここで、主にＣＰＵ２１ａが実行する、上記のプログラム格納位置決定部におけるプログラム格納位置決定処理の一例を、図７〜図１０に沿って説明する。図７は、本発明に係るプログラム更新装置におけるプログラム格納位置決定処理の一例を説明するためのフロー図で、図８〜図１０は、図７に続くフロー図である。また、図１０は、図７のプログラム格納位置決定処理における更新履歴マトリクス取得処理で取得する更新履歴マトリクスの一例を示す図で、図１２は、図１１の更新履歴マトリクスを保持する処理の一例を説明するためのフロー図である。また、図１３〜図１６は、図７〜図１０のプログラム格納位置決定処理により決定された格納位置に対して、メモリ書き込み処理を施した具体例を説明するための概念図である。
【００４５】
図７において、まず、メモリブロックサイズ（Ｍｂ）を取得し（ステップＳ２１）、書き換えた対象プログラムブロックサイズ（Ｐｂ）も取得する（ステップＳ２２）。そして、書換対象プログラムブロックが格納されているメモリブロックに他のプログラムブロック（Pb′）があるか否かを判定し（ステップＳ２３）、無かった場合（ＮＯの場合）には後述の図１０のステップＳ４０に進む。ステップＳ２３でＹＥＳの場合には、他のプログラムブロック（Pb′）の移動が必要か否かを判定し（ステップＳ２４）、不必要であった場合（ＮＯの場合）には同じく図１０のステップＳ４０に進む。
【００４６】
ステップＳ２４でＹＥＳの場合、つまり他のプログラムブロックの移動が必要な場合、更新履歴マトリクスを取得する（ステップＳ２５）。更新履歴マトリクスは、更新履歴の一例であり、各プログラムブロックの更新の関連性を示すようなデータとして保持したものである。
【００４７】
図１１で例示する更新履歴マトリクス１１０は、各プログラムブロックの更新の関連性を示すようなデータであり、例えば機能Iと機能VIとは５回以上の頻度で同時に更新されており、機能IVと機能Vとは２回以上５回未満の頻度で同時に更新されており、機能IIと機能IIIとは２回未満の頻度で同時に更新されており、機能IIと機能Vとは同時に更新されたことがないことを示している。このような更新履歴マトリクス１１０は、図１２に示す更新履歴マトリクス保持処理で保持される。すなわち、まずこの更新履歴マトリクス１１０を取得し（ステップＳ５１）、書換対象プログラムブロックの書換回数カウンターを更新し、それを更新履歴マトリクス１１０に反映させる（ステップＳ５２）。なお、図１１では、更新履歴マトリクス１１０として、閾値処理したデータ（◎、○、△、×）を記録しているが、実際には単にこの書換回数カウンターの値を格納して、例えば後述のステップＳ２６等の判断のときに閾値処理をしてもよい。
【００４８】
図７の説明に戻り、ステップＳ２５に続き、他のプログラムブロック（Pb′）と同時更新履歴（同時更新頻度）の高いプログラムブロック（Pb″）があるか否かを判定する（ステップＳ２６）。例えば上記の◎のときのみ同時更新履歴が高いと判定すればよい。ステップＳ２６でＮＯの場合には、後述の図９のステップＳ３６に進み、ステップＳ２６でＹＥＳの場合には、図８のステップＳ２７に進む。
【００４９】
図８においては、まず、同時更新履歴の高いプログラムブロック（Pb″）が格納されているメモリブロックに他のプログラムブロック（Pb″′）があるか否かを判定する（ステップＳ２７）。存在する場合（ステップＳ２７でＹＥＳの場合）には、他のプログラムブロック（Pb″′）の移動が必要か否かを判定する（ステップＳ２８）。必要である場合（ステップＳ２８でＹＥＳの場合）には、Ｍｂ−ＭＯＤ（Pb″′,Mb）を満足する空きメモリブロックがあるか否かを判定する（ステップＳ２９）。
【００５０】
ステップＳ２９でＹＥＳの場合、書換対象以外且つ移動必要なプログラムブロック（Pb′）と同時更新履歴の高いプログラムブロック（Pb″）と同一メモリブロックに配置されている他のプログラムブロック（Pb″′）を一旦記憶媒体に退避してから、他のプログラムブロック（Pb″′）を空きメモリブロックに配置（書込）し（ステップＳ３０）、後述の図９のステップＳ３２に進む。
【００５１】
このように配置する場合、後述の図９のステップＳ３２，Ｓ３３の処理を経ると、図１３に示すように、配置１３１が配置１３２のようになる。具体的には、機能Iａのデータサイズが大きくなったため、機能Vの格納位置を移動させないといけないが、機能Vと機能IIIとが一緒に書き換えることが多い場合、まず、機能VIａを空き領域のメモリブロック４に移動させてメモリブロック３に空き領域を作り、同一メモリブロック３に機能Vａと機能IIIａとを配置させる。
【００５２】
一方で、ステップＳ２９でＮＯの場合、並びにステップＳ２８でＮＯの場合、並びにステップＳ２７でＮＯの場合には、後述の図９のステップＳ３１に進む。
【００５３】
図９では、まず、Ｍｂ−ＭＯＤ（Pb″,Mb）を満足する空きメモリブロックがあるか否かを判定する（ステップＳ３１）、存在する場合（ステップＳ３１でＹＥＳの場合）、書換対象以外且つ移動必要なプログラムブロック（Pb′）と同時更新履歴の高いプログラムブロック（Pb″）の移動先メモリブロックを消去する（ステップＳ３２）。ステップＳ３０の処理後もこのステップＳ３２の処理が施される。ステップＳ３２に続き、書換対象以外且つ移動必要なプログラムブロック（Pb′）と同時更新履歴の高いプログラムブロック(Pb″)を同一メモリブロックに配置する（ステップＳ３３）。
【００５４】
このようにステップＳ３１でＹＥＳの場合で配置した場合、図１４に示すように、配置１４１が配置１４２のようになる。具体的には、機能Iａのデータサイズが大きくなったため、機能Vの格納位置を移動させないといけないが、機能Vと機能IIIとが一緒に書き換えることが多い場合、同一メモリブロック３にそれらの機能Vａと機能IIIａとを配置させる。
【００５５】
ステップＳ３３の処理後、書換対象プログラムブロックの書換が全て完了したか否かを判定し（ステップＳ３４）、未完了の場合（ステップＳ３４でＮＯの場合）には図７のステップＳ２２に戻り、完了の場合（ステップＳ３４でＹＥＳの場合）には、プログラムデータ管理リストを更新し（ステップＳ３５）、処理を終了する。
【００５６】
また、ステップＳ３１でＮＯの場合や、ステップＳ２６でＮＯの場合には、Ｍｂ−ＭＯＤ（Pb′,Mb）を満足する空きメモリブロックがあるか否かを判定し（ステップＳ３６）、存在しない場合（ＮＯの場合）には、空きメモリブロックがないことによるエラー通知して（ステップＳ３７）、処理を終了する。
【００５７】
ステップＳ３６でＹＥＳの場合には、書換対象以外且つ移動必要なプログラムブロック（Pb′）の移動先メモリブロックを消去し（ステップＳ３８）、書換対象以外且つ移動必要なプログラムブロック（Pb′）を空きメモリブロックに移動する（ステップＳ３９）。このようにステップＳ３６でＹＥＳの場合で配置した場合、図１５に示すように、配置１５１が配置１５２のようになる。具体的には、機能Iａのデータサイズが大きくなったため、機能Vの格納位置を空きのメモリブロック４に移動させる。ステップＳ３９の処理後は、同様に図９のステップＳ３４に進む。
【００５８】
図１０においては、まず、Ｍｂ−ＭＯＤ（Pb，Mb）を満足するプログラムブロックサイズがあるか否かを判定し（ステップＳ４０）、存在しない場合（ＮＯの場合）には、空きメモリブロックがないことによるエラー通知して（ステップＳ４１）、処理を終了する。
【００５９】
ステップＳ４０でＹＥＳの場合には、更新履歴マトリクスを取得し（ステップＳ４２）、書換対象プログラムブロック（Pb）と同時更新履歴の高いプログラムブロック（Pb″″）があるか否かを判定する（ステップＳ４３）。存在する場合（ステップＳ４３でＹＥＳの場合）には、書換対象プログラムブロック（Pb）が格納されているメモリブロックを消去し（ステップＳ４４）、書換対象プログラムブロック（Pb）と同時更新履歴の高いプログラムブロック（Pb″″）を書換対象プログラムと同一メモリブロックに書き込む（ステップＳ４５）。このようにステップＳ４５を経て配置した場合、図１６に示すように、配置１６１が配置１６２のようになる。具体的には、機能Iａのデータサイズの変更に伴い、メモリブロック１の空き領域を算出し、機能VIが機能Iと一緒に書き換えることが多い場合、同一メモリブロック１にそれらの機能Iａと機能VIａとを配置させる。ステップＳ４５の処理後は、同様に図９のステップＳ３４に進む。
【００６０】
ステップＳ４３でＮＯの場合には、書換対象プログラムブロックが格納されているメモリブロックを消去し（ステップＳ４６）、書換対象プログラムブロックが格納されているメモリブロックに書き込む（ステップＳ４７）。ステップＳ４７の処理後は、同様にステップＳ３４に進む。
【００６１】
以上、プログラム格納位置検証部及び更新履歴保持部により、プログラムの更新毎に、不揮発性メモリ内のプログラムブロック配置を見直すことが可能となり、同時に更新される頻度が多いプログラムブロックは同一メモリブロックに配置するようにし、プログラムの更新を、必要最低限のメモリブロックの消去及び書き込み処理で実現することが可能となる。
【００６２】
また、本発明は、プログラム更新装置の処理手順として説明したように、そのプログラム更新装置が、複数のメモリブロックで構成され且つメモリブロック単位で一括消去及び書き込みが可能な不揮発性メモリに記憶されたプログラムデータを更新するプログラム更新方法としての形態も採り得る。
【００６３】
このプログラム更新方法は、更新対象とされた旧プログラムブロックと共に同一のメモリブロック内に格納された、更新対象以外のプログラムデータを、データの書き込み及び読み出しが可能な記憶媒体に複写する複写ステップと、上記不揮発性メモリ内の、上記更新対象とされた旧プログラムブロック及び上記記憶媒体への複写対象となったプログラムデータを一部に含むメモリブロックの記憶内容を、消去する消去ステップと、新たに上記不揮発性メモリに書き込むプログラムブロックのデータを、上記記憶媒体に複写により記憶されたデータと共に、メモリブロック単位で上記不揮発性メモリに書き込むメモリ書き込みステップと、を有する。そして、このメモリ書き込みステップは、上記更新対象とされた旧プログラムブロックからのデータサイズ増減に応じて、更新対象以外のプログラムブロックの格納場所を検証するステップを有する。その他の応用例や効果については、プログラム更新装置について説明した通りであり、その説明を省略する。
【００６４】
また、本発明は、上記のプログラム更新方法をコンピュータに実行させるためのプログラム更新プログラム（つまり、図３で説明したプログラム更新プログラム）や、そのプログラム更新プログラムを記憶したコンピュータ読み取り可能な記憶媒体としての形態も採り得る。この記憶媒体としては、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ＢＤ（Blu-ray Disc）等の可搬の記録媒体が挙げられる。
【符号の説明】
【００６５】
２１…ＭＦＰ、２１ａ…ＣＰＵ、２１ｂ…ＲＡＭ、２１ｃ…不揮発性メモリ、２１ｄ…通信ポート、２２…ＰＣ、２２ａ…ＰＣ側のＣＰＵ、２２ｂ…ＰＣ側のＲＡＭ、２２ｄ…ＰＣ側の通信ポート、２３…通信回線。
【図１】
2013218388.tif 000003
【図２】
2013218388.tif 000004
【図３】
2013218388.tif 000005
【図４】
2013218388.tif 000006
【図５】
2013218388.tif 000007
【図６】
2013218388.tif 000008
【図７】
2013218388.tif 000009
【図８】
2013218388.tif 000010
【図９】
2013218388.tif 000011
【図１０】
2013218388.tif 000012
【図１１】
2013218388.tif 000013
【図１２】
2013218388.tif 000014
【図１３】
2013218388.tif 000015
【図１４】
2013218388.tif 000016
【図１５】
2013218388.tif 000017
【図１６】
2013218388.tif 000018