(57)【特許請求の範囲】
【請求項１】
外部機器から制御プログラムをダウンロードして書き換え可能なダウンロード装置において、２つ以上の通信手段と、起動プログラムを格納する第一の記憶手段と、書き換え可能な前記制御プログラムを格納する第二の記憶手段と、前記制御プログラム及び前記制御プログラムを前記第二の記憶手段に書き込む書き込み処理プログラムを含む受信データを格納可能な第三の記憶手段を備え、前記第一の記憶手段は、前記起動プログラムとしてオペレーティングシステムを必要としない処理で制御可能な特定の通信手段のみを用いて通信を行う第１の通信プログラムを記憶するとともに該第１の通信プログラムを用いて前記受信データをダウンロードして前記第三の記憶手段に格納し前記受信データ中の前記書き込み処理プログラムを起動する第１の受信プログラムを記憶しており、前記第二の記憶手段は、前記制御プログラムとしてオペレーティングシステムを必要とする処理で前記通信手段を用いて通信を行う第２の通信プログラムを記憶するとともに該第２の通信プログラムを用いて前記受信データをダウンロードして前記第三の記憶手段に格納し前記受信データ中の前記書き込み処理プログラムを起動する第２の受信プログラムを記憶しており、前記第二の記憶手段に記憶されている前記第２の受信プログラムを起動し前記第２の受信プログラムを用いて前記受信データを外部機器からダウンロードして前記第三の記憶手段に格納する第１の処理、または、前記第二の記憶手段に記憶されている前記制御プログラムが正当ではない場合に前記第一の記憶手段に記憶されている前記第１の受信プログラムを起動し前記第１の通信プログラムを用いて前記受信データを外部機器からダウンロードして前記第三の記憶手段に格納する第２の処理を行い、前記第１の処理または前記第２の処理により前記第三の記憶手段に格納された前記受信データ中の書き込み処理プログラムを起動して前記受信データ中の制御プログラムを前記第二の記憶手段に書き込む第３の処理を行う処理手段を有することを特徴とするダウンロード装置。
【請求項２】
前記処理手段は、起動モードがダウンロードモードであった場合に前記第１の処理で前記第２の受信プログラムを起動することを特徴とする請求項１に記載のダウンロード装置。
【請求項３】
前記第２の通信プログラムは、プロトコルスタックを必要とする通信処理を行うものであることを特徴とする請求項１または請求項２に記載のダウンロード装置。
【請求項４】
前記第１の通信プログラムは、プロトコルスタックを必要としない通信処理を行うものであることを特徴とする請求項１ないし請求項３のいずれか１項に記載のダウンロード装置。
【請求項５】
前記受信データは、符号化されたデータを復号するための復号化プログラムを含み、前記受信データ中の前記制御プログラムは符号化されたデータであり、前記処理手段は、前記第３の処理で前記復号化プログラムを用いて前記受信データ中の制御プログラムを復号して書き込み処理プログラムにより前記第二の記憶手段に書き込むことを特徴とする請求項１ないし請求項４のいずれか１項に記載のダウンロード装置。
【請求項６】
前記特定の通信手段以外の通信手段は、ネットワークインターフェイスであることを特徴とする請求項１ないし請求項５のいずれか１項に記載のダウンロード装置。
【請求項７】
前記特定の通信手段以外の通信手段は、ＩＥＥＥ１３９４準拠のインターフェイスであることを特徴とする請求項１ないし請求項５のいずれか１項に記載のダウンロード装置。
【請求項８】
前記特定の通信手段以外の通信手段は、ＵＳＢインターフェイスであることを特徴とする請求項１ないし請求項５のいずれか１項に記載のダウンロード装置。
【請求項９】
前記特定の通信手段以外の通信手段は、無線通信手段であることを特徴とする請求項１ないし請求項５のいずれか１項に記載のダウンロード装置。
【請求項１０】
前記特定の通信手段以外の通信手段は、光学通信手段であることを特徴とする請求項１ないし請求項５のいずれか１項に記載のダウンロード装置。
【請求項１１】
前記特定の通信手段は、シリアルインターフェイスであることを特徴とする請求項１ないし請求項１０のいずれか１項に記載のダウンロード装置。
【請求項１２】
前記特定の通信手段は、ＩＥＥＥ１２８４準拠のインターフェイスであることを特徴とする請求項１ないし請求項１０のいずれか１項に記載のダウンロード装置。
【請求項１３】
外部機器から制御プログラムをダウンロードして書き換え可能なダウンロード方法において、オペレーティングシステムを必要としない処理で制御可能な特定の通信手段のみを用いて通信を行う第１の通信プログラムを含むとともに該第１の通信プログラムを用いて前記制御プログラム及び前記制御プログラムを書き込む書き込み処理プログラムが含まれた受信データを受信する第１の受信プログラムを含む起動プログラムが第一の記憶手段に格納され、オペレーティングシステムを必要とする処理で前記通信手段を用いて通信を行う第２の通信プログラムを含むとともに該第２の通信プログラムを用いて前記受信データを受信する第２の受信プログラムを含む前記制御プログラムが第二の記憶手段に格納されており、処理手段が、前記第二の記憶手段に格納されている前記制御プログラムが正当であれば第１の処理として前記制御プログラム中の前記第２の受信プログラムを起動し前記第２の通信プログラムを用いて新たな制御プログラムおよび書き込み処理プログラムを含む受信データを受信して前記第三の記憶手段に格納し、第３の処理として前記受信データ中の前記書き込み処理プログラムを起動して前記受信データ中の前記制御プログラムを前記第二の記憶手段に書き込み、前記第二の記憶手段に格納されている前記制御プログラムが正当ではない場合には第２の処理として前記起動プログラム中の前記第１の受信プログラムを起動し前記第１の通信プログラムを用いて新たな制御プログラムおよび書き込み処理プログラムを含む前記受信データを受信して前記第三の記憶手段に格納し、前記第３の処理として前記受信データ中の前記書き込み処理プログラムを起動して前記受信データ中の前記制御プログラムを前記第二の記憶手段に書き込むことを特徴とするダウンロード方法。
【請求項１４】
前記制御プログラムが正当であって起動モードがダウンロードモードであった場合に、前記第２の受信プログラムを起動して前記受信データを受信することを特徴とする請求項１３に記載のダウンロード方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部機器から制御プログラムをダウンロードして書き換え可能な制御プログラムの書き換え機能に関するものである。
【０００２】
【従来の技術】
主にホストコンピュータと通信手段により接続される画像処理装置などの種々の装置においては、将来の機能拡張や不具合修正に対応するために、プログラムのバージョンアップ機能を提供している場合が多い。このような装置では、多くの場合、ダウンロード機能を持つ比較的容量の小さい起動プログラムとメインの制御プログラムとを別々の記憶領域または記憶装置に格納し、万一ダウンロードに失敗してメインの制御プログラムが破壊された場合に備えている。すなわち、ダウンロードによって制御プログラムを書き換えている途中でエラーが発生した場合、制御プログラムは正常に動作しなくなる。このような状態でも改めて制御プログラムのダウンロードが可能なように、ダウンロードのためのプログラムを制御プログラムとは別に格納している。また、このような装置では、本来の画像データ等のデータを転送する目的で設けられた通信手段を、ダウンロードするプログラムの転送手段として使用している。
【０００３】
一方、インターフェイスは年々高速化、インテリジェント化しており、通信制御プログラムは肥大し、かつ複雑になる傾向にある。これを解決する手段として、プロトコルスタック等が知られている。これは、下位層通信プロトコルの処理群であり、事実上、インテリジェントなインターフェイスの実装には必要不可欠なものとなっている。
【０００４】
しかし、上述のプロトコルスタック等は、多くの場合、オペレーティングシステムに依存する形で実装されている。従って、インテリジェントな通信インターフェイスを実装するためには、例えばオペレーティングシステムとプロトコルスタックといったバックボーンが必要である。このため、例えばネットワーク経由のダウンロード機能を提供するためには、前述の起動プログラムにオペレーティングシステムとプロトコルスタックを実装することになる。しかしこの場合には、単純なインターフェイスのみのプログラムと比較して、容量が飛躍的に増大することになる。また、近年ではホストコンピュータ等との通信手段として複数のインターフェイスを備えている場合が多く、その数は年々増加傾向にある。これら複数のインターフェイスへの対応は、起動プログラムの容量増大に拍車をかけている。
【０００５】
図６は、従来のプログラムダウンロード可能な装置における各プログラムの第１の構成例の説明図である。図６（Ａ）は起動プログラムの構成を示し、図６（Ｂ）はメインとなる制御プログラムの構成を示している。起動プログラムには、例えば電源投入時やリセット時などに動作するブートプログラムが含まれており、通常の動作時にはブートプログラムが図６（Ｂ）に示す制御プログラムを起動する。起動時のモードがダウンロードの場合には、起動プログラム内のダウンロードプログラムを起動し、外部から受け取るデータにより制御プログラム全体を書き換えることによってバージョンアップなどを行う。例えば特開平９−１９０３５４号公報などにおいても同様の構成が記載されている。
【０００６】
制御プログラムには上述のように各種の通信手段を利用可能にするため、オペレーティングシステム（ＯＳ）とプロトコルスタック（ＰＳ）、それぞれの通信手段に対応した通信ドライバなどを含んでいる。しかし、これらは新たな制御プログラムのダウンロード時には書き換えられるため、ダウンロード時に制御プログラム内のオペレーティングシステム、プロトコルスタック、通信ドライバなどを利用することができない。従って、ダウンロード時には起動プログラムのみを利用して制御プログラムのダウンロードを行うことになる。
【０００７】
従来は、起動プログラムの大きさは小さく抑えられており、図６（Ａ）にも示すように簡単に通信が可能な通信手段を動作させる通信ドライバと、その通信ドライバを利用して起動プログラムのダウンロード及び制御プログラムの書き換えを行うダウンロードプログラム程度しか搭載されていなかった。
【０００８】
このような構成では、ダウンロード時に利用可能な通信手段は、簡単に通信が可能な例えばＩＥＥＥ１２８４やシリアルインターフェイスなどに制限されてしまうとともに、通常は低速、低機能の通信しか行うことができない。従って、制御プログラムのダウンロードは非常に利用しづらいものとなっていた。
【０００９】
このような不便を改善するため、起動プログラムにおいても、より多くの、より高機能の通信手段を利用した通信を可能とすることが考えられている。図７は、従来のプログラムダウンロード可能な装置における各プログラムの第２の構成例の説明図である。図７に示す例では、制御プログラムのダウンロードを行う起動プログラム中にも、各種の通信手段による通信を可能とするため、オペレーティングシステムやプロトコルスタック、各種の通信ドライバなどを設けている。このような構成によれば、制御プログラムのダウンロードによって制御プログラムが利用できなくても、起動プログラムだけで各種の通信手段を利用し、制御プログラムのダウンロードを行うことができる。
【００１０】
しかし、このような構成の場合、起動プログラムと制御プログラムがそれぞれオペレーティングシステム、プロトコルスタック、通信ドライバなどを含めた容量の大きい通信制御プログラムを含んでいる。このように、同じ機能を実現するためのプログラムが２箇所に存在することになり、プログラム容量の無駄が生じることになる。
【００１１】
また、多くの場合、複雑な通信処理は不具合を含んでおり、バージョンアップの必要が生じる場合が多い。例えば通信ドライバなどのメンテナンスを行うためには、図７に示した例では同じ通信ドライバが起動プログラムと制御プログラムの両方に存在するため、起動プログラムと制御プログラムの両者のメンテナンスを行わなければならないという問題があった。この問題は、手間だけの問題ではなく、起動プログラムを書き換えなければならないというリスクを伴うことになる。すなわち、起動プログラムの書き換え中にエラーが発生した場合、最悪のケースでは装置は起動できなかったり、あるいは起動できてもダウンロード機能が存在しないために以後のメンテナンスが不能となるという可能性を含んでいる。
【００１２】
プログラム容量を減少させるための一つの方法として、オペレーティングシステムに依存しないプロトコルスタックの実装を行うことによって、重複するオペレーティングシステムを起動プログラムから削除することも可能である。しかし、これには多くの労力を要し、また必ずしも容量を小さくできるという保障がないという問題がある。また、通信ドライバなどの通信処理を起動プログラムに集約してメンテナンスを１カ所にし、また容量の削減を行うことも考えられる。しかし上述のように、起動プログラムの書き換えを行うことはリスクを伴うことになるため、有効な解決にはならない。
【００１３】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、制御プログラムにおいて利用可能な各種の通信手段を制御プログラムのダウンロード時にも利用可能にしながら、プログラム容量の増加を飛躍的に低減させたダウンロード装置及びダウンロード方法を提供することを目的とするものである。
【００１４】
【課題を解決するための手段】
本発明は、起動プログラムには、オペレーティングシステムを必要としない処理で制御可能な特定の通信手段のみを用いて通信を行う第１の通信プログラムと、その第１の通信プログラムを用いて制御プログラム及び制御プログラムを書き込む書き込み処理プログラムが含まれた受信データを受信し、受信データ中の書き込み処理プログラムを起動する第１の受信プログラムを含めておく。また制御プログラムには、少なくともオペレーティングシステムを必要とする処理で前記通信手段を用いて通信を行う第２の通信プログラムと、その第２の通信プログラムを用いて受信データを受信し、受信データ中の書き込み処理プログラムを起動する第２の受信プログラムを含めておく。そして、新たな制御プログラムのダウンロード時には、制御プログラム中の第２の受信プログラムを起動し、その第２の受信プログラムを用いて受信データを外部機器からダウンロードする。正常に受信できた場合に、受信データ中の書き込み処理プログラムを起動して制御プログラムを書き換える。また、制御プログラムが正当ではない場合には、第１の受信プログラムを起動し、その第１の通信プログラムを用いて受信データを外部機器からダウンロードする。そして、受信データ中の書き込み処理プログラムを起動して、受信データ中の制御プログラムを書き換える。
【００１５】
これによって、制御プログラム中のオペレーティングシステムを必要とする通信手段を利用して制御プログラムのダウンロードを行うことができる。従って、各種の通信手段を利用し、各通信手段の機能を有効に活用してダウンロードを行うことができ、利便性を向上させることができる。もちろん、制御プログラムのダウンロード時にエラーが発生し、制御プログラムが動作不能となっても、起動プログラムからオペレーティングシステムを必要としない処理で制御可能な通信手段を利用してダウンロードが可能であるので、不測の事態にも対応することができる。
【００１６】
また、大容量を必要とする複雑な処理を必要とする通信手段は制御プログラムの側のみに存在するため、これらの通信処理のための容量を削減できるとともに、起動プログラムにはオペレーティングシステムやプロトコルスタックなどを設けなくても構成可能であるので、起動プログラムの容量を大幅に低減することが可能である。
【００１７】
さらに、起動プログラムと制御プログラムの両方にそれぞれのプログラム容量に応じた受信プログラム（簡易受信プログラム）が設けられているので、いずれかを自動的に選択して利用することが可能であり、簡単に利用可能なインターフェイスを提供することができる。
【００２０】
【発明の実施の形態】
図１は、本発明の実施の一形態を含むシステムの一例の説明図である。図中、１は制御装置、２は外部装置、１１，１２は通信部、１３はＲＯＭ、１４は起動プログラム、１５は制御プログラム、１６はＲＡＭ、１７はＣＰＵ、２１は送信データである。制御装置１は、本発明のダウンロード装置を含み、また本発明のダウンロード方法により制御プログラム１５を外部装置２からダウンロード可能な装置である。この例では、制御装置１は２つの通信部１１，１２を有しているものとして図示している。しかしこの例に限らず、３以上の通信部を有する構成であってよい。ここでは、通信部１１は簡易な処理で制御可能な通信手段であるものとし、通信部１２は複雑な処理を必要とする通信手段であるものとする。通信部１１としては、ＩＥＥＥ１２８４準拠のインターフェイスやシリアルインターフェイスなどがある。また通信部１２としては、ネットワークインターフェイス、ＩＥＥＥ１３９４準拠のインターフェイス、ＵＳＢインターフェイス、無線通信インターフェイス、赤外線や光学通信インターフェイスなどがある。
【００２１】
ＲＯＭ１３は、ＣＰＵ１７によって実行されるプログラムや、実行時に利用するデータなどが格納されている。特にここでは、起動プログラム１４と、実際に制御装置において各種の機能を実現するための制御プログラム１５が格納されている。ここでは起動プログラム１４と制御プログラム１５を同じＲＯＭ１３内に格納しているように図示しているが、これに限らず、それぞれ異なるＲＯＭやその他の記憶手段に格納してもよい。少なくとも制御プログラム１５は、書き換え可能な領域あるいは記憶手段に格納されている。なお、起動プログラム１４と制御プログラム１５の詳細については後述する。
【００２２】
ＲＡＭ１６は、ＣＰＵ１７が動作する際にワークエリアとして利用することができる。なお、制御プログラムをダウンロードする際に、新たな制御プログラムを含む受信データを、このＲＡＭ１６に一旦格納するように構成してもよい。
【００２３】
ＣＰＵ１７は、ＲＯＭ１３内のプログラム（起動プログラム１４、制御プログラム１５など）に従って動作し、制御装置１全体の制御及び各種の機能を提供する。また、外部装置２から新たな制御プログラムを含む送信データ２１をダウンロードし、制御プログラム１５を書き換える処理についても実際に行う。
【００２４】
制御装置１には、このほかにも各種の構成を含んでいてよい。例えば制御装置１が画像形成装置であれば画像処理手段や画像形成エンジンなどを含んでいるであろうし、画像読取装置であれば画像読取手段や画像処理手段などを含んでいるであろう。そのほかの各種の装置であってももちろんよい。
【００２５】
図２は、起動プログラム１４と制御プログラム１５の第１の構成例の説明図である。図中、３１はブートプログラム、３２は通信ドライバ、３３はダウンロードプログラム、４１はオペレーティングシステム、４２はプロトコルスタック、４３，４４は通信ドライバ、４５は自己書き換えプログラム、４６はメインプログラムである。図２（Ａ）に示す起動プログラム１４では、電源投入時やリセット時などの起動時に動作するブートプログラム３１と、簡易な処理で制御可能な通信部１１を通じて通信を行うための通信ドライバ３２と、通信ドライバ３２を通じて制御プログラムのダウンロード及び書き換えを行うダウンロードプログラム３３を含んで構成されている。ここでは簡易な処理ではオペレーティングシステムやプロトコルスタックを要しないものとし、起動プログラム１４はオペレーティングシステムやプロトコルスタックを含んでいない。もちろん、必要に応じて最低限の構成を有していてもよい。
【００２６】
図２（Ｂ）に示す制御プログラム１５は、制御装置１を動作させるためのメインプログラム（ＭＡＩＮ）４６とともに、複雑な処理を必要とする通信部１２を通じて通信を行うための通信ドライバ４３を含んでいる。このような複雑な処理を行い、高機能の通信（及び高機能の制御動作）を実現するため、制御プログラム１５はオペレーティングシステム（ＯＳ）４１及びプロトコルスタック４２を有している。また、この例では通信部１１を通じて通信を行うための通信ドライバ４４も有している。この通信ドライバ４４は、起動プログラム１４中の通信ドライバ３２と同じものでもよいし、異なるプログラムであってもよい。通信ドライバ４４は、起動プログラム１４中の通信ドライバ３２よりもバージョンが新しく、相対的に高機能であることが予想されるので、制御プログラム１５が動作可能であれば通信ドライバ４４を利用することが望ましいと言える。
【００２７】
さらに制御プログラム１５には、自己書き換えプログラム４５が含まれている。自己書き換えプログラム４５は制御プログラム１５内に存在するため、制御プログラム１５内の通信ドライバ４３を利用可能である。従って、自己書き換えプログラム４５は、複雑な処理を必要とする通信部１２を通じて外部装置２との通信を行うことによって、外部装置２内の新たな制御プログラムを含む送信データ２１をダウンロードすることができる。ダウンロードした受信データ（送信データ２１）は、例えばＲＡＭ１６に一旦格納される。ＲＡＭ１６に格納された受信データのイメージを図２（Ｃ）に示している。この例では、受信データは制御プログラム１５そのものを含んでいる。自己書き換えプログラム４５は、正常にダウンロードが完了した後、制御プログラム１５を書き換える。この書き換えの処理中は、自己書き換えプログラム４５はＲＡＭ１６にロードされているので、自己書き換えプログラム４５自体が書き換えられても何ら問題はない。
【００２８】
図２に示すように、起動プログラム１４には、制御プログラム１５に存在する通信ドライバ４３に対応するプログラムを含んでおらず、従って複雑な処理が不要であることからオペレーティングシステム４１やプロトコルスタック４２に対応するプログラムも含んでいない。従って、起動プログラム１４のプログラムサイズは非常に小さくてよく、起動プログラム１４を格納するための容量も少なくて済む。また、上述のように新たな制御プログラムをダウンロードするための自己書き換えプログラム４５は制御プログラム１５中に存在するため、通信部１１と通信部１２のいずれも利用可能であり、ダウンロード時に利用するインターフェイスの選択肢が広がるとともに、複雑な処理が必要なインターフェイスについても利用することが可能である。
【００２９】
なお、制御プログラム１５から起動プログラム１４中の通信ドライバ３２やダウンロードプログラム３３を利用可能に構成することもできる。例えば制御プログラム１５には通信部１１を利用して通信を行うための通信ドライバ４４を設けずに、通信部１１を利用して通信を行う場合には起動プログラム１４中の通信ドライバ３２を利用するように構成することも可能である。また、例えば自己書き換えプログラム４５において通信部１１を利用して新たな制御プログラムのダウンロードを行う場合には、起動プログラム１４内のダウンロードプログラム３３を呼び出して利用するように構成してもよい。
【００３０】
図３は、本発明の実施の一形態におけるダウンロード動作の第１の例を示すフローチャートである。ここでは、起動プログラム１４と制御プログラム１５の構成が図２に示すような構成であるものとする。電源が投入されたり、あるいはリセットがかかる等、起動がかかると、Ｓ６１において起動プログラム１４中のブートプログラム３１が起動される。また、起動時には起動モードが指示されるものとする。ここでは少なくとも、通常の動作モードと、制御プログラムをダウンロードするダウンロードモードで動作するものとする。
【００３１】
ブートプログラム３１が起動されると、様々な初期設定を行うとともに、Ｓ６２において、制御プログラム１５が正当であるか否かの評価を行う。この評価は、例えばチェックサムのチェックなどによって行うことができる。
【００３２】
制御プログラム１５が正当であると判断された場合には、Ｓ６３において、制御プログラム１５を起動する。制御プログラム１５の起動は、オペレーティングシステム４１を起動してからオペレーティングシステム４１がメインプログラム４６を起動したり、あるいは、メインプログラム４６を直接起動してもよい。制御プログラム１５が起動されると、Ｓ６４において起動モードを判定する。起動モードがダウンロードモードではなく、通常の動作モードであれば、Ｓ６５においてメインプログラム４６に従った通常の動作を行う。
【００３３】
起動モードがダウンロードモードであった場合には、Ｓ６６において自己書き換えプログラム４５を起動する。そして自己書き換えプログラム４５は、制御プログラム１５上で動作可能な通信部１１または通信部１２のいずれかを用い、Ｓ６７において外部装置２内の送信データをダウンロードする。いずれの通信部を利用するかは、外部装置２との接続状態を判断して、自動的に切り替えることができる。外部装置２と複数の通信部を介して通信可能であれば、より効率のよい通信部を選択することができる。もちろん、ユーザの指示があれば、それに従ってもよい。
【００３４】
そしてＳ６８において、ダウンロードにより受信した受信データにより制御プログラム１５を書き換え、ダウンロードの処理を終了する。ダウンロード処理の終了後は、この例では再起動し、Ｓ６１から処理を再開する。また、ダウンロードあるいは書き換えの途中でエラーが発生した場合にも、再起動してＳ６１から処理を行えばよい。
【００３５】
Ｓ６２で制御プログラム１５が正当でないと判断された場合には、Ｓ６９において起動モードを判定し、ダウンロードモードであった場合には、Ｓ７０において起動プログラム１４内のダウンロードプログラム３３を起動する。ダウンロードプログラム３３は、Ｓ７１において、起動プログラム１４内の通信ドライバ３２により通信部１１を通じて外部装置２内の送信データをダウンロードし、ＲＡＭ１６に格納後、あるいは直接、制御プログラム１５を書き換える。この場合には複雑な処理が必要となる通信部１２は利用できない。しかし、起動プログラム１４内のダウンロードプログラム３３が起動されるのは、制御プログラム１５が存在しない、あるいはエラーが発生している、または新たな制御プログラムによる書き換えに失敗したなど、制御プログラム１５が通常の状態ではない場合であるので、ある程度の制限はやむを得ないと考えられる。
【００３６】
ダウンロード処理の終了後は、この例では再起動し、Ｓ６１から処理を再開する。また、ダウンロードあるいは書き換えの途中でエラーが発生した場合にも、再起動してＳ６１から処理を行えばよい。なお、ダウンロードプログラム３３によるダウンロード及び書き換えでエラーが発生する場合、ハードウェア的な障害が発生していることも考えられる。そのため、ダウンロードプログラム３３の動作中にエラーが発生した場合には、その旨をユーザに伝え、ダウンロード処理を終了してもよい。もちろん、数回のリトライの後に、そのような終了処理を行ってもよい。
【００３７】
Ｓ６２で制御プログラム１５が正当でないと判断され、Ｓ６９で起動モードがダウンロードモードでなかった場合の処理については任意であり、例えばＳ７２においてユーザに対して制御プログラム１５のダウンロードを促すメッセージを表示し、ユーザにダウンロードモードでの起動を指示してもよい。あるいは、例えばブートプログラム３１中のモニタ機能を動作させるなど、様々な処理が考えられる。
【００３８】
上述の動作例では、装置の起動時に起動モードとしてダウンロードモードを選択することによって制御プログラムのダウンロードを行うものとして説明したが、本発明はこれに限られるものではなく、種々の変形が可能である。例えば制御プログラム１５中のメインプログラム４６の動作中にダウンロードが指定されて自己書き換えプログラム４５が起動される構成や、外部装置２からダウンロードを指示するコマンドを受け取って自己書き換えプログラム４５が起動される構成も可能である。
【００３９】
図４は、起動プログラム１４と制御プログラム１５の第２の構成例の説明図である。図中、図２と同様の部分には同じ符号を付して説明を省略する。３４，４７は受信プログラム、５１は復号化プログラム、５２は書き込み処理プログラム、５３は符号化データである。図４（Ａ）に示す起動プログラム１４では、電源投入時やリセット時などの起動時に動作するブートプログラム３１と、簡易な処理で制御可能な通信部１１を通じて通信を行うための通信ドライバ３２と、通信ドライバ３２を通じて制御プログラム及びその制御プログラムを書き込むための書き込み処理プログラム５２を含むデータのダウンロードを行う受信プログラム３４を含んで構成されている。ここでは簡易な処理ではオペレーティングシステムやプロトコルスタックを要しないものとし、起動プログラム１４はオペレーティングシステムやプロトコルスタックを含んでいない。もちろん、必要に応じて最低限の構成を有していてもよい。
【００４０】
図４（Ｂ）に示す制御プログラム１５は、制御装置１を動作させるためのメインプログラム（ＭＡＩＮ）４６とともに、複雑な処理を必要とする通信部１２を通じて通信を行うための通信ドライバ４３を含んでいる。このような複雑な処理を行い、高機能の通信（及び高機能の制御動作）を実現するため、制御プログラム１５はオペレーティングシステム（ＯＳ）４１及びプロトコルスタック４２を有している。この例では通信部１１を通じて通信を行うための通信ドライバは制御プログラム１５中には存在せず、起動プログラム１４内の通信ドライバ３２を共用する構成とした例を示している。もちろん、図２と同様に制御プログラム１５においても通信部１１を通じて通信を行うための通信ドライバを有していてもよい。また制御プログラム１５から通信ドライバ３２に限らず、他の起動プログラム中の機能についても利用可能に構成してもよい。
【００４１】
さらに制御プログラム１５には、受信プログラム４７が含まれている。受信プログラム４７は制御プログラム１５内に存在するため、制御プログラム１５内の通信ドライバ４３を利用可能である。従って、受信プログラム４７は、複雑な処理を必要とする通信部１２を通じて外部装置２との通信を行うことによって、外部装置２内の新たな制御プログラムを含む送信データ２１をダウンロードすることができる。ダウンロードした受信データ（送信データ２１）は、例えばＲＡＭ１６に一旦格納される。
【００４２】
図４に示すように、起動プログラム１４には、制御プログラム１５に存在する複雑な処理が必要な通信ドライバ４３に対応するプログラムを含んでおらず、従って複雑な処理が不要であることからオペレーティングシステム４１やプロトコルスタック４２に対応するプログラムも含んでいない。従って、起動プログラム１４のプログラムサイズは非常に小さくてよく、起動プログラム１４を格納するための容量も少なくて済む。また、上述のように新たな制御プログラムをダウンロードするための受信プログラム４７は制御プログラム１５中に存在するため、通信部１２が利用可能であり、また起動プログラム１４内の通信ドライバ３２を呼び出すことにより通信部１１も利用可能である。従って、ダウンロード時に利用するインターフェイスの選択肢が広がるとともに、複雑な処理が必要なインターフェイスについても利用することが可能である。
【００４３】
ＲＡＭ１６に格納された受信データのイメージを図４（Ｃ）に示している。この例では、受信データ（外部装置２における送信データ２１）は制御プログラム１５を符号化した符号化データ５３と、その符号化データ５３を復号するための復号化プログラム５１と、制御プログラムを書き換える書き込み処理プログラム５２を含んでいる。もちろん、符号化していない制御プログラムをダウンロードする場合には、復号化プログラム５１は不要である。また、制御プログラムが符号化されている場合でも、起動プログラム１４や制御プログラム１５中の受信プログラム４７が復号機能を有していれば、復号化プログラム５１は不要である。
【００４４】
ここで書き込み処理プログラム５２は、図４（Ｃ）に示す受信データが正常にダウンロードされると、制御プログラム１５の受信プログラム４７から起動される。そして、復号化プログラム５１を利用して符号化データ５３を復号し、ＲＯＭ１３内の制御プログラム１５上に上書きする処理を行うものである。
【００４５】
図５は、本発明の実施の一形態におけるダウンロード動作の第２の例を示すフローチャートである。ここでは、起動プログラム１４と、制御プログラム１５、受信データの構成が図４に示すような構成であるものとする。電源が投入されたり、あるいはリセットがかかる等、起動がかかると、Ｓ８１において起動プログラム１４中のブートプログラム３１が起動される。また、起動時には起動モードが指示されるものとする。ここでは少なくとも、通常の動作モードと、制御プログラムをダウンロードするダウンロードモードで動作するものとする。
【００４６】
ブートプログラム３１が起動されると、様々な初期設定を行うとともに、Ｓ８２において、制御プログラム１５が正当であるか否かの評価を行う。この評価は、例えばチェックサムのチェックなどによって行うことができる。
【００４７】
制御プログラム１５が正当であると判断された場合には、Ｓ８３において、制御プログラム１５を起動する。制御プログラム１５の起動は、オペレーティングシステム４１を起動してからオペレーティングシステム４１がメインプログラム４６を起動したり、あるいは、メインプログラム４６を直接起動してもよい。制御プログラム１５が起動されると、Ｓ８４において起動モードを判定する。起動モードがダウンロードモードではなく、通常の動作モードであれば、Ｓ８５においてメインプログラム４６に従った通常の動作を行う。
【００４８】
起動モードがダウンロードモードであった場合には、Ｓ８６において制御プログラム１５中の受信プログラム４７を起動する。そして受信プログラム４７は、制御プログラム１５上で動作可能な通信ドライバ４３を利用した通信部１２による通信、あるいは起動プログラム１４内の通信ドライバ３２を利用した通信部１１による通信を行い、Ｓ８７において外部装置２内の送信データ２１をダウンロードし、受信データとしてＲＡＭ１６に一旦格納する。いずれの通信部を利用するかは、外部装置２との接続状態を判断して、自動的に切り替えることができる。外部装置２と複数の通信部を介して通信可能であれば、より効率のよい通信部を選択することができる。もちろん、ユーザの指示があれば、それに従ってもよい。
【００４９】
Ｓ８８において正常にダウンロードを行うことができたか否かを判定する。例えば通信エラーなどが発生した場合には、Ｓ８７へ戻って再度ダウンロードを行えばよい。このダウンロードでは制御プログラム１５を書き換えていないので、通信エラー時にも制御プログラム１５内の受信プログラム４７を利用可能である。なお、ダウンロードが無限に続かないように、数回のリトライの後にエラー処理を行ったり、あるいはＳ８１に戻って再起動してもよい。
【００５０】
正常にダウンロードが完了したら、Ｓ８９において、ダウンロードにより受信した受信データ中の書き込み処理プログラム５２を起動する。書き込み処理プログラム５２は、Ｓ９０において、同じく受信データ中の復号化プログラム５１を利用して符号化データ５３を復号しながら制御プログラム１５の書き換えを行う。書き換え終了後は、この例では再起動し、Ｓ８１から処理を再開する。また、書き換えの途中でエラーが発生した場合には、書き込み処理プログラム５２が再書き込みを実施したり、あるいは再起動してＳ８１から処理を行う。再書き込み時には、リトライ回数などで処理を打ち切るように構成しておくとよい。
【００５１】
Ｓ８２で制御プログラム１５が正当でないと判断された場合には、Ｓ９１において起動モードを判定し、ダウンロードモードであった場合には、Ｓ９２において起動プログラム１４内の受信プログラム３４を起動する。受信プログラム３４は、Ｓ９３において、起動プログラム１４内の通信ドライバ３２を利用し、通信部１１を通じて外部装置２内の送信データ２１をダウンロードし、ＲＡＭ１６に受信データとして格納する。
【００５２】
Ｓ９４において正常にダウンロードを行うことができたか否かを判定する。例えば通信エラーなどが発生した場合には、Ｓ９３へ戻って再度ダウンロードを行えばよい。あるいはエラー処理を行ってダウンロード処理を中止してもよい。なお、ダウンロードのリトライを行う場合でも、数回のリトライで成功しない場合にはエラー処理を行うように構成してもよい。
【００５３】
正常にダウンロードが完了したら、Ｓ８９に進み、上述のようにダウンロードにより受信した受信データ中の書き込み処理プログラム５２を起動し、Ｓ９０において復号化プログラム５１を利用して符号化データ５３を復号しながら制御プログラム１５の書き換えを行う。書き換え終了後は、この例では再起動し、Ｓ８１から処理を再開する。また、書き換えの途中でエラーが発生した場合には、書き込み処理プログラム５２が再書き込みを実施したり、あるいは再起動してＳ８１から処理を行う。再書き込み時には、リトライ回数などで処理を打ち切るように構成しておくとよい。
【００５４】
Ｓ８２で制御プログラム１５が正当でないと判断され、Ｓ９１で起動モードがダウンロードモードでなかった場合の処理については任意であり、例えばＳ９５においてユーザに対して制御プログラム１５のダウンロードを促すメッセージを表示し、ユーザにダウンロードモードでの起動を指示してもよい。あるいは、例えばブートプログラム３１中のモニタ機能を動作させるなど、様々な処理が考えられる。
【００５５】
上述の動作例では、装置の起動時に起動モードとしてダウンロードモードを選択することによって制御プログラムのダウンロードを行うものとして説明したが、本発明はこれに限られるものではなく、種々の変形が可能である。例えば制御プログラム１５中のメインプログラム４６の動作中にダウンロードが指定されて受信プログラム４７が起動される構成や、外部装置２からダウンロードを指示するコマンドを受け取って受信プログラム４７が起動される構成も可能である。
【００５６】
【発明の効果】
以上の説明から明らかなように、本発明によれば、プログラムの容量を飛躍的に低減することができるとともに、多くのインターフェイスからのダウンロードデータの受信を可能とすることができる。また、制御プログラム側に設けているダウンロード機能のアップグレードを、制御プログラムのバージョンアップによって行うことが可能である。さらに、制御プログラムのダウンロードに万一失敗した場合でも、起動プログラムからスタンドアロンで復旧が可能である。本発明によれば、このように種々の効果を有している。
【図面の簡単な説明】
【図１】  本発明の実施の一形態を含むシステムの一例の説明図である。
【図２】  起動プログラム１４と制御プログラム１５の第１の構成例の説明図である。
【図３】  本発明の実施の一形態におけるダウンロード動作の第１の例を示すフローチャートである。
【図４】  起動プログラム１４と制御プログラム１５の第２の構成例の説明図である。
【図５】  本発明の実施の一形態におけるダウンロード動作の第２の例を示すフローチャートである。
【図６】  従来のプログラムダウンロード可能な装置における各プログラムの第１の構成例の説明図である。
【図７】  従来のプログラムダウンロード可能な装置における各プログラムの第２の構成例の説明図である。
【符号の説明】
１…制御装置、２…外部装置、１１，１２…通信部、１３…ＲＯＭ、１４…起動プログラム、１５…制御プログラム、１６…ＲＡＭ、１７…ＣＰＵ、２１…送信データ、３１…ブートプログラム、３２…通信ドライバ、３３…ダウンロードプログラム、３４…受信プログラム、４１…オペレーティングシステム、４２…プロトコルスタック、４３，４４…通信ドライバ、４５…自己書き換えプログラム、４６…メインプログラム、４７…受信プログラム、５１…復号化プログラム、５２…書き込み処理プログラム、５３…符号化データ。
【図１】
0004013040.tif 000002
【図２】
0004013040.tif 000003
【図３】
0004013040.tif 000004
【図４】
0004013040.tif 000005
【図５】
0004013040.tif 000006
【図６】
0004013040.tif 000007
【図７】
0004013040.tif 000008