(57)【要約】      （修正有）【課題】外部から受信した書換データによって自身のファームウェアの全体又は一部をアップデートするデータ処理装置において、受信した書換データに埋め込まれている誤り検出データの位置を容易に特定してデータ検査を行うことができるデータ処理装置を提供すること。【解決手段】ファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶し、外部から受信した書換データに対応する記憶領域を書換データに書換える。次に、記憶領域のサイズと１個の誤り検出データで表すことができる領域サイズから誤り検出データの個数を算出し、その個数と１個の誤り検出データのデータサイズと書換えた記憶領域のサイズから誤り検出データの位置を特定してその値を読出し、記憶領域のデータに対し所定の誤り検出データ作成手順に基づく演算処理を行い、算出した値と誤り検出データの値を比較してデータ検査を行う。【選択図】      図７
2005275843.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶する記憶手段と、ファームウェアの書換データを外部から受信する受信手段と、該受信手段が受信した書換データに対応する前記記憶領域を当該書換データに書換える書換手段と、該書換手段により書換えた記憶領域のサイズ及び１個の誤り検出データで表すことができる領域サイズから誤り検出データの個数を算出し、算出した誤り検出データの個数、１個の誤り検出データのデータサイズ及び書換えた記憶領域のサイズから誤り検出データの位置を特定するとともに特定した誤り検出データの値を前記書換えた記憶領域から読み出す読出手段と、値を読み出した前記誤り検出データを除く前記書換えた記憶領域のデータに対して所定の誤り検出データ作成手順に基づく演算処理を行い、算出した値と前記読出手段が読み出した誤り検出データの値とを比較して前記書換手段による書換データの書換えが正常に行われたか否かを検査する検査手段と、を備えることを特徴とするデータ処理装置。
【請求項２】
前記検査手段は、前記読出手段が前記書換えた記憶領域から複数の誤り検出データの値を読み出した場合に、前記書換データに書換えた記憶領域を前記複数の誤り検出データの個数と等しい数の部分領域に分割し、値を読み出した誤り検出データを除く各部分領域のデータに対して所定の誤り検出データ作成手順に基づく演算処理を行い、それぞれ算出した値と前記読出手段が読み出した誤り検出データの値とを比較して前記書換手段による書換データの書換えが正常に行われたか否かを検査することを特徴とする請求項１記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関し、詳しくは外部から受信した書換データにより自身のメモリに記憶されているファームウェアをアップデートするデータ処理装置に関するものである。
【背景技術】
【０００２】
自身の制御プログラム等のデータをフラッシュメモリ等の書換え可能なメモリに記憶しているデータ処理装置では、メモリに記憶しているデータを数値として加算したサム値と予め記憶されている誤り検出データ（以下、「チェッカ」ともいう。）とを比較して前記データのビット誤りの有無を検査する、いわゆるチェックサム（Check Sum）方式によりデータ検査を行っている。
【０００３】
このようなチェックサム方式によるデータ検査を行う装置としては、特許文献１に開示されているデータ処理装置がある。このデータ処理装置では、各種の制御プログラムやデータを記憶しているフラッシュメモリを同じサイズの複数の記憶領域に分割し、各記憶領域毎にサム値を計算し予め記憶されたチェッカの値と比較して各記憶領域毎にデータ検査を行っている。
【０００４】
ところで、フラッシュメモリに自身のファームウェアを記憶するデータ処理装置では、前記メモリのファームウェアを例えばＬＡＮ（Local Area Network）やインターネットを介して外部から受信した書換データに書換えることにより、ファームウェアをアップデートしている。また、この書換データには前記チェッカが埋め込まれており、データ処理装置は、書換データを受信した後にこのチェッカを用いてデータ検査を行うことにより書換えが正常に行われたか否かを判断している。
【特許文献１】特開２００２−３３４０２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、外部から受信した書換データに埋め込まれているチェッカは、書換データ全体に対して算出されたものであるため、例えば、特許文献１のデータ処理装置のようにファームウェアを複数の記憶領域に分割して記憶し、その一部の書換えを行うことを考えた場合、チェックサムによるデータ検査を行うことができない。そのため、各記憶領域に対応する書換データ毎にチェッカを埋め込むことが考えられるが、例えば複数の記憶領域のデータを書換えるための１つの書換データに複数の記憶領域に対応するそれぞれの記憶領域のチェッカが埋め込まれている場合、各記憶領域のチェッカがどの位置に記憶されているかを容易に特定することができないという問題点がある。
【０００６】
本発明は、かかる課題に鑑みてなされたものであり、外部から受信した書換データによって自身のファームウェアの全体又は一部をアップデートするデータ処理装置において、受信した書換データに埋め込まれている誤り検出データの位置を容易に特定してデータ検査を行うことができるデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、請求項１記載のデータ処理装置は、ファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶する記憶手段と、ファームウェアの書換データを外部から受信する受信手段と、該受信手段が受信した書換データに対応する前記記憶領域を当該書換データに書換える書換手段と、該書換手段により書換えた記憶領域のサイズ及び１個の誤り検出データで表すことができる領域サイズから誤り検出データの個数を算出し、算出した誤り検出データの個数、１個の誤り検出データのデータサイズ及び書換えた記憶領域のサイズから誤り検出データの位置を特定するとともに特定した誤り検出データの値を前記書換えた記憶領域から読み出す読出手段と、値を読み出した前記誤り検出データを除く前記書換えた記憶領域のデータに対して所定の誤り検出データ作成手順に基づく演算処理を行い、算出した値と前記読出手段が読み出した誤り検出データの値とを比較して前記書換手段による書換データの書換えが正常に行われたか否かを検査する検査手段と、を備えることを特徴としている。
【０００８】
請求項２記載のデータ処理装置は、請求項１に記載のデータ処理装置において、前記検査手段は、前記読出手段が前記書換えた記憶領域から複数の誤り検出データの値を読み出した場合に、前記書換データに書換えた記憶領域を前記複数の誤り検出データの個数と等しい数の部分領域に分割し、値を読み出した誤り検出データを除く各部分領域のデータに対して所定の誤り検出データ作成手順に基づく演算処理を行い、それぞれ算出した値と前記読出手段が読み出した誤り検出データの値とを比較して前記書換手段による書換データの書換えが正常に行われたか否かを検査することを特徴としている。
【発明の効果】
【０００９】
請求項１に記載のデータ処理装置によれば、外部から受信した書換データにより自身のファームウェアの一部の書換えを行う場合でも、書換えた記憶領域のデータに埋め込まれている誤り検出データの位置を容易に特定して該誤り検出データの値を読み出し、その値と所定の誤り検出データ作成手順に基づく演算処理を行った値とを比較してファームウェアの書換えが正常に行われたか否かを容易に判断することができる。
【００１０】
請求項２に記載のデータ処理装置では、書換データから複数の誤り検出データの値を読み出した場合に、書換データに書換えた記憶領域を前記複数の誤り検出データの個数と等しい数の部分領域に分割し、値を読み出した誤り検出データを除く各部分領域の書換データに対して所定の誤り検出データ作成手順に基づく演算処理を行い、それぞれ算出した値と読み出した誤り検出データの値とを比較して書換えが正常に行われたか否かを判断する。したがって、書換えが正常に行われなかった場合に、書換エラーが生じた部分領域を容易に特定することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態に係るデータ処理装置を、外部から受信したＰＤＬ（Page Description Language）データに所定のデータ処理を行って複合機に転送するデータ処理装置に適用した場合について図面に基づき説明する。図１に例示するように、このデータ処理装置１は、ＬＡＮ２上のクライアントＰＣ（Personal Computer）３から送信されたＰＤＬデータを受信するネットワーク インターフェース コントローラ４とともに、コピー機能、ＰＣスキャナ機能、ＰＣプリント機能等を備える複合機５に組込まれており、ネットワーク インターフェース コントローラ４及び複合機５と通信可能に接続されている。
【００１２】
クライアントＰＣ３は、一般的な機能を備えたＰＣであり、ユーザが作成した文書等のデータをＰＤＬデータに変換してＬＡＮ２を介して複合機５のネットワーク インターフェース コントローラ４に送信する。なお、ここで使用されるページ記述言語（ＰＤＬ）は特に限定されるものではないが、例えばＰＣＬなどを用いることができる。また、後述するが、データ処理装置１が自装置１のファームウェアをアップデートするための書換データもこのクライアントＰＣ３から送信される。
【００１３】
ネットワーク インターフェース コントローラ４は、複合機５がＬＡＮ２上のクライアントＰＣ３との間で各種データを送受信する際に、そのデータの送受信を制御するものである。具体的には、クライアントＰＣ３から受信したＰＤＬデータや書換データをデータ処理装置１に転送し、複合機５で読取られた原稿の画像データ等をＬＡＮ２上のクライアントＰＣ３に送信する。
【００１４】
一方、ネットワーク インターフェース コントローラ４から転送されたＰＤＬデータに所定のデータ処理を行って複合機５に転送するデータ処理装置１は、図示するように、制御部（ＭＰＵ：Microprocessing Unit）６、インターフェース回路７、Ｆｌａｓｈ ＲＯＭ（Read Only Memory）８、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）９、及びデータ処理回路１０を備えたものであって、各部６乃至１０は、バス１１によって通信可能に接続されている。
【００１５】
制御部６は、Ｆｌａｓｈ ＲＯＭ８に記憶されているファームウェアの各種プログラムに従って、このデータ処理装置１を構成する各部を制御する。インターフェース回路７は、ネットワーク インターフェース コントローラ４から転送されたＰＤＬデータや書換データを受信するものであり、ファームウェアの書換データを外部から受信する受信手段として機能する。また、インターフェース回路７が受信したＰＤＬデータは、データ処理回路１０において所定のデータ処理が施された後に複合機５に転送される。
【００１６】
Ｆｌａｓｈ ＲＯＭ８は、制御部６によってデータ処理装置１の各部が制御されるためのファームウェアを記憶するフラッシュメモリであり、図２に示すようにブート領域１３、カーネル領域１４、一般プログラム領域１５、及びフォント領域１６の４つの記憶領域に論理的に分割されている。ＳＤＲＡＭ９は、制御部６の主メモリ、ワークエリア等として機能し、プログラム領域１７及びデータ領域１８の２つの記憶領域に論理的に分割されている。
【００１７】
Ｆｌａｓｈ ＲＯＭ８のブート領域１３は、システム起動時に実行される基本プログラムを記憶している記憶領域である。カーネル領域１４は、ジョブ管理、データ管理、タスク管理等を行うための制御プログラムを記憶している記憶領域であり、例えば受信した書換データによりＦｌａｓｈ ＲＯＭ８のファームウェアをアップデートするための書換コードや、ファームウェアをアップデートした後に書換えが正常に行われたか否かを検査するためのデータチェックコード等を記憶している。一般プログラム領域１５は、データ処理装置１が各種処理動作を行うための一般プログラムを記憶している記憶領域であり、例えば、インターフェース回路７が受信したＰＤＬデータに所定のデータ処理を行うためのデータ処理プログラム等を記憶している。フォント領域１６は、フォントデータを記憶している記憶領域である。したがって、Ｆｌａｓｈ ＲＯＭ８は、ファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶する記憶手段として機能する。
【００１８】
また、これらの各記憶領域１３乃至１６のサイズは、それぞれ常に一定の値となるように設定されており、ここではブート領域１３が８ｋＢ（キロバイト）、カーネル領域１４が２４８ｋＢ、一般プログラム領域１５が２８１６ｋＢ、フォント領域１６が５１２０ｋＢに設定されている。このように、データ処理装置１のファームウェアは、データの種類別に分割されて異なるサイズの記憶領域１３乃至１６にそれぞれ記憶されているが、これらの各記憶領域の全体にプログラムやフォントデータが記憶されているわけではなく、プログラムやフォントデータに適当なデータサイズの空きデータ、すなわち１６進数で「００」又は「ＦＦ」の値を持つ空きデータが付加されたデータがそれぞれ対応する記憶領域に記憶されている。例えば、２８１６ｋＢの一般プログラム領域１５の場合、実際に使用する一般プログラム全体のデータサイズが２６００ｋＢであれば、これに２１６ｋＢの空きデータが付加された一般プログラム領域１５のサイズと等しい２８１６ｋＢのデータが該一般プログラム領域１５に記憶されている。なお、これらの各記憶領域に記憶されているデータは、各記憶領域毎に個別に外部から受信した書換データに書換えることが可能であり、例えばカーネル領域１４のデータのみを書換データに書換えたり、一般プログラム領域１５とフォント領域１６のデータを書換えたりすることが可能である。
【００１９】
一方、ＳＤＲＡＭ９のプログラム領域１７は、制御部６によってＦｌａｓｈ ＲＯＭ８から読み出された各種データを一時的に格納する領域である。制御部６は、システム起動時にブート領域１３の基本プログラムに基づいて、まずカーネル領域１４から制御プログラムを読み出してプログラム領域１７に格納する。続いて、一般プログラム領域１５から一般プログラムを、フォント領域１６からフォントデータをそれぞれ読み出してプログラム領域１７に格納する。制御部６は、このようにしてＦｌａｓｈ ＲＯＭ８の各記憶領域のデータをＳＤＲＡＭ９のプログラム領域１７にロードし、ロードしたプログラムを必要に応じて実行することにより、例えば外部から受信したＰＤＬデータに所定のデータ処理を行って複合機５に転送したり、外部から受信した書換データにより自身のファームウェアをアップデートすることができる。データ領域１８は、各種データを一時的に格納する領域であり、ネットワーク インターフェース コントローラ４によって転送されたＰＤＬデータや書換データ、複合機５から受信した画像データ等を一時的に格納する。
【００２０】
データ処理回路１０は、インターフェース回路７が受信したＰＤＬデータに所定のデータ処理を施すものであり、具体的にはインターフェース回路７が受信したＰＤＬデータを解析して複合機５で処理可能な画像データに展開した後、その画像データをＭＭＲ（Modified Modified Read）方式で符号化（エンコード）する。このようにしてデータ処理回路１０において所定のデータ処理が施された画像データは、インターフェース回路７によって複合機５へと転送される。なお、ここで使用する符号化方式は、複合機５において復号が可能な方式であればＭＭＲ方式に限定されるものではなく、例えば、ＭＨ（Modified Huffman）、ＭＲ（Modified Read）、ＪＢＩＧ（Joint Bi-level Image Group）方式等の他の符号化方式を使用してもよい。また、ここでは、画像データの転送速度等を考慮して展開した画像データをＭＭＲ方式で符号化して転送しているが、展開した画像データを符号化することなくそのまま複合機５に転送するようにしてもよい。
【００２１】
一方、データ処理装置１から転送された画像データの印刷処理を行う複合機５は、制御部（ＭＰＵ）２１、ＲＯＭ（Read Only Memory）２２、ＲＡＭ（Random Access Memory）２３、原稿読取部２４、コーデック（ＣＯＤＥＣ：Coder and Decoder）２５、画像メモリ２６、記録部２７、操作部２８、及び表示部２９を備えたものであって、各部２１乃至２９は、バス３０によって通信可能に接続されている。
【００２２】
制御部２１は、ＲＯＭ２２に記憶されているプログラムに従って、この複合機５を構成する各部を制御する。ＲＯＭ２２は、前記プログラムを記憶している。ＲＡＭ２３は、制御部２１の主メモリ、ワークエリア等として機能し、予め登録された各種設定情報等を記憶している。原稿読取部２４は、例えば、ＣＣＤ（Charge Coupled Device）等のイメージセンサによって原稿の画像データを読取る。
【００２３】
コーデック２５は、画像データの符号化及び復号（デコード）を行うものであり、原稿読取部２４で読取られた原稿の画像データをＭＨ、ＭＲ、ＭＭＲ、ＪＢＩＧ方式等により符号化し、符号化されている画像データを復号する。なお、データ処理装置１から転送された画像データは、このコーデック２５において復号される。画像メモリ２６は、コーデック２５によって符号化された原稿の画像データ、データ処理装置１から転送された画像データ等を格納する。
【００２４】
記録部２７は、原稿読取部２４において読取られた原稿の画像データ、データ処理装置１から転送された画像データ等の画像を用紙に記録するものであり、この記録部２７における記録方式としては、例えば、電子写真方式を用いることができる。データ処理装置１から転送された画像データは、画像メモリ２６に一旦格納された後、コーデック２５によって復号され、この記録部２７においてその画像が用紙に記録される。
【００２５】
操作部２８は、図示しないが原稿読取部２４に原稿の読取開始を指示するためのスタートキー、コピー部数等を入力するためのテンキー、各種設定を行うためのカーソルキーなど、表示部２９と連動した各種操作キーを備えている。表示部２９は、各種の設定状態や複合機５の動作状態などを文字や図形などで表示する液晶表示装置（ＬＣＤ：Liquid Crystal Display）や、点灯又は消灯で表示するＬＥＤランプなどを備えている。
【００２６】
以上説明したように構成されたデータ処理装置１、ネットワーク インターフェース コントローラ４、及び複合機５において、ＬＡＮ２上のクライアントＰＣ３からＰＤＬデータが送信されると、該ＰＤＬデータはネットワーク インターフェース コントローラ４によってデータ処理装置１に転送される。そして、そのＰＤＬデータは、データ処理装置１において展開されて所定の符号化方式で符号化された後、複合機５へと転送されて該複合機５にてその画像が用紙に記録される。また、クライアントＰＣ３は、複合機５において印刷すべきＰＤＬデータの他に、データ処理装置１が自身のファームウェアの全体又は一部をアップデートするための書換データをデータ処理装置１に対して送信する。
【００２７】
データ処理装置１は、Ｆｌａｓｈ ＲＯＭ９の各記憶領域１３乃至１６に記憶されているファームウェアの全体、すなわち、記憶領域１３乃至１６のデータの全てをアップデートすることは当然可能であるが、一部の記憶領域のデータのみをアップデートすることも可能である。したがって、Ｆｌａｓｈ ＲＯＭ８の記憶領域１３乃至１６のうち、書換えが必要な記憶領域に対応する書換データのみがクライアントＰＣ３から送信されるようになっている。
【００２８】
以下、Ｆｌａｓｈ ＲＯＭ８のカーネル領域１４のデータのみをアップデートするための書換データ（以下、「Ｋ領域用書換データ」という。）を例としてクライアントＰＣ３から送信される書換データについて、図３に基づいて説明する。このＫ領域用書換データは、図示するようにカーネル領域１４に記憶されているデータと同様に、新たに作成された制御プログラムのデータに適当なデータサイズの空きデータとから構成されており、そのデータサイズはカーネル領域１４のサイズと等しい２４８ｋＢである。このように、カーネル領域１４の制御プログラムに変更を加えた新たな制御プログラムに適当なサイズの空きデータを付加することにより、制御プログラムデータのデータサイズが変動したとしても、常にカーネル領域１４のサイズと同じデータサイズのＫ領域用書換データをデータ処理装置１に送信することができる。
【００２９】
このようにして作成されたＫ領域用書換データがデータ処理装置１に送信された場合、データ処理装置１は、Ｋ領域用書換データを受信した後、一旦ＳＤＲＡＭ９のデータ領域１８に格納する。そして、カーネル領域１４のデータをデータ領域１８に格納したＫ領域用書換データに書換えるが、本発明の実施の形態においては、書換えが終了した際に書換えが正常に行われたか否かを判断するために、所定の誤り検出データ作成手順に基づく演算処理を行ってデータ検査を行う。具体的には、データ処理装置１の制御部６は、チェックサム（Check Sum）によるデータ検査を行う。そのため、クライアントＰＣ３から送信される書換データには、書換データを構成する各データを数値として加算し、その総和の値から一定の計算をして求めた誤り検出データ（以下、「チェッカ」という。）が埋め込まれている。
【００３０】
この書換データに埋め込まれる１個のチェッカで表すことのできる領域サイズをＮとすると、領域サイズＮは任意に設定することができるが、領域サイズＮを無限大に設定した場合、いかなるデータサイズの書換データであっても埋め込まれるチェッカの個数は１個である。しかし、データ処理装置１においてチェックサムを行う場合に、書換データのどの部分において書換エラーが発生したかを特定できるようにするため、ここでは一例としてＮの値は１０２４ｋＢに設定されている。そして、書換データのデータサイズをＭとすると、書換データのデータサイズＭが領域サイズＮ以下である場合にはその書換データに１個のチェッカを埋め込み、データサイズＭが領域サイズＮを越える場合には領域サイズＮに基づいてその書換データを複数の部分領域に分割し、各部分領域毎にチェッカの値を算出し、書換データの後端に算出した複数のチェッカを埋め込む。
【００３１】
そこで、書換データにチェッカを埋め込む場合、まず予め設定されている領域サイズＮと送信すべき書換データのデータサイズＭから埋め込むチェッカの個数でもある部分領域数ｃを算出する。図３に示すように、書換データがＫ領域用書換データである場合には、書換データのデータサイズＭが２４８ｋＢであり、領域サイズＮの値である１０２４ｋＢ以下であるため、部分領域数ｃは「１」でありこの書換データには１個のチェッカが埋め込まれる。
【００３２】
次に、算出した部分領域数ｃに基づいて各部分領域のデータを加算してサム値を算出する。なお、ここでは、部分領域数ｃは１であるため、書換データを複数の部分領域に分割することなく２４８ｋＢのデータサイズの書換データを部分領域としてデータに対してサム値Ｓ１を算出する。具体的には、２４８ｋＢのＫ領域用書換データを構成する全データを数値として先頭部分から加算してその総和を算出する。このようにして全てのデータの総和からサム値Ｓ１を算出することができるが、ここでは１個のチェッカのデータサイズｂが２バイトであり、書換データの最後の２バイトにチェッカを埋め込むため、最後の２バイトに元々あった値ｖ１をサム値Ｓ１から差引く。そして、このようにして求めたＳ１−ｖ１を反転させた値−（Ｓ１−ｖ１）をチェッカの値として書換データの最後の２バイトに埋め込む。なお、ここでは、Ｋ領域用書換データの最後の２バイトに元々あった値ｖ１を−（Ｓ１−ｖ１）の値のチェッカに書換えているが、チェッカに書換える部分のｖ１の値は空きデータの値であるため、チェッカを埋め込んだとしても書換データの内容（ここでは、制御プログラム）が変化することはない。すなわち、書換データの内容に影響を与えることなくチェッカを埋め込むことができる。
【００３３】
以上説明したように、書換データのデータサイズＭが１個のチェッカで表すことのできる領域サイズＮ以下である場合には、書換データには１個のチェッカが埋め込まれる。一方、データサイズＭが領域サイズＮを越える場合には、書換データには複数のチェッカが埋め込まれる。例えば、図４に例示するように書換データがＰ領域用書換データである場合、そのデータサイズＭは２８１６ｋＢであり領域サイズＮの値である１０２４ｋＢを越えているため、ここでは、部分領域数ｃは３である。そして、算出した部分領域数ｃに対応する部分領域を図示する部分領域Ｘ、部分領域Ｙ、及び部分領域Ｚのように設定する。ここでは、複数の部分領域のうち、最初の部分領域である部分領域Ｘが端数を受持つように部分領域Ｘのデータサイズを７６８ｋＢに設定し、部分領域Ｙ及びＺのデータサイズを領域サイズＮと等しい１０２４ｋＢに設定する。
【００３４】
このようにして、部分領域Ｘ乃至Ｚを設定した後、まず部分領域Ｘについてサム値を算出するが、サム値を算出して各部分領域毎にチェッカを埋め込むと、各部分領域、ここでは部分領域Ｘ及びＹのデータの内容が変化してしまう。そこで、部分領域Ｘ乃至Ｚのチェッカは、空きデータが付加されている最後の部分領域Ｚの後端に埋め込む。具体的には、部分領域Ｘと部分領域Ｙについて、それぞれ算出した各領域のサム値をそのまま反転させてチェッカとして埋め込む。すなわち、図示するように、７６８ｋＢの部分領域Ｘの全データの総和であるサム値Ｓ２を算出し、これを反転させた−Ｓ２の値を部分領域Ｘのチェッカとして部分領域Ｚにおけるチェッカ領域の先頭に埋め込む。ここで、チェッカ領域の先頭は、１個のチェッカのデータサイズｂと、書換データのデータサイズＭと、部分領域数（チェッカの個数）ｃとに基づいて、Ｍ−ｃ×ｂの関係式から容易に算出することができる。
【００３５】
このようにして部分領域Ｘのチェッカを埋め込んだ後、部分領域Ｙについても同様にサム値Ｓ３を算出し、算出したサム値をそのまま反転させた値−Ｓ３を部分領域Ｙのチェッカとして部分領域Ｚにおける部分領域Ｘのチェッカの次の２バイトに埋め込む。そして、最後の部分領域である部分領域Ｚのサム値Ｓ４から求めたチェッカを部分領域Ｚの最後の２バイトに埋め込むが、この部分領域Ｚには、前記部分領域Ｘ及びＹのチェッカと部分領域Ｚのチェッカの３個のチェッカを埋め込むためのチェッカ領域が存在するため、部分領域Ｚの全データの総和であるサム値Ｓ４からチェッカ領域に元々存在したデータ、すなわち、書換データの最後の６バイト分のデータの総和であるｖ２を部分領域を設定した段階で算出しておき、サム値Ｓ４から差引く。そして、これを反転させた値−（Ｓ４−ｖ２）を部分領域Ｚのチェッカとして部分領域Ｚの最後の２バイトに埋め込む。
【００３６】
以上説明したように、実データに適当なデータサイズの空きデータが付加された書換データに、該書換データのデータサイズＭに基づいて１又は複数のチェッカが埋め込まれるが、ブート領域１３のデータを書換えるためのＢ領域用書換データ及びフォント領域１６のデータを書換えるためのＦ領域用書換データについても同様に書換データを作成してチェッカを埋め込むことができる。そして、このようにチェッカが埋め込まれた後、書換えが必要な記憶領域の書換データのみがクライアントＰＣ３から送信される。例えば、一般プログラム領域１５のデータのみ書換えが必要な場合には、Ｐ領域用書換データのみからなる２８１６ｋＢの書換データが送信され、カーネル領域１４と一般プログラム領域１５のデータについて書換えが必要な場合には、Ｋ領域用書換データとＰ領域用書換データとからなる３０６４ｋＢの書換データがクライアントＰＣ３から送信される。
【００３７】
以下、クライアントＰＣ３から送信された書換データを受信した場合に、データ処理装置１において行われるファームウェアのアップデート処理について、図５に示すフローチャートに基づいて説明する。なお、以下のフローチャートに基づいて説明するデータ処理装置１の処理動作は、Ｆｌａｓｈ ＲＯＭ８のカーネル領域１４に記憶されている制御プログラムに基づいて制御部６が発行する制御命令に従って行われる。
【００３８】
データ処理装置１の制御部６は、システム起動時にブート領域１３の基本プログラムに従って、カーネル領域１４の制御プログラム、一般プログラム領域１５の一般プログラム、フォント領域１６のフォントデータを読み出してＳＤＲＡＭ９のプログラム領域に格納する。このようにして、各種処理動作を実行可能な状態で、データ処理装置１の制御部６は、インターフェース回路７が書換データを受信したか否かを判断する（Ｓ１）。
【００３９】
ここで、データ処理装置１が受信する書換データのデータサイズは、Ｆｌａｓｈ ＲＯＭ８のカーネル領域１４に記憶されている書換コードによって図６に示すように予め設定されている。したがって、制御部６は、受信したデータのデータサイズが図示するデータサイズのいずれかであるか否かによって、受信したデータが書換データであるか否かを判断することができる。このようにして、制御部６は、外部から書換データを受信したと判断した場合（Ｓ１：ＹＥＳ）、受信した書換データをＳＤＲＡＭ９のデータ領域１８に一旦格納して書換データに書換えるべき記憶領域を決定する（Ｓ２）。例えば、図６に示すように、受信した書換データのデータサイズが２４８ｋＢであれば、書換データはカーネル領域１４のデータを書換えるためのＫ領域用書換データであると判断して書換データに書換えるべき記憶領域をカーネル領域１４に決定することができる。また、他の例として、受信した書換データのデータサイズが７９３６ｋＢであれば、書換データは一般プログラム領域１５のデータを書換えるためのＰ領域用書換データとフォント領域１６のデータを書換えるためのＦ領域用書換データであると判断して書換データに書換えるべき記憶領域を一般プログラム領域１５とフォント領域１６に決定することができる。
【００４０】
なお、ここでは、受信した書換データのデータサイズに基づいて書換データに書換えるべき記憶領域を決定しているが、クライアントＰＣ３から書換データとともに該書換データに書換えるべきＦｌａｓｈ ＲＯＭ８の記憶領域に関する情報を送信し、データ処理装置１では、その情報に基づいて書換データに書換えるべき記憶領域を決定することも当然可能である。
【００４１】
続いて、制御部６は、Ｓ２において書換データに書換えるべき記憶領域を決定した後、決定した記憶領域を受信した書換データに書換える（Ｓ３）。例えば、８１８４ｋＢの書換データを受信した場合、すなわち、Ｋ領域用書換データとＰ領域用書換データとＦ領域用書換データとからなる書換データを受信した場合、一般プログラム領域１５のデータをＰ領域用書換データに書換え、フォント領域１６のデータをＦ領域用書換データに書換え、カーネル領域１４のデータをＫ領域用書換データに書換える。したがって、制御部６は、インターフェース回路７が受信した書換データに対応する記憶領域を当該書換データに書換える書換手段として機能する。
【００４２】
なお、ここでデータ処理装置１が受信した書換データの中にＫ領域用書換データが含まれている場合、つまりカーネル領域１４の制御プログラムの書換えを行う場合には、Ｓ３の処理動作を行う前に予めカーネル領域１４の制御プログラムを他の記憶場所に複製する。具体的には、カーネル領域１４のデータをプログラム領域１７内のフォントデータが格納されている領域に複製する。なお、この際、フォントデータは不完全なものとなるが、書換処理が行われた場合には、システムが再起動するまで通常動作が行われることはないため問題が生じることはない。そして、制御部６は、書換処理が完了してシステムを再起動させた際にカーネル領域１４の制御プログラムが正常ではないと判断した場合、ＳＤＲＡＭ９のプログラム領域１７内のフォントデータが格納されている領域から前記制御プログラムを読み出し、プログラム領域１７において本来制御プログラムが格納されるべき領域に格納する。このようにして、制御プログラムをプログラム領域１７の所定の領域に格納した後、一般プログラム領域１５の一般プログラムとフォント領域１６のフォントデータをそれぞれ読み出し、プログラム領域１７に格納する。
【００４３】
このように、データ処理装置１が自身のファームウェアをアップデートするための書換コードを記憶しているカーネル領域１４のデータを予め他の記憶場所に複製しておくことにより、万一カーネル領域１４の書換中に停電等が発生してカーネル領域１４のデータが不完全なものになったとしても、システムを起動させることができなくなるといった問題が生じることもなく、再度外部から書換データを受信して不完全となったデータを正常なデータに書換えることが可能である。
【００４４】
制御部６は、Ｓ３の書換処理を行った後、その書換えが終了したか否かを判断し（Ｓ４）、書換えが終了していないと判断した場合には（Ｓ４：ＮＯ）、Ｓ３の処理動作を継続して行い、書換えが終了したと判断した場合には（Ｓ４：ＹＥＳ）、処理動作を完了する。制御部６は、上記の通りＦｌａｓｈ ＲＯＭ８のファームウェアの全体又は一部をアップデートした後、書換えが正常に行われたか否かを判断するために、ここでは所定の誤り検出データ作成手順に基づく演算処理としてチェックサムによるデータ検査を行う。以下、データ処理装置１のチェックサムの処理動作について、図７に示すフローチャートに基づいて説明する。
【００４５】
データ処理装置１の制御部６は、外部から受信した書換データによる自装置１のファームウェアの書換処理が終了した後、書換えた記憶領域のサイズＭ及び１個のチェッカで表すことができる領域サイズＮからチェックサムを行う対象領域の部分領域数ｃを算出し、部分領域を設定する（Ｓ６）。ここで、対象領域は、Ｆｌａｓｈ ＲＯＭ８の記憶領域１３乃至１６のうちの書換データに書換えた記憶領域であり、複数の記憶領域に対して書換えを行った場合には、まず、その複数の記憶領域のうちのいずれか１つの記憶領域を対象領域してＳ６の処理動作を行う。なお、対象領域のデータには、チェックサムを行う部分領域の数と等しい数のチェッカが埋め込まれている。つまり、このＳ６では書換えた記憶領域のサイズＭ及び１個のチェッカで表すことができる領域サイズＮからチェッカの個数ｃを算出している。また、書換えた記憶領域のサイズＭと該記憶領域のデータを書換えた書換データのデータサイズは等しいため、対象領域のデータを書換えた書換データのデータサイズについてもＭで表すことができる。
【００４６】
このＳ６において制御部６が行う処理動作は、図３及び図４に基づいて説明したチェッカの埋め込み時の処理と同様に行うことができる。例えば、図８に示すように対象領域が２８１６ｋＢの一般プログラム領域１５である場合には、対象領域のサイズ、すなわち一般プログラム領域１５を書換えたＰ領域用書換データのデータサイズＭが１個のチェッカで表すことができる領域サイズＮ（１０２４ｋＢ）を越えており、部分領域数ｃは３である。そして、図４と同様に一般プログラム領域１５を７６８ｋＢの部分領域Ｘ、１０２４ｋＢの部分領域Ｙ、１０２４ｋＢの部分領域Ｚの３つの部分領域を設定する。なお、ここでも複数の部分領域のうち、先頭の部分領域が端数を受持つように各部分領域のサイズが設定される。
【００４７】
続いて、制御部６は、チェッカ領域の先頭アドレスを算出し、チェッカの値を読み出す（Ｓ７）。このチェッカ領域の先頭アドレスＤは、対象領域の先頭アドレスをＡ、対象領域（書換えた記憶領域）のサイズＭ、チェッカの個数（部分領域数）ｃ、１個のチェッカのデータサイズｂに基づいて、Ｄ＝Ａ＋Ｍ−ｃ×ｂの関係式から容易に算出することができる。このように、制御部６は、Ｓ６において書換えた記憶領域のサイズＭと１個のチェッカで表すことができる領域サイズＮとに基づいてチェッカの個数ｃを算出する。そして、この関係式からチェッカ領域の先頭アドレスを算出してチェッカの位置を特定し、その先頭アドレス以降のデータをチェッカの値として読み出す。したがって、制御部６は、書換えた記憶領域のサイズＭ及び１個のチェッカで表すことができる領域サイズＮからチェッカの個数ｃを算出し、算出したチェッカの個数ｃ、１個のチェッカのデータサイズｂ及び書換えた記憶領域のサイズＭからチェッカの位置を特定するとともに特定したチェッカの値を前記書換えた記憶領域から読み出す読出手段として機能する。ここで、図８に示す一般プログラム領域１５の場合には、部分領域Ｘのチェッカと部分領域Ｙのチェッカと部分領域Ｚのチェッカの３つのチェッカの値を読み出すことができる。なお、１個のチェッカで表すことができる領域サイズＮと１個のチェッカのデータサイズｂは、ここでは領域サイズＮが１０２４ｋＢ、データサイズｂが２バイトにカーネル領域１４のデータチェックコードによって予め設定されているが、書換データにチェッカを埋め込む際の領域サイズとデータサイズに等しい値がそれぞれ設定されている。
【００４８】
次に、制御部６は、部分領域の先頭アドレスとサイズに基づいてサム値を計算する（Ｓ８）。例えば、一般プログラム領域１５のように、３つの部分領域が設定されている場合、まず、部分領域Ｘの先頭アドレス、すなわち、対象領域の先頭アドレスＡから７６８ｋＢの部分領域Ｘの全データを数値として加算してサム値を計算する。そして、計算したサム値とチェッカの値の和がゼロになるか否かを判断する（Ｓ９）。したがって、制御部６は、値を読み出したチェッカを除く書換えた記憶領域のデータに対して所定の誤り検出データ作成手順に基づく演算処理（ここでは、チェックサム方式による演算処理）を行い、算出した値と読み出したチェッカの値とを比較して書換データの書換えが正常に行われたか否かを検査する検査手段として機能する。例えば、部分領域Ｘの場合、部分領域Ｘについて算出したサム値とＳ７で読み出した部分領域Ｘのチェッカの値を足し合せてゼロになるか否かを判断する。ここで、足し合せた値がゼロになると判断した場合（Ｓ９：ＹＥＳ）、すなわち、Ｓ８においてサム値を計算した部分領域のデータにビット誤りがなかったと判断した場合、全ての部分領域のチェックサムが完了したか否かを判断する（Ｓ１０）。ここで、全ての部分領域のチェックサムが完了していないと判断した場合には（Ｓ１０：ＮＯ）、チェックサムが完了していない他の部分領域についてＳ８以降の処理動作を行う。
【００４９】
すなわち、対象領域が一般プログラム領域１５である場合には、Ｓ８及びＳ９の処理動作を部分領域Ｙ、部分領域Ｚに対しても行う。具体的には、部分領域Ｘの先頭アドレスＡから部分領域Ｘのデータサイズ（７６８ｋＢ）を足し合せた位置にある部分領域Ｙの先頭アドレスから部分領域Ｙのデータサイズである１０２４ｋＢのデータについてサム値を計算する。そして、計算したサム値とＳ７で読み出した部分領域Ｙのチェッカの値とを足し合せてＳ９の判断処理を行う。そして、足し合せた値がゼロになると判断した場合には、部分領域Ｙの先頭アドレスから部分領域Ｙのデータサイズ（１０２４ｋＢ）を足し合せた位置にある部分領域Ｚの先頭アドレスから部分領域Ｘ乃至Ｚのチェッカを除いたデータを足し合せてサム値を計算し、Ｓ７で読み出した部分領域Ｚのチェッカの値と足し合せてＳ９の判断処理を行う。このように、制御部６は、書換えた記憶領域から複数のチェッカの値を読み出した場合に、書換データに書換えた記憶領域を複数のチェッカの個数と等しい数の部分領域に分割し、値を読み出したチェッカを除く各部分領域のデータに対してチェックサム方式による演算処理を行い、それぞれ算出した値と読み出したチェッカの値とを比較して書換データの書換えが正常に行われたか否かを検査する。
【００５０】
制御部６は、このようにして対象領域について設定した全ての部分領域のチェックサムが完了したと判断した場合（Ｓ１０：ＹＥＳ）、チェックサムを行うべき他の対象領域があるか否かを判断する（Ｓ１１）。ここで、チェックサムを行うべき他の対処領域があると判断した場合（Ｓ１１：ＹＥＳ）、例えば、カーネル領域１４及び一般プログラム領域１５のように複数の対象領域について書換えを行った場合には、チェックサムを行っていない他の対象領域についてＳ６以降の処理動作を行う。そして、チェックサムを行うべき他の対象領域はないと判断した場合には（Ｓ１１：ＮＯ）、書換えが正常に行われた旨の情報を複合機５に送信する（Ｓ１２）。これに対し、複合機５の制御部２１は、例えば「書換えが正常に終了しました」等のメッセージを表示部２９の液晶表示装置に表示させるなどして、その旨を報知する。
【００５１】
一方、制御部６は、Ｓ９において計算したサム値とチェッカの値の和がゼロではないと判断した場合（Ｓ９：ＮＯ）、すなわち、Ｓ８の処理動作を行った部分領域のデータにビット誤りがあると判断した場合、書換えが正常に行われなかった旨の情報と誤りを検出した部分領域の情報を複合機５に送信する（Ｓ１３）。これに対し、複合機５の制御部２１は、例えば「一般プログラム領域の部分領域Ｙのデータに誤りが検出されました」等のメッセージを表示部２９の液晶表示装置に表示させて書換えが正常に行われなかったこと及び誤りを検出した場所を報知する。なお、Ｓ１２又はＳ１３において、ここでは複合機５に情報を送信しているが、これらのいずれかの情報を書換データの送信元であるクライアントＰＣ３に対して送信し、該クライアントＰＣ３のモニタに上記のメッセージ等が表示されるようにしてもよい。
【００５２】
以上説明したように、データ処理装置１によれば、データの種類毎に複数の記憶領域に分割して記憶している自身のファームウェアを記憶領域毎に個別に書換えを行うことができ、また、外部から受信した書換データのデータサイズに基づいて書換データに埋め込まれているチェッカの位置を容易に特定して書換えを行ったＦｌａｓｈ ＲＯＭ８のデータについてデータ検査を行うことができる。
【００５３】
なお、本発明の実施の形態においては、Ｓ９において計算したサム値とチェッカの値の和がゼロではないと判断した場合に直ちにＳ１３の処理動作を行っているが、計算したサム値とチェッカの値の和がゼロでないと判断した部分領域を含む対象領域について、ＳＤＲＡＭ９のデータ領域１８に格納されている書換データの再書換えを行い、再度Ｓ６以降の処理動作を行うようにしてもよい。また、本発明の実施の形態においては、Ｆｌａｓｈ ＲＯＭ８のファームウェアをアップデートした後にデータ検査を行う場合について説明したが、Ｆｌａｓｈ ＲＯＭ８からＳＤＲＡＭ９のプログラム領域１７にファームウェアをロードした際に、各記憶領域のデータが正しくロードされたか否かを判断するために、プログラム領域１７に格納されたデータについて同様にデータ検査を行うことも可能である。
【００５４】
また、本発明の実施の形態に係るデータ処理装置１では、所定の誤り検出データ作成手順に基づく演算処理として、上記の通りチェックサム方式による演算処理を行ってデータ検査を行っているが、書換データによる自身のファームウェアのアップデートが正常に行われたか否かを判断することができれば、他の演算処理によるデータ検査を行ってもよい。例えば、制御部６は、チェックサム方式による演算処理の代わりに、巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）方式による演算処理を行う。すなわち、ＣＲＣ方式の場合には、書換データのデータを生成多項式という計算式で処理して作成したチェッカ（誤り検出データ）を書換データに埋め込んでクライアントＰＣ３からデータ処理装置１に送信する。そして、データ処理装置１では、受信した書換データを同じ生成多項式で処理して書換データに埋め込まれているチェッカの値とを比較してビット誤りの有無を判断する。この場合、図７に示すフローチャートに基づいて説明したデータ処理装置１の処理動作において、Ｓ８ではＣＲＣ方式による演算処理を行い、本実施形態のチェックサム方式による演算処理の場合と同様にＳ９以降の処理動作を行う。
【００５５】
なお、データ処理装置１が書換データを受信する方法は、ＬＡＮ２を介してクライアントＰＣ３から受信する方法に限定されるものではない。例えば、クライアントＰＣ３からＵＳＢ（Universal Serial Bus）を介して独自プロトコルにて書換データを受信したり、複合機５をファクシミリ通信機能を備えた複合機にして、該複合機がファクシミリ通信の手順に従ってサービスセンター等の外部のファクシミリ装置から書換データを受信してデータ処理装置１に転送するようにしてもよい。また、ＬＡＮ２上にインターネットに接続するためのルータ等を設置し、ＨＴＴＰ（Hypertext Transfer Protocol）、ＰＯＰ（Post Office Protocol）、ＳＭＴＰ（Simple Mail Transfer Protocol）等のプロトコルに基づいてインターネットを介して書換データを受信するようにしてもよい。
【００５６】
また、本発明の実施の形態においては、本発明をＰＤＬデータに所定の処理を施して複合機５に転送するデータ処理装置１に適用した場合について説明したが、フラッシュメモリ等の書換え可能なメモリに自身のファームウェアを記憶しており、外部からその書換データを受信してファームウェアをアップデートする装置であれば、本発明を適用可能な装置はデータ処理装置１に限定されるものではない。例えば、複合機５のＲＯＭ２２を書換え可能なメモリとし、データ処理装置１にクライアントＰＣ３から送信された書換データを自装置５に転送させてＲＡＭ２３に一旦格納紙した後、ＲＯＭ２２の対応する記憶領域に書換データをアップデートしてデータ検査を行うようにしてもよい。また、その他ファクシミリ装置、コピー機、スキャナ等に適用可能である。
【産業上の利用可能性】
【００５７】
本発明は、外部から受信した書換データによって自身のファームウェアをアップデートする各種データ処理装置に適用可能である。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施の形態に係るデータ処理装置の構成例を示したブロック図である。
【図２】Ｆｌａｓｈ ＲＯＭとＳＤＲＡＭの記憶領域について説明するための概念図である。
【図３】カーネル領域のデータを書換えるためのＫ領域用書換データについて説明するための図である。
【図４】一般プログラム領域のデータを書換えるためのＰ領域用書換データについて説明するための図である。
【図５】外部から書換データを受信した場合に、データ処理装置において行われる処理動作を示したフローチャートである。
【図６】書換データのデータサイズと書換データによって書換えるべき記憶領域との関係を示した図である。
【図７】外部から受信した書換データによって自身のファームウェアをアップデートした後に、データ処理装置において行われる処理動作を示したフローチャートである。
【図８】一般プログラム領域のデータに対して行われるチェックサムについて説明するための図である。
【符号の説明】
【００５９】
１    データ処理装置
６    制御部（ＭＰＵ）
７    インターフェース回路
８    Ｆｌａｓｈ ＲＯＭ
９    ＳＤＲＡＭ
１３    ブート領域
１４    カーネル領域
１５    一般プログラム領域
１６    フォント領域
１９    データ領域
ｂ    １個のチェッカのデータサイズ
ｃ    チェッカの個数（部分領域数）
Ｍ    書換えた記憶領域のサイズ
Ｎ    １個のチェッカで表すことができる領域サイズ
【図１】
2005275843.tif 000003
【図２】
2005275843.tif 000004
【図３】
2005275843.tif 000005
【図４】
2005275843.tif 000006
【図５】
2005275843.tif 000007
【図６】
2005275843.tif 000008
【図７】
2005275843.tif 000009
【図８】
2005275843.tif 000010