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