(57)【要約】【課題】ブートプログラムの書き換えに失敗した場合などにも、装置を正常に起動することが可能なプログラム実行装置を実現する。【解決手段】プログラムの実行により装置各部を制御する制御手段１０１と、この制御手段によって起動時に実行されるプログラム（ブートプログラム）であって、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとが記憶されている記憶手段１５０と、前記記憶手段に記憶されている書き換え可能ブートプログラムを書き換えるプログラム書き換え手段１７０と、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え不可能ブートプログラムか前記書き換え可能ブートプログラムかのいずれか一つを割り当てる選択手段１６０と、を備える。【選択図】　　　図１
2004054818.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行により装置各部を制御する制御手段と、
この制御手段によって起動時に実行されるプログラム（ブートプログラム）であって、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとが記憶されている記憶手段と、
前記記憶手段に記憶されている書き換え可能ブートプログラムを書き換えるプログラム書き換え手段と、
装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え不可能ブートプログラムか前記書き換え可能ブートプログラムかのいずれか一つを割り当てる選択手段と、
を備えたことを特徴とするプログラム実行装置。
【請求項２】
プログラムの実行により装置各部を制御する制御手段と、
この制御手段によって起動時に実行される書き換え可能ブートプログラムが記憶されており、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させる待避記憶領域を有する記憶手段と、
プログラムの書き換え時に前記書き換え可能ブートプログラムを前記待避記憶領域に待避させ、書き換え可能ブートプログラムを書き換えるプログラム書き換え手段と、
装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え可能ブートプログラムか、前記待避記憶領域に記憶されたブートプログラムかのいずれか一つを割り当てる選択手段と、
を備えたことを特徴とするプログラム実行装置。
【請求項３】
プログラムの実行により装置各部を制御する制御手段と、
この制御手段によって起動時に実行されるプログラム（ブートプログラム）であって、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとが記憶されており、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させる待避記憶領域を有する記憶手段と、
プログラムの書き換え時に前記書き換え可能ブートプログラムを前記待避記憶領域に待避させ、書き換え可能ブートプログラムを書き換えるプログラム書き換え手段と、
装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え不可能ブートプログラムか、前記書き換え可能ブートプログラムか、前記待避記憶領域に記憶されたブートプログラムかのいずれか一つを割り当てる選択手段と、
を備えたことを特徴とするプログラム実行装置。
【請求項４】
前記記憶手段は、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させる待避記憶領域を複数有し、
前記選択手段は、前記複数の待避記憶領域のいずれかを選択する、
ことを特徴とする請求項２または請求項３のいずれかに記載のプログラム実行装置。
【請求項５】
前記記憶手段に記憶されている書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一内容のブートプログラムである、
ことを特徴とする請求項１または請求項３のいずれかに記載のプログラム実行装置。
【請求項６】
前記書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一の記憶手段内の異なるアドレスの領域に記憶されている、
ことを特徴とする請求項１または請求項３のいずれかに記載のプログラム実行装置。
【請求項７】
前記書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、別体の記憶手段にそれぞれ記憶されている、
ことを特徴とする請求項１または請求項３のいずれかに記載のプログラム実行装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ブートプログラムを実行するプログラム実行装置に関し、更に詳しくは、ブートプログラムを書き換える機能を備えたプログラム実行装置の制御に関する。
【０００２】
【従来の技術】
各種情報処理装置などで、プログラムを格納するための記憶手段としてフラッシュメモリ等の電気的に書換え可能な不揮発性メモリを搭載したものが増えてきている。これにより、製品出荷後でもメモリ内のブートプログラムや機器制御プログラムを書換えることで、新機能追加や性能向上を実現することが可能になる。
【０００３】
【発明が解決しようとする課題】
ところが、例えば書き換え可能な不揮発性メモリに格納されたブートプログラムを書き換えている途中で電源コンセント外れなどが発生して装置への電源供給が絶たれ、ブートプログラムの書き換えに失敗することがある。この場合、書き換える前のブートプログラムは既に消去されており、さらに、新たなブートプログラムは書き換え途中であるため正常に書き込まれておらず、装置が二度と立ち上がらなくなるという不具合が発生することになる（第１の問題点）。
【０００４】
また、ブートプログラムの書き換え自体は正常に行えた場合であっても、装置型番の誤認識などにより、別機種用のブートプログラムに書き換えてしまうことも起こりうる。この場合、その機種用ではないブートプログラムであるので、装置が立ち上がらなくなり、この結果、正しいブートプログラムに戻すことができない状態に陥る（第２の問題点）。
【０００５】
さらに、ブートプログラムの書き換えが正常に行えた場合であっても、アプリケーションプログラムと新ブートプログラムとの相性が良くなく、古いブートプログラムに戻したい場合も発生しうるが、この場合に古いブートプログラムは既に存在しておらず、古いブートプログラムに戻すことができない状態に陥る（第３の問題点）。
【０００６】
そこで、上記第１の問題点を解決すべく、特開平１１−１１９９８４号公報に記載の発明は、ブートプログラムが格納されたＲＯＭとは別チップのＲＯＭに復旧専用ブートプログラムを搭載するようにしている。この発明では、別チップのＲＯＭを必要とするという問題があり、さらに、書き換え成功か失敗かに応じてチップセレクト信号を変更しなければならず、制御が複雑になるという問題がある。
【０００７】
また、書き換え自体が正常に実行できた場合には、チップセレクト信号が別チップ側に切り替わらないため、上記第２の問題点や第３の問題点に対しては効力を有しないという問題もある。
【０００８】
本発明は上記の問題点に鑑みてなされたもので、ブートプログラムの書き換えに失敗した場合であっても、ブートプログラムの書き換え自体は成功したものの異なるブートプログラムに書き換えてしまった場合であっても、装置を正常に起動することが可能なプログラム実行装置を実現することを目的とする。
【０００９】
【課題を解決するための手段】
以上の課題を解決する本発明は、以下に記載するようなものである。
（１）請求項１記載の発明は、プログラムの実行により装置各部を制御する制御手段と、この制御手段によって起動時に実行されるプログラム（ブートプログラム）であって、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとが記憶されている記憶手段と、前記記憶手段に記憶されている書き換え可能ブートプログラムを書き換えるプログラム書き換え手段と、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え不可能ブートプログラムか前記書き換え可能ブートプログラムかのいずれか一つを割り当てる選択手段と、を備えたことを特徴とするプログラム実行装置である。
【００１０】
この発明では、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとを記憶手段に記憶しておき、プログラム書き換え手段が前記書き換え可能ブートプログラムを必要に応じて書き換える。また、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについては、設定手段の設定に基づいて、選択手段が前記書き換え不可能ブートプログラムか前記書き換え可能ブートプログラムかのいずれか一つを割り当てる。
【００１１】
このため、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合、あるいは元のブートプログラムに戻したい場合は、前記設定手段の設定によって、書き換え不可能ブートプログラムを選択して起動させることで、装置が立ち上げ不能に陥ることがなくなる。また、通常動作時や書き換え成功時には、書き換えたブートプログラムによって起動すればよい。
【００１２】
（２）請求項２記載の発明は、プログラムの実行により装置各部を制御する制御手段と、この制御手段によって起動時に実行される書き換え可能ブートプログラムが記憶されており、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させる待避記憶領域を有する記憶手段と、プログラムの書き換え時に前記書き換え可能ブートプログラムを前記待避記憶領域に待避させ、書き換え可能ブートプログラムを書き換えるプログラム書き換え手段と、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え可能ブートプログラムか、前記待避記憶領域に記憶されたブートプログラムかのいずれか一つを割り当てる選択手段と、を備えたことを特徴とするプログラム実行装置である。
【００１３】
この発明では、書き換え可能ブートプログラムを記憶手段に記憶し、さらに待避記憶領域を記憶手段に備えておき、プログラム書き換え手段は前記書き換え可能ブートプログラムを待避記憶領域に複写した後に書き換える。また、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについては、設定手段の設定に基づいて、選択手段が、前記待避記憶領域に記憶されたブートプログラムか前記書き換え可能ブートプログラムかのいずれか一つを割り当てる。
【００１４】
このため、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合、あるいは元のブートプログラムに戻したい場合は、前記設定手段の設定によって、待避記憶領域のブートプログラムを選択して起動させることで、装置が立ち上げ不能に陥ることがなくなる。また、通常動作時や書き換え成功時には、書き換えたブートプログラムによって起動すればよい。
【００１５】
（３）請求項３記載の発明は、プログラムの実行により装置各部を制御する制御手段と、この制御手段によって起動時に実行されるプログラム（ブートプログラム）であって、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとが記憶されており、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させる待避記憶領域を有する記憶手段と、プログラムの書き換え時に前記書き換え可能ブートプログラムを前記待避記憶領域に待避させ、書き換え可能ブートプログラムを書き換えるプログラム書き換え手段と、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについて、設定手段の設定に基づいて、前記書き換え不可能ブートプログラムか、前記書き換え可能ブートプログラムか、前記待避記憶領域に記憶されたブートプログラムかのいずれか一つを割り当てる選択手段と、を備えたことを特徴とするプログラム実行装置である。
【００１６】
この発明では、書き換え不可能ブートプログラムと書き換え可能ブートプログラムとを記憶手段に記憶しておき、さらに待避記憶領域を記憶手段に備えておき、プログラム書き換え手段は前記書き換え可能ブートプログラムを待避記憶領域に複写した後に書き換える。また、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについては、設定手段の設定に基づいて、選択手段が、前記待避記憶領域に記憶されたブートプログラムか、前記書き換え不可能ブートプログラムか、前記書き換え可能ブートプログラムか、のいずれか一つを割り当てる。
【００１７】
このため、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合、あるいは元のブートプログラムに戻したい場合は、前記設定手段の設定によって、待避記憶領域のブートプログラムあるいは書き換え不可能ブートプログラムのいずれかを選択して起動させることで、装置が立ち上げ不能に陥ることがなくなる。また、通常動作時や書き換え成功時には、書き換えたブートプログラムによって起動すればよい。
【００１８】
（４）請求項４記載の発明は、前記記憶手段は、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させる待避記憶領域を複数有し、前記選択手段は、前記複数の待避記憶領域のいずれかを選択する、ことを特徴とする請求項２または請求項３のいずれかに記載のプログラム実行装置である。
【００１９】
この発明では、書き換え可能ブートプログラムを記憶手段に記憶し、さらに待避記憶領域を記憶手段に備えておき、プログラム書き換え手段は前記書き換え可能ブートプログラムを待避記憶領域に複写した後に書き換える。なお、待避記憶領域を複数有しているため、複数回の書き換え実行時に、選択手段の選択に応じてそれぞれ書き換え前のブートプログラムを待避しておくことができる。
【００２０】
また、装置の電源投入時における前記制御手段のプログラム実行開始アドレスについては、設定手段の設定に基づいて、選択手段が、前記待避記憶領域に記憶されたいずれかのブートプログラムか、前記書き換え可能ブートプログラムかを割り当てる。
【００２１】
このため、書き換え可能ブートプログラムの書き換えに失敗した場合だけでなく、書き換え前のいずれかの段階の状態に戻したいときは、前記設定手段の設定によって、待避記憶領域のブートプログラムを選択して起動させることで、所望の状態の装置の立ち上げが可能になる。
【００２２】
（５）請求項５記載の発明は、前記記憶手段に記憶されている書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一内容のブートプログラムである、ことを特徴とする請求項１または請求項３のいずれかに記載のプログラム実行装置である。
【００２３】
このため、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合、あるいは元のブートプログラムに戻したい場合は、前記設定手段の設定によって、書き換え不可能ブートプログラムを選択して起動させることで、装置を当初の状態と同一の状態で立ち上げることが可能になる。
【００２４】
（６）請求項６記載の発明は、前記書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一の記憶手段内の異なるアドレスの領域に記憶されている、ことを特徴とする請求項１または請求項３のいずれかに記載のプログラム実行装置である。
【００２５】
このプログラム実行装置では、同一の記憶手段に書き換え不可能ブートプログラムと書き換え前のブートプログラムとを格納しているため、別の記憶手段を必要としなくなり、装置構成を簡略化することができる。
【００２６】
（７）請求項７記載の発明は、前記書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、別体の記憶手段にそれぞれ記憶されている、ことを特徴とする請求項１または請求項３のいずれかに記載のプログラム実行装置である。
【００２７】
このプログラム実行装置では、書き換え不可能ブートプログラムと書き換え前のブートプログラムと別体の記憶手段にそれぞれ格納しているため、信頼性を向上させることができる。このため、確実な装置立ち上げを実現することができる。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態例のプログラム実行装置について図面を参照しつつ詳細に説明する。なお、請求項には記載されていないが、本実施の形態例のプログラム実行装置の動作方法あるいは制御方法も本実施の形態例の一部である。
【００２９】
〈第１の実施の形態例〉
図１は、本発明のプログラム実行装置の第１の実施の形態例を示す回路構成図である。なお、この図１では、この第１の実施の形態例の動作説明に必要な部分のみを記載してあり、その他の既知の部分については省略してある。なお、この図１のプログラム実行装置は、画像形成装置（複写機、プリンタ、ファクシミリ装置など）に適用した例を具体例として示している。
【００３０】
この図１において、１０１はプログラムの実行によって装置全体を制御する制御手段であり、ブートプログラムによって装置の起動を行い、機器制御プログラムによって装置の動作制御を行う。
【００３１】
１１０は各種データの展開や一時的記憶を行うＲＡＭ、１２０は装置への操作入力と装置からの状態表示とを行う操作表示部、１３０は機器の各部の細かな動作制御を行う機器動作制御部、１４０は画像形成装置としての画像形成に関するプロセス制御を行うためのプロセス制御部、１５０は書き換え不可能ブートプログラムと書き換え可能ブートプログラムと機器制御プログラムとが記憶されている記憶手段としてのフラッシュメモリ、１６０はブートプログラムの実行先頭番地を選択するメモリ選択部、１７０はフラッシュメモリ１５０の書き換えを実行するプログラム書き換え部である。なお、上記各部はアドレスバスとデータバスとによって相互に接続されているものとする。
【００３２】
なお、フラッシュメモリ１５０においては、先頭番地から始まる領域をブートプログラムブロック１５１としていて、書き換え不可能ブートプログラムが格納されている。また、そのブートプログラムブロック１５１の直後から始まる領域をブートプログラムブロック１５２としていて、書き換え可能ブートプログラムが格納されている。なお、フラッシュメモリ１５０に格納されている書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一内容のブートプログラムである。
【００３３】
また、書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一のフラッシュメモリ１５０内の異なるアドレスの領域に記憶されている例を示しているが、別チップのフラッシュメモリ（図示せず）であってもよい。
【００３４】
図２はメモリ選択部１６０の内部構成を示すブロック図である。この図２に示すように、ＣＰＵ１０１からのデータＤ０〜Ｄ１５とアドレス信号Ａ０〜Ａ１５とはフラッシュメモリ１５０にそのまま供給されている。
【００３５】
なお、このメモリ選択部１６０内には、デコーダ１６１とスイッチ１６２とが選択手段として設けられており、設定手段を構成するスイッチ１６２の状態に応じて、デコーダ１６１がメモリアドレス信号（ＭＡ１６，ＭＡ１７）を変更している。なお、このスイッチ１６２はディップスイッチなどで構成されていて、装置のいずれかの位置に配置されていればよい。
【００３６】
図２の場合、下段の表に示すように、ＣＰＵ１０１からのＡ１７／Ａ１６がＨ／ＨあるいはＨ／Ｌの場合には、スイッチ１６２にかかわらず、フラッシュメモリ１５０にて機器制御プログラムを選択するためのメモリアドレス信号（ＭＡ１６，ＭＡ１７）を生成する。
【００３７】
一方、ＣＰＵ１０１からのＡ１７／Ａ１６がＬ／Ｈの場合には、スイッチ１６２がオフであれば、フラッシュメモリ１５０にて書き換え可能ブートプログラムを選択するためのメモリアドレス信号（ＭＡ１６，ＭＡ１７）を生成する。また、スイッチ１６２がオンであれば、フラッシュメモリ１５０にて書き換え不可ブートプログラムを選択するためのメモリアドレス信号（ＭＡ１６，ＭＡ１７）を生成する。
【００３８】
以下、図３のフローチャートを参照して本実施の形態例の動作説明を行うことにする。
本実施の形態例のプログラム実行装置の電源スイッチが投入されると、ＣＰＵ１０１からのアドレス信号（Ａ１６，Ａ１７）と、メモリ選択部１６０内のスイッチ１６２の状態とに応じて、デコーダ１６１がメモリアドレス信号（ＭＡ１６，ＭＡ１７）を生成してフラッシュメモリ１５０に印加する（図３Ｓ１）。
【００３９】
ここで、電源スイッチ投入時であり、ブートプログラムの選択が必要であるため、ＣＰＵ１０１からのアドレス信号Ａ１７がＬ、Ａ１６がＨになっているとする。
【００４０】
スイッチ１６２がオフ状態であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６，ＭＡ１７）により、起動時にはブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムの先頭番地が選択されて実行される（図３Ｓ２）。
【００４１】
一方、スイッチ１６２がオン状態（グランド側）であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６，ＭＡ１７）により、起動時にはブートプログラムブロック１５１が選択され（図３Ｓ３）、書き換え不可能ブートプログラムが実行される（図３Ｓ４）。
【００４２】
なお、オペレータなどによって意図的にスイッチ１６２の状態がオン状態（第２状態）に設定されていない限り、スイッチ１６２はオフ状態が通常状態であり、書き換え可能ブートプログラムが実行される。
【００４３】
なお、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合には、スイッチ１６２の設定によって、書き換え不可能ブートプログラムを選択して起動させることで、装置が立ち上げ不能に陥ることがなくなる。
【００４４】
そして、いずれのブートプログラムによって起動された場合でも、ブートプログラムの実行が完了した後に、機器制御プログラムブロック１５３に格納されている機器制御プログラムが機器動作制御部１３０やプロセス制御部１４０により実行される（図３Ｓ５）。これにより、プログラム実行装置の通常の制御が実行される。
【００４５】
ここで、操作表示部１２０から特定の操作がなされた場合、あるいは、図示していない外部機器から特定の信号が与えられた場合、その操作あるいは信号をきっかけにしてブートプログラムの更新を開始する（図３Ｓ６でＹ）。
【００４６】
この場合、プログラム書換部１７０は、まず、フラッシュメモリ１５０のブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムを消去する（図３Ｓ７）。
【００４７】
そして、プログラム書換部１７０は、プログラム実行装置に接続されている外部機器（図示せず）などからの新たなブートプログラムを、ブートプログラムブロック１５２に書き込むことにより書き換えを実行する（図３Ｓ８）。このプログラム書換部１７０による書き換えがが完了した時点（図３Ｓ９でＹ）で、ＣＰＵ１０１は、ブートプログラムの更新の完了を操作表示部１２０に表示して動作を終了する。
【００４８】
以上のような書き換え可能ブートプログラムの書き換えを実行した場合であって、停電や電源コンセント脱落などで書き換え作業に失敗した場合、あるいは、異なる機種用のブートプログラムに書き換えてしまった場合、あるいはアプリケーションプログラムとの相性の関係で元のブートプログラムに戻したい場合に、オペレータはスイッチ１６２の状態をオン状態（第２状態）に切り替える。
【００４９】
そして、このようにスイッチ１６２をオン状態（第２状態）に切り替えてからプログラム実行装置の電源を投入することで、図３のＳ３とＳ４とに示したように、装置出荷時から搭載されている書き換え不可能ブートプログラムでブートされる。このようにすることで、最新のブートプログラムではない可能性があるものの、正常に起動できる状態を確保できる。
【００５０】
したがって、再度停電や電源コンセント脱落に注意しつつブートプログラムの書き換えを実行したり、正しい機種のブートプログラムの書き換えを実行したり、アプリケーションプログラムとの相性に配慮されたブートプログラムへの書き換えなどを実行することができる。そして、ブートプログラムの書き換えが成功した後に、スイッチ１６２の状態を通常状態であるオフ状態に戻せばよい。また、スイッチ１６２をオン状態（第２状態）に維持することで、書き換え不可能ブートプログラムでブートし続けることも可能である。
【００５１】
〈第２の実施の形態例〉
図４は、本発明のプログラム実行装置の第２の実施の形態例を示す回路構成図である。なお、この図４では、この第２の実施の形態例の動作説明に必要な部分のみを記載してあり、その他の既知の部分については省略してある。なお、この図４のプログラム実行装置は、画像形成装置（複写機、プリンタ、ファクシミリ装置など）に適用した例を具体例として示している。
【００５２】
なお、この図４では、既に説明した第１の実施の形態例の図１と同一物については同一番号を付し、重複した説明を省略する。
この図４において、１５０は書き換え可能ブートプログラムが記憶されており、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させるブートプログラム保存ブロック（待避記憶領域）１５１ａを有する記憶手段としてのフラッシュメモリである。
【００５３】
１７０はフラッシュメモリ１５０の書き換えを実行するプログラム書き換え部であり、プログラムの書き換え時に前記書き換え可能ブートプログラムを前記待避記憶領域に待避させ、書き換え可能ブートプログラムを書き換える。
【００５４】
なお、フラッシュメモリ１５０においては、先頭番地から始まる領域をブートプログラム保存ブロック１５１ａとしていて、ブートプログラムの書き換え前のコピーが格納されている。
【００５５】
また、そのブートプログラム保存ブロック１５１ａの直後から始まる領域をブートプログラムブロック１５２としていて、書き換え可能ブートプログラムが格納されている。なお、最初にブートプログラムの書き換えを実行する前は、ブートプログラムブロック１５１ａに格納されているブートプログラムと、ブートプログラムブロック１５２に格納されているブートプログラムとは、同一内容のブートプログラムである。
【００５６】
また、ブートプログラムの書き換え前のコピーと、書き換え前の書き換え可能ブートプログラムとは、同一のフラッシュメモリ１５０内の異なるアドレスの領域に記憶されている例を示しているが、別チップのフラッシュメモリ（図示せず）であってもよい。
【００５７】
以下、図５のフローチャートを参照して本実施の形態例の動作説明を行うことにする。なお、この説明では、図２のブロック図も参照する。
本実施の形態例のプログラム実行装置の電源スイッチが投入されると、ＣＰＵ１０１からのアドレス信号（Ａ１６，Ａ１７）と、メモリ選択部１６０内のスイッチ１６２の状態とに応じて、デコーダ１６１がメモリアドレス信号（ＭＡ１６，ＭＡ１７）を生成してフラッシュメモリ１５０に印加する（図５Ｓ１）。
【００５８】
スイッチ１６２がオフ状態であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６，ＭＡ１７）により、起動時にはブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムの先頭番地が選択されて実行される（図５Ｓ２）。
【００５９】
一方、スイッチ１６２がオン状態（第２状態、グランド側）であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６，ＭＡ１７）により、起動時にはブートプログラム保存ブロック１５１ａが選択され（図５Ｓ３）、書き換え前のブートプログラムが実行される（図５Ｓ４）。
【００６０】
なお、オペレータなどによって意図的にスイッチ１６２の状態がオン状態（第２状態）に設定されていない限り、スイッチ１６２はオフ状態（通常状態）であり、書き換え可能ブートプログラムが実行される。
【００６１】
なお、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合には、スイッチ１６２の設定によって、ブートプログラムの書き換え前のコピーを選択して起動させることで、装置が立ち上げ不能に陥ることがなくなる。
【００６２】
そして、いずれのブートプログラムによって起動された場合でも、ブートプログラムの実行が完了した後に、機器制御プログラムブロック１５３に格納されている機器制御プログラムが機器動作制御部１３０やプロセス制御部１４０により実行される（図５Ｓ５）。これにより、プログラム実行装置の通常の制御が実行される。
【００６３】
ここで、操作表示部１２０から特定の操作がなされた場合、あるいは、図示していない外部機器から特定の信号が与えられた場合、その操作あるいは信号をきっかけにしてブートプログラムの更新を開始する（図５Ｓ６でＹ）。
【００６４】
この場合、プログラム書換部１７０は、まず、フラッシュメモリ１５０のブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムを、ブートプログラム保存ブロック１５１ａに複写（待避）する（図５Ｓ７）。この場合、既にブートプログラム保存ブロック１５１ａに存在するブートプログラムを消去してから複写を行う。
【００６５】
そして、プログラム書換部１７０は、フラッシュメモリ１５０のブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムを消去する（図５Ｓ８）。
【００６６】
そして、プログラム書換部１７０は、プログラム実行装置に接続されている外部機器（図示せず）などからの新たなブートプログラムを、ブートプログラムブロック１５２に書き込むことにより書き換えを実行する（図５Ｓ９）。このプログラム書換部１７０による書き換えがが完了した時点（図５Ｓ１０でＹ）で、ＣＰＵ１０１は、ブートプログラムの更新の完了を操作表示部１２０に表示して動作を終了する。
【００６７】
以上のような書き換え可能ブートプログラムの書き換えを実行した場合であって、停電や電源コンセント脱落などで書き換え作業に失敗した場合、あるいは、異なる機種用のブートプログラムに書き換えてしまった場合、あるいはアプリケーションプログラムとの相性の関係で元のブートプログラムに戻したい場合に、オペレータはスイッチ１６２の状態をオン状態（第２状態）に切り替える。
【００６８】
そして、このようにスイッチ１６２をオン状態（第２状態）に切り替えてからプログラム実行装置の電源を投入することで、図５のＳ３とＳ４とに示したように、ブートプログラムの書き換え前のコピー（書き換えを実行する直前の状態のブートプログラム）でブートされる。このようにすることで、最新のブートプログラムではないが、正常に起動できる状態を確保できる。
【００６９】
したがって、再度停電や電源コンセント脱落に注意しつつブートプログラムの書き換えを実行したり、正しい機種のブートプログラムの書き換えを実行したり、アプリケーションプログラムとの相性に配慮されたブートプログラムへの書き換えなどを実行することができる。そして、ブートプログラムの書き換えが成功した後に、スイッチ１６２の状態をオフ状態（通常状態）に戻せばよい。また、スイッチ１６２をオン状態（第２状態）に維持することで、ブートプログラムの書き換え前のコピーでブートし続けることも可能である。
【００７０】
〈第３の実施の形態例〉
図６は、本発明のプログラム実行装置の第３の実施の形態例を示す回路構成図である。なお、この図６では、この第３の実施の形態例の動作説明に必要な部分のみを記載してあり、その他の既知の部分については省略してある。なお、この図６のプログラム実行装置は、画像形成装置（複写機、プリンタ、ファクシミリ装置など）に適用した例を具体例として示している。
【００７１】
なお、この図６では、既に説明した第１や第２の実施の形態例の図１や図４と同一物については同一番号を付し、重複した説明を省略する。
この図６において、１５０は書き換え不可能ブートプログラムと書き換え可能ブートプログラムと機器制御プログラムとが記憶されている記憶手段としてのフラッシュメモリ、プログラムの書き換え時に前記書き換え可能ブートプログラムを待避させるブートプログラム保存ブロック（待避記憶領域）１５１ａを有する記憶手段としてのフラッシュメモリである。
【００７２】
１７０はフラッシュメモリ１５０の書き換えを実行するプログラム書き換え部であり、プログラムの書き換え時に前記書き換え可能ブートプログラムを前記待避記憶領域に待避させ、書き換え可能ブートプログラムを書き換える。
【００７３】
なお、フラッシュメモリ１５０においては、先頭番地から始まる領域をブートプログラムブロック１５１としていて、書き換え不可能ブートプログラムが格納されている。また、そのブートプログラムブロック１５１の直後から始まる領域をブートプログラム保存ブロック１５１ａとしていて、ブートプログラムの書き換え前のコピーが格納されている。また、そのブートプログラム保存ブロック１５１ａの直後から始まる領域をブートプログラムブロック１５２としていて、書き換え可能ブートプログラムが格納されている。なお、フラッシュメモリ１５０に格納されている書き換え不可能ブートプログラムと、書き換え前の書き換え可能ブートプログラムとは、同一内容のブートプログラムである。
【００７４】
また、書き換え不可能ブートプログラムと、ブートプログラムの書き換え前のコピーと、書き換え前の書き換え可能ブートプログラムとは、同一のフラッシュメモリ１５０内の異なるアドレスの領域に記憶されている例を示しているが、それぞれ別チップのフラッシュメモリ（図示せず）であってもよい。
【００７５】
図７はメモリ選択部１６０の内部構成を示すブロック図である。この図７に示すように、ＣＰＵ１０１からのデータＤ０〜Ｄ１５とアドレス信号Ａ０〜Ａ１５とはフラッシュメモリ１５０にそのまま供給されている。そして、ＣＰＵ１０１からのアドレス信号Ａ１６〜Ａ１８は、メモリ選択部１６０で処理されて、メモリアドレス信号（ＭＡ１６，ＭＡ１７，ＭＡ１８）としてフラッシュメモリ１５０に供給されている。
【００７６】
なお、このメモリ選択部１６０内には、デコーダ１６１と、スイッチ１６２およびスイッチ１６３とが選択手段として設けられており、設定手段を構成するスイッチ１６２およびスイッチ１６３の状態に応じてデコーダ１６１がメモリアドレス信号（ＭＡ１６〜ＭＡ１８）を変更している。なお、このスイッチ１６２・スイッチ１６３はディップスイッチなどで構成されていて、装置のいずれかの位置に配置されていればよい。
【００７７】
ここでは、スイッチ１６２とスイッチ１６３との状態により合計４通りの状態（Ｈ・Ｈ、Ｈ・Ｌ、Ｌ・Ｈ、Ｌ・Ｌ）が考えられるが、どのブロックのブートプログラムでブートするかについて少なくとも３通りの状態を割り当てておくことが望ましい。
【００７８】
すなわち、図２の下段の表に示したと同様にして、ＣＰＵ１０１からのＡ１６〜Ａ１８信号と、スイッチ１６２・１６３の状態に応じて、フラッシュメモリ１５０にて機器制御プログラム，書き換え不可ブートプログラム，書き換え可能ブートプログラムのいずれかを選択するためのメモリアドレス信号（ＭＡ１６〜ＭＡ１８）を生成すればよい。
【００７９】
以下、図８のフローチャートを参照して本実施の形態例の動作説明を行うことにする。
本実施の形態例のプログラム実行装置の電源スイッチが投入されると、ＣＰＵ１０１からのアドレス信号（Ａ１６〜Ａ１８）と、メモリ選択部１６０内のスイッチ１６２・スイッチ１６３の設定状態とに応じて、デコーダ１６１がメモリアドレス信号（ＭＡ１６〜ＭＡ１８）を生成してフラッシュメモリ１５０に印加する（図８Ｓ１）。
【００８０】
スイッチ１６２・スイッチ１６３が第１状態であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６〜ＭＡ１８）により、起動時にはブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムの先頭番地が選択されて実行される（図８Ｓ２）。
【００８１】
また、スイッチ１６２・スイッチ１６３が第３状態であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６〜ＭＡ１８）により、起動時にはブートプログラムブロック１５１が選択され（図８Ｓ３）、書き換え不可能ブートプログラムが実行される（図８Ｓ４）。
【００８２】
一方、スイッチ１６２・スイッチ１６３が第２状態であれば、デコーダ１６１からのメモリアドレス信号（ＭＡ１６〜ＭＡ１８）により、起動時にはブートプログラム保存ブロック１５１ａが選択され（図８Ｓ５）、書き換え前のブートプログラムが実行される（図８Ｓ６）。
【００８３】
なお、オペレータなどによって意図的にスイッチ１６２・スイッチ１６３の状態が第２状態あるいは第３状態に設定されていない限り、スイッチ１６２・スイッチ１６３は初期状態として第１状態であり、ブートプログラムブロック１５２の書き換え可能ブートプログラムが実行される。
【００８４】
なお、書き換え可能ブートプログラムの書き換えに失敗した場合、あるいは、異なるブートプログラムに書き換えてしまった場合には、スイッチ１６２・スイッチ１６３の設定によって、書き換え不可能ブートプログラムもしくはブートプログラムの書き換え前のコピーのいずれかを選択して起動させることで、装置が立ち上げ不能に陥ることがなくなる。
【００８５】
そして、いずれのブートプログラムによって起動された場合でも、ブートプログラムの実行が完了した後に、機器制御プログラムブロック１５３に格納されている機器制御プログラムが機器動作制御部１３０やプロセス制御部１４０により実行される（図８Ｓ７）。これにより、プログラム実行装置の通常の制御が実行される。
【００８６】
ここで、操作表示部１２０から特定の操作がなされた場合、あるいは、図示していない外部機器から特定の信号が与えられた場合、その操作あるいは信号をきっかけにしてブートプログラムの更新を開始する（図８Ｓ８でＹ）。
【００８７】
この場合、プログラム書換部１７０は、必要に応じて（図８Ｓ９でＹ）、フラッシュメモリ１５０のブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムを、ブートプログラム保存ブロック１５１ａに複写（待避）する（図８Ｓ１０）。この場合、既にブートプログラム保存ブロック１５１ａに存在するブートプログラムを消去してから複写を行う。
【００８８】
そして、プログラム書換部１７０は、フラッシュメモリ１５０のブートプログラムブロック１５２に格納されている書き換え可能ブートプログラムを消去する（図８Ｓ１１）。
【００８９】
そして、プログラム書換部１７０は、プログラム実行装置に接続されている外部機器（図示せず）などからの新たなブートプログラムを、ブートプログラムブロック１５２に書き込むことにより書き換えを実行する（図８Ｓ１２）。このプログラム書換部１７０による書き換えがが完了した時点（図８Ｓ１３でＹ）で、ＣＰＵ１０１は、ブートプログラムの更新の完了を操作表示部１２０に表示して動作を終了する。
【００９０】
以上のような書き換え可能ブートプログラムの書き換えを実行した場合であって、停電や電源コンセント脱落などで書き換え作業に失敗した場合、あるいは、異なる機種用のブートプログラムに書き換えてしまった場合、あるいはアプリケーションプログラムとの相性の関係で元のブートプログラムに戻したい場合に、オペレータはスイッチ１６２・スイッチ１６３の状態を第２状態もしくは第３状態のいずれか所望の状態に切り替える。すなわち、初期状態のブートプログラム、あるいは、書き換え直前のブートプログラムのいずれでも好みの状態のブートプログラムを選択できる。
【００９１】
そして、このようにスイッチ１６２・スイッチ１６３を第２状態あるいは第３状態に切り替えてからプログラム実行装置の電源を投入することで、図８のＳ３〜Ｓ４あるいはＳ５〜Ｓ６に示したように、装置出荷時から搭載されている書き換え不可能ブートプログラムでブートされるか、あるいは、ブートプログラムの書き換え前のコピー（書き換えを実行する直前の状態のブートプログラム）でブートされる。このようにすることで、最新のブートプログラムではない可能性があるものの、正常に起動できる状態を確保できる。
【００９２】
したがって、再度停電や電源コンセント脱落に注意しつつブートプログラムの書き換えを実行したり、正しい機種のブートプログラムの書き換えを実行したり、アプリケーションプログラムとの相性に配慮されたブートプログラムへの書き換えなどを実行することができる。そして、ブートプログラムの書き換えが成功した後に、スイッチ１６２・スイッチ１６３の状態を第１状態に戻せばよい。また、スイッチ１６２・スイッチ１６３を第２状態あるいは第３状態に維持することで、ブートプログラムの書き換え前あるいは初期状態でブートし続けることも可能である。
【００９３】
なお、以上の説明では、ブートプログラム保存ブロック（待避記憶領域）１５１ａは１つのブートプログラムを保存する容量あるいは領域であったが、複数のブートプログラムを保存可能な容量あるいは領域とすることも可能である。この場合、メモリ選択部１６０が複数の保存ブロック（待避記憶領域）を選択するように構成すればよい。このようにすると、複数の異なるバージョンのブートプログラムを保存しておくことも可能になる。
【００９４】
このため、書き換え可能ブートプログラムの書き換えに失敗した場合だけでなく、書き換え前のいずれかの段階の状態に戻したいときは、前記設定手段の設定によって、待避記憶領域のブートプログラムを選択して起動させることで、所望の状態の装置の立ち上げが可能になる。
【００９５】
〈その他の実施の形態例（１）〉
以上の各実施の形態例の説明では、ブートプログラムの書き換えに失敗した場合に初期状態のブートプログラムあるいは書き換え前のブートプログラムを選択して起動するようにしていたが、これに限定されるものではない。すなわち、ブートプログラムを最新のものに書き換え成功した場合であっても、アプリケーションプログラムとの相性を診断するために、初期状態のブートプログラム、書き換え直前のブートプログラムを選択してブートすることも可能である。
【００９６】
〈その他の実施の形態例（２）〉
プログラム書換部１７０に相当するプログラムをブートプログラム内に持ち、ブートプログラム書換時には、このプログラムをＲＡＭ上にコピーして実行することも可能である。
【００９７】
【発明の効果】
以上説明したように本発明によれば、ブートプログラムの書き換えに失敗した場合であっても、ブートプログラムの書き換え自体は成功したものの異なるブートプログラムに書き換えてしまった場合であっても、装置を正常に起動することが可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態例のプログラム実行装置の全体構成例を示す構成図である。
【図２】本発明の第１の実施の形態例のプログラム実行装置の主要部の構成を示す構成図である。
【図３】本発明の第１の実施の形態例のプログラム実行装置の動作状態を示すフローチャートである。
【図４】本発明の第２の実施の形態例のプログラム実行装置の全体構成例を示す構成図である。
【図５】本発明の第２の実施の形態例のプログラム実行装置の動作状態を示すフローチャートである。
【図６】本発明の第３の実施の形態例のプログラム実行装置の全体構成例を示す構成図である。
【図７】本発明の第３の実施の形態例のプログラム実行装置の主要部の構成を示す構成図である。
【図８】本発明の第３の実施の形態例のプログラム実行装置の動作状態を示すフローチャートである。
【符号の説明】
１０１　ＣＰＵ
１１０　ＲＡＭ
１２０　操作表示部
１３０　機器動作制御部
１４０　プロセス制御部
１５０　フラッシュメモリ
１５１　ブートプログラムブロック
１５１ａ　ブートプログラム保存ブロック
１５２　ブートプログラムブロック
１５３　機器制御プログラムブロック
１６０　メモリ選択部
１７０　プログラム書換部
【図１】
2004054818.tif 000003
【図２】
2004054818.tif 000004
【図３】
2004054818.tif 000005
【図４】
2004054818.tif 000006
【図５】
2004054818.tif 000007
【図６】
2004054818.tif 000008
【図７】
2004054818.tif 000009
【図８】
2004054818.tif 000010