以下、本発明の実施の形態に係るデータ処理装置を、外部から受信したPDL(Page Description Language)データに所定のデータ処理を行って複合機に転送するデータ処理装置に適用した場合について図面に基づいて説明する。図1に示すように、このデータ処理装置1は、LAN(Local Area Network)2上のクライアントPC(Personal Computer)3から送信されたPDLデータを受信するネットワーク インターフェース コントローラ4とともに、コピー機能、PCスキャナ機能、PCプリント機能等を備える複合機5に組込まれており、ネットワーク インターフェース コントローラ4及び複合機5と通信可能に接続されている。
クライアントPC3は、一般的な機能を備えたPCであり、ユーザが作成した文書等のデータをPDLデータに変換してLAN2を介して複合機5のネットワーク インターフェース コントローラ4に送信する。なお、ここで使用されるページ記述言語(PDL)は特に限定されるものではないが、例えばPCLなどを用いることができる。また、後述するが、データ処理装置1が自装置1のファームウェアをアップデートするための書換データもこのクライアントPC3から送信される。
ネットワーク インターフェース コントローラ4は、複合機5がLAN2上のクライアントPC3との間で各種データを送受信する際に、そのデータの送受信を制御するものである。具体的には、クライアントPC3から受信したPDLデータをデータ処理装置1に転送し、複合機5で読取られた原稿の画像データ等をLAN2上のクライアントPC3に送信する処理などを行う。
一方、ネットワーク インターフェース コントローラ4から転送されたPDLデータに所定のデータ処理を行って複合機5に転送するデータ処理装置1は、図示するように、制御部(MPU:Microprocessing Unit)6、インターフェース回路7、Flash ROM(Read Only Memory)8、SDRAM(Synchronous Dynamic Random Access Memory)9、及びデータ処理回路10を備えたものであって、各部6乃至10は、バス11によって通信可能に接続されている。
制御部6は、Flash ROM8に記憶されているファームウェアの各種プログラムに従って、このデータ処理装置1を構成する各部を制御する。インターフェース回路7は、ネットワーク インターフェース コントローラ4から転送されたPDLデータや書換データを受信するものであり、ファームウェアの書換データを受信する受信手段として機能する。また、PDLデータは、データ処理回路10において所定のデータ処理が施された後、このインターフェース回路7によって複合機5に転送される。Flash ROM8は、制御部6によってデータ処理装置1の各部が制御されるためのファームウェアを記憶しているフラッシュメモリである。SDRAM9は、制御部6の主メモリ、ワークエリア等として機能し、受信したPDLデータや書換データ等を格納する。
データ処理回路10は、インターフェース回路7が受信したPDLデータに所定のデータ処理を施すものであり、具体的にはインターフェース回路7が受信したPDLデータを解析して複合機5で処理可能な画像データに展開した後、その画像データをMMR(Modified Modified Read)方式で符号化(エンコード)する。このようにしてデータ処理回路10において所定のデータ処理が施された画像データは、上記のようにインターフェース回路7によって複合機5へと転送される。なお、画像データを符号化する符号化方式はMMR方式に限定されるものではなく、例えば、MH(Modified Huffman)、MR(Modified Read)、JBIG(Joint Bi-level Image Group)方式等の他の符号化方式を使用してもよい。また、ここでは、画像データの転送速度等を考慮して展開した画像データをMMR方式で符号化して転送しているが、符号化処理を行うことなく展開した画像データをそのまま複合機5に転送することも当然可能である。
一方、データ処理装置1から転送された画像データの印刷処理を行う複合機5は、制御部(MPU)14、ROM(Read Only Memory)15、RAM(Random Access Memory)16、原稿読取部17、コーデック(CODEC:Coder and Decoder)18、画像メモリ19、記録部20、操作部21、及び表示部22を備えたものであって、各部14乃至22は、バス23によって通信可能に接続されている。
制御部14は、ROM15に記憶されているプログラムに従って、この複合機5を構成する各部を制御する。ROM15は、前記プログラムを記憶している。RAM16は、制御部14の主メモリ、ワークエリア等として機能し、予め登録された各種設定情報等を記憶している。原稿読取部17は、例えば、CCD(Charge Coupled Device)等のイメージセンサによって原稿の画像データを読取るものである。
コーデック18は、画像データの符号化及び復号(デコード)を行うものであり、原稿読取部17で読取られた原稿の画像データをMH、MR、MMR、JBIG方式等により符号化し、符号化されている画像データを復号する。なお、データ処理装置1から転送された画像データは、このコーデック18において復号される。画像メモリ19は、コーデック18によって符号化された原稿の画像データ、データ処理装置1から転送された画像データ等を格納する。
記録部20は、原稿読取部17において読み取られた原稿の画像データ、データ処理装置1から転送された画像データ等の画像を用紙に記録するものであり、この記録部20における記録方式としては、例えば、電子写真方式を用いることができる。データ処理装置1から転送された画像データは、画像メモリ19に一旦格納された後、コーデック18によって復号され、この記録部20においてその画像が用紙に記録される。
操作部21は、図示しないが原稿読取部17に原稿の読取開始を指示するためのスタートキー、コピー部数等を入力するためのテンキー、各種設定を行うためのカーソルキーなど、表示部22と連動した各種操作キーを備えている。表示部22は、各種の設定状態や複合機5の動作状態などを文字や図形などで表示する液晶表示装置(LCD:Liquid Crystal Display)や、点灯又は消灯で表示するLEDランプなどを備えている。
以上説明したように構成されたデータ処理装置1、ネットワーク インターフェース コントローラ4、及び複合機5において、LAN2上のクライアントPC3から送信されたPDLデータは、ネットワーク インターフェース コントローラ4によってデータ処理装置1に転送され、該データ処理装置1において展開されて所定の符号化方式で符号化された後、複合機5へと転送されて該複合機5にてその画像が用紙に記録されるようになっている。なお、クライアントPC3からは、複合機5において印刷すべきPDLデータの他に、データ処理装置1が自身のファームウェアをアップデートするための書換データがデータ処理装置1に対して送信される。
以下、データ処理装置1において、ファームウェアを記憶するFlash ROM8及びPDLデータや書換データを一時的に格納するSDRAM9について、図2に基づいて説明する。図示するように、Flash ROM8は、ブート領域25、カーネル領域26、一般プログラム領域27、及びフォント領域28の4つの記憶領域に論理的に分割されている。SDRAM9は、プログラム領域29、退避領域30、データ領域31の3つの記憶領域に論理的に分割されている。
Flash ROM8のブート領域25は、システム起動時に実行される基本プログラムを記憶している記憶領域である。カーネル領域26は、ジョブ管理、データ管理、タスク管理等を行うための制御プログラムを記憶している記憶領域である。なお、このカーネル領域26には、データ処理装置1がクライアントPC3から書換データを受信した場合に、Flash ROM8のファームウェアを前記書換データに書換えるための書換コードが特定の情報として記憶されている。一般プログラム領域27は、データ処理装置1が各種処理動作を行うための一般プログラムを記憶している記憶領域である。この一般プログラム領域27が記憶している一般プログラムは、例えば、インターフェース回路7が受信したPDLデータに所定のデータ処理を行うためのデータ処理プログラム等である。フォント領域28は、日本語や英語等のフォントデータを記憶している記憶領域である。すなわち、Flash ROM8は、自装置1のファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶する記憶手段として機能する。
一方、SDRAM9のプログラム領域29は、制御部6によってFlash ROM8のカーネル領域26から読み出された制御プログラム、一般プログラム領域27から読み出された一般プログラム、フォント領域28から読み出されたフォントデータ等を一時的に格納する領域であり、このプログラム領域29に格納された各種プログラムが制御部6によって実行される。退避領域30は、書換コードを記憶する記憶領域のデータ、すなわちFlash ROM8のカーネル領域26のデータの複製を格納する記憶場所である。データ領域31は、各種データを一時的に格納する領域であり、例えばネットワーク インターフェース コントローラ4によって転送されたPDLデータや書換データ、複合機5から受信した画像データ等を一時的に格納する。
図3は、上記のように構成されたデータ処理装置1において、システム起動時に行われる処理動作を示したフローチャートである。図示するように、制御部6は、例えば、複合機5の電源が投入されるなどして、データ処理装置1の各部に電力が供給されると、まずFlash ROM8のブート領域25の基本プログラムを実行し(S1)、カーネル領域26の制御プログラムが正常であるか否かを判断する(S2)。ここで、カーネル領域26の制御プログラムが正常であると判断した場合には(S2:YES)、カーネル領域26から制御プログラムを読み出してプログラム領域29に格納する(S3)。
なお、後述するが、カーネル領域26を含むFlash ROM8の各記憶領域のデータは、外部から受信した書換データそれぞれ書換えられるようになっている。このように、外部から受信した書換データに書換えている最中に書換エラーが発生して特定の情報である書換コードを記憶しているカーネル領域26のデータが破壊されると、システムの起動やファームウェアのアップデートを行うことができなくなる。本発明では、このような問題が生じるのを防止するために、書換えるべき記憶領域に特定の情報を記憶している記憶領域が含まれている場合に、その記憶領域のデータを他の記憶場所に複製する。具体的には、制御部6が書換コードを記憶しているカーネル領域26のデータをSDRAM9の退避領域30に複製する。したがって、制御部6は、カーネル領域26の制御プログラムが正常ではないと判断した場合(S2:NO)、すなわちファームウェアのアップデート中に書換エラー等によりカーネル領域26のデータが破壊された場合に、SDRAM9の退避領域30から制御プログラムを読み出してプログラム領域29に格納する(S4)。このようにして、制御部6は、通常のシステム起動時にはカーネル領域26から、カーネル領域26の書換エラー発生後のシステム起動時には退避領域30から、制御プログラムを読み出してプログラム領域29に格納して実行する。したがって、書換エラーが発生した場合でもシステムを正常に起動させることが可能である。なお、制御部6は、S3又はS4の処理動作によって制御プログラムをプログラム領域29にロードした後、一般プログラム領域27の一般プログラムとフォント領域28のフォントデータをそれぞれ読出し、プログラム領域29に格納する。
以下、データ処理装置1のFlash ROM8のファームウェアと、クライアントPC3からデータ処理装置1のファームウェアの書換データが送信される場合に、クライアントPC3から送信される書換データ及びデータ処理装置1における書換処理について以下に説明する。
Flash ROM8は、図2に例示するように自装置1のファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶している。ここでは、8kBのブート領域25、248kBのカーネル領域26、2816kBの一般プログラム領域27、及び5120kBのフォント領域28の4つの記憶領域に分割して記憶している。このように、データ処理装置1のファームウェアは、データの種類別に分割されて異なるサイズの記憶領域25乃至28にそれぞれ記憶されているが、これらの各記憶領域全てにプログラムやフォントデータが記憶されているわけではなく、プログラムやフォントデータに適当なデータサイズの空きデータ、例えば16進数で「00」又は「FF」の値を持つ空きデータが付加されたデータがそれぞれ対応する記憶領域に記憶されている。例えば、248kBのカーネル領域26に記憶すべき制御プログラム全体のデータサイズが230kBであれば、これに18kBの空きデータが付加されたカーネル領域26のサイズと等しい248kBのデータがカーネル領域26に記憶される。
これに対し、カーネル領域26に記憶されている制御プログラムをアップデートするための新たな制御プログラムを作成した場合、当然そのデータサイズは230kBとはならず、場合によっては230kBを上回るデータサイズの制御プログラムとなる。このような場合に、カーネル領域26のサイズを230kBと設定すると、新たな制御プログラムをカーネル領域26内のみに記憶することができず、一部を他の記憶領域に記憶させなければならないことになる。したがって、上記のように実際の制御プログラムに適当なデータサイズの空きデータを加えたデータを同サイズのカーネル領域26に記憶しておくことにより、既存の制御プログラムを新たな制御プログラムに書換える場合に、その新たな制御プログラムをカーネル領域26に適切に記憶させることができる。なお、ブート領域25と一般プログラム領域27とフォント領域28についても同様であり、実データに適当なデータサイズの空きデータが付加されたものがそれぞれ記憶されている。
そして、これら4つの記憶領域のデータの全て、すなわちデータ処理装置1のファームウェア全体を書換える場合には、図4の(a)に示すように、8kBのB(ブート)領域用書換データと、248kBのK(カーネル)領域用書換データと、2816kBのP(一般プログラム)領域用書換データと、5120kBのF(フォント)領域用書換データとからなる8192kBの書換データがクライアントPC3からデータ処理装置1に送信される。そして、データ処理装置1は、ブート領域25のデータをB領域用書換データに書換え、カーネル領域26のデータをK領域用書換データに書換え、一般プログラム領域27のデータをP領域用書換データに書換え、フォント領域28のデータをF領域用書換データに書換える。
ここで、カーネル領域26のデータを書換えるためのK領域用書換データを例として、各記憶領域25乃至28のデータを書換えるためにクライアントPC3から送信される書換データについて説明する。カーネル領域26の制御プログラムをアップデートするための新たな制御プログラムを作成した場合、その新たな制御プログラムは、カーネル領域26の既存の制御プログラムとはデータサイズが異なるものとなる。したがって、カーネル領域26に記憶されているデータと同様に、制御プログラム作成時に該制御プログラムに適当なデータサイズの空きデータを付加したK領域用書換データがクライアントPC3からデータ処理装置1に送信されるようになっている。したがって、本発明の実施の形態においては、カーネル領域26のデータを書換えるべきK領域用書換データのデータサイズは常に一定であり、ここでは248kBである。なお、他の書換データについても同様であり、B領域用書換データは8kB、P領域用書換データは2816kB、F領域用書換データは5120kBのデータサイズとなるように適当なデータサイズの空きデータが付加された書換データとなっている。したがって、クライアントPC3から送信される書換データがデータ処理装置1のFlash ROM8の記憶領域の全てのデータを書換えるべきものである場合には、上記のように常に8192kBの書換えデータがデータ処理装置1に送信される。また、これらの書換データの末尾には、データ処理装置1において書換えが正常に行われたか否かを判断するためのチェックサムが付加されている。また、K領域用書換データには、当然書換コードが含まれている。
このようにして、Flash ROM8のファームウェア全体を書換えるための書換データをクライアントPC3から送信することは当然可能であるが、例えばブート領域25の基本プログラムとフォント領域28のフォントデータを更新する必要のない場合に上記のように全記憶領域を書換えるための書換データを送信した場合、必要以上に送信処理に時間がかかる。また、データ処理装置1では、ブート領域25の基本プログラムとフォント領域28のフォントデータがそれぞれ同じ内容で上書きされることになり、無駄な処理が行われることになる。そのうえ、ブート領域25にはシステムを起動させるための重要な基本プログラムが記憶されており、無駄な書換処理が行なわれるのは好適でない。したがって、本発明では、Flash ROM8の記憶領域のうち、書換えが必要な記憶領域に対応する書換データのみがクライアントPC3から送信される。
例えば、カーネル領域26のデータと一般プログラム領域27のデータについてのみ書換えを行う場合には、図4の(b)に示すように、248kBのK領域用書換データと2816kBのP領域用書換データとからなる3064kBの書換データがクライアントPC3からデータ処理装置1に送信される。そして、データ処理装置1は、カーネル領域26の制御プログラムをK領域用書換データに書換え、一般プログラム領域27の一般プログラムをP領域用書換データに書換える。
なお、クライアントPC3からは、書換データの他は何らデータは送信されず、データ処理装置1は、何らかの方法で受信した書換データに書換えるべき記憶領域をFlash ROM8の4つの記憶領域の中から決定する必要がある。ここで、図2に示すように、Flash ROM8の各記憶領域はそれぞれ異なるサイズに分割されているため、図4の(a)及び(b)において例示したように、書換えるべき記憶領域の組み合わせが異なる場合には、クライアントPC3から送信される書換データのデータサイズが異なる。よって、データ処理装置1のカーネル領域26には、図5に示すように受信した書換データのデータサイズに基づいて、書換データに書換えるべき記憶領域を決定するための書換コードが記憶されており、制御部6は、外部から書換データを受信した場合に、受信した書換データのデータサイズに基づいて、書換データに書換えるべき記憶領域を決定する決定手段として機能する。例えば、クライアントPC3から受信した書換データのデータサイズが256kBである場合には、書換データはB領域用書換データとK領域用書換データからなるものでると判断して書換データに書換えるべき記憶領域をブート領域25とカーネル領域26に決定する。また、他の例として書換データのデータサイズが8184kBである場合には、書換データはK領域用書換データとP領域用書換データとF領域用書換データからなるものであると判断して書換データに書換えるべき記憶領域をカーネル領域26と一般プログラム領域27とフォント領域28に決定する。制御部6は、決定した書換えるべき記憶領域をインターフェース回路7により受信した書換データに書換える書換手段として機能する。
ところで、このようにしてクライアントPC3から書換データを受信してFlash ROM8の複数の記憶領域のデータを書換える場合、書換エラーが発生するとすれば、書換えを試みた最初の記憶領域の最初のセクタで発生する可能性が高い。そこで、本発明においては、Flash ROM8の複数の記憶領域に対して書換処理が行われる場合には、重要度の高い記憶領域から書換処理が開始されることがないように、カーネル領域26に記憶されている書換コードによって書換データの種類毎に予め書換えを行うべき優先順位が設定されている。この優先順位は、各記憶領域25乃至28に記憶されている各データの重要度に基づいて設定されており、図2に示すように、Flash ROM8の各記憶領域の中で最も重要な記憶領域は、システムを起動させるために必要不可欠な基本プログラムが記憶されているブート領域25であり、次に書換コードを含む制御プログラムが記憶されているカーネル領域26である。そして、一般プログラムが記憶されている一般プログラム領域27とフォントデータが記憶されているフォント領域28が同等の重要度となっている。
すなわち、記憶領域25乃至28のデータを全て書換える場合には、まず、一般プログラム領域27のデータがP領域用書換データに書換えられ、次にフォント領域28のデータがF領域用書換データに書換えられ、続いてカーネル領域26のデータがK領域用書換データに書換えられ、最後にブート領域25のデータがB領域用書換データに書換えられる。よって、たとえ書換えを試みた最初の記憶領域である一般プログラム領域27の一般プログラムの書換え中に書換エラーが発生して一般プログラムが破壊されたとしても、ブート領域25の基本プログラムとカーネル領域26の制御プログラムには書換処理が行なわれておらず正常である。そのため、システムを起動できなくなるという問題が発生することもなく、書換処理を再度行うことも可能である。なお、上記の書換処理において、フォント領域28と一般プログラム領域27は同等の重要度であるため、まずフォント領域28のデータをF領域用書換データに書換え、次に一般プログラム領域27のデータをP領域用書換データに書換えるようにしてもよい。また、ファームウェアの一部を書換える場合も同様であり、例えば書換データのデータサイズが3064kBである場合には、制御部6は図5に示したように、まず書換データがK領域用書換データ、P領域用書換データからなるものであると判断してカーネル領域26と一般プログラム領域27を書換えるべき記憶領域として決定する。そして、上記の優先順位に従って、まず一般プログラム領域27のデータをP領域用書換データに書換え、次にカーネル領域26のデータをK領域用書換データに書換える。
このように、各記憶領域25乃至28の重要度によって書換えを行う優先順位が書換コードによって予め設定されており、制御部6は、決定した書換えるべき記憶領域が複数である場合に、書換データの種類毎に予め設定された優先順位に従って書換えるべき複数の記憶領域を各々対応する書換データに順次書換える。なお、書換データの種類は、上記のように受信した書換データのデータサイズから判断することが可能である。例えば、図5に示すように、受信した書換データのデータサイズが3064kBであれば書換データがK領域用書換データとP領域用書換データからなるものであると判断でき、それに対して予め設定された優先順位に従って、一般プログラム領域27、カーネル領域26の順で順次書換えを行う。
また、このようにして自装置1のファームウェアをアップデートするための書換コードは、カーネル領域26に記憶されているため、仮にカーネル領域26の書換中に書換エラーが発生して書換コードが破壊された場合、ファームウェアのアップデートを行うことが不可能となる。したがって、制御部6は、決定した書換えるべき記憶領域に特定の情報を記憶している記憶領域が含まれているか否かを検索し、当該記憶領域が含まれている場合に、当該記憶領域のデータを他の記憶領域に複製した後、決定した書換えるべき記憶領域を受信した書換データに書換える。具体的には、制御部6は、決定した書換えるべき記憶領域に書換コードを記憶するカーネル領域26が含まれているか否かを検索し、カーネル領域26が含まれている場合に、カーネル領域26のデータを退避領域30に複製した後、決定した書換えるべき記憶領域を受信した書換データに書換える。なお、この退避領域30にカーネル領域26のデータを複製する処理も書換コードに従って制御部6によって行われる。
以上説明したように、制御部6は、書換コードに従って、外部から受信した書換データのデータサイズに基づいて、該書換データに書換えられるべきFlash ROM8の記憶領域を決定し、決定した書換えるべき記憶領域にカーネル領域26が含まれている場合には該カーネル領域26のデータを退避領域30に複製する。そして、書換コードによって予め設定された優先順位に従って書換えるべき記憶領域のデータを書換データに書換える。
以下、クライアントPC3から送信された書換データを受信した場合に、データ処理装置1において行われる処理動作について、図6に示すフローチャートに基づいて説明する。なお、以下のフローチャートに基づいて説明するデータ処理装置1の処理動作は、Flash ROM8のカーネル領域26に記憶されている書換コードに基づいて制御部6の制御命令に従って行われるものである。
まず、データ処理装置1の制御部6は、自装置1のファームウェアの書換データを受信したか否かを判断する(S7)。具体的には、外部から受信したデータのデータサイズが、図5に基づいて説明した書換コードによって予め設定されているデータサイズのいずれかに一致するか否かを判断する。ここで、受信したデータのデータサイズが書換コードによって設定されているデータサイズのいずれとも一致しない場合には、書換データを受信していないと判断し(S7:NO)、以降の処理は行わない。なお、このS7において制御部6が書換データを受信していないと判断する場合としては、書換データの作成ミスにより書換データのデータサイズが予め設定されたデータサイズと異なる場合や、通信中に書換データの一部が欠落したり逆に他のデータが混入して書換データのデータサイズが変化する場合等が考えられる。このような場合には、データ処理装置1は、適切な書換データを受信できなかった旨の情報をクライアントPC3又は複合機5に出力し、クライアントPC3が備えるディスプレイにその旨の情報を表示させたり、複合機5の表示部22が備える液晶表示装置にその旨のメッセージ等を表示させる。
一方、制御部6は、書換データを受信したと判断した場合(S7:YES)、すなわち、書換コードによって設定されているいずれかのデータサイズに一致するデータを受信したと判断した場合、受信したデータを書換データとしてSDRAM9のデータ領域31に格納し、受信した書換データのデータサイズに基づいて、書換データに書換えるべき記憶領域を決定する(S8)。続いて、決定した書換えるべき記憶領域に特定の情報を記憶している記憶領域が含まれているか否かを判断する(S9)。具体的には、書換コードを記憶しているカーネル領域26が含まれているか否かを判断する。ここで、決定した書換えるべき記憶領域にカーネル領域26が含まれていないと判断した場合には(S9:NO)、上記図5に基づいて説明したように、書換データの種類毎に書換コードによって予め設定された優先順位に従って書換えるべき記憶領域の書換順序を決定する(S10)。なお、書換えるべき記憶領域が1つの領域である場合には、当然優先順位は関係しないため、該領域のみを書換えるように決定する。一方、決定した書換えるべき記憶領域に特定の情報を記憶している記憶領域、すなわちカーネル領域26が含まれていると判断した場合(S9:YES)、特定の情報を記憶している記憶領域のデータを他の記憶場所に複製する(S11)。具体的には、カーネル領域26から書換コードを含む制御プログラムを全て読み出してSDRAM9の退避領域30に格納する。そして、その後、前記S10の書換順序を決定する処理を行う。なお、S10における書換順序の決定をS8の処理の後に行い、その後、S9の判断処理や場合によってはS11の処理を行うようにしてもよい。
続いて、制御部6は、S10において決定した書換順序に従って、S8で決定した書換えるべき記憶領域を受信した書換データに書換える(S12)。具体的には、決定した書換えるべき記憶領域が1つの記憶領域である場合には、その記憶領域のデータをSDRAM9のデータ領域31に格納されている受信した書換データに書換える。一方、決定した書換えるべき記憶領域が複数の記憶領域である場合には、S10で決定した書換順序に従って対応する書換データをデータ領域31から読み出してFlash ROM8の書換えるべき各々の記憶領域を対応する書換データに順次書換える。
制御部6は、このような書換処理を実行するとともに、書換エラーが発生したか否かを判断する(S13)。そして、書換エラーが発生していない場合には(S13:NO)、S12の書換処理が終了したか否かを判断する(S14)。ここで、書換処理が終了していないと判断した場合には(S14:NO)、S12の書換処理とS13の書換エラーの発生の有無の判断処理を継続して行う。そして、書換処理が終了したと判断した場合には(S14:YES)、誤りが検出されたか否かを判断する(S15)。この誤りの検出は、書換データに予め埋め込まれているチェッカを用いて、サムチェックを行うこと等によって検出することができる。
そして、制御部6は、誤りが検出されなかった場合(S15:NO)、書換えが正常に終了した旨の情報を複合機5に送信する(S16)。なお、クライアントPC3に送信するようにしてもよい。このようにして複合機5に書換えが正常に終了した旨の情報が送信されると、データ処理装置1のファームウェアがアップデートされたことを認識するために、複合機5では自動的に再起動の処理が行われる。
一方、制御部6は、S12の書換処理の実行中に書換エラーが発生したと判断した場合(S13:YES)、及び書換え終了後に誤りを検出した場合(S15:YES)、再書換処理をすでに実行しているか否かを判断する(S17)。具体的には、書換エラーが発生又は誤りを検出して、再度S12の書換処理を実行したか否かを判断する。そして、再書換処理を実行していないと判断した場合には(S17:NO)、S12以降の処理を改めて実行する。一方、再書換処理を実行していると判断した場合には(S17:YES)、書換えが正常に終了しなかった旨の情報を複合機5に送信する(S18)。
これに対し、複合機5では、例えば「書換エラーが発生しました」、「再度アップデート処理を行ってください」等のメッセージを表示部22の液晶表示装置に表示させるなどしてその旨の情報を報知する。なお、図6に示すフローチャートでは、再書換処理が一度だけ行われるようになっているが、S13又はS15においてエラーが発生したと判断した場合に、直ちにS18の処理を行ったり、2回以上の再書換処理を行い、それでも書換エラーが発生したり誤りが検出される場合にS18の処理動作を行うようにしてもよい。
また、データ処理装置1では、Flash ROM8の各記憶領域毎に書換え処理が行われるため、いずれの記憶領域の書換中に書換エラー等が発生したかを容易に判断することができる。したがって、データ処理装置1から複合機5に対してエラーが発生した旨の情報に加えて、エラーが発生した記憶領域の情報を送信するようにしてもよい。これに対し、複合機5の制御部14は、表示部22の備える液晶表示装置に上記のメッセージとともに、例えば「一般プログラム領域の書換えに失敗しました」等のメッセージを表示していずれの記憶領域のデータが破壊されたかをユーザ又はオペレータに報知するようにしてもよい。
また、本発明の実施の形態においては、SDRAM9にカーネル領域26の制御プログラムを複製するための退避領域30がプログラム領域29とデータ領域31とは別に確保されているが、この退避領域30を確保せず、プログラム領域29内の所定領域を他の記憶場所とし、そこに制御プログラムを複製して書換処理を行うようにしてもよい。具体的には、制御部6は、S9において書換えるべき記憶領域に書換コードを記憶しているカーネル領域26が含まれていると判断した場合に、S11において、カーネル領域26の制御プログラムをプログラム領域29内のフォントデータが格納されている領域の一部の領域に複製した後、S10以降の処理動作を行う。なお、この際、フォントデータは不完全なものとなるが、書換処理が行われた場合には、システムが再起動するまで通常動作が行われることはないため問題が生じることはない。そして、制御部6は、システムの再起動時に行うS2の処理動作において、カーネル領域26の制御プログラムが正常ではないと判断した場合、SDRAM9のプログラム領域29内の前記一部の領域から制御プログラムを読み出し、プログラム領域29において本来制御プログラムが格納されるべき領域に格納する。このようにして、制御プログラムをプログラム領域29の所定の領域に格納した後、一般プログラム領域27の一般プログラムとフォント領域28のフォントデータをそれぞれ読み出し、プログラム領域29に格納する。
なお、データ処理装置1のインターフェース回路7が書換データを受信する方法は、LAN2を介してクライアントPC3から受信する方法に限定されるものではない。例えば、クライアントPC3からUSB(Universal Serial Bus)を介して独自プロトコルにて書換データを受信したり、複合機5をファクシミリ通信機能を備えた複合機にして、該複合機がファクシミリ通信の手順に従ってサービスセンター等の外部のファクシミリ装置から書換データを受信し、データ処理装置1に転送し、それをインターフェース回路7で受信するようにしてもよい。また、LAN2上にインターネットに接続するためのルータ等を設置し、HTTP(Hypertext Transfer Protocol)、POP(Post Office Protocol)、SMTP(Simple Mail Transfer Protocol)に基づいてインターネットを介して書換データを受信するようにしてもよい。
また、本発明の実施の形態においては、本発明をPDLデータに所定の処理を施して複合機5に転送するデータ処理装置1に適用した場合について説明したが、外部から書換データを受信することができ、フラッシュメモリ等の書換え可能なメモリにファームウェアを記憶している装置であれば、本発明を適用可能な装置はデータ処理装置1に限定されるものではない。例えば、複合機5のROM15において、自装置5のファームウェアをデータの種類別に分割して各々別個の記憶領域に記憶し、データ処理装置1にクライアントPC3から送信された書換データを自装置5に転送させてRAM16に一旦格納紙した後、ROM15の対応する記憶領域に書換データをアップデートするようにしてもよい。また、その他ファクシミリ装置、コピー機、スキャナ等に適用可能である。