(57)【要約】【課題】複数の不揮発性メモリを有する装置において、復旧不能データを用いるファームウェアデータの更新にかかる時間を短縮すること。【解決手段】本発明は、複数の不揮発性メモリを有するファームウェア組み込み装置であって、前記複数の不揮発性メモリの夫々に保存されているファームウェアデータを更新するためのファームウェア更新用データを取得する取得手段と、前記取得したファームウェア更新用データに含まれる復旧不能データによる、第１の不揮発性メモリに保存されている前記ファームウェアデータの更新と、該復旧不能データによる、第２の不揮発性メモリに保存されている前記ファームウェアデータの更新とを、並行して実行するよう制御する制御手段とを有することを特徴とするファームウェア組み込み装置である。【選択図】図６
2019095905.tif 000002
【特許請求の範囲】
【請求項１】
複数の不揮発性メモリを有するファームウェア組み込み装置であって、
前記複数の不揮発性メモリの夫々に保存されているファームウェアデータを更新するためのファームウェア更新用データを取得する取得手段と、
前記取得したファームウェア更新用データに含まれる復旧不能データによる、第１の不揮発性メモリに保存されている前記ファームウェアデータの更新と、該復旧不能データによる、第２の不揮発性メモリに保存されている前記ファームウェアデータの更新とを、並行して実行するよう制御する制御手段と
を有することを特徴とするファームウェア組み込み装置。
【請求項２】
前記ファームウェア更新用データは、複数のパッケージデータから構成され、
前記パッケージデータの定義情報として、タグ名と、書き込み先と、データ種別と、開始アドレスと、データサイズとがあり、
前記データ種別は、前記復旧不能データと、復旧可能データとの何れであるかを示すことを特徴とする請求項１に記載のファームウェア組み込み装置。
【請求項３】
前記制御手段は、前記第１の不揮発性メモリに保存されている前記ファームウェアデータの消去と、前記復旧不能データの該第１の不揮発性メモリへの書き込みとを指示し、該指示と同時に、前記第２の不揮発性メモリに保存されている前記ファームウェアデータの消去と、前記復旧不能データの該第２の不揮発性メモリへの書き込みとを指示することを特徴とする請求項２に記載のファームウェア組み込み装置。
【請求項４】
前記制御手段は、前記ファームウェア更新用データを構成するパッケージデータの夫々に対する、前記書き込み先と前記データ種別とに基づく制御を行うことを特徴とする請求項２に記載のファームウェア組み込み装置。
【請求項５】
前記制御手段は、前記パッケージデータの夫々に対する、前記不揮発性メモリへの書き込みに要する時間に基づく制御を行うことを特徴とする請求項４に記載のファームウェア組み込み装置。
【請求項６】
前記パッケージデータの夫々に対する、前記データサイズと前記書き込み先とに基づき、前記時間を算出する算出手段を更に有することを特徴とする請求項５に記載のファームウェア組み込み装置。
【請求項７】
前記制御手段は、前記復旧不能データによる前記第１の不揮発性メモリに保存されている前記ファームウェアデータの更新時間が、前記復旧不能データによる前記第２の不揮発性メモリに保存されている前記ファームウェアデータの更新時間内に収まるように制御を行うことを特徴とする請求項６に記載のファームウェア組み込み装置。
【請求項８】
前記制御手段は、前記復旧不能データ、前記復旧可能データの順、又は、前記復旧可能データ、前記復旧不能データの順に、前記ファームウェアデータを更新することを特徴とする請求項２乃至７の何れか１項に記載のファームウェア組み込み装置。
【請求項９】
前記復旧不能データは、前記ファームウェア更新用データ内で、前記復旧可能データより先頭側に配されることを特徴とする請求項２に記載のファームウェア組み込み装置。
【請求項１０】
前記取得したファームウェア更新用データは、前記第１の不揮発性メモリに対応する第１の揮発性メモリに保存され、
前記第１の揮発性メモリに保存されたファームウェア更新用データは、前記第２の不揮発性メモリに対応する第２の揮発性メモリに複製されることを特徴とする請求項９に記載のファームウェア組み込み装置。
【請求項１１】
前記制御手段は、前記第１の揮発性メモリに保存されたファームウェア更新用データのうち、前記書き込み先が前記第１の不揮発性メモリであるパッケージデータによる、前記第１の不揮発性メモリへの書き込みを行い、前記第２の揮発性メモリに複製されたファームウェア更新用データのうちの、前記書き込み先が前記第２の不揮発性メモリであるパッケージデータによる、前記第２の不揮発性メモリへの書き込みを行うことを特徴とする請求項１０に記載のファームウェア組み込み装置。
【請求項１２】
複数の不揮発性メモリを有するファームウェア組み込み装置の制御方法であって、
前記複数の不揮発性メモリの夫々に保存されているファームウェアデータを更新するためのファームウェア更新用データを取得するステップと、
前記取得したファームウェア更新用データに含まれる復旧不能データによる、第１の不揮発性メモリに保存されている前記ファームウェアデータの更新と、該復旧不能データによる、第２の不揮発性メモリに保存されている前記ファームウェアデータの更新とを、並行して実行するよう制御するステップと
を有することを特徴とする制御方法。
【請求項１３】
コンピュータに請求項１２に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアデータのセキュアな更新のための技術に関する。
【背景技術】
【０００２】
ファームウェア組み込み装置に搭載される不揮発性メモリにはコード実行可能なファームウェアデータが保存されており、不具合修正や機能追加といった要因でファームウェアデータを更新することがある。このようなファームウェアデータの更新では、更新の実行中に停電等のシャットダウンが発生してしまうと、書き込み時のデータ整合が保たれないまま更新処理が中断される。従って、ファームウェアの更新時間を短縮する技術が求められている。
【０００３】
特許文献１には、書き込みたいデータを分割し、複数の不揮発性メモリに対する書き込みを多重化することで、データの書き込み時間を短縮することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１８９６３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ファームウェアデータには、整合が保たれていないと復旧できないデータ（復旧不能データ）と、整合が保たれていなくても再度ファームウェアデータの更新を実行することで復旧できるデータ（復旧可能データ）とが含まれることがある。
【０００６】
しかしながら、特許文献１では、復旧不能データと復旧可能データの概念が考慮されていない。そのため、書き込みの多重化によりファームウェアデータの更新時間の総計は短縮されるものの、特に短縮したい復旧不能データを用いるファームウェアデータの更新にかかる時間は変わらない虞がある。
【０００７】
そこで本発明は、上記の課題に鑑み、複数の不揮発性メモリを有する装置において、復旧不能データを用いるファームウェアデータの更新にかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、複数の不揮発性メモリを有するファームウェア組み込み装置であって、前記複数の不揮発性メモリの夫々に保存されているファームウェアデータを更新するためのファームウェア更新用データを取得する取得手段と、前記取得したファームウェア更新用データに含まれる復旧不能データによる、第１の不揮発性メモリに保存されている前記ファームウェアデータの更新と、該復旧不能データによる、第２の不揮発性メモリに保存されている前記ファームウェアデータの更新とを、並行して実行するよう制御する制御手段とを有することを特徴とするファームウェア組み込み装置である。
【発明の効果】
【０００９】
本発明によれば、複数の不揮発性メモリを有する装置において、復旧不能データを用いるファームウェアデータの更新にかかる時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態における記録装置が待機状態にあるときの図である。
【図２】本発明の実施形態における記録装置の制御構成図である。
【図３】実施例１におけるプリントエンジンユニットの詳細な構成図である。
【図４】実施例１における通常モードとファームウェア更新モードとにおける動作の説明図である。
【図５】ファームウェア更新用データの構造の説明図である。
【図６】実施例１におけるファームウェアデータの更新処理のフローチャートである。
【図７】実施例２におけるファームウェアデータの更新処理のフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、本実施形態で使用するインクジェット記録装置１（以下、記録装置１）の内部構成図である。図において、ｘ方向は水平方向、ｙ方向（紙面垂直方向）は後述する記録ヘッド８において吐出口が配列する方向、ｚ方向は鉛直方向をそれぞれ示す。
【００１２】
記録装置１は、プリント部２とスキャナ部３を備える複合機であり、記録動作と読取動作に関する様々な処理を、プリント部２とスキャナ部３で個別にあるいは連動して実行することができる。スキャナ部３は、ＡＤＦ（オートドキュメントフィーダ）とＦＢＳ（フラットベッドスキャナ）を備えており、ＡＤＦで自動給紙される原稿の読み取りと、ユーザによってＦＢＳの原稿台に置かれた原稿の読み取り（スキャン）を行うことができる。なお、本実施形態はプリント部２とスキャナ部３を併せ持った複合機であるが、スキャナ部３を備えない形態であってもよい。図１は、記録装置１が記録動作も読取動作も行っていない待機状態にあるときを示す。
【００１３】
プリント部２において、筐体４の鉛直方向下方の底部には、記録媒体（カットシート）Ｓを収容するための第１カセット５Ａと第２カセット５Ｂが着脱可能に設置されている。第１カセット５ＡにはＡ４サイズまでの比較的小さな記録媒体が、第２カセット５ＢにはＡ３サイズまでの比較的大きな記録媒体が、平積みに収容されている。第１カセット５Ａ近傍には、収容されている記録媒体を１枚ずつ分離して給送するための第１給送ユニット６Ａが設けられている。同様に、第２カセット５Ｂ近傍には、第２給送ユニット６Ｂが設けられている。記録動作が行われる際にはいずれか一方のカセットから選択的に記録媒体Ｓが給送される。
【００１４】
搬送ローラ７、排出ローラ１２、ピンチローラ７ａ、拍車７ｂ、ガイド１８、インナーガイド１９、およびフラッパ１１は、記録媒体Ｓを所定の方向に導くための搬送機構である。搬送ローラ７は、記録ヘッド８の上流側に配され、不図示の搬送モータによって駆動される駆動ローラである。ピンチローラ７ａは、搬送ローラ７と共に記録媒体Ｓをニップして回転する従動ローラである。排出ローラ１２は、記録ヘッド８の下流側に配され、不図示の搬送モータによって駆動される駆動ローラである。拍車７ｂは、排出ローラ１２と共に記録媒体Ｓを挟持して搬送する。
【００１５】
ガイド１８は、記録媒体Ｓの搬送経路に設けられ、記録媒体Ｓを所定の方向に案内する。インナーガイド１９は、ｙ方向に延在する部材で湾曲した側面を有し、当該側面に沿って記録媒体Ｓを案内する。フラッパ１１は、両面記録動作の際に、記録媒体Ｓが搬送される方向を切り替えるための部材である。排出トレイ１３は、記録動作が完了し排出ローラ１２によって排出された記録媒体Ｓを積載保持するためのトレイである。
【００１６】
本実施形態の記録ヘッド８は、フルラインタイプのカラーインクジェット記録ヘッドであり、記録データに従ってインクを吐出する吐出口が、図１におけるｙ方向に沿って記録媒体Ｓの幅に相当する分だけ複数配列されている。記録ヘッド８が待機位置にあるとき、記録ヘッド８の吐出口面８ａは、図１のようにキャップユニット１０によってキャップされている。記録動作を行う際は、後述するプリントコントローラ２０２によって、吐出口面８ａがプラテン９と対向するように記録ヘッド８の向きが変更される。プラテン９は、ｙ方向に延在する平板によって構成され、記録ヘッド８によって記録動作が行われる記録媒体Ｓを背面から支持する。
【００１７】
図２は、記録装置１における制御構成を示すブロック図である。制御構成は、主にプリント部２を統括するプリントエンジンユニット２００と、スキャナ部３を統括するスキャナエンジンユニット３００と、記録装置１全体を統括するコントローラユニット１００によって構成されている。プリントコントローラ２０２は、コントローラユニット１００のメインコントローラ１０１の指示に従ってプリントエンジンユニット２００の各種機構を制御する。スキャナエンジンユニット３００の各種機構は、コントローラユニット１００のメインコントローラ１０１によって制御される。以下に制御構成の詳細について説明する。
【００１８】
コントローラユニット１００において、ＣＰＵにより構成されるメインコントローラ１０１は、ＲＯＭ１０７に記憶されているプログラムや各種パラメータに従って、ＲＡＭ１０６をワークエリアとしながら記録装置１全体を制御する。例えば、ホストＩＦ１０２またはワイヤレスＩＦ１０３を介してホスト装置４００から印刷ジョブが入力されると、メインコントローラ１０１の指示に従って、画像処理部１０８が受信した画像データに対して所定の画像処理を施す。そして、メインコントローラ１０１はプリントエンジンＩＦ１０５を介して、画像処理を施した画像データをプリントエンジンユニット２００へ送信する。尚、本明細書において、ＩＦとはインターフェースの略記である。
【００１９】
記録装置１は無線通信や有線通信を介してホスト装置４００から画像データを取得しても良いし、記録装置１に接続された外部記憶装置（ＵＳＢメモリ等）から画像データを取得しても良い。無線通信や有線通信に利用される通信方式は限定されない。例えば、無線通信に利用される通信方式として、Ｗｉ−Ｆｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）が適用可能である。また、有線通信に利用される通信方式としては、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等が適用可能である。また、例えばホスト装置４００から読取コマンドが入力されると、メインコントローラ１０１は、スキャナエンジンＩＦ１０９を介してこのコマンドをスキャナエンジンユニット３００に送信する。
【００２０】
操作パネル１０４は、ユーザが記録装置１に対して入出力を行うための機構である。ユーザは、操作パネル１０４を介してコピーやスキャン等の動作を指示したり、印刷モードを設定したり、記録装置１の情報を認識したりすることができる。
【００２１】
プリントエンジンユニット２００において、ＣＰＵにより構成されるプリントコントローラ２０２は、ＲＯＭ２０３に記憶されているプログラムや各種パラメータに従って、ＲＡＭ２０４をワークエリアとしながら、プリント部２が備える各種機構を制御する。コントローラＩＦ２０１を介して各種コマンドや画像データが受信されると、プリントコントローラ２０２は、これを一旦ＲＡＭ２０４に保存する。記録ヘッド８が記録動作に利用できるように、プリントコントローラ２０２は画像処理コントローラ２０５に、保存した画像データを記録データへ変換させる。記録データが生成されると、プリントコントローラ２０２は、ヘッドＩＦ２０６を介して記録ヘッド８に記録データに基づく記録動作を実行させる。この際、プリントコントローラ２０２は、搬送制御部２０７を介して図１に示す給送ユニット６Ａ、６Ｂ、搬送ローラ７、排出ローラ１２、フラッパ１１を駆動して、記録媒体Ｓを搬送する。プリントコントローラ２０２の指示に従って、記録媒体Ｓの搬送動作に連動して記録ヘッド８による記録動作が実行され、印刷処理が行われる。なお、ここでは、プリントエンジンユニット２００が、コントローラＩＦ２０１、ＣＰＵを含むプリントコントローラ２０２、ＲＯＭ２０３、及びＲＡＭ２０４をそれぞれ１つ備える構成を示している。しかし、プリントエンジンユニット２００は、これらの構成要素を複数備えても良い。
【００２２】
ヘッドキャリッジ制御部２０８は、記録装置１のメンテナンス状態や記録状態といった動作状態に応じて記録ヘッド８の向きや位置を変更する。インク供給制御部２０９は、記録ヘッド８へ供給されるインクの圧力が適切な範囲に収まるように、インク供給ユニット１５を制御する。メンテナンス制御部２１０は、記録ヘッド８に対するメンテナンス動作を行う際に、メンテナンスユニット１６におけるキャップユニット１０やワイピングユニット１７の動作を制御する。
【００２３】
スキャナエンジンユニット３００においては、メインコントローラ１０１が、ＲＯＭ１０７に記憶されているプログラムや各種パラメータに従って、ＲＡＭ１０６をワークエリアとしながら、スキャナコントローラ３０２のハードウェアリソースを制御する。これにより、スキャナ部３が備える各種機構は制御される。例えば、コントローラＩＦ３０１を介してメインコントローラ１０１がスキャナコントローラ３０２内のハードウェアリソースを制御することにより、ユーザによってＡＤＦに搭載された原稿を、搬送制御部３０４を介して搬送し、センサ３０５によって読み取る。そして、スキャナコントローラ３０２は読み取った画像データをＲＡＭ３０３に保存する。なお、プリントコントローラ２０２は、上述のように取得された画像データを記録データに変換することで、記録ヘッド８に、スキャナコントローラ３０２で読み取った画像データに基づく記録動作を実行させることが可能である。
【００２４】
［実施例１］
＜プリントエンジンユニットについて＞
以下、本実施例におけるプリントエンジンユニット２００の詳細な構成について、図３を用いて説明する。図３は、本実施例におけるプリントエンジンユニット２００の詳細な構成を説明するためのブロック図である。
【００２５】
本実施例におけるプリントエンジンユニット２００は、第１のＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）基板２８０と、第２のＳｏＣ基板２９０とを備える。第１のＳｏＣ基板２８０は、コントローラエンジンＩＦ２０１ｘと、シリアルＲＯＭ（以下、ＳＲＯＭと略記する）２０３ｘと、ＲＡＭ２０４ｘと、ＣＰＵ２１１ｘとを有する。コントローラエンジンＩＦ２０１ｘは、ＰＣＩ  Ｅｘｐｒｅｓｓ（以下、ＰＣＩｅと略記する）、ＵＳＢ、Ｅｈｅｒｎｅｔ等を備えている。ＳＲＯＭ２０３ｘには、復旧不能データが配される復旧不能データ領域５０５ｘと、復旧可能データが配される復旧可能データ領域５０６ｘとが設けられている。尚、復旧不能データ、及び、復旧可能データの詳細に関しては、図４について説明する際に、詳しく述べる。
【００２６】
第２のＳｏＣ基板２９０も第１のＳｏＣ基板２８０と同様の構成を有する。つまり、第２のＳｏＣ基板２９０は、コントローラエンジンＩＦ２０１ｙと、ＳＲＯＭ２０３ｙと、ＲＡＭ２０４ｙと、ＣＰＵ２１１ｙとを有し、ＳＲＯＭ２０３ｙには、復旧不能データ領域５０５ｙと、復旧可能データ領域５０６ｙとが設けられている。このようにプリントエンジンユニット２００は、同様の構成を有する２つのＳｏＣ基板を備える。本実施例では、第１のＳｏＣ基板２８０にはメンテナンスユニット１６におけるキャップユニット１０やワイピングユニット１７が接続され、第２のＳｏＣ基板２９０には搬送制御部２０７やヘッドＩＦ２０６が接続されている。このような構成にすることで、２つのＳｏＣ基板による、メカ制御や画像処理等に関する各種処理の分散処理の実行を可能としている。
【００２７】
本実施例におけるホスト装置４００は、記録装置１に保存中のファームウェアデータを更新するためのデータ（以下、ファームウェア更新用データとする）を、記録装置１に送信する送信元である。記録装置１が送信するファームウェア更新用データは、パッケージ化されている。以下では、ファームウェア更新用データに、第１のＳｏＣ基板２８０用の復旧不能データ５０１及び復旧可能データ５０２、並びに、第２のＳｏＣ基板２９０用の復旧不能データ５０３及び復旧可能データ５０４が含まれるケースについて説明する。尚、パッケージ化されたファームウェア更新用データ（の構造）については、後で詳しく述べる（図５参照）。また、ここでは、ホスト装置４００がファームウェア更新用データを記録装置１に送信するケースを示すが、記録装置１がファームウェア更新用データを取得する形態はこれに限らない。例えば、ファームウェア更新用データが保存されたＵＳＢやＣＤ−ＲＯＭ等の記憶媒体を用いて、記録装置１がファームウェア更新用データを取得しても良い。
【００２８】
ホスト装置４００によって記録装置１に送信されたファームウェア更新用データは、コントローラユニット１００を経由して、プリントエンジンユニット２００に渡される。最終的に、ファームウェア更新用データのうち、第１のＳｏｃ基板２８０用の復旧不能データ５０１は復旧不能データ領域５０５ｘに配され、復旧可能データ５０２は復旧可能データ領域５０６ｘに配される。また、ファームウェア更新用データのうち、第２のＳｏｃ基板２９０用の復旧不能データ５０３は復旧不能データ領域５０５ｙに配され、復旧可能データ５０４は復旧可能データ領域５０６ｙに配される。
【００２９】
＜ファームウェアデータの更新処理について＞
本実施例では、ファームウェアデータの更新処理は、通常モードとファームウェア更新モードとの２つのモードを切り替えることによって行われる。通常モードは、ＳＲＯＭ２０３ｘ、ＳＲＯＭ２０３ｙに保存されている現ファームウェアデータによって、記録装置１を制御するモードである。これに対し、ファームウェア更新モードは、ホスト装置４００から送信されたファームウェア更新用データによって、ＳＲＯＭ２０３ｘ、２０３ｙに保存されているファームウェアデータの更新を行うモードである。以下、通常モードとファームウェア更新モードとについて、図４を用いて説明する。図４（ａ）は、通常モードで起動する際の動作の説明図であり、図４（ｂ）は、ファームウェア更新モード時の動作の説明図である。
【００３０】
まず、通常モードにおける起動時の動作について、図４（ａ）を用いて説明する。記録装置１が通常モードで起動した場合、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘと第２のＳｏＣ基板２９０のＣＰＵ２１１ｙとはそれぞれ、上位のコントローラユニット１００から命令を受け取って同時に動作を開始する。なお、動作の開始タイミングは多少ずれても構わない。そして、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘは、ＳＲＯＭ２０３ｘに保存されているブートプログラムを実行し、第２のＳｏＣ基板２９０のＣＰＵ２１１ｙは、ＳＲＯＭ２０３ｙに保存されているブートプログラムを実行する。これにより、ＳｏＣ基板２８０及びＳｏＣ基板２９０を動作させるための初期化が行われる。
【００３１】
その後、ＳＲＯＭ２０３ｘに保存されているローダープログラムはＲＡＭ２０４ｘに展開され、ＳＲＯＭ２０３ｙに保存されているローダープログラムはＲＡＭ２０４ｙに展開される。これにより、プログラムカウンタはＲＡＭ領域側に移される。
【００３２】
その後、ＣＰＵ２１１ｘがＲＡＭ２０４ｘに展開されたローダープログラムを実行することで、ＳＲＯＭ２０３ｘに保存されているメインファームウェアは、ＲＡＭ２０４ｘに展開される。このとき、プログラムカウンタの値が、所定アドレス（メインファームウェアのアドレス）に遷移する。同様に、ＣＰＵ２１１ｙがＲＡＭ２０４ｙに展開されたローダープログラムを実行することで、ＳＲＯＭ２０３ｙに保存されているメインファームウェアは、ＲＡＭ２０４ｙに展開される。
【００３３】
その後、ＣＰＵ２１１ｘは、ＲＡＭ２０４ｘに展開されたメインファームウェアを実行し、ＣＰＵ２１１ｙは、ＲＡＭ２０４ｙに展開されたメインファームウェアを実行する。これにより、ＳｏＣ基板間のエンジンＩＦ（本実施例ではＰＣＩｅ）を開通し、チップ間の接続を確立した上で、各ＳｏＣ基板に付属する電源、アクチュエーター、センサ類の初期化を行い、印刷動作が実行可能な状態を作る。
【００３４】
続いて、ファームウェア更新モードにおける動作について、図４（ｂ）を用いて説明する。ファームウェア更新モードでは、ＳｏＣ基板２８０のＣＰＵ２１１ｘとＳｏＣ基板２９０のＣＰＵ２１１ｙとはそれぞれ、上位のコントローラユニット１００から命令を受け取って同時に動作を開始する。なお、動作の開始タイミングは多少ずれても構わない。そして、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘは、ＳＲＯＭ２０３ｘに保存されているブートプログラムを実行し、第２のＳｏＣ基板２９０のＣＰＵ２１１ｙは、ＳＲＯＭ２０３ｙに保存されているブートプログラムを実行する。これにより、ＳｏＣ基板２８０及びＳｏＣ基板２９０を動作させるための初期化処理が行われる。
【００３５】
その後、ＳＲＯＭ２０３ｘに保存されているローダープログラムはＲＡＭ２０４ｘに展開され、ＳＲＯＭ２０３ｙに保存されているローダープログラムはＲＡＭ２０４ｙに展開される。これにより、プログラムカウンタはＲＡＭ領域側に移される。
【００３６】
その後、ＣＰＵ２１１ｘがＲＡＭ２０４ｘに展開されたローダープログラムを実行することで、ＳＲＯＭ２０３ｘに保存されているダウンローダプログラムは、ＲＡＭ２０４ｘに展開される。このとき、プログラムカウンタの値が、所定アドレス（ダウンローダプログラムのアドレス）に遷移する。同様に、ＣＰＵ２１１ｙがＲＡＭ２０４ｙに展開されたローダープログラムを実行することで、ＳＲＯＭ２０３ｙに保存されているダウンローダプログラムは、ＲＡＭ２０４ｙに展開される。
【００３７】
ＳｏＣ基板２８０のＣＰＵ２１１ｘがＲＡＭ２０４ｘに展開されたダウンローダプログラムを実行し、ＳｏＣ基板２９０のＣＰＵ２１１ｙがＲＡＭ２０４ｙに展開されたダウンローダプログラムを実行する。これにより、ＳｏＣ基板２８０とＳｏＣ基板２９０との間のエンジンＩＦが開通し、両ＳｏＣ基板間の通信が確立して、ＳｏＣ基板２８０とＳｏＣ基板２９０は、上位のコントローラユニット１００からファームウェア更新用データを受信可能な状態になる。
【００３８】
ＣＰＵ２１１ｘがＲＡＭ２０４ｘに展開されたダウンローダプログラムを実行することで、第１のＳｏＣ基板２８０は、自身が受信したファームウェア更新用データの一部又は全部を、エンジンＩＦを介して第２のＳｏＣ基板２９０に転送することが可能になる。
【００３９】
ファームウェアデータ更新処理の途中、即ち、ＲＯＭに保存されているメインファームウェアの書き換えを行っている最中に停電等により記録装置１の電源が切れた場合について検討する。この場合、ブートプログラム、ローダープログラム、ダウンローダプログラムが破損していなければ、通常モードで起動することはできないがファームウェア更新モードで再び起動することはできる。従って、ファームウェアデータの更新処理を再び実行することが可能である。
【００４０】
上記の内容を踏まえて本明細書では、ブートプログラム、ローダープログラム、ダウンローダプログラムを「復旧不能データ」と表現する一方、メインファームウェアを「復旧可能データ」と表現する。また、ブートプログラム、ローダープログラム、ダウンローダプログラム等の復旧不能データが配されるＳＲＯＭ内領域を「復旧不能データ領域」と表現する一方、メインファームウェアが配されるＳＲＯＭ内領域を「復旧可能データ領域」と表現する。復旧不能データを復旧不能データ領域に書き込んでいる最中に停電等により記録装置１の電源が切れた場合、その後の電源投入時にファームウェア更新モードでの起動に失敗するようになり、ファームウェアデータの再書き込みができなくなってしまう。
【００４１】
なお、復旧不能データとは、ファームウェア更新モードに入るために必要なプログラムともいえる。つまり、ファームウェア更新モードに入るためには、ブートプログラム、ローダープログラム、ダウンローダプログラムが必要となるため、本実施形態ではこれらのプログラムが復旧不能データに相当する。一方、復旧可能データとは、ファームウェア更新モードに入るために不要なプログラムともいえる。つまり、本実施形態では、メインファームウェアが復旧可能データに相当する。
【００４２】
なお、仮に復旧不能データの更新中に電源が切られた場合、基板の交換などが必要となることもある。
【００４３】
＜パッケージ化されたファームウェア更新用データの構造について＞
以下、本実施例におけるファームウェア更新用データの構造について説明する。本実施例でファームウェアデータの更新に用いるデータ（ファームウェア更新用データ）はパッケージ化されており、複数のパッケージデータから成る。図５（ａ）は、本実施例で使用可能なファームウェア更新用データの構造例を示す図である。プリントエンジンユニット２００は、このようなファームウェア更新用データの構造に関する定義情報（データの配列形態等）を予め持っており、ＣＰＵ２１１ｘ、２１１ｙは、該定義情報に基づき、ファームウェア更新用データを解釈することが可能である。
【００４４】
図５（ａ）に示すファームウェア更新用データは、先頭からパッケージデータＡ１、パッケージデータＡ２、・・・パッケージデータＡ７の順に並ぶ７個のパッケージデータから構成される。パッケージデータの定義情報として、タグ名（ＴａｇＮａｍｅ）、データの書き込み先（Ｔａｒｇｅｔ）、データ種別（ＤａｔａＴｙｐｅ）、開始アドレス（ＳｔａｒｔＡｄｄｒｅｓｓ・４バイト）、データサイズ（Ｌｅｎｇｔｈ）がある。
【００４５】
パッケージデータＡ１は、ファームウェア更新用データの開始を示す開始タグのみから成る。
【００４６】
パッケージデータＡ２のタグ名（ＴａｇＮａｍｅ値）はＴＹＰＥ（３）であり、Ｔａｒｇｅｔ値は、ＰｒｉｎｔＥｎｇｉｎｅ（３）である。これらの値は、パッケージデータＡ２がプリントエンジンユニット２００に対するデータであることを意味する。
【００４７】
パッケージデータＡ３のタグ名は、実際にＳＲＯＭに書き込まれるデータ（実データとする）を含むことを示す値、ＤＡＴＡ（４）である。また、パッケージデータＡ３の書き込み先は、Ｔａｒｇｅｔ値がＳｏＣ１  ＳＲＯＭ（１）であることから、第１のＳｏＣ基板２８０のＳＲＯＭ２０３ｘである。また、パッケージデータＡ３のデータ種別は、ＤａｔａＴｙｐｅ値がＲｅｃｏｖｅｒｙ：ＮＧ（０）であることから、復旧不能データである。また、パッケージデータＡ３の開始アドレスは０ｘＦＦＦＦ００００であり、サイズは０ｘ６０００である。
【００４８】
パッケージデータＡ４のタグ名は、実データを含むことを示す値、ＤＡＴＡ（４）である。また、パッケージデータＡ４の書き込み先は、Ｔａｒｇｅｔ値がＳｏＣ１  ＳＲＯＭ（１）であることから、第１のＳｏＣ基板２８０のＳＲＯＭ２０３ｘである。また、パッケージデータＡ４のデータ種別は、ＤａｔａＴｙｐｅ値がＲｅｃｏｖｅｒｙ：ＯＫ（１）であることから、復旧可能データである。また、パッケージデータＡ４の開始アドレスは０ｘＦ０００００００であり、サイズは０ｘ３００００である。
【００４９】
パッケージデータＡ５のタグ名は、実データを含むことを示す値、ＤＡＴＡ（４）である。また、パッケージデータＡ５の書き込み先は、Ｔａｒｇｅｔ値がＳｏＣ２  ＳＲＯＭ（２）であることから、第２のＳｏＣ基板２９０のＳＲＯＭ２０３ｙである。また、パッケージデータＡ５のデータ種別は、ＤａｔａＴｙｐｅ値がＲｅｃｏｖｅｒｙ：ＯＫ（１）であることから、復旧可能データである。また、パッケージデータＡ５の開始アドレスは０ｘＦ０００００００であり、サイズは０ｘ３６０００である。
【００５０】
パッケージデータＡ６のタグ名は、実データを含むことを示す値、ＤＡＴＡ（４）である。また、パッケージデータＡ６の書き込み先は、Ｔａｒｇｅｔ値がＳｏＣ２  ＳＲＯＭ（２）であることから、第２のＳｏＣ基板２９０のＳＲＯＭ２０３ｙである。また、パッケージデータＡ６のデータ種別は、ＤａｔａＴｙｐｅ値がＲｅｃｏｖｅｒｙ：ＮＧ（０）であることから、復旧不能データである。また、パッケージデータＡ６の開始アドレスは０ｘＦＦＦＦ００００であり、サイズは０ｘ６０００である。尚、パッケージデータＡ３〜Ａ６についてはそれぞれ、サイズを示すＬｅｎｇｔｈ値に続く形式で、該サイズ分の実データが配される構造となっているが、図５（ａ）では実データは図示していない。
【００５１】
パッケージデータＡ７は、ファームウェア更新用データの終了を示す終了タグのみから成る。
【００５２】
＜プリントエンジンユニットにおけるファームウェアデータの更新処理について＞
ユーザ（管理者等）は操作パネル１０４を操作し、ファームウェア更新モードへの移行を指示する。ファームウェア更新モードへの移行が指示されると、コントローラユニット１００、プリントエンジンユニット２００、スキャナエンジンユニット３００は夫々、通常起動モードを終了させる終了処理を実行し、ファームウェア更新モードに移行する。これにより、記録装置１は、ホスト装置４００からホストＩＦ１０２経由で送られてくるファームウェア更新用データを待つ状態（データ受付状態とする）となる。
【００５３】
記録装置１がデータ受付状態となった後、ユーザはホスト装置４００からファームウェア更新用データを送信する。つまり、このケースでは、ファームウェア更新用データは予めホスト装置４００に取得されている。尚、ここでは、図５（ａ）に示したファームウェア更新用データを用いるケースを説明する。また、ファームウェア更新の別の方法として、ネットワークを利用した更新方法もある。つまり、記録装置１が、予め決められたサーバに定期的にアクセスし、サーバにファームウェア更新用データがあるか否かを判断する。ここで、記録装置１が、サーバにファームウェア更新用データがあると判断した場合、記録装置１の操作パネルにファームウェア更新プログラムを取得するか否かの問い合わせを表示する。そして、この問い合わせに対してユーザが取得することを指示することで記録装置１がサーバからファームウェア更新データを取得しても良い。コントローラユニット１００は、ホストＩＦ１０２を介するファームウェア更新用データの受信を開始し、受信したファームウェア更新用データを、ＲＡＭ１０６に一旦保存する。コントローラユニット１００のメインコントローラ１０１は、パッケージデータＡ２のＴａｒｇｅｔ値がＰｒｉｎｔＥｎｇｉｎｅ（３）であることから、受信したファームウェア更新用データがプリントエンジンユニット２００向けであると判定する。従ってその後、メインコントローラ１０１は、このファームウェア更新用データを、プリントエンジンＩＦ１０５、コントローラエンジンＩＦ２０１ｘ経由で、プリントエンジンユニット２００の第１のＳｏＣ基板２８０に転送する。転送されたファームウェア更新用データは、第１のＳｏＣ基板２８０のＲＡＭ２０４ｘに一旦保存される。
【００５４】
図６は、本実施例における、プリントエンジンユニット２００側で実行されるファームウェアデータの更新処理のフローチャートである。
【００５５】
ステップＳ６０１において、第１のＳｏＣ基板２８０は、コントローラエンジンＩＦ２０１ｘを介して受信したファームウェア更新用データをＲＡＭ２０４ｘに一旦保存する。尚、ここでは、図５（ａ）に示したファームウェア更新用データを用いるケースについて説明する。上述したように、このファームウェア更新用データはパッケージ化されており、パッケージデータＡ１〜Ａ７から成る。
【００５６】
ステップＳ６０２において、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘは、ＲＡＭ２０４ｘに保存されたファームウェア更新用データに含まれる全てのパッケージデータについて定義情報を確認する。そして、ＣＰＵ２１１ｘは、各パッケージデータに対する書き込み先とデータ種別とを導出する。
【００５７】
ステップＳ６０３において、ＣＰＵ２１１ｘは、ステップＳ６０２の結果に基づき、データ種別が復旧不能データであって、かつ書き込み先が異なるパッケージデータが、ファームウェア更新用データ内に存在するか判定する。ステップＳ６０３の判定結果が真の場合、ステップＳ６０４に進む一方、該判定結果が偽の場合、ステップＳ６０５に進む。尚、図５（ａ）に示したファームウェア更新用データを用いるケースでは、パッケージデータＡ３のデータ種別が復旧不能データ、書き込み先が第１のＳｏＣ基板２８０のＳＲＯＭ２０３ｘである。また、パッケージデータＡ６のデータ種別が復旧不能データ、書き込み先が第２のＳｏＣ基板２９０のＳＲＯＭ２０３ｙである。従って、データ種別が復旧不能データであって、かつ書き込み先が異なるパッケージデータが存在することから、ステップＳ６０４に進む。
【００５８】
ステップＳ６０４において、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘ、及び、第２のＳｏＣ基板２９０のＣＰＵ２１１ｙは、ステップＳ６０３の条件を満たすパッケージデータによるファームウェアデータの更新が同時に行われるよう制御する。具体的には、ＣＰＵ２１１ｘの制御により、ファームウェアデータの更新が同時に行われる
ステップＳ６０４におけるファームウェアデータの同時更新処理について詳しく説明する。まず、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘは、ステップＳ６０１でＲＡＭ２０４ｘに保存されたファームウェア更新用データのうちの一部を、コントローラエンジンＩＦ２０１ｘ、２０１ｙ経由で第２のＳｏＣ基板２９０に転送する。ここで転送されるファームウェア更新用データとは具体的には、ステップＳ６０３の条件を満たすパッケージデータのうち、書き込み先がＳＲＯＭ２０３ｙのものである。第２のＳｏＣ基板２９０に転送されたファームウェア更新用データは、一旦ＲＡＭ２０４ｙに保存される。かかるデータ転送の後、ＣＰＵ２１１ｘは、復旧不能データ領域５０５ｘに保存されているデータの消去と、ＲＡＭ２０４ｘに一時的に保存している復旧不能データの復旧不能データ領域５０５ｘへの書き込みを実行する。また、これと同時に、ＣＰＵ２１１ｘは、ＣＰＵ２１１ｙに対して復旧不能データ領域５０５ｙに保存されているデータの消去と、ＲＡＭ２０４ｙに一時的に保存している復旧不能データの復旧不能データ領域５０５ｙへの書き込みとを指示する。以上が、ファームウェアデータの同時更新処理の内容である。
【００５９】
尚、図５（ａ）に示したファームウェア更新用データを用いるケースでは、パッケージデータＡ３のＳＲＯＭ２０３ｘへの書き込みと、パッケージデータＡ６のＳＲＯＭ２０３ｙへの書き込みとが、略同一のタイミングで指示されることとなる。従って、これらのデータの各ＳＲＯＭへの書き込みは、略同一のタイミングで開始され、また、これらのデータのサイズは等しいことから、データの各ＳＲＯＭへの書き込みは、略同一のタイミングで終了することとなる。なお、Ｓ６０４の処理は、ＳＲＯＭ２０３ｘへの書き込みとＳＲＯＭ２０３ｙへの書き込み処理の少なくとも一部が並行して実行されれば良い。
【００６０】
ステップＳ６０５において、ＣＰＵ２１１ｘは、ステップＳ６０３の条件を満たさなかったパッケージデータのうちで、書き込み先が異なるものが存在するか判定する。ステップＳ６０５の判定結果が真の場合、ステップＳ６０６に進む一方、該判定結果が偽の場合、ステップＳ６０７に進む。尚、図５（ａ）に示したファームウェア更新用データを用いるケースでは、パッケージデータＡ４の書き込み先が第１のＳｏＣ基板２８０のＳＲＯＭ２０３ｘであり、パッケージデータＡ５の書き込み先が第２のＳｏＣ基板２９０のＳＲＯＭ２０３ｙである。従って、ステップＳ６０３の条件を満たさなかったパッケージデータのうちで書き込み先が異なるものが存在することから、ステップＳ６０６に進む。
【００６１】
ステップＳ６０６において、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘ、及び、第２のＳｏＣ基板２９０のＣＰＵ２１１ｙは、ステップＳ６０５の条件を満たすパッケージデータによるファームウェアデータの更新が同時に行われるよう制御する。本ステップのファームウェアデータの同時更新処理は、ステップＳ６０４のファームウェアデータの同時更新処理と同様である。尚、図５（ａ）に示したファームウェア更新用データを用いるケースでは、パッケージデータＡ４のＳＲＯＭ２０３ｘへの書き込みと、パッケージデータＡ５のＳＲＯＭ２０３ｙへの書き込みとが、略同一のタイミングで指示されることとなる。
【００６２】
ステップＳ６０７において、ＣＰＵ２１１ｘ、及び、ＣＰＵ２１１ｙは、残りのパッケージデータが存在する場合に、該残りのパッケージデータによるファームウェアデータの更新処理を実行するよう制御し、一連の処理は終了する。ここで言う残りのパッケージデータとは、ステップＳ６０３の条件を満たさず、かつステップＳ６０５の条件も満たさないパッケージデータである。尚、図５（ａ）に示したファームウェア更新用データを用いるケースでは、該当するパッケージデータは存在しないため、本ステップにおけるファームウェアデータの更新処理が実行されることはない。以上が、本実施例におけるファームウェアデータの更新処理の内容である。
【００６３】
＜本実施例の効果、変形例等について＞
本実施例では、データ種別に基づき、データの書き換えを複数ＲＯＭに対して同時に行うことで、ファームウェアデータを更新する。これにより、電源ＯＦＦにより記録装置１が起動不能になってしまう虞がある時間帯、具体的には復旧不能データをＲＯＭに書き込む時間を短くすることができる。尚、本実施例では上述の通り、ＲＯＭにおけるデータの書き換えを、復旧不能データ、復旧可能データの順に行っている。しかし、ユーザがファームウェアデータの更新処理を実行した後にキャンセルしようと考え、記録装置の電源をＯＦＦにするような場面を想定して、ＲＯＭにおけるデータの書き換えを、復旧可能データ、復旧不能データの順で行っても良い。
【００６４】
また、本実施例では、復旧不能データであるか、及び、書き込み先が異なるかという条件を用いて、異なるＲＯＭにおけるファームウェアデータの同時更新が可能か判定している（図６のステップＳ６０３）。ここで、これらの条件に加えて、各パッケージデータの書き込みに要する時間（書き込み所要時間とする）を考慮して更新のタイミングを決定しても良い。こうすることで、電源ＯＦＦにより記録装置１が起動不能になってしまう虞がある時間帯を短くするという課題に対して、より厳密な制御が可能となる。
【００６５】
具体的に説明すると、図６のステップＳ６０３において、各パッケージデータに対する書き込み先とデータ種別とを確認する際、各パッケージデータに対するサイズ（Ｌｅｎｇｔｈ値）も確認するようにする。
【００６６】
書き込み所要時間は、書き込み先のデバイスとデータサイズとに基づき算出される予想値である。尚、複数のＲＯＭに書き込む場合であって、かつこれらのＲＯＭにおける書き込み速度が等しい場合には、データサイズのみに基づき、書き込み所要時間を算出して良い。また、書き込み所要時間は、データの書き込みに要する時間の他に、データの消去に要する時間を含んでも構わない。
【００６７】
ステップＳ６０３で、書き込み所要時間を把握できている状況においては、必ずしも複数ＲＯＭに対するデータの書き込みを同時に開始する必要はない。更新時間が最も長いＲＯＭに合わせてその更新時間内にその他のＲＯＭの更新が完了するように書き込み等のタイミングを調整すれば足りる。
【００６８】
尚、ステップＳ６０３で同時更新を実行しないと判定されたパッケージデータについても、書き込み所要時間と書き込み先のデバイスとに基づいて、更新時間が最も短くなるように、データを書き込む順番を決定しても良い。これにより、ファームウェアデータの更新処理にかかる時間を更に短縮することが可能となる。
【００６９】
［実施例２］
実施例１では、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘがファームウェア更新用データを解析し（図６のステップＳ６０２）、ファームウェアデータの同時更新を実行するかを判定する（図６のステップＳ６０３、ステップＳ６０５）。これに対し、本実施例では、ファームウェアデータの同時更新を実行するかの判定を省略する方法について説明する。
【００７０】
＜ファームウェア更新用データについて＞
図５（ｂ）は、本実施例で使用可能なファームウェア更新用データの構造例を示す図である。図５（ｂ）に示すファームウェア更新用データは、先頭からパッケージデータＢ１、パッケージデータＢ２、・・・パッケージデータＢ７の順に並ぶ７個のパッケージデータから成る。図５（ｂ）に示すファームウェア更新用データは、図５（ａ）に示したファームウェア更新用データと同様の内容を含むが、データの並び順が、図５（ａ）に示したファームウェア更新用データとは異なっている。
【００７１】
＜ファームウェアデータの更新処理について＞
以下、本実施例におけるファームウェアデータの更新処理について、図７を用いて説明する。
【００７２】
ステップＳ７０１において、第１のＳｏＣ基板２８０は、コントローラエンジンＩＦ２０１ｘを介して受信したファームウェア更新用データを、ＳＲＯＭ２０３ｘに対応するＲＡＭ２０４ｘに一旦保存する。本ステップは、実施例１のステップＳ６０１と同様である。
【００７３】
ステップＳ７０２において、ＣＰＵ２１１ｘ及びＣＰＵ２１１ｙは、ステップＳ７０１でＲＡＭ２０４ｘに一旦保存したファームウェア更新用データを、ＳＲＯＭ２０３ｙに対応するＲＡＭ２０４ｙに対して複製および保存する。この処理は、ＣＰＵ２１１ｘが、ステップＳ７０１でＲＡＭ２０４ｘに保存したファームウェア更新用データを、コントローラエンジンＩＦ２０１ｘ、２０１ｙ経由で第２のＳｏＣ基板２９０に転送することで実現される。
【００７４】
尚、ファームウェア更新用データをＲＡＭ２０４上で複製する際に、第２のＳｏＣ基板２９０用のデータのみを選別して複製することで、データ複製に要する時間やＲＡＭ使用量を抑えることができる可能性がある。しかし、データを選別するための時間が別途かかってしまい、データ複製に要する時間とデータ選別に要する時間との関係は、トレードオフの関係にある。従って本実施例では、データの転送速度が高速であるものとして、データ選別を実行せず、ファームウェア更新用データをそのまま（即ちファームウェア更新用データに含まれる全てのパッケージデータ）をＲＡＭ２０４ｙ上で複製する。
【００７５】
ＲＡＭ２０４ｘに保存されているファームウェア更新用データのＲＡＭ２０４ｙへの複製が完了した後、ＣＰＵ２１１ｘは、ファームウェアデータの更新準備が完了した旨の通知を、ＣＰＵ２１１ｙから受け取る。その後、ＣＰＵ２１１ｘは、ＣＰＵ２１１ｙに第２のＳｏＣ基板２９０における更新開始を指示し、その直後に第１のＳｏＣ基板２８０における更新開始を指示する。すると、以下のステップＳ７０３〜ステップＳ７０６にて、第１のＳｏＣ基板２８０と第２のＳｏＣ基板２９０との夫々におけるファームウェアデータの更新が実行される。
【００７６】
ステップＳ７０３において、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘは、ＲＡＭ２０４ｘに保存されているファームウェア更新用データのうちの未処理のパッケージデータの１つに着目する（着目パッケージデータの設定）。同様に、第２のＳｏＣ基板２９０のＣＰＵ２１１ｙは、ＲＡＭ２０４ｙに保存されているファームウェア更新用データのうちの未処理のパッケージデータの１つに着目する。尚、本ステップにおける着目パッケージデータの設定は、ファームウェア更新用データ内の配列に応じて（先頭から順次）行っていく。
【００７７】
ステップＳ７０４において、第１のＳｏＣ基板２８０のＣＰＵ２１１ｘは、着目パッケージデータのタグ名が、ファームウェア更新用データの終わりを示すＥＮＤ（２）であるか判定する。本ステップの判定結果が真の場合、一連の処理は終了する一方、該判定結果が偽の場合、ステップＳ７０５に進む。尚、第２のＳｏＣ基板２９０のＣＰＵ２１１ｙも同様に、着目パッケージデータのタグ名が、ファームウェア更新用データの終わりを示すＥＮＤ（２）であるか判定する。
【００７８】
ステップＳ７０５において、第１のＳｏＣ基板２８０（のＣＰＵ２１１ｘ）は、着目パッケージデータのＴａｒｇｅｔ値に基づき、該着目パッケージデータの書き込み先が自身のＳＲＯＭ２０３ｘであるか判定する。本ステップの判定結果が真の場合、ステップＳ７０６に進む一方、該判定結果が偽の場合、ステップＳ７０３に戻る。尚、第２のＳｏＣ基板２９０（のＣＰＵ２１１ｙ）も同様に、着目パッケージデータのＴａｒｇｅｔ値に基づき、該着目パッケージデータの書き込み先が自身のＳＲＯＭ２０３ｙであるか判定する。
【００７９】
ステップＳ７０６において、ＣＰＵ２１１ｘは、ステップＳ７０５の条件を満たす着目パッケージデータによるファームウェアデータの更新処理を実行、具体的には、着目パッケージデータの内容をＳＲＯＭ２０３ｘに書き込む。また、ＣＰＵ２１１ｙも同様に、ステップＳ７０５の条件を満たす着目パッケージデータによるファームウェアデータの更新処理を実行、具体的には、着目パッケージデータの内容をＳＲＯＭ２０３ｙに書き込む。次いで、ステップＳ７０３に戻る。以上が、本実施例におけるファームウェアデータの更新処理の内容である。
【００８０】
＜ファームウェアデータの更新処理の具体例について＞
以下、図５（ｂ）に示したファームウェア更新用データを用いて、本実施例におけるファームウェアデータの更新処理を実行するケースについて説明する。
【００８１】
このケースでは、第１のＳｏＣ基板２８０のＳＲＯＭ２０３ｘに対する、パッケージデータＢ３を用いる書き込みと、パッケージデータＢ５を用いる書き込みとが順次行われる。また、第２のＳｏＣ基板２９０のＳＲＯＭ２０３ｙに対する、パッケージデータＢ４を用いる書き込みと、パッケージデータＢ６を用いる書き込みとが順次行われる。結果、パッケージデータＢ３を用いる書き込みの実行と、パッケージデータＢ４を用いる書き込みの実行とが略同一のタイミングで開始され、かつ終了することになる。
【００８２】
上述したように、本実施例では、ファームウェア更新用データ内のデータの並び順を工夫している。具体的には、ファームウェア更新用データ内で、復旧不能データ、復旧可能データの順に（具体的には、パッケージデータＢ３、Ｂ４、Ｂ５、Ｂ６の順に）データを配している。復旧不能データをまとめて復旧可能データより先頭側に配することで、異なるＳＲＯＭにおける復旧不能データによるファームウェアデータの更新を同期させること、つまり、復旧不能データによる更新の開始タイミングをできる限り揃えることが可能となる。このように、ファームウェア更新用データ内のデータの並び順を工夫することで、同時更新を行うかの判定処理を実行しない形態でも、実施例１と同様の効果を得ることが可能である。
【００８３】
＜本実施例の効果、変形例等について＞
本実施例により、電源ＯＦＦにより記録装置１が起動不能になってしまう虞がある時間帯、具体的には復旧不能データをＲＯＭに書き込む時間帯を短くすることができる。
【００８４】
尚、上述の実施例では、記録装置が複数のＳｏＣ基板を搭載する構成について説明したが、記録装置が備えるＳｏＣ基板の数は複数に限らず１であっても良い。つまり、複数の不揮発性メモリを備えており、該不揮発性メモリに並行に書き込むことが可能な任意の記録装置に対して、本発明を適用することが可能である。
【００８５】
また、上述の実施例では、本発明をインクジェット記録装置に適用した場合について説明したが、本発明をインクジェット記録装置以外の情報処理装置に適用しても良い。つまり、複数の不揮発性メモリを備えた情報処理装置（例えば、自動車、産業機器、携帯電子機器、サーバ等）に対して、本発明を適用することが可能である。
【００８６】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８７】
１          記録装置
２０３ｘ    ＳＲＯＭ
２０３ｙ    ＳＲＯＭ
２８０      第１のＳｏＣ基板
２１１ｘ    ＣＰＵ
２１１ｙ    ＣＰＵ
【図１】
2019095905.tif 000003
【図２】
2019095905.tif 000004
【図３】
2019095905.tif 000005
【図４】
2019095905.tif 000006
【図５】
2019095905.tif 000007
【図６】
2019095905.tif 000008
【図７】
2019095905.tif 000009