(57)【要約】      （修正有）【課題】電子機器の不揮発性メモリーにおいて複数のプログラムを書き込むための領域のサイズが小さくて済むようにする。【解決手段】不揮発性メモリーに複数のプログラムを書き込む際に、複数のプログラムの書込位置を特定するためのプログラム情報を生成し、プログラム情報を不揮発性メモリーに書き込むとともに、不揮発性メモリーに書き込むべき複数のプログラムの結合体を含むマージデータを、不揮発性メモリー内の所定記憶領域２１ａにおいて連続的に書き込んでいき、所定記憶領域２１ａに不良ブロックが存在する場合、不良ブロックを跨いで連続的に書き込む。その際、不良ブロックを跨ぐプログラムがシステム関連プログラムとなる場合には、不良ブロックを跨ぐプログラムがシステム関連プログラムではないプログラムとなるように、マージデータ内の複数のプログラムの順序を変更する。【選択図】図５
2015191611.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサーと、
複数のプログラムを記憶する書換可能な不揮発性メモリーと、
揮発性メモリーとを備え、
前記プロセッサーは、前記不揮発性メモリーに複数のプログラムを書き込む際に、（ａ１）前記複数のプログラムの書込位置を特定するためのプログラム情報を生成し、（ａ２）前記プログラム情報を前記不揮発性メモリーに書き込むとともに、前記不揮発性メモリーに書き込むべき複数のプログラムの結合体を含むマージデータを、前記不揮発性メモリー内の所定記憶領域において連続的に書き込んでいき、前記所定記憶領域に不良ブロックが存在する場合、前記不良ブロックを跨いで連続的に書き込み、前記不揮発性メモリーから前記揮発性メモリーへ前記複数のプログラムを読み出す際に、（ｂ１）前記プログラム情報を読み取って前記複数のプログラムの書込位置を特定し、（ｂ２）特定した前記書込位置の位置に基づいて、前記所定記憶領域から前記複数のプログラムを読み出し、
前記プロセッサーは、前記不良ブロックを跨ぐプログラムがシステム関連プログラムとなる場合には、前記不良ブロックを跨ぐプログラムがシステム関連プログラムではないプログラムとなるように、前記マージデータ内の複数のプログラムの順序を変更すること、
を特徴とする電子機器。
【請求項２】
前記システム関連プログラムは、オペレーティングシステムおよび当該電子機器の内部デバイスのドライバーに含まれるプログラムであることを特徴とする請求項１記載の電子機器。
【請求項３】
前記システム関連プログラムは、前記プロセッサーがブートローダーに従って前記不揮発性メモリーから前記揮発性メモリーへ読み出すプログラムであることを特徴とする請求項１記載の電子機器。
【請求項４】
前記プロセッサーは、前記複数のプログラムを前記所定記憶領域に書き込んだ後に、前記プログラム情報を生成し、
前記プログラム情報は、前記所定記憶領域とは別の領域に書き込まれること、
を特徴とする請求項１記載の電子機器。
【請求項５】
前記複数のプログラムについての前記プログラム情報は、１つの連続するデータとして生成され、連続的に前記不揮発性メモリーに書き込まれることを特徴とする請求項１から請求項４のうちのいずれか１項記載の電子機器。
【請求項６】
前記不揮発性メモリーは、ＮＡＮＤフラッシュメモリーであることを特徴とする請求項１から請求項５のうちのいずれか１項記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器に関するものである。
【背景技術】
【０００２】
組込システムを内蔵する電子機器においては、複数のプログラムが、ＮＡＮＤフラッシュメモリーなどの不揮発性メモリーに予め書き込まれている。そのような電子機器においては、各プログラムについて、不揮発性メモリーに、そのプログラム専用の記憶領域が確保されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３５９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図９は、不揮発性メモリー内の複数のプログラム専用の記憶領域を説明する図である。不揮発性メモリーには、製造時に既に存在している先天性の不良ブロック、および使用に起因して発生する後天性の不良ブロックが発生する。そのため、図９に示すように、不良ブロックが発生してもプログラムがそのプログラム専用の記憶領域に書き込めるように、複数のプログラム専用の記憶領域１０１ａ〜１０１ｄには、それぞれ、未使用領域が含められており、プログラム専用の記憶領域のサイズは、プログラムのサイズより未使用領域のサイズだけ大きくなっている。
【０００５】
このように、組込システムを内蔵する電子機器の不揮発性メモリーの容量は、コスト面の要求から小さくしたいにも拘わらず、プログラムごとに未使用領域が設けられているため、容量が大きい不揮発性メモリーを使用する必要がある。
【０００６】
本発明は、上記の問題に鑑みてなされたものであり、不揮発性メモリーにおいて複数のプログラムを書き込むための領域のサイズが小さくて済む電子機器を得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る電子機器は、プロセッサーと、複数のプログラムを記憶する書換可能な不揮発性メモリーと、揮発性メモリーとを備える。前記プロセッサーは、前記不揮発性メモリーに複数のプログラムを書き込む際に、（ａ１）前記複数のプログラムの書込位置を特定するためのプログラム情報を生成し、（ａ２）前記プログラム情報を前記不揮発性メモリーに書き込むとともに、前記不揮発性メモリーに書き込むべき複数のプログラムの結合体を含むマージデータを、前記不揮発性メモリー内の所定記憶領域において連続的に書き込んでいき、前記所定記憶領域に不良ブロックが存在する場合、前記不良ブロックを跨いで連続的に書き込み、前記不揮発性メモリーから前記揮発性メモリーへ前記複数のプログラムを読み出す際に、（ｂ１）前記プログラム情報を読み取って前記複数のプログラムの書込位置を特定し、（ｂ２）特定した前記書込位置の位置に基づいて、前記所定記憶領域から前記複数のプログラムを読み出す。さらに、前記プロセッサーは、前記不良ブロックを跨ぐプログラムがシステム関連プログラムとなる場合には、前記不良ブロックを跨ぐプログラムがシステム関連プログラムではないプログラムとなるように、前記マージデータ内の複数のプログラムの順序を変更する。
【発明の効果】
【０００８】
本発明によれば、電子機器の不揮発性メモリーにおいて複数のプログラムを書き込むための領域のサイズが小さくて済む。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施の形態に係る電子機器の構成を示すブロック図である。
【図２】図２は、図１に示す電子機器のプログラム書込時の動作について説明するフローチャートである。
【図３】図３は、図２におけるプログラム（マージデータ）の書き込みの詳細について説明するフローチャートである。
【図４】図４は、図１に示す電子機器のプログラム書込時の動作について説明する図である（１／２）。
【図５】図５は、図１に示す電子機器のプログラム書込時の動作について説明する図である（２／２）。
【図６】図６は、図１に示す電子機器のプログラム読出時の動作について説明するフローチャートである。
【図７】図７は、図１に示す電子機器のプログラム読出時の動作について説明する図である（１／２）。
【図８】図８は、図１に示す電子機器のプログラム読出時の動作について説明する図である（２／２）。
【図９】図９は、不揮発性メモリー内の複数のプログラム専用の記憶領域を説明する図である。
【発明を実施するための形態】
【００１０】
以下、図に基づいて本発明の実施の形態を説明する。
【００１１】
図１は、本発明の実施の形態に係る電子機器の構成を示すブロック図である。図１に示す電子機器は、例えば、プリンター、複合機などの画像形成装置、情報端末装置などである。
【００１２】
図１に示す電子機器は、組込システムを内蔵しており、ＮＡＮＤフラッシュメモリーなどの不揮発性メモリー１内に記憶されているプログラムを揮発性メモリーであるＲＡＭ（Random Access Memory）２にロードして、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）などのプロセッサー３で実行する。
【００１３】
また、図１に示す電子機器は、不揮発性メモリー１に複数のプログラムを書き込み、不揮発性メモリー１内に複数のプログラムを更新する機能を有している。なお、更新に使用されるプログラム（新たなバージョンのプログラム）は、記録媒体から図示せぬインターフェイスで読み出されたり、ネットワーク上のサーバーから図示せぬ通信装置でダウンロードされたりして取得される。
【００１４】
具体的には、図１に示す電子機器の起動時に、プロセッサー３によってブートローダー１１が実行され、不揮発性メモリー１内のシステム関連プログラム１２（オペレーティングシステム、当該電子機器の内部デバイスのドライバーなど）がＲＡＭ２にロードされ、システム関連プログラム１２の実行が開始される。その後、システム関連プログラム１２に従って、アプリケーションプログラムなどが、適宜、不揮発性メモリー１からＲＡＭ２にロードされ実行される。
【００１５】
また、不揮発性メモリー１内のプログラムの更新を行う場合、そのようにＲＡＭ２にロードされたプログラムの１つである更新プログラム１３に従って実行される。
【００１６】
次に、上記電子機器の動作について説明する。
【００１７】
図２は、図１に示す電子機器のプログラム書込時の動作について説明するフローチャートである。図３は、図２におけるプログラム（マージデータ）の書き込みの詳細について説明するフローチャートである。図４は、図１に示す電子機器のプログラム書込時の動作について説明する図である（１／２）。図５は、図１に示す電子機器のプログラム書込時の動作について説明する図である（２／２）。
【００１８】
まず、プロセッサー３は、更新プログラム１３に従って、不揮発性メモリー１に書き込むべき複数のプログラム（図４および図５では、プログラムＡ〜Ｄ）を取得してＲＡＭ２上に保持し、書き込むべき複数のプログラムを結合し、その結合体を含むマージデータを生成する（ステップＳ１１）。
【００１９】
次に、プロセッサー３は、更新プログラム１３に従って、不揮発性メモリー１の所定記憶領域２１ａの先頭から、マージデータを連続的に書き込む（ステップＳ１２）。
【００２０】
その際、図３に示すように、まず、プロセッサー３は、更新プログラム１３に従って、マージデータの先頭から順番に未書込のプログラムを検索し最初に発見した未書込のプログラムを選択し（ステップＳ２１）、選択したプログラムを書き込む領域に不良ブロックが存在するか否かを判定する（ステップＳ２２）。
【００２１】
選択したプログラムを書き込む領域に不良ブロックが存在しない場合、プロセッサー３は、更新プログラム１３に従って、選択したプログラムを書き込む（ステップＳ２３）。このとき、既に書き込まれているプログラムが存在する場合、既に書き込まれているプログラムの終端に連続するように、選択したプログラムが書き込まれる。
【００２２】
そして、プログラムを書き込んだ後、プロセッサー３は、更新プログラム１３に従って、未書込のプログラムが存在するか否かを判定し（ステップＳ２４）、未書込のプログラムが存在しない場合、プログラム書き込みの処理を終了し、未書込のプログラムが存在する場合、ステップＳ２１に戻り、未書込のプログラムを選択する。
【００２３】
一方、ステップＳ２２において、選択したプログラムを書き込む領域に不良ブロックが存在する場合、プロセッサー３は、更新プログラム１３に従って、選択したプログラムがシステム関連プログラムであるか否かを判定する（ステップＳ２５）。なお、システム関連プログラムであるか否かは、各プログラムの固有識別子、名称、属性情報などから特定すればよい。
【００２４】
選択したプログラムを書き込む領域に不良ブロックが存在する場合において、選択したプログラムがシステム関連プログラムではないときには、プロセッサー３は、更新プログラム１３に従って、選択したプログラムを、不良ブロックを跨ぐようにして書き込む（ステップＳ２３）。例えば図４に示すように、プログラムＢを書き込む領域に不良ブロックが存在する場合において、プログラムＢがシステム関連プログラムではない場合には、プログラムＢは、不良ブロックを跨ぐようにして書き込まれる。
【００２５】
一方、選択したプログラムを書き込む領域に不良ブロックが存在する場合において、選択したプログラムがシステム関連プログラムであるときには、プロセッサー３は、更新プログラム１３に従って、まず、選択したプログラムの後続のプログラムにおいて、システム関連プログラムではない未書込プログラムが存在するか否かを判定する（ステップＳ２６）。
【００２６】
そのようなプログラムが存在する場合、プロセッサー３は、更新プログラム１３に従って、選択したプログラム（システム関連プログラム）を書込保留状態とし（ステップＳ２７）、そのシステム関連プログラムではない未書込プログラムを選択し（ステップＳ２８）、ステップＳ２８で選択したプログラムを書き込む（ステップＳ２９）。このとき、既に書き込まれているプログラムが存在する場合、既に書き込まれているプログラムの終端に連続するように、選択したプログラムが書き込まれる。
【００２７】
そして、プロセッサー３は、更新プログラム１３に従って、このプログラムが不良ブロックを跨ぐようにして書き込まれ、現時点の書込位置（つまり、既に書き込まれているプログラムの終端の次に書込可能なアドレス）が不良ブロックを越えているか否かを判定する（ステップＳ３０）。
【００２８】
現時点の書込位置が不良ブロックを越えている場合には、プロセッサー３は、更新プログラム１３に従って、書込保留状態としたシステム関連プログラムを書き込む（ステップＳ３１）。このとき、既に書き込まれているプログラムの終端に連続するように、選択したプログラムが書き込まれる。
【００２９】
例えば図５に示すように、プログラムＢがシステム関連プログラムであり、後続のプログラムＣがシステム関連プログラムではない場合、プログラムＢの代わりに、プログラムＣが不良ブロックを跨ぐようにして書き込まれる。
【００３０】
一方、ステップＳ３０において現時点の書込位置が不良ブロックを越えていない場合には、ステップＳ２６に戻り、プロセッサー３は、更新プログラム１３に従って、現時点の書込位置が不良ブロックを越えるか、後続の未書込プログラムがなくなるまで、ステップＳ２７からステップＳ２９までの処理を繰り返し実行する。
【００３１】
また、ステップＳ２６において後続の未書込プログラムが存在しない場合には、プロセッサー３は、選択したまたは書込保留状態としたシステム関連プログラムを書き込む（ステップＳ３１）。この場合、そのシステム関連プログラムは、不良ブロックを跨ぐように書き込まれる。なお、このとき、既に書き込まれているプログラムの終端に連続するように、選択したプログラムが書き込まれる。
【００３２】
そして、ステップＳ３１においてシステム関連プログラムを書き込んだ後、プロセッサー３は、更新プログラム１３に従って、未書込のプログラムが存在するか否かを判定し（ステップＳ２４）、未書込のプログラムが存在しない場合、プログラム書き込みの処理を終了し、未書込のプログラムが存在する場合、ステップＳ２１に戻り、未書込のプログラムを選択し同様に処理する。
【００３３】
このようにして、所定記憶領域２１ａに書き込むべき複数のプログラム（つまり、マージデータ）を書き込んだ後、プロセッサー３は、更新プログラム１３に従って、各プログラムの書込位置を特定し、その複数のプログラムについてのヘッダー情報を生成しＲＡＭ２上に保持し（ステップＳ１３）、不揮発性メモリー１の別の記憶領域２１ｂに書き込む（ステップＳ１４）。
【００３４】
ヘッダー情報は、（ａ）ヘッダー識別子（ヘッダー情報を示す固有の識別子）、（ｂ）ヘッダー情報のサイズ、および（ｃ）プログラム情報を含む。プログラム情報は、プログラムの書込位置などを特定するための情報であって、１つのプログラムにつき、プログラム識別子（プログラムに固有の識別子）、プログラムの先頭アドレスとサイズ（または先頭アドレスと終端アドレス）、その他の属性情報（バージョン情報、プログラムの圧縮形式など）を有する。１つのプログラムのプログラム情報の終端には、終端識別子が挿入され、複数のプログラムのプログラム情報が、終端識別子で区切られながら、プログラムの書込順序と同一の順序で連続している。
【００３５】
上述のようにプログラムを書き込んだ後にヘッダー情報を生成しているため、ヘッダー情報の生成時にはプログラムの書込位置は既知になっており、その情報をプログラム情報に含めることができる。
【００３６】
このように、未使用領域は、所定記憶領域２１ａの終端部に１箇所だけ設けておけばよく、複数のプログラムのそれぞれについて未使用領域を確保することなく、連続的にプログラムが所定記憶領域２１ａに書き込まれる。  
【００３７】
（ｂ）プログラム読出時の動作
【００３８】
図６は、図１に示す電子機器のプログラム読出時の動作について説明するフローチャートである。図７は、図１に示す電子機器のプログラム読出時の動作について説明する図である（１／２）。図８は、図１に示す電子機器のプログラム読出時の動作について説明する図である（２／２）。
【００３９】
プロセッサー３は、ブートローダー１１等に従って、記憶領域２１ｂに記憶されているヘッダー情報をヘッダー識別子に基づいて検出し、ヘッダー情報（つまり、プログラム情報）を読み取る（ステップＳ４１）。
【００４０】
そして、プロセッサー３は、ブートローダー１１等に従って、ヘッダー情報内のプログラム情報に基づいて、各プログラムの書込位置を特定し、所定記憶領域２１ａ内のその書込位置から、不良ブロックをスキップしつつ、プログラムをＲＡＭ２へ読み出す（ステップＳ４２）。
【００４１】
このとき、不良ブロックで分断されているプログラムについては、不良ブロックより前の部分および後の部分がそれぞれ読み出され、それらが連続するようにＲＡＭ２に格納される。つまり、例えば図７および図８に示すように、不良ブロックで分断されているプログラムは、その先頭から不良ブロックの直前のブロックまで読み出されていき、不良ブロックより前の部分のサイズを、プログラム情報から特定されるプログラムサイズから減算して得られるサイズだけ、不良ブロックの次以降のブロックから読み出される。この実施の形態では、システム関連プログラムが不良ブロックを跨がないように書き込まれるため、例えば図８に示すように、システム関連プログラムについて、不良ブロックのスキップのための処理を行わずに済み、システム関連プログラムの読み出しを迅速に行うことができる。
【００４２】
このように、上述のように所定記憶領域２１ａに書き込まれているプログラムが、ヘッダー情報（つまり、プログラム情報）に基づいてそれぞれ個別的にＲＡＭ２にロードされる。
【００４３】
以上のように、上記実施の形態によれば、プロセッサー３は、不揮発性メモリー１に複数のプログラムを書き込む際に、（ａ１）複数のプログラムの書込位置を特定するためのプログラム情報を生成し、（ａ２）プログラム情報を不揮発性メモリー１に書き込むとともに、不揮発性メモリー１に書き込むべき複数のプログラムの結合体を含むマージデータを、不揮発性メモリー１内の所定記憶領域２１ａにおいて連続的に書き込んでいき、所定記憶領域２１ａに不良ブロックが存在する場合、不良ブロックを跨いで連続的に書き込む。また、プロセッサー３は、不揮発性メモリー１からＲＡＭ２へ複数のプログラムを読み出す際に、（ｂ１）プログラム情報を読み取って複数のプログラムの書込位置を特定し、（ｂ２）所定記憶領域２１ａ内の不良ブロックを特定し、（ｂ３）書込位置および特定された不良ブロックの位置に基づいて、所定記憶領域２１ａから複数のプログラムを読み出す。
【００４４】
これにより、不良ブロックに起因するプログラムの書込領域不足を回避するために設けられる未使用領域を複数のプログラムのそれぞれについて確保しておく必要がなく、不揮発性メモリー１において複数のプログラムを書き込むための領域のサイズが小さくて済む。
【００４５】
さらに、プロセッサー３は、不良ブロックを跨ぐプログラムがシステム関連プログラムとならないように、マージデータ内の複数のプログラムの順序を変更する。
【００４６】
これにより、ＲＡＭ２へのシステム関連プログラムの読み出しが迅速に行われる。
【００４７】
なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【産業上の利用可能性】
【００４８】
本発明は、例えば、組込システムを内蔵する電子機器に適用可能である。
【符号の説明】
【００４９】
１  不揮発性メモリー
２  ＲＡＭ（揮発性メモリーの一例）
３  プロセッサー
２１ａ  所定記憶領域
【図１】
2015191611.tif 000003
【図２】
2015191611.tif 000004
【図３】
2015191611.tif 000005
【図４】
2015191611.tif 000006
【図５】
2015191611.tif 000007
【図６】
2015191611.tif 000008
【図７】
2015191611.tif 000009
【図８】
2015191611.tif 000010
【図９】
2015191611.tif 000011