(57)【要約】【課題】簡便な構成で回路を構成し、かつ、領域情報を自由に大きなサイズにできるようにしつつ、ＣＰＵを暴走させずに安全にプログラムを実行できるようにできるようにする。【解決手段】不揮発性メモリに領域情報を複数、記憶し、前記不揮発性メモリから前記複数の領域情報を取得し、前記不揮発性メモリのエラーによる誤りの含まれない領域情報を選択する領域情報選択手段と、選択された領域情報により示される前記不揮発性メモリの領域から、前記ＣＰＵにより当該ＣＰＵが実行するプログラムが読み出される実行用メモリへ前記プログラムをＤＭＡ転送させるＤＭＡ転送制御手段と、前記ＤＭＡ転送制御手段により前記実行用メモリへＤＭＡ転送された前記プログラムを前記ＣＰＵに実行させる実行制御手段とを備えるプログラム起動回路。【選択図】図３
2008204065.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵにより実行されるプログラムと、当該プログラムが当該不揮発性メモリに記憶されている領域を示す領域情報とを記憶する不揮発性メモリを備え、
当該不揮発性メモリは、当該領域情報を複数記憶し、
前記不揮発性メモリから前記複数の領域情報を取得し、取得された当該各領域情報のうちから、当該各領域情報が記憶されていた前記不揮発性メモリのエラーによる誤りの含まれない領域情報を選択する領域情報選択手段と、
前記領域情報選択手段により選択された領域情報により示される前記不揮発性メモリの領域から、前記ＣＰＵにより当該ＣＰＵが実行するプログラムが読み出される実行用メモリへ前記プログラムをＤＭＡ転送させるＤＭＡ転送制御手段と、
前記ＤＭＡ転送制御手段により前記実行用メモリへＤＭＡ転送された前記プログラムを前記ＣＰＵに実行させる実行制御手段とを備えるプログラム起動回路。
【請求項２】
前記領域情報選択手段は、前記不揮発性メモリから取得された領域情報に予め定められた少なくとも２以上の個数の互いに同一の領域情報が含まれることを判定することにより当該判定に係る領域情報を前記誤りの含まれない領域情報に選択する請求項１記載のプログラム起動回路。
【請求項３】
前記不揮発性メモリは、前記領域情報を３つ記憶し、
前記領域情報選択手段により前記判定がされる前記予め定められた個数は２個であり、
当該領域情報選択手段は、前記不揮発性メモリに記憶された前記３つの領域情報のうち２つの前記領域情報を取得して、取得された当該２つの領域情報が互いに同一であることを判定することにより当該２つの領域情報を前記誤りの含まれない領域情報に選択すると共に、当該同一であるとの判定ができない場合には前記不揮発性メモリに記憶された当該２つの領域情報以外の残りの１つの前記領域情報を取得して、前記２つの領域情報のうち１つを、取得された当該残りの１つの領域情報と互いに同一と判定することにより当該同一との判定をした領域情報を前記誤りの含まれない領域情報に選択する請求項２記載のプログラム起動回路。
【請求項４】
前記領域情報選択手段は、前記不揮発性メモリから取得される前記領域情報のチェックサムを求め、当該チェックサムにより前記誤りが含まれないことが示された領域情報を、前記誤りの含まれない領域情報に選択する請求項１記載のプログラム起動回路。
【請求項５】
前記ＮＡＮＤ型フラッシュメモリは、前記複数の領域情報を、前記不揮発性メモリの互いに異なるページに記憶する請求項２記載のプログラム起動回路。
【請求項６】
前記不揮発性メモリは、前記各ページに、それぞれ、前記領域情報と共に、前記ＤＭＡ転送で前記実行用メモリを動作させるのに前記ＤＭＡ転送制御手段が必要とする動作必要情報を記憶し、
前記領域情報選択手段は、前記不揮発性メモリの前記各ページから当該各ページのページデータをそれぞれ取得し、取得された各ページデータのうちで前記予め定められた個数のページデータが同一であることを判定することにより、当該判定に係るページデータの領域情報を前記誤りの含まれない領域情報に選択し、
前記ＤＭＡ転送制御手段は、前記領域情報選択手段による前記判定に係る前記ページデータに当該領域情報と共に含まれる動作必要情報を用いて、当該領域情報に係る前記ＤＭＡ転送をさせる請求項５記載のプログラム起動回路。
【請求項７】
前記不揮発性メモリは、前記各ページに、それぞれ、領域情報と共に当該不揮発性メモリの不良ブロックの情報を記憶し、
前記領域情報選択手段は、前記不揮発性メモリの前記各ページから前記各ページのページデータをそれぞれ取得し、取得された各ページデータのうちで前記予め定められた個数のページデータが同一であることを判定することにより当該判定に係るページデータの領域情報を前記誤りの含まれない領域情報に選択し、
前記ＤＭＡ転送制御手段は、前記領域情報選択手段により選択された当該領域情報に基づいて前記ＤＭＡ転送を行なうに際して、当該領域情報と共に前記ページデータに含まれた前記不良ブロックの情報の示すブロックのデータはＤＭＡ転送をさせない請求項５記載のプログラム起動回路。
【請求項８】
前記不揮発性メモリの前記プログラムが記憶される前記領域は、互いに離れた複数の部分領域からなり、
前記領域情報は、前記各部分領域を示す情報がリンクデータによって連結されてなる請求項１〜７のいずれかに記載のプログラム起動回路。
【請求項９】
前記領域情報選択手段は、前記不揮発性メモリから取得した前記複数の領域情報のうちに前記予め定められた個数の、互いに同一の領域情報が含まれない場合、前記領域情報の選択をせず、当該領域情報選択手段が領域情報を選択しなかった場合、報知部にユーザへの報知をさせる報知制御手段を備える請求項２記載のプログラム起動回路。
【請求項１０】
ＣＰＵと、
当該ＣＰＵにより当該ＣＰＵが実行させるプログラムが読み出される実行用メモリと、
前記ＣＰＵにプログラムを実行させるプログラム起動回路とを備え、
前記プログラム起動回路は、
前記ＣＰＵに実行されるプログラムと、当該プログラムが当該不揮発性メモリに記憶されている領域を示す領域情報とを記憶する不揮発性メモリを備え、
当該不揮発性メモリは、当該領域情報を複数記憶し、
前記不揮発性メモリから前記複数の領域情報を取得し、取得された当該各領域情報のうちから、当該各領域情報が記憶されていた前記不揮発性メモリのエラーによる誤りの含まれない領域情報を選択する領域情報選択手段と、
前記領域情報選択手段により選択された領域情報により示される前記不揮発性メモリの領域から、前記実行用メモリへ前記プログラムをＤＭＡ転送させるＤＭＡ転送制御手段と、
前記ＤＭＡ転送制御手段により前記実行用メモリへＤＭＡ転送された前記プログラムを前記ＣＰＵに実行させる実行制御手段とを備える電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを記憶する不揮発性メモリと、前記不揮発性メモリから、ＣＰＵにより当該ＣＰＵの実行するプログラムが読み出される実行用メモリへ、前記プログラムをＤＭＡ転送させるＤＭＡ転送制御手段と、前記ＤＭＡ転送制御手段により前記実行用メモリへ転送された前記プログラムを前記ＣＰＵに実行させる実行制御手段とを備えるプログラム起動回路、およびかかるプログラム起動回路を備えた電子機器に関する。
【背景技術】
【０００２】
従来より、不揮発性メモリにプログラムを格納しておき、格納されたプログラムを、ＣＰＵの実行用メモリへＤＭＡ転送して、転送したプログラムをＣＰＵに読み出させて、ＣＰＵに当該プログラムを実行させるプログラム起動回路が用いられている（特許文献１〜３参照）。ここで、ＣＰＵに実行させるプログラムは、たとえば、ＣＰＵに、当該ＣＰＵを初期化させるいわゆるブートプログラムが含まれる。不揮発性メモリとしては、書き換え可能であるフラッシュメモリが多く用いられ、特に、ＮＯＲ型ではなく、コストの低いＮＡＮＤ型のフラッシュメモリが多く用いられる。
【０００３】
ここで、不揮発性メモリではエラーが生じて、記憶されたプログラムに誤りが入ってしまうことがある。記憶されたプログラムに誤りが入ると、プログラム内の１ビットや２ビットなどが変化して、プログラムを転送して、プログラムをＣＰＵに実行させた際のＣＰＵの挙動がおかしくなる。
【０００４】
そこで、プログラム起動回路では、不揮発性メモリに、プログラムと共に、１ビットや２ビットであれば誤りが生じてもその誤りを訂正できる誤り訂正情報を記憶しておくこととしている。そして、プログラム起動回路に、かかる誤り訂正情報を用いて誤りを訂正する訂正回路を設けて、不揮発性メモリから読み出されたプログラムを、この訂正回路により訂正させて、プログラムに誤りが混入しても、訂正回路により誤りが訂正された正しいプログラムを用いることができ、誤りが訂正された正しいプログラムがＣＰＵに実行されるようにしている（特許文献１、２参照）。
【０００５】
また、プログラムが記憶される不揮発性の領域に、特定の、エラーが生じ難く信頼性が高い領域を用いることとして、誤りが生じ難いようにすることも行なわれる（特許文献３参照）。
【０００６】
そして、プログラムを記憶する領域を変更することがある場合などには、プログラム本体と共に、プログラムを記憶した領域のアドレス等の領域情報を、不揮発性メモリに記憶しておき、記憶された領域情報の示すアドレス等のデータを、プログラムとしてＣＰＵに実行させることがある。かかる場合には、プログラム本体のデータには誤りが入っていなくても、領域情報に誤りが入ってしまうと、誤ったズレた領域のデータが、プログラムであるものとしてＣＰＵに実行されてしまい、ＣＰＵがおかしな動作をしてしまう。このため、この領域情報に対して、訂正回路により訂正を行なうなどの上述の技術を用いることも考えられる。
【特許文献１】特開２００５−７１３０３号公報
【特許文献２】特開２００５−１５７５２８号公報
【特許文献３】特開２００５−２０８７４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、訂正回路は、離散数学理論等の数学理論に基づいた特別な処理をする複雑な回路を必要とする（特許文献１，２）。また、特許文献３がいう信頼性の高い領域に領域情報を記憶することが考えられるが、かかる信頼性の高い領域はせいぜい８ＫＢ〜１０ＫＢと狭く、かかる狭い場所に領域情報に記憶するのでは、記憶可能な領域情報のサイズに制約が出てしまう。
【０００８】
本発明は、この点に鑑みてなされたものであり、領域情報の示す領域のプログラムをＣＰＵに実行させるプログラム起動回路において、簡便な構成で回路を構成でき、かつ、領域情報を自由に大きなサイズにしつつ、ＣＰＵを暴走させずに安全にプログラムを実行できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
請求項１記載の発明は、ＣＰＵにより実行されるプログラムと、当該プログラムが当該不揮発性メモリに記憶されている領域を示す領域情報とを記憶する不揮発性メモリを備え、当該不揮発性メモリは、当該領域情報を複数記憶し、前記不揮発性メモリから前記複数の領域情報を取得し、取得された当該各領域情報のうちから、当該各領域情報が記憶されていた前記不揮発性メモリのエラーによる誤りの含まれない領域情報を選択する領域情報選択手段と、前記領域情報選択手段により選択された領域情報により示される前記不揮発性メモリの領域から、前記ＣＰＵにより当該ＣＰＵが実行するプログラムが読み出される実行用メモリへ前記プログラムをＤＭＡ転送させるＤＭＡ転送制御手段と、前記ＤＭＡ転送制御手段により前記実行用メモリへＤＭＡ転送された前記プログラムを前記ＣＰＵに実行させる実行制御手段とを備えるプログラム起動回路である。
【００１０】
この構成にすれば、領域情報が複数、記憶されており、記憶された領域情報のうちから不揮発性メモリのエラーによる誤りの含まれない領域情報を選択して、選択された領域情報に記憶された、誤りが含まれない正しいプログラムをＣＰＵに実行させることができ、ＣＰＵを暴走させることを回避し、安全にプログラムを実行させることができる。
【００１１】
そして、この構成であれば、複雑な訂正処理をしてかかる正しい領域情報を得るのではなく、たとえば単に同じ領域情報どうしを対比（コンペア）するだけなどにより、簡単に、正しい領域情報が選択され、簡単な構成でプログラム起動回路を実現できる。
【００１２】
しかも、特別な信頼性の高い領域に領域情報を記憶させなければならないなどなく、不揮発性メモリの各領域のうちで、特に制約なく自由な位置に領域情報を記憶させても、領域情報に誤りが混入すれば、当該誤りの混入した領域情報以外の正しい領域情報を選択することによりＣＰＵの暴走を防ぐことができ、信頼性の高い領域のサイズなどに制約されることなく、領域情報を自由なサイズで構成することができる。
【００１３】
「ＣＰＵにより実行されるプログラムと、当該プログラムが当該不揮発性メモリに記憶されている領域を示す領域情報とを記憶する不揮発性メモリ」とあるうち、「当該不揮発性メモリ」とは、プログラムと領域情報とを記憶する、文末に記載のある「不揮発性メモリ」のことである。
【００１４】
請求項２記載の発明は、前記領域情報選択手段は、前記不揮発性メモリから取得された領域情報に予め定められた少なくとも２以上の個数の互いに同一の領域情報が含まれることを判定することにより当該判定に係る領域情報を前記誤りの含まれない領域情報に選択する請求項１記載のプログラム起動回路である。
【００１５】
この構成にすれば、予め定められた少なくとも２以上の個数の領域情報に同じ誤りが含まれている場合、以外には、誤りの含まれない領域情報が適切に選択され、かかる同じ誤りが含まれることは実質的に生じることがないので、確実に適切に領域情報が選択されるようにできる。
【００１６】
請求項３記載の発明は、前記不揮発性メモリは、前記領域情報を３つ記憶し、前記領域情報選択手段により前記判定がされる前記予め定められた個数は２個であり、当該領域情報選択手段は、前記不揮発性メモリに記憶された前記３つの領域情報のうち２つの前記領域情報を取得して、取得された当該２つの領域情報が互いに同一であることを判定することにより当該２つの領域情報を前記誤りの含まれない領域情報に選択すると共に、当該同一であるとの判定ができない場合には前記不揮発性メモリに記憶された当該２つの領域情報以外の残りの１つの前記領域情報を取得して、前記２つの領域情報のうち１つを、取得された当該残りの１つの領域情報と互いに同一と判定することにより当該同一との判定をした領域情報を前記誤りの含まれない領域情報に選択する請求項２記載のプログラム起動回路である。
【００１７】
この構成にすれば、２つの領域情報が取得されてその２つが互いに同一であり、誤りの含まれないものであれば、その時点で領域情報の選択がされて、残りの２つの領域情報の取得を省略でき、無用に多数回、領域情報の取得がされることがないようにして、領域情報を選択するのに必要な最低の個数だけ、領域情報の取得が行なわれるようにでき、プログラム起動回路で行なわれる処理を簡潔にしたり、無用に多数回の領域情報の取得により回路が消耗することを回避することにより回路の長寿命化を図ったりすることができる。
【００１８】
そして、はじめ２つの領域情報が取得されて、それらが互いに同一ではなく、誤りが生じていた場合には、残りの１の領域情報を取得し、取得された領域情報に基づいて、当該領域情報と同一の、いずれか前記２つの領域情報のうち１つの領域情報を、誤りの含まれない情報に選択して、はじめに取得した２つの領域情報のいずれか一方で誤りが含まれていても、取得された３つの領域情報のうち２つ以上に誤りが生じる現実的には生じない場合以外のときには、領域情報の選択をでき、確実に適切な領域情報の選択をして、プログラムを確実に実行することができる。
【００１９】
請求項４記載の発明は、前記領域情報選択手段は、前記不揮発性メモリから取得される前記領域情報のチェックサムを求め、当該チェックサムにより前記誤りが含まれないことが示された領域情報を、前記誤りの含まれない領域情報に選択する請求項１記載のプログラム起動回路である。
【００２０】
この構成にすれば、領域情報のチェックサムに基づいて誤りの含まれない領域情報を確実に選択することができ、確実にプログラムを安全に実行させることができる。
【００２１】
なお、プログラム起動回路は、たとえば、誤りの含まれない正しい領域情報のチェックサムを予め記憶した適正チェックサム情報記憶手段を備え、そして、領域情報選択手段は、求められた前記チェックサムが、当該適正チェックサム情報記憶手段に記憶されたチェックサムと同一である場合に、求められた当該チェックサムの前記領域情報を、前記誤りの含まれない領域情報に選択するものとしてもよいし、また、かかる訂正チェックサム情報記憶手段は必ずしも備えず、代わりに、当該プログラム起動回路の外部から正しい領域情報を取得する適正領域情報取得手段を備え、求められた前記チェックサムが当該適正領域情報取得手段に取得されたチェックサムと同一である場合に、求められた当該チェックサムの前記領域情報を、前記誤りの含まれない領域情報に選択するものとしてもよい。
【００２２】
請求項５記載の発明は、前記ＮＡＮＤ型フラッシュメモリは、前記複数の領域情報を、前記不揮発性メモリの互いに異なるページに記憶する請求項２記載のプログラム起動回路である。
【００２３】
このようにすれば、いずれのページにアクセスするかを切り替えるだけで、簡単に取得される領域情報を切り替えることができ、領域情報を取得する領域情報選択手段を簡単な構成にすることができる。
【００２４】
請求項６記載の発明は、前記不揮発性メモリは、前記各ページに、それぞれ、前記領域情報と共に、前記ＤＭＡ転送で前記実行用メモリを動作させるのに前記ＤＭＡ転送制御手段が必要とする動作必要情報を記憶し、前記領域情報選択手段は、前記不揮発性メモリの前記各ページから当該各ページのページデータをそれぞれ取得し、取得された各ページデータのうちで前記予め定められた個数のページデータが同一であることを判定することにより、当該判定に係るページデータの領域情報を前記誤りの含まれない領域情報に選択し、前記ＤＭＡ転送制御手段は、前記領域情報選択手段による前記判定に係る前記ページデータに当該領域情報と共に含まれる動作必要情報を用いて、当該領域情報に係る前記ＤＭＡ転送をさせる請求項５記載のプログラム起動回路である。
【００２５】
この構成にすれば、ＤＭＡ転送に動作必要情報が必要な場合において、動作必要情報は不揮発性メモリに記憶されており、動作必要情報を容易に変更することができるにも拘わらず、同一の動作必要情報が含まれた前記予め定められた個数だけの前記ページデータのある動作必要情報、つまり誤りの含まれない正しい動作必要情報がＤＭＡ転送制御手段に用いられることにより、誤った動作必要情報が用いられることによってＤＭＡ転送ができない事態が生じることがないようにし、確実にＤＭＡ転送が実行されて、確実にＣＰＵにプログラムが実行されるようにできる。
【００２６】
しかも、この構成であれば、領域情報と動作必要情報とを各ページに記憶させ、領域情報と動作必要情報との両方の情報が、ページごとに一括して不揮発性メモリから取得され、ページごとに一括して処理できるので、一々、これら領域情報および動作必要情報を別々に記憶したり処理したりすることが必要でなく、プログラム起動回路を簡単な構成で実現できる。
【００２７】
請求項７記載の発明は、前記不揮発性メモリは、前記各ページに、それぞれ、領域情報と共に当該不揮発性メモリの不良ブロックの情報を記憶し、前記領域情報選択手段は、前記不揮発性メモリの前記各ページから前記各ページのページデータをそれぞれ取得し、取得された各ページデータのうちで前記予め定められた個数のページデータが同一であることを判定することにより当該判定に係るページデータの領域情報を前記誤りの含まれない領域情報に選択し、前記ＤＭＡ転送制御手段は、前記領域情報選択手段により選択された当該領域情報に基づいて前記ＤＭＡ転送を行なうに際して、当該領域情報と共に前記ページデータに含まれた前記不良ブロックの情報の示すブロックのデータはＤＭＡ転送をさせない請求項５記載のプログラム起動回路である。
【００２８】
この構成であれば、不良ブロックの保持するデータはＤＭＡ転送がされず、不良ブロック以外の正常なデータのみがＤＭＡ転送されて、ＣＰＵに実行される。このため、不良ブロックの不正確で出鱈目なデータがＣＰＵに与えられて、ＣＰＵが暴走してしまうことを回避できる。また、不良ブロックをまたぐ領域にプログラムを記憶させて、かかる不良ブロックをまたぐ領域に記憶させたプログラムをＣＰＵに適切に実行させることができるようになり、大きなサイズのプログラムでもかかる不良ブロックをまたぐ領域に記憶させてＣＰＵに実行させることができる。
【００２９】
しかも、この構成であれば、上記した動作必要情報を不揮発性メモリに記憶させる場合と同様に、不良ブロックの情報が不揮発性メモリに複数、記憶されることに基づいて、確実に正しい不良ブロックの情報に基づいて処理が行なわれ、確実に、不良ブロックのデータが誤ってプログラムとしてＣＰＵに与えられてしまわず、ＣＰＵが暴走しないで、確実に安全にプログラムを実行するようにできる。また、一々、不良ブロックの情報と領域情報とを別々に記憶や処理する必要がなく、回路の構成を簡単にすることができる。
【００３０】
また、この構成であれば、不良ブロックの情報によって不良ブロックが特定され、この情報に基づいてかかる不良ブロックの不適切なデータがＣＰＵに誤ってプログラムとして与えられて、ＣＰＵが暴走してしまうことを防ぐことができるので、一々、別途、誤り訂正回路等を設けてかかる不良ブロックの保持するデータを訂正する必要が生じず、装置の構成を簡単にしたり、誤り訂正回路による誤り訂正処理の時間分だけの処理時間のロスをなくしてページデータの取得を高速化させたりすることができる。
【００３１】
請求項８記載の発明は、前記不揮発性メモリの前記プログラムが記憶される前記領域は、互いに離れた複数の部分領域からなり、前記領域情報は、前記各部分領域を示す情報がリンクデータによって連結されてなる請求項１〜７のいずれかに記載のプログラム起動回路である。
【００３２】
この構成にすれば、たとえば不良ブロックなど、何らかの理由でプログラムの記憶に用いたくない不揮発性メモリの領域があり、かかる領域を避けてプログラムを複数の互いに離れた部分領域に分けて記憶したい場合でも、単に各部分領域ごとに、当該各部分領域を示す情報を集めて、簡単に領域情報を構成できる。しかも、この構成であれば、プログラムのサイズを変更するなどのために、部分領域の個数を増減したいときでも、単に、部分領域を示す情報を増減すると共に、各リンク情報を連結させるリンクデータを調整するだけにより簡単に、増減をした適切な領域情報を構成することができる。
【００３３】
請求項９記載の発明は、前記領域情報選択手段は、前記不揮発性メモリから取得した前記複数の領域情報のうちに前記予め定められ個数の、互いに同一の領域情報が含まれない場合、前記領域情報の選択をせず、当該領域情報選択手段が領域情報を選択しなかった場合、報知部にユーザへの報知をさせる報知制御手段を備える請求項２記載のプログラム起動回路である。
【００３４】
この構成にすれば、領域情報選択手段により誤りの含まれない領域情報を選択できず、プログラムを実行できないときには、ユーザに報知がされるようにできる。
【００３５】
請求項１０記載の発明は、ＣＰＵと、当該ＣＰＵにより当該ＣＰＵが実行させるプログラムが読み出される実行用メモリと、前記ＣＰＵにプログラムを実行させるプログラム起動回路とを備え、前記プログラム起動回路は、前記ＣＰＵに実行されるプログラムと、当該プログラムが当該不揮発性メモリに記憶されている領域を示す領域情報とを記憶する不揮発性メモリを備え、当該不揮発性メモリは、当該領域情報を複数記憶し、前記不揮発性メモリから前記複数の領域情報を取得し、取得された当該各領域情報のうちから、当該各領域情報が記憶されていた前記不揮発性メモリのエラーによる誤りの含まれない領域情報を選択する領域情報選択手段と、前記領域情報選択手段により選択された領域情報により示される前記不揮発性メモリの領域から、前記実行用メモリへ前記プログラムをＤＭＡ転送させるＤＭＡ転送制御手段と、前記ＤＭＡ転送制御手段により前記実行用メモリへＤＭＡ転送された前記プログラムを前記ＣＰＵに実行させる実行制御手段とを備える電子機器である。
【００３６】
この構成にすれば、簡便な構成により、かつ、領域情報を自由に大きなサイズにできるようにしつつ、ＣＰＵを暴走させずに安全にプログラムを実行させる電子機器を実現することができる。電子機器には、たとえば画像形成装置が含まれる。
【発明の効果】
【００３７】
本発明によれば、不揮発性メモリにプログラムと共に当該プログラムが記憶される当該不揮発性メモリの領域を示す領域情報を記憶し、当該領域情報により示された領域のプログラムをＣＰＵに実行させるプログラム起動回路において、簡便な構成で回路を構成し、かつ、領域情報を自由に大きなサイズにできるようにしつつ、ＣＰＵを暴走させずに安全にプログラムが実行されるようにできる。
【発明を実施するための最良の形態】
【００３８】
以下、本発明の一実施形態に係る複写機１について図面を参照して説明する。
【００３９】
図１は、複写機１の全体構成を示す図である。
【００４０】
複写機１は、特許請求の範囲の記載における「電子機器」の一例である。
【００４１】
複写機１は、複写を行なう複写機であり、記録紙に画像を形成する画像形成装置として構成されている。複写機１は制御部１００を備える。
【００４２】
制御部１００は、複写機１の各部の動作を制御する情報処理装置であり、たとえば、複写機１に設けられたスキャナから読み取られた画像に画像処理を行ない、画像処理がされた画像に基づいて、複写機１内部に設けられた記録紙の搬送機構や、この記録紙の搬送機構によって搬送される記録紙へ感光体ドラム等によりトナー像を形成する画像形成部などの動作を制御して、スキャナで読み取られた画像を記録紙に形成させる。
【００４３】
制御部１００は、特許請求の範囲に記載した「プログラム起動回路」の一例をなす。
【００４４】
図２は、制御部１００の詳細な構成を示す図である。
【００４５】
制御部１００は、ＣＰＵ３００と、ＡＳＩＣ５００と、ＮＡＮＤ型フラッシュメモリ２００と、システムメモリ４００とを備える。
【００４６】
ＣＰＵ（Central Processing Unit）３００は、ＡＳＩＣ５００のシステムリセットコントローラ５１０からＣＰＵリセット信号が当該ＣＰＵ３００に入力され、そして、入力されるＣＰＵリセット信号が解除されるときに起動する。ＣＰＵ３００は、こうして起動すると、システムメモリ４００に記憶されたプログラムの各部に含まれる命令を順次、当該命令が記憶されたシステムメモリ４００の記憶域の各箇所から読み出し、読み出した命令を次々に実行していくことによって、当該プログラムを実行する。
【００４７】
ＣＰＵ３００は、特許請求の範囲の記載における「ＣＰＵ」の一例をなす。
【００４８】
システムメモリ４００は、ＣＰＵ３００によって用いられるプログラム実行用のメモリであり、たとえばＳＤＲＡＭ（Synchronous DRAM）によって構成される。システムメモリ４００は、ＣＰＵ３００から自由にアドレスを指定して、指定したアドレスに自由にＣＰＵ３００がアクセスできるものであり、ランダムアクセスできるメモリである。システムメモリ４００にプログラムが記憶されていれば、記憶されたプログラム各部の命令にＣＰＵ３００はランダムアクセスをして、各命令を順次、実行して、当該プログラムを実行することができる。
【００４９】
システムメモリ４００は、特許請求の範囲に記載した「実行用メモリ」の一例をなす。
【００５０】
ＮＡＮＤ型フラッシュメモリ２００は、ＮＡＮＤ型のフラッシュメモリである。
【００５１】
ＮＡＮＤ型フラッシュメモリ２００は、当該ＮＡＮＤ型フラッシュメモリ２００の記憶域の任意に好きなアドレスのデータへのアクセスをすること、つまりランダムアクセスをすることのできないメモリである。このため、プログラムがＮＡＮＤ型フラッシュメモリ２００に記憶されていても、記憶されたプログラムの各部にランダムアクセスをできないことから、ＣＰＵ３００はこれを読み出して実行することができない。ＮＡＮＤ型フラッシュメモリ２００に記憶されたプログラムは、ランダムアクセスができる上述したシステムメモリ４００に転送されなければ、ＣＰＵ３００からプログラムの各部に自由にアクセスすることにより、それを実行することはできない。
【００５２】
ここで、ＮＡＮＤ型フラッシュメモリ２００は、内部の記憶域でエラーが生じることにより、もともと記憶されていたデータが、誤った違う値に変わってしまうことがある。
【００５３】
なお、ＮＡＮＤ型フラッシュメモリ２００の記憶域は、複数のブロックに分かれており、そして、それら各ブロックは、それぞれ、複数のページに分かれている。
【００５４】
ＮＡＮＤ型フラッシュメモリ２００は、特許請求の範囲に記載した「不揮発性メモリ」の一例である。なお、ＮＡＮＤ型フラッシュメモリ２００に代えて、ＮＡＮＤ型ではない、ＮＯＲ型のフラッシュメモリを用いてもよいし、他の種類の不揮発性メモリを用いてもよい。
【００５５】
ＮＡＮＤ型フラッシュメモリ２００は、ファーストページデータ２１０と、ブートプログラム２２０とを記憶する。
【００５６】
ブートプログラム２２０は、ＣＰＵ３００が、自己の起動時に実行するべきプログラムであり、たとえば、このブートプログラム２２０がＣＰＵ３００に実行されることで、ＣＰＵ３００は、制御部１００に設けられたＮＡＮＤ型フラッシュメモリ２００あるいはハードディスク（図略）から、それらＮＡＮＤ型フラッシュメモリ２００あるいはハードディスクに記憶されたＯＳ（Operating System）をシステムメモリ４００へ転送させる。ＣＰＵ３００は、このブートプログラム２２０を実行することで、最低限の立ち上げ処理を実行し、かかる立ち上げ処理を実行し終えた後に、はじめて、システムメモリ４００に転送されたＯＳ等に基づいて、最終的にＣＰＵ３００が本来、行なうべきＯＳ等の処理を開始する。
【００５７】
ブートプログラム２２０は、ＮＡＮＤ型フラッシュメモリ２００に記憶されている状態では、上述の通り、ＣＰＵ３００から実行することができないが、ＮＡＮＤ型フラッシュメモリ２００からシステムメモリ４００へ、後述のようにしてブートコントローラ５２０（図２：後述）によってＤＭＡ転送されて、システムメモリ４００に記憶された状態になれば、その状態のブートプログラムは、ＣＰＵ３００から読み出して、実行することができるものとなる。
【００５８】
特許請求の範囲の記載における、「不揮発性メモリ」に記憶され、「ＣＰＵ」により実行される「プログラム」は、ブートプログラム２２０として一例が示される。
【００５９】
次に、ファーストページデータ２１０は、ブートプログラムと共に、ＮＡＮＤ型フラッシュメモリに記憶されるデータであり、ＮＡＮＤ型フラッシュメモリ２００のブロック（上述）のうちで、先頭のブロックから３つのブロックの、そのブロック内の先頭のページ（上述）にそれぞれ記憶される。
【００６０】
３つのブロックの各ファーストページデータ２１０は、互いに同一の内容を備える。ＮＡＮＤ型フラッシュメモリ２００は、はじめの３ブロックにおいて、当該ブロックのファーストページに同じ内容を記憶する。このため、ＮＡＮＤ型フラッシュメモリ２００でエラーによりファーストページデータ２１０のうちのいずれかの内容が壊れても、残りの２つの同じ内容のファーストページデータ２１０が、壊れたファーストページデータ２１０以外の他のブロックで当該内容を記憶していることとなる。
【００６１】
特許請求の範囲に記載した「互いに異なるページ」の「ページデータ」は、この実施形態において、かかる３つのファーストページデータ２１０として一例が示される。
【００６２】
ＡＳＩＣ５００（図２、図３）は、特定用途向け集積回路（Application Specific Integrated Circuit）である。
【００６３】
ＡＳＩＣ５００は、システムリセットコントローラ５１０と、ブートコントローラ５２０と、ファーストページバッファ５２５と、ＮＡＮＤ型フラッシュメモリコントローラ５３０と、システムメモリコントローラ５４０との機能ブロックが実現される。
【００６４】
なお、これらの機能ブロックの機能の少なくとも一部は、ＡＳＩＣ５００内部に設けられたＣＰＵにソフトウェアを実行させることによってＡＳＩＣ５００で実現するものとしてもよい。
【００６５】
システムリセットコントローラ５１０は、制御部１００の起動時に、制御部１００各部の起動処理の動作タイミングを制御する。
【００６６】
システムリセットコントローラ５１０は、ＡＳＩＣ５００の外部からＡＳＩＣ５００へと入力されるシステムリセット信号を取得し、このシステムリセット信号が解除されたときに、制御部１００の各部に起動処理（リセット処理）を開始させる。なお、システムリセットコントローラ５１０は、詳しくは、システムリセット信号が解除され、かつ、予め定められたＡＳＩＣ５００内部の諸条件が整ったときに、起動処理の開始をさせる。
【００６７】
そして、システムリセットコントローラ５１０は、ＡＳＩＣ５００が起動時処理を開始した後、後で詳しく説明するようにして、ＡＳＩＣ５００の有するブートコントローラ５２０によりＮＡＮＤ型フラッシュメモリ２００のブートプログラム２２０がシステムメモリ４００へＤＭＡ転送され終わったときに、ＣＰＵ３００へのリセットを解除し、つまり、システムリセットコントローラ５１０からＣＰＵ３００へのＣＰＵリセット信号（上述）を解除することにより、システムメモリ４００にＤＭＡ転送されたブートプログラム２２０をＣＰＵ３００に実行開始させる。
【００６８】
次に、システムメモリコントローラ５４０は、システムメモリ４００の動作を制御するコントローラである。
【００６９】
システムメモリコントローラ５４０は、システムメモリ４００の制御をするのに必要な設定情報が設定される設定レジスタ（図略）を備える。システムメモリコントローラ５４０は、この設定レジスタに適切な設定情報が設定されていると、システムメモリ４００にこの設定情報に合わせた設定を行ない、制御信号を入力することにより、システムメモリ４００を適切に動作させる。なお、この設定情報には、たとえば、システムメモリ４００の記憶領域のサイズ情報や、ＣＡＳレイテンシの情報などが含まれる。
【００７０】
システムメモリコントローラ５４０は、設定レジスタに設定情報が設定されると、自ら及び自らが動作制御を行なうシステムメモリ４００を初期化する。
【００７１】
次に、ＮＡＮＤ型フラッシュメモリコントローラ５３０は、ＮＡＮＤ型フラッシュメモリ２００の動作を制御する。
【００７２】
ブートコントローラ５２０は、ＮＡＮＤ型フラッシュメモリ２００から、ＮＡＮＤ型フラッシュメモリコントローラ５３０を通じて、上述した３つのファーストページデータ２１０を取得し、取得されたファーストページデータ２１０に基づいて、同じくＮＡＮＤ型フラッシュメモリ２００に記憶されたブートプログラム２２０が記憶された領域を特定して、特定されたＮＡＮＤ型フラッシュメモリの領域に記憶されたデータをシステムメモリ４００へＤＭＡ転送させる。ブートコントローラ５２０は、ＮＡＮＤ型フラッシュメモリコントローラ５３０とシステムメモリコントローラ５４０との両者を用いてこのＤＭＡ転送を行なわせる。
【００７３】
ファーストページバッファ５２５は、ブートコントローラ５２０により用いられる、データを一時記憶するバッファであり、ブートコントローラ５２０により、ＮＡＮＤ型フラッシュメモリ２００から当該ブートコントローラ５２０に取得された上述した３つのファーストページデータ２１０の一時記憶に用いられる。
【００７４】
図３は、ブートコントローラ５２０（図２参照）に実現される機能ブロックの機能ブロック図と、それら各機能ブロックが生じさせる情報の流れを示した図である。なお、図３では、図示の便宜上から、情報の流れが分かり易いように、ＮＡＮＤ型フラッシュメモリをＡＳＩＣ５００の左側に、先の図２の場合とは逆側に示されている。
【００７５】
ブートコントローラ５２０は、ファーストページ選択部５２１と、ＤＭＡ転送制御部５２２と、ＣＰＵ起動部５２３とを備える。
【００７６】
これらの機能ブロックは、それぞれ、特許請求の範囲に記載した「領域情報選択手段」と、「ＤＭＡ転送制御手段」と、「実行制御手段」との一例となる。
【００７７】
ファーストページ選択部５２１は、報知部５２１ａを備える。
【００７８】
報知部５２１ａは、特許請求の範囲の記載における「報知制御手段」の一例である。
【００７９】
ファーストページ選択部５２１は、ＮＡＮＤ型フラッシュメモリコントローラ５３０に要求を行なうことにより、ＮＡＮＤ型フラッシュメモリ２００に記憶された上述した各ファーストページデータ２１０を当該ファーストページ選択部５２１に取得する。ファーストページ選択部５２１は、取得されたファーストーページデータ２１０を、ファーストページバッファ５２５に一時的に保存する。
【００８０】
そして、ファーストページ選択部５２１は、こうしてＮＡＮＤ型フラッシュメモリ２００から取得されたファーストページデータ２１０のうちから、ＮＡＮＤ型フラッシュメモリ２００のエラーにより誤ったものとなっているファーストページデータ２１０ではない、誤りの含まれない正しいファーストページデータ２１０を選択する。ファーストページ選択部５２１がこの選択を具体的にどのように行なうかは、図８のフローチャートを参照して、後で詳しく説明する（図８のステップＳ−Ｓｅｌｅｃｔの処理）。
【００８１】
報知部５２１ａは、ファーストページ選択部５２１が、誤りのないファーストページデータの選択をできないときに、複写機１の備えるブザーやランプなどの報知実行部にユーザへの報知をさせる。
【００８２】
なお、報知部５２１ａが報知をさせるブザーやランプなどの報知実行部は、特許請求の範囲の記載における「報知部」の一例をなす。
【００８３】
次に、ＤＭＡ転送制御部５２２は、ファーストページ選択部５２１により選択されたファーストページデータ２１０（以下、選択ファーストページと呼ぶ）に基づいて、当該選択ファーストページデータにより特定されるＮＡＮＤ型フラッシュメモリ２００の領域に格納されたブートプログラム２２０を、ＮＡＮＤ型フラッシュメモリコントローラ５３０およびシステムメモリコントローラ５４０（図２）を動作させることにより、システムメモリ４００へＤＭＡ転送させる。
【００８４】
ＤＭＡ転送制御部５２２は、具体的には、このＤＭＡ転送を次のようにして行なう。すなわち、ＤＭＡ転送制御部５２２は、ＮＡＮＤ型フラッシュメモリコントローラ５３０（図２）に対して、ＮＡＮＤ型フラッシュメモリ２００からデータを取得して、取得されたデータをＡＳＩＣ５００の内部データバス（図２参照）を介してシステムメモリコントローラ５４０へ送信することを要求し、他方、システムメモリコントローラ５４０に対しては、こうして内部データバスを通じて当該システムメモリコントローラ５４０に送信されるデータを取得し、取得されるデータをシステムメモリ４００へ書き込むことを要求する。ＤＭＡ転送制御部５２２は、これらの各要求をそれぞれＡＳＩＣ５００内部の制御信号線（図２参照）を通じて、ＮＡＮＤ型フラッシュメモリコントローラ５３０およびシステムメモリコントローラ５４０へ送信する。
【００８５】
ＤＭＡ転送制御部５２２は、こうしたデータ転送により、ＮＡＮＤ型フラッシュメモリ２００のブートプログラム２２０を、システムメモリ４００へＤＭＡ転送させる。こうして、ブートコントローラ５２０に中継されることなく、直接、ＮＡＮＤ型フラッシュメモリコントローラ５３０およびシステムメモリコントローラ５４０へデータ転送がされることにより、高速にブートプログラム２２０が転送される。
【００８６】
図３に戻って、ＤＭＡ転送制御部５２２が備える設定部５２２ｓは、このＤＭＡ転送がされるに際して、システムメモリコントローラ５４０の上述した設定レジスタに設定情報を設定し、これによりシステムメモリコントローラ５４０およびシステムメモリ４００を初期化させる。
【００８７】
最後に、ＣＰＵ起動部５２３は、ＤＭＡ転送制御部５２２により行なわれる上記のＤＭＡ転送が完了した場合に、システムリセットコントローラ５１０がＣＰＵ３００へ出力するＣＰＵリセット信号を当該システムリセットコントローラ５１０に解除させることによって、上述のＤＭＡ転送によりシステムメモリ４００へ書き込まれたブートプログラム２２０をＣＰＵ３００に実行開始させる。
【００８８】
続けて、ＤＭＡ転送制御部５２２によるＤＭＡ転送等の処理が、どのようにしてファーストページ選択部５２１に選択された選択ファーストページに基づいて、行なわれるのかを説明する。
【００８９】
図３では、ファーストページデータ２１０（図２、図３参照）がそれぞれディスクリプタ２１１を備えることを示している。
【００９０】
なお、図３では、図２に示した３つのファーストページデータ２１０を、それぞれ、ファーストページデータ２１０ａ，２１０ｂ，２１０ｃとして区別して示している。
【００９１】
３つのファーストページデータ２１０ａ，２１０ｂ，２１０ｃは、それぞれ、ディスクリプタ２１１ａ，２１１ｂ，２１１ｃを備える。前述の通りファーストページデータ２１０ａ，２１０ｂ，２１０ｃは同一の内容であるので、これら、ファーストページデータ２１０ａ〜２１０ｃに含まれるディスクリプタ２１１ａ〜２１１ｃも同じ内容を有する。このディスクリプタ２１１ａ〜２１１ｃが、それぞれ、ＮＡＮＤ型フラッシュメモリ２００の記憶領域におけるブートプログラム２２０（図２、図３参照）の位置を特定する。
【００９２】
図４は、ディスクリプタ２１１（２１１ａ〜２１１ｃ）の詳細な構成を示す図である。
【００９３】
３つのファーストページデータ２１０（２１０ａ〜２１０ｃ：図３）にそれぞれ含まれるディスクリプタ２１１（２１１ａ〜２１１ｃ：図３）は、それぞれ、図４に示す通り、領域情報２１１Ｆと、リンク情報２１１Ｌとを備える。
【００９４】
また、図５は、領域情報２１１Ｆにより、ＮＡＮＤ型フラッシュメモリ２００におけるブートプログラム２２０の記憶された領域２２０Ｒが特定されることを示す図である。
【００９５】
領域情報２１１Ｆは、ブートプログラム２２０の領域２２０Ｒの先頭アドレス２１１Ｆａと、当該領域２２０Ｒを構成するブロックの数を示す連続ブロック数２１１Ｆｎとを記憶する。前者の先頭アドレス２１１Ｆａは、図５において、ブートプログラム２２０が記憶されている領域２２０Ｒ（図５）の先頭に付された黒丸の位置により示され、他方の、後者の連続ブロック数２１１Ｆｎは、同じく図５において当該黒丸から領域２２０Ｒの長さの分だけ伸ばされた実線の矢印の長さによって示される。領域情報２１１Ｆは、これら先頭アドレス２１１Ｆａおよびブロック長２１１Ｆｎによって、ＮＡＮＤ型フラッシュメモリ２００におけるブートプログラム２２０の記憶された領域２２０Ｒを特定する。
【００９６】
なお、上記の領域情報２１１Ｆは、特許請求の範囲に記載した「領域情報」の一例をなす。ただし、後で図６、図７を参照して説明するように、ファーストページデータ２１０には複数のディスクリプタ２１１を備えることができ、このときにはファーストページデータ２１０に複数の領域情報２１１Ｆが含まれる。この場合には、それら複数の領域情報２１１Ｆのうちの１つ１つの領域情報２１１Ｆではなく、複数の領域情報２１１Ｆの全体により、特許請求の範囲に記載した「領域情報」の一例が構成される。この点については、後で図６、７の説明のなかで詳しく述べる。
【００９７】
図５に示す通り、ファーストページデータ２１０は、ディスクリプタ２１１と共に、システムメモリ設定情報２１２と、不良ブロック情報２１３とを含む。
【００９８】
不良ブロック情報２１３は、上述した、ブートプログラム２２０の記憶された領域２２０Ｒの内部に含まれる不良ブロックＥｒｒＢｌｋの位置を特定する。
【００９９】
不良ブロック情報２１３は、特許請求の範囲に記載した「不良ブロックの情報」の一例である。
【０１００】
先述した領域情報２１１Ｆにより特定される領域２２０Ｒは、当該領域２２０Ｒのうちで、かかる不良ブロックＥｒｒＢｌｋを除いた正常部分２２０Ｒｘのみによって、ブートプログラム２２０のデータを記憶し、予め領域２２０Ｒには、不良ブロックＥｒｒＢｌｋを避けて、正常部分２２０Ｒｘのみにブートプログラム２２０のデータが記憶されている。
【０１０１】
また、他方のシステムメモリ設定情報２１２は、図３を参照して説明したシステムメモリコントローラ５４０の設定レジスタに設定する設定情報を記憶する。
【０１０２】
図３に示したＤＭＡ転送制御部５２２は、ファーストページ選択部５２１により選択された、誤りのないファーストページデータ２１０（選択ファーストページデータ：先述）に含まれる、以上に説明したディスクリプタ２１１、不良ブロック情報２１３、およびシステムメモリ設定情報２１２を用いて、先述したＤＭＡ転送の制御をする。
【０１０３】
ＤＭＡ転送制御部５２２は、選択ファーストページのディスクリプタ２１１に含まれる領域情報２１１Ｆを、ＡＳＩＣ５００内部の制御信号線を通じてＮＡＮＤ型フラッシュメモリコントローラ５３０へ入力することにより、ＮＡＮＤ型フラッシュメモリコントローラ５３０により、当該領域情報２１１Ｆの示すＮＡＮＤ型フラッシュメモリ２００内の領域２２０Ｒに格納されたブートプログラム２２０を、当該ＮＡＮＤ型フラッシュメモリコントローラ５３０を通じて、ＡＳＩＣ５００内部のデータバスを通じてシステムメモリコントローラ５４０へ転送させる（図３参照）。
【０１０４】
ただし、ＤＭＡ転送制御部５２２は、選択ファーストページに上記した領域情報２１１Ｆ（図５）と共に含まれる不良ブロック情報２１３に基づき、こうして開始させたＤＭＡ転送において、当該不良ブロック情報２１３により示される、領域情報２１１Ｆが特定する領域２２０Ｒ（図５参照）のうちで不良ブロックＥｒｒＢｌｋのデータは転送がされないように、２つのメモリコントローラ５３０，５４０の制御を行なう。
【０１０５】
なお、ファーストページデータ２１０は、不良ブロック情報２１３を含まないものとしてもよい。そして、領域２２０Ｒとしては、不良ブロックＥｒｒＢｌｋが含まれない領域を選ぶこととし、かかる領域２２０Ｒにブートプログラム２２０を記憶する。こうすれば、ファーストページデータ２１０を、不良ブロック情報２１３がない分だけ、小さなサイズにできる。また、ＤＭＡ転送制御部５２２によるＤＭＡ転送では、不良ブロックＥｒｒＢｌｋのデータ転送をさせない制御をする必要がなく、ＤＭＡ転送の制御を行なうＤＭＡ転送制御部５２２の構成を簡単にすることができる。
【０１０６】
また、ＤＭＡ転送制御部５２２は、かかるＤＭＡ転送に先立ち、自己の備える設定部５２２ｓ（図３）により、選択ファーストページに上記した領域情報２１１Ｆ等（図５）と共に含まれるシステムメモリ設定情報２１２（図５）を、システムメモリコントローラ５４０（図３）の設定レジスタへ設定させる。
【０１０７】
ここで、ファーストページ選択部５２１は、先述の通り、誤りの含まれない正しいファーストページ２１０を、選択ファーストページに選択している。このため、かかる選択ファーストページの一部である領域情報２１１Ｆ、不良ブロック情報２１３、設定情報２１２もまた、誤りの含まれない正しいものである。ＤＭＡ転送制御部５２２は、かかる領域情報２１１Ｆにより確実に正しく特定された、ブートプログラム２２０の記憶される領域２２０Ｒ（図５参照）における、不良ブロック情報２１３により同じく確実に正しく特定される不良ブロックＥｒｒＢｌｋを除いた領域のデータを、ブートプログラム２２０のデータとしてＤＭＡ転送させることができ、確実に適切な領域のデータをＤＭＡ転送して、誤りのない正しいブートプログラム２２０そのものをＤＭＡ転送させる。
【０１０８】
なお、ディスクリプタ２１１は、このＤＭＡ転送においてブートプログラム２２０が書き込まれるべきシステムメモリ４００上の領域を特定する書込先アドレス情報２１１Ｔ（図４）を含むものとしてもよい。そして、ＤＭＡ転送制御部５２２は、選択ファーストページのディスクリプタ２１１（図４参照）に含まれるこの書込先アドレス情報２１１Ｔを、ＤＭＡ転送に際して、システムメモリコントローラ５４０に指定し、システムメモリコントローラ５４０に指定したシステムメモリ４００のアドレスにブートプログラム２２０を書き込ませることとする。そして、このときには、ＣＰＵ起動部５２３は、当該書込先アドレス情報２１１Ｔ（図４）をＤＭＡ転送制御部５２２から取得して、取得した書込先アドレス情報２１１Ｔが示すシステムメモリ４００上の領域をＣＰＵ３００に、ブートプログラム２２０の記憶された領域として示すことにより、示した領域に格納されたブートプログラム２２０をＣＰＵ３００に実行をさせるものとする。
【０１０９】
このようにすれば、システムメモリ４００の記憶領域各部の状態等の事情に応じて、柔軟に、ブートプログラム２２０を記憶させるシステムメモリ４００の領域を、当該領域として３つのファーストページデータ２１０（２１０ａ〜２１０ｃ）に含まれる書込先アドレス情報２１１Ｔの特定する領域を変化させることにより、自由に変更できる。
【０１１０】
図６は、複数のディスクリプタ２１１Ｓがあり、ブートプログラム２２０が複数の部分領域２２０ＲＡに分けて記憶してあることを示す図である。
【０１１１】
これまでの説明では、ファーストページデータ２１０にディスクリプタ２１１が１個のみ含まれ、ＮＡＮＤ型フラッシュメモリ２００には、その１つのディスクリプタ２１１に対応する領域２２０Ｒのみがある場合を説明したが（図５参照）、図５のディスクリプタ群２１１Ｓのように、ファーストページデータ２１０には、複数のディスクリプタ２１１（２１１Ａ〜２１１Ｏ）を含めることができる。
【０１１２】
図７は、複数のディスクリプタ２１１Ａ〜２１１Ｏが、それぞれ、各ディスクリプタに含まれる領域情報２１１ＦＡ〜２１１ＦＯにより、複数の領域２２０ＲＡ〜２２０ＲＯを特定することを示した図である。
【０１１３】
ディスクリプタ群２１１Ｓは、ファーストページデータ２１０の一部であり、図３〜５を参照してこれまで説明してきたディスクリプタ２１１を１個以上、図７に示すように備えてなる。
【０１１４】
これまでは、かかるディスクリプタ群２１１Ｓに、１個のディスクリプタのみを含む、最も簡単な場合を取り上げて、説明を行なってきた。
【０１１５】
ディスクリプタ群２１１Ｓに含まれるディスクリプタ２１１Ａ〜２１１Ｏ（２１１：図３〜５）は、各ディスクリプタ２１１Ａ〜２１１Ｏの領域情報２１１Ｆにより特定される領域２２０ＲＡ〜２２０ＲＯ（２２０Ｒ：図５〜図７）が交わった部分をもたない互いに離れた、独立した領域となっている。
【０１１６】
以下、これらの領域２２０ＲＡ〜２２０ＲＯ（２２０Ｒ：図５〜図７）のことを、これらの領域２２０ＲＡ〜２２０ＲＯの全てからなる全体領域２２０Ｒａｌｌに対して部分を構成する部分領域（２２０ＲＡ〜２２０ＲＯ）と呼ぶ。
【０１１７】
ＮＡＮＤ型フラッシュメモリ２００には、かかる全体領域２２０Ｒａｌｌにわたってブートプログラム２２０が記憶され、つまり、ブートプログラム２２０は複数の部分に分割されて、かかる全体領域２２０Ｒａｌｌを構成する各部分領域２２０ＲＡ〜２２０ＲＯに分けて記憶される。
【０１１８】
なお、各部分領域２２０ＲＡ〜２２０ＲＯの内部に含まれる、図５に示した不良ブロックＥｒｒＢｌｋの部分は避けて、かかる不良ブロックＥｒｒＢｌｋの部分以外の部分に記憶は行なわれる。この点は、図５を参照して先述した通りである。
【０１１９】
なお、ファーストページ２１０に含まれる全てのディスクリプタ２１１Ａ〜２１１Ｏの、全ての部分領域２２０ＲＡ〜２２０ＲＯの全体によって、特許請求の範囲の記載に記載された「不揮発性メモリ」の「プログラム」が記憶される「領域」の一例が構成される。
【０１２０】
また、ファーストページ２１０に含まれる全てのディスクリプタ２１１Ａ〜２１１Ｏの、全ての部分領域２２０ＲＡ〜２２０ＲＯの全体が、特許請求の範囲の記載における、「領域情報」の一例を構成する。
【０１２１】
ディスクリプタ２１１Ａ〜２１１Ｏ（２１１：図４参照）は、先に説明した領域情報２１１Ｆ（２１１ＦＡ〜２１１ＦＯ）等と共に、リンク情報２１１ＬＡ〜２１１ＬＯ（２１１Ｌ）を備える。
【０１２２】
リンク情報２１１ＬＡ〜２１１ＬＯは、それぞれ、当該リンク情報２１１ＬＡ〜２１１ＬＯを備えるディスクリプタ２１１Ａ〜２１１Ｏ以外の他のディスクリプタ（２１１Ｂ〜２１１Ｏ等）うちの１つの、ＮＡＮＤ型フラッシュメモリ２００の記憶領域におけるアドレスを特定する情報（リンク）であり、当該リンク情報を備えるディスクリプタ２１１Ａ〜２１１Ｏを、当該リンク情報がアドレスを特定する他のディスクリプタ（２１１Ｂ〜２１１Ｏ等）へ連結する。
【０１２３】
なお、リンク情報２１１ＬＡ〜２１１ＬＯ（図７：図４の２１１Ｌ）は、それぞれ、特許請求の範囲の記載における「リンクデータ」の一例を構成する。
【０１２４】
そして、ディスクリプタ２１１Ａ〜２１１Ｏは、一列に順序を付けてこのリンク情報２１１ＬＡ〜２１１ＬＯにより連結され、たとえば図７の場合には、ディスクリプタ２１１Ａ〜２１１Ｏの順序に連結されている場合を例示しており、列における各ディスクリプタ２１１Ａ〜２１１Ｏのリンク情報２１１ＬＡ〜２１１ＬＯはそれぞれ、当該列における当ディスクリプタ２１１Ａ〜２１１Ｏの次のディスクリプタ（図７の場合ではディスクリプタ２１１Ｂ〜２１１Ｏ）を特定するものが設定される（図７のリンク（１）〜（１５））。
【０１２５】
ただし、かかるディスクリプタ（２１１Ａ〜２１１Ｏ）の列の順序で最後の順序のディスクリプタ（図７の場合においてはディスクリプタ２１１Ｏ）は、そのディスクリプタ（２１１Ｏ）の次のディスクリプタがなく、そのディスクリプタ（２１１Ｏ）が最後なので、次のディスクリプタのアドレスではなく、そのディスクリプタ（２１１Ｏ）が最後のディスクリプタであることを示す特別な情報を備える（図７のリンク（１６）を参照）。
【０１２６】
なお、かかるリンク情報２１１ＬＡ〜２１１ＬＯは、当該リンク情報２１１ＬＡ〜２１１ＬＯが２つの部分を備え、一方の部分には上述のリンクが記憶されると共に、他方の部分には、当該リンク情報を備えるディスクリプタ２１１Ａ〜２１１Ｏが最後か否かを示すフラグが記憶されるものとしてもよい。こうすれば、ブートプログラム２２０の大きさが変更される場合において、複数の部分領域２２０ＲＡ〜２２０ＲＯからなる列の先頭または最後尾（図７の場合、それぞれ部分領域２１１Ａおよび２１１Ｏ）を、全体領域２２０Ｒａｌｌから除いたり、除いたものを元に戻したりして、全体領域２２０Ｒａｌｌの大きさを変えるに際して、単にこのフラグがオフになっていたのをオンに戻すだけで、リンク情報はもともと当該フラグの部分領域が除かれる前に設定されていた情報をそのままにして、当該部分領域を元に戻せるようになり、簡単に全体領域２２０Ｒａｌｌの大きさを調節し、ひいては、プログラム２２０の大きさの変更を簡単に行なうことができる。
【０１２７】
ここで、もしもディスクリプタ群２１１Ｓの先頭のディスクリプタ（図７の場合におけるディスクリプタ２１１Ａ）において、当該ディスクリプタ（２１１Ａ）のリンク情報（２１１ＬＡ）がこの特別な情報を備える場合、線形リストデータ２１１Ｓは１つのディスクリプタ（２１１ＬＡ）のみを備えるものとなる。図１〜図５を参照したこれまでの説明では、かかる場合を取り上げて、１つ１つのディスクリプタ２１１の構成等を説明した。
【０１２８】
図３に示したＤＭＡ転送制御部５２２は、ＤＭＡ転送をさせるに際して、詳細には、ファーストページ選択部５２１により選択された選択ファーストページ（上述）の有するディスクリプタ２１１Ａ〜２１１Ｏごとに、当該ディスクリプタ２１１Ａ〜２１１Ｏのリンク情報２１１ＬＡ〜２１１ＬＯにより示される当該ディスクリプタ２１１Ａ〜２１１Ｏの列の順序で、各ディスクリプタ２１１Ａ〜２１１Ｏの領域情報２１１ＦＡ〜２１１ＦＯの示す部分領域２２０ＲＡ〜２２０ＲＯのデータの転送を実行させる。ここで、ＤＭＡ転送制御部５２２は、各データの転送先のシステムメモリ４００上のアドレスは、当該データに係るディスクリプタ２１１Ａ〜２１１Ｏの書込先アドレス情報２１１Ｔにより示されるアドレスとする。
【０１２９】
なお、たとえば１個のディスクリプタ２１１（２１１Ａ〜２１１Ｏ）のサイズは１６Byteであり、ファーストページデータ２１０には、かかるディスクリプタ２１１（２１１Ａ〜２１１Ｏ）を記憶するためのディスクリプタ記憶用領域を２５６（Byte）設ける。すると、全体で２５６（Byte）のディスクリプタ記憶用領域に、１６Byteのディスクリプタ２１１（２１１Ａ〜２１１Ｏ）を複数、記憶するのであるから、２５６（Byte）÷１６（Byte／１個）＝１６（個）だけのディスクリプタ２１１（２１１Ａ〜２１１Ｏ）がファーストページデータ２１０に記憶される。
【０１３０】
また、図６に示した不良ブロック情報２１３は、たとえば、１２８Byteのデータサイズである。そして、不良ブロックＥｒｒＢｌｋを特定するのに、不良ブロック１個につき、不良ブロックのアドレス１個分の２Byteのデータが必要だとして、不良ブロック情報２１３には、１２８（Byte）÷２（Byte／１個）＝６４（個）の不良ブロックのアドレスを記憶できる。
【０１３１】
なお、この構成であれば、ファーストページデータ２１０には、不良ブロック情報２１３を記憶する領域として、ＮＡＮＤ型フラッシュメモリ２００の全ての記憶領域に含まれる全ての不良ブロックの位置を記憶するだけの全領域用のサイズまでは不要であり、ブートプログラム２２０が記憶される領域２２０Ｒａｌｌ（図７）に含まれる不良ブロックの位置を記憶する使用領域用のサイズで足り、不良ブロック情報２１３を記憶するＮＡＮＤ型フラッシュメモリ２００のサイズが小さくともよく、小さなサイズのＮＡＮＤ型フラッシュメモリ２００でシステムを構成できる。
【０１３２】
ファーストページデータ２１０（２１０ａ〜２１０ｃ：図３，図４参照）は、ＮＡＮＤ型フラッシュメモリ２００の初めての３ブロックの、それぞれのブロックにおける初めのページのデータであるものとしたが、かかる場合に限定されず、各ブロックの初めの２以上のページのデータとしてファーストページデータ２１０（２１０ａ〜２１０ｃ）を構成してもよい。こうすれば、ディスクリプタ２１１等、ファーストページデータ２１０（２１０ａ〜２１０ｃ）に記憶させるデータを大きなサイズにでき、ひいては、たとえば、多数のディスクリプタ２１１Ａ〜２１１Ｏ（図７参照）や、大きなサイズの不良ブロック情報２１３を用いることにより、ブートプログラム２２０を記憶する領域２２０Ｒａｌｌに複雑な領域を用いることができる。
【０１３３】
図８は、複写機１各部が働く順序を示したフローチャートである。
【０１３４】
ステップＳ０１では、システムリセットコントローラ５１０（図２）が、当該システムリセットコントローラ５１０が設けられたＡＳＩＣ５００の外部から、システムリセット信号を取得する。
【０１３５】
ステップＳ０２では、このシステムリセットコントローラ５１０が、先にステップＳ０１でシステムリセット信号を取得したことから、ＡＳＩＣ５００の各機能ブロックに、ＡＳＩＣ５００内部の起動時処理（リセット処理）を開始させる。
【０１３６】
以下、ステップＳ０３以降の処理は、システムリセットコントローラ５１０が、ＡＳＩＣ５００に当該ＡＳＩＣ５００内部の起動処理をこのステップＳ０２で開始させることによってブートコントローラ５２０等によって実行される処理である。
【０１３７】
ステップＳ−ｓｅｌｅｃｔでは、ブートコントローラ５２０において、ファーストページ選択部５２１（図３）が、ＮＡＮＤ型フラッシュメモリ２００から当該ＮＡＮＤ型フラッシュメモリ２００に記憶された３つのファーストページデータ２１０（２１０ａ〜２１０ｃ：図３等）を取得し、取得されたファーストページデータ２１０（２１０ａ〜２１０ｃ）のうちから、上述した、ＮＡＮＤ型フラッシュメモリ２００のエラーによる誤りの含まれていないファーストページデータを選択する処理、すなわち選択ファーストページデータを選択する処理を行なう。ファーストページ選択部５２１は、このステップＳ−ｓｅｌｅｃｔの処理をする機能を備え、この機能によって、正しいファーストページデータを選択する。
【０１３８】
まず、ステップＳ０３では、ファーストページ選択部５２１は、３つのファーストページデータ２１０（２１０ａ〜２１０ｃ）のうちで、ＮＡＮＤ型フラッシュメモリ２００における記憶位置が先頭のブロックのファーストページデータ（以下、第一のファーストページデータ）を、当該ＮＡＮＤ型フラッシュメモリ２００から取得する（１ｓｔページリード（ａ））。
【０１３９】
そして、ステップＳ０４では、ファーストページ選択部５２１は、ＮＡＮＤ型フラッシュメモリ２００における記憶位置が２番目のブロックのファーストページデータ（以下、第二のファーストページデータ）を、ＮＡＮＤ型フラッシュメモリ２００から取得する（１ｓｔページリード（ｂ））。
【０１４０】
ステップＳ０５では、ファーストページ選択部５２１は、こうしてステップＳ０３およびＳ０４で取得された第一および第二の２つのファーストページデータが同一であるか否かを判定する。
【０１４１】
ファーストページ選択部５２１は、このステップＳ０５で、２つのファーストページデータが同一と判定されると、それら２つのファーストページデータの一方を選択ファーストページとして選択する（ステップＳ０５：ＹＥＳ）。ここで、２つのファーストページデータは同一の内容なので、ファーストページ選択部５２１は、このステップＳ０５で、いずれのファーストページデータを選択するものとしてもよい。
【０１４２】
ステップＳ０５ａでは、ファーストページ選択部５２１が、先のステップＳ０５で、ステップＳ０３〜Ｓ０４で取得された第一および第二の２つのファーストページデータが同一ではないと判定された場合に（ステップＳ０５：ＮＯ）、ＮＡＮＤ型フラッシュメモリ２００に記憶されたこれら第一および第二のファーストページとは別の、残りのもう１つのファーストページ、すなわちＮＡＮＤ型フラッシュメモリ２００の先頭から三番目のブロックのファーストページデータ（以下、第３のファーストページデータ）をＮＡＮＤ型フラッシュメモリ２００から取得する。
【０１４３】
ステップＳ０５ｂでは、ファーストページ選択部５２１は、ステップＳ０５ａで取得された第三のファーストページデータと、先にステップＳ０３で取得した第一および第二のファーストページデータとが同一であるか否かをそれぞれ判定する。
【０１４４】
このとき、より詳細には、ファーストページ選択部５２１は、まず、第一および第二の２つのファーストページデータのうちの一方との対比を行なって、この対比により当該一方のファーストページデータが第三のファーストページデータと同一と判定されると、当該一方のファーストページデータまたは当該一方のファーストページデータと同じ内容である第三のファーストページデータのいずれかを選択ファーストページデータに選択する。このときもいずれが選択されるものとしてもよい。
【０１４５】
そして、ファーストページ選択部５２１は、当該同一であることの判定ができなかった場合には、上述した第一および第二の２つのファーストページデータのうちの一方ではない方の、他方のファーストページデータと第三のファーストページデータが同一か否かを判定する。
【０１４６】
なお、このステップＳ０５ｂにおいても、ファーストページ選択部５２１は、互いに同一であることが判定された２つのファーストページデータのうちで、いずれを選択ファーストページに選択するものとしてもよい。
【０１４７】
ファーストページ選択部５２１は、こうした処理の結果、第一および第二のいずれのファーストページデータも、第三のファーストページデータと異なることが判定された場合（ステップＳ０５ｂ：ＮＯ）、この図８に示す、複写機１が起動する処理を中止させる。このときには、前述した、システムメモリ４００へのＯＳの転送も行なわれず、複写機１は起動しない。
【０１４８】
ただし、かかる場合（ステップＳ０５ｂ：ＮＯ）、ステップＳ０５ｃで、ファーストページ選択部５２１の備える報知部５２１a（図３）が、ブザー等によりユーザへの報知をさせる。
【０１４９】
なお、報知部５２１ａは、ＣＰＵ３００を用いずにこの報知をさせるものとし、たとえばブザー等の報知機構に直接、制御信号を出力することによって、報知をさせるものとする。こうすることにより、ファーストページ選択部５２１が誤りのないファーストページデータの選択をできず（ステップＳ０５ｂ：ＮＯ）、ＣＰＵ３００にブートプログラム２２０が実行されていないにも拘わらず、代用のプログラムとしてブートプログラム２２０以外の何らかのプログラムをＣＰＵ３００に実行させること等が必要なく、簡便に、報知を行なうことができる。
【０１５０】
ファーストページ選択部５２１は、このようなステップＳ−ｓｅｌｅｃｔの処理を行なう機能を備え、ステップＳ−ｓｅｌｅｃｔで、この機能により適切なファーストページデータ２１０を選択する。
【０１５１】
ここで、ＮＡＮＤ型フラッシュメモリ２００に記憶された３つのファーストページデータ２１０ａ〜２１０ｃ（図１、２等）のうち、２つのファーストページデータが同じ内容であれば、それらのファーストページデータは、ＮＡＮＤ型フラッシュメモリ２００のエラーによって誤りが混入していないファーストページデータとなる。なぜならば、２つのファーストページデータの同じ箇所に、同じ誤りが生じることは、理論的にはあり得るものの、著しく稀にしか生じず、現実的にはあり得ないので、２つのファーストページデータが同じ内容であると、両者にはどの箇所にも誤りが入っていない、つまり、２つのファーストページデータは誤りのない正しいファーストページであることにより同一であるものとみなせる。ステップＳ−ｓｅｌｅｃｔでファーストページ選択部５２１により選択される選択ファーストページは、かかる２つの同一のファーストページデータの１つであるので、誤りのない正しいファーストページデータとなる。
【０１５２】
なお、図４で示したディスクリプタ２１１の予約欄２１１Ｒは、ディスクリプタ２１１の空き領域であり、有意なデータではない。つまり、ディスクリプタ２１１を処理する情報処理に影響を与えるものではい。ファーストページ選択部５２１は、上述したステップＳ０５およびステップＳ０５ｂの処理で、かかる予約欄２１１Ｒなどの、ＮＡＮＤ型フラッシュメモリ２００から取得したファーストページデータに含まれる、有意ではない部分を除いた、有意な部分のみが同一か否かを判定し、かかる有意な部分が同一であれば、ファーストページデータ全体が同一であると判定するものとする。特許請求の範囲に記載した「前記領域情報選択手段」により行なわれる「ページデータが同一であることを判定」することには、このように、有意でない部分まで含めた形式的に「ページデータ」が示す内容ではなく、有意な部分のみよりなる実質的な、「ページデータ」の内容が「同一であることを判定」することが含まれる。
【０１５３】
以下、ステップＳ０６以下では、複写機１は、ステップＳ−ｓｅｌｅｃｔでファーストページ選択部５２１により選択された選択ファーストデータに基づいた処理を行なう。
【０１５４】
ステップＳ０６では、ＤＭＡ転送制御部５２２の設定部５２２ｓ（図３）が、ファーストページ選択部５２１からＤＭＡ転送制御部５２２に取得される、ステップＳ−ｓｅｌｅｃｔでファーストページ選択部５２１により選択された選択ファーストページデータに含まれるシステムメモリ設定情報２１２（図５）を、システムメモリコントローラ５４０（図２）の設定レジスタへ設定する。
【０１５５】
ここに、選択ファーストページデータは、上述の通り、誤りのない正しいファーストページデータであるので、選択ファーストページデータに含まれるシステムメモリ設定情報２１２も、誤りのない正しい情報となる。
【０１５６】
ステップＳ０７では、システムメモリコントローラ５４０（図２）が、ステップＳ０６でＤＭＡ転送制御部５２２により設定情報が設定レジスタに設定されたのに応じて、自己およびシステムメモリ４００を初期化し、また当該設定情報に基づいてシステムメモリ４００に当該システムメモリが動作するために必要な設定を行なう。このとき、上述の通りステップＳ０６で設定レジスタには正しい設定情報が設定されるので、この初期化によりシステムメモリコントローラ５４０およびシステムメモリ４００は確実に動作が可能となる。
【０１５７】
ステップＳ０８では、ＤＭＡ転送制御部５２２が、ステップＳ０７におけるシステムメモリコントローラ５４０による上述した自己の初期化等の処理が終了したことの通知を当該システムメモリコントローラ５４０から取得し、この通知が取得されると、選択ファーストページデータ（ステップＳ−ｓｅｌｅｃｔの説明を参照）に含まれる各ディスクリプタ（図６〜図７および図４〜５）のＤＭＡ転送を開始させる。
【０１５８】
ステップＳ０９では、ＤＭＡ転送制御部５２２の制御により行なわれるこのＤＭＡ転送で、ＤＭＡ転送制御部５２２からの制御信号に基づいて、システムメモリコントローラ５４０およびＮＡＮＤ型フラッシュメモリコントローラ５３０がＮＡＮＤ型フラッシュメモリ２００からシステムメモリ４００へブートプログラム２２０を、各部分領域（２２０ＲＡ〜２２０ＲＯ）に記憶されたブートプログラム２２０の各部分ごとに、転送させる。この転送で、システムメモリコントローラ５４０およびシステムメモリ４００は、予めステップＳ０６でシステムメモリコントローラ５４０に適切な設定情報が設定されて、かつ、ステップＳ０７でシステムメモリコントローラ５４０およびシステムメモリ４００が適切に初期化がされているので、適切な動作をする。
【０１５９】
ステップＳ１０では、ＤＭＡ転送制御部５２２が、システムメモリコントローラ５４０およびＮＡＮＤ型フラッシュメモリコントローラ５３０に制御信号を入力して、これらを停止させることによって、ＤＭＡ転送を終了させる。
【０１６０】
ステップＳ１１では、ＣＰＵ起動部５２３（図３）が、ステップＳ１０で先にＤＭＡ転送制御部５２２によるＤＭＡ転送が終了したのに応じて、システムリセットコントローラ５１０(図２)に、当該システムリセットコントローラ５１０がＣＰＵ３００に出力しているＣＰＵリセット信号を解除させることにより、ＣＰＵ３００に、ステップＳ０８〜Ｓ１０で先にＤＭＡ転送制御部５２２によるＤＭＡ転送でシステムメモリ４００へ書き込まれたブートプログラム２２０（図１、図２等）を実行開始させる。
【０１６１】
ステップＳ１２では、ＣＰＵ３００が、先のステップＳ１１におけるＣＰＵリセット信号の解除を検知して、この検知に応じて、システムメモリ４００へステップＳ０８〜Ｓ１０で書き込まれたブートプログラム２２０をシステムメモリ４００から読み出し、読み出したブートプログラム２２０を実行する。このときには、ブートプログラム２２０は、ランダムアクセスが可能なシステムメモリ４００に記憶された状態であるので、ＣＰＵ３００は、記憶されているブートプログラム２２０の実行をできる。
【０１６２】
以下、他の実施形態を説明する。
【０１６３】
（Ａ）ファーストページ選択部５２１（図３）は、図８で説明したステップＳ−ｓｅｌｅｃｔの処理によらず、他の態様の処理を行なうことによって、選択ファーストページを選択するものであってもよい。
【０１６４】
たとえば、ファーストページ選択部５２１は、ＮＡＮＤ型フラッシュメモリ２００から取得されたファーストページデータのチェックサムを計算するチェックサム計算部と、誤りのない、正しいファーストページデータのチェックサムが予め記憶された適正チェックサム記憶部と、チェックサム計算部により計算されたチェックサムが前記適正チェックサム記憶部に記憶されたチェックサムと同じであるか否かを判定する判定部と、同じであることの前記判定が前記判定部によりされた場合に、当該判定に係る前記チェックサム計算部により前記計算がされた前記ファーストページデータを、選択ファーストページに選択する選択部とを備えるものとする。
【０１６５】
そして、かかるファーストページ選択部５２１が、次々と、１つずつ、ＮＡＮＤ型フラッシュメモリ２００から各ファーストページを取得し、取得されたたファーストページのチェックサムをチェックサム計算部により計算して、計算されたチェックサムを適正チェックサム記憶部に記憶された正しいチェックサムと同一かどうか判定部によって順次、判定する。そして、ファーストページ選択部５２１は、かかる処理を、判定部により同一であることの前記判定がされるまで行ない、当該判定ができると、新たにファーストページを更にＮＡＮＤ型フラッシュメモリから取得することは行なわずに、当該判定に係るファーストページデータを選択ファーストページデータに選択する。
【０１６６】
なお、かかるファーストページ選択部５２１は、特許請求の範囲の請求項４の記載における「領域情報選択手段」の一例を構成し、かかるファーストページ選択部５２１を設けた制御部１００は、当該請求項４に記載した「プログラム起動回路」の一例を構成する。
【図面の簡単な説明】
【０１６７】
【図１】複写機の全体構成を示す図である。
【図２】制御部の構成を示す図である。
【図３】ブートコントローラに実現される機能ブロックを示した図である。
【図４】ディスクリプタの構成を示す図である。
【図５】ＮＡＮＤ型フラッシュメモリにおけるブートプログラムの記憶された領域を示す図である。
【図６】ＮＡＮＤ型フラッシュメモリにある１６個の領域に対応する１６個のディスクリプタがファーストページデータに含まれることを示す図である。
【図７】部分領域を特定する複数のディスクリプタを示した図である。
【図８】複写機各部の機能の働く順序を示したフローチャートである。
【符号の説明】
【０１６８】
ＥｒｒＢｌｋ  不良ブロック（不良ブロック）
１  複写機（電子機器）
１００  制御部（プログラム起動回路）
２００  ＮＡＮＤ型フラッシュメモリ（不揮発性メモリ）
２１０  ファーストーページデータ
２１０（２１０ａ〜２１０ｃ）  ファーストページデータ（ページデータ）
２１１（２１１ａ〜２１１ｃ）  ディスクリプタ
２１１Ｆ  領域情報（領域情報）
２１１Ｆａ  先頭アドレス
２１１Ｆｎ  ブロック数
２１１Ｌ  リンク情報（リンクデータ）
２１１Ｒ  予約欄
２１１Ｓ  複数のディスクリプタ
２１１ＬＡ〜２１１ＬＯ  リンク情報（リンクデータ）
２１１Ａ〜２１１Ｏ  ディスクリプタ
２１１ＦＡ〜２１１ＦＯ  領域情報（領域情報）
２１１Ｔ  書込先アドレス情報
２１２  システムメモリ設定情報（動作必要情報）
２１３  不良ブロック情報（不良ブロックの情報）
２２０  ブートプログラム（プログラム）
２２０Ｒ  ブートプログラムの領域
２２０Ｒａｌｌ  全体領域
２２０ＲＡ〜２２０ＲＯ  部分領域（部分領域）
２２０Ｒｘ  不良ブロックＥｒｒＢｌｋが避けられた領域
３００  ＣＰＵ（ＣＰＵ）
４００  システムメモリ（実行用メモリ）
５１０  システムリセットコントローラ
５２０  ブートコントローラ
５２１  ファーストページ選択部（領域情報選択手段）
５２１ａ  報知部（報知制御手段）
５２２  ＤＭＡ転送制御部（ＤＭＡ転送制御手段）
５２２ｓ  設定部（設定手段）
５２３  ＣＰＵ起動部（実行制御手段）
５２５  ファーストページバッファ
５３０  ＮＡＮＤ型フラッシュメモリコントローラ
５４０  システムメモリコントローラ
【図１】
2008204065.tif 000003
【図２】
2008204065.tif 000004
【図３】
2008204065.tif 000005
【図４】
2008204065.tif 000006
【図５】
2008204065.tif 000007
【図６】
2008204065.tif 000008
【図７】
2008204065.tif 000009
【図８】
2008204065.tif 000010