(57)【要約】【課題】  何のプログラムも格納されていないサブ基板の不揮発性メモリに対して、許可されたメイン基板からのみのブートプログラムを初めとして各種プログラムのダウンロードを可能にする。【解決手段】  サブ基板２０はメイン基板１０に対して、サブ基板２０側のメモリ空間におけるブート領域の一部であるチェックプログラム領域のみを開放し、メイン基板１０は、開放された該領域に対してチェックプログラムをダウンロードする。サブ基板２０は、ダウンロードされた該チェックプログラムを起動して、接続されているメイン基板１０がプログラムのダウンロードが許可された許可対象であるか否かを判断し、許可対象であればサブ基板２０におけるメモリ空間のブート領域を開放し、許可対象でなければブート領域を開放しない。【選択図】  図１
2007058561.tif 000002
【特許請求の範囲】
【請求項１】
制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるためのプログラムをプログラム供給装置からダウンロードさせるプログラムダウンロードシステムのプログラムダウンロード方法であって、
上記制御装置は、上記プログラム供給装置に対して、上記不揮発性メモリにおけるブートプログラム領域の一部の所定領域のみを開放し、
上記プログラム供給装置は、上記制御装置において開放された上記所定領域にチェックプログラムをダウンロードさせ、
上記制御装置は、上記プログラム供給装置よりダウンロードされた上記チェックプログラムを起動して、接続されている上記プログラム供給装置が当該制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記不揮発性メモリにおける上記所定領域以外の領域も開放し、許可対象でなければ上記不揮発性メモリにおける上記所定領域以外の領域を開放しないことを特徴とするプログラムダウンロード方法。
【請求項２】
上記制御装置は、上記プログラム供給装置が許可対象であれば、上記不揮発性メモリにおけるブートプログラム領域分を開放することを特徴とする請求項１に記載のプログラムダウンロード方法。
【請求項３】
上記チェックプログラムには、上記プログラム供給装置に付されている装置固有の識別情報が含まれており、
上記制御装置における許可対象であるか否かの判断に、上記プログラム供給装置から取得される上記識別情報を用いることを特徴とする請求項１に記載のプログラムダウンロード方法。
【請求項４】
上記制御装置における許可対象であるか否かの判断に、上記制御装置に設けられるジャンパの設定を用いることを特徴とする請求項１に記載のプログラムダウンロード方法。
【請求項５】
制御装置と接続され、該制御装置とＩ／Ｆメモリ空間を共有し、該制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるプログラムを上記Ｉ／Ｆメモリ空間を介してダウンロードさせるプログラム供給装置であって、
接続されている上記プログラム供給装置が上記制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記制御装置が有する不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放し、許可対象でなければ上記不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放しない処理を実行させるチェックプログラムを、上記制御装置が有する上記不揮発性メモリにおけるブートプログラム領域にダウンロードさせるチェックプログラムダウンロード手段を備えることを特徴とするプログラム供給装置。
【請求項６】
上記チェックプログラムダウンロード手段は、
プログラム格納領域に格納されているチェックプログラムを参照して上記制御装置に送信するためのチェックプログラムを生成するプログラム生成手段と、
該チェックプログラム生成手段にて生成されたチェックプログラムを、上記Ｉ／Ｆメモリ空間を介して上記制御装置へと転送するプログラム送信手段とを備えることを特徴とする請求項５に記載のプログラム供給装置。
【請求項７】
自装置に付されている装置固有の識別情報を格納する識別情報格納領域を備え、
上記チェックプログラム生成手段は、上記識別情報格納領域を参照して、チェックプログラムに自装置の識別情報を組み入れることを特徴とする請求項６に記載のプログラム供給装置。
【請求項８】
上記チェックプログラムに、チェックプログラムのダウンロードの終了を示すチェックプログラムダウンロード終了情報を上記プログラム供給装置へ送信する処理を実行させる終了報知プログラムがさらに含まれていることを特徴とする請求項５に記載のプログラム供給装置。
【請求項９】
上記制御装置より上記チェックプログラムダウンロード終了情報を受信したか否かを判断する解析手段をさらに備え、
上記チェックプログラムダウンロード手段は、チェックプログラムを送信後、上記解析手段がチェックプログラムダウンロード終了情報を受信していない場合に、上記制御装置に対して上記チェックプログラムを再送することを特徴とする請求項８に記載のプログラム供給装置。
【請求項１０】
上記制御装置へのチェックプログラムのダウンロード状態をユーザに報知するダウンロード状態報知手段を、さらに備えることを特徴とする請求項５に記載のプログラム供給装置。
【請求項１１】
自装置の電源が投入されたか否かを判断する電源監視手段をさらに備え、
上記チェックプログラムダウンロード手段は、上記電源監視手段にて電源が投入されたと判断されると、上記制御装置にチェックプログラムをダウンロードさせる動作を開始すること特徴とする請求項５に記載のプログラム供給装置。
【請求項１２】
上記電源監視手段にて電源が投入されたと判断されると、上記制御装置にチェックプログラムをダウンロードさせる動作を開始することの可否を、上記チェックプログラムダウンロード手段に対して設定する設定手段を、さらに備えることを特徴とする請求項１１に記載のプログラム供給装置。
【請求項１３】
上記制御装置にチェックプログラムをダウンロードさせる動作の開始を、上記チェックプログラムダウンロード手段に対して指示する指示入力手段を、さらに備えることを特徴とする請求項５、又は１２に記載のプログラム供給装置。
【請求項１４】
外部装置と接続され、情報の入出力を可能にする入出力部を少なくとも２つ備えると共に、
上記制御装置と接続される入出力部とは別の入出力部を介して上記チェックプログラムを含む上記制御装置に対するダウンロード用プログラムを取得し、取得したダウンロード用プログラムが上記プログラム格納領域に格納されていない場合は取得したダウンロード用プログラムを格納する一方、既に格納されている場合は両ダウンロード用プログラムの比較を行い、取得したダウンロード用プログラムの方が新しければ上記プログラム格納領域の内容を更新するプログラム受信手段を、さらに備えることを特徴とする請求項６に記載のプログラム供給装置。
【請求項１５】
上記プログラム格納領域に、上記チェックプログラムを含む上記制御装置に対するダウンロード用プログラムが圧縮されて格納されていることを特徴とする請求項６に記載のプログラム供給装置。
【請求項１６】
制御装置と接続され、該制御装置とＩ／Ｆメモリ空間を共有し、該制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるプログラムを上記Ｉ／Ｆメモリ空間を介してダウンロードさせるプログラム供給装置のプログラム供給方法であって、
接続されている上記プログラム供給装置が上記制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記制御装置が有する不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放し、許可対象でなければ上記不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放しない処理を実行させるチェックプログラムを、上記制御装置が有する上記不揮発性メモリにおけるブートプログラム領域にダウンロードさせるチェックプログラムダウンロードステップを含むことを特徴とするプログラム供給方法。
【請求項１７】
プログラム供給装置と接続され、該プログラム供給装置とＩ／Ｆメモリ空間を共有し、該プログラム供給装置から、自装置が有する自装置を動作させるためのプログラムを格納するための不揮発性メモリに対して、自装置を動作させるためのプログラムがダウンロードされる制御装置であって、
自装置が有する上記不揮発性メモリのブートプログラム領域にブートプログラムが格納されていない状態で、上記不揮発性メモリのブートプログラム領域の一部の所定領域のみを上記Ｉ／Ｆメモリ空間に対して開放するチェックプログラム受付手段を備えることを特徴とする制御装置。
【請求項１８】
上記不揮発性メモリに、自装置へのプログラムのダウンロードが許可されている許可対象のプログラム供給装置に付された識別情報のリストが格納されていることを特徴とする請求項１７に記載の制御装置。
【請求項１９】
接続されているプログラム供給装置が、自装置へのプログラムのダウンロードが許可されている許可対象であることを指定するためのジャンパが設けられていることを特徴とする請求項１７に記載の制御装置。
【請求項２０】
プログラム供給装置と接続され、該プログラム供給装置とＩ／Ｆメモリ空間を共有し、該プログラム供給装置から、自装置が有する自装置を動作させるためのプログラムを格納するための不揮発性メモリに対して、自装置を動作させるためのプログラムがダウンロードされる制御装置の制御方法であって、
自装置が有する上記不揮発性メモリのブートプログラム領域にブートプログラムが格納されていない状態で、上記不揮発性メモリのブートプログラム領域の一部の所定領域のみを上記Ｉ／Ｆメモリ空間に対して開放するチェックプログラム受付ステップを含むことを特徴とする制御方法。
【請求項２１】
制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるためのプログラムをプログラム供給装置からダウンロードさせるプログラムダウンロードシステムであって、
請求項５〜１５の何れか１項に記載のプログラム供給装置と、請求項１７〜１９の何れか１項に記載の制御装置とからなるプログラムダウンロードシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置が有する当該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに対して、プログラムを書き込むためのプログラムダウンロードシステム及び方法、並びに該システムを構成するプログラム供給装置と制御装置に関するものである。
【背景技術】
【０００２】
たとえば、複合機等においては、印刷動作や画像処理などを実行するメイン基板（制御装置）に対して、各種機能を追加できるようにオプション設定されるサブ基板（制御装置）を増設できるものがある。このようなサブ基板としては、ＬＡＮ基板やＵＳＢ基板などが提供されている。
【０００３】
これらメイン基板及びサブ基板は一般的に、プログラムを実行するプロセッサであるＣＰＵと、基板内外における各種データの送受信を制御するＡＳＩＣと、基板を動作させるためのプログラムを格納するためのＲＯＭと、ＲＡＭ等で構成されている。そして、今日では、基板を動作させるためのプログラムを格納するためのＲＯＭとしては、アップグレードに対応するために、フラッシュ・メモリ等の不揮発性メモリを搭載するものが主流となってきている。
【０００４】
基板を動作させるためのプログラムは、通常、基板を最低限動作させるためのブートプログラムと、基板の全機能を動作させるためのメインプログラムとで構成されている。基板の初期設定や初期診断は、ブートプログラムにより行われる。
【０００５】
基板に対してのブートプログラムの提供は、フラッシュ・メモリ・ライタ（フラッシュＲＯＭライタ）などを使用してフラッシュ・メモリにブートプログラムを予めダウンロードしておき、該ダウンロード済のフラッシュ・メモリを基板上に実装することでなされることが一般的である。
【０００６】
また、その他の手法として、フラッシュ・メモリを含む周辺回路を、基板本体から独立したフラッシュ・メモリＤＩＭＭ基板等の別基板とし、該別基板を、基板本体に対して着脱自在な構成としているものもある。このような構成では、基板への部品実装の段階において必ずしもフラッシュ・メモリへのブートプログラムのダウンロード作業は必要なく、基板へ部品実装をした後からでも、基板より該別基板を外すことで、別基板に搭載されたフラッシュ・メモリに、専用プログラムライタなどを使用して、ブートプログラムをダウンロードすることができる。しかしながら、このような構成は、フラッシュ・メモリを別基板に搭載しているので、基板全体として必要な部品コストが高いというデメリットがある。
【０００７】
一方、特許文献１では、サブ基板のＭＰＵが、サブ基板に入力された書き換え用プログラム（ダウンロード用プログラムに相当）を、直接またはメイン基板のＭＰＵを介してメイン基板上のＲＡＭに格納し、該メイン基板のＲＡＭに格納された書き換え用プログラムをサブ基板上のフラッシュ・メモリに直接またはメイン基板のＣＰＵを介して書き込むデータ書き換え方法が提案されている。
【特許文献１】特開２００２-２５９１４８号（２００２年９月１３日公開）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところが、事前にブートプログラムを書き込んだフラッシュ・メモリを基板上に実装する従来の技術では、将来的に、サブ基板が複数種のメイン基板の共通オプションとなった場合、各種メイン基板に対応したブートプログラムを書き込んだサブ基板を各々用意する必要があり、共通オプションのメリットが生かせない。また、将来的に、ブートプログラムが機能拡張されたとしても、ブートプログラムのバージョンアップを実現することができない。
【０００９】
なお、フラッシュ・メモリを、基板に対して着脱自在に構成された別基板に搭載する従来の技術においては、接続されるメイン基板に対応させてブートプログラムを書き込むことができるため、上のような問題は発生しないが、前述したように、別基板としているので、部品コストが高いといったデメリットがあり、好ましくない。
【００１０】
このような課題に対する解決策の一つとして、メイン基板側からサブ基板のフラッシュ・メモリにサブ基板のプログラムを直接ダウンロードする構成が考えられる。これによれば、サブ基板のフラッシュ・メモリには、メイン基板からそれに応じたブートプログラムがダウンロードされるので、対応するブートプログラムが書き込まれたサブ基板をメイン基板の種類に応じて用意しなくても済む。
【００１１】
しかしながら、この場合、何の工夫もなく、サブ基板のフラッシュ・メモリをメイン基板に対して開放すると、メイン基板はサブ基板のフラッシュ・メモリに対して自由にデータをダウンロードすることが可能となるため、メイン基板からサブ基板に対して不正なデータをダウンロードして、サブ基板が本来意図していない用途に用いられるといった惧れがある。また、誤ったプログラムをサブ基板にダウンロードした場合、サブ基板が起動しなくなる可能性もある。
【００１２】
なお、上記した特許文献１では、サブ基板のＣＰＵを動作させるためのプログラムが最低限必要であり、サブ基板にプログラムが何もない状態からのデータのダウンロード方法については、特に言及するものではない。
【００１３】
本発明は上記課題に鑑みなされたものであって、プログラムが何もない状態の制御装置に、許可されているプログラム供給装置からのみ選択的にプログラムをダウンロードさせることが可能なプログラムダウンロードシステム及びその方法、並びに該プログラムダウンロード方法を実施し、該システムを構成するプログラム供給装置と制御装置を提供することであり、ひいては、ある制御装置が複数種の他の主たる制御装置の共通オプションとなった場合でも、共通オプションのメリットが生かせ、また、ブートプログラムが機能拡張されたとしても、ブートプログラムのバージョンアップにも容易に対応可能にすることを目的としている。
【課題を解決するための手段】
【００１４】
本発明に係るプログラムダウンロード方法は、上記課題を解決するために、制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるためのプログラムをプログラム供給装置からダウンロードさせるプログラムダウンロードシステムのプログラムダウンロード方法であって、上記制御装置は、上記プログラム供給装置に対して、上記不揮発性メモリにおけるブートプログラム領域の一部の所定領域のみを開放し、上記プログラム供給装置は、上記制御装置において開放された上記所定領域にチェックプログラムをダウンロードさせ、上記制御装置は、上記プログラム供給装置よりダウンロードされた上記チェックプログラムを起動して、接続されている上記プログラム供給装置が当該制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記不揮発性メモリにおける上記所定領域以外の領域も開放し、許可対象でなければ上記不揮発性メモリにおける上記所定領域以外の領域を開放しないことを特徴としている。
【００１５】
これによれば、制御装置では、その不揮発性メモリにおけるブートプログラム領域の一部の所定領域にプログラム供給装置よりダウンロードされたチェックプログラムを起動することで、接続されているプログラム供給装置が自装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば不揮発性メモリにおける上記所定領域以外の領域も開放するが、許可対象でなければ不揮発性メモリにおける上記所定領域以外の領域を開放しない。
【００１６】
しかも、制御装置がプログラム供給装置に対して、チェックプログラムをダウンロードするために解放する不揮発性メモリにおける領域は、ブートプログラム領域の一部の所定領域のみであるので、プログラム供給装置が、該所定領域にブートプログラムをダウンロードさせようとしても、ブートプログラムを全て格納することはできず制御装置を動作させることはできない。
【００１７】
したがって、制御装置に対しては、その不揮発性メモリに何のプログラムも格納されていない状態であっても、許可されているプログラム供給装置からのみ選択的にブートプログラムを始めとして、種々のプログラム（ダウンロード用プログラム）をダウンロードさせることが可能となり、制御装置に対して、不正なデータがダウンロードされてしまい、本来意図していない用途に使用されたり、制御装置が起動しなくなったりすることがない。
【００１８】
上記した本発明のプログラムダウンロード方法においては、さらに、制御装置は、プログラム供給装置が許可対象であれば、上記不揮発性メモリにおけるブートプログラム領域分を開放することが好ましい。
【００１９】
これによれば、チェックプログラムにより、制御装置と接続されているプログラム供給装置が、プログラムのダウンロードが許可されている許可対象であると判断されたとしても、制御装置は、自装置を最低限動作させるために必要なブートプログラム領域のみを開放するので、ブートプログラム領域以外の領域に対して、本来意図していないプログラムがダウンロードされることを未然に防止することができる。
【００２０】
上記した本発明のプログラムダウンロード方法においては、さらに、上記チェックプログラムには、プログラム供給装置に付されている装置固有の識別情報が含まれており、制御装置における許可対象であるか否かの判断に、プログラム供給装置から取得される上記識別情報を用いることが好ましい。
【００２１】
これによれば、制御装置側に、許可対象であるプログラム供給装置の識別情報リスト等は必要になるものの、制御装置が、接続されているプログラム供給装置からの識別情報を基に許可対象であるか否かを判断することができるので、許可されていないプログラム供給装置からのプログラムのダウンロードを一切排除することができる。
【００２２】
上記した本発明のプログラムダウンロード方法においては、さらに、制御装置における許可対象であるか否かの判断に、制御装置に設けられるジャンパの設定を用いることが好ましい。
【００２３】
これによれば、制御装置に設けたジャンパ設定により、接続されているプログラム供給装置を許可対象に指定することができるので、制御装置側に許可対象であるプログラム供給装置の識別情報リスト等を具備させておかなくても、許可対象のプログラム供給装置を簡単に指定することができる。
【００２４】
本発明のプログラム供給装置は、制御装置と接続され、該制御装置とＩ／Ｆメモリ空間を共有し、該制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるプログラムを上記Ｉ／Ｆメモリ空間を介してダウンロードさせるプログラム供給装置であって、接続されている上記プログラム供給装置が上記制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記制御装置が有する不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放し、許可対象でなければ上記不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放しない処理を実行させるチェックプログラムを、上記制御装置が有する上記不揮発性メモリにおけるブートプログラム領域にダウンロードさせるチェックプログラムダウンロード手段を備えることを特徴としている。
【００２５】
本発明のプログラム供給装置のプログラム供給方法は、上記課題を解決するために、制御装置と接続され、該制御装置とＩ／Ｆメモリ空間を共有し、該制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるプログラムを上記Ｉ／Ｆメモリ空間を介してダウンロードさせるプログラム供給装置のプログラム供給方法であって、接続されている上記プログラム供給装置が上記制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記制御装置が有する不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放し、許可対象でなければ上記不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放しない処理を実行させるチェックプログラムを、上記制御装置が有する上記不揮発性メモリにおけるブートプログラム領域にダウンロードさせるチェックプログラムダウンロードステップを含むことを特徴としている。
【００２６】
本発明の制御装置は、上記課題を解決するために、プログラム供給装置と接続され、該プログラム供給装置とＩ／Ｆメモリ空間を共有し、該プログラム供給装置から、自装置が有する自装置を動作させるためのプログラムを格納するための不揮発性メモリに対して、自装置を動作させるためのプログラムがダウンロードされる制御装置であって、自装置が有する上記不揮発性メモリのブートプログラム領域にブートプログラムが格納されていない状態で、上記不揮発性メモリのブートプログラム領域の一部の所定領域のみを上記Ｉ／Ｆメモリ空間に対して開放するチェックプログラム受付手段を備えることを特徴としている。
【００２７】
本発明の制御装置の制御方法は、上記課題を解決するために、プログラム供給装置と接続され、該プログラム供給装置とＩ／Ｆメモリ空間を共有し、該プログラム供給装置から、自装置が有する自装置を動作させるためのプログラムを格納するための不揮発性メモリに対して、自装置を動作させるためのプログラムがダウンロードされる制御装置の制御方法であって、自装置が有する上記不揮発性メモリのブートプログラム領域にブートプログラムが格納されていない状態で、上記不揮発性メモリのブートプログラム領域の一部の所定領域のみを上記Ｉ／Ｆメモリ空間に対して開放するチェックプログラム受付ステップを含むことを特徴としている
これによれば、プログラム供給装置は、チェックプログラムダウンロード手段が、接続されている制御装置における不揮発性メモリのブートプログラム領域に対して、接続されているプログラム供給装置が該制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば該制御装置が有する不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放し、許可対象でなければ不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放しない処理を実行させるチェックプログラムをダウンロードさせる。
【００２８】
一方、制御装置では、チェックプログラム受付手段が、自装置が有する不揮発性メモリのブートプログラム領域にブートプログラムが格納されていない状態で、不揮発性メモリのブートプログラム領域の一部の所定領域のみを上記Ｉ／Ｆメモリ空間に対して開放する。
【００２９】
したがって、チェックプログラムダウンロード手段を備えたプログラム供給装置とチェックプログラム受付手段を備えた制御装置とにより、前述した本発明のプログラムダウンロードシステムにおけるプログラムダウンロード方法を容易に実施することができる。
【００３０】
上記した本発明のプログラム供給装置においては、さらに、上記チェックプログラムダウンロード手段は、プログラム格納領域に格納されているチェックプログラムを参照して上記制御装置に送信するためのチェックプログラムを生成するプログラム生成手段と、該チェックプログラム生成手段にて生成されたチェックプログラムを、上記Ｉ／Ｆメモリ空間を介して上記制御装置へと転送するプログラム送信手段とで構成することができる。
【００３１】
また、本発明のプログラム供給装置においては、さらに、自装置に付されている装置固有の識別情報を格納する識別情報格納領域を備え、上記チェックプログラム生成手段は、上記識別情報格納領域を参照して、チェックプログラムに自装置の識別情報を組み入れる構成とすることができる。
【００３２】
そして、このようなプログラム供給装置とでプログラムダウンロードシステムを構成する本発明の制御装置としては、さらに、上記不揮発性メモリに、自装置へのプログラムのダウンロードが許可されている許可対象のプログラム供給装置に付された識別情報のリストが格納されている構成とすることが好ましい。
【００３３】
このようなプログラム供給装置と制御装置の構成とすることで、前述した、制御装置側で接続されているプログラム供給装置からの識別情報を基に許可対象であるか否かを判断して、許可されていないプログラム供給装置からのプログラムのダウンロードを一切排除することができるといった、本発明のプログラムダウンロード方法を容易に実施することができる。
【００３４】
また、本発明の制御装置においては、自装置と接続されているプログラム供給装置が、自装置へのプログラムのダウンロードが許可されている許可対象であることを指定するためのジャンパが設けられている構成とすることもできる。
【００３５】
このような構成とすることで、前述した、制御装置側に許可対象であるプログラム供給装置の識別情報リスト等を具備させておかなくても、許可対象のプログラム供給装置を簡単に指定することができるといった、本発明のプログラムダウンロード方法を容易に実施することができる。
【００３６】
さらに、本発明のプログラム供給装置においては、上記チェックプログラムに、チェックプログラムのダウンロードの終了を示すチェックプログラムダウンロード終了情報を上記プログラム供給装置へ送信する処理を実行させる終了報知プログラムがさらに含まれている構成としてもよい。
【００３７】
これによれば、制御装置からチェックプログラムを正常にダウンロードできたことが通知されてくるので、プログラム供給装置側で、チェックプログラムのダウンロードが正常に終了したことを確認することができる。
【００３８】
さらに、本発明のプログラム供給装置においては、上記制御装置より上記チェックプログラムダウンロード終了情報を受信したか否かを判断する解析手段をさらに備え、上記チェックプログラムダウンロード手段は、チェックプログラムを送信後、上記解析手段がチェックプログラムダウンロード終了情報を受信していない場合に、上記制御装置に対して上記チェックプログラムを再送する構成としてもよい。
【００３９】
これによれば、プログラム供給装置から制御装置に対してチェックプログラムをダウンロードする時に、何らかの影響でチェックプログラムを正常にダウンロードできず、プログラム供給装置の解析手段が、制御装置からのチェックプログラムダウンロード終了情報を受信できない場合、チェックプログラムダウンロード手段が制御装置に対してチェックプログラムを再送して再度ダウンロードさせるので、チェックプログラムダウンロード作業を確実に実施することができる。
【００４０】
さらに、本発明のプログラム供給装置においては、上記制御装置へのチェックプログラムのダウンロード状態をユーザに報知するダウンロード状態報知手段をさらに備える構成としてもよい。
【００４１】
報知されるダウンロード状態としては、例えば、チェックプログラムのダウンロード中であること、チェックプログラムのダウンロードが終了したこと、或いはチェックプログラムのダウンロードが許可されていないことなどを挙げることができる。
【００４２】
このように、チェックプログラムダウンロードの状態をユーザに報知することで、チェックプログラムのダウンロード途中に、プログラム供給装置あるいは制御装置の電源を落とされることに対して未然に注意を促すことができる、またはプログラムのダウンロードが許可されていないプログラム供給装置に対して制御装置を誤って装着している場合に、プログラムダウンロードが許可されていない旨をユーザに報知することができる。
【００４３】
さらに、本発明のプログラム供給装置においては、自装置の電源が投入されたか否かを判断する電源監視手段をさらに備え、上記チェックプログラムダウンロード手段は、上記電源監視手段にて電源が投入されたと判断されると、上記制御装置にチェックプログラムをダウンロードさせる動作を開始する構成としてもよい。
【００４４】
これによれば、プログラム供給装置に電源が投入された時に、プログラム供給装置に装着されている制御装置に対して自動的にチェックプログラムがダウンロードされるので、チェックプログラムのダウンロードをユーザによるオペレーションを介在することなく実施することができる。
【００４５】
さらに、本発明のプログラム供給装置においては、上記電源監視手段にて電源が投入されたと判断されると、上記制御装置にチェックプログラムをダウンロードさせる動作を開始することの可否を、上記チェックプログラムダウンロード手段に対して設定する設定手段をさらに備える構成としてもよい。
【００４６】
これによれば、設定手段によって、プログラム供給装置への電源投入時におけるチェックプログラムの自動ダウンロードの可否を設定することができるので、例えば、プログラム供給装置の不揮発性メモリに格納されているチェックプログラムのバージョンが古い場合など、ユーザが制御装置へのチェックプログラムのダウンロードを希望しない場合は、上記設定手段を用いて自動ダウンロードを拒否することができる。
【００４７】
さらに、本発明のプログラム供給装置においては、上記制御装置にチェックプログラムをダウンロードさせる動作の開始を、上記チェックプログラムダウンロード手段に対して指示する指示入力手段をさらに備える構成としてもよい。
【００４８】
これによれば、指示入力手段を用いて、ユーザは所望のタイミングで制御装置に対してチェックプログラムをダウンロードさせることが可能となる。
【００４９】
さらに、本発明のプログラム供給装置においては、外部装置と接続され、情報の入出力を可能にする入出力部を少なくとも２つ備えると共に、上記制御装置と接続される入出力部とは別の入出力部を介して上記チェックプログラムを含む上記制御装置に対するダウンロード用プログラムを取得し、取得したダウンロード用プログラムが上記プログラム格納領域に格納されていない場合は取得したダウンロード用プログラムを格納する一方、既に格納されている場合は両ダウンロード用プログラムの比較を行い、取得したダウンロード用プログラムの方が新しければ上記プログラム格納領域の内容を更新するプログラム受信手段をさらに備える構成としてもよい。
【００５０】
これによれば、制御装置とプログラム供給装置とが接続され、制御装置へのプログラムのダウンロードが必要となった時に、プログラム供給装置は、制御装置と接続されている入出力部とは異なる別の入出力部を経由して、その都度、ダウンロードするダウンロード用プログラム（チェックプログラムを含む）を取得することが可能となるので、ダウンロード用プログラムをプログラム供給装置のプログラム格納領域に常時格納しておく必要がなく、プログラム供給装置におけるプログラム格納領域を圧迫することがない。
【００５１】
さらに、本発明のプログラム供給装置においては、上記プログラム格納領域に、上記チェックプログラムを含む上記制御装置に対するダウンロード用プログラムが圧縮されて格納されている構成としてもよい。
【００５２】
このように、ダウンロード用プログラムをプログラム供給装置のプログラム格納領域に圧縮して格納しておくことで、プログラム供給装置におけるプログラム格納領域の圧迫を軽減することができる。
【発明の効果】
【００５３】
本発明に係るプログラムダウンロード方法は、以上のように、制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるためのプログラムをプログラム供給装置からダウンロードさせるプログラムダウンロードシステムのプログラムダウンロード方法であって、上記制御装置は、上記プログラム供給装置に対して、上記不揮発性メモリにおけるブートプログラム領域の一部の所定領域のみを開放し、上記プログラム供給装置は、上記制御装置において開放された上記所定領域にチェックプログラムをダウンロードさせ、上記制御装置は、上記プログラム供給装置よりダウンロードされた上記チェックプログラムを起動して、接続されている上記プログラム供給装置が当該制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記不揮発性メモリにおける上記所定領域以外の領域も開放し、許可対象でなければ上記不揮発性メモリにおける上記所定領域以外の領域を開放しないものである。
【００５４】
本発明のプログラム供給装置は、以上のように、制御装置と接続され、該制御装置とＩ／Ｆメモリ空間を共有し、該制御装置が有する該制御装置を動作させるためのプログラムを格納するための不揮発性メモリに、該制御装置を動作させるプログラムを上記Ｉ／Ｆメモリ空間を介してダウンロードさせるプログラム供給装置であって、接続されている上記プログラム供給装置が上記制御装置へのプログラムのダウンロードを許可されている許可対象であるか否かを判断し、許可対象であれば上記制御装置が有する不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放し、許可対象でなければ上記不揮発性メモリのメモリ領域をＩ／Ｆメモリ空間に対して開放しない処理を実行させるチェックプログラムを、上記制御装置が有する上記不揮発性メモリにおけるブートプログラム領域にダウンロードさせるチェックプログラムダウンロード手段を備える構成である。
【００５５】
本発明の制御装置は、以上のように、プログラム供給装置と接続され、該プログラム供給装置とＩ／Ｆメモリ空間を共有し、該プログラム供給装置から、自装置が有する自装置を動作させるためのプログラムを格納するための不揮発性メモリに対して、自装置を動作させるためのプログラムがダウンロードされる制御装置であって、自装置が有する上記不揮発性メモリのブートプログラム領域にブートプログラムが格納されていない状態で、上記不揮発性メモリのブートプログラム領域の一部の所定領域のみを上記Ｉ／Ｆメモリ空間に対して開放するチェックプログラム受付手段を備える構成である。
【００５６】
これにより、制御装置に対しては、その不揮発性メモリに何のプログラムも格納されていない状態であっても、許可されているプログラム供給装置からのみ選択的にプログラムをダウンロードさせることが可能となり、制御装置に対して、不正なデータがダウンロードされてしまい、本来意図していない用途に使用されたり、制御装置が起動しなくなったりすることがない。
【００５７】
それゆえ、制御装置が複数種の他のプログラム供給装置の共通オプションとなった場合でも、共通オプションのメリットが生かせると共に、ブートプログラムが機能拡張されたとしても、ブートプログラムのバージョンアップにも容易に対応できるといった効果を奏する。
【発明を実施するための最良の形態】
【００５８】
本発明の一実施形態について、図１〜図２２に基づいて説明すると以下の通りである。
【００５９】
まず、図１を用いて、本実施形態におけるプログラムダウンロードシステムにおける全体構成を説明する。図１は、本実施形態におけるメイン基板（プログラム供給装置）１０及びサブ基板（制御装置）２０の各ハードウェア構成、及びメイン基板１０とサブ基板２０との接続関係を示している。
【００６０】
メイン基板１０は、メイン基板１０の制御を行うＣＰＵ１１、メイン基板内外とのデータ送受信の制御を行うＡＳＩＣ１２、メイン基板１０のプログラムが格納されている書き換え可能な読み出し専用メモリであるフラッシュ・メモリ（図ではＦｌａｓｈ）１３、一時的にプログラムやデータを記憶させておくＲＡＭ１４、第１のＩ／Ｆポート１５、及び第２のＩ／Ｆポート１６を備えている。
【００６１】
サブ基板２０は、サブ基板２０の制御を行うＣＰＵ２１、サブ基板内外とのデータ送受信を行うＡＳＩＣ２２、サブ基板２０の制御プログラムが格納されている書き換え可能な読み出し専用メモリであるフラッシュ・メモリ２３、一時的にプログラムやデータを記憶させておくＲＡＭ２４及びＩ／Ｆポート２５で構成されている。
【００６２】
そして、これらメイン基板１０とサブ基板２０とは、メイン基板１０の第１のＩ／Ｆポート１５及びサブ基板２０のＩ／Ｆポート２５を介して接続されている。
【００６３】
具体的な例で説明すると、メイン基板１０は、複合機におけるプリンタコントローラ基板であり、サブ基板２０は、プリンタコントローラ基板に機能拡張するためのＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）基板やＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）基板などである。
【００６４】
なお、本発明は上記例に限定するものではなく、図１に示すようなメイン基板１０及びサブ基板２０の構成及び接続関係にあり、サブ基板２０にプログラムが何もない状態でも、メイン基板１０からＩ／Ｆポート２５を介して、サブ基板２０のフラッシュ・メモリ２３にアクセスできるものであれば、どんな形態のものであってもよい。
【００６５】
図２に、メイン基板１０とサブ基板２０の各メモリ空間の関係を示す。メイン基板１０のメモリ空間は、メイン基板１０におけるフラッシュ・メモリ１３とＲＡＭ１４とで構成され、サブ基板２０のメモリ空間は、サブ基板２０におけるフラッシュ・メモリ２３とＲＡＭ１４とで構成される。
【００６６】
メイン基板１０のメモリ空間とサブ基板２０のメモリ空間とは、Ｉ／Ｆメモリ空間を介して接続されている。Ｉ／Ｆメモリ空間は、メイン基板１０とサブ基板２０のどちらからでもアクセス可能な共有メモリである。該共有メモリは、メイン基板１０のＡＳＩＣ１２、サブ基板２０のＡＳＩＣ２２、あるいはメイン基板１０及びサブ基板２０の双方のＡＳＩＣ１２・２２内部に存在する。
【００６７】
図２の例では、サブ基板２０のメモリ空間におけるアドレス空間0x05_0000_0000〜0x0A_FFFF_FFFFがプログラム領域に割り当てられており、プログラム領域となる該アドレス空間は、フラッシュ・メモリ１３に対応している。そして、該アドレス空間0x05_0000_0000〜0x0A_FFFF_FFFFのうち、アドレス空間0x05_0000_0000〜0x09_FFFF_FFFFまでがメインプログラムのメイン領域に、アドレス空間0x0A_0000_0000〜0x0A_FFFF_FFFFまでがブートプログラムのブート領域（ブートプログラム領域）に、さらに細かく割り当てられている。
【００６８】
サブ基板２０の上記プログラム領域には、初期状態において、サブ基板２０を動作させるためのプログラムは何も書き込まれておらず、メイン基板１０よりサブ基板２０を動作させるためのプログラムがダウンロードされて初めて動作可能となる。
【００６９】
その場合、メイン基板１０よりサブ基板２０に対してプログラムをダウンロードできるように、サブ基板２０の上記プログラム領域を全て開放することも考えられる。しかしながら、プログラム領域の全てをメイン基板１０に対して解放すると、該プログラム領域に対してメイン基板１０が不正なデータを書き込み、サブ基板２０が本来意図していない用途として使用される恐れがある。
【００７０】
そこで、本実施形態では、サブ基板２０はメイン基板１０に対して、サブ基板２０のプログラム領域におけるブート領域の一部であるチェックプログラム領域のみを開放するようになっている。チェックプログラム領域は、後述するチェックプログラムを書き込むための領域であり、ブート領域の先頭アドレスより始まる空間である。図２の例では、アドレス空間0x0A_FFFF_0000〜0x0A_FFFF_FFFFが、チェックプログラム領域にあたる。そして、該チェックプログラム領域の空間サイズはブート領域に比して小さく、メイン基板１０がチェックプログラム領域へブートプログラムをダウンロードしたとしても、ブートプログラムを書き込みきることはできず、サブ基板２０を動作させることはできない。
【００７１】
上記チェックプログラムは、サブ基板２０のフラッシュ・メモリ２３にダウンロードされ、サブ基板２０がパワーオン／リセットし、チェックプログラムを起動することで、サブ基板２０が、当該サブ基板２０に接続されている相手側基板、つまりメイン基板１０が、サブ基板２０へのプログラムのダウンロードを許可してもよいダウンロード許可対象（許可対象基板）であるか否かを判断する処理と、ダウンロード許可対象であればサブ基板２０におけるフラッシュ・メモリ２３におけるプログラム領域を開放し、ダウンロード許可対象でなければサブ基板２０のフラッシュ・メモリ２３のプログラム領域を開放しない処理とを実行するものである。
【００７２】
メイン基板１０に対してのチェックプログラム領域の開放は、具体的には、予め、サブ基板２０のＡＳＩＣ２２において、初期設定値によりチェックプログラム領域を開放するよう指定しておく。サブ基板２０のＡＳＩＣ２２によるＩ／Ｆ初期化時、サブ基板２０のＡＳＩＣ２２は、サブ基板２０のメモリ空間におけるチェックプログラム領域0x0A_FFFF_0000〜0x0A_FFFF_FFFFのみを、メイン基板１０と接続しているＩ／Ｆメモリ空間のチェックプログラム領域0x0F_FFFF_0000〜0x0F_FFFF_FFFFに開放する。これにより、メイン基板１０は、Ｉ／Ｆメモリ空間の0x0F_FFFF_0000〜0x0F_FFFF_FFFFにアクセスすることで、サブ基板２０のメモリ空間におけるチェックプログラム領域0x0A_FFFF_0000〜0x0A_FFFF_FFFFにデータを書き込むことができる。
【００７３】
図３に、メイン基板１０上で動作するプログラムの機能ブロック図を示す。同図に示すように、メイン基板１０には、ＣＰＵ１１、ＡＳＩＣ１２、フラッシュ・メモリ１３、及びＲＡＭ１４を適時動作させることによって、プログラム生成部（プログラム生成手段）３１、プログラム格納領域３２、ＩＤ格納領域３３、プログラム送信部（プログラム送信手段）３４、電源監視部（電源監視手段）３５、プログラムダウンロード指示部（指示入力手段）３６、解析部（解析手段）３７、ダウンロード状態報知部（ダウンロード状態報知手段）３８、ダウンロード切替え設定部（設定手段）３９、プログラム圧縮／伸張部４０、及びプログラム受信部（プログラム受信手段）４１が構成される。
【００７４】
上記プログラム格納領域３２には、図４に示すように、少なくとも、チェックプログラムと、サブ基板２０用のブートプログラムとが格納されている。このうち、チェックプログラムは、サブ基板２０上に図５に示す各処理部と格納領域とを実現するための各プログラムとチェックプログラムのバージョンを表すチェックプログラムバージョン情報とを含んでいる。
【００７５】
また、上記ＩＤ格納領域３３には、例えば、メイン基板１０のＭＡＣアドレスや機種名、シリアルナンバー等の、各メイン基板１０を個別に識別できるような文字列等のＩＤ（識別情報）が格納されている。なお、ここでは、メイン基板１０のＩＤとしてＭＡＣアドレスを使用した場合の説明を行う。
【００７６】
図５に、サブ基板２０上で動作する、メイン基板１０よりダウンロードされたチェックプログラムの機能ブロック図を示す。同図に示すように、チェックプログラムを起動して、ＣＰＵ２１、ＡＳＩＣ２２、フラッシュ・メモリ２３、及びＲＡＭ２４を適時動作させることによって、サブ基板２０には、ダウンロード可否判断部５１、ジャンパ情報抽出部５２、ダウンロード許可ＩＤ抽出部５３、ブート領域開放部５４、メイン基板情報格納領域５５、及び通知部５６が構成される。上記メイン基板情報格納領域５５には、チェックプログラムに含まれるメイン基板情報（メイン基板ＩＤ）が格納されている。
【００７７】
また、本実施形態では、サブ基板２０に、図６に示すようなジャンパ６０が適宜設けられている。図６は、ジャンパ６０の構成とその設定方法を説明する図面であり、（ａ）はジャンパ６０を横から見た図面、（ｂ）はジャンパピンの結線図である。
【００７８】
ジャンパ６０は、ジャンパピン６１とジャンパソケット６２とで構成され、ジャンパソケット６２が装着されたジャンパピン６１のピン間が導通するようになっている。たとえば、ジャンパピン６１の１pin（ピン）が電源層(Ｖｃｃ)に接続され、ジャンパピン６１の３pinがＧＮＤ層に接続されている構成にしておけば、同図のようにジャンパソケット６２を、ジャンパピン６１の１pinと２pinとに装着することで、ジャンパピン６１の２pinは電源層(Ｖｃｃ)に接続されることとなる。このように、ジャンパ６０は、ジャンパソケット６２の装着箇所に依存して、ジャンパピン６１の２pinの電圧レベルを切替えることができるものである。なお、サブ基板２０におけるジャンパ６０の具体的な利用方法については後述する。
【００７９】
以下、本実施形態のプログラムダウンロードシステムにおける動作について説明する。
【００８０】
まず、メイン基板１０で実施される基本処理であるチェックプログラム送信処理について説明する。
【００８１】
チェックプログラム送信処理とは、プログラム生成部３１が、チェックプログラム生成要求にしたがってＩＤ格納領域３３及びプログラム格納領域３２より情報を収集してチェックプログラムを作成し、プログラム送信部３４が作成されたチェックプログラムをサブ基板２０に送信して、ダウンロードさせる処理である。
【００８２】
プログラム生成部３１へのチェックプログラム生成要求は、電源監視部３５、プログラムダウンロード指示部（指示入力手段）３６、及び解析部３７の３つの処理部より送信することができ、これについては後述する。
【００８３】
図７のフローチャートを用いて、チェックプログラム送信処理の手順を説明する。チェックプログラム生成要求があると、プログラム生成部３１は、プログラム格納領域３２からチェックプログラムを取得し（Ｓ１）、次いで、ＩＤ格納領域３３からメイン基板１０のＩＤを取得する（Ｓ２）。そして、プログラム生成部３１は、取得したメイン基板１０のＩＤを取得したチェックプログラムに組み込み、チェックプログラムを完成させる（Ｓ３）。完成されたチェックプログラムは、プログラム送信部３４へと送られる。
【００８４】
次に、プログラム送信部３４が、メイン基板１０とサブ基板２０とが接続されているＩ／Ｆメモリ空間にアクセスして、サブ基板２０が開放しているサブ基板２０のメモリ空間に対応するアドレス情報を取得する(Ｓ４)。プログラム送信部３４は、プログラム生成部３１より送られてきたチェックプログラムをＩ／Ｆメモリ空間における取得したアドレス情報の空間に書き込む（Ｓ５）。これにより、Ｉ／Ｆメモリ空間を介してサブ基板２０のメモリ空間にチェックプログラムがダウンロードされ、チェックプログラム送信処理が終了する。
【００８５】
図２の例では、サブ基板２０のメモリ空間におけるチェックプログラム領域0x0A_FFFF_0000〜0x0A_FFFF_FFFFには、Ｉ／Ｆメモリ空間の0x0F_FFFF_0000〜0x0F_FFFF_FFFFが対応している。したがって、Ｓ５において、プログラム送信部３４は、この0x0F_FFFF_0000〜0x0F_FFFF_FFFFにチェックプログラムを書き込む。サブ基板２０のメモリ空間へは、Ｉ／Ｆメモリ空間の該0x0F_FFFF_0000〜0x0F_FFFF_FFFFに書き込まれたデータのみが移動し、ダウンロードされる。
【００８６】
次に、サブ基板２０の各処理部における基本処理であるダウンロード可否判断処理及びブート領域開放処理について説明する。サブ基板２０は、メイン基板１０よりダウンロードされたチェックプログラムを起動することで、ダウンロード可否判断処理を実施する。
【００８７】
ダウンロード可否判断処理とは、ダウンロード可否判断部５１が、チェックプログラムをダウンロードした相手先のメイン基板１０がダウンロード許可対象であるか否かを判断する処理である。ダウンロード可否判断処理にてダウンロード許可対象であると判断されると、ブート領域開放部５４がブート領域開放処理を実施し、ダウンロード許可対象ではないと判断されると、ブート領域開放部５４はブート領域開放処理を実施しない。ここでは、より好ましい対応として、ダウンロード許可対象でない場合、通知部５６が、チェックプログラムのダウンロードを拒否することを示すチェックプログラムダウンロード拒否コマンドを、メイン基板１０に対して応答するようになっている。
【００８８】
ブート領域開放処理とは、ブート領域開放部５４が、メイン基板１０がサブ基板２０のブート領域に対してデータをダウンロードできるように開放する処理である。ここでは、より好ましい対応として、チェックプログラムのダウンロードが正常終了したことを示すチェックプログラム終了コマンド（チェックプログラム終了情報）を、メイン基板１０に対して応答するようになっている。これは、チェックプログラム内に、チェックプログラムダウンロード終了を示すコマンドをメイン基板に対して送信する処理を実行させるプログラム（終了報知プログラム）を含めておくことで実現されており、サブ基板２０は、チェックプログラムが正常にダウンロードできたことをメイン基板１０に対して通知するので、メイン基板１０側では、チェックプログラムのダウンロードが正常に終了したことを確認することができる。
【００８９】
また、本実施形態のサブ基板２０では、ダウンロード可否判断処理において、相手先のメイン基板１０がダウンロード許可対象であるか否かの判断を、チェックプログラムに格納されているメイン基板ＩＤを基にする場合と、ダウンロード許可判断のためのジャンパ設定を基にする場合との、２つが可能となっている。
【００９０】
メイン基板ＩＤを基にする判断は、ダウンロード許可ＩＤ抽出部５３が、サブ基板２０のフラッシュ・メモリ内に格納されているダウンロード許可ＩＤリストを抽出し、ダウンロード可否判断部５１が、メイン基板情報格納領域５５に格納されているメイン基板ＩＤが、該リスト内に含まれているか否かで判断を行う。図８に、ダウンロード許可ＩＤリスト６５の例を示す。ダウンロード許可ＩＤリスト６５は、ダウンロード許可ＩＤ６６‥で構成されている。
【００９１】
また、ジャンパ設定を基にする場合は、サブ基板２０に設けられているダウンロード許可判断のためのジャンパの設定を、ジャンパ情報抽出部５２が抽出し、ダウンロード可否判断部５１が、抽出されたジャンパの設定を基に判断を行う。
【００９２】
このようなジャンパ設定によるダウンロード許可対象であるか否かの判断を可能にしておくことで、サブ基板２０にダウンロード許可ＩＤリスト６５を予め持たせずとも、ダウンロード許可対象となるメイン基板１０を指定可能となる。
【００９３】
具体的には、図９（ａ）のように、たとえば、サブ基板２０に接続可能なメイン基板１０がＡ〜Ｃの３種類ある場合、サブ基板２０上に３つのジャンパＪ１・Ｊ２・Ｊ３を設け、Ａ〜Ｃの３種類のメイン基板１０に対するダウンロード許可/拒否の判断を、これら３つのジャンパＪ１〜Ｊ３にて設定する構成が考えられる。
【００９４】
ここでは、図９（ｂ）の設定テーブルに示すように、ジャンパＪ１の設定がＡ種のメイン基板１０のダウンロード許可／未許可に対応しており、ジャンパＪ２の設定がＢ種のメイン基板１０のダウンロード許可／未許可に、ジャンパＪ３の設定がＣ種のメイン基板１０のダウンロード許可／未許可に対応している。
【００９５】
サブ基板２０は、設定表に従い、例えば、ジャンパＪ１の２ｐｉｎの電圧レベルがＶｃｃであればＡ種のメイン基板１０をダウンロード許可対象とし、ジャンパＪ１の２ｐｉｎの電圧レベルがＧＮＤであれば、Ａ種のメイン基板１０をダウンロード未許可とする。
【００９６】
さらに、本実施形態のサブ基板２０では、プログラムダウンロード可否判断を実行するか否か自体をジャンパにて設定できるようになっており、プログラムダウンロード可否判断のためのジャンパが設けられている。ダウンロード可否判断処理においては、ジャンパ情報抽出部５２が該ジャンパの設定を抽出し、ダウンロード可否判断部５１が、抽出された該ジャンパの設定を基に、プログラムダウンロード可否を判断し、可能に設定されている場合のみ、ダウンロード可否判断処理を続ける。
【００９７】
プログラムダウンロード可否判断のためのジャンパを設けることで、メイン基板１０からのチェックプログラムダウンロードを、ダウンロード許可対象であるか否かとは関係なく、強制的に拒否することが可能となる。
【００９８】
具体的には、プログラムダウンロード可否判断のためのジャンパがダウンロード拒否に設定されている場合、どんなメイン基板１０が接続されたとしても、サブ基板２０はブート領域を開放せず、メイン基板１０に対して、チェックプログラムダウンロードを拒否するチェックプログラムダウンロード拒否コマンドを送信する。
【００９９】
ここでは、図１０（ａ）（ｂ）に示すように、プログラムダウンロード可否判断のためのジャンパＪＰ１の１ｐｉｎがＶｃｃに、ジャンパＪＰ１の３ｐｉｎがＧＮＤに接続されている。そして、プログラムダウンロード可否判断用のジャンパソケットによって、ジャンパＪＰ１の２ｐｉｎの電圧レベルがＶｃｃであれば、プログラムダウンロード可否判断を実行し、ジャンパＪＰ１の２ｐｉｎの電圧レベルがＧＮＤであれば、プログラムダウンロード可否判断を実行しないというように、予め取り決められている。
【０１００】
なお、ジャンパ設定を用いる以外の手法で、プログラムダウンロード許可対象か否かの判断を実行するか否かを切り替えるようにしてもよい。
【０１０１】
図１１のフローチャートに、ダウンロード可否判断処理の手順を示す。チェックプログラムがダウンロードされ、サブ基板２０がこれを起動することで、該処理は開始される。まず、ジャンパ情報抽出部５２が、図１０に示した、プログラムダウンロード可否判断のためのジャンパＪＰ１の設定情報を抽出する（Ｓ１１）。次に、ダウンロード可否判断部５１は、Ｓ１１で抽出された設定情報であるジャンパＪＰ１の２pinの電圧レベルがＶｃｃかＧＮＤかを判断し(Ｓ１２)、ジャンパＪＰ１の２pinの電圧レベルがＶｃｃであればＳ１３に進み、ジャンパＪＰ１の２pinの電圧レベルがＧＮＤであればＳ１９に進む。
【０１０２】
Ｓ１３では、ダウンロード可否判断部５１は、メイン基板情報格納領域５５よりメイン基板ＩＤを抽出する。次に、ダウンロード可否判断部５１は、ダウンロード許可対象であるか否かの判断を、サブ基板２０上のフラッシュ・メモリ内に格納されているダウンロード許可ＩＤリスト６５を用いて行うかどうかを判断する（Ｓ１４）。Ｓ１４における判断は、サブ基板２０のフラッシュ・メモリ２３内に、図８に示したダウンロード許可ＩＤリスト６５があるかないかで判断する。
【０１０３】
ダウンロード許可ＩＤリスト６５があれば、ダウンロード許可ＩＤリスト６５によりダウンロード許可対象を判断するとして、Ｓ１５に進む。一方、ダウンロード許可ＩＤリストがなければ、サブ基板２０上のジャンパ設定によりダウンロード許可対象を判断するとして、Ｓ１６に進む。
【０１０４】
Ｓ１５では、ダウンロード許可抽出部５３が、ダウンロード許可ＩＤリスト６５を読み出し、Ｓ１７に進む。Ｓ１６では、ジャンパ情報抽出部５２が、サブ基板２０上のダウンロード許可用のジャンパＪ１〜Ｊ３の設定を抽出し、同じくＳ１７に進む。Ｓ１７では、ダウンロード可否判断部５１が、Ｓ１５或いはＳ１６で抽出された情報に基づいて、ダウンロード許可対象か否かを判断する。
【０１０５】
Ｓ１７において、ダウンロード許可対象と判断されれば、Ｓ１８に進み、後述するブート領域開放処理が行われる。一方、ダウンロード許可対象ではないと判断されれば、Ｓ１９に進み、通知部５６が、チェックプログラムのダウンロードを拒否することを示すチェックプログラムダウンロード拒否コマンドをメイン基板１０に送信し、プログラムダウンロード可否判断処理を終了する。
【０１０６】
図１２のフローチャートに、ブート領域開放処理の手順を示す。ブート領域開放部５４は、サブ基板２０上のブート領域（図２の例では、0x0A_0000_0000〜0x0A_FFFF_FFFF）を開放するように、サブ基板２０のＡＳＩＣ２２の初期設定値を変更する（Ｓ２１）。次に、通知部５６が、メイン基板１０の解析部３７に対して、チェックプログラムダウンロード終了コマンドを送信する（Ｓ２２）。
【０１０７】
この後、メイン基板１０及びサブ基板２０がパワーオン／リセットし、各基板１０・２０が再起動する（Ｓ２３）。なお、メイン基板１０は、チェックプログラムダウンロード終了コマンドに再起動を指示するコマンドが含まれており、該コマンドを受け取ることでメイン基板１０は再起動する。一方、サブ基板２０は、チェックプログラムダウンロード終了コマンドを送信すると再起動がかかるように設定されている。
【０１０８】
サブ基板２０では、再起動がかかることで、そのＡＳＩＣ２２の初期設定値にしたがい、サブ基板２０のブート領域を開放し（Ｓ２４）、ブート領域開放処理を終了する。
【０１０９】
このようなブート領域開放処理により、メイン基板１０側からサブ基板２０のブート領域にアクセスすることが可能になり、メイン基板１０側からサブ基板２０用のブートプログラムをダウンロードさせることが可能となる。
【０１１０】
図２の例では、サブ基板２０のメモリ空間におけるブート領域0x0A_0000_0000〜0x0A_FFFF_FFFFには、Ｉ／Ｆメモリ空間の0x0F_0000_0000〜0x0F_FFFF_FFFFが対応している。メイン基板１０がこの0x0F_0000_0000〜0x0F_FFFF_FFFFにブートプログラムを書き込むことで、サブ基板２０のメモリ空間へは、該Ｉ／Ｆメモリ空間の該0x0F_0000_0000〜0x0F_FFFF_FFFFに書き込まれたデータのみが移動し、ダウンロードされる。
【０１１１】
次に、より好ましい対応としてメイン基板１０で実施される、チェックプログラム再送処理について説明する。チェックプログラム再送処理とは、メイン基板１０の解析部３７がサブ基板２０の通知部５６から、チェックプログラムダウンロード終了コマンドも、チェックプログラムダウンロード拒否コマンドも受信できていない場合に、メイン基板１０からサブ基板２０に対して、再度、チェックプログラムのダウンロードを行う処理である。
【０１１２】
図１３のフローチャートに、チェックプログラム再送処理の手順を示す。プログラム送信部３４は、サブ基板２０に対してのチェックプログラムのダウンロードが終了したか否かを判断しており（Ｓ３１）、チェックプログラムのダウンロードが終了していなければ、チェックプログラムのダウンロードが終了するまで、チェックプログラムのダウンロードが終了したか否かの判断を繰り返す。
【０１１３】
Ｓ３１において、チェックプログラムのダウンロードの終了が確認されると、解析部３７は、サブ基板２０の通知部５６よりチェックプログラム終了コマンドを受信したか否かを判断し（Ｓ３２）、チェックプログラム終了コマンドを受信していれば、チェックプログラム再送処理を終了する。
【０１１４】
一方、Ｓ３２において、チェックプログラム終了コマンドを受信していなければ、解析部３７は、サブ基板２０の通知部５６よりチェックプログラム拒否コマンドを受信したか否かをさらに判断し（Ｓ３３）、チェックプログラム拒否コマンドを受信していれば、チェックプログラム再送処理を終了する。ここで、チェックプログラム拒否コマンドも受信していなければ、解析部３７は、プログラム生成部３１にチェックプログラム生成要求を出力する（Ｓ３４）。これにより、図７で説明したチェックプログラム送信処理が、再度、開始される。
【０１１５】
このように、メイン基板１０からサブ基板２０に対してチェックプログラムをダウンロードする時に、何らかの影響でチェックプログラムを正常にダウンロードできなかった場合、サブ基板２０からのチェックプログラムダウンロード終了を示すコマンドの応答がないことをトリガーとして、自動的にメイン基板１０からサブ基板に対してチェックプログラムが再ダウンロードされるので、メイン基板１０からサブ基板２０へのチェックプログラムダウンロード作業を確実に実施することができる。
【０１１６】
次に、より好ましい対応としてメイン基板１０で実施される、ダウンロード状態報知処理について説明する。ダウンロード状態報知処理とは、ダウンロード状態報知部３８にて実施される、メイン基板１０からサブ基板２０に対して、チェックプログラムのダウンロード中であること、またはチェックプログラムのダウンロードが終了したこと、またはチェックプログラムのダウンロードが許可されていないことを、ユーザが認識できるように、報知する処理である。
【０１１７】
報知の仕方としては、例えばメイン基板１０が装着されている機器のオペレーションパネル上に各内容を報知することが挙げられる。具体例で説明すると、図１４（ａ）〜（ｃ）のように、チェックプログラムのダウンロード中であれば、オペレーションパネル７０の表示画面上に『プログラムダウンロード中…』と表示し、チェックプログラムのダウンロードが終了すれば、オペレーションパネル７０の表示画面上に『プログラムのダウンロードが終了しました。』と表示し、チェックプログラムのダウンロードが許可されていないのであれば、オペレーションパネル７０の表示画面上に『プログラムのダウンロードが許可されていません。』と表示する、等が考えられる。
【０１１８】
なお、上記説明した具体例に限らず、チェックプログラムがダウンロード中であること、またはチェックプログラムのダウンロードが終了したこと、またはチェックプログラムのダウンロードが許可されていないことをユーザが視認できる方法であれば、どんな形態でも構わない。例えば、上記例とは別の方法で、メイン基板１０上にステータスLEDを設けて、チェックプログラムがダウンロード中であればステータスLEDが点滅し、チェックプログラムのダウンロードが終了すればステータスLEDが消灯し、チェックプログラムのダウンロードが許可されていないならばステータスLEDが点灯するなどの構成でも構わない。
【０１１９】
図１５のフローチャートに、ダウンロード状態報知処理の手順を示す。本フローチャートでは、メイン基板１０が装着されている機器のオペレーションパネル７０（図１４参照）上に、ダウンロード状態を表示する。
【０１２０】
ダウンロード状態報知部３８は、まず、プログラム送信部３４にアクセスして、チェックプログラムをサブ基板２０にダウンロード中か否かを判断する（Ｓ４１）。チェックプログラムのダウンロード中であれば、Ｓ４２に進んで、オペレーションパネル７０の表示画面上に『プログラムダウンロード中…』と表示し、再度Ｓ４１に戻る。一方、チェックプログラムのダウンロード中でなければＳ４３に進み、解析部３７にアクセスして、サブ基板２０に対してチェックプログラムのダウンロードが終了したか否かを判断する。
【０１２１】
チェックプログラムのダウンロードが終了していれば、ダウンロード状態報知部３８は、オペレーションパネルの表示画面上に『プログラムのダウンロードが終了しました。』と表示し（Ｓ４４）、ダウンロード状態報知処理を終了する。
【０１２２】
一方、チェックプログラムのダウンロードが終了していなければ、ダウンロード状態報知部３８は、解析部３０７にアクセスして、サブ基板２０からチェックプログラムダウンロード拒否コマンドを受信していないかどうか判断し（Ｓ４５）、チェックプログラムダウンロード拒否コマンドを受信していれば、オペレーションパネル７０の表示画面上に『プログラムのダウンロードが許可されていません。』と表示し（Ｓ４６）、ダウンロード状態報知処理を終了する。サブ基板２０からチェックプログラムダウンロード拒否コマンドを受信していなければ、再度Ｓ４１に戻る。
【０１２３】
このように、メイン基板１０からサブ基板２０に対するチェックプログラムダウンロードのステータスをユーザに報知することで、チェックプログラムダウンロード途中に、メイン基板１０あるいはサブ基板２０の電源を落とされることに対して未然に注意を促すことができる、またはプログラムダウンロード許可対象でないメイン基板１０に対してサブ基板２０を誤って装着している場合に、プログラムダウンロードが許可されていない旨をユーザに報知することができる。
【０１２４】
次に、より好ましい対応としてメイン基板１０で実施される、電源監視処理について説明する。電源監視処理とは、電源監視部３５が、メイン基板１０に電源が投入されたか否かを監視し、メイン基板１０に電源が投入されると同時に、プログラム生成部３１に対して、前述したチェックプログラム生成要求を行う処理である。
【０１２５】
図１６のフローチャートに、電源監視処理の手順を示す。電源監視部３５は、メイン基板１０に対して電源が投入されたか否かを判断し（Ｓ５１）、メイン基板１０に対して電源が投入されていないならば、再度Ｓ５１に戻り、電源が投入されたか否かを判断する。
一方、メイン基板１０に対して電源が投入されたら、プログラム生成部３１にチェックプログラム生成要求を出力する（Ｓ５２）。これにより、図７で説明したチェックプログラム送信処理が開始される。
【０１２６】
このように、メイン基板１０に電源が投入時に、メイン基板１０に装着されているサブ基板２０に対して自動的にチェックプログラムをダウンロードする構成にすることで、チェックプログラムのダウンロードをユーザによるオペレーションを介在することなく実施することができる。
【０１２７】
但し、このような電源投入時にサブ基板２０に対してチェックプログラムが自動的にダウンロードされることをユーザが希望しない場合も考えられる。例えば、メイン基板１０のフラッシュ・メモリ１３にチェックプログラムが格納されていない場合や、メイン基板１０のフラッシュ・メモリ１３に格納されているチェックプログラムのバージョンが古い場合である。このような場合、電源投入時におけるチェックプログラムのダウンロードを実施しないようにユーザ側にて設定できる構成が好ましい。
【０１２８】
そこで、本実施形態のメイン基板１０においては、より好ましい対応として、電源投入時にチェックプログラムをダウンロードするか否かを、ユーザサイドで指定できるようになっており、ダウンロード切替え設定部３９が、ユーザに指定されている場合に、電源投入時にチェックプログラムをダウンロードするようになっている。
【０１２９】
具体的には、メイン基板１０上にダウンロード切替え用のジャンパＪＰ２が設けられており、ダウンロード切替え用のジャンパソケットの装着位置によって、メイン基板１０からサブ基板２０へのチェックプログラムのダウンロードタイミングを切替えることができる。本実施形態では、ダウンロード切替え設定部３９は、ジャンパＪＰ２の２pinの電圧レベルがＶｃｃであれば、図１６で説明した電源監視処理により、メイン基板１０への電源投入時にチェックプログラムのダウンロードを行い、ジャンパＪＰ２の２pinの電圧レベルがＧＮＤであれば、メイン基板１０への電源投入時にチェックプログラムのダウンロードを行わない。
【０１３０】
なお、上記説明した具体例に限らず、ダウンロードの処理を切替えることができる方法であれば、どんな形態でも構わない。たとえば、上記例とは別の方法で、メイン基板１０上にスイッチを設けて、スイッチがＯＮ状態であれば、メイン基板１０への電源投入時にチェックプログラムのダウンロードを行い、スイッチがＯＦＦ状態であれば、メイン基板１０への電源投入時にチェックプログラムのダウンロードを行わないようにするなどの構成でも構わない。
【０１３１】
図１８のフローチャートに、メイン基板１０のダウンロード切替え設定部３９におけるダウンロード切替え処理の手順を示す。本フローチャートでは、ダウンロード切替え用ジャンパＪＰ２を用いる。ダウンロード切替え設定部３８は、ダウンロード切替え用のジャンパＪＰ２の２pinの電圧レベルがＶｃｃであるか否かを判断し（Ｓ６１）、Ｖｃｃであれば、Ｓ６２に進んで、図１６で説明した電源監視処理を行う。一方、Ｖｃｃでなければ、そのまま処理を終了し、電源監視部３５による電源開始処理は実施されない。
【０１３２】
次に、より好ましい対応としてメイン基板１０で実施される、プログラムダウンロード指示処理について説明する。メイン基板１０への電源投入時にチェックプログラムのダウンロードを行わない設定時に、チェックプログラムのダウンロード実行のユーザ指示を可能にするものであって、チェックプログラムのダウンロードを指示する操作をユーザが行うことで、ユーザが意図しているタイミングでチェックプログラムのダウンロードを実行することができる。
【０１３３】
たとえば、図１９に示すように、メイン基板１０が装着されている機器のオペレーションパネル７０の表示画面上に、プログラムダウンロード実行メニュー７１と、ＯＫボタン７２及びキャンセルボタン７３を表示させ、ユーザがＯＫボタン７２を押下することで、チェックプログラムのダウンロードが実行される構成が考えられる。
【０１３４】
なお、上記説明した具体例に限らず、チェックプログラムのダウンロード実行を指示できる方法であれば、どんな形態でも構わない。たとえば、上記例とは別の方法で、メイン基板１０上にプッシュスイッチを設けて、プッシュスイッチを押下したら、チェックプログラムのダウンロードを実行する構成でも構わない。
【０１３５】
図２０のフローチャートに、プログラムダウンロード指示部３６におけるプログラムダウンロード指示処理を示すフローチャートである。本フローチャートでは、メイン基板１０が装着されている機器のオペレーションパネル７０での操作により、チェックプログラムのダウンロードを実行する。
【０１３６】
プログラムダウンロード指示部３６は、まず、オペレーションパネル７０の表示画面上にプログラムダウンロード実行メニュー７１を表示する（Ｓ７１）。次に、ＯＫボタン７２が押下されたか否かを判断し（Ｓ７２）、ＯＫボタン７２が押下されれば、プログラム生成部３１にチェックプログラム生成要求を出力する（Ｓ７３）。これにより、図７で説明したチェックプログラム送信処理が開始される。
【０１３７】
一方、ＯＫボタン７２が押下されなければ、Ｓ７４に進んで、キャンセルボタン７３が押下されたか否かを判断し、キャンセルボタン７３が押下されれば、プログラムダウンロード指示処理を終了する。キャンセルボタン７３も押下されていなければ、再び、Ｓ７２に戻り、ＯＫボタン７２が押下されたか否かを判断する。
【０１３８】
次に、より好ましい対応としてメイン基板１０において実施される、プログラム受信処理について説明する。プログラム受信処理とは、プログラム受信部４１が、サブ基板２０と接続する第１のＩ／Ｆポート１５とは別の第２のＩ／Ｆポート１６を経由して取得したサブ基板２０に対してダウンロードするためのプログラムデータ（ダウンロード用プログラム）を、プログラム格納領域３２に格納する処理である。プログラム受信部４１は、チェックプログラムを含めダウンロード用プログラムを受信すると、プログラム格納領域３２に受信した該プログラムデータが格納されていない時はそのまま格納し、既に格納されている場合は、受信したプログラムの方が新しい場合には格納する（更新する）。
【０１３９】
ダウンロード用プログラムとしてチェックプログラムを例に説明すると、具体的には、メイン基板１０の第２のＩ／Ｆ１６としては、ＬＡＮ、ＵＳＢ、ＲＳ−２３２Ｃなどが考えられ、ＰＣから当該Ｉ／Ｆポートを経由してチェックプログラムをメイン基板１０に対してダウンロードする構成が考えられる。このプログラム受信処理により、サブ基板２０にダウンロードするためのチェックプログラムをメイン基板１０のプログラム格納領域３２に常時格納しておく必要は無く、チェックプログラムのダウンロードが必要な時に、メイン基板１０の第２のＩ／Ｆ１６を経由して、その都度チェックプログラムを取得すればよい。また、将来的にチェックプログラムが機能拡張されたとしても、チェックプログラムのバージョンアップを容易に実現することができる。
【０１４０】
図２１のフローチャートに、プログラム受信処理の手順を示す。プログラム受信部４１は、基板１０がサブ基板２０と接続する第１のＩ／Ｆポート１５とは別の第２のＩ／Ｆポート１６を経由して、チェックプログラムデータを受信したか否かを判断する（Ｓ８１）。チェックプログラムデータを受信していなければ、再度Ｓ８１に戻り、チェックプログラムデータを受信したか否かを判断する。一方、チェックプログラムデータを受信すると、プログラム格納領域３２にチェックプログラムデータが既に格納されているか否かを判断する（Ｓ８２）。
【０１４１】
Ｓ８２において、プログラム格納領域３２にチェックプログラムデータが格納されていない場合は、Ｓ８１で取得したチェックプログラムデータをプログラム格納領域３２に格納して、再度、Ｓ８１に戻る。
【０１４２】
一方、Ｓ８２において、プログラム格納領域３２にチェックプログラムデータが格納されている場合は、Ｓ８１で取得したチェックプログラムデータのプログラムバージョン情報と、プログラム格納領域３２に既に格納されているチェックプログラムのプログラムバージョン情報とを比較して、どちらのプログラムの方が新しいかを判断する（Ｓ８３）。
【０１４３】
Ｓ８３において、新しく取得したチェックプログラムデータの方が新しい場合は、プログラム格納領域３２に既に格納されているチェックプログラムデータを削除した上で、該取得したチェックプログラムデータを格納（上書き）し、再度、Ｓ８１に戻る。一方、Ｓ８３において、プログラム格納領域３２に既に格納されているチェックプログラムデータの方が新しい場合は、Ｓ８１で取得したチェックプログラムデータを削除し（Ｓ８６）、再度、Ｓ８１に戻る。なお、該処理の終了については特に記載していないが、メイン基板１０の電源がオフされた時点などで終了する。
【０１４４】
また、プログラム受信処理にて、第２のＩ／Ｆポート１６を経由して取得される対象プログラムはチェックプログラムに限定されるものではなく、同様の手順にて、ブートプログラムを取得することも可能である。つまり、プログラム受信処理において、サブ基板２０と接続する第１のＩ／Ｆポート１５とは別の第２のＩ／Ｆポート１６を経由してブートプログラムデータが受信されると、プログラム格納領域３２にブートプログラムデータが格納されていない時はそのままプログラム格納領域３２に格納され、プログラム格納領域３２に既に格納されている場合は、受信したブートプログラムの方が新しい場合に格納される（上書きする）。
【０１４５】
これにより、サブ基板２０にダウンロードするためのブートプログラムをメイン基板１０のプログラム格納領域３２に常時格納しておく必要は無く、ブートプログラムのダウンロードが必要な時に、メイン基板１０の第２のＩ／Ｆポート１６を経由して、その都度ブートプログラムを取得すればよい。また、将来的にブートプログラムが機能拡張されたとしても、ブートプログラムのバージョンアップを容易に実現することができる。
【０１４６】
また、上述のプログラム受信処理においては、さらに、第２のＩ／Ｆポート１６を経由して取得したチェックプログラムデータ或いはブートプログラムデータが、プログラム格納領域３２に既に格納されているチェックプログラムデータ或いはブートプログラムデータより新しい場合、取得したチェックプログラムデータ或いはブートプログラムデータをプログラム格納領域３２に上書き格納する一方、格納を完了した時点で、プログラム受信部４１が、プログラム生成部３１にチェックプログラム生成要求を出力する構成としてもよい。これにより、図７で説明したチェックプログラム送信処理が開始されるので、新しく取得したチェックプログラムを、或いは新しく取得したブートプログラムを、サブ基板２０に対してダウンロードすることが可能となる。
【０１４７】
また、本メイン基板１０では、サブ基板２０に対してダウンロードするプログラムをメイン基板１０のフラッシュ・メモリ１３に格納するにあたり、圧縮状態データで格納しておく構成でもよい。これにより、メイン基板１０のフラッシュ・メモリ１３の領域の圧迫を軽減することができる。
【０１４８】
次に、より好ましい対応としてメイン基板１０にて実施される、プログラム伸張処理について説明する。プログラム伸張処理とは、プログラム圧縮／伸張部４０が、サブ基板２０に対してダウンロードするプログラムがメイン基板１０のフラッシュ・メモリ１３上に圧縮された状態で格納されている場合に当該プログラムを伸張する処理である。
【０１４９】
プログラム圧縮／伸張部４０は、メイン基板１０からサブ基板２０へと、チェックプログラムやブートプログラムをダウンロードする際に、メイン基板１０のプログラム格納領域３２においてこれらプログラムが圧縮されたデータとして格納されている場合に、当該プログラムデータの伸張処理を行う。
【０１５０】
図２２のフローチャートに、プログラム圧縮／伸張部４０におけるプログラム伸張処理の手順を示す。プログラム圧縮／伸張部４０は、プログラム生成部３１がプログラム送信処理を実施するか否かを判断し（Ｓ９１）、プログラム送信処理が実施されない場合は、再度Ｓ９１に戻る。一方、プログラム送信処理を実施する場合は、次に、プログラム格納領域３２に格納されている送信すべきプログラムデータが圧縮状態かどうかを判断する（Ｓ９２）。ここで、圧縮状態であれば、当該プログラムデータを伸張し（Ｓ９３）、伸張したプログラムデータを、メイン基板１０のフラッシュ・メモリ１３内に格納する。一方、送信すべきプログラムデータが圧縮されていない状態であれば、再度、Ｓ９１に戻る。なお、該処理の終了についても特に記載していないが、メイン基板１０の電源がオフされた時点などで終了する。
【０１５１】
また、プログラム圧縮／伸張部４０は、チェックプログラムやブートプログラム等のサブ基板２０へとダウンロードすべきプログラムデータが、メイン基板１０に対して既に圧縮された状態でダウンロードされる場合は圧縮処理を実施しないが、圧縮されない状態でダウンロードされた場合は、圧縮処理を実施した後、プログラム格納領域３２に格納する。
【０１５２】
また、本発明のプログラムダウンロード方法は、メイン基板にプロセッサとメイン基板を動作させるためのプログラムが格納されている不揮発性メモリおよびＲＡＭとを備え、サブ基板にプロセッサとサブ基板を動作させるためのプログラムを格納する不揮発性メモリおよびＲＡＭとを備え、メイン基板からサブ基板の不揮発性メモリに対してサブ基板を動作させるためのプログラムをダウンロードするプログラムダウンロード方法において、サブ基板はメイン基板に対して、不揮発性メモリにおけるチェックプログラムを書き込める領域のみを開放し、メイン基板は当該領域に対してチェックプログラムをダウンロードし、チェックプログラムをダウンロード後、サブ基板は当該チェックプログラムを起動して、サブ基板に接続されているメイン基板がプログラムダウンロード許可対象であるか否かを判断し、許可対象であれば、サブ基板の不揮発性メモリにおける領域を開放して、メイン基板はサブ基板にプログラムをダウンロードし、許可対象でなければ、サブ基板の不揮発性メモリにおける領域を開放せず処理を終了することを特徴としているとも換言できる。
【産業上の利用可能性】
【０１５３】
プログラムが何もない状態の制御装置に、許可されているプログラム供給装置からのみ選択的にブートプログラムを始めとする、該制御装置を動作させるためのプログラムをダウンロードさせることができるので、例えば複合機におけるメイン基板と、機能を追加できるようにオプション設定されるサブ基板であって、複数種のメイン基板に対して共有オプションとして用いられるサブ基板との間に利用することができる。
【図面の簡単な説明】
【０１５４】
【図１】本発明における実施の一形態を示すもので、プログラムダウンロードシステムにおけるプログラム供給装置であるメイン基板と制御装置であるサブ基板とにおける各ハードウェア構成及び接続関係を示す構成図である。
【図２】上記プログラムダウンロードシステムにおけるメイン基板とサブ基板とのメモリ関係を説明するための図面である。
【図３】上記メイン基板上で動作するプログラムの機能ブロック図である。
【図４】上記メイン基板のプログラム格納領域に格納されているデータを説明するための図面である。
【図５】上記メイン基板より上記サブ基板に対してダウンロードされ、サブ基板上で動作するチェックプログラムの機能ブロック図である。
【図６】（ａ）（ｂ）共に、メイン基板或いはサブ基板に設けられるジャンパを説明するための図面である。
【図７】上記メイン基板で実施されるチェックプログラム送信処理の手順を示すフローチャートである。
【図８】上記サブ基板に具備されるダウンロード許可ＩＤリストを説明する図面である。
【図９】（ａ）（ｂ）共に、サブ基板に設けられる、ダウンロード許可のジャンパ設定を説明する図面である。
【図１０】（ａ）（ｂ）共に、サブ基板に設けられる、ダウンロード可否判断のジャンパ設定を説明する図面である。
【図１１】上記サブ基板で実施されるダウンロード可否判断処理の手順を示すフローチャートである。
【図１２】上記サブ基板で実施されるブート領域開放処理の手順を示すフローチャートである。
【図１３】上記メイン基板で実施されるチェックプログラム再送処理の手順を示すフローチャートである。
【図１４】（ａ）〜（ｃ）共に、上記メイン基板にて実施されるチェックプログラムのダウンロード状態の報知例である。
【図１５】上記メイン基板で実施されるプログラムダウンロード状態報知処理の手順を示すフローチャートである。
【図１６】上記メイン基板で実施される電源監視処理の手順を示すフローチャートである。
【図１７】（ａ）（ｂ）共に、メイン基板に設けられる、ダウンロード切替えのジャンパ設定を説明する図面である。
【図１８】上記メイン基板で実施される、ダウンロード切替え処理の手順を示すフローチャートである。
【図１９】上記メイン基板にて実施されるプログラムダウンロード指示処理において、オペレーションパネルでの操作により、チェックプログラムのダウンロードを実行する方法を説明した図面である。
【図２０】上記メイン基板で実施されるプログラムダウンロード指示処理の手順を示すフローチャートである。
【図２１】上記メイン基板で実施されるプログラム受信処理の手順を示すフローチャートである。
【図２２】上記メイン基板で実施されるプログラム伸張処理の手順を示すフローチャートである。
【符号の説明】
【０１５５】
１０    メイン基板（プログラム供給装置）
１５    第１のＩ／Ｆポート（入出力部）
１６    第２のＩ／Ｆポート（入出力部）
２０    サブ基板（制御装置）
２２    ＡＳＩＣ（チェックプログラム受付手段）
２３    フラッシュ・メモリ（不揮発性メモリ）
３１    プログラム生成部（チェックプログラムダウンロード手段）
３２    プログラム格納領域
３３    ＩＤ格納領域（識別情報格納領域）
３４    プログラム送信部（チェックプログラムダウンロード手段）
３５    電源監視部（電源監視手段）
３６    プログラムダウンロード指示部（指示入力手段）
３７    解析部（解析手段）
３９    切替え設定部（設定手段）
３８    ダウンロード情報報知部（ダウンロード情報報知手段）
４１    プログラム受信部（プログラム受信手段）
【図１】
2007058561.tif 000003
【図２】
2007058561.tif 000004
【図３】
2007058561.tif 000005
【図４】
2007058561.tif 000006
【図５】
2007058561.tif 000007
【図６】
2007058561.tif 000008
【図７】
2007058561.tif 000009
【図８】
2007058561.tif 000010
【図９】
2007058561.tif 000011
【図１０】
2007058561.tif 000012
【図１１】
2007058561.tif 000013
【図１２】
2007058561.tif 000014
【図１３】
2007058561.tif 000015
【図１４】
2007058561.tif 000016
【図１５】
2007058561.tif 000017
【図１６】
2007058561.tif 000018
【図１７】
2007058561.tif 000019
【図１８】
2007058561.tif 000020
【図１９】
2007058561.tif 000021
【図２０】
2007058561.tif 000022
【図２１】
2007058561.tif 000023
【図２２】
2007058561.tif 000024