(57)【要約】【課題】複製ブートローダーでＯＳを起動するときに、起動時間が長くなるのを防止する。【解決手段】ブートローダーは、ＮＡＮＤ型フラッシュメモリー７に格納されている。ブート更新部３３は、ブートローダーの更新をするときに、ブートローダーの更新が完了していないことを示す「１」、すなわち、更新未完了情報を、ブートローダーが格納されているブロックに記憶させ、ブートローダーの更新が完了したときに、ブートローダーの更新が完了したことを示す「０」、すなわち、更新完了情報を、ブートローダーが格納されているブロックに記憶させる。ブート読出部３１は、ブートローダーが格納されているブロックに、更新完了情報が記憶されていれば、ブートローダーの読み出しを実行し、更新未完了情報が記憶されていれば、ブートローダーの読み出しを実行せずに、複製ブートローダーの読み出しを実行する。【選択図】図１０
2015046088.tif 000002
【特許請求の範囲】
【請求項１】
ブートローダー及び前記ブートローダーの複製である複製ブートローダーが格納されているＮＡＮＤ型フラッシュメモリーと、
ＯＳを起動するために、前記ＮＡＮＤ型フラッシュメモリーから前記ブートローダーを読み出すブート読出部と、
予め定められた条件になれば、前記ＮＡＮＤ型フラッシュメモリーに格納されている前記ブートローダーを消去し、前記複製ブートローダーの複製を前記ブートローダーとして前記ＮＡＮＤ型フラッシュメモリーに書き込むことによって、前記ブートローダーを更新するブート更新部と、を備え、
前記ブート更新部は、前記ブートローダーの更新をするときに、前記ブートローダーの更新が完了していないことを示す更新未完了情報を前記ＮＡＮＤ型フラッシュメモリーに記憶させ、前記ブートローダーの更新が完了したときに、前記ブートローダーの更新が完了したことを示す更新完了情報を前記ＮＡＮＤ型フラッシュメモリーに記憶させ、
前記ブート読出部は、前記ＯＳを起動するために前記ブートローダーを読み出す場合において、前記ＮＡＮＤ型フラッシュメモリーに前記更新完了情報が記憶されていれば、前記ブートローダーの読み出しを実行し、前記ＮＡＮＤ型フラッシュメモリーに前記更新未完了情報が記憶されていれば、前記ブートローダーの読み出しを実行せずに、前記複製ブートローダーの読み出しを実行する半導体装置。
【請求項２】
前記ＮＡＮＤ型フラッシュメモリーは、複数のセルがアレイ状に配置されたセルアレイを備え、前記セルアレイは、データの消去単位である複数のブロックに分割されており、
前記複数のブロックのうち、データが消去されたブロック内の各セルに記憶されているデータは、それぞれ、第１の値となり、
前記更新未完了情報は、前記第１の値であり、前記ブートローダーが格納されているブロックに記憶されている請求項１に記載の半導体装置。
【請求項３】
前記複数のブロックのうち、正常なブロックには、正常ブロック情報が記憶され、不良なブロックには、不良ブロック情報が記憶されており、
前記更新完了情報は、前記第１の値と異なる第２の値であり、前記ブートローダーが格納されているブロックに記憶されており、
前記複製ブートローダーは、前記ブートローダーよりも後の順番のブロックに格納されており、
前記ブート読出部は、前記正常ブロック情報が記憶されているブロックである正常ブロックにアクセスができるまで、１番目のブロックから順番に前記複数のブロックにアクセスし、前記正常ブロックにアクセスした場合、アクセスした前記正常ブロックに前記更新完了情報が記憶されていれば、アクセスした前記正常ブロックから前記ブートローダーを読み出し、アクセスした前記正常ブロックに前記更新未完了情報が記憶されていれば、次にアクセスできた前記正常ブロックに格納されている前記複製ブートローダーを読み出す請求項２に記載の半導体装置。
【請求項４】
前記ブート更新部は、前記複製ブートローダーが読み出されたとき、前記ブートローダーの更新をする請求項１〜３のいずれか一項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブートローダーが格納されているＮＡＮＤ型フラッシュメモリーを備える半導体装置に関する。
【背景技術】
【０００２】
ブートローダーは、コンピューターのＯＳ(Operating System)を起動するためのソフトウェアである。ブートローダーは、不揮発性メモリーに格納されており、不揮発性メモリーからブートローダーが読み出されて、実行されることにより、ＯＳを起動させる。
【０００３】
何らかの原因(例えば、ブートローダーが格納されている記憶領域に物理的に欠陥が発生する)で、不揮発性メモリーからブートローダーを読み出すことができないことがある。ブートローダーを不揮発性メモリーから読み出すことができなければ、ＯＳを起動させることができない。そこで、ブートローダーの複製を不揮発性メモリーに予め格納しておき、ブートローダーを読み出すことができないとき、複製ブートローダーを読み出す技術が提案されている(例えば、特許文献１参照)。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９８８７６号公報(要約)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ブートローダーが格納される不揮発性メモリーとして、ＮＡＮＤ型フラッシュメモリーがある。ＮＡＮＤ型フラッシュメモリーでは、セルアレイが複数のブロックに分割され、各ブロックは、複数のページで構成されている。データの消去は、ブロック単位で実行され、データの読み出しや書き込みは、ページ単位で実行される。ＮＡＮＤ型フラッシュメモリーは、記憶容量が大きく、広く利用されている。
【０００６】
しかし、ＮＡＮＤ型フラッシュメモリーは、その特性上、リードディスターブが発生する。リードディスターブとは、選択されたセルに記憶されているデータの読み出しを繰り返すことにより、選択されたセル以外の非選択セルの閾値が変化し、非選択セルに記憶されているデータが変化する現象である。リードディスターブは、ブロック全体のデータを消去して、非選択セルに同じデータを書き込むことにより、解消することができる。
【０００７】
ブートローダーをＮＡＮＤ型フラッシュメモリーに格納する場合、リードディスターブに対処するために、ブートローダーを更新する必要がある。
【０００８】
ブートローダーの更新中に、コンピューターの電源がオフにされると、ブートローダーの更新が失敗する。このため、次に、コンピューターの電源をオンしたとき、ＯＳを起動させるのに、複製ブートローダーが使用されることになる。
【０００９】
しかし、上記先行技術のように、ブートローダーを読み出す処理をした結果、ブートローダーを読み出すことができないと判定がされ、その判定後、複製ブートローダーを読み出して、ＯＳを起動させる場合、ブートローダーを読み出す処理を開始してからブートローダーを読み出すことができない判定をするまでの時間が発生する。この時間だけＯＳの起動時間が遅くなる。
【００１０】
本発明は、複製ブートローダーでＯＳを起動するときに、起動時間が長くなるのを防止できる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成する本発明に係る半導体装置は、ブートローダー及び前記ブートローダーの複製である複製ブートローダーが格納されているＮＡＮＤ型フラッシュメモリーと、ＯＳを起動するために、前記ＮＡＮＤ型フラッシュメモリーから前記ブートローダーを読み出すブート読出部と、予め定められた条件になれば、前記ＮＡＮＤ型フラッシュメモリーに格納されている前記ブートローダーを消去し、前記複製ブートローダーの複製を前記ブートローダーとして前記ＮＡＮＤ型フラッシュメモリーに書き込むことによって、前記ブートローダーを更新するブート更新部と、を備え、前記ブート更新部は、前記ブートローダーの更新をするときに、前記ブートローダーの更新が完了していないことを示す更新未完了情報を前記ＮＡＮＤ型フラッシュメモリーに記憶させ、前記ブートローダーの更新が完了したときに、前記ブートローダーの更新が完了したことを示す更新完了情報を前記ＮＡＮＤ型フラッシュメモリーに記憶させ、前記ブート読出部は、前記ＯＳを起動するために前記ブートローダーを読み出す場合において、前記ＮＡＮＤ型フラッシュメモリーに前記更新完了情報が記憶されていれば、前記ブートローダーの読み出しを実行し、前記ＮＡＮＤ型フラッシュメモリーに前記更新未完了情報が記憶されていれば、前記ブートローダーの読み出しを実行せずに、前記複製ブートローダーの読み出しを実行する。
【００１２】
本発明に係る半導体装置では、ブートローダーの更新をするときに、更新未完了情報をＮＡＮＤ型フラッシュメモリーに記憶させ、ブートローダーの更新が完了したときに、更新完了情報をＮＡＮＤ型フラッシュメモリーに記憶させる。よって、ブートローダーの更新中に、半導体装置に電力が供給されないことが発生することにより、ブートローダーの更新が失敗した場合、ＮＡＮＤ型フラッシュメモリーには、更新完了情報が記憶されず、更新未完了情報が記憶されたままとなる。従って、次回、ＯＳを起動するために、ブートローダーの読み出しをする場合、ＮＡＮＤ型フラッシュメモリーに更新未完了情報が記憶されていることを確認することにより、ブートローダーの読み出しを実行せずに(言い換えれば、ブートローダーを読み出す処理をスキップして)、複製ブートローダーを読み出す。このように、本発明に係る半導体装置によれば、ブートローダーの更新に失敗して、複製ブートローダーを読み出す場合に、ブートローダーを読み出す処理をしないので、ＯＳの起動時間が長くなるのを防止できる。
【００１３】
上記構成において、前記ＮＡＮＤ型フラッシュメモリーは、複数のセルがアレイ状に配置されたセルアレイを備え、前記セルアレイは、データの消去単位である複数のブロックに分割されており、前記複数のブロックのうち、データが消去されたブロック内の各セルに記憶されているデータは、それぞれ、第１の値となり、前記更新未完了情報は、前記第１の値であり、前記ブートローダーが格納されているブロックに記憶されている。
【００１４】
この構成によれば、データが消去されたブロック内の各セルに記憶されているデータである第１の値を、更新未完了情報にし、更新未完了情報をブートローダーが格納されているブロックに記憶させる。従って、ブートローダーの消去動作が、更新未完了情報の記憶動作となるので、ブートローダーの消去動作と別に、更新未完了情報の記憶動作を行う必要がない。
【００１５】
上記構成において、前記複数のブロックのうち、正常なブロックには、正常ブロック情報が記憶され、不良なブロックには、不良ブロック情報が記憶されており、前記更新完了情報は、前記第１の値と異なる第２の値であり、前記ブートローダーが格納されているブロックに記憶されており、前記複製ブートローダーは、前記ブートローダーよりも後の順番のブロックに格納されており、前記ブート読出部は、前記正常ブロック情報が記憶されているブロックである正常ブロックにアクセスができるまで、１番目のブロックから順番に前記複数のブロックにアクセスし、前記正常ブロックにアクセスした場合、アクセスした前記正常ブロックに前記更新完了情報が記憶されていれば、アクセスした前記正常ブロックから前記ブートローダーを読み出し、アクセスした前記正常ブロックに前記更新未完了情報が記憶されていれば、次にアクセスできた前記正常ブロックに格納されている前記複製ブートローダーを読み出す。
【００１６】
この構成によれば、正常ブロックにアクセスするアルゴリズムを利用して、ブートローダーや複製ブートローダーを読み出すことができる。
【００１７】
上記構成において、前記ブート更新部は、前記複製ブートローダーが読み出されたとき、前記ブートローダーの更新をする。
【００１８】
複製ブートローダーが読み出されるときは、ブートローダーの更新が未完了(言い換えれば、ブートローダーの更新が失敗)であり、かつ、半導体装置に電力が供給されている状態である。この状態で、ブートローダーの更新をすることにより、ブートローダーの更新が失敗した場合でも、ブートローダーの更新をする機会が与えられる。
【発明の効果】
【００１９】
本発明によれば、複製ブートローダーでＯＳを起動するときに、起動時間が長くなるのを防止できる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態に係る半導体装置を備えた画像形成装置の内部構造の概略を説明する説明図である。
【図２】図１に示す画像形成装置の構成を示すブロック図である。
【図３】本実施形態に係る半導体装置の構成を示すブロック図である。
【図４】ＮＡＮＤ型フラッシュメモリーに含まれる複数のブロックの一つを示す平面図である。
【図５】１番目〜Ｎ番目のブロックに格納されているプログラムやデータ等の具体例を示す表である。
【図６】メモリー制御部の構成を示すブロック図である。
【図７】ブートローダーの更新中に、１番目からＮ番目のブロックのメイン領域及び冗長領域に格納されているプログラム等を示す表である。
【図８】ブートローダーの更新中に、１番目からＮ番目のブロックのメイン領域及び冗長領域に格納されているプログラム等を示す表である。
【図９】ブートローダーの更新完了後に、１番目からＮ番目のブロックのメイン領域及び冗長領域に格納されているプログラム等を示す表である。
【図１０】本実施形態に係る半導体装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【００２１】
以下、図面に基づいて本発明の実施形態を詳細に説明する。図１は、本発明の一実施形態に係る半導体装置を備えた画像形成装置１の内部構造の概略を説明する説明図である。画像形成装置１は、例えば、コピー、プリンター、スキャナー及びファクシミリの機能を有するデジタル複合機に適用することができる。画像形成装置１は、装置本体１００、装置本体１００の上に配置された原稿読取部２００、原稿読取部２００の上に配置された原稿給送部３００及び装置本体１００の上部前面に配置された操作部４００を備える。
【００２２】
原稿給送部３００は、自動原稿送り装置として機能し、原稿載置部３０１に置かれた複数枚の原稿を連続的に原稿読取部２００で読み取ることができるように送ることができる。
【００２３】
原稿読取部２００は、露光ランプ等を搭載したキャリッジ２０１、ガラス等の透明部材により構成された原稿台２０３、不図示のＣＣＤ(Charge Coupled Device)センサー及び原稿読取スリット２０５を備える。原稿台２０３に載置された原稿を読み取る場合、キャリッジ２０１を原稿台２０３の長手方向に移動させながらＣＣＤセンサーにより原稿を読み取る。これに対して、原稿給送部３００から給送された原稿を読み取る場合、キャリッジ２０１を原稿読取スリット２０５と対向する位置に移動させて、原稿給送部３００から送られてきた原稿を、原稿読取スリット２０５を通してＣＣＤセンサーにより読み取る。ＣＣＤセンサーは読み取った原稿を画像データとして出力する。
【００２４】
装置本体１００は、用紙貯留部１０１、画像形成部１０３及び定着部１０５を備える。用紙貯留部１０１は、装置本体１００の最下部に配置されており、用紙の束を貯留することができる用紙トレイ１０７を備える。用紙トレイ１０７に貯留された用紙の束において、最上位の用紙がピックアップローラー１０９の駆動により、用紙搬送路１１１へ向けて送出される。用紙は、用紙搬送路１１１を通って、画像形成部１０３へ搬送される。
【００２５】
画像形成部１０３は、搬送されてきた用紙にトナー像を形成する。画像形成部１０３は、感光体ドラム１１３、露光部１１５、現像部１１７及び転写部１１９を備える。露光部１１５は、画像データ(原稿読取部２００から出力された画像データ、パソコンから送信された画像データ、ファクシミリ受信の画像データ等)に対応して変調された光を生成し、一様に帯電された感光体ドラム１１３の周面に照射する。これにより、感光体ドラム１１３の周面には、画像データに対応する静電潜像が形成される。この状態で感光体ドラム１１３の周面に現像部１１７からトナーを供給することにより、周面には画像データに対応するトナー像が形成される。このトナー像は、転写部１１９によって先ほど説明した用紙貯留部１０１から搬送されてきた用紙に転写される。
【００２６】
トナー像が転写された用紙は、定着部１０５に送られる。定着部１０５において、トナー像と用紙に熱と圧力が加えられて、トナー像は用紙に定着される。用紙はスタックトレイ１２１又は排紙トレイ１２３に排紙される。
【００２７】
操作部４００は、操作キー部４０１と表示部４０３を備える。表示部４０３は、タッチパネル機能を有しており、ソフトキーを含む画面が表示される。ユーザーは、画面を見ながらソフトキーを操作することによって、コピー等の機能の実行に必要な設定等をする。
【００２８】
操作キー部４０１には、ハードキーからなる操作キーが設けられている。具体的には、スタートキー４０５、テンキー４０７、ストップキー４０９、リセットキー４１１、コピー、プリンター、スキャナー及びファクシミリを切り換えるための機能切換キー４１３等が設けられている。
【００２９】
スタートキー４０５は、コピー、ファクシミリ送信等の動作を開始させるキーである。テンキー４０７は、コピー部数、ファクシミリ番号等の数字を入力するキーである。ストップキー４０９は、コピー動作等を途中で中止させるキーである。リセットキー４１１は、設定された内容を初期設定状態に戻すキーである。
【００３０】
機能切換キー４１３は、コピーキー及び送信キー等を備えており、コピー機能、送信機能等を相互に切り替えるキーである。コピーキーを操作すれば、コピーの初期画面が表示部４０３に表示される。送信キーを操作すれば、ファクシミリ送信及びメール送信の初期画面が表示部４０３に表示される。
【００３１】
図２は、図１に示す画像形成装置１の構成を示すブロック図である。画像形成装置１は、装置本体１００、原稿読取部２００、原稿給送部３００、操作部４００、制御部５００及び通信部６００がバスによって相互に接続された構成を有する。装置本体１００、原稿読取部２００、原稿給送部３００及び操作部４００に関しては既に説明したので、説明を省略する。
【００３２】
通信部６００は、ファクシミリ通信部６０１及びネットワークＩ／Ｆ部６０３を備える。ファクシミリ通信部６０１は、相手先ファクシミリとの電話回線の接続を制御するＮＣＵ(Network Control Unit)及びファクシミリ通信用の信号を変復調する変復調回路を備える。ファクシミリ通信部６０１は、電話回線６０５に接続される。
【００３３】
ネットワークＩ／Ｆ部６０３は、ＬＡＮ(Local Area Network)６０７に接続される。ネットワークＩ／Ｆ部６０３は、ＬＡＮ６０７に接続されたパソコン等の端末装置との間で通信を実行するための通信インターフェイス回路である。
【００３４】
制御部５００について説明する。図３は、本実施形態に係る半導体装置３の構成を示すブロック図である。半導体装置３は、制御部５００として機能するコンピューターである。半導体装置３は、ＣＰＵ(Central Processing Unit)５、ＮＡＮＤ型フラッシュメモリー(NAND-type flash memory)７、ＤＲＡＭ(Dynamic Random Access Memory)９、メモリー制御部１１、及び、これらを相互に接続するバス１３を備える。
【００３５】
ＣＰＵ５は、画像形成装置１を動作させるために必要な制御を、装置本体１００等の画像形成装置１の上記構成要素に対して実行する。ＮＡＮＤ型フラッシュメモリー７は、ＲＯＭとして機能し、画像形成装置１の動作の制御に必要なソフトウェアを記憶している。ＤＲＡＭ９は、ソフトウェアの実行時に発生するデータの一時的な記憶及びアプリケーションソフトの記憶等に利用される。
【００３６】
メモリー制御部１１は、ＣＰＵ５がＮＡＮＤ型フラッシュメモリー７からプログラムやデータを取り出す際に仲介する装置であり、ＥＣＣ(Error Correction Code)やウェアレベリング等の制御をする。メモリー制御部１１は、ハードウェアとソフトウェアにより構成される。
【００３７】
ＮＡＮＤ型フラッシュメモリー７について詳しく説明する。ＮＡＮＤ型フラッシュメモリー７は、複数のセルがアレイ状に配置されたセルアレイを備え、セルアレイは、複数のブロックに分割されている。ここでは、Ｎ個のブロックとする。Ｎ個のブロックは、先頭から順に、１番目のブロック、２番目のブロック、３番目のブロック、・・・、Ｎ−１番目のブロック、Ｎ番目のブロックとする。これは、メモリー制御部１１が、ブロックにアクセスする順番である。
【００３８】
図４は、一つのブロック１５の平面図である。ブロック１５は、複数のページ１７により構成される。ページ１７は、行方向に並ぶ複数のセル１９により構成され、メイン領域２１と冗長領域２３とに分けられる。
【００３９】
メイン領域２１には、主に、プログラムやデータが格納される。従って、ブートローダーやアプリケーションプログラムは、メイン領域２１に格納される。
【００４０】
冗長領域２３には、管理情報が格納される。管理情報として、ＥＣＣ情報や不良ブロック情報等がある。
【００４１】
ＥＣＣ情報は、エラー訂正に使用される。メモリー制御部１１は、メイン領域２１にプログラムやデータを格納する際に、ＥＣＣ情報を演算し、冗長領域２３に格納する。メモリー制御部１１は、プログラムやデータをメイン領域２１から読み出す際に、冗長領域２３からＥＣＣ情報を読み出して、読み出されたプログラムやデータに発生したエラーを、ＥＣＣ情報を用いて訂正する。
【００４２】
不良ブロック情報は、ＥＣＣによるエラー訂正が不可能なページ１７がある場合、そのページ１７を含むブロック１５が使用できないことを示す情報である。後で説明するように、本実施形態では、不良ブロックを示すブロック情報「０」が、不良ブロック情報となる。不良ブロックは、セル１９の欠損等によってＮＡＮＤ型フラッシュメモリー７の使用前から発生している場合と、プログラムやデータの消去を繰り返しているうちに発生する場合とがある。
【００４３】
図５は、１番目〜Ｎ番目のブロック１５に格納されているプログラムやデータ等の具体例を示す表である。１番目のブロック１５にブートローダーが格納されている。ブートローダーは、Ｎ個のブロック１５のうち、不良ブロックでない最初のブロック１５に格納されている。従って、ブートローダーは、通常、１番目のブロック１５に格納されている。１番目のブロック１５が不良ブロックになれば、ブートローダーは、２番目以降のブロック１５に格納される。
【００４４】
本実施形態では、ブートローダーのデータ量が一つのブロック１５に格納できる場合で説明する。ブートローダーのデータ量が一つのブロック１５に格納できない場合、ブートローダーは、連続するブロック１５に格納される。例えば、ブートローダーの格納に４つのブロック１５が必要であれば、ブートローダーは、１番目のブロック１５、２番目のブロック１５、３番目のブロック１５、４番目のブロック１５に格納される。
【００４５】
複製ブートローダーは、ブートローダーの複製であり、ブートローダーが格納されるブロック１５よりも後の順番のブロック１５に格納される。本実施形態では、２番目のブロック１５に格納されている場合を例にして説明する。
【００４６】
１０番目のブロック１５には、バックアップデータが格納されている。バックアップデータには、ブートローダーの読出回数が含まれる。読出回数とは、ブートローダーがＮＡＮＤ型フラッシュメモリー７から読み出しされた回数である。制御部５００のＯＳを起動するために、ブートローダーをＮＡＮＤ型フラッシュメモリー７から読み出す毎に、読出回数が一つずつ増える。読出回数が予め定められた値を超えたとき、リードディスターブに対処するために、ブートローダーが更新される。
【００４７】
その他のブロック１５には、各種アプリケーションプログラムや各種データが格納されている。但し、不良ブロックには、プログラムやデータが格納されていない。図５に示す表では、１１番目のブロック１５が不良ブロックなので、１１番目のブロック１５には、プログラムやデータが格納されていない。
【００４８】
１番目からＮ番目のブロック１５のそれぞれの冗長領域２３には、１ビットのブロック情報記憶領域が設けられている。ブロック情報記憶領域には、ブロック情報が記憶される。ブロック情報として、「１」が記憶されていれば、正常ブロックであることが示される。ブロック情報として、「０」が記憶されていれば、不良ブロックであることが示される。
【００４９】
ブロック情報「１」は、正常ブロック情報であり、ブロック情報「０」は、不良ブロック情報である。従って、Ｎ個のブロック１５のうち、正常であるブロック１５には、正常ブロック情報が記憶され、不良であるブロック１５には、不良ブロック情報が記憶されている。
【００５０】
ブートローダー及び複製ブートローダーが格納されているブロック１５(１番目のブロック１５、２番目のブロック１５)の冗長領域２３には、１ビットの更新情報領域が設けられている。
【００５１】
更新情報領域には、更新情報が記憶される。更新情報「１」は、更新未完了情報である。更新情報「０」は、更新完了情報である。ブートローダーが格納されているブロック１５に記憶されている更新未完了情報は、ブートローダーの更新が完了していないことを示す。ブートローダーが格納されているブロック１５に記憶されている更新完了情報は、ブートローダーの更新が完了したことを示す。複製ブートローダーが格納されているブロック１５に記憶されている更新未完了情報は、複製ブートローダーの更新が完了していないことを示す。複製ブートローダーが格納されているブロック１５に記憶されている更新完了情報は、複製ブートローダーの更新が完了したことを示す。
【００５２】
ここで、「１」及び「０」は、ＮＡＮＤ型フラッシュメモリー７のセルアレイを構成するセル１９が記憶するデータである。「１」は、第１の値の具体例であり、ブロック１５単位でデータを消去したときに、そのブロック１５を構成する各セル１９に記憶されているデータである。更新未完了情報は、第１の値であり、ブートローダーが格納されているブロック１５に記憶されている。更新完了情報は、第１の値と異なる第２の値であり、ブートローダーが格納されているブロック１５に記憶されている。
【００５３】
本実施形態では、セル１９が２値を記憶できる例で説明しているが、セル１９が多値を記憶できる場合でもよい。例えば、セル１９が４値を記憶できる場合、ブロック１５単位でデータを消去したときに、そのブロック１５を構成する各セル１９に記憶されるデータは「１１」となる。
【００５４】
メモリー制御部１１について、図６を用いて説明する。図６は、メモリー制御部１１の構成を示すブロック図である。メモリー制御部１１は、ブート読出部３１、ブート更新部３３、及び、読出回数監視部３５を備える。
【００５５】
ブート読出部３１は、制御部５００のＯＳを起動するために、ＮＡＮＤ型フラッシュメモリー７からブートローダーを読み出す。例えば、画像形成装置１の電源をオンにしたときに、制御部５００に設けられたＯＳ起動コマンド部が、コマンドを発生することにより、ブート読出部３１は、ＮＡＮＤ型フラッシュメモリー７からブートローダーを読み出す。
【００５６】
ブート読出部３１は、ＯＳを起動するためにブートローダーを読み出す場合において、ＮＡＮＤ型フラッシュメモリー７に更新完了情報が記憶されていれば、ブートローダーの読み出しを実行し、ＮＡＮＤ型フラッシュメモリー７に更新未完了情報が記憶されていれば、ブートローダーの読み出しを実行せずに、複製ブートローダーの読み出しを実行する。これを、詳しく説明する。
【００５７】
ブート読出部３１は、ＯＳを起動するコマンドが発生したとき、正常ブロック情報(ブロック情報として「１」)が記憶されているブロック１５である正常ブロックにアクセスができるまで、１番目のブロック１５から順番にＮ個のブロック１５にアクセスするアルゴリズムを実行する。
【００５８】
ブート読出部３１は、正常ブロックにアクセスできた場合、アクセスできた正常ブロックに更新完了情報(更新情報として「０」)が記憶されていれば、アクセスできた正常ブロックからブートローダーを読み出す。ブート読出部３１は、アクセスできた正常ブロックに更新未完了情報(更新情報として「１」)が記憶されていれば、次にアクセスできた正常ブロックに格納されている複製ブートローダーを読み出す。
【００５９】
ブート更新部３３は、予め定められた条件になれば、ＮＡＮＤ型フラッシュメモリー７に格納されているブートローダーを消去し、複製ブートローダーの複製をブートローダーとしてＮＡＮＤ型フラッシュメモリー７に書き込むことによって、ブートローダーを更新する。予め定められた条件になるとは、例えば、ＮＡＮＤ型フラッシュメモリー７からブートローダーが読み出された回数が予め定められた値を超えることである。
【００６０】
ブート更新部３３は、ＮＡＮＤ型フラッシュメモリー７からブートローダーが読み出された回数が予め定められた値を超えれば、リードディスターブに対処するために、ブートローダーの更新、すなわち、書き換えを実行する。
【００６１】
予め定められた条件は、ブートローダーの読出回数に限らず、リードディスターブ発生の原因となる条件であればよい。
【００６２】
ブート更新部３３は、ブートローダーの更新をするときに、ブートローダーの更新未完了を示す「１」を、更新情報として、ＮＡＮＤ型フラッシュメモリー７に記憶させる。ブート更新部３３は、ブートローダーの更新が完了したときに、ブートローダーの更新完了を示す「０」を、更新情報として、ＮＡＮＤ型フラッシュメモリー７に記憶させる。更新情報「１」が更新未完了情報であり、更新情報「０」が更新完了情報である。ブートローダーの更新が失敗すると、更新情報は「１」のままであり、「０」にされない。ブートローダーの更新の失敗は、例えば、ブートローダーの更新中に、画像形成装置１の電源がオフされたときに発生する。
【００６３】
読出回数監視部３５は、バックアップデータに含まれる、ブートローダーの読出回数を監視し、ブートローダーの読出回数が予め定められた値を超えるか否かを監視する。
【００６４】
本実施形態に係る半導体装置３の動作を説明する。図１０は、その動作を説明するフローチャートである。図７〜図９は、図５に示す表と同様に、１番目からＮ番目のブロック１５のメイン領域２１及び冗長領域２３に格納されているプログラム等を示す表である。
【００６５】
ブートローダーの更新において、図５から図７、図７から図８、図８から図９に遷移する。図７は、ブートローダーが消去され、かつ、更新情報がブートローダーの更新未完了を示す「１」にされた状態を示し、図８は、複製ブートローダーの複製がブートローダーとして書き込まれた状態を示し、図９は、更新情報がブートローダーの更新完了を示す「０」にされた状態を示している。
【００６６】
ユーザーが、画像形成装置１の電源がオンしたとき(ステップＳ１)、制御部５００は、制御部５００のＯＳを起動させるコマンドを発生させる。このコマンドが発生すると、ブート読出部３１は、ブートローダーが格納されているブロック１５にアクセスする(ステップＳ２)。
【００６７】
ブート読出部３１は、１番目のブロック１５にアクセスし、１番目のブロック１５が不良ブロックか否かを判断する(ステップＳ３)。ブート読出部３１は、１番目のブロック１５に、ブロック情報として、不良ブロックを示す情報「０」が記憶されていれば、不良ブロックと判断し、正常ブロックを示す情報「１」が記憶されていれば、正常ブロックと判断する。
【００６８】
ブート読出部３１が、１番目のブロック１５が不良ブロックと判断した場合(ステップＳ３でＹｅｓ)、次のブロックにアクセスし(ステップＳ３−１)、ステップＳ３の処理を繰り返す。詳しくは、ブートローダーは、２番目以降のブロック１５に格納されているので、ブート読出部３１は、２番目のブロック１５にアクセスして、２番目のブロック１５が不良ブロックか否かを判断する。ブート読出部３１は、不良ブロックでないブロック１５(正常ブロック)にアクセスできるまで、２番目以降のブロック１５にアクセスする。
【００６９】
一方、例えば、図５に示すブロック情報であれば、ブート読出部３１は、１番目のブロック１５が不良ブロックでないと判断、すなわち、正常ブロックと判断する(ステップＳ３でＮｏ)。そして、ブート読出部３１は、ブートローダーの更新が完了しているか否かを判断する(ステップＳ４)。ここでは、ブート読出部３１は、１番目のブロック１５に、更新情報として、更新完了を示す情報「０」が記憶されていれば、ブートローダーの更新完了と判断し、更新未完了を示す情報「１」が記憶されていれば、ブートローダーの更新未完了と判断する。
【００７０】
例えば、図５に示す更新情報であれば、ブート読出部３１は、ブートローダーの更新が完了していると判断する(ステップＳ４でＹｅｓ)。そして、ブート読出部３１は、ブートローダーを１番目のブロック１５から読み出し(ステップＳ５)、ＣＰＵ５がフェッチできる領域にブートローダーを転送する。この領域は、ＤＲＡＭ９等の揮発性半導体メモリーである。
【００７１】
ブート読出部３１によるブートローダーの読み出しが完了すれば、ＣＰＵ５は、ブートローダーの読出回数に１を加えて読出回数を更新する(ステップＳ６)。読出回数は、１０番目のブロック１５に格納されているバックアップデータに含まれる。
【００７２】
読出回数監視部３５は、読出回数が予め定められた値を超えたか否かを判断する(ステップＳ７)。読出回数監視部３５が、読出回数が予め定められた値を超えていないと判断した場合(ステップＳ７でＮｏ)、制御部５００は、画像形成装置１の電源がオフされたか否かを判断する(ステップＳ８)。
【００７３】
制御部５００が、画像形成装置１の電源がオフされていないと判断した場合(ステップＳ８でＮｏ)、ステップＳ８の処理が繰り返される。この期間、ユーザーは、画像形成装置１を利用することができる。
【００７４】
制御部５００が、画像形成装置１の電源がオフされたと判断した場合(ステップＳ８でＹｅｓ)、半導体装置３の動作が終了する(エンド)。これにより、ユーザーは、画像形成装置１を利用することができない。
【００７５】
読出回数監視部３５が、ブートローダーの読出回数が予め定められた値を超えたと判断した場合(ステップＳ７でＹｅｓ)、ブート更新部３３は、ブートローダーの更新をする。この更新について説明する。
【００７６】
ブート更新部３３は、図７に示すように、１番目のブロック１５のデータを消去することにより、ブートローダーを消去する(ステップＳ９)。そして、ブート更新部３３は、１番目のブロック１５において、ブートローダーの更新完了を示す情報「０」を消去し、ブートローダーの更新未完了を示す情報「１」を記憶させる(ステップＳ１０)。１番目のブロック１５では、データが消去されたので、１番目のブロック１５を構成するセル１９のそれぞれが記憶する値は「１」となる。これにより、１番目のブロック１５の更新情報は、図５から図７に示すように、ブートローダーの更新未完了を示す「１」となる。従って、１番目のブロック１５からデータが消去されることにより、１番目のブロック１５には、ブートローダーの更新未完了を示す「１」が自動的に記憶される。
【００７７】
ブート更新部３３は、図８に示すように、２番目のブロック１５に格納されている複製ブートローダーの複製を、１番目のブロック１５に書き込むことにより、ブートローダーを更新する。ブート更新部３３は、ブートローダーの更新が完了したか否かを判断する(ステップＳ１１)。ブート更新部３３は、ブートローダーの更新が完了したと判断した場合(ステップＳ１１でＹｅｓ)、図９に示すように、１番目のブロック１５において、ブートローダーの更新未完了を示す情報「１」を消去し、ブートローダーの更新完了を示す情報「０」を記憶させる(ステップＳ１２)。
【００７８】
そして、読出回数監視部３５は、バックアップデータに含まれるブートローダーの読出回数を０にリセットする(ステップＳ１３)。そして、ステップＳ８へ進む。
【００７９】
ブート更新部３３は、ブートローダーの更新が完了していないと判断した場合(ステップＳ１１でＮｏ)、ステップＳ１２の処理をせずに、図７や図８に示すように、１番目のブロック１５に、ブートローダーの更新未完了を示す「１」が記憶された状態で、ステップＳ８へ進む。
【００８０】
次に、１番目のブロック１５に、更新情報として、ブートローダーの更新未完了を示す「１」が記憶された状態で、画像形成装置１の電源がオンにされたフローを説明する。
【００８１】
画像形成装置１の電源がオンされて、制御部５００のＯＳを起動させるコマンドが発生すると、ブート読出部３１は、ブートローダーが格納されているブロック１５にアクセスする(ステップＳ２)。図７や図８に示すように、１番目のブロック１５は、不良ブロックでないので(ステップＳ３でＮｏ)、ステップＳ４へ進む。
【００８２】
ブート読出部３１は、ブートローダーの更新が完了しているか否かを判断する(ステップＳ４)。ここでは、ブート読出部３１は、１番目のブロック１５に記憶されている更新情報を参照して、ブートローダーの更新が完了しているか否かを判断する。図７や図８に示すように、１番目のブロック１５には、更新情報として、ブートローダーの更新未完了を示す情報「１」が記憶されている(ステップＳ４でＮｏ)。よって、ブート読出部３１は、２番目のブロック１５にアクセスして、複製ブートローダーを読み出す(ステップＳ１４)。
【００８３】
複製ブートローダーの読み出しが完了すれば、ＣＰＵ５は、ブートローダーの読出回数に１を加えて読出回数を更新する(ステップＳ６)。読出回数は、１０番目のブロック１５に格納されているバックアップデータに含まれる。
【００８４】
読出回数監視部３５は、ブートローダーの読出回数が予め定められた値を超えたか否かを判断する(ステップＳ７)。ブートローダーの更新に失敗しており、ブートローダーの読出回数は、既に予め定められた値を超えている(ステップＳ７でＹｅｓ)。よって、ブート更新部３３は、ブートローダーの更新をする(ステップＳ９〜Ｓ１３)。前回、ブートローダーの更新が失敗したので、これにより、ブートローダーを更新することができる。
【００８５】
複製ブートローダーが読み出されることは、ブートローダーの更新の失敗を意味するので、ステップＳ１４から、ステップＳ９へ進み、ブートローダーの更新をしてもよい。
【００８６】
本実施形態の主な効果を説明する。本実施形態では、ブートローダーの更新をするときに、更新未完了情報をＮＡＮＤ型フラッシュメモリー７に記憶させ(ステップＳ１０)、ブートローダーの更新が完了したときに、更新完了情報をＮＡＮＤ型フラッシュメモリー７に記憶させる(ステップＳ１２)。よって、ブートローダーの更新中に、半導体装置３に電力が供給されないことが発生することにより、ブートローダーの更新が失敗した場合、ＮＡＮＤ型フラッシュメモリー７には、更新完了情報が記憶されず、更新未完了情報が記憶されたままとなる(ステップＳ８でＮｏ)。従って、次回、ＯＳを起動するために、ブートローダーの読み出しをする場合、ＮＡＮＤ型フラッシュメモリー７に更新未完了情報が記憶されていることを確認することにより、ブートローダーの読み出しを実行せずに(言い換えれば、ブートローダーを読み出す処理をスキップして)、複製ブートローダーを読み出す(ステップＳ１４)。このように、本実施形態によれば、ブートローダーの更新に失敗して、複製ブートローダーを読み出す場合に、ブートローダーを読み出す処理をしないので、制御部５００のＯＳの起動時間が長くなるのを防止できる。
【００８７】
また、本実施形態によれば、データが消去されたブロック１５内の各セル１９に記憶されているデータである「１」を、更新未完了情報にし、更新未完了情報をブートローダーが格納されているブロック１５に記憶させる(ステップＳ１０)。従って、ブートローダーの消去動作が、更新未完了情報の記憶動作となるので、ブートローダーの消去動作と別に、更新未完了情報の記憶動作を行う必要がない。
【００８８】
また、本実施形態によれば、ステップＳ２、ステップＳ３、ステップＳ４、ステップＳ５及びステップＳ１４で説明したように、正常ブロックにアクセスするアルゴリズムを利用して、ブートローダーや複製ブートローダーを読み出すことができる。
【００８９】
また、本実施形態によれば、複製ブートローダーが読み出されたとき(ステップＳ１４)、ブートローダーの更新をする(ステップＳ９〜Ｓ１３)。複製ブートローダーが読み出されるときは、ブートローダーの更新が未完了(言い換えれば、ブートローダーの更新が失敗)であり、かつ、半導体装置３に電力が供給されている状態である。この状態で、ブートローダーの更新をすることにより、ブートローダーの更新が失敗した場合でも、ブートローダーの更新をする機会が与えられる。
【符号の説明】
【００９０】
１  画像形成装置
３  半導体装置
７  ＮＡＮＤ型フラッシュメモリー
１１  メモリー制御部
１５  ブロック
１７  ページ
１９  セル
２１  メイン領域
２３  冗長領域
３１  ブート読出部
３３  ブート更新部
【図１】
2015046088.tif 000003
【図２】
2015046088.tif 000004
【図３】
2015046088.tif 000005
【図４】
2015046088.tif 000006
【図５】
2015046088.tif 000007
【図６】
2015046088.tif 000008
【図７】
2015046088.tif 000009
【図８】
2015046088.tif 000010
【図９】
2015046088.tif 000011
【図１０】
2015046088.tif 000012