(57)【要約】【課題】制御プログラムの書き換えにかかる時間を短縮する。【解決手段】プリンター１は、複数のモジュールを含む第１制御プログラムを記憶するメインＲＯＭ１１１、第１制御プログラムを実行するメイン制御部１２０のプロセッサー１２１と、第１制御プログラムに含まれる少なくとも一部のモジュールのメインＲＯＭ１１１における移動、又は一部のモジュールの削除を行って第２制御プログラムを構成するプログラム構成処理を行い、プロセッサー１２１が第２制御プログラムを実行可能な状態とする第２サブ制御部１４０と、を備える。【選択図】図１
2017037508.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを含む第１制御プログラムを記憶する記憶部と、
前記第１制御プログラムを実行する制御部と、を備え、
前記制御部は、前記第１制御プログラムに含まれる少なくとも一部のモジュールの前記記憶部における移動、又は一部のモジュールの削除を行って第２制御プログラムを構成するプログラム構成処理を行い、前記第２制御プログラムを実行可能な状態とする、ことを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記プログラム構成処理において、前記第１制御プログラムを構成するモジュールであって、前記第２制御プログラムを構成する必須のモジュールに対応するモジュールを、前記第２制御プログラムを構成するモジュールとして選択し、前記第１制御プログラムを構成するモジュールであって、前記第２制御プログラムを構成する前記必須のモジュールに対応しないモジュールを前記記憶部から削除する、請求項１記載の情報処理装置。
【請求項３】
前記記憶部は、前記第１制御プログラムを構成する第１モジュールに対応したデジタル署名と、前記第２制御プログラムを構成する第２モジュールに対応したデジタル署名とを前記第１制御プログラムに含まれる前記複数のモジュールとして記憶し、
前記制御部は、前記プログラム構成処理において、前記第１モジュールに対応した前記デジタル署名を前記記憶部から削除し、削除した前記第１モジュールに対応した前記デジタル署名の位置に、前記第２モジュールに対応した前記デジタル署名を記憶させる、請求項１又は２記載の情報処理装置。
【請求項４】
前記記憶部は、前記第２制御プログラムを構成する各モジュールの前記記憶部における記憶位置を示すマップ情報を記憶し、
前記制御部は、前記プログラム構成処理において、前記マップ情報に従って前記第２制御プログラムを構成する、請求項１から３のいずれかに記載に情報処理装置。
【請求項５】
前記制御部は、コマンドの入力を受け付けた場合に、前記プログラム構成処理を実行する、請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
前記情報処理装置は、印刷装置であり、
前記制御部は、前記第１制御プログラムを実行して前記情報処理装置の動作を検査する検査処理を実行し、前記第２制御プログラムを実行して印刷データを印刷する印刷処理を実行する、ことを特徴とする請求項１から５のいずれかに記載の情報処理装置。
【請求項７】
前記制御部は、前記第１制御プログラムを実行する第１制御部と、前記記憶部に前記第２制御プログラムを構成する第２制御部と、を備える、請求項１から６のいずれかに記載の情報処理装置。
【請求項８】
前記情報処理装置は、フィスカル情報を記憶する記憶部を備えるフィスカルプリンターである、請求項１から７のいずれかに記載の情報処理装置。
【請求項９】
記憶部の記憶する複数のモジュールを含む第１制御プログラムを実行するステップと、
前記第１制御プログラムに含まれる少なくとも一部のモジュールの前記記憶部における移動、又は一部のモジュールの削除を行って第２制御プログラムを構成するプログラム構成処理を行い、前記第２制御プログラムを実行可能な状態とするステップと、
を有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及び、情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、情報処理装置には、制御プログラムが搭載されており、情報処理装置の機能拡張を行う場合やプログラム上の不具合が見つかった場合には、制御プログラムの更新が行われる（例えば、特許文献１参照）。
特許文献１は、上位装置からファームウェアの書換データを１セクター分ずつ受信して、受信した書換データによりファームウェアを書き換えるファームウェア書換方法を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１２５４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、情報処理装置に制御プログラムを送信する場合、制御プログラムのサイズが大きくなると、制御プログラムの取得に時間を要し、制御プログラムの書き換えが完了するまでに時間がかかる。
本発明は上記事情に鑑みてなされたものであり、制御プログラムの書き換えにかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の情報処理装置は、複数のモジュールを含む第１制御プログラムを記憶する記憶部と、前記第１制御プログラムを実行する制御部と、を備え、前記制御部は、前記第１制御プログラムに含まれる少なくとも一部のモジュールの前記記憶部における移動、又は一部のモジュールの削除を行って第２制御プログラムを構成するプログラム構成処理を行い、前記第２制御プログラムを実行可能な状態とすることを特徴とする。
本発明によれば、制御部が実行可能な制御プログラムを第１制御プログラムから第２制御プログラムに書き換えるまでにかかる時間を短縮することができる。
【０００６】
また、本発明は、上記情報処理装置において、前記制御部は、前記プログラム構成処理において、前記第１制御プログラムを構成するモジュールであって、前記第２制御プログラムを構成する必須のモジュールに対応するモジュールを、前記第２制御プログラムを構成するモジュールとして選択し、前記第１制御プログラムを構成するモジュールであって、前記第２制御プログラムを構成する前記必須のモジュールに対応しないモジュールを前記記憶部から削除することを特徴とする。
本発明によれば、第２制御プログラムの構成にかかる時間を短縮することができる。
【０００７】
また、本発明は、上記情報処理装置において、前記記憶部は、前記第１制御プログラムを構成する第１モジュールに対応したデジタル署名と、前記第２制御プログラムを構成する第２モジュールに対応したデジタル署名とを前記第１制御プログラムに含まれる前記複数のモジュールとして記憶し、前記制御部は、前記プログラム構成処理において、前記第１モジュールに対応した前記デジタル署名を前記記憶部から削除し、削除した前記第１モジュールに対応した前記デジタル署名の位置に、前記第２モジュールに対応した前記デジタル署名を記憶させることを特徴とする。
本発明によれば、実行する制御プログラムが変更されても、実行する制御プログラムに対応したデジタル署名を、記憶部の同一の位置から取得して、実行する制御プログラムが正当なプログラムであるか否かを検証することができる。
【０００８】
また、本発明は、上記情報処理装置において、前記記憶部は、前記第２制御プログラムを構成する各モジュールの前記記憶部における記憶位置を示すマップ情報を記憶し、前記制御部は、前記プログラム構成処理において、前記マップ情報に従って前記第２制御プログラムを構成することを特徴とする。
本発明によれば、第２制御プログラムの構成に要する時間を短縮することができる。
【０００９】
また、本発明は、上記情報処理装置において、前記制御部は、コマンドの入力を受け付けた場合に、前記記憶部に前記第２制御プログラムを構成することを特徴とする。
本発明によれば、情報処理装置をコマンドにより制御して、記憶部に第２制御プログラムを構成させることができる。
【００１０】
また、本発明は、上記情報処理装置において、前記情報処理装置は、印刷装置であり、前記制御部は、前記第１制御プログラムを実行して前記情報処理装置の動作を検査する検査処理を実行し、前記第２制御プログラムを実行して印刷データを印刷する印刷処理を実行することを特徴とする。
本発明によれば、第１制御プログラムを実行して印刷装置の動作を検査する検査処理を行った後に、第２制御プログラムを記憶部に構成し、印刷装置を印刷処理が可能な状態にすることができる。
【００１１】
また、本発明は、上記情報処理装置において、前記制御部は、前記第１制御プログラムを実行する第１制御部と、前記記憶部に前記第２制御プログラムを構成する第２制御部と、を備えることを特徴とする。
本発明によれば、制御プログラムの書き換えを行う制御部を、制御プログラムを実行する制御部とは別に設けることで、制御プログラムの書き換えにかかる時間を短縮することができる。
【００１２】
また、本発明は、上記情報処理装置において、前記情報処理装置は、フィスカル情報を記憶する記憶部を備えるフィスカルプリンターであることを特徴とする。
【００１３】
本発明の情報処理装置の制御方法は、記憶部の記憶する複数のモジュールを含む第１制御プログラムを実行するステップと、前記第１制御プログラムに含まれる少なくとも一部のモジュールの前記記憶部における移動、又は一部のモジュールの削除を行って第２制御プログラムを構成するプログラム構成処理を行い、前記第２制御プログラムを実行可能な状態とするステップと、を有することを特徴とする。
本発明によれば、プロセッサーが実行可能な制御プログラムを第１制御プログラムから第２制御プログラムに書き換えるまでにかかる時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】プリンターの構成を示すブロック図。
【図２】（Ａ）及び（Ｂ）は、メインＲＯＭのマップ配置を示す図。
【図３】プリンターの動作を示すフローチャート。
【図４】プリンターの動作を示すフローチャート。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。
図１は、情報処理装置としてのプリンター（印刷装置）１の構成を示すブロック図である。
プリンター１は、ホストコンピューター１０に接続され、ホストコンピューター１０から供給される販売取引に関する情報（印刷データ）をレシートに印刷して出力する。また、プリンター１は、販売取引に関する情報をフィスカルデータ（フィスカル情報）として記憶保持する、いわゆるフィスカルプリンターとしての機能を備える。フィスカルデータの詳細については後述する。
【００１６】
プリンター１は、フィスカル制御基板１００と、プリンター基板３００とを備える。
フィスカル制御基板１００は、通信部１１０、メインＲＯＭ(Read Only Memory)１１１、ＳＲＡＭ（Static Random Access Memory）１１２、ＲＴＣ（Real-time clock：リアルタイムクロック）１１３、メイン制御部１２０、ＥＪ（Electrical Journal）メモリー１３１、第１サブ制御部１３２、フィスカルメモリー１３３、ＣＰＬＤ（Complex programmable logic device）１３４、第２サブ制御部１４０を実装する。
プリンター基板３００は、プリンター制御部３１０及び記録機構３２０を実装する。
【００１７】
通信部１１０は、ホストコンピューター１０や、不図示のフィスカルデータ読出装置に接続し、これらの装置との間でデータの送受信を行う。
ホストコンピューター１０は、商品又は商品の包装に付されたバーコードを読み取るバーコードリーダーや、顧客が有する会員カードや、クレジットカード等のカードに記録された情報を読み取るカードリーダーに接続する。ホストコンピューター１０は、これらのデバイスからの入力や、レジ担当者からの操作入力に応じて商品ＤＢ等にアクセスし、顧客が購入した商品の商品情報（商品名等）、商品単価、商品の購入数、税額、購入総額等を表す販売取引に関する情報を生成する。ホストコンピューター１０は、生成した販売取引に関する情報と、レシートの発行を指示する制御コマンドとをプリンター１に送信する。通信部１１０は、ホストコンピューター１０から販売取引に関する情報と、レシートの発行を指示する制御コマンドとを受信すると、受信した販売取引に関する情報及び制御コマンドをメイン制御部１２０に出力する。
また、フィスカルデータ読出装置は、ＥＪメモリー１３１や、フィスカルメモリー１３３が記憶するフィスカルデータを読み出すための装置であり、例えば、国家機関（政府等）の関係者等、特別な許可を得た者だけが所持し得る。
【００１８】
記憶部としてのメインＲＯＭ１１１は、メイン制御部１２０が実行する制御プログラムやデータを記憶する。メインＲＯＭ１１１が記憶する制御プログラムは、ＯＳ（Operating System）とファームウェアとを含み、データは、ファームウェアのデジタル署名を含む。メインＲＯＭ１１１が記憶する制御プログラム及びデータの詳細は後述する。
ＳＲＡＭ１１２は、メイン制御部１２０が演算を行う際のワークエリアとして機能する揮発性のメモリーであり、各種データを一時的に記憶する。
ＲＴＣ１１３は、時刻を計時し、現在日時（年月日、時刻）を示すデータをメイン制御部１２０に出力する。
【００１９】
制御部（第１制御部）として機能するメイン制御部１２０は、プロセッサー１２１を備え、メインＲＯＭ１１１が記憶するＯＳやファームウェアを実行して、プリンター１の各部を中枢的に制御する。
例えば、メイン制御部１２０は、ホストコンピューター１０から受信した販売取引に関する情報と、レシートの発行を指示する制御コマンドとが入力されると、入力された販売取引に関する情報に、販売店名、販売日時、支払額、お釣り等の情報を付加してレシートデータを生成する。メイン制御部１２０は、生成したレシートデータをプリンター制御部３１０に出力して、レシートデータをロール紙に印刷させる。
また、メイン制御部１２０は、ロール紙に印刷させたレシートデータを第１サブ制御部１３２に出力し、ＥＪメモリー１３１に記憶させる。さらに、メイン制御部１２０は、一日の終わりに、一日分のレシートデータをＥＪメモリー１３１から取り出してＣＰＬＤ１３４に渡す。
【００２０】
ＥＪメモリー１３１は、例えば、ＯＴＰＲＯＭ（One Time Programmable Read Only Memory）等の不揮発性メモリーであり、第１サブ制御部１３２の制御の下、１つのアドレスに対して１度しかデータを書き込めないメモリーとして機能する。従って、ＥＪメモリー１３１に書き込まれたデータが後から編集されるのを防止し、ＥＪメモリー１３１に書き込まれたデータに対する改ざんを防止する。
第１サブ制御部１３２は、ＥＪメモリー１３１に対してデータの読み書きを行う。第１サブ制御部１３２は、レシートに印刷したレシートデータと、書込日時データと、レシートデータのハッシュ値を所定の秘密鍵で暗号化したデジタル署名とを対応付けて、フィスカルデータとしてＥＪメモリー１３１に書き込む。書込日時データは、ＥＪメモリー１３１にレシートデータを書き込んだ日時（日付及び時刻）を示すデータであり、メイン制御部１２０がＲＴＣ１１３から日時を示すデータを取得して、第１サブ制御部１３２に出力する。
また、第１サブ制御部１３２は、メイン制御部１２０の要求によりＥＪメモリー１３１からフィスカルデータを読み出し、メイン制御部１２０に出力する。メイン制御部１２０は、接続されたフィスカルデータ読出装置からフィスカルデータの読み出し要求があると、第１サブ制御部１３２を制御してＥＪメモリー１３１からフィスカルデータを読み出す。メイン制御部１２０は、読み出したフィスカルデータをフィスカルデータ読出装置に出力する。
ＥＪメモリー１３１及び第１サブ制御部１３２は、エポキシ樹脂によってフィスカル制御基板１００に封止されており、ＥＪメモリー１３１がフィスカル制御基板１００から物理的に取り外され、ＥＪメモリー１３１に記憶されたデータが改ざんされるのを防止する。
【００２１】
フィスカルメモリー１３３は、例えば、ＯＴＰＲＯＭ等の不揮発性メモリーであり、ＣＰＬＤ１３４の制御の下、１つのアドレスに対して１度しかデータを書き込めないメモリーとして機能する。従って、フィスカルメモリー１３３に書き込まれたデータが後から編集されるのを防止し、フィスカルメモリー１３３に書き込まれたデータに対する改ざんを防止する。
ＣＰＬＤ１３４は、プログラム可能な論理回路を備えるデバイスであり、フィスカルメモリー１３３に対してデータの読み書きを行う。ＣＰＬＤ１３４は、日計売上データと、書込日時データとを対応付けて、フィスカルデータとしてフィスカルメモリー１３３に書き込む。ＣＰＬＤ１３４は、メイン制御部１２０から入力される一日分のレシートデータに基づいて１日の総売上である日計売上データを算出する。ＣＰＬＤ１３４は、算出した日計売上データに、メイン制御部１２０から入力される日時（日付及び時刻）を示す書込日時データを付加して、フィスカルメモリー１３３に書き込む。なお、「１日」とは、プリンター１が設置された店舗における開店から閉店までの期間である。また、書込日時データは、フィスカルメモリー１３３に日計売上データを書き込んだ日時（日付及び時刻）を示すデータである。
また、ＣＰＬＤ１３４は、メイン制御部１２０の要求によりフィスカルメモリー１３３からフィスカルデータを読み出し、メイン制御部１２０に出力する。メイン制御部１２０は、接続されたフィスカルデータ読出装置からフィスカルデータの読み出し要求があると、ＣＰＬＤ１３４を制御してフィスカルメモリー１３３からフィスカルデータを読み出す。メイン制御部１２０は、読み出したフィスカルデータをフィスカルデータ読出装置に出力する。
フィスカルメモリー１３３及びＣＰＬＤ１３４は、エポキシ樹脂によって封止されており、例えば、フィスカルメモリー１３３がフィスカル制御基板１００から物理的に取り外され、フィスカルメモリー１３３に記憶されたデータが改ざんされるのを防止できる。
【００２２】
制御部（第２制御部）として機能する第２サブ制御部１４０は、プロセッサー１４１や、ＲＯＭやＲＡＭ等のメモリー（いずれも図示略）を備える。ＲＯＭは、プロセッサー１４１が実行する制御プログラムを記憶する。また、ＲＯＭは、後述するデジタル署名の復号に用いられる公開鍵を記憶する。ＲＡＭは、プロセッサー１４１のワークメモリーとして使用される。
第２サブ制御部１４０は、メイン制御部１２０の指示により、プログラム構成処理を行う。プログラム構成処理は、第１制御部プログラムが構成された状態のメインＲＯＭ１１１に第２制御プログラムを構成して、メイン制御部１２０が第２制御プログラムを実行可能な状態とする処理である。第２サブ制御部１４０は、メインＲＯＭ１１１が第１制御プログラムとして記憶する少なくとも一部のファームウェア及びデータのメインＲＯＭ１１１での記憶位置を移動させ、又は一部のファームウェア及びデータをメインＲＯＭ１１１から削除して、第２制御プログラムを構成し、第２制御プログラムを実行可能な状態する。第１制御プログラム及び第２制御プログラムの詳細については後述する。また、プログラム構成処理の詳細についても後述する。
【００２３】
プリンター制御部３１０は、メイン制御部１２０から入力される制御コマンドに基づいて、記録機構３２０を制御し、レシートを発行する。記録機構３２０は、ロール紙の印刷面に熱を与えることにより画像を記録するサーマルヘッド３２１や、ロール紙を搬送する搬送機構３２２、所定の位置でロール紙を切断する切断機構３２３等を備えており、プリンター制御部３１０の制御の下、これら機構や装置を動作させて、レシートを発行する。
プリンター基板３００には、プリンター側コネクター３５０が実装され、フィスカル制御基板１００には、フィスカル側コネクター１６０が実装される。プリンター側コネクター３５０と、フィスカル側コネクター１６０とが接続されることで、フィスカル制御基板１００と、プリンター基板３００とが接続される。
【００２４】
図２（Ａ）は、メインＲＯＭ１１１のマップ配置を示す図である。
図２（Ａ）は、製造工程においてプリンター１の組み立てが完了し、ハードウェア検査を実施前のメインＲＯＭ１１１のマップ配置を示す図である。ハードウェア検査は、プリンター１の備える各ハードウェアが正常に動作するか否かを検査する動作確認テストであり、メイン制御部１２０が、メインＲＯＭ１１１に記憶された検査用ファームウェアを実行して行う。
【００２５】
メインＲＯＭ１１１には、ハードウェア検査の実施前においては、図２（Ａ）のマップ配置に示すように、ＯＳ領域２０１、検査用ファームウェア領域２０２、出荷用デジタル署名領域２０３、出荷用ファームウェア領域２０４、検査用デジタル署名領域２０５の各領域が形成される。以下では、ＯＳ領域２０１が、メインＲＯＭ１１１の先頭の領域（以下、先頭領域という）に形成され、検査用デジタル署名領域２０５が、メインＲＯＭ１１１の末尾の領域（以下、末尾領域という）に形成されるとして説明する。
【００２６】
ＯＳ領域２０１には、モジュールとしてのＯＳが記憶される。メイン制御部１２０がＯＳを実行することで、プリンター１の備えるメモリー（例えば、ＳＲＡＭ１１２や、ＥＪメモリー１３１、フィスカルメモリー１３３）の管理、通信制御（通信部１１０の制御）等を行う。
検査用ファームウェア領域２０２には、第１モジュールとしての検査用ファームウェアが記憶される。また、検査用ファームウェア領域２０２には、マップ情報が記憶される。マップ情報とは、メインＲＯＭ１１１におけるデータや制御プログラムの記憶位置（アドレス）を示す情報であり、メイン制御部１２０が出荷用ファームウェアを実行可能な状態とするための情報である。具体的には、第２サブ制御部１４０が、メインＲＯＭ１１１の記憶するデータ及び制御プログラムを、図２（Ａ）に示すマップ配置から図２（Ｂ）に示すマップ配置に書き換えるための情報である。図２（Ｂ）は、ハードウェア検査が完了し、製品として出荷される前のプリンター１のメインＲＯＭ１１１のマップ配置を示す図である。なお、出荷用ファームウェアの詳細については後述する。
【００２７】
ＯＳ領域２０１のＯＳと、検査用ファームウェア領域２０２の検査用ファームウェアとは、第１制御プログラムを構成する。メイン制御部１２０は、第１制御プログラムとしてのＯＳ及び検査用ファームウェアを実行することで、ホストコンピューター１０と通信しながらプリンター１のハードウェア検査を実行する。メイン制御部１２０は、ハードウェア検査の実行を指示する制御コマンドが通信部１１０から入力されると、ハードウェア検査を開始する。
検査対象となるハードウェア及び検査の内容は、例えば、ＳＲＡＭ１１２や、ＥＪメモリー１３１、フィスカルメモリー１３３等のメモリーへのデータの書き込み、及びメモリーからのデータの読み出し、プリンター１の備えるＬＥＤやブザーの動作確認（ＬＥＤの点灯テスト、ブザーの放音テスト）、プリンター１の本体に設けられたカバーの開閉を検出するセンサーの動作テスト等が含まれる。メイン制御部１２０は、ハードウェア検査を開始すると、検査対象のハードウェアに出力するダミー信号を生成して検査対象のハードウェアに出力し、ハードウェアが正常に動作するか否かテストする。メイン制御部１２０は、ハードウェア検査の検査結果を、例えば、ＳＲＡＭ１１２等のメモリーに書き込む。また、メイン制御部１２０は、検査結果を、通信部１１０を介してホストコンピューター１０に通知する。
【００２８】
出荷用デジタル署名領域２０３には、モジュールとしての出荷用ファームウェアのデジタル署名が記憶される。出荷用ファームウェアのデジタル署名は、一般的に知られたハッシュ関数により、出荷用ファームウェアのハッシュ値を算出し、算出したハッシュ値を所定の秘密鍵で暗号化したデータである。所定の秘密鍵には、例えば、プリンター１の製造者の秘密鍵を用いる。出荷用ファームウェアのデジタル署名は、出荷用ファームウェアの改ざん判定に用いられる。
【００２９】
出荷用ファームウェア領域２０４には、第２モジュールとしての出荷用ファームウェアが記憶される。出荷用ファームウェアとは、レシート印刷や、フィスカルデータの記憶保持等のプリンター１が備える機能の制御を行うファームウェアである。ＯＳ領域２０１のＯＳと、出荷用ファームウェア領域２０４の出荷用ファームウェアとは、第２制御プログラムを構成する。メイン制御部１２０は、第２制御プログラムとしてのＯＳ及び出荷用ファームウェア実行して、ホストコンピューター１０から受信した販売取引に関する情報を含むレシートデータをロール紙に印刷出力する。また、メイン制御部１２０は、第１サブ制御部１３２やＣＰＬＤ１３４を制御して、前述のレシートデータや、日計売上データをフィスカルデータとしてＥＪメモリー１３１や、フィスカルメモリー１３３に記憶させる。
【００３０】
検査用デジタル署名領域２０５には、モジュールとしての検査用ファームウェアのデジタル署名が記憶される。検査用ファームウェアのデジタル署名は、一般的に知られたハッシュ関数により、検査用ファームウェアのハッシュ値を算出し、算出したハッシュ値を所定の秘密鍵で暗号化したデータである。所定の秘密鍵には、例えば、プリンター１の製造者の秘密鍵を用いる。検査用ファームウェアのデジタル署名は、検査用ファームウェアの改ざん判定に用いられる。
【００３１】
ここで、従来のプリンター１において、メインＲＯＭ１１１に、検査用ファームウェアを構成し、出荷用ファームウェアを構成する方法を説明する。
従来のプリンター１では、まず、ホストコンピューター１０からプリンター１に検査用ファームウェアを送信し、プリンター１は第２サブ制御部１４０の制御により検査用ファームウェアをメインＲＯＭ１１１に書き込む。検査用ファームウェアがメインＲＯＭ１１１に書き込まれるとプリンター１を再起動させる。プリンター１の再起動後に、メイン制御部１２０が検査用ファームウェアを実行して、プリンター１のハードウェア検査を行う。
【００３２】
ハードウェア検査が終了すると、ホストコンピューター１０からプリンター１に出荷用ファームウェアを送信し、第２サブ制御部１４０の制御によって出荷用ファームウェアをメインＲＯＭ１１１に書き込む。出荷用ファームウェアがメインＲＯＭ１１１に書き込まれることで、プリンター１は、レシート印刷、フィスカルデータの記憶保持等の動作を実行可能な状態となる。
【００３３】
しかしながら、ファームウェアやデータのサイズが大きくなると、ホストコンピューター１０とプリンター１との通信に時間がかかり、結果として、メインＲＯＭ１１１のファームウェアが出荷用ファームウェアに書き換えられるまでに時間がかかる。
【００３４】
これに対し本実施形態は、ハードウェア検査前の実施前のメインＲＯＭ１１１に、複数のモジュールを含む第１制御プログラムを記憶させる。複数のモジュールには、第１制御プログラムを構成するＯＳや検査用ファームウェアの他に、第２制御プログラムを構成する出荷用ファームウェア、検査用ファームウェアのデジタル署名、出荷用ファームウェアのデジタル署名を含む。
【００３５】
メイン制御部１２０は、メインＲＯＭ１１１の先頭領域から制御プログラムの読み込みを開始するようにプログラムされる。すなわち、メイン制御部１２０は、メインＲＯＭ１１１の先頭領域であるＯＳ領域２０１からＯＳを読み込みＳＲＡＭ１１２に展開し、さらにＯＳ領域２０１に続く領域である検査用ファームウェア領域２０２から検査用ファームウェアを読み込んでＳＲＡＭ１１２に展開し処理を実行する。
ハードウェア検査前のメインＲＯＭ１１１は、複数のモジュールとして出荷用ファームウェアを記憶するが、メイン制御部１２０が、メインＲＯＭ１１１の予め設定された位置（アドレス）から制御プログラムを読み込むため、メイン制御部１２０が出荷用ファームウェアを読み込んで実行することはない。
【００３６】
第２サブ制御部１４０は、ハードウェア検査の完了後に、メインＲＯＭ１１１を、図２（Ｂ）に示すマップ配置に書き換えるプログラム構成処理を実行する。ハードウェア検査の完了後は、メインＲＯＭ１１１には、ＯＳ領域２０１、出荷用ファームウェア領域２０４、出荷用デジタル署名領域２０３の各領域が形成される。ＯＳ領域２０１のＯＳと、出荷用ファームウェア領域２０４の出荷用ファームウェアと、出荷用デジタル署名領域２０３の出荷用ファームウェアのデジタル署名とにより第２制御プログラムを構成する必須のモジュールが構成される。
【００３７】
メインＲＯＭ１１１の先頭領域には、ハードウェア検査前のメインＲＯＭ１１１と同様にＯＳを記憶したＯＳ領域２０１が形成される。また、ＯＳ領域２０１に続く領域として、出荷用ファームウェアを記憶した出荷用ファームウェア領域２０４が形成される。また、メインＲＯＭ１１１の末尾領域には、出荷用ファームウェアのデジタル署名を記憶した出荷用デジタル署名領域２０３を形成が形成される。出荷用デジタル署名領域２０３は、検査用デジタル署名領域２０５の検査用ファームウェアのデジタル署名を削除してできたメインＲＯＭ１１１の領域に、出荷用ファームウェアのデジタル署名を記憶させることで形成される。
ＯＳ、出荷用ファームウェア及び出荷用ファームウェアのデジタル署名は、第２制御プログラムを構成する必須のモジュールに対応するモジュールとして選択され、第２制御プログラムとしてメインＲＯＭ１１１に構成される。
【００３８】
また、検査用ファームウェア領域２０２及び検査用デジタル署名領域２０５は、第２サブ制御部１４０によりメインＲＯＭ１１１から削除される。検査用ファームウェアは、第１制御プログラムを構成するモジュールであるが、第２制御プログラムでは使用しないモジュールとしてメインＲＯＭ１１１から削除される。
【００３９】
図３及び図４は、プリンター１の動作を示すフローチャートである。
以下の説明では、メインＲＯＭ１１１に、図２（Ａ）に示すＯＳ領域２０１、検査用ファームウェア領域２０２、出荷用デジタル署名領域２０３、出荷用ファームウェア領域２０４、検査用デジタル署名領域２０５の各領域が形成された状態であるとして説明する。
【００４０】
プリンター１に電源が投入されると、メイン制御部１２０が起動するよりも前に、第２サブ制御部１４０が起動する（ステップＳ１）。第２サブ制御部１４０は、起動すると、メインＲＯＭ１１１の検査用デジタル署名領域２０５から検査用ファームウェアのデジタル署名を読み出し、読み出した検査用ファームウェアのデジタル署名を所定の公開鍵により復号する（ステップＳ２）。第２サブ制御部１４０は、メインＲＯＭ１１１の末尾領域である検査用デジタル署名領域２０５からデジタル署名を取り出すようにプログラムされる。このため、出荷用デジタル署名領域２０３から出荷用ファームウェアのデジタル署名が読み出されたり、他の領域からデータが読み出されたりすることはない。
また、第２サブ制御部１４０は、メインＲＯＭ１１１の検査用ファームウェア領域２０２から検査用ファームウェアを読み出し、一般的に知られたハッシュ関数によりハッシュ値を算出する（ステップＳ３）。第２サブ制御部１４０は、ＯＳ領域２０１に続く領域からファームウェアを読み出し、読み出したファームウェアのハッシュ値を算出するようにプログラムされる。このため、出荷用ファームウェア領域２０４から出荷用ファームウェアが読み出されたり、他の領域からデータが読み出されたりすることはない。
【００４１】
第２サブ制御部１４０は、検査用ファームウェアのデジタル署名を復号して得たハッシュ値と、算出した検査用ファームウェアのハッシュ値とが一致するか否を判定して（ステップＳ４）、検査用ファームウェアが改ざん等されているか否かを判定する。
第２サブ制御部１４０は、ハッシュ値が一致し（ステップＳ４／ＹＥＳ）、検査用ファームウェアが改ざんされていないと判定すると、メイン制御部１２０による検査用ファームウェアの実行を許可する許可情報を生成する（ステップＳ５）。第２サブ制御部１４０は、生成した許可情報を、例えば、ＳＲＡＭ１１２に記憶させる。
また、第２サブ制御部１４０は、ハッシュ値が一致せず（ステップＳ４／ＮＯ）、検査用ファームウェアが改ざんされていると判定すると、メイン制御部１２０による検査用ファームウェアの実行を禁止にする禁止情報を生成する（ステップＳ６）。第２サブ制御部１４０は、生成した禁止情報を、例えば、ＳＲＡＭ１１２に記憶させる。
【００４２】
メイン制御部１２０は、第２サブ制御部１４０に遅れて起動し（ステップＴ１）、メインＲＯＭ１１１のＯＳ領域２０１からＯＳを読み込んでＳＲＡＭ１１２に展開し（ステップＴ２）、ＯＳを実行する。ＯＳを実行するメイン制御部１２０は、ＳＲＡＭ１１２を参照して、ＳＲＡＭ１１２が許可情報を記憶しているか、禁止情報を記憶しているかを判定する。
メイン制御部１２０は、ＳＲＡＭ１１２が禁止情報を記憶する場合、検査用ファームウェアの実行が許可されていないと判定し（ステップＴ３／ＮＯ）、検査用ファームウェアを読み込むことなく処理を終了する。メイン制御部１２０は、表示部（図示略）に、検査用ファームウェアが改ざん等された不正なファームウェアである旨を表示させて処理を終了する。この後、工場の作業員は、プリンター１の表示に従って、メインＲＯＭ１１１が記憶する制御プログラムやデータを書き換える。
【００４３】
また、メイン制御部１２０は、ＳＲＡＭ１１２が許可情報を記憶する場合、検査用ファームウェアの実行が許可されていると判定する（ステップＴ３／ＹＥＳ）。メイン制御部１２０は、検査用ファームウェアをメインＲＯＭ１１１から読み込んでＳＲＡＭ１１２に展開する。そして、メイン制御部１２０は、検査用ファームウェアを実行（ステップＴ４）してハードウェア検査を行う。
メイン制御部１２０は、検査対象のハードウェアに出力するダミー信号を生成して検査対象のハードウェアに出力し、ハードウェアが正常に動作するか否かテストする。メイン制御部１２０は、ハードウェア検査の検査結果を、例えば、ＳＲＡＭ１１２等のメモリーに書き込む。
【００４４】
メイン制御部１２０は、ハードウェア検査が完了すると、検査結果を、通信部１１０を介してホストコンピューター１０に転送する（ステップＴ５）。ホストコンピューター１０は、ホストコンピューター１０の備える表示画面（図示略）に検査結果を表示させる。作業員は、ハードウェア検査において正常に動作しないハードウェアが検出された場合、表示装置の表示を参照して、正常に動作しないハードウェアの部品交換等の作業を行う。作業員から作業完了の操作入力を受け付けると、ホストコンピューター１０は、プリンター１に、第２制御プログラムの構成指示を送信する。
【００４５】
メイン制御部１２０は、ハードウェア検査の検査結果をホストコンピューター１０に転送すると、ホストコンピューター１０の制御、又は作業員による操作に従って動作する。例えば、メイン制御部１２０は、作業員の操作に従ってプリンター１の電源をオフする。作業員は、電源がオフされたプリンター１の部品交換等の作業を行う。部品交換後は、再度、メイン制御部１２０が検査用ファームウェアを実行して、ハードウェア検査を実行してもよい。
【００４６】
ハードウェア検査において、正常に動作しないハードウェアが検出されなかった場合、又は正常に動作しないハードウェアの部品交換等の作業が完了して起動すると、メイン制御部１２０は、ホストコンピューター１０から制御コマンドが入力されたか否かを判定する（ステップＴ６）。制御コマンドの入力がない場合（ステップＴ６／ＮＯ）、メイン制御部１２０は、制御コマンドが入力されるまで待機する。また、メイン制御部１２０は、制御コマンドが入力されると（ステップＴ６／ＹＥＳ）、入力された制御コマンドは、第２制御プログラムの構成を指示する制御コマンドであるか否かを判定する（ステップＴ７）。第２制御プログラムの構成を指示する制御コマンドではない場合（ステップＴ７／ＮＯ）、メイン制御部１２０は、制御コマンドに対応した処理を実行し（ステップＴ８）、再びホストコンピューター１０から制御コマンドが入力されるまで待機する（ステップＴ６）。
また、メイン制御部１２０は、第２制御プログラムの構成を指示する制御コマンドが入力されると（ステップＴ７／ＹＥＳ）、第２サブ制御部１４０に、第２制御プログラムの構成を指示して（ステップＴ９）、処理の実行を停止する。すなわち、メイン制御部１２０は、プリンター１を、第２サブ制御部１４０の制御により動作する状態とする。メイン制御部１２０は、検査用ファームウェア及びＯＳの実行を停止した状態となる（ステップＴ１０）。
【００４７】
第２サブ制御部１４０は、メイン制御部１２０により第２制御プログラムの構成が指示されると（ステップＳ７）、プログラム構成処理を開始する。
第２サブ制御部１４０は、まず、メインＲＯＭ１１１の検査用ファームウェア領域２０２からマップ情報を取得する。次に、第２サブ制御部１４０は、メインＲＯＭ１１１が記憶するすべての制御プログラム及びデータをメインＲＯＭ１１１から読み出して、第２サブ制御部１４０のＲＡＭ（図示略）又はＳＲＡＭ１１２に記憶させる（ステップＳ８）。ここでは、第２サブ制御部１４０のＲＡＭにファームウェア及びデータを記憶させるとして説明する。
【００４８】
次に、第２サブ制御部１４０は、ＲＡＭの記憶する検査用ファームウェアと、検査用ファームウェアのデジタル署名とを削除する（ステップＳ９）。そして、第２サブ制御部１４０は、マップ情報を参照して、ＯＳと、出荷用ファームウェアと、出荷用ファームウェアのデジタル署名とをメインＲＯＭ１１１の事前に設定された位置（アドレス）に書き込む（ステップＳ１０）。
第２サブ制御部１４０は、図２（Ｂ）に示すようにメインＲＯＭ１１１の先頭領域に、ＯＳを記憶させてＯＳ領域２０１を形成し、ＯＳ領域２０１に続く記憶領域に、出荷用ファームウェアを記憶した出荷用ファームウェア領域２０４を形成する。また、第２サブ制御部１４０は、図２（Ｂ）に示すようにメインＲＯＭ１１１の末尾領域に出荷用ファームウェアのデジタル署名を記憶させて、出荷用デジタル署名領域２０３を形成する。
【００４９】
第２サブ制御部１４０は、メインＲＯＭ１１１への制御プログラム及びデータの書き込みが完了すると、プリンター１を再起動させる（ステップＳ１１）。プリンター１が再起動すると、第２サブ制御部１４０は、メイン制御部１２０よりも先に起動し、メインＲＯＭ１１１の出荷用デジタル署名領域２０３から出荷用ファームウェアのデジタル署名を読み出し、読み出した出荷用ファームウェアのデジタル署名を所定の公開鍵により復号する（ステップＳ１２）。第２サブ制御部１４０は、メインＲＯＭ１１１の末尾領域である出荷用デジタル署名領域２０３からデジタル署名を取り出すようにプログラムされる。第２サブ制御部１４０は、出荷用ファームウェアのデジタル署名を読み出すと、読み出したデジタル署名を、ＲＯＭに記憶させた公開鍵で復号する。また、第２サブ制御部１４０は、メインＲＯＭ１１１の出荷用ファームウェア領域２０４から出荷用ファームウェアを読み出し、一般的に知られたハッシュ関数によりハッシュ値を算出する（ステップＳ１３）。第２サブ制御部１４０は、メインＲＯＭ１１１の先頭領域に形成されたＯＳ領域２０１に続く領域からファームウェアを読み出し、ハッシュ関数によりハッシュ値を算出するようにプログラムされる。
【００５０】
第２サブ制御部１４０は、出荷用ファームウェアのデジタル署名を復号して得たハッシュ値と、算出した出荷用ファームウェアのハッシュ値とが一致するか否を判定して、出荷用ファームウェアが改ざん等されているか否かを判定する（ステップＳ１４）。
第２サブ制御部１４０は、ハッシュ値が一致し（ステップＳ１４／ＹＥＳ）、出荷用ファームウェアが改ざんされていないと判定すると、メイン制御部１２０による検査用ファームウェアの実行を許可する許可情報を生成する（ステップＳ１５）。第２サブ制御部１４０は、生成した許可情報を、例えば、ＳＲＡＭ１１２に記憶させる。
また、第２サブ制御部１４０は、ハッシュ値が一致せず（ステップＳ１４／ＮＯ）、検査用ファームウェアが改ざんされていると判定すると、メイン制御部１２０による検査用ファームウェアの実行を禁止にする禁止情報を生成する（ステップＳ１６）。第２サブ制御部１４０は、生成した禁止情報を、例えば、ＳＲＡＭ１１２に記憶させる。
【００５１】
メイン制御部１２０は、第２サブ制御部１４０に遅れて再起動し（ステップＴ１１）、メインＲＯＭ１１１のＯＳ領域２０１からＯＳを読み込んでＳＲＡＭ１１２に展開し（ステップＴ１２）、ＯＳを実行する。ＯＳを実行するメイン制御部１２０は、ＳＲＡＭ１１２を参照して、ＳＲＡＭ１１２が許可情報を記憶しているか、禁止情報を記憶しているかを判定する（ステップＴ１３）。
メイン制御部１２０は、ＳＲＡＭ１１２が禁止情報を記憶する場合、検査用ファームウェアの実行が許可されていないと判定し（ステップＴ１３／ＮＯ）、検査用ファームウェアを読み込むことなく処理を終了する。メイン制御部１２０は、表示部（図示略）に、出荷用ファームウェアが改ざん等された不正なファームウェアである旨を表示させて処理を終了する。この後、工場の作業員は、プリンター１の表示に従って、メインＲＯＭ１１１が記憶する制御プログラムやデータを書き換える。
また、メイン制御部１２０は、ＳＲＡＭ１１２が許可情報を記憶する場合、検査用ファームウェアの実行を許可されていると判定する（ステップＴ１３／ＹＥＳ）。メイン制御部１２０は、出荷用ファームウェアをメインＲＯＭ１１１から読み込んでＳＲＡＭ１１２に展開し（ステップＴ１４）、出荷用ファームウェアを実行可能な状態となる。
【００５２】
図３及び４に示すフローチャートの説明では、第２サブ制御部１４０が、メインＲＯＭ１１１に出荷用ファームウェアを構成したが、メイン制御部１２０の制御によりメインＲＯＭ１１１に出荷用ファームウェアを構成するようにしてもよい。
例えば、メインＲＯＭ１１１のＯＳ領域２０１に書き込まれるＯＳを、上述した第２サブ制御部１４０が実行した制御プログラムを含むプログラムとして構成する。メイン制御部１２０は、検査用ファームウェアを実行して、ハードウェア検査が終了すると、ホストコンピューター１０からの制御コマンドにより再起動し、再起動後にＯＳを実行して図３及び図４のフローチャートに従って、メインＲＯＭ１１１に第２制御プログラムを構成する。
【００５３】
以上詳細に説明したように本実施形態のプリンター１は、第２サブ制御部１４０が、第１制御プログラムに含まれる少なくとも一部のモジュール（検査用ファームウェア、検査用ファームウェアのデジタル署名、出荷用ファームウェア及び出荷用ファームウェアのデジタル署名）のメインＲＯＭ１１１における移動、又は一部のモジュールの削除を行って第２制御プログラムを構成するプログラム構成処理を行い、メイン制御部１２０のプロセッサー１２１が第２制御プログラムを実行可能な状態とする。
このため、メイン制御部１２０のプロセッサー１２１が実行可能な制御プログラムを第１制御プログラムから第２制御プログラムに書き換えるまでにかかる時間を短縮することができる。
【００５４】
また、第２サブ制御部１４０は、プログラム構成処理において、第１制御プログラムを構成するモジュールであって、第２制御プログラムを構成する必須のモジュールに対応するモジュールである出荷用ファームウェア及び出荷用ファームウェアのデジタル署名を、第２制御プログラムを構成するモジュールとして選択する。また、第２サブ制御部１４０は、第１制御プログラムを構成するモジュールであって、第２制御プログラムを構成する必須のモジュールに対応しないモジュールである検査用ファームウェア及び検査用ファームウェアのデジタル署名をメイン制御部１２０から削除する。
従って、第２制御プログラムの構成にかかる時間を短縮することができる。
【００５５】
また、メインＲＯＭ１１１は、第１制御プログラムを構成する検査用ファームウェアに対応したデジタル署名と、第２制御プログラムを構成する出荷用ファームウェアに対応したデジタル署名とを第１制御プログラムに含まれる複数のモジュールとして記憶する。また、第２サブ制御部１４０は、プログラム構成処理において、検査用ファームウェアに対応したデジタル署名をメインＲＯＭ１１１から削除して、削除した検査用ファームウェアに対応したデジタル署名の位置に、出荷用ファームウェアに対応したデジタル署名を記憶させる。従って、実行するファームウェアが変更されても、実行するファームウェアに対応したデジタル署名を、メインＲＯＭ１１１の同一の位置から取得して、実行するファームウェアが正当なプログラムであるか否かを検証することができる。
【００５６】
また、メインＲＯＭ１１１は、第２制御プログラムを構成する各モジュールのメインＲＯＭ１１１における記憶位置を示すマップ情報を記憶し、第２サブ制御部１４０は、プログラム構成処理において、マップ情報に従って第２制御プログラムを構成する。従って、第２制御プログラムの構成に要する時間を短縮することができる。
【００５７】
また、プログラム構成処理は、第２サブ制御部１４０が実行してもよいし、メイン制御部１２０が実行してもよい。
第２サブ制御部１４０によりプログラム構成処理を実行する場合には、書き換え用のプロセッサー１４１によって制御プログラムの書き換えを行うことができるので、制御プログラムの書き換えを効率的に行うことができる。また、メイン制御部１２０によりプログラム構成処理を実行する場合には、制御プログラムの書き換えのためにプロセッサーを別途設ける必要がないので、装置の構成が大型化するのを防止することができる。
【００５８】
また、第２サブ制御部１４０は、制御コマンドの入力を受け付けた場合に、メインＲＯＭ１１１に第２制御プログラムを構成する。従って、プリンター１をコマンドにより制御して、メインＲＯＭ１１１に第２制御プログラムを構成させることができる。
【００５９】
また、メイン制御部１２０は、第１制御プログラムを実行してプリンター１の動作を検査する検査処理を実行し、第２制御プログラムを実行して印刷データを印刷する印刷処理を実行する。
従って、第１制御プログラムを実行してプリンター１の動作を検査する検査処理を行った後に、第２制御プログラムをメインＲＯＭ１１１に構成し、プリンター１を印刷処理が可能な状態にすることができる。
【００６０】
上述した実施形態は、本発明の好適な実施の形態である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形実施が可能である。
例えば、上述した実施形態では、メインＲＯＭ１１１に第２制御プログラムを構成する場合、第２サブ制御部１４０は、メインＲＯＭ１１１からすべての制御プログラム及びデータを読み出して第２サブ制御部１４０のＲＯＭに記憶させた。しかし、ＯＳは、メインＲＯＭ１１１に第１制御プログラムが構成される場合であっても、第２制御プログラムが構成される場合であってもメインＲＯＭ１１１の同じ位置に配置されるため、メインＲＯＭ１１１に第２制御プログラムを構成する場合に、ＯＳをメインＲＯＭ１１１から削除する必要はない。
また、メイン制御部１２０は、第１サブ制御部１３２、第２サブ制御部１４０の機能を含むこともできる。さらに、メイン制御部１２０は、プリンター制御部３１０の機能を含んでいてもよい。
また、第２制御プログラムの構成を指示する制御コマンドは、メイン制御部１２０が受信順ではなく他の制御コマンドに優先して実行するリアルタイムコマンドとして構成することもできる。必要な場合、即座に第２制御プログラムを構成することができる。
【符号の説明】
【００６１】
１…プリンター（情報処理装置、印刷装置）、１０…ホストコンピューター、１００…フィスカル制御基板、１１０…通信部、１１１…メインＲＯＭ（記憶部）、１１２…ＳＲＡＭ、１１３…ＲＴＣ、１２０…メイン制御部（制御部、第１制御部）、１２１…プロセッサー、１３１…ＥＪメモリー、１３２…第１サブ制御部、１３３…フィスカルメモリー、１３４…ＣＰＬＤ、１４０…第２サブ制御部（制御部、第２制御部）、１４１…プロセッサー、２０１…ＯＳ領域、２０２…検査用ファームウェア領域、２０３…出荷用デジタル署名領域、２０４…出荷用ファームウェア領域、２０５…検査用デジタル署名領域。
【図１】
2017037508.tif 000003
【図２】
2017037508.tif 000004
【図３】
2017037508.tif 000005
【図４】
2017037508.tif 000006