(57)【要約】【課題】複数のＣＰＵを備える印刷装置であって、複数のＣＰＵ用のプログラム更新を効率よく、かつ、プログラムの正当性を確保して行うことのできる印刷装置、等を提供する。【解決手段】印刷装置が、外部装置と通信を行う通信部と、通信部を制御する第１ＣＰＵと、第１ＣＰＵと通信を行う第２ＣＰＵと、第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、一時保持用の第３記憶部と、を備え、第１ＣＰＵは、複数のＣＰＵ用の更新プログラムデータを含む更新指示データを通信部を介して受信し、受信した更新指示データを第３記憶部に格納し、格納した更新指示データを用いて、第１記憶部及び第２記憶部、または、第２記憶部に記憶されるプログラムを書き換えて、プログラム更新を実行する。【選択図】  図１
2016212608.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と通信を行う通信部と、
前記通信部を制御する第１ＣＰＵと、
前記第１ＣＰＵと通信を行う第２ＣＰＵと、
前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、
前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、
一時保持用の第３記憶部と、を備え、
前記第１ＣＰＵは、複数のＣＰＵ用の更新プログラムデータを含む更新指示データを前記通信部を介して受信し、受信した前記更新指示データを前記第３記憶部に格納し、格納した前記更新指示データを用いて、前記第１記憶部及び前記第２記憶部、または、前記第２記憶部に記憶される前記プログラムを書き換えて、プログラム更新を実行する
ことを特徴とする印刷装置。
【請求項２】
請求項１において、
前記第１ＣＰＵは、ＣＰＵ毎に、前記プログラム更新の実行の前に、前記第３記憶部に格納した前記更新プログラムデータの正当性判断を実行する
ことを特徴とする印刷装置。
【請求項３】
請求項２において、
前記第１ＣＰＵは、前記正当性判断で正当性が確認されれば、前記更新プログラムデータを用いて前記プログラム更新を実行し、前記正当性判断で正当性が確認されなければ、前記更新プログラムデータを消去する
ことを特徴とする印刷装置。
【請求項４】
請求項２あるいは３において、
前記第１ＣＰＵは、前記正当性判断を、前記更新プログラムデータを用いて実行する
ことを特徴とする印刷装置。
【請求項５】
請求項１乃至４のいずれか一項において、
前記第２ＣＰＵは、フィスカルメモリーを制御する
ことを特徴とする印刷装置。
【請求項６】
ホスト装置と印刷装置を有するプログラム更新システムであって、
前記ホスト装置は、
前記印刷装置の複数のＣＰＵ用の更新プログラムデータを含む更新指示データを前記印刷装置に送信する更新部を備え、
前記印刷装置は、
外部装置と通信を行う通信部と、
前記通信部を制御する第１ＣＰＵと、
前記第１ＣＰＵと通信を行う第２ＣＰＵと、
前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、
前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、
一時保持用の第３記憶部と、を備え、
前記第１ＣＰＵは、前記更新指示データを前記更新部から前記通信部を介して受信し、受信した前記更新指示データを前記第３記憶部に格納し、格納した前記更新指示データを用いて、前記第１記憶部及び前記第２記憶部、または、前記第２記憶部に記憶される前記プログラムを書き換えて、前記複数のＣＰＵ用のプログラム更新を実行する
ことを特徴とするプログラム更新システム。
【請求項７】
外部装置と通信を行う通信部と、
前記通信部を制御する第１ＣＰＵと、
前記第１ＣＰＵと通信を行う第２ＣＰＵと、
前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、
前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、
一時保持用の第３記憶部と、を備える印刷装置の制御方法であって、
前記第１ＣＰＵが、複数のＣＰＵ用の更新プログラムデータを含む更新指示データを前記通信部を介して受信し、受信した前記更新指示データを前記第３記憶部に格納し、格納した前記更新指示データを用いて、前記第１記憶部及び前記第２記憶部、または、前記第２記憶部に記憶される前記プログラムを書き換えて、プログラム更新を実行する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを備える印刷装置等に関し、特に、複数のＣＰＵ用のプログラム更新を効率よく、かつ、プログラムの正当性を確保して行うことのできる印刷装置等に関する。
【背景技術】
【０００２】
いわゆるフィスカルプリンターなど、セキュリティー性能を求められる電子機器においては、データの改ざん等の不正を防止し、データの正当性を確保する必要がある。それに伴い、データを処理するプログラム（ファームウェア）自体の正当性を確保することが重要である。
【０００３】
そこで、従来は、このような機器について、更新（アップデート）機能を持たせないようにする、プログラムを格納するメモリーへの書き込みを禁止する等の措置が施されていた。また、このような機器に複数のＣＰＵが備えられる場合には、サブＣＰＵ用のプログラムについては、製造工程でのみ更新が可能である仕様としていた。
【０００４】
また、このような機器に複数のＣＰＵが備えられる場合、従来は、ＣＰＵ毎にプログラムの更新作業を行っていた。
【０００５】
下記特許文献１には、プログラムの更新が可能なマルチＣＰＵシステムにおいて、プログラム更新を行うべきＣＰＵの種類が増えた場合でも更新作業を高速に行える発明について提案されている。
【０００６】
また、下記特許文献２には、メインＣＰＵにファームウェアのダウンロード指示が与えられたとき、サブＣＰＵにファームウェア書き込みモードを設定し、ダウンロードされるファームウェアをサブＣＰＵに転送し、サブＣＰＵは転送されるファームウェアをメモリーに書き込むことが記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−６４３１７号公報
【特許文献２】特開２００９−２２３４９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したセキュリティー性能を求められる電子機器においても、プログラムのバグ（不具合）修正、ユーザーの要望による機能追加、法律改正に伴う仕様変更などによるプログラム更新の必要があり、これらのプログラム更新を通信によって行えるようにすることは、ユーザー、ベンダー（提供者）の双方にとって利便性が高く、また、コスト面でも有利である。従って、サブＣＰＵ用のプログラム更新についても、通信による方法が強く望まれる。そして、その際には、更新プログラム自体の正当性を確実に確保することが必要である。
【０００９】
また、複数のＣＰＵが備えられる場合、従来のようにＣＰＵ毎にプログラムの更新作業を行うのは、機器の再起動回数も多くなり非効率である。
【００１０】
なお、上記特許文献１には、サブＣＰＵのプログラム更新について記載されているが、
更新プログラムのデータ自体についての十分な正当性の確保については記載されていない。また、当該文献に記載の方法では、データ送信が複数回行われるなど処理が複雑である。
【００１１】
また、上記特許文献２にも、上述の課題を解決する内容の記載はない。
【００１２】
そこで、本発明の目的は、複数のＣＰＵを備える印刷装置であって、複数のＣＰＵ用のプログラム更新を効率よく、かつ、プログラムの正当性を確保して行うことのできる印刷装置、等を提供することである。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために、本発明の一つの側面は、印刷装置が、外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、一時保持用の第３記憶部と、を備え、前記第１ＣＰＵは、複数のＣＰＵ用の更新プログラムデータを含む更新指示データを前記通信部を介して受信し、受信した前記更新指示データを前記第３記憶部に格納し、格納した前記更新指示データを用いて、前記第１記憶部及び前記第２記憶部、または、前記第２記憶部に記憶される前記プログラムを書き換えて、プログラム更新を実行する、ことである。
【００１４】
また、上記発明において、好ましい態様は、前記第１ＣＰＵは、ＣＰＵ毎に、前記プログラム更新の実行の前に、前記第３記憶部に格納した前記更新プログラムデータの正当性判断を実行する、ことを特徴とする。
【００１５】
更に、上記発明において、好ましい態様は、前記第１ＣＰＵは、前記正当性判断で正当性が確認されれば、前記更新プログラムデータを用いて前記プログラム更新を実行し、前記正当性判断で正当性が確認されなければ、前記更新プログラムデータを消去する、ことを特徴とする。
【００１６】
また、上記発明において、好ましい態様は、前記第１ＣＰＵは、前記正当性判断を、前記更新プログラムデータを用いて実行する、ことを特徴とする。
【００１７】
また、上記発明において、好ましい態様は、前記第２ＣＰＵは、フィスカルメモリーを制御する、ことを特徴とする。
【００１８】
上記の目的を達成するために、本発明の別の側面は、ホスト装置と印刷装置を有するプログラム更新システムにおいて、前記ホスト装置は、前記印刷装置の複数のＣＰＵ用の更新プログラムデータを含む更新指示データを前記印刷装置に送信する更新部を備え、前記印刷装置は、外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、一時保持用の第３記憶部と、を備え、前記第１ＣＰＵは、前記更新指示データを前記更新部から前記通信部を介して受信し、受信した前記更新指示データを前記第３記憶部に格納し、格納した前記更新指示データを用いて、前記第１記憶部及び前記第２記憶部、または、前記第２記憶部に記憶される前記プログラムを書き換えて、前記複数のＣＰＵ用のプログラム更新を実行する、ことである。
【００１９】
上記の目的を達成するために、本発明の更に別の側面は、外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、前
記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、一時保持用の第３記憶部と、を備える印刷装置の制御方法において、前記第１ＣＰＵが、複数のＣＰＵ用の更新プログラムデータを含む更新指示データを前記通信部を介して受信し、受信した前記更新指示データを前記第３記憶部に格納し、格納した前記更新指示データを用いて、前記第１記憶部及び前記第２記憶部、または、前記第２記憶部に記憶される前記プログラムを書き換えて、プログラム更新を実行する、ことである。
【００２０】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【図面の簡単な説明】
【００２１】
【図１】本発明を適用したプログラム更新システムの実施の形態例に係る構成図である。
【図２】更新指示データ１５の構成を説明するための図である。
【図３】プログラム更新システム１００による更新処理の手順を例示したフローチャートである。
【図４】更新データ１４の生成手順及び正当性判断手順を説明するための図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００２３】
図１は、本発明を適用したプログラム更新システムの実施の形態例に係る構成図である。図１に示す本実施の形態例に係るプログラム更新システム１００では、ホストコンピューター１（外部装置）から一括で送信される更新指示データ１５に、複数のＣＰＵ用の更新データ１４が含まれ、プリンター２（印刷装置）のメインＣＰＵ２４（第１ＣＰＵ）が、この更新指示データ１５を一時記憶部２５に保持した後、各ＣＰＵ用の更新データ１４を相応するＣＰＵに送信して各ＣＰＵのプログラム更新を実行させる。また、メインＣＰＵ２４は、各ＣＰＵ用の更新データ１４の正当性を確認した後に上記送信を行う。従って、本プログラム更新システム１００では、複数のＣＰＵ用のプログラム更新が効率よく、かつ、プログラムの正当性を確保して実行される。
【００２４】
図１に示すように、本プログラム更新システム１００は、セキュリティー性能を必要とするプリンター２と当該プリンター２のホスト装置であるホストコンピューター１とを備える。ホストコンピューター１とプリンター２は通信可能に接続される。プリンター２のプログラム（ファームウェア）を更新する際には、ホストコンピューター１から更新プログラムデータを送信して作業を行う。
【００２５】
ホストコンピューター１は、パーソナルコンピューター等で構成され、図示していないが、ＣＰＵ、ＲＡＭ、ＨＤＤ、通信装置、表示装置、指示装置等を備える。また、ホストコンピューター１は、図１に示すように、機能構成として、更新部１１を備える。
【００２６】
更新部１１は、プリンター２のプログラム更新を指示する部分であり、データ転送部１２とデータ記憶部１３を備える。
【００２７】
データ記憶部１３は、プリンター２のプログラムを更新するための更新指示データ１５を記憶する。更新指示データ１５は、プリンター２の各ＣＰＵ（２４、２７ａ、２７ｂ、・・・）用の更新データ１４を複数含む。すなわち、更新指示データ１５は、プリンター
２の複数のＣＰＵ用の更新データ１４から構成される。
【００２８】
図２は、更新指示データ１５の構成を説明するための図である。図２に示されるように、更新指示データ１５は、複数の更新データ１４（１４Ｍ、１４ａ、１４ｂ、・・・）から構成される。
【００２９】
各更新データ１４は、それぞれ、プリンター２に備えられる各ＣＰＵ用のデータである。更新データ１４Ｍは、メインＣＰＵ２４用のプログラム更新のためのデータであり、更新データ１４ａは、サブＣＰＵ２７ａ用のプログラム更新のためのデータであり、更新データ１４ｂは、サブＣＰＵ２７ｂ用のプログラム更新のためのデータである。
【００３０】
各更新データ１４は、図２に示されるように、ヘッダー１４１（１４１Ｍ、１４１ａ、１４１ｂ、・・・）、更新プログラムデータ１４２（１４２Ｍ、１４２ａ、１４２ｂ、・・・）、及びデジタル署名１４３（１４３Ｍ、１４３ａ、１４３ｂ、・・・）を含み、ＲＯＭに書き込むための所定のフォーマットで表現される。
【００３１】
ヘッダー１４１は、更新データ１４を説明する情報であり、［先頭フラグ］を先頭に［ＣＰＵ識別情報］を含む。［先頭フラグ］は、更新データ１４（ＣＰＵ）の区切りを表現する。［ＣＰＵ識別情報］は、その更新データの適用先のＣＰＵを示す情報である。従って、更新データ１４Ｍは、［メイン］とのＣＰＵ識別情報により、メインＣＰＵ２４用のデータであることが示され、更新データ１４ａは、［サブａ］とのＣＰＵ識別情報により、サブＣＰＵ２７ａ用のデータであることが示される。
【００３２】
更新プログラムデータ１４２は、更新プログラム自体のデータである。更新プログラムデータ１４２Ｍは、更新後に、メインＣＰＵ２４が実行するプログラムであり、更新プログラムデータ１４２ａは、更新後に、サブＣＰＵ２７ａが実行するプログラムである。
【００３３】
デジタル署名１４３は、更新データ１４及び更新プログラムデータ１４２の正当性を判断するための正当性判断情報である。なお、デジタル署名１４３の生成方法については後述する。
【００３４】
なお、更新指示データ１５は、ホストコンピューター１で生成されてもよいし、他の装置で生成されてもよい。また、更新部１１が更新指示データ１５を生成する機能を備えてもよい。なお、データ記憶部１３は、ＨＤＤ等の記憶装置で構成することができる。
【００３５】
データ転送部１２は、データ記憶部１３に記憶される更新指示データ１５をプリンター２へ送信する部分である。データ転送部１２は、データ転送用のアプリケーションプログラム、当該プログラムに従って動作するＣＰＵ、ＲＡＭ等によって構成される。
【００３６】
プリンター２は、ホストコンピューター１によるプログラム更新の対象装置であり、一例として、店舗の精算装置（レジ）等に接続されて使用される、フィスカルプリンターである。フィスカルプリンターは、セキュリティーが確保されたフィスカルメモリーを備え、徴税用として売上情報等をフィスカルメモリーに記憶する。
【００３７】
プリンター２は、動作モードとして、プログラムを更新する際の更新モードと、印刷を実行する際の印刷モードを備える。
【００３８】
プリンター２は、図１に示すように、メイン制御部２１と複数のサブ制御部２２（２２ａ、２２ｂ、・・・）を備える。各制御部２１、２２は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＡＳＩＣ等を載せた電子基板で構成される。また、図示していないが、各サブ制御部２２は、
制御対象である各動作部を備える。
【００３９】
メイン制御部２１は、プリンター２全体の制御、ホストコンピューター１を含む外部装置との通信の制御を司る部分である。また、メイン制御部２１は、メイン制御部２１及びサブ制御部２２用のプログラム更新の際に、更新指示データ１５の正当性判断、それに基づくプログラム更新処理を行う。
【００４０】
メイン制御部２１は、図１に示すように、通信部２３、メインＣＰＵ２４、一時記憶部２５、及びメイン記憶部２６を備える。通信部２３は、外部装置との通信を司る部分である。通信部２３は、一例として、外部装置がプリンター２の印刷処理等の制御を行うホストコンピューター１の場合は、ＵＳＢ（Universal Serial Bus）に則った通信を行う。また、外部装置はネットワークを介するサーバーコンピューターでもよい。
【００４１】
メインＣＰＵ２４（第１ＣＰＵ）は、メインＣＰＵ用のプログラム（ファームウェア）に従って上述したメイン制御部２１による制御を実行する部分である。
【００４２】
メイン記憶部２６（第１記憶部）は、メインＣＰＵ２４が主として用いるメインメモリーであり、例えば、フラッシュＲＯＭで構成される。メイン記憶部２６は、メインＣＰＵ２４が実行するプログラムを記憶する。なお、メインＣＰＵは、プログラムをＲＡＭに呼び出し、実行する。
【００４３】
一時記憶部２５（第３記憶部）は、メインＣＰＵ２４が一時的に用いるテンポラリーメモリーであり、例えば、フラッシュＲＯＭで構成される。一時記憶部２５は、ホストコンピューター１から送信される更新指示データ１５を一時的に記憶（保持）する。
【００４４】
サブ制御部２２（２２ａ、２２ｂ、・・・）は、図１に示すように、それぞれ、サブＣＰＵ２７（２７ａ、２７ｂ、・・・）（第２ＣＰＵ）とサブ記憶部２８（２８ａ、２８ｂ、・・・）（第２記憶部）を備える。各サブＣＰＵ２７は、各サブ記憶部２８に記憶されるサブＣＰＵ用のプログラム（ファームウェア）を実行して制御を行う。各サブＣＰＵ２７は、メインＣＰＵ２４から送信される更新データ１４を受信して、更新データ１４に含まれる更新プログラムデータ１４２を各サブ記憶部２８に書き込んでプログラム更新を行う。なお、各サブ記憶部２８は、例えば、フラッシュＲＯＭで構成される。
【００４５】
サブ制御部２２としては、印刷制御部（２２ａ）、フィスカルメモリー制御部（２２ｂ）、バッテリー制御部、などがある。
【００４６】
印刷制御部（２２ａ）には、図示しない動作部（印刷機構部）が接続され、印刷制御部（２２ａ）の制御により印刷機構部が用紙などの印刷媒体に印刷を実行する。例えば、印刷方式として、インクジェット方式を用いる場合には、印刷機構部は、インクを吐出するノズルを備えた印刷ヘッド、印刷媒体を搬送する搬送装置などを備える。
【００４７】
フィスカルメモリー制御部（２２ｂ）には、図示しない動作部（フィスカルメモリー）が接続され、フィスカルメモリーは、プリンター２に印刷指示を出す精算装置等で処理された売上情報などのフィスカルデータを記憶する。フィスカルメモリーに記憶された情報は、消去、編集することができない。フィスカルメモリーは、不揮発性のメモリーで構成することができる。
【００４８】
以上説明したような構成を備える本プログラム更新システム１００では、以下のような手順で、各ＣＰＵ用のプログラムの更新処理が行われる。図３は、プログラム更新システム１００による更新処理の手順を例示したフローチャートである。
【００４９】
ホストコンピューター１の操作者がデータ転送部１２を起動すると、データ転送部１２は、データ記憶部１３に記憶される更新指示データ１５を読み出して取得する（図３のステップＳ１）。更新指示データ１５は、今回の更新処理でプログラム更新を行う全てのＣＰＵ用の更新データ１４を含む。
【００５０】
次に、データ転送部１２は、取得した更新指示データ１５を、一括して、換言すれば、一連の送信処理として、ネットワーク３を介してプリンター２へ送信する（図３のステップＳ２）。
【００５１】
プリンター２は、通信部２３で送信された更新指示データ１５を受信する。受信された更新指示データ１５は、メインＣＰＵ２４に渡される。
【００５２】
メインＣＰＵ２４は、更新指示データ１５のヘッダー１４１を解釈し、更新データ１４を含むと判断し、動作モードを更新モードに切り替える。その後、メインＣＰＵ２４は、更新指示データ１５を一時記憶部２５に格納（保持）する（図３のステップＳ３）。
【００５３】
次に、メインＣＰＵ２４は、一時記憶部２５に記憶される更新指示データ１５に従って、各ＣＰＵのプログラム更新処理を行う。メインＣＰＵ２４は、更新指示データ１５に含まれる順番に従って、ＣＰＵ毎に、各更新データ１４に基づき、プログラム更新処理を実行する。
【００５４】
メインＣＰＵ２４は、更新指示データ１５に更新データ１４が含まれる全てのＣＰＵについて処理が終了する（図３のステップＳ４のＹｅｓ）まで、ＣＰＵ毎に以下の処理を実行する。
【００５５】
メインＣＰＵ２４は、まず、一時記憶部２５に格納した更新データ１４の（図２に示した例において、最初の処理では、更新データ１４Ｍの）正当性を判断する（図３のステップＳ５）。当該正当性判断の具体的な処理については後述するが、本実施形態例では、一例として、デジタル署名方式による認証処理を行う。当該正当性判断処理により、更新データ１４全体の正当性、換言すれば、プログラム更新指示の正当性、及び、更新データ１４に含まれる更新プログラムデータ１４２自体の正当性が判断される。
【００５６】
正当性判断の結果、更新データ１４の正当性が認められなければ（図３のステップＳ６のＮｏ）、メインＣＰＵ２４は、一時記憶部２５から当該更新データ１４を削除（消去）する（図３のステップＳ７）。その後、メインＣＰＵ２４は、ホストコンピューター１の更新部１１に対し、更新データ１４の正当性が認められず更新データ１４によるプログラム更新が行われなかった旨の応答を行い、当該ＣＰＵについての処理を終了する。その後、処理はステップＳ４に戻る。
【００５７】
一方、正当性判断の結果、更新データ１４の正当性が認められれば（図３のステップＳ６のＹｅｓ）、メインＣＰＵ２４は、当該更新データ１４のヘッダー１４１に含まれるＣＰＵ識別情報から更新先のＣＰＵを決定する（図３のステップＳ８）。すなわち、ＣＰＵ識別情報が示すＣＰＵを、当該更新データ１４によって更新を行うプログラムを実行するＣＰＵとして決定する。
【００５８】
次に、メインＣＰＵ２４は、一時記憶部２５から当該更新データ１４を読み出し、決定した更新先のサブＣＰＵ２７に、更新データ１４を送信する（図３のステップＳ９）。なお、更新先ＣＰＵがメインＣＰＵ２４である場合には、当該送信処理は行わない。また、サブＣＰＵ２７に更新データ１４を送る際に、デジタル署名１４３を除いて（削除して）
送るようにしてもよい。
【００５９】
更新データ１４を送信されたサブＣＰＵ２７は、更新データ１４を受信し、更新データ１４の指示に従って、更新データ１４に含まれる更新プログラムデータ１４２をサブ記憶部２８に記憶する。当該記憶の際に、サブＣＰＵ２７は、更新プログラムデータ１４２に相当する、サブ記憶部２８に記憶されていたこれまでの（現行の）プログラムデータを消去する。すなわち、現行のプログラムデータを更新プログラムデータ１４２に書き換えて、更新データ１４によるプログラム更新が実行される（図３のステップＳ１０）。なお、更新先ＣＰＵがメインＣＰＵ２４である場合には、メインＣＰＵ２４が一時記憶部２５から自分用の更新データ１４Ｍを読み出し、サブＣＰＵ２７の場合と同様に、更新データ１４Ｍに含まれる更新プログラムデータ１４２Ｍをメイン記憶部２６に記憶して、プログラムの更新を行う。
【００６０】
更新先のサブ制御部２２がサブ制御部２２ｂ（フィスカルメモリー制御部）である場合には、サブＣＰＵ２７ｂがフィスカルメモリー用の更新データ１４ｂを受信し、サブ記憶部２８ｂに記憶されるプログラムが、受信された更新データ１４ｂに含まれる更新プログラムデータ１４２ｂによって更新される。
【００６１】
以上のようにして、各ＣＰＵ用のプログラム更新処理が実行され、更新指示データ１５に更新データ１４が含まれる全てのＣＰＵについてプログラム更新処理が終了すると（図３のステップＳ４のＹｅｓ）、ホストコンピューター１から送信された更新指示データ１５による処理が終了する。
【００６２】
以上のようにして、本プログラム更新システム１００によるプログラム更新処理が実行される。
【００６３】
次に、各更新データ１４の生成処理及び正当性判断処理について説明する。図４は、更新データ１４の生成手順及び正当性判断手順を説明するための図である。更新データ１４を生成する際には、まず、新たにメイン記憶部２６又はサブ記憶部２８に記憶されるべきプログラムのデータである更新プログラムデータ１４２が用意される（図４の（Ａ））。更新プログラムデータ１４２は、ＲＯＭへ書き込みを行うための所定のフォーマットで表現されている。
【００６４】
次に、所定のハッシュ関数に更新プログラムデータ１４２が入力され（図４の（Ｂ））、更新プログラムデータ１４２がハッシュ値を求められる（図４の（Ｃ））。その後、求めたハッシュ値を秘密鍵で暗号化され（図４の（Ｄ））、デジタル署名１４３が生成される（図４の（Ｅ））。生成されたデジタル署名１４３は、上記所定のフォーマットで表現される。
【００６５】
その後、上述したヘッダー１４１が上記所定のフォーマットで生成され（図４の（Ｆ））、生成されたヘッダー１４１、更新プログラムデータ１４２、及びデジタル署名１４３が合わせられて更新データ１４が生成される（図４の（Ｇ））。かかる更新データ１４の生成は、ホストコンピューター１あるいは他のコンピューターに備えられる更新データ生成プログラムを用いて行うことができる。
【００６６】
生成された各更新データ１４は、図２に示したように、１つの更新指示データ１５にまとめられて、プリンター２に送信される。
【００６７】
次に、正当性判断の処理について説明する。上述の通り、各更新データ１４は、プリンター２のメインＣＰＵ２４により正当性の判断がなされる。メインＣＰＵ２４は、受信し
た更新データ１４に含まれる更新プログラムデータ１４２を読み出す（図４の（Ｈ））。メインＣＰＵ２４は、更新データ１４を生成した際の上記ハッシュ関数を記憶しており、そのハッシュ関数に読み出した更新プログラムデータ１４２を入力してハッシュ値を求める（図４の（Ｊ））。
【００６８】
また、メインＣＰＵ２４は、受信した更新データ１４に含まれるデジタル署名１４３を読み出す（図４の（Ｉ））。メインＣＰＵ２４は、更新データ１４を生成した際に用いた秘密鍵に対応する公開鍵を記憶しており、その公開鍵を用いて読み出したデジタル署名１４３を復号化し、ハッシュ値を得る（図４の（Ｋ））。
【００６９】
その後、メインＣＰＵ２４は、図４の（Ｊ）により求めたハッシュ値と、図４の（Ｋ）により求めたハッシュ値を照合（比較）し（図４の（Ｌ））、両者が一致すれば、受信した更新データ１４は正当であると判断する。すなわち、更新指示と更新プログラムデータ１４２自身の正当性を認める。
【００７０】
一方、両者が一致していない場合には、メインＣＰＵ２４は、受信した更新データ１４は正当でないと判断する。この場合には、更新プログラムデータ１４２が改ざんされた虞がある。また、上述した公開鍵による復号化（図４の（Ｋ））ができない場合には、メインＣＰＵ２４は、受信した更新データ１４は正当でないと判断する。この場合には、更新指示が正当な指示者からのものでないことが疑われる。
【００７１】
なお、以上説明したデジタル署名方式以外の方法で正当性判断の処理を行ってもよい。
【００７２】
以上説明したように、本実施の形態例に係るプログラム更新システム１００では、複数のＣＰＵ用の更新データ１４が一つの更新指示データ１５としてまとめられて、ホストコンピューター１から送信され、プリンター２のメインＣＰＵ２４がその更新指示データ１５を順次処理することにより、各ＣＰＵのプログラム更新処理が実行される。従って、複数のＣＰＵ用のプログラム更新処理を一連の処理として実行でき、プログラム更新後の再起動も１回すればよく、効率的である。また、サブＣＰＵ用のプログラム更新を通信により行えるので利便性の向上が図れる。
【００７３】
また、更新指示データ１５は複数の更新データ１４を単に連ねた構造であり、メインＣＰＵ２４は、他のデータの要求などをすることなく、そのデータを順番に処理すればよいので、処理を簡素にすることができる。
【００７４】
また、更新データ１４毎にその正当性判断処理を実行し、その際に、更新プログラムデータ１４２自体を用いてその正当性を判断するので、更新プログラムの正当性を十分に確保することができる。
【００７５】
従って、フィスカルプリンターなど、データの改ざん等の不正を防止したい機器に有効である。
【００７６】
なお、本実施の形態例では、図２等において、メインＣＰＵ２４用のプログラム更新を含む例を示したが、メインＣＰＵ２４用のプログラム更新を含まずに複数のサブＣＰＵ２７用のプログラム更新だけを行ってもよい。
【００７７】
なお、本発明はプリンター以外の電子機器に適用することができる。
【００７８】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【符号の説明】
【００７９】
１  ホストコンピューター、  ２  プリンター、  ３  ネットワーク、  １１  更新部、  １２  データ転送部、  １３  データ記憶部、  １４（１４Ｍ、１４ａ、１４ｂ）  更新データ、  １５  更新指示データ、  ２１  メイン制御部、  ２２（２２ａ、２２ｂ）  サブ制御部、  ２３  通信部、  ２４  メインＣＰＵ、  ２５  一時記憶部、  ２６
メイン記憶部、  ２７（２７ａ、２７ｂ）  サブＣＰＵ、  ２８（２８ａ、２８ｂ）  サブ記憶部、  １００  プログラム更新システム、  １４１（１４１Ｍ、１４１ａ、１４１ｂ）  ヘッダー、  １４２（１４２Ｍ、１４２ａ、１４２ｂ）  更新プログラムデータ、  １４３（１４３Ｍ、１４３ａ、１４３ｂ）  デジタル署名
【図１】
2016212608.tif 000003
【図２】
2016212608.tif 000004
【図３】
2016212608.tif 000005
【図４】
2016212608.tif 000006