(57)【特許請求の範囲】
【請求項１】
第１のコアと、第２のコアと、記憶媒体と、を有するプリンターのファームウェア書き換え方法であって、
前記第１のコアが、前記第１のコアが有する第１のブートデータにより、前記第２のコアに対し、前記第１のコアのファームウェアを書き換えるための第１の書き換えファームウェアと、前記第２のコアのファームウェアを書き換えるための第２の書き換えファームウェアと、を保存するための受信領域の確保要求を行うステップと、
前記第２のコアが、前記第２のコアのファームウェアにより、前記確保要求に対し、前記記憶媒体内に前記受信領域を確保し、確保した前記受信領域のアドレスを前記第１のコアに通知するステップと、
前記第１のコアが、前記第１のブートデータにより、外部装置から受信した前記第１の書き換えファームウェアおよび前記第２の書き換えファームウェアを、通知された前記アドレスの前記受信領域に保存するステップと、
前記第１のコアが、前記第１のブートデータにより、前記第１の書き換えファームウェアを用いて、前記第１のコアのファームウェアの書き換え制御を行うステップと、
前記第２のコアが、前記第２のコアが有する第２のブートデータにより、前記第１のコアが送り込んだ前記第２の書き換えファームウェアを用いて、前記第２のコアのファームウェアの書き換え制御を行うステップと、を実行することを特徴とするプリンターのファームウェア書き換え方法。
【請求項２】
前記第１のコアのファームウェアの書き換え制御および前記第２のコアのファームウェアの書き換え制御の前に、
前記第１のコアが、前記外部装置からの所定コマンドの受信をトリガーとして、前記第１のコアのファームウェアから前記第１のブートデータに制御を移行するモード切り替えステップを実行することを特徴とする請求項１に記載のプリンターのファームウェア書き換え方法。
【請求項３】
前記第１のコアは、第１の通信規格で前記外部装置と通信可能であると共に、前記第２のコアは、前記第１の通信規格とは異なる第２の通信規格で前記外部装置と通信可能であることを特徴とする請求項２に記載のプリンターのファームウェア書き換え方法。
【請求項４】
前記第１のコアは、前記第１の書き換えファームウェアと、前記第２の書き換えファームウェアと、を前記外部装置から一括受信することを特徴とする請求項３に記載のプリンターのファームウェア書き換え方法。
【請求項５】
前記第１のコアは、前記第１の通信規格により前記第１の書き換えファームウェアおよび前記第２の書き換えファームウェアを前記外部装置から受信可能であると共に、前記第２の通信規格により前記第２のコアを介して前記第１の書き換えファームウェアおよび前記第２の書き換えファームウェアを前記外部装置から受信可能であることを特徴とする請求項４に記載のプリンターのファームウェア書き換え方法。
【請求項６】
第１のコアと、第２のコアと、記憶媒体と、を有するプリンターであって、
前記第１のコアが、前記第１のコアが有する第１のブートデータにより、前記第２のコアに対し、前記第１のコアのファームウェアを書き換えるための第１の書き換えファームウェアと、前記第２のコアのファームウェアを書き換えるための第２の書き換えファームウェアと、を保存するための受信領域の確保要求を行う確保要求部と、
前記第２のコアが、前記第２のコアのファームウェアにより、前記確保要求に対し、前記記憶媒体内に前記受信領域を確保し、確保した前記受信領域のアドレスを前記第１のコアに通知する通知部と、
前記第１のコアが、前記第１のブートデータにより、外部装置から受信した前記第１の書き換えファームウェアおよび前記第２の書き換えファームウェアを、通知された前記アドレスの前記受信領域に保存する保存部と、
前記第１のコアが、前記第１のブートデータにより、前記第１の書き換えファームウェアを用いて、前記第１のコアのファームウェアの書き換え制御を行う第１書き換え制御部と、
前記第２のコアが、前記第２のコアが有する第２のブートデータにより、前記第１のコアが送り込んだ前記第２の書き換えファームウェアを用いて、前記第２のコアのファームウェアの書き換え制御を行う第２書き換え制御部と、
を備えることを特徴とするプリンター。
【請求項７】
前記第１のコアが、前記外部装置からの所定コマンドの受信をトリガーとして、前記第１のコアのファームウェアから前記第１のブートデータに制御を移行するモード切り替え部を備えることを特徴とする請求項６に記載のプリンター。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを有するプリンターのファームウェアを書き換えるファームウェア書き換え方法およびプリンターに関する。
【背景技術】
【０００２】
従来、プリンターのファームウェアの書き換えに関する技術として、例えば特許文献１が知られている。特許文献１には、新しいファームウェアをハードディスクに全てコピーした後、既存のファームウェアが格納されているフラッシュメモリーへの書き換えを実行し、その後、再起動処理を行う技術が開示されている。
【０００３】
一方、プリンターの機能を拡張する方法として、コアプロセッサー（以下、「コア」と称する）を追加する方法が知られている。コアの追加により、通信機能やバックグランド処理などの機能拡張が可能となる。このように新たなコアを追加した場合、ファームウェアのバージョンアップは、コアごとに実行する必要がある。
【０００４】
図７は、２つのコアを有するプリンターの従来のファームウェア書き換え処理を示すフローチャートである。ここでは、２つのコアのうち第１のコアで、第１のコアおよび第２のコアのファームウェアを書き換えるための書き換えファームウェアを受信し、第１のコアの内部メモリーであるＲＡＭに書き換えファームウェアを保存する場合を説明する。
【０００５】
同図に示すように、第１のコアで書き換えファームウェアを受信すると（Ｓ１０１）、これをＲＡＭに保存する（Ｓ１０２）。続いて、第１のコアのブートデータ（ブートプログラム）をＲＡＭに退避し（Ｓ１０３）、当該ブートデータにより第１のコアのファームウェアを書き換え（Ｓ１０４）、チェックサム等で書き換えを確認する（Ｓ１０５）。書き換えを確認すると、プリンターをリセットし（Ｓ１０６）、第１のコアから第２のコアへ書き換え終了を通知する（Ｓ１０７）。続いて、第２のコアは、第１のコア内のＲＡＭから第２のコア用の書き換えファームウェアを取得し（Ｓ１０８）、第２のコアのブートデータを第２のコア内のＲＡＭに退避する（Ｓ１０９）。第２のコアは、ブートデータにより第２のコアのファームウェアを書き換えると（Ｓ１１０）、チェックサム等で書き換えを確認する（Ｓ１１１）。さらに、書き換えを確認すると、第２のコアから第１のコアへ書き換え終了を通知し（Ｓ１１２）、再度プリンターをリセットする（Ｓ１１３）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３１０７８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
図７に示したとおり、コアごとにファームウェアのバージョンアップを実行すると、コアごとにリセット処理（Ｓ１０６，Ｓ１１３）を繰り返さなければならず、時間がかかってしまう。このように書き換え処理に時間がかかると、書き換え途中で誤ってプリンターの電源が切られたり、通信ケーブルが外されてしまうなどのトラブルが発生する可能性が高くなるため、できるだけ短時間で書き換え処理を行うことが望ましい。
【０００８】
本発明は、上記の問題点に鑑み、複数のコアを有するプリンターにおいて、短時間でファームウェアの書き換えを行うことが可能なファームウェア書き換え方法およびプリンターを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のファームウェア書き換え方法は、複数のコアを有するプリンターのファームウェア書き換え方法であって、複数のコアのうち第１のコアのブートデータにより、第１のコアのファームウェアの書き換え制御を行う第１書き換え制御ステップと、第１のコアのブートデータにより、複数のコアのうち第１のコア以外のコアである第２のコアのファームウェアの書き換え制御を行う第２書き換え制御ステップと、第１のコアのブートデータにより、第１書き換え制御ステップおよび第２書き換え制御ステップの後、プリンターのリセットを行うリセットステップと、を実行することを特徴とする。
【００１０】
本発明のプリンターは、複数のコアを有するプリンターであって、複数のコアのうち第１のコアのブートデータにより、第１のコアのファームウェアの書き換え制御を行う第１書き換え制御部と、第１のコアのブートデータにより、複数のコアのうち第１のコア以外のコアである第２のコアのファームウェアの書き換え制御を行う第２書き換え制御部と、第１のコアのブートデータにより、第１のコアのファームウェアおよび第２のコアのファームウェアの書き換え終了後、プリンターのリセットを行うリセット部と、を備えることを特徴とする。
【００１１】
本発明の構成によれば、第１のコアのブートデータにより、第１のコアのファームウェアの書き換え、第２のコアのファームウェアの書き換え、リセット処理の一連の制御を行うため、コアごとにファームウェアの書き換えを行う場合と比較して、書き換えに要する時間を短縮することができる。つまり、コアごとに書き換え処理を行った場合と比較して、第１のコアの書き換え終了後のリセット処理（図７のＳ１０６）、他のコアへの書き換え終了通知（図７のＳ１０７，Ｓ１１２）の工程を省略できる。
なお、第１書き換え制御部および第２書き換え制御部に加え、第３書き換え制御部、第４書き換え制御部、…を追加しても良い。この場合、リセット部は、全てのコアのファームウェア書き換え終了後に、リセットを行う。
【００１２】
上記のファームウェア書き換え方法において、第１書き換え制御ステップおよび第２書き換え制御ステップの前に、外部装置からの所定コマンドの受信をトリガーとして、第１のコアのファームウェアからブートデータに制御を移行するモード切り替えステップを実行することを特徴とする。
【００１３】
上記のプリンターにおいて、外部装置からの所定コマンドの受信をトリガーとして、第１のコアのファームウェアからブートデータに制御を移行するモード切り替え部を備えることを特徴とする。
【００１４】
本発明の構成によれば、外部装置からコマンドを送信することにより、プリンターに書き換え処理を実行させることができる。
【００１５】
上記のファームウェア書き換え方法において、第１のコアは、第１の通信規格で通信可能であると共に、第２のコアは、第１の通信規格とは異なる第２の通信規格で通信可能であることを特徴とする。
【００１６】
本発明の構成によれば、第１の通信規格のみに対応していたプリンターを、第２の通信規格でも通信できるように機能拡張した場合の、ファームウェアの書き換えを短時間で行うことができる。
【００１７】
上記のファームウェア書き換え方法において、第１のコアは、当該第１のコアのファームウェアを書き換えるための第１の書き換えファームウェアと、第２のコアのファームウェアを書き換えるための第２の書き換えファームウェアと、を一括受信することを特徴とする。
【００１８】
本発明の構成によれば、第１の書き換えファームウェアと第２の書き換えファームウェアを一括受信できるため、書き換えファームウェアを送信する外部装置との送受信回数を抑えることができる。
【００１９】
上記のファームウェア書き換え方法において、第１のコアは、第１の通信規格により第１の書き換えファームウェアおよび第２の書き換えファームウェアを受信可能であると共に、第２の通信規格により第２のコアを介して第１の書き換えファームウェアおよび第２の書き換えファームウェアを受信可能であることを特徴とする。
【００２０】
本発明の構成によれば、書き換えファームウェアを、２種類の通信規格で受信することができる。
なお、モード切り替えのトリガーとなる所定コマンドについても、両通信規格で受信できることが好ましい。
【００２１】
上記のファームウェア書き換え方法において、受信した第１の書き換えファームウェアおよび第２の書き換えファームウェアを、第１のコアのブートデータにより、第１のコアおよび第２のコア外の拡張メモリーに保存する保存ステップを実行し、第１書き換え制御ステップは、拡張メモリーから読み出した第１の書き換えファームウェアを用いて第１のコアのファームウェアの書き換え制御を行い、第２書き換え制御ステップは、拡張メモリーから読み出した第２の書き換えファームウェアを第２のコアに送り込むことにより第２のコアのファームウェアの書き換え制御を行うことを特徴とする。
【００２２】
本発明の構成によれば、受信した書き換えファームウェアを、第１のコアおよび第２のコア外の拡張メモリーに保存するため、第１のコアの内部メモリーの容量を問わない。また、書き換えファームウェアを拡張メモリーに一旦保存した後、書き換え処理を行うため、書き換え処理中に、外部装置との通信が途切れてしまった場合でも、書き換え処理を続行することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態に係る印刷システムの構成を示すブロック図である。
【図２】制御部の構成を示すブロック図である。
【図３】（ａ）は、第１のコアのハードウェア構成を示すブロック図であり、（ｂ）は、第２のコアのハードウェア構成を示すブロック図である。
【図４】（ａ）は、通常モード時における、第１フラッシュＲＯＭのセクター構成を示す図であり、（ｂ）は、書き換えモード時における、第１フラッシュＲＯＭのセクター構成を示す図である。
【図５】第１のコアの機能構成を示すブロック図である。
【図６】ファームウェア書き換え処理の流れを示すフローチャートである。
【図７】従来例に係るファームウェア書き換え処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明のファームウェア書き換え方法およびプリンターについて、添付図面を参照しながら詳細に説明する。図１は、本発明の一実施形態に係る印刷システムＳＹの構成を示すブロック図である。印刷システムＳＹは、ホスト装置１００（外部装置）およびプリンター１から成る。ホスト装置１００は、プリンター１に対しファームウェアの書き換えを行うための書き換えファームウェアを送信する。なお、ホスト装置１００は、プリンター１に対し印刷データの供給を行うものであっても良い。ホスト装置１００とプリンター１は、有線通信または無線通信を介して接続される。
【００２５】
一方、プリンター１は、第１の通信部１１、第２の通信部１２、制御部１３および印刷部１４を備える。第１の通信部１１および第２の通信部１２は、それぞれ第１の通信規格および第２の通信規格に対応したインターフェイスである。通信規格としては、例えばＵＳＢ、Ethernet、Bluetoothなどが挙げられる。本実施形態では、第１の通信規格をＵＳＢ、第２の通信規格をEthernetとする。また、ホスト装置１００は、第１の通信部１１と接続されるものとする。
【００２６】
制御部１３は、プリンター１全体を制御する。制御部１３の詳細については、後述する。印刷部１４は、ロール紙などの印刷媒体に印刷を行う印刷ヘッド、印刷媒体を搬送する搬送機構、印刷媒体を切断する切断機構等を含む。
【００２７】
図２は、制御部１３の構成を示すブロック図である。制御部１３は、第１のコア２１、第２のコア２２およびＤＤＲ（Double-Data-Rate  SDRAM）２３を備える。また、これらはバス２４を介して接続される。
【００２８】
第１のコア２１は、プリンター１のメイン処理（通常印刷処理）および書き換え処理を行うコアプロセッサーであり、第１の通信規格（ＵＳＢ）を用いてホスト装置１００と通信を行う。一方、第２のコア２２は、ネットワーク処理を行うコアプロセッサーであり、第２の通信規格（Ethernet）を用いて不図示の外部装置と通信を行う。また、ＤＤＲ２３は、書き換え可能な揮発性の記憶媒体であり、拡張メモリーとして機能する。本実施形態では、第１のコア２１を備えたプリンター１に、第２のコア２２およびＤＤＲ２３を追加することにより、ネットワーク機能の拡張を行った場合を想定する。この拡張後のプリンター１は、ファームウェアの書き換えを行う際、第１のコア２１が、第１のコア２１および第２のコア２２の両ファームウェアの書き換え制御を行うことを特徴とする。詳細については、後述する。
【００２９】
次に、各コア２１，２２の構成について説明する。図３（ａ）は、第１のコア２１のハードウェア構成を示すブロック図であり、同図（ｂ）は、第２のコア２２のハードウェア構成を示すブロック図である。両図に示すように、各コア２１，２２は、ＣＰＵ（Central  Processing  Unit）３１、ＲＡＭ（Random  Access  Memory）３２およびフラッシュＲＯＭ（Read  Only  Memory）３３を備える。
【００３０】
ＲＡＭ３２は、各種データが一時的に格納される書き換え可能な揮発性の記憶媒体である。フラッシュＲＯＭ３３に記憶された各種データは、ＲＡＭ３２に退避され（コピーが作成され）、ＣＰＵ３１により実行される。
【００３１】
一方、フラッシュＲＯＭ３３は、書き換え可能な不揮発性の記憶媒体である。フラッシュＲＯＭ３３は、複数のセクターに分割されており、セクターごとにデータの書き換えが行われる。セクターの構成については、後述する。
【００３２】
なお、以下の説明では、各コア２１，２２のハードウェア構成を区別するため、第１のコア２１が、第１ＣＰＵ３１ａ、第１ＲＡＭ３２ａ、第１フラッシュＲＯＭ３３ａを備え、第２のコア２２が、第２ＣＰＵ３１ｂ、第２ＲＡＭ３２ｂ、第２フラッシュＲＯＭ３３ｂを備えるものとする。
【００３３】
次に、図４を参照し、第１フラッシュＲＯＭ３３ａのセクター構成について説明する。同図（ａ）は、通常モード時におけるセクター構成例を示す図であり、同図（ｂ）は、書き換えモード時におけるセクター構成例を示す図である。
【００３４】
同図（ａ）に示すように、通常モード時における第１フラッシュＲＯＭ３３ａは、ブートセレクター５１、本ブートセクター５２およびメインセクター５３を備える。また、書き換えモード時における第１フラッシュＲＯＭ３３ａは、ブートセレクター５１、本ブートセクター５２およびメインセクター５３の他、メインセクター５３の一部分に上書きされることによって一時的にブートセクターとして機能する仮ブートセクター５４を備える。
【００３５】
まず、ブートセレクター５１について説明する。ブートセレクター５１は、プリンター１の初期起動時に実行されるブートセレクターデータが記憶される。ブートセレクターデータは、初期ブートデータおよびブートセレクタープログラムを含む。初期ブートデータは、プリンター１の電源投入直後に初期の起動処理を実行する。また、ブートセレクタープログラムは、初期ブートデータの実行後に、第１ＲＡＭ３２ａにコピーするブートデータ（後述する本ブートセクター５２内のブートデータと、仮ブートセクター５４内のブートデータのいずれか）を選択する。
【００３６】
ブートセレクターデータは、基本的に書き換えが行われないように構成されたデータであり、プリンター１の起動処理に最低限必要な機能（最低限のハードウェアチェックおよび初期化等）を実行する。また、ブートセレクターデータは、ブートセレクタープログラムにより選択したブートセクターのデータを第１ＲＡＭ３２ａにコピーする。
【００３７】
次に、本ブートセクター５２および仮ブートセクター５４について説明する。本ブートセクター５２および仮ブートセクター５４は、各種起動処理の実行およびファームウェアの書き換え制御を行うブートデータが記憶される。ブートデータは、ブートプログラム、メイン移行プログラムおよび書き換え制御プログラムを含む。ブートプログラムは、プリンター１を完全に起動させるための各種起動処理を行う。メイン移行プログラムは、ブートプログラムの実行後に実行され、後述するメインセクター５３のファームウェアによる処理への移行を行う。また、書き換え制御プログラムは、第１フラッシュＲＯＭ３３ａおよび第２フラッシュＲＯＭ３３ｂの書き換え制御を行う。
【００３８】
なお、本ブートセクター５２は、第１フラッシュＲＯＭ３３ａ内に常設されるセクターであるが、仮ブートセクター５４は、書き換えモード時のみ一時的に第１フラッシュＲＯＭ３３ａ内に設けられるセクターである。すなわち、仮ブートセクター５４は、書き換えモードにおいてファームウェアおよびブートデータを書き換える場合、プリンター１と通信可能なホスト装置１００から受信した新しいブートデータを、メインセクター５３の一部分に上書きすることで一時的に設定されるセクターである。このように、本実施形態では、Ｗブート方式を採用することで、ブートデータの書き換え失敗時のリスクを軽減できると共に、複数のブートセクターを第１フラッシュＲＯＭ３３ａ内に常設する必要がないので、通常モードにおいて第１フラッシュＲＯＭ３３ａ内の領域を有効に利用することができる。なお、以下の説明では、書き換え処理において、ブートデータの書き換えは行わず、ファームウェアのみを書き換えるものとする。
【００３９】
また、本ブートセクター５２および仮ブートセクター５４には、ブートデータの正当性を確認するチェックサムが格納されている。チェックサムの正当性は、第１ＣＰＵ３１ａにより判断される。また、ブートセレクター５１のブートセレクタープログラムにより、本ブートセクター５２と仮ブートセクター５４のいずれか正常なブートデータが選択され、正常なブートデータが第１ＲＡＭ３２ａへコピーされる。正常なブートデータが第１ＲＡＭ３２ａへコピーされると、以後のファームウェア書き換え処理は、第１ＲＡＭ３２ａへコピーされた正常なブートデータ内の書き換え制御プログラムを実行することによって行われる。以下、第１ＲＡＭ３２ａ内の正常なブートデータがコピーされた領域を「ブートデータ起動領域」と称する。
【００４０】
次に、メインセクター５３について説明する。メインセクター５３には、プリンター１の通常モード時の制御を行うメインプログラム、ホスト装置１００からの書き換え指示に応じてブートデータ起動領域の書き換え制御プログラムを呼び出す呼び出しプログラム、フォントデータ、各種設定データ等を含むファームウェアが記憶される。当該ファームウェアは、ブートデータ起動領域に記憶されたブートプログラムが実行された後に、読み出されて実行され、プリンター１の通常モード時における各種制御を実行する。
【００４１】
メインセクター５３は、ブートデータ起動領域の書き換え制御プログラムによって書き換えが行われる。また、メインセクター５３は、本ブートセクター５２および仮ブートセクター５４と同様にファームウェアの正当性を確認するチェックサムが格納されている。
【００４２】
以上、第１フラッシュＲＯＭ３３ａのセクター構成について説明したが、第２フラッシュＲＯＭ３３ｂのセクター構成も、略同様である。但し、第２フラッシュＲＯＭ３３ｂについては、Ｗブート方式ではなく単ブート方式でも良い。また、第１フラッシュＲＯＭ３３ａ、第２フラッシュＲＯＭ３３ｂ共に、ブートセクターとしてＯＳ用のブートセクターを設けたり、メインセクターとしてＯＳ用のメインセクターを設けたり、メインセクターとは別に各種設定データを記憶する設定領域セクターを設けたりなど、セクター構成を適宜変更しても良い。
【００４３】
次に、図５を参照し、第１のコア２１の機能構成について説明する。第１のコア２１は、主な機能構成として、モード切り替え部７１、受信部７２、保存部７３、第１書き換え制御部７４、第２書き換え制御部７５およびリセット部７６を備える。これら各部は、第１ＣＰＵ３１ａが、第１フラッシュＲＯＭ３３ａから読み出したデータに基づき、各種演算処理を行うことで実現される。
【００４４】
モード切り替え部７１は、第１のコア２１のメインセクター５３から読み出したメインプログラムに基づき、ホスト装置１００からの所定コマンドの受信をトリガーとして、第１のコア２１の本ブートセクター５２または仮ブートセクター５４から読み出したブートデータに制御を移行する。つまり、通常モードから書き換えモードにモード切り替えを行う。本実施形態では、所定コマンドとして、プリンター１の受信バッファー（図示省略）に格納されている他のコマンドよりも優先的に処理を実行させることが可能なリアルタイムコマンド（即時実行コマンド）を用いる。
【００４５】
受信部７２は、ホスト装置１００から、第１の通信部１１を介して、第１のコア２１のファームウェアを書き換えるための第１の書き換えファームウェアと、第２のコア２２のファームウェアを書き換えるための第２の書き換えファームウェアと、を一括受信する。
【００４６】
保存部７３は、受信部７２が受信した第１の書き換えファームウェアおよび第２の書き換えファームウェアを、第１のコア２１のブートデータに基づき、ＤＤＲ２３（拡張メモリー）に保存する。
【００４７】
第１書き換え制御部７４は、第１のコア２１のブートデータに基づき、ＤＤＲ２３から読み出した第１の書き換えファームウェアを用いて第１のコア２１のファームウェアの書き換え制御（第１フラッシュＲＯＭ３３ａの書き換え制御）を行う。
【００４８】
第２書き換え制御部７５は、第１のコア２１のブートデータに基づき、ＤＤＲ２３から読み出した第２の書き換えファームウェアを用いて第２のコア２２のファームウェアの書き換え制御（第２フラッシュＲＯＭ３３ｂの書き換え制御）を行う。なお、第２書き換え制御部７５の制御下で行われる書き換え処理は、第２のコア２２の第２ＣＰＵ３１ｂが、第２フラッシュＲＯＭ３３ｂから読み出したブートデータに基づいて実行する。
【００４９】
リセット部７６は、第１のコア２１のファームウェアおよび第２のコア２２のファームウェアの書き換え終了後、第１のコア２１のブートデータに基づき、プリンター１のリセット指示（第１のコア２１の初期化指示）を行う。なお、当該リセット指示に基づくリセット処理は、第１ＣＰＵ３１ａが、第１フラッシュＲＯＭ３３ａから読み出したファームウェアに基づいて実行する。
【００５０】
次に、図６のフローチャートを参照し、ファームウェア書き換え処理の一連の流れを説明する。まず、第１のコア２１では、ファームウェア（メインプログラム）が動作している通常モードにおいて、ホスト装置１００からリアルタイムコマンドを受信すると、書き換えモードに移行する（Ｓ０１）。また、ファームウェア（呼び出しプログラム）により本ブートセクター５２または仮ブートセクター５４から呼び出したブートデータを第１ＲＡＭ３２ａに退避し、以降の制御をブートデータ起動領域にコピーされたブートデータ（書き換え制御プログラム）に移す（Ｓ０２）。以上、Ｓ０１，Ｓ０２が、モード切り替え部７１の処理である。なお、ブートデータ起動領域にコピーされたブートデータを、以下「起動ブート部」と称する。
【００５１】
続いて、第１のコア２１では、起動ブート部により、第２のコア２２（ファームウェア）に対し、ＤＤＲ２３内に受信領域を確保するための受信領域確保要求を行う（Ｓ０３）。第２のコア２２では、ファームウェアにより、ＤＤＲ２３に受信領域を確保し（Ｓ０４）、確保した受信領域のアドレスを、第１のコア２１（起動ブート部）に通知する（Ｓ０５）。第１のコア２１では、起動ブート部により、第２のコア２２から通知されたアドレスに基づき、受信部７２が受信した書き換えファームウェア（第１の書き換えファームウェアおよび第２の書き換えファームウェア）をＤＤＲ２３に保存する（Ｓ０６）。以上、Ｓ０３，Ｓ０６が、保存部７３の処理である。なお、受信部７２は、Ｓ０１〜Ｓ０３の間に、書き換えファームウェアを受信する。
【００５２】
続いて、第１のコア２１では、起動ブート部により、ＤＤＲ２３に保存された第１の書き換えファームウェアを、第１フラッシュＲＯＭ３３ａのメインセクター５３に書き込み（Ｓ０７）、その書き換えをチェックサムで確認する（Ｓ０８）。以上、Ｓ０７，Ｓ０８が、第１書き換え制御部７４の処理である。
【００５３】
さらに、第１のコア２１では、起動ブート部により、ＤＤＲ２３に保存された第２の書き換えファームウェアを、第２のコア２２（第２ＲＡＭ３２ｂ）に送り込む（Ｓ０９）。第２のコア２２では、第２ＲＡＭ３２ｂに退避されたブートデータ（書き換え制御プログラム）により、第２の書き換えファームウェアを第２フラッシュＲＯＭ３３ｂのメインセクターに書き込む（Ｓ１０）。その後、第１のコア２１の起動ブート部により、第２の書き換えファームウェアの書き換えをチェックサムで確認する（Ｓ１１）。以上、Ｓ０９，Ｓ１１が、第２書き換え制御部７５の処理である。
【００５４】
続いて、第１のコア２１では、起動ブート部（メイン移行プログラム）により、プリンター１のリセットを指示する（Ｓ１２）。第１ＣＰＵ３１ａは、当該指示に基づき、第１のコア２１のファームウェアにより、プリンター１をリセットする（Ｓ１３）。以上、Ｓ１２，Ｓ１３が、リセット部７６の処理である。なお、プリンター１のリセット指示だけでなく、リセット処理自体も、起動ブート部により実行しても良い。
【００５５】
以上説明したとおり、本実施形態のプリンター１によれば、第１のコア２１の第１ＣＰＵ３１ａが、ブートデータにより、第１のコア２１のファームウェアの書き換え、第２のコア２２のファームウェアの書き換え、リセット処理の一連の制御を行うため、コアごとにファームウェアの書き換えを行う場合と比較して、書き換えに要する時間を短縮することができる。つまり、図７に示した従来例（コアごとに書き換え処理を行う場合）と比較して、工程（Ｓ１０６，Ｓ１０７，Ｓ１１２）を省略できる。
【００５６】
また、ホスト装置１００からリアルタイムコマンドを受信して、通常モードから書き換えモードへのモード切り替えを行う構成であるため、プリンター１がビジー状態の場合でも、確実にモード切り替えを行うことができる。
【００５７】
また、第１のコア２１は、第１の書き換えファームウェアと第２の書き換えファームウェアとを一括受信するため、ホスト装置１００はプリンター１への書き換えファームウェアの送信を１回で済ませることができる。また、第１のコア２１は、受信した書き換えファームウェアを、ＤＤＲ２３に保存するため、第１ＲＡＭ３２ａの容量を問わない。また、書き換えファームウェアをＤＤＲ２３に保存した後、書き換え処理を行うため、書き換え処理中に、ホスト装置１００との通信が途切れた場合でも、書き換え処理を続行することができる。
【００５８】
なお、以下の変形例を採用可能である。
［変形例１］
上記の実施形態において、受信部７２は、第１の通信規格（ＵＳＢ）により書き換えファームウェアを受信したが、第２の通信規格（Ethernet）により受信することも可能である。この場合、第１のコア２１は、第２のコア２２を介してリアルタイムコマンドを受信し、書き換えモードに移行する。また、第１のコア２１は、起動ブート部により、第２のコア２２を介して受信した書き換えファームウェアを、ＤＤＲ２３に保存する。
【００５９】
［変形例２］
上記の実施形態では、書き換え処理において、ブートデータの書き換えは行わず、ファームウェアのみを書き換えたが、ブートデータの書き換えを行っても良い。この場合、第１ＲＡＭ３２ａに退避した起動ブート部（旧ブートデータ）により、新しい書き換えブートデータを本ブートセクター５２および仮ブートセクター５４に書き込み、さらに書き換えファームウェアをメインセクター５３に書き込む。
【００６０】
［変形例３］
上記の実施形態では、第２のコア２２を追加することにより、ネットワーク機能の拡張を行った場合を例示したが、Bluetoothや赤外線など他の通信機能の拡張を行う場合に本発明を適用しても良い。また、通信機能以外に、バックグランド処理（暗号解析処理、周辺機器の追加に伴う周辺機器制御）の拡張を行っても良い。その他、第１のコア２１で実現する通常処理以外の処理を、第２のコア２２で実現しても良い。
【００６１】
［変形例４］
上記の実施形態では、第１のコア２１で受信した書き換えファームウェアをＤＤＲ２３に保存したが、ＤＤＲ２３が存在しない場合、第１のコア２１内の第１ＲＡＭ３２ａに保存しても良い。
【００６２】
［変形例５］
上記の実施形態では、第１フラッシュＲＯＭ３３ａ内に常設される本ブートセクター５２と、一時的にメインセクター５３に上書きされる仮ブートセクター５４で、Ｗブートを構成したが、第１フラッシュＲＯＭ３３ａ内に２つのブートセクターを常設してＷブートを構成しても良い。
【００６３】
［その他の変形例］
また、上記に示したプリンター１の各構成要素をプログラムとして提供しても良い。また、そのプログラムを各種記録媒体（ＣＤ−ＲＯＭ、フラッシュメモリー等）に格納して提供しても良い。すなわち、コンピューターをプリンター１の各構成要素として機能させるためのプログラム、およびそれを記録した記録媒体も、本発明の権利範囲に含まれる。
【００６４】
また、上記の実施形態では、２つのコアを有するプリンター１を例示したが、３つ以上のコアを有するプリンター１に本発明を適用しても良い。この場合、第１のコア２１が、他の全てのコアの書き換え制御を行う。また、プリンター１に限らず、複数のコアを有する電子機器に本発明を適用しても良い。その他、本発明の要旨を逸脱しない範囲で、適宜変更が可能である。
【符号の説明】
【００６５】
１：プリンター  １１：第１の通信部  １２：第２の通信部  １３：制御部  １４：印刷部  ２１：第１のコア  ２２：第２のコア  ２３：ＤＤＲ  ２４：バス  ７１：モード切り替え部  ７２：受信部  ７３：保存部  ７４：第１書き換え制御部  ７５：第２書き換え制御部  ７６：リセット部  １００：ホスト装置  ＳＹ：印刷システム
【図１】
0006565389.tif 000002
【図２】
0006565389.tif 000003
【図３】
0006565389.tif 000004
【図４】
0006565389.tif 000005
【図５】
0006565389.tif 000006
【図６】
0006565389.tif 000007
【図７】
0006565389.tif 000008