(57)【要約】【課題】  ダウンロードの手間が軽減された装置およびブートロード用プログラムを提供する。【解決手段】  ブートロード用プログラムに含まれるダウンロード用プログラムの実行により、アプリケーションプログラムが記憶されるアプリケーションプログラム領域１１＿１の先頭１１＿１ａと末尾１１＿１ｂとの双方に、そのアプリケーションプログラムに付された互いに同一のチェックコードを格納するものであって、ダウンロード終了後に電源が投入された時点でそれらのチェックコードの値を比較し、それらのチェックコードの値が互いに異なっていればダウンロードが失敗したと判定して、ブートロード用プログラムに含まれるダウンロード用プログラムを起動して再度アプリケーションプログラムのダウンロードを行なう。【選択図】  図２
2009053859.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを第１の記憶領域に記憶するとともに該第１の記憶領域へのアプリケーションプログラムの格納のためのダウンロード用プログラムを含むブートロード用プログラムを第２の記憶領域に記憶するソフトウェア記憶部と、
前記ソフトウェア記憶部に記憶されているブートロード用プログラムおよびアプリケーションプログラムを実行するソフトウェア実行部と、
前記ソフトウェア実行部における、前記ソフトウェア記憶部に記憶されているダウンロード用プログラムの実行により、アプリケーションプログラムを外部から入力して前記第１の記憶領域に記憶させるアプリケーション格納部と、
前記ソフトウェア実行部における、前記第１の記憶領域に記憶されているアプリケーションプログラムの実行により制御を受ける被制御部とを備え、
前記ダウンロード用プログラムが、前記ソフトウェア実行部における該ダウンロード用プログラムの実行により、前記アプリケーション格納部に、前記第１の記憶領域に記憶されるアプリケーションプログラムにユニークなチェックコードを該第１の記憶領域の先頭と末尾との双方に格納させるとともに、該先頭と該末尾の２つのチェックコードに挟まれた領域にアプリケーションプログラムを記憶させるものであることを特徴とする装置。
【請求項２】
前記ダウンロード用プログラムは、前記ソフトウェア実行部における該ダウンロード用プログラムの実行により、前記アプリケーション格納部に、前記第１の記憶領域に記憶されているアプリケーションプログラムのプログラムコードと同一のプログラムコードのアプリケーションプログラムを再格納させる場合においても、前記第１の記憶領域の先頭と末尾に、今回の格納についてユニークなチェックコードを格納させるものであることを特徴とする請求項１記載の装置。
【請求項３】
前記ブートロード用プログラムが、前記ソフトウェア実行部における該ブートロード用プログラムの実行により、前記第１の記憶領域の先頭と末尾の２つのチェックコードを比較し、互いに対応する場合に該第１の記憶領域に記憶されているアプリケーションプログラムを起動し、不対応の場合に、前記ダウンロード用プログラムを起動して該ダウンロード用プログラムを前記ソフトウェア実行部に実行させるものであることを特徴とする請求項１記載の装置。
【請求項４】
前記被制御部が、画像データの流れを制御するものであることを特徴とする請求項１から３のうちいずれか１項記載の装置。
【請求項５】
アプリケーションプログラムを第１の記憶領域に記憶するとともに該第１の記憶領域へのアプリケーションプログラムの格納のためのダウンロード用プログラムを含むブートロード用プログラムを第２の記憶領域に記憶するソフトウェア記憶部と、
前記ソフトウェア記憶部に記憶されているブートロード用プログラムおよびアプリケーションプログラムを実行するソフトウェア実行部と、
前記ソフトウェア実行部における、前記ソフトウェア記憶部に記憶されているダウンロード用プログラムの実行により、アプリケーションプログラムを外部から入力して前記第１の記憶領域に記憶させるアプリケーション格納部と、
前記ソフトウェア実行部における、前記第１の記憶領域に記憶されているアプリケーションプログラムの実行により制御を受ける被制御部とを備えた装置の、前記第２の記憶領域に記憶されるブートロード用プログラムであって、
前記ソフトウェア実行部における、前記ダウンロード用プログラムの実行により、前記アプリケーション格納部に、前記第１の記憶領域に記憶されるアプリケーションプログラムにユニークなチェックコードを該第１の記憶領域の先頭と末尾との双方に格納させるとともに、該先頭と該末尾の２つのチェックコードに挟まれた領域にアプリケーションプログラムを記憶させるものであることを特徴とするブートロード用プログラム。
【請求項６】
前記ソフトウェア実行部における前記ダウンロード用プログラムの実行により、前記アプリケーション格納部に、前記第１の記憶領域に記憶されているアプリケーションプログラムのプログラムコードと同一のプログラムコードのアプリケーションプログラムを再格納させる場合においても、前記第１の記憶領域の先頭と末尾に、今回の格納についてユニークなチェックコードを格納させるものであることを特徴とする請求項５記載のブートロード用プログラム。
【請求項７】
前記ソフトウェア実行部における前記ブートロード用プログラムの実行により、前記第１の記憶領域の先頭と末尾の２つのチェックコードを比較し、互いに対応する場合に該第１の記憶領域に記憶されているアプリケーションプログラムを起動し、不対応の場合に、前記ダウンロード用プログラムを起動して該ダウンロード用プログラムを前記ソフトウェア実行部に実行させるものであることを特徴とする請求項５又は６記載のブートロード用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置およびブートロード用プログラムに関する。
【背景技術】
【０００２】
従来より、原稿を読み取って画像データを取得する原稿読取部と、その原稿読取部で取得した画像データを入力して画像処理する画像処理部と、その画像処理部で画像処理された画像データに基づいた画像を用紙に記録するプリンタ部とを備えた画像制御装置が知られている。このような画像制御装置には、その画像制御装置を制御する制御プログラムが格納されている。ここで、画像制御装置の機能を高める等の理由により、制御プログラムを更新（バージョンアップ）するということが行なわれている。
【０００３】
例えば、特許文献１には、プリンタ装置の制御プログラムを更新するにあたり、ホストコンピュータから通信手段を用いて制御プログラムをダウンロードしてＲＡＭ上に展開し、展開した制御プログラムをフラッシュメモリに書き込む技術が提案されている。
【特許文献１】特開平７−３１４７９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここで、制御プログラム等のアプリケーションプログラムをダウンロードしている途中で、何らかの理由（例えば接続ケーブルが抜けたり、電源が切断された場合等）でダウンロードに失敗すると、そのダウンロード終了後に電源が投入された時点で装置が立ち上がらない場合が発生する。オペレータは、装置が立ち上がらないことから初めてダウンロードの失敗を認識し、オペレータが再度ダウンロードを実行しなければならないという問題がある。従って、ダウンロードに手間がかかるという問題がある。
【０００５】
本発明は、上記事情に鑑み、ダウンロードの手間が軽減された装置およびブートロード用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成する本発明の装置は、
アプリケーションプログラムを第１の記憶領域に記憶するとともにその第１の記憶領域へのアプリケーションプログラムの格納のためのダウンロード用プログラムを含むブートロード用プログラムを第２の記憶領域に記憶するソフトウェア記憶部と、
上記ソフトウェア記憶部に記憶されているブートロード用プログラムおよびアプリケーションプログラムを実行するソフトウェア実行部と、
上記ソフトウェア実行部における、上記ソフトウェア記憶部に記憶されているダウンロード用プログラムの実行により、アプリケーションプログラムを外部から入力して上記第１の記憶領域に記憶させるアプリケーション格納部と、
上記ソフトウェア実行部における、上記第１の記憶領域に記憶されているアプリケーションプログラムの実行により制御を受ける被制御部とを備え、
上記ダウンロード用プログラムが、上記ソフトウェア実行部におけるそのダウンロード用プログラムの実行により、上記アプリケーション格納部に、上記第１の記憶領域に記憶されるアプリケーションプログラムにユニークなチェックコードをその第１の記憶領域の先頭と末尾との双方に格納させるとともに、その先頭とその末尾の２つのチェックコードに挟まれた領域にアプリケーションプログラムを記憶させるものであることを特徴とする。
【０００７】
ここで、上記ダウンロード用プログラムは、上記ソフトウェア実行部におけるそのダウンロード用プログラムの実行により、上記アプリケーション格納部に、上記第１の記憶領域に記憶されているアプリケーションプログラムのプログラムコードと同一のプログラムコードのアプリケーションプログラムを再格納させる場合においても、上記第１の記憶領域の先頭と末尾に、今回の格納についてユニークなチェックコードを格納させるものであることが好ましい。
【０００８】
また、上記ブートロード用プログラムが、上記ソフトウェア実行部におけるそのブートロード用プログラムの実行により、上記第１の記憶領域の先頭と末尾の２つのチェックコードを比較し、互いに対応する場合にその第１の記憶領域に記憶されているアプリケーションプログラムを起動し、不対応の場合に、上記ダウンロード用プログラムを起動してそのダウンロード用プログラムを上記ソフトウェア実行部に実行させるものであることも好ましい態様である。
【０００９】
さらに、上記被制御部が、画像データの流れを制御するものであることも好ましい。
【００１０】
また、上記目的を達成する本発明のブートロード用プログラムは、
アプリケーションプログラムを第１の記憶領域に記憶するとともにその第１の記憶領域へのアプリケーションプログラムの格納のためのダウンロード用プログラムを含むブートロード用プログラムを第２の記憶領域に記憶するソフトウェア記憶部と、
上記ソフトウェア記憶部に記憶されているブートロード用プログラムおよびアプリケーションプログラムを実行するソフトウェア実行部と、
上記ソフトウェア実行部における、上記ソフトウェア記憶部に記憶されているダウンロード用プログラムの実行により、アプリケーションプログラムを外部から入力して上記第１の記憶領域に記憶させるアプリケーション格納部と、
上記ソフトウェア実行部における、上記第１の記憶領域に記憶されているアプリケーションプログラムの実行により制御を受ける被制御部とを備えた装置の、上記第２の記憶領域に記憶されるブートロード用プログラムであって、
上記ソフトウェア実行部における、上記ダウンロード用プログラムの実行により、上記アプリケーション格納部に、上記第１の記憶領域に記憶されるアプリケーションプログラムにユニークなチェックコードをその第１の記憶領域の先頭と末尾との双方に格納させるとともに、その先頭とその末尾の２つのチェックコードに挟まれた領域にアプリケーションプログラムを記憶させるものであることを特徴とする。
【００１１】
ここで、上記ソフトウェア実行部における上記ダウンロード用プログラムの実行により、上記アプリケーション格納部に、上記第１の記憶領域に記憶されているアプリケーションプログラムのプログラムコードと同一のプログラムコードのアプリケーションプログラムを再格納させる場合においても、上記第１の記憶領域の先頭と末尾に、今回の格納についてユニークなチェックコードを格納させるものであることが好ましい。
【００１２】
また、上記ソフトウェア実行部における上記ブートロード用プログラムの実行により、上記第１の記憶領域の先頭と末尾の２つのチェックコードを比較し、互いに対応する場合にその第１の記憶領域に記憶されているアプリケーションプログラムを起動し、不対応の場合に、上記ダウンロード用プログラムを起動してそのダウンロード用プログラムを上記ソフトウェア実行部に実行させるものであることも好ましい態様である。
【発明の効果】
【００１３】
請求項１記載の装置によれば、ブートロード用プログラムに含まれるダウンロード用プログラムの実行により、アプリケーションプログラムが記憶される第１の記憶領域の先頭と末尾との双方に、そのアプリケーションプログラムにユニークなチェックコードが格納される。このため、ダウンロード終了後に電源が投入された時点でそれらのチェックコードの値を比較し、それらのチェックコードの値が互いに対応していなければダウンロードに失敗したと判定して、ブートロード用プログラムに含まれるダウンロード用プログラムを起動して再度アプリケーションプログラムのダウンロードを行なうことができる。このようにすることにより、オペレータのダウンロードの手間を軽減することができる。
【００１４】
請求項２記載の装置によれば、アプリケーションプログラムのプログラムコードと同一のプログラムコードのアプリケーションプログラムのダウンロード時にエラーが発生した場合であっても、自動的に再度同一のプログラムコードのアプリケーションプログラムのダウンロードを行なうことができる。
【００１５】
請求項３記載の装置によれば、ダウンロードが成功した場合はアプリケーションプログラムを起動し、ダウンロードが失敗した場合は再度アプリケーションプログラムのダウンロードを行なうことができる。
【００１６】
請求項４記載の装置によれば、スキャナやプリンタを備えた画像制御装置を好適に実現することができる。
【００１７】
請求項５記載のブートロード用プログラムによれば、請求項１記載の装置に記憶されるブートロード用プログラムと同じ機能により、オペレータのダウンロードの手間を軽減することができる。
【００１８】
請求項６記載のブートロード用プログラムによれば、請求項２記載の装置に記憶するブートロード用プログラムと同じ機能により、自動的に再度同一のプログラムコードのアプリケーションプログラムのダウンロードを行なうことができる。
【００１９】
請求項７記載のブートロード用プログラムによれば、ダウンロードが成功した場合はアプリケーションプログラムを起動し、ダウンロードが失敗した場合は再度アプリケーションプログラムのダウンロードを行なうことができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態について説明する。
【００２１】
図１は、本発明の装置の一実施形態である画像制御装置の概略構成図、図２は、図１に示すフラッシュＲＯＭ上での各プログラムの配置を示す図である。
【００２２】
図１に示す画像制御装置１０には、本発明にいうソフトウェア記憶部の一例であるフラッシュＲＯＭ１１が備えられている。このフラッシュＲＯＭ１１は、図２に示すように、アプリケーションプログラム領域１１＿１（本発明にいう第１の記憶領域に相当）と、ブートロード用プログラム領域１１＿２（本発明にいう第２の記憶領域に相当）を有する。
【００２３】
アプリケーションプログラム領域１１＿１には、アプリケーションプログラムが格納される。このアプリケーションプログラムには、そのアプリケーションプログラムをダウンロードするためのダウンロード用プログラムが含まれている。また、アプリケーションプログラム領域１１＿１の先頭１１＿１ａ（フラッシュＲＯＭ１１の先頭）には、そのアプリケーションプログラムにユニークに付されたチェックコードが格納される。さらに、アプリケーションプログラム領域１１＿１の末尾１１＿１ｂにも、詳細は後述するが、アプリケーションプログラムのダウンロードが正常に終了した場合には、先頭のチェックコードと同じ値のチェックコードが格納される。また、アプリケーションプログラムは、アプリケーションプログラム領域１１＿１の、先頭１１＿１ａと末尾１１＿１ｂの２つのチェックコードに挟まれた領域部分に格納される。
【００２４】
一方、ブートロード用プログラム領域１１＿２には、本発明のブートロード用プログラムの一例であるブートロード用プログラムが格納される。このブートロード用プログラムには、アプリケーションプログラム領域１１＿１へのアプリケーションプログラムの格納のためのダウンロード用プログラムが含まれている。再び図１に戻って説明を続ける。
【００２５】
図１に示す画像制御装置１０には、ＣＰＵ１２（本発明にいうソフトウェア実行部に相当）と、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）デバイス１３が備えられている。
【００２６】
ＣＰＵ１２は、フラッシュＲＯＭ１１に記憶されているブートロード用プログラムやアプリケーションプログラムを実行する。また、ＵＳＢデバイス１３は、ＣＰＵ１２における、詳細は後述するが、フラッシュＲＯＭ１１に記憶されているダウンロード用プログラムの実行により、アプリケーションプログラムを外部のパーソナルコンピュータ（ＰＣと略記する）１００から入力してアプリケーションプログラム領域１１＿１に記憶させる。
【００２７】
また、画像制御装置１０には、ＣＰＵ１２における、アプリケーションプログラム領域１１＿１に記憶されているアプリケーションプログラムの実行により制御を受けるスキャナ１４およびプリンタ１５（本発明にいう被制御部に相当）が備えられている。
【００２８】
さらに、画像制御装置１０には、作業領域として使用されるＳＤＲＡＭ１６（本発明にいうアプリケーション格納部に相当）が備えられている。
【００２９】
ここで、図２に示すブートロード用プログラムに含まれるダウンロード用プログラムは、ＣＰＵ１２におけるそのダウンロード用プログラムの実行により、ＳＤＲＡＭ１６に、アプリケーションプログラム領域１１＿１の先頭１１＿１ａと末尾１１＿１ｂとの双方について互いに同一であって、かつアプリケーションプログラム領域１１＿１に記憶されるアプリケーションプログラムにユニークに付されたチェックコードを先頭１１＿１ａと末尾１１＿１ｂとの双方に格納させるとともに、先頭１１＿１ａと末尾１１＿１ｂの２つのチェックコードに挟まれた領域にアプリケーションプログラムを記憶させるものである。
【００３０】
また、このダウンロード用プログラムは、ＣＰＵ１２におけるこのダウンロード用プログラムの実行により、ＳＤＲＡＭ１６に、アプリケーションプログラム領域１１＿１に記憶されているアプリケーションプログラムのプログラムコードと同一のプログラムコードのアプリケーションプログラムを再格納させる場合においても、アプリケーションプログラム領域１１＿１の先頭１１＿１ａと末尾１１＿１ｂに、今回の格納についてユニークなチェックコードを格納させるものである。
【００３１】
ブートロード用プログラムは、ＣＰＵ１２におけるこのブートロード用プログラムの実行により、アプリケーションプログラム領域１１＿１の先頭１１＿１ａと末尾１１＿１ｂの２つのチェックコードを比較し、一致する場合にアプリケーションプログラム領域１１＿１に記憶されているアプリケーションプログラムを起動し、不一致の場合に、ダウンロード用プログラムを起動してこのダウンロード用プログラムをＣＰＵ１２に実行させるものである。
【００３２】
スキャナ１４およびプリンタ１５は、画像データの流れを制御するものである。具体的には、スキャナ１４は、このスキャナ１４の上に載せられた原稿送込ユニットから送り込まれた原稿の画像をスキャンすることで、その原稿の画像を表わす画像データを得たり、あるいはスキャナ１４の上部に嵌め込まれたプラテンガラスに載せられた原稿の画像の読取りを行なって画像データを得たりする。また、プリンタ１５は、スキャナ１４で得られた画像データに基づいた画像を用紙上に記録する。
【００３３】
図３は、各プログラムの関連を示す図である。
【００３４】
ブートロード用プログラムは、フラッシュＲＯＭ１１のアプリケーションプログラム領域１１＿１の先頭１１＿１ａと末尾１１＿１ｂの２つのチェックコードを比較する。比較した結果、一致する場合（ＯＫの場合）は、アプリケーションプログラムが起動される。その後、外部のＰＣ１００からのダウンロードの指示を受け、アプリケーションプログラムに含まれるダウンロード用プログラムが起動し、ＵＳＢデバイス１３を介して外部のＰＣ１００との通信を行なってダウンロードデータ（アプリケーションプログラムデータ）を受信して、フラッシュＲＯＭ１１のアプリケーションプログラム領域１１＿１に書き込む。
【００３５】
一方、フラッシュＲＯＭ１１のアプリケーションプログラム領域１１＿１の先頭１１＿１ａと末尾１１＿１ｂの２つのチェックコードを比較した結果、不一致の場合は、ブートロード用プログラムに含まれるダウンロード用プログラムが起動し、ＵＳＢデバイス１３を介して外部のＰＣ１００との通信を行なってダウンロードデータ（アプリケーションプログラムデータ）を受信して、フラッシュＲＯＭ１１のアプリケーションプログラム領域１１＿１に書き込む。
【００３６】
図４は、ブートロード用プログラムの処理フローを示す図である。
【００３７】
図１に示す画像制御装置１０の電源がオンすると、ブートロード用プログラムの処理が開始される。先ず、ステップＳ１において、各種レジスタの初期化（最低限必要なもののみ初期化）を行なう。次に、ステップＳ２において、外部デバイスや電源の初期化を行なう。さらに、ステップＳ３において、フラッシュＲＯＭ１１から、先頭と末尾のチェックコードを読み出してステップＳ４に進む。
【００３８】
ステップＳ４では、先頭と末尾のチェックコードが同じであるか否かが判定される。先頭と末尾のチェックコードが同じであると判定された場合は、ステップＳ５に進む。ステップＳ５では、アプリケーションプログラムコードをＳＤＲＡＭ１６に展開する。さらに、ステップＳ６に進み、アプリケーションプログラムの実行を開始する。一方、先頭と末尾のチェックコードが異なると判定された場合は、ステップＳ７に進む。ステップＳ７では、ダウンロード用プログラムコードをＳＤＲＡＭ１６に展開する。さらに、ステップＳ８に進み、ダウンロード用プログラムの実行を開始する。
【００３９】
図５は、ブートロード用プログラムに含まれるダウンロード用プログラムの機能を示す図である。
【００４０】
ブートロード用プログラムが起動すると、このダウンロード用プログラムの実行が開始される。先ず、ステップＳ１１において、ＵＳＢ通信機能を実行する。このＵＳＢ通信機能は、ＵＳＢデバイス１３の初期化と、ＰＣ１００とのパワーオンシーケンス（コンフィギュレーション/アドレス調停等）を行ない、その後、ＰＣ１００からのダウンロードの指示を受けて、フラッシュＲＯＭ１１へ書き込むためのダウンロードデータを受信する。
【００４１】
次に、ステップＳ１２において、チェックコード生成機能を実行する。このチェックコード生成機能は、ＰＣ１００からＵＳＢデバイス１３経由で受信したダウンロードデータに含まれるチェックコードと、フラッシュＲＯＭ１１に現在書き込まれているチェックコードとを比較し、適切なデータを生成してダウンロードデータに付加する。
【００４２】
さらに、ステップＳ１３において、フラッシュＲＯＭ書き込み機能を実行する。このフラッシュＲＯＭ書き込み機能は、チェックコードが付加されたダウンロードデータをフラッシュＲＯＭ１１に書き込む。書き込みの順序は以下の通りである。
１）フラッシュＲＯＭ１１の先頭にチェックコードを書き込む。
２）続く領域にアプリケーションプログラムのコードを書き込む。
３）アプリケーションプログラム領域の末尾にチェックコードを書き込む。
【００４３】
図６は、アプリケーションプログラムに含まれるダウンロード用プログラムの機能を示す図である。
【００４４】
このダウンロード用プログラムでは、ＰＣ１００との通信はアプリケーションプログラムが行なうため、このダウンロード用プログラムには、図５を参照して説明したＵＳＢ通信機能は含まれていない。
【００４５】
アプリケーションプログラムが起動してＰＣ１００との通信がＵＳＢデバイス１３を経由して行なわれる。その後、ＰＣ１００からのダウンロードの指示を受けて、ダウンロード用プログラムの実行が開始され、ダウンロードデータが受信される。
【００４６】
先ず、ステップＳ２１において、チェックコード生成機能を実行する。このチェックコード生成機能は、受信したダウンロードデータに含まれるチェックコードと、フラッシュＲＯＭ１１に現在書き込まれているチェックコードとを比較し、適切なデータを生成してダウンロードデータに付加する。
【００４７】
次に、ステップＳ２２において、フラッシュＲＯＭ書き込み機能を実行する。このフラッシュＲＯＭ書き込み機能は、チェックコードが付加されたダウンロードデータをフラッシュＲＯＭ１１に書き込む。尚、書き込みの順序は、図５で説明した書き込みの順序と同じであるため、説明は省略する。
【００４８】
図７は、チェックコードの形式を示す図である。
【００４９】
チェックコードの形式は、それぞれが８ビットで表わされる、メジャーバージョン，マイナバージョン，リビジョン，Ｄ／Ｌ（ダウンロード）カウントにより規定される。
【００５０】
メジャーバージョンの領域には、アプリケーションプログラムの大きな変更を示す値が格納される。また、マイナバージョンの領域には、アプリケーションプログラムの小さな変更を示す値が格納される。さらに、リビジョンの領域には、アプリケーションプログラムのさらに小さな変更を示す値が格納される。また、Ｄ／Ｌ（ダウンロード）カウントの領域には、同じバージョンのアプリケーションプログラムをダウンロードした際にカウントアップした値が格納され、別のバージョンのアプリケーションプログラムをダウンロードすると０の値が格納される。これにより、同じバージョンのアプリケーションプログラムをダウンロードしてエラーが発生した場合であっても、Ｄ／Ｌカウントの領域には、カウントアップした値が格納されないため、次に電源が投入された時点でエラーが発生したと判定することができる。
【００５１】
図８は、フラッシュＲＯＭ上におけるチェックコードの配置を示す図である。
【００５２】
図８に示すように、フラッシュＲＯＭ１１が有するアプリケーションプログラム領域１１＿１の０ページの先頭１１＿１ａと、そのアプリケーションプログラム領域１１＿１の最終ページの末尾１１＿１ｂに、それぞれ、チェックコードが配置されている。
【００５３】
ここで、前述したチェックコード生成機能におけるチェックコード生成処理は、以下のようである。
１）フラッシュＲＯＭ１１の先頭ページを読み取り、現在のチェックコードを抽出する。
２）上位モジュール（ＰＣ１００）から受け取ったデータの先頭から、新チェックコードを取り出す。
３）現在のチェックコードと新チェックコードの先頭の３バイト（図７に示すメジャーバージョン，マイナバージョン，リビジョン）を比較する。同じであった場合は、書き込むチェックコードは、現在のチェックコードのＤ／Ｌカウントを＋１した値にする。異なっていた場合は、書き込むチェックコードは、新チェックコード（Ｄ／Ｌカウント＝０）にする。
【００５４】
図９は、図１に示す画像制御装置におけるソフトウェア全体の動作フローを示す図である。
【００５５】
電源がオンされると、フラッシュＲＯＭ１１上のブートロード用プログラムが起動する。先ず、ステップＳ３１において、フラッシュＲＯＭ１１の先頭と末尾のチェックコードを読み出す。次に、ステップＳ３２において、先頭と末尾のチェックコードが同じであるか否かが判定される。先頭と末尾のチェックコードが同じであると判定された場合は、ステップＳ３３に進む。ステップＳ３３では、アプリケーションプログラムを起動する。一方、先頭と末尾のチェックコードが異なっていると判定された場合は、ステップＳ３４に進む。ステップＳ３４では、ダウンロード用プログラムコードをＳＤＲＡＭ１６に展開し実行を開始する。
【００５６】
次に、ステップＳ３５において、ＰＣ１００との通信を確立する。さらに、ステップＳ３６において、ＵＳＢデバイス１３を経由してダウンロードデータを受信する。次いで、ステップＳ３７において、現在のバージョンとダウンロードデータのバージョンを比較してステップＳ３８に進む。
【００５７】
ステップＳ３８では、現在のバージョンとダウンロードデータのバージョンが同じであるか否かが判定される。現在のバージョンとダウンロードデータのバージョンが異なっていると判定された場合は、ステップＳ３９に進む。ステップＳ３９では、書き込むチェックコードを、新バージョン番号（Ｄ／Ｌカウント＝０）にしてステップＳ４１に進む。一方、現在のバージョンとダウンロードデータのバージョンが同じであると判定された場合はステップＳ４０に進む。ステップＳ４０では、書き込むチェックコードを、同じバージョン番号（Ｄ／Ｌカウント＝現在の値＋１）にしてステップＳ４１に進む。
【００５８】
ステップＳ４１では、フラッシュＲＯＭ１１への書き込みを行なう。詳細には、フラッシュＲＯＭ１１の先頭にチェックコードを書き込む。また、フラッシュＲＯＭ１１にアプリケーションプログラムコードを書き込む。さらに、フラッシュＲＯＭ１１の末尾にチェックコードを書き込む。その後、このフローを終了する。
【００５９】
図１０は、ブートロード用プログラムの起動時にフラッシュＲＯＭの先頭と末尾のチェックコードが同じであった場合の処理を示す図である。
【００６０】
図１０に示すように、ブートロード用プログラムの起動時にフラッシュＲＯＭ１１の先頭と末尾のチェックコードがともに同じ値ａであった場合は、アプリケーションプログラムが起動され、その後、ＰＣ１００からのダウンロードの指示を受けて、ダウンロードが開始される。先ず、ステップＳ５１において、現在のバージョンとダウンロードデータのバージョンが同じであるか否かが判定される。現在のバージョンとダウンロードデータのバージョンが異なっていると判定された場合はステップＳ５２に進む。ステップＳ５２で、ダウンロードが成功した場合は、フラッシュＲＯＭ１１の先頭と末尾のチェックコードがともに同じ値ｂとなる。一方、接続ケーブルが抜けたり、電源が切断された場合でダウンロードが失敗した場合は、フラッシュＲＯＭ１１の先頭のチェックコードが値ｂとなり、末尾のチェックコードは値ａとなる。
【００６１】
また、ステップＳ５１において、現在のバージョンとダウンロードデータのバージョンが同じであると判定された場合はステップＳ５３に進む。ステップＳ５３では、先頭のチェックコードに＋１して、新しいチェックコードを生成する。次に、ステップＳ５４において、ダウンロードが成功した場合は、フラッシュＲＯＭ１１の先頭と末尾のチェックコードがともに同じ値ｃとなる。一方、接続ケーブルが抜けたり、電源が切断された場合でダウンロードが失敗した場合は、フラッシュＲＯＭ１１の先頭のチェックコードが値ｃとなり、末尾のチェックコードは値ａとなる。
【００６２】
図１１は、ブートロード用プログラムの起動時にフラッシュＲＯＭの先頭と末尾のチェックコードが異なっていた場合の処理を示す図である。
【００６３】
図１１に示すように、ブートロード用プログラムの起動時にフラッシュＲＯＭ１１の先頭と末尾のチェックコードがそれぞれ値ａ，値ｂであった場合は、ブートロード用プログラムでダウンロードが開始される。先ず、ステップＳ６１において、現在のバージョンとダウンロードデータのバージョンが同じであるか否かが判定される。現在のバージョンとダウンロードデータのバージョンが異なっていると判定された場合はステップＳ６２に進む。ステップＳ６２で、ダウンロードが成功した場合は、フラッシュＲＯＭ１１の先頭と末尾のチェックコードがともに同じ値ｃとなる。一方、接続ケーブルが抜けたり、電源が切断された場合でダウンロードが失敗した場合は、フラッシュＲＯＭ１１の先頭のチェックコードが値ｃとなり、末尾のチェックコードは値ｂとなる。
【００６４】
また、ステップＳ６１において、現在のバージョンとダウンロードデータのバージョンが同じであると判定された場合はステップＳ６３に進む。ステップＳ６３では、先頭のチェックコードに＋１して、新しいチェックコードを生成する。次に、ステップＳ６４において、ダウンロードが成功した場合は、フラッシュＲＯＭ１１の先頭と末尾のチェックコードがともに同じ値ｄとなる。一方、接続ケーブルが抜けたり、電源が切断された場合でダウンロードが失敗した場合は、フラッシュＲＯＭ１１の先頭のチェックコードが値ｄとなり、末尾のチェックコードは値ｂとなる。
【００６５】
尚、ここでは、アプリケーションプログラム領域の先頭と末尾に同一のチェックコードを格納する例について説明したが、例えば先頭に格納するチェックコードには先頭のチェックコードであることを表わすコードが付加され、末尾に格納するチェックコードには末尾のチェックコードであることを表わすコードが付加されているなど、互いに対応しており、互いに対応しているか否かを判定するものであれば、異なるチェックコードを先頭と末尾に格納してもよい。
【図面の簡単な説明】
【００６６】
【図１】本発明の装置の一実施形態である画像制御装置の概略構成図である。
【図２】図１に示すフラッシュＲＯＭ上での各プログラムの配置を示す図である。
【図３】各プログラムの関連を示す図である。
【図４】ブートロード用プログラムの処理フローを示す図である。
【図５】ブートロード用プログラムに含まれるダウンロード用プログラムの機能を示す図である。
【図６】アプリケーションプログラムに含まれるダウンロード用プログラムの機能を示す図である。
【図７】チェックコードの形式を示す図である。
【図８】フラッシュＲＯＭ上におけるチェックコードの配置を示す図である。
【図９】図１に示す画像制御装置におけるソフトウェア全体の動作フローを示す図である。
【図１０】ブートロード用プログラムの起動時にフラッシュＲＯＭの先頭と末尾のチェックコードが同じであった場合の処理を示す図である。
【図１１】ブートロード用プログラムの起動時にフラッシュＲＯＭの先頭と末尾のチェックコードが異なっていた場合の処理を示す図である。
【符号の説明】
【００６７】
１０  画像制御装置
１１  フラッシュＲＯＭ
１１＿１  アプリケーションプログラム領域
１１＿１ａ  アプリケーションプログラム領域の先頭
１１＿１ｂ  アプリケーションプログラム領域の末尾
１１＿２  ブートロード用プログラム領域
１２  ＣＰＵ
１３  ＵＳＢデバイス
１４  スキャナ
１５  プリンタ
１６  ＳＤＲＡＭ
１００  ＰＣ
【図１】
2009053859.tif 000003
【図２】
2009053859.tif 000004
【図３】
2009053859.tif 000005
【図４】
2009053859.tif 000006
【図５】
2009053859.tif 000007
【図６】
2009053859.tif 000008
【図７】
2009053859.tif 000009
【図８】
2009053859.tif 000010
【図９】
2009053859.tif 000011
【図１０】
2009053859.tif 000012
【図１１】
2009053859.tif 000013