(57)【特許請求の範囲】
【請求項１】
個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有し、
前記サブＣＰＵ用プログラム記憶部には前記サブＣＰＵ用プログラムとして、前記メインＣＰＵへの電力供給を停止している省エネルギーモード中に実行するプログラムと、前記メインＣＰＵが起動中に実行するプログラムとが記憶されており、
前記メインＣＰＵは、
前記メインＣＰＵの状態として前記省エネルギーモードに移行する状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが省エネルギーモード中に実行するプログラムに書き換え、
前記メインＣＰＵの状態として前記省エネルギーモードから復帰した状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが起動中に実行するプログラムに書き換えること特徴とする情報処理装置。
【請求項２】
前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムは、少なくとも前記メインＣＰＵを復帰させるプログラムとともに、ファクシミリを受信しない受信拒否プログラム、ファクシミリの受信監視プログラムのいずれかを含むものであり、
前記メインＣＰＵが起動中に実行するプログラムは、受信したファクシミリデータの復号化処理プログラム、送信するファクシミリデータの符号化処理プログラム、ファクシミリデータの画像縮小プログラムのうち少なくともいずれか一つであること特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記メインＣＰＵは、前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムとともに、前記サブＣＰＵが使用する付随情報も前記サブＣＰＵ用記憶部に記憶させること特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記メインＣＰＵが、前記サブＣＰＵ用記憶部を書き換えて記憶させた前記サブＣＰＵ用プログラムがなんであるかを記憶する書き換え済みプログラム記憶部を有し、
前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換える際に、前記メインＣＰＵは、これから書き換えるプログラムと前記書き換え済みプログラム記憶部に記憶されているプログラムが同じ場合には、書き換えを行わないこと特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有し、
前記メインＣＰＵは、前記メインＣＰＵの状態が変化したとき、または設定変更が行われたときに、前記サブＣＰＵ用プログラム記憶部の中から状態や設定内容に応じて前記サブＣＰＵ用プログラムを選択して、前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換えるものであり、
前記メインＣＰＵが、前記サブＣＰＵ用記憶部を書き換えて記憶させた前記サブＣＰＵ用プログラムがなんであるかを記憶する書き換え済みプログラム記憶部を有し、
前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換える際に、前記メインＣＰＵは、これから書き換えるプログラムと前記書き換え済みプログラム記憶部に記憶されているプログラムが同じ場合には、書き換えを行わないこと特徴とする情報処理装置。
【請求項６】
前記情報処理装置はネットワークによって外部装置と接続されており、
前記サブＣＰＵ用プログラム記憶部に記憶される前記サブＣＰＵ用プログラムは、前記外部装置から記憶させることを特徴とする請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項７】
個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有する情報処理装置の制御方法であって、
前記サブＣＰＵ用プログラム記憶部には前記サブＣＰＵ用プログラムとして、前記メインＣＰＵへの電力供給を停止している省エネルギーモード中に実行するプログラムと、前記メインＣＰＵが起動中に実行するプログラムとが記憶されており、
前記メインＣＰＵの状態として前記省エネルギーモードに移行する状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが省エネルギーモード中に実行するプログラムに書き換え、
前記メインＣＰＵの状態として前記省エネルギーモードから復帰した状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが起動中に実行するプログラムに書き換えること特徴とする情報処理装置の制御方法。
【請求項８】
前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムは、少なくとも前記メインＣＰＵを復帰させるプログラムとともに、ファクシミリを受信しない受信拒否プログラム、ファクシミリの受信監視プログラムのいずれかを含むものであり、
前記メインＣＰＵが起動中に実行するプログラムは、受信したファクシミリデータの復号化処理プログラム、送信するファクシミリデータの符号化処理プログラム、ファクシミリデータの画像縮小プログラムのうち少なくともいずれか一つであること特徴とする請求項７に記載の情報処理装置の制御方法。
【請求項９】
前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムとともに、前記サブＣＰＵが使用する付随情報も前記サブＣＰＵ用記憶部に記憶させること特徴とする請求項７または８に記載の情報処理装置の制御方法。
【請求項１０】
前記サブＣＰＵ用記憶部を書き換えて記憶させた書き換え済みの前記サブＣＰＵ用プログラムがなんであるかを記憶しておいて、
これから書き換えるプログラムと前記記憶した書き換え済みプログラムが同じ場合には、書き換えを行わないこと特徴とする請求項７〜９のいずれか一つに記載の情報処理装置の制御方法。
【請求項１１】
個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有する情報処理装置の制御方法であって、
前記メインＣＰＵの状態が変化したとき、または設定変更が行われたときに、前記サブＣＰＵ用プログラム記憶部の中から状態や設定内容に応じて前記サブＣＰＵ用プログラムを選択して、前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換え、
前記サブＣＰＵ用記憶部を書き換えて記憶させた書き換え済みの前記サブＣＰＵ用プログラムがなんであるかを記憶しておいて、
これから書き換えるプログラムと前記記憶した書き換え済みプログラムが同じ場合には、書き換えを行わないこと特徴とする情報処理装置の制御方法。
【請求項１２】
前記情報処理装置はネットワークによって外部装置と接続されており、
前記サブＣＰＵ用プログラム記憶部に記憶される前記サブＣＰＵ用プログラムは、前記外部装置から記憶させることを特徴とする請求項７〜１１のいずれか一つに記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法に関する。
【背景技術】
【０００２】
２つのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いた情報処理装置がある。
【０００３】
このような情報処理装置の構成は、コピーやファクシミリ、プリンターなどの機能をもつ情報処理装置にも適用可能である。たとえば特許文献１に開示された技術では、メインＣＰＵがもつ増設ＲＡＭ用のスロットインターフェースに機能拡張ボードが挿抜できるようになっている。スロットインターフェースには機能拡張ボードとしてメモリーをもつサブＣＰＵやメモリーのみのボードが接続されることになっている。そしてスロットインターフェースにメモリーをもつサブＣＰＵ接続された場合は、サブＣＰＵ側のメモリーをメインＣＰＵ側からアクセスして、メインＣＰＵからサブＣＰＵに動作させるプログラムを書き込み、サブＣＰＵをメインＣＰＵによって書き込まれたプログラムにより動作させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−５９５２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の技術は、サブＣＰＵで動作させるプログラムをメインＣＰＵから書き換えるにあたり、スロットインターフェースにメモリーをもつサブＣＰＵが接続された場合、つまりハードウェア構成に変化が生じた場合に、サブＣＰＵが実行するプログラムを書き換えているのである。したがって、従来の技術ではハードウェア構成の変更がなければ、サブＣＰＵが実行するプログラムの書き換えは行われないことになる。このため従来の技術は、ハードウェアの変更を伴わない場合は、サブＣＰＵが実行するプログラムを書き換えることに対応していないという問題があった。
【０００６】
そこで、本発明の目的は、ハードウェア構成の変更とは無関係にサブＣＰＵが実行するプログラムをメインＣＰＵから書き換えて、メインＣＰＵの動作をサブＣＰＵで補完させることのできる情報処理装置を提供することである。また本発明の他の目的は、ハードウェア構成の変更とは無関係にサブＣＰＵが実行するプログラムをメインＣＰＵから書き換えて、メインＣＰＵの動作をサブＣＰＵで補完させることのできる情報処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の上記目的は、下記の手段によって達成される。
【０００９】
（１）個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有し、
前記サブＣＰＵ用プログラム記憶部には前記サブＣＰＵ用プログラムとして、前記メインＣＰＵへの電力供給を停止している省エネルギーモード中に実行するプログラムと、前記メインＣＰＵが起動中に実行するプログラムとが記憶されており、
前記メインＣＰＵは、
前記メインＣＰＵの状態として前記省エネルギーモードに移行する状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが省エネルギーモード中に実行するプログラムに書き換え、
前記メインＣＰＵの状態として前記省エネルギーモードから復帰した状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが起動中に実行するプログラムに書き換えること特徴とする情報処理装置。
【００１０】
（２）前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムは、少なくとも前記メインＣＰＵを復帰させるプログラムとともに、ファクシミリを受信しない受信拒否プログラム、ファクシミリの受信監視プログラムのいずれかを含むものであり、
前記メインＣＰＵが起動中に実行するプログラムは、受信したファクシミリデータの復号化処理プログラム、送信するファクシミリデータの符号化処理プログラム、ファクシミリデータの画像縮小プログラムのうち少なくともいずれか一つであること特徴とする上記（１）に記載の情報処理装置。
【００１１】
（３）前記メインＣＰＵは、前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムとともに、前記サブＣＰＵが使用する付随情報も前記サブＣＰＵ用記憶部に記憶させること特徴とする請求項（１）または（２）に記載の情報処理装置。
【００１２】
（４）前記メインＣＰＵが、前記サブＣＰＵ用記憶部を書き換えて記憶させた前記サブＣＰＵ用プログラムがなんであるかを記憶する書き換え済みプログラム記憶部を有し、
前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換える際に、前記メインＣＰＵは、これから書き換えるプログラムと前記書き換え済みプログラム記憶部に記憶されているプログラムが同じ場合には、書き換えを行わないこと特徴とする上記（１）〜（３）のいずれか一つに記載の情報処理装置。
（５）個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有し、
前記メインＣＰＵは、前記メインＣＰＵの状態が変化したとき、または設定変更が行われたときに、前記サブＣＰＵ用プログラム記憶部の中から状態や設定内容に応じて前記サブＣＰＵ用プログラムを選択して、前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換えるものであり、
前記メインＣＰＵが、前記サブＣＰＵ用記憶部を書き換えて記憶させた前記サブＣＰＵ用プログラムがなんであるかを記憶する書き換え済みプログラム記憶部を有し、
前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換える際に、前記メインＣＰＵは、これから書き換えるプログラムと前記書き換え済みプログラム記憶部に記憶されているプログラムが同じ場合には、書き換えを行わないこと特徴とする情報処理装置。
【００１３】
（６）前記情報処理装置はネットワークによって外部装置と接続されており、前記サブＣＰＵ用プログラム記憶部に記憶される前記サブＣＰＵ用プログラムは、前記外部装置から記憶させることを特徴とする上記（１）〜（５）のいずれか一つに記載の情報処理装置。
【００１５】
（７）個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有する情報処理装置の制御方法であって、
前記サブＣＰＵ用プログラム記憶部には前記サブＣＰＵ用プログラムとして、前記メインＣＰＵへの電力供給を停止している省エネルギーモード中に実行するプログラムと、前記メインＣＰＵが起動中に実行するプログラムとが記憶されており、
前記メインＣＰＵの状態として前記省エネルギーモードに移行する状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが省エネルギーモード中に実行するプログラムに書き換え、
前記メインＣＰＵの状態として前記省エネルギーモードから復帰した状態になったとき、前記サブＣＰＵ用プログラムとして前記メインＣＰＵが起動中に実行するプログラムに書き換えること特徴とする情報処理装置の制御方法。
【００１６】
（８）前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムは、少なくとも前記メインＣＰＵを復帰させるプログラムとともに、ファクシミリを受信しない受信拒否プログラム、ファクシミリの受信監視プログラムのいずれかを含むものであり、
前記メインＣＰＵが起動中に実行するプログラムは、受信したファクシミリデータの復号化処理プログラム、送信するファクシミリデータの符号化処理プログラム、ファクシミリデータの画像縮小プログラムのうち少なくともいずれか一つであること特徴とする上記（７）に記載の情報処理装置の制御方法。
【００１７】
（９）前記メインＣＰＵが前記省エネルギーモード中に前記サブＣＰＵに実行させるプログラムとともに、前記サブＣＰＵが使用する付随情報も前記サブＣＰＵ用記憶部に記憶させること特徴とする上記（７）または（８）に記載の情報処理装置の制御方法。
【００１８】
（１０）前記サブＣＰＵ用記憶部を書き換えて記憶させた書き換え済みの前記サブＣＰＵ用プログラムがなんであるかを記憶しておいて、
これから書き換えるプログラムと前記記憶した書き換え済みプログラムが同じ場合には、書き換えを行わないこと特徴とする上記（７）〜（９）のいずれか一つに記載の情報処理装置の制御方法。
（１１）個別に動作可能なメインＣＰＵおよびサブＣＰＵと、
前記サブＣＰＵが実行するサブＣＰＵ用プログラムを記憶するサブＣＰＵ用記憶部と、
前記サブＣＰＵに実行させる複数のサブＣＰＵ用プログラムを記憶したサブＣＰＵ用プログラム記憶部と、を有する情報処理装置の制御方法であって、
前記メインＣＰＵの状態が変化したとき、または設定変更が行われたときに、前記サブＣＰＵ用プログラム記憶部の中から状態や設定内容に応じて前記サブＣＰＵ用プログラムを選択して、前記サブＣＰＵ用記憶部に記憶されている前記サブＣＰＵ用プログラムを書き換え、
前記サブＣＰＵ用記憶部を書き換えて記憶させた書き換え済みの前記サブＣＰＵ用プログラムがなんであるかを記憶しておいて、
これから書き換えるプログラムと前記記憶した書き換え済みプログラムが同じ場合には、書き換えを行わないこと特徴とする情報処理装置の制御方法。
【００１９】
（１２）前記情報処理装置はネットワークによって外部装置と接続されており、前記サブＣＰＵ用プログラム記憶部に記憶される前記サブＣＰＵ用プログラムは、前記外部装置から記憶させることを特徴とする上記（７）〜（１１）のいずれか一つに記載の情報処理装置の制御方法。
【発明の効果】
【００２０】
本発明によれば、サブＣＰＵに実行させるプログラムを、装置内に複数記憶しておき、動作状態の変化や設定変更などが起きたことを起因として、それら動作状態や設定変更サブＣＰＵのプログラムを書き換えることとした。このためハードウェア資源の変更とは無関係に、サブＣＰＵの処理能力を有効活用できるようになり、メインＣＰＵの動作をその時の動作状態や設定に応じて補完させることができる。
【図面の簡単な説明】
【００２１】
【図１】実施形態におけるＭＦＰの構成を説明するためのブロック図である。
【図２】動作例１を説明するための説明図である。
【図３】図２に続く動作例１を説明するための説明図である。
【図４】図３に続く動作例１を説明するための説明図である。
【図５】図４に続く動作例１を説明するための説明図である。
【図６】動作例２を説明するための説明図である。
【図７】図６に続く動作例２を説明するための説明図である。
【図８】図７に続く動作例２を説明するための説明図である。
【図９】図８に続く動作例２を説明するための説明図である。
【図１０】メインＣＰＵが実行するプログラム書き換え処理全体の処理手順を示すフローチャートである。
【図１１】サブＣＰＵ用プログラムを送信する処理手順を示すサブルーチンフローチャートである。
【図１２】サブＣＰＵが実行する復号化の処理手順を示すフローチャートである。
【図１３】サブＣＰＵが実行する符号化の処理手順を示すフローチャートである。
【図１４】サブＣＰＵが実行する画像縮小の処理手順を示すフローチャートである。
【図１５】サブＣＰＵが実行する回線電圧モニターの処理手順を示すフローチャートである。
【図１６】サブＣＰＵが実行する通信時間測定の処理手順を示すフローチャートである。
【図１７】サブＣＰＵが実行するメインＣＰＵ監視の処理手順を示すフローチャートである。
【図１８】サブＣＰＵが実行するリング検知＋電源制御の処理手順を示すフローチャートである。
【図１９】サブＣＰＵが実行する１３００Ｈｚトーン検知＋電源制御の処理手順を示すフローチャートである。
【図２０】サブＣＰＵが実行するＶ．２３検知＋電源制御の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、図面を参照して本発明の実施形態を説明する。なお、図面において同一の機能を有する要素には同一の符号を付し、重複する説明を省略する。また、図面はあくまでも本発明の実施形態を説明するためのものであるので、各部材の寸法や比率は説明の都合上誇張または簡略化しており、実際の寸法や比率とは異なる。
【００２３】
本発明を適用した実施形態の情報処理装置として、プリンター、コピー、スキャナー、ファクシミリなどの機能を備えたＭＦＰ（ｍｕｌｔｉｆｕｎｃｔｉｏｎ  ｐｅｒｉｐｈｅｒａｌ、多機能周辺装置）を例に説明する。ＭＦＰは複合機などと称されることもある。
【００２４】
図１は、実施形態におけるＭＦＰの構成を説明するためのブロック図である。
【００２５】
ＭＦＰ１０は、メインＣＰＵ１００とサブＣＰＵ２００を備えたマルチプロセッサ構成である。メインＣＰＵ１００には、メインＣＰＵ１００が専用に利用するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２１が接続されている。同様にサブＣＰＵ２００にもサブＣＰＵ２００が専用に利用するＲＡＭ２２１が接続されている。
【００２６】
メインＣＰＵ１００は、ＭＦＰ１０全体の制御や、各プリンター、コピー、スキャナー、ファクシミリなどの機能が選択された際にそれら各機能を実行するための制御を行う。
【００２７】
メインＣＰＵ１００はメインＣＰＵ用バス１５０を介して、表示部１１２、操作部１１３、画像処理部１１４、通信制御部１１５、モデム１１６とＮＣＵ（Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１１７、読取部１１８、プリントエンジン１１９、メインＣＰＵ用ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２０、メインＣＰＵ用ＲＡＭ１２１、不揮発性メモリー１２２、電源制御部１２３、およびネットワーク通信部１２４と接続されている。また、メインＣＰＵ用バス１５０には、サブＣＰＵ２００と通信するためのサブＣＰＵ通信部１３０が接続されている。
【００２８】
表示部１１２は、たとえば液晶ディスプレイ、有機ＥＬ（ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどのディスプレイパネルを備える。ディスプレイパネルには操作画面、設定画面、編集画面などの各種画面が表示される。
【００２９】
操作部１１３は、たとえばコピー、スキャナー、ファクシミリの各機能を選択するためのボタンやキー、数値を入力するためのテンキー、スタートキー、ストップキーなどを備える。また表示部１１２と操作部１１３は、それらが一つになったタッチパネルであってもよい。
【００３０】
画像処理部１１４は、画像データの補正、回転、拡大、縮小などの画像処理を行う。また、外部装置３００から受信した画像データのラスタライズも行う。またファクシミリの画像データに対しては、画像データの圧縮（符号化）、伸張（復号化）などの処理を行う。ここで外部装置３００は、たとえばパソコン（ＰＣ）やサーバー、携帯情報端末などである（携帯情報端末はたとえば携帯電話、スマートフォン、タブレットなどである）。
【００３１】
通信制御部１１５は、ファクシミリ通信に係るプロトコル制御などを行う。このため通信制御部１１５は、モデム１１６を介してのデータの送受信の制御を行っている。
【００３２】
モデム１１６は、デジタル信号をアナログ信号で伝送するための変調やその復調を行う。モデム１１６は、ソフトウェアモデムとしてモデムの機能を実施するためのプログラムをメインＣＰＵ１００が実行することとしてもよい。ＮＣＵ１１７は、電話回線と接続されて、発呼や着呼に関する制御や検出を行う。ＮＣＵ１１７はモデム１１６によって制御される。ここでは主にファクシミリの際の発呼や着呼に使用される。
【００３３】
読取部１１８は、原稿画像を光学的に読み取って画像データを取得する、いわゆるスキャナーである。
【００３４】
プリントエンジン１１９は、画像データに基づく画像を、周知の電子写真プロセスによって記録紙上に形成する、いわゆる印刷を行う。プリントエンジンは、インクジェット方式であってもよい。
【００３５】
メインＣＰＵ用ＲＯＭ１２０は、メインＣＰＵ専用のＲＯＭであり、このＭＦＰ１０における基本動作を担うための各種プログラムや固定データが格納されている。メインＣＰＵ１００はこれらのプログラムに従って各種の処理を実行する。
【００３６】
メインＣＰＵ用ＲＡＭ１２１は、メインＣＰＵ専用のＲＡＭであり、メインＣＰＵ１００がプログラムを実行する際にワークエリアとなる。また画像データを一時的に記憶する。このためメインＣＰＵ用ＲＡＭ１２１は、コピー時に読取部１１８で読み取った画像データ、外部装置３００から受信したジョブの画像データ、ファクシミリ受信した画像データなどを一時記憶する際に使用される。
【００３７】
不揮発性メモリー１２２は、読取部１１８で読み取られた原稿の画像データ、外部装置３００から受信したジョブの画像データや、ファクシミリ受信した画像データなどを記憶する。また、メインＣＰＵ１００が実行するアプリケーションプログラム（メインＣＰＵ用ＲＯＭに記憶されているプログラム以外のプログラム）も記憶している。
【００３８】
そして不揮発性メモリー１２２は、サブＣＰＵ２００に実行させるためのプログラムも記憶している。このため不揮発性メモリー１２２は、サブＣＰＵ２００が実行するプログラムを記憶するサブＣＰＵ用プログラム記憶部となる。不揮発性メモリー１２２は、たとえばＨＤＤ（Ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）、フラッシュメモリーを利用したＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）などが用いられる。
【００３９】
また不揮発性メモリー１２２は、たとえば、コピー時の画像データの記憶や、外部装置からの印刷ジョブ（およびジョブに含まれる画像データ）の記憶などに使用される。
【００４０】
なお、ここで出力とは、通信制御部１１５とモデム１１６およびＮＣＵ１１７を介したファクシミリ出力、プリントエンジン１１９による印刷出力のことである。
【００４１】
電源制御部１２３は、メインＣＰＵ１００およびサブＣＰＵ２００からの指令によって、各部への電力供給を制御している。電源制御としては、たとえば、通常モードと省エネネルギーモード（以下省エネモードという）がある（スリープモードとも称されている）。通常モードは各部への通電が行われ、各機能が即時実行可能な状態である。省エネモードにおいては、メインＣＰＵ１００およびバス１５０によって接続さている各部のうち、ユーザー操作の開始（操作部１１３からの入力）を検知する部分や、着呼（電話回線の電圧変動）を検知する部分、また外部装置３００からのジョブの入力を検知する部分など以外への電力供給を停止する。具体的には、本実施形態では省エネモードに入ると、入力検知や、着呼検知をサブＣＰＵ２００によって行わせる（詳細後述）。このためメインＣＰＵ１００およびバス１５０によって接続さている、操作部１１３とＮＣＵ１１７以外の各部への電力供給は停止することになる。なお、サブＣＰＵ２００については、省エネモードに入っても電源制御部１２３からの電力供給が停止されることはない。
【００４２】
ＭＦＰ１０は、通常、電源が投入されると、通常モードとなる。一方、一定時間無操作および無着信であれば、消費電力を抑えるため省エネモードとなる。このような制御をメインＣＰＵ１００およびサブＣＰＵ２００のいずれかが処理して電源制御部１２３へ指令し、電源制御部１２３が指令に従って、各部への通電を切り換えている。
【００４３】
ネットワーク通信部１２４は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク３０１を通じて外部装置３００（たとえばパソコンやサーバー、また携帯端末など）と接続されている。そして外部装置３００との間で画像データやそのほか様々なデータのやり取りが行われる。また外部装置３００は、たとえば無線通信機能（たとえば無線ＬＡＮ（ＷｉＦｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ））、近距離無線通信（たとえばＢｌｕｅｔｏｏｔｈ（登録商標））など）を備え、外部装置３００として無線通信を利用した携帯情報端末と画像データなどの送受信が行えるようにしておいてもよい。
【００４４】
サブＣＰＵ通信部１３０は、サブＣＰＵ２００との間で様々なデータのやり取りを行うための通信制御を行う。たとえばＲＳ２３２Ｃのような通信規格を使用してメインＣＰＵ１００とサブＣＰＵ２００との接続を行っている。本実施形態では、特にサブＣＰＵ２００が使用するプログラムを書き換える際の通信に使用する。
【００４５】
なお、サブＣＰＵ通信部１３０を含めてメインＣＰＵ１００とバス１５０を介して接続されている部分をメインＣＰＵ１００側と称する。
【００４６】
次に、サブＣＰＵ２００は、メインＣＰＵ１００からサブＣＰＵ用ＲＡＭ２２１内のプログラムが書き換えられることで、様々な処理を実行する。
【００４７】
サブＣＰＵ２００はサブＣＰＵ用バス２５０を介して、サブＣＰＵ用ＲＯＭ２２０、およびサブＣＰＵ用ＲＡＭ２２１と接続されている。また、サブＣＰＵ用バス２５０には、メインＣＰＵ１００と通信するためのメインＣＰＵ通信部２３０が接続されている。またサブＣＰＵ用バス２５０には、操作部１１３、ＮＣＵ１１７などと接続されていて、これらの部分での信号検知を行うための信号検知部２４０が接続されている。さらに、サブＣＰＵ用バス２５０には、電源制御部１２３も接続されていて、サブＣＰＵ２００から直接電源制御部１２３に指令を出して、省エネモードからの復帰ができるようになっている（詳細後述）。
【００４８】
サブＣＰＵ用ＲＯＭ２２０は、サブＣＰＵ２００が実行するあらかじめ固定されたプログラムが記憶されている。本実施形態では、メインＣＰＵ１００から送信されてきたプログラムをサブＣＰＵ用ＲＡＭ２２１へ書き込み、また読み出すための必要最小限のプログラムを記憶している。
【００４９】
サブＣＰＵ用ＲＡＭ２２１は、サブＣＰＵ２００専用のものであり、サブＣＰＵ２００が実行するプログラムを記憶する。このためサブＣＰＵ用ＲＡＭ２２１はサブＣＰＵ用記憶部となる。また、サブＣＰＵ用ＲＡＭ２２１は、サブＣＰＵ２００が使用するワークエリアとなる。このサブＣＰＵ用ＲＡＭ２２１はサブＣＰＵ２００専用のものであるため、そこへのデータの書き込み、読み出しはサブＣＰＵ２００が行う。したがって、サブＣＰＵ２００へ実行させるためにメインＣＰＵ１００から送られてきたプログラムであっても、一度サブＣＰＵ２００自身がサブＣＰＵ用ＲＡＭ２２１へ書き込むことになる。
【００５０】
メインＣＰＵ通信部２３０は、メインＣＰＵ１００側にあるサブＣＰＵ通信部１３０に対応しているサブＣＰＵ２００側の通信制御部である。したがって、たとえばＲＳ２３２Ｃのような通信規格を使用してメインＣＰＵ１００とサブＣＰＵ２００との接続を行っている。
【００５１】
メインＣＰＵ通信部２３０を含めてサブＣＰＵ２００とバス２５０を介して接続されている部分をサブＣＰＵ２００側と称する。
【００５２】
なお、メインＣＰＵ１００とサブＣＰＵ２００間の接続は、ＲＳ２３２Ｃのような通信規格に限らず、そのほかの通信規格でもよい。また、メインＣＰＵ１００とサブＣＰＵ２００間の接続は、通信ではなく、一つのバスにメインＣＰＵ１００とサブＣＰＵ２００が接続されて、バスを介してデータのやり取りを直接行う形態でもよい。また、メインＣＰＵ１００とサブＣＰＵ２００で共用するＲＡＭを設けて、ＲＡＭを介してデータのやり取りする（メインＣＰＵが書き込んだデータをサブＣＰＵが読み出すなど）形態であってもよい。
【００５３】
信号検知部２４０は、主に省エネルギーモードの状態において機能するものであり、操作部１１３からの入力による電圧変動の検知、ＮＣＵ１１７への着信時の信号検知（回線の電圧変動）および回線のモニターなどに使用される。信号検知部２４０は、たとえばアナログーデジタル変換器を備え、アナログ信号をデジタル信号に変換する。これにより、サブＣＰＵ２００が、操作部１１３やＮＣＵ１１７に接続されている信号線の電圧変動や信号のモニターができるようになっている。
【００５４】
本実施形態１におけるＭＦＰ１０の動作について説明する。
【００５５】
まず、基本動作について説明する。
【００５６】
メインＣＰＵ１００が管理して直接アクセスする不揮発性メモリー１２２には、サブＣＰＵ２００に実行させるプログラムを複数記憶しておく。サブＣＰＵ２００に実行させるプログラムは、ＭＦＰ１０の状態変化や設定に応じてサブＣＰＵ２００に特定の機能を実行させるために必要なプログラムである。そしてメインＣＰＵ１００は、記憶されている複数のプログラムの中から、そのときのＭＦＰ１０の状態変化（詳細にはメインＣＰＵ１００の状態変化）や設定に応じて必要なプログラムを選択する。選択したプログラムはメインＣＰＵ１００からサブＣＰＵ２００に送信する。
【００５７】
送信されたプログラムはサブＣＰＵ用ＲＡＭ２２１に書き込まれる。このとき送信されてきたプログラムを記憶する前に、以前からサブＣＰＵ用ＲＡＭ２２１にあったプログラムは消去される。これはサブＣＰＵ用ＲＡＭ２２１の容量が限られているため、複数のプログラムを記憶することができないためである。したがって、サブＣＰＵ用ＲＡＭ２２１へのプログラムの記憶は、プログラムの書き換えということになる。
【００５８】
プログラム送信のタイミングは、状態変化が発生したとき、または、設定変更されたときなどである。これはあらかじめ設定された内容に基づいて、ある状態に達した時点でプログラムを送信する動作を含む。そしてサブＣＰＵ２００ではサブＣＰＵ用ＲＡＭ２２１に書き込まれたプログラムを実行する。
【００５９】
具体的な動作例としてファクシミリ機能を例に２つの動作例を説明する。
【００６０】
まず、動作例１として、カー（ＣＡＲ）とナンバーディスプレイ番号（Ｖ．２３）検知、および電源制御に設定変更された後の省エネモード中に、着信信号の検知によるファクシミリ受信を行う場合を説明する。図２〜５は、動作例１を説明するための説明図である。図においては、すでに説明したＭＦＰ１０の構成のうちこの動作例１にかかわる部分のみを示し、そのほかの部分は省略している。
【００６１】
まず図２に示すようにメインＣＰＵ１００が直接アクセスする不揮発性メモリー１２２には、サブＣＰＵ２００に実行させるプログラムを複数記憶している。ここで例示したプログラムは、プログラムＡ：復号化プログラム、プログラムＢ：符号化プログラム、プログラムＣ：リング（Ｒｉｎｇ）検知＋電源制御プログラム、プログラムＤ：Ｖ．２３検知＋電源制御プログラム、プログラムＥ：１３００Ｈｚトーン検知＋電源制御プログラムである。これらのプログラムには、プログラム名称や識別符号、識別番号などのＩＤが付与されている。
【００６２】
ここで、リング（Ｒｉｎｇ）検知、カー（ＣＡＲ）検知、１３００Ｈｚトーン検知などは、通信回線（ファクシミリのための電話回線）を掴んでいない状態で通信回線上を流れる電圧変化および信号をモニターすることにより行われる。これを着信監視という。電圧変化（電圧測定）および信号のモニターは、信号検知部２４０を介して行われる。
【００６３】
またナンバーディスプレイは電話回線をモニターすることで行われる。その際サブＣＰＵ２００によりソフトモデムを実現するために、Ｖ．２３検知プログラムに含まれる、Ｖ．２３デコードプログラムが実行される。
【００６４】
電源制御プログラムによる電源制御は、あらかじめ決められた所定時間の経過により省エネモードに入ったり、省エネモードから通常モードへ復帰させたりすることである。
【００６５】
省エネモードにおいては、電源制御部１２３によりメインＣＰＵ１００側の最低限必要な箇所以外への電力供給を停止する。一方、通常モードへの復帰は、ファクシミリのための信号を検知したり、操作部１１３からの入力を検知したりすることでメインＣＰＵ１００を初めとした各部への電力供給を再開する。操作部１１３からの入力の有無を監視することを操作監視という。着信監視と操作監視を合わせて着信操作監視という。
【００６６】
サブＣＰＵ２００に実行させるプログラムは、そのほか様々なプログラムであってもよい。たとえば画像縮小、回線電圧モニター、通信時間測定、メインＣＰＵ監視など様々な機能を実施することができる。また、ＭＦＰ１０は、図１に示したようにネットワーク通信部１２４を備えている。そこで、ネットワーク通信部１２４を介して外部装置３００からサブＣＰＵ２００が実行するプログラムを送信して不揮発性メモリー１２２に記憶させておくようにしてもよい。これにより、サブＣＰＵ用プログラムのバリエーションを増やすことができる。
【００６７】
図２の状態は、通常モードの状態を示している。すなわちメインＣＰＵ１００が起動している状態である。この状態では、サブＣＰＵ２００に実行させるプログラムとして（図示していないがサブＣＰＵ用ＲＡＭ２２１に記憶されているプログラムのことである。以下同様）、プログラムＣ：リング検知＋電源制御プログラムが記憶されている。したがって、サブＣＰＵ２００はリング検知プログラムにより着信監視を行い、電源制御プログラムにより操作監視を行っている。
【００６８】
この状態から設定変更が行われたとする。変更内容は、ナンバーディスプレイ表示有り（Ｖ．２３検知）で電源制御に設定変更されたものとする。この設定変更を起因として、サブＣＰＵ２００に実行させるプログラムを、プログラムＣからプログラムＤ：Ｖ．２３検知＋電源制御プログラムに書き換えるのである。図３はこの設定変更によりサブＣＰＵ２００に実行させるプログラムが書き換えられた後の状態を示している。
【００６９】
この図３の状態から、一定時間経過すると、図４に示すように、サブＣＰＵ２００は実行しているプログラムＤの電源制御機能によって、電源制御部１２３へメインＣＰＵ１００側への電源供給を切るように指令する。これにより省エネモードに入ることになる。すなわちメインＣＰＵ１００が省エネモードとなった状態である。ここでの省エネモードに入る動作はメインＣＰＵ通信部２３０−サブＣＰＵ通信部１３０を経由してメインＣＰＵ１００へその指令を伝達する。この指令を受けたメインＣＰＵ１００は省エネモードに入る前に必要な処理、たとえばメインＣＰＵ用ＲＡＭ１２１に一時記憶されているデータを不揮発性メモリーへ退避させるなどの処理を行う。また、本実施形態では省エネモードに入る前にサブＣＰＵ用プログラムの書き換えも行っている（詳細後述）。
【００７０】
省エネモードに入る前の処理が終了したなら、メインＣＰＵ１００は電源制御部１２３へ省エネモードに入るように指令して各部への電源供給が停止される。
【００７１】
この省エネモードの状態で、サブＣＰＵ２００がメインＣＰＵ１００に代わって着信操作監視（カー（ＣＡＲ）とナンバーディスプレイ番号（Ｖ．２３）検知、および操作監視）を行うことになる。なお、この着信監視をさせる際には、さらに着信拒否プログラムを一緒に動作させることも可能である。着信拒否番号はメインＣＰＵ１００が管理しており、不揮発性メモリー１２２に記憶されている。したがって、着信拒否を行う場合には、着信拒否番号をメインＣＰＵ１００からサブＣＰＵ２００へ送信して一時的にサブＣＰＵ２００で使用できるようにする。この着信拒否番号のようにサブＣＰＵ２００で一時的に使用する情報を付随情報という。付随情報は省エネモード中に実行するプログラムとともにサブＣＰＵ２００へ送信することになる。付随情報はサブＣＰＵ用ＲＡＭ２２１に書き込まれる。
【００７２】
着信拒否を行う場合、着信監視中に着信拒否番号からの着信があればサブＣＰＵ２００がそれを検知して着信拒否を行うことになる。なお、サブＣＰＵ２００に実行させることができる機能は、サブＣＰＵ用ＲＡＭ２２１の容量によって異なる。つまりサブＣＰＵ用ＲＡＭ２２１の容量が許せば、複数の機能をサブＣＰＵ２００に実行させるための複数のプログラムまたは複数の機能を実行させる１つのプログラムを記憶させることができる。
【００７３】
続いて、省エネモードにおいて、着信があれば、図５に示すように、サブＣＰＵ２００は実行しているプログラムＤの電源制御機能によって、直接、電源制御部１２３へ、メインＣＰＵ１００側への電源供給を再開するように指令する。これにより通常モードに復帰することになる。
【００７４】
そして、サブＣＰＵ２００は、回線から取得したナンバーディスプレイ番号をメインＣＰＵ１００へ伝達する。メインＣＰＵ１００ではナンバーディスプレイ番号を表示する。そして、メインＣＰＵ１００では起動とともに、すなわち、メインＣＰＵ１００の状態が停止中から起動中へ変化したことを起因として、サブＣＰＵ２００が実行するプログラムをプログラムＡ：復号化プログラムに書き換える。メインＣＰＵ１００では、モデム１１６を介して受信したファクシミリデータをサブＣＰＵ２００で復号処理させる。復号化したデータは、メインＣＰＵ１００へ送り返されることになり、受信したファクシミリデータの画像形成が行われることになる。
【００７５】
このように、動作例１では、サブＣＰＵ２００に対して、省エネモードのときにはファクシミリの着信監視を行わせ、着信によりメインＣＰＵ１００を通常モードに復帰させたのちは、復号処理を行わせることができる。
【００７６】
次に、動作例２として、１３００Ｈｚ検知無鳴動着信有り、および電源制御に設定変更された後の省エネモード中に、着信信号の検知によるファクシミリ受信ではなく、操作者によりファクシミリ送信を行う場合を説明する。図６〜９は、動作例２を説明するための説明図である。図においては、すでに説明したＭＦＰ１０の構成のうちこの動作例２にかかわる部分のみを示し、そのほかの部分は省略している。
【００７７】
動作例１同様に、図６に示すようにメインＣＰＵ１００が直接アクセスする不揮発性メモリー１２２には、たとえばプログラムＡ：復号化プログラム、プログラムＢ：符号化プログラム、プログラムＣ：リング（Ｒｉｎｇ）検知＋電源制御プログラム、プログラムＤ：Ｖ．２３検知＋電源制御プログラム、プログラムＥ：１３００Ｈｚトーン検知＋電源制御プログラムが記憶されている。もちろんこの動作例２においても、そのほかに様々なプログラムが記憶されていてもよい。
【００７８】
図６の状態は、通常モードの状態を示している。この状態では、サブＣＰＵ２００に実行させるプログラムとして（図示していないがサブＣＰＵ用ＲＡＭ２２１に記憶されているプログラムのことである。以下同様）、プログラムＣ：リング検知＋電源制御プログラムが記憶されている（動作例１と同じである）。
【００７９】
この状態から設定変更が行われたとする。変更内容は、１３００Ｈｚ無鳴動着信有り、および電源制御に設定変更されたものとする。この設定変更を起因として、サブＣＰＵ２００に実行させるプログラムを、プログラムＣからプログラムＥ：１３００Ｈｚトーン検知＋電源制御プログラムに書き換えるのである。図７はこの設定変更によりサブＣＰＵ２００に実行させるプログラムが書き換えられた後の状態を示している。
【００８０】
この図７の状態から、一定時間経過すると、図８に示すように、サブＣＰＵ２００は実行しているプログラムＥの電源制御機能によって、電源制御部１２３へメインＣＰＵ１００側への電源供給を切るように指令する。これにより省エネモードに入ることになる（実際の動作は、動作例１の図４の説明と同様に、メインＣＰＵ通信部２３０−サブＣＰＵ通信部１３０を経由してメインＣＰＵ１００へその指令を伝達すると、メインＣＰＵ１００が必要な処理を行った後、電源制御部１２３へメインＣＰＵ１００側の電源供給を切るように指令して、各部への電力供給が停止され、省エネモードとなる）。
【００８１】
この省エネモードの状態で、サブＣＰＵ２００がメインＣＰＵ１００に代わって着信操作監視（１３００Ｈｚトーン検知＋操作監視）を行うことになる。
【００８２】
続いて、省エネモードにおいて、操作部１１３からの入力があれば、図９に示すように、サブＣＰＵ２００は実行しているプログラムＥの電源制御機能によって、電源制御部１２３へメインＣＰＵ１００側への電源供給を再開するように指令する。これにより通常モードに復帰することになる。
【００８３】
そして、メインＣＰＵ１００では起動とともに、すなわち、メインＣＰＵ１００の状態が停止中から起動中へ変化したことを起因として、サブＣＰＵ２００が実行するプログラムをプログラムＢ：符号化プログラムに書き換える。メインＣＰＵ１００では入力されたファクシミリデータをサブＣＰＵ２００で符号処理させる。符号化したデータは、メインＣＰＵ１００へ送り返されることになり、ファクシミリデータとしてモデム１１６を介して外部へ送信されることになる。
【００８４】
このように、動作例２では、サブＣＰＵ２００に対して、省エネモードのときにはファクシミリの着信監視とともに操作部１１３の操作監視を行わせ、操作部１１３からの入力によりメインＣＰＵ１００を通常モードに復帰させたのちは、サブＣＰＵ用プログラムを書き換えて符号処理を行わせることができる。
【００８５】
次に、サブＣＰＵ２００へのプログラム書き換えの処理手順を説明する。ここでは、動作例１および２の動作を行うための処理手順を説明する。
【００８６】
図１０は、メインＣＰＵ１００が実行するプログラム書き換え処理全体の処理手順を示すフローチャートである。
【００８７】
まず、メインＣＰＵ１００は、起動時（電源投入時および省エネモードからの復帰時を含む）にサブＣＰＵ２００へのプログラムが送信済みか否かを判断する（Ｓ１０１）。送信済みか否かは、後述するＳ１０５によって行われた送信済みフラグを確認することにより行う。
【００８８】
ここでサブＣＰＵ２００へのプログラムが送信済みであれば、Ｓ１０８へ処理を進ませることになる（Ｓ１０１：ＹＥＳ）。一方、サブＣＰＵ２００へのプログラムが送信済みでなければ（Ｓ１０１：ＮＯ）、メインＣＰＵ１００は、復帰要因が着信か否かを判断する（Ｓ１０２）。復帰要因における着信は、復帰前にサブＣＰＵ２００に実行させていたプログラムによって異なり、リング検知、１３００Ｈｚトーン検知、Ｖ．２３検知などである。
【００８９】
復帰要因が着信の場合（Ｓ１０２：ＹＥＳ）、メインＣＰＵ１００は、サブＣＰＵ２００に実行させるための送信プログラムとして復号化処理を行うプログラムＡを選択する（Ｓ１０３）。この着信復帰時に選択されるプログラムがなんであるかは、ユーザーによってあらかじめ決められたものであり、不揮発性メモリー１２２に記憶されている。ここでは装置状態として着信復帰、送信プログラムとして復号化プログラムがセットになってあらかじめ設定されているものとする。設定内容はユーザーによって任意に変更可能である。設定内容は、ＭＦＰ１０の電源を落としても記憶されているように不揮発性メモリー１２２に記憶する。
【００９０】
続いてメインＣＰＵ１００は、サブＣＰＵ２００へ選択したプログラムを送信する（Ｓ１０４）。このプログラムの送信は、サブＣＰＵ２００との間で同期をとりながらの送信となる。この送信の処理手順については後述する。
【００９１】
続いてメインＣＰＵ１００は、送信済みフラグを立てる（Ｓ１０５）。送信済みフラグは不揮発性メモリー１２２に記憶することになる。なぜならＭＦＰ１０の電源を落としても、そのフラグの状態が記憶されているようにするためである。これによりＳ１０１において起動時に送信済みフラグの状態を読み出すことができる。
【００９２】
Ｓ１０２において、復帰要因が着信でなければ、続いてメインＣＰＵ１００は、着信要因が操作復帰か否かを判断する（Ｓ１０６）。そしてメインＣＰＵ１００は、送信プログラムとして符号化処理を行うプログラムであるプログラムＢを選択する（Ｓ１０７）。その後メインＣＰＵ１００は処理をＳ１０４へ進ませる。操作復帰時に選択されるプログラムがなんであるかは、ユーザーによってあらかじめ決められたものであり、不揮発性メモリー１２２に記憶されている。ここでは装置状態として操作復帰、送信プログラムとして符号化プログラムがセットになって記憶されている。
【００９３】
続いてＳ１０８において、メインＣＰＵ１００は、着信変更ありか否かを判断する（Ｓ１０８）。着信変更とは、着信モードの設定変更のことで、サブＣＰＵ２００側はこの設定に従い該当する機能を実現させるためのプログラムに書き換えることになる。この設定も、あらかじめ設定されていて不揮発性メモリー１２２に記憶されている。もちろんユーザーが任意に設定可能である。
【００９４】
着信変更がなければ（Ｓ１０８：ＮＯ）、Ｓ１１１へ進む。
【００９５】
一方、着信変更が設定されていたなら（Ｓ１０８：ＹＥＳ）、メインＣＰＵ１００はその変更内容が通常か（Ｓ１０９）、ナンバーディスプレイか（Ｓ１２１）、１３００Ｈｚ無鳴動着信か（Ｓ１３１）を、それぞれ判断する。
【００９６】
通常であれば（Ｓ１０９：ＹＥＳ）、送信プログラムとして、プログラムＣ：リング（Ｒｉｎｇ）検知＋電源制御プログラムを選択する。通常でなければ（Ｓ１０９：ＮＯ）、Ｓ１２１へ進む。
【００９７】
ナンバーディスプレイであれば（Ｓ１２１：ＹＥＳ）、送信プログラムとして、プログラムＤ：Ｖ．２３検知＋電源制御プログラムを選択する。ナンバーディスプレイでなければ（Ｓ１２１：ＮＯ）、Ｓ１３１へ進む。
【００９８】
１３００Ｈｚ無鳴動着信であれば（Ｓ１３１：ＹＥＳ）、送信プログラムとして、プログラムＥ：１３００Ｈｚトーン検知＋電源制御プログラムを選択する。１３００Ｈｚ無鳴動着信でなければ（Ｓ１３１：ＮＯ）、着信変更はないことになるので、Ｓ１１１へ進む。
【００９９】
続いて、メインＣＰＵ１００は、省エネモードへ入る時間が経過したか否かを判断する（Ｓ１１１）。ここで、何らかの入力がない時間が、あらかじめ決められた省エネモードへ入る時間を経過している場合（Ｓ１１１：ＹＥＳ）、サブＣＰＵ２００へ選択されたプログラムを送信する（Ｓ１１２）。続いて、メインＣＰＵ１００は、省エネモードへ移行するために電源制御部１２３に対してメインＣＰＵ１００側への電力供給を停止するように指令する（Ｓ１１３）。その後この手順を終了してから省エネモードに入る。
【０１００】
一方、Ｓ１１１において、省エネモードへ入る時間が経過していなければ、Ｓ１０８へ戻り、以降の処理を継続することになる。したがって、省エネモードに入るまでは着信変更（設定変更）の受付状態になっているということである。
【０１０１】
次に、Ｓ１０４およびＳ１１２のサブＣＰＵ用プログラムを送信する処理手順を説明する。図１１は、サブＣＰＵ用プログラムを送信する処理手順を示すサブルーチンフローチャートである。ここでは、メインＣＰＵ１００とサブＣＰＵ２００が同期をとってサブＣＰＵ用ＲＡＭ２２１のプログラムを書き換えることになる。このため図１１では、メインＣＰＵ１００とサブＣＰＵ２００の両方の処理手順を示した（図１１中の破線矢印は、メインＣＰＵ１００とサブＣＰＵ２００間の処理タイミングの関係を示す）。
【０１０２】
まず、メインＣＰＵ１００は、この段階（Ｓ２００）に来た時点で、これから送信するプログラムとすでにサブＣＰＵ２００へ送信済みのプログラムとを照合する（Ｓ２００）。これには、後述Ｓ２０５で記憶したプログラム名称やＩＤで確認する。送信しようとしているプログラムが送信済みプログラムと同じであれば、そのままメインルーチンＳ１０４またはＳ１１２へリターンする（この処理手順に入る前のステップへ戻る）。このＳ２００のステップによって同じものを送信してしまう時間の無駄を省くことができる。ただし、このＳ２００のステップはなくてもよい。なぜなら、同じプログラムを送信して書き換えても動作に支障はないからである。
【０１０３】
Ｓ２００の照合の結果、これから送信するプログラムと既に送信済みのプログラムが異なる場合は、続いてメインＣＰＵ１００はサブＣＰＵ２００へプログラム書き換えコマンドを送信する（Ｓ２０１）。メインＣＰＵ１００では、書き換えコマンドの送信後、書き換え準備ＯＫを受信するまで待機する（Ｓ２０２）。
【０１０４】
サブＣＰＵ２００では、プログラム書き換えコマンドを受信したか否かを判断する（Ｓ３０１）。受信しなければ（Ｓ３０１：ＮＯ）、受信待機となる。サブＣＰＵ２００は、プログラム書き換えコマンドを受信したなら（Ｓ３０１：ＹＥＳ）、プログラム書き換えモードに変更する（Ｓ３０２）。プログラム書き換えモードとはサブＣＰＵ用ＲＡＭ２２１内の自身が動作するプログラムを書き換える動作である。
【０１０５】
続いて、サブＣＰＵ２００はプログラム書き換えの準備が整ったなら準備ＯＫをメインＣＰＵ１００へ送信する（Ｓ３０３）。このプログラム書き換えの準備は、たとえば、この段階で送信されてくるプログラムをすぐに記憶できるようにする処理である（この処理にサブＣＰＵ用ＲＡＭ２２１内のプログラムの消去処理を含めても構わない）。サブＣＰＵ２００はプログラム書き換え準備ＯＫを送信後、メインＣＰＵ１００から送信されてくるプログラム等の待機状態となる（Ｓ３０４）。
【０１０６】
メインＣＰＵ１００では、書き換え準備ＯＫを受信したなら（Ｓ２０２：ＹＥＳ）、サブＣＰＵ２００に実行させるプログラム、そのプログラムのチェックサム、これらの送信後、送信完了を示す完了信号を順次送信する（Ｓ２０３）。プログラム等の送信後メインＣＰＵ１００では、サブＣＰＵ２００から書き換え結果を受信するまで待機する（Ｓ２０４）。
【０１０７】
サブＣＰＵ２００は、メインＣＰＵ１００からプログラム、そのプログラムのチェックサム、完了信号を受信したなら（Ｓ３０４：ＹＥＳ）、それらを記憶して、記憶したプログラムのチェックサムを計算し、送信されてきたチェックサムと照合する（Ｓ３０５）。
【０１０８】
続いて、サブＣＰＵ２００は、チェックサムの照合結果がＯＫならば（Ｓ３０６：ＹＥＳ）、書き換えＯＫをメインＣＰＵ１００へ送信し（Ｓ３０７）、（特に図示しないが）サブＣＰＵ用ＲＡＭ２２１内の旧プログラムを消去後、リブート後に実行できるよう、受信したプログラムに書き換える。その後サブＣＰＵ２００は自身をリブートして（Ｓ３０９）、サブＣＰＵ２００の処理は終了する。リブートによって、サブＣＰＵ２００はＳ３０５で記憶したプログラムによって動作するようになる。
【０１０９】
一方、チェックサムの照合結果が合わない場合（Ｓ３０６：ＮＯ）、書き換えＮＧをメインＣＰＵ１００へ送信する（Ｓ３０８）。その後サブＣＰＵ２００は処理を終了する。
この場合はサブＣＰＵ用ＲＡＭ２２１内の旧プログラムは消去しないため、書き換え前のプログラムが残ることになる。
【０１１０】
サブＣＰＵ２００から書き換え結果を受信したメインＣＰＵ１００では（Ｓ２０４：ＹＥＳ）、受信した結果に応じてサブＣＰＵ２００のプログラムがなんであるかを記憶する（Ｓ２０５）。サブＣＰＵ２００から書き換え結果はＯＫなら、この時点でサブＣＰＵ２００に実行させるプログラムはＳ２０３で送信したプログラム（すなわち（Ｓ１０３、Ｓ１０７、Ｓ１１０、Ｓ１２２、Ｓ１３２のいずれかで選択されたプログラム）である。したがって、Ｓ２０５ではサブＣＰＵ２００に実行させるプログラムとして、送信したプログラムの名称やプログラムＩＤなどを記憶しておくことになる。
【０１１１】
書き換え結果に応じたプログラム名称やＩＤ、またはプログラムが書き込まれていないことなどは不揮発性メモリー１２２に記憶する。したがって、不揮発性メモリー１２２は送信したプログラムの名称やプログラムＩＤなどを記憶した書き換え済みプログラム記憶部となる。
【０１１２】
なお、書き換え結果がＮＧであった場合、再度、Ｓ２０１戻り、プログラムの書き換えを実行するようにしてもよい。この場合、リトライの回数を決めておくなどして数回の書き換え処理でも不可能となった場合に書き換え結果をＮＧとする。
【０１１３】
Ｓ２０５の処理後、メインＣＰＵ１００は処理をメインルーチンのＳ１０４またはＳ１１２へリターンする（この処理手順に入る前のステップへ戻る）。
【０１１４】
以上により、サブＣＰＵ２００へのプログラムの書き換えが終了する。
【０１１５】
以上説明した処理手順によって、すでに説明した動作例１および２のように、メインＣＰＵ１００の状態変化や設定変更に応じて、サブＣＰＵ２００に様々な処理を実行させることができる。
【０１１６】
次に、サブＣＰＵ２００に様々なプログラムについての処理手順の例を説明する。
【０１１７】
サブＣＰＵ２００が実行する復号化の処理手順について説明する。この処理はメインＣＰＵ１００が起動しているときにサブＣＰＵ２００に実行させる。図１２は、サブＣＰＵ２００が実行する復号化の処理手順を示すフローチャートである。
【０１１８】
サブＣＰＵ２００は、モデム１１６からコーデック種類、受信データをバッファサイズ単位で受信する（Ｓ５０１）。
【０１１９】
続いて、サブＣＰＵ２００は、伝えられたコーデック方法で復号化し、ライン単位でメインＣＰＵ１００へ送信する（Ｓ５０２）。
【０１２０】
続いて、サブＣＰＵ２００は、最終データか否かを判断して最終データとなるまでＳ５０１へ戻り復号化を行う（Ｓ５０３：ＮＯ）。最終データの復号が終了したなら（Ｓ５０３：ＹＥＳ）、全データをメインＣＰＵ１００へ送信する（Ｓ５０４）。その後処理を終了する。なお、Ｓ５０４の全データとは、Ｓ５０２でライン単位で送信しているので、この時点で未送信のデータすべてを送信するということである。
【０１２１】
サブＣＰＵ２００が実行する符号化の処理手順について説明する。この処理はメインＣＰＵ１００が起動しているときにサブＣＰＵ２００に実行させる。図１３は、サブＣＰＵ２００が実行する符号化の処理手順を示すフローチャートである。
【０１２２】
サブＣＰＵ２００は、メインＣＰＵ１００からコーデック種類、送信データをバッファサイズ単位で受信する（Ｓ６０１）。
【０１２３】
続いて、サブＣＰＵ２００は、伝えられたコーデック方法で符号化し、バッファ単位でメインＣＰＵ１００へ送信する（Ｓ６０２）。
【０１２４】
続いて、サブＣＰＵ２００は、最終データの指定があるか否かを判断して最終データの指定があるまでＳ６０１へ戻り符号化を行う（Ｓ６０３：ＮＯ）。最終データの指定があれば符号化が終了するので（Ｓ６０３：ＹＥＳ）、全データをメインＣＰＵ１００へ送信する（Ｓ６０４）。その後処理を終了する。なお、Ｓ６０４の全データとは、Ｓ６０２でバッファサイズ単位で送信しているので、この時点で未送信のデータすべてを送信するということである。
【０１２５】
サブＣＰＵ２００が実行する画像縮小の処理手順について説明する。この処理はメインＣＰＵ１００が起動しているときにサブＣＰＵ２００に実行させる。図１４は、サブＣＰＵ２００が実行する画像縮小の処理手順を示すフローチャートである。
【０１２６】
サブＣＰＵ２００は、メインＣＰＵ１００から縮小前画像データをバッファサイズ単位で受信する（Ｓ７０１）。
【０１２７】
続いて、サブＣＰＵ２００は、伝えられたサイズ、解像度で主走査方向に縮小、副走査方向にライン間引きを実施して、バッファサイズ単位でメインＣＰＵ１００へ送信する（Ｓ７０２）。
【０１２８】
続いて、サブＣＰＵ２００は、最終データの指定があるか否かを判断して最終データの指定があるまでＳ７０１へ戻り画像縮小を行う（Ｓ７０３：ＮＯ）。最終データの指定があれば画像縮小が終了するので（Ｓ７０３：ＹＥＳ）、縮小した全データをメインＣＰＵ１００へ送信する（Ｓ７０４）。なお、Ｓ７０４の全データとは、Ｓ７０２でバッファサイズ単位で送信しているので、この時点で未送信のデータすべてを送信するということである。
【０１２９】
サブＣＰＵ２００が実行する回線電圧モニターの処理手順について説明する。この処理はメインＣＰＵ１００が起動しているときであって、ファクシミリの送受信時にサブＣＰＵ２００に実行させる。図１５は、サブＣＰＵ２００が実行する回線電圧モニターの処理手順を示すフローチャートである。回線電圧モニターとは、ファクシミリの送受信を行う回線のエラー検知などを行うための処理である。
【０１３０】
サブＣＰＵ２００は、信号検知部２４０を介して通信回線捕捉中の回線電圧をモニターする（Ｓ８０１）。
【０１３１】
続いて、サブＣＰＵ２００は、モニター中に、その時間とモニター結果である測定値（回線電圧値）を記録する（Ｓ８０２）。
【０１３２】
続いて、サブＣＰＵ２００は、通信完了後、メインＣＰＵ１００へ測定結果を送信する（Ｓ８０３）。その後処理を終了する。
【０１３３】
サブＣＰＵ２００が実行する通信時間測定の処理手順について説明する。この処理はメインＣＰＵ１００が起動しているときであって、ファクシミリの送受信時にサブＣＰＵ２００に実行させる。図１６は、サブＣＰＵ２００が実行する通信時間測定の処理手順を示すフローチャートである。通信時間測定とは、ファクシミリの送受信の際の通信時間を測定する処理である。
【０１３４】
サブＣＰＵ２００は、信号検知部２４０を介して回線電圧の測定（回線捕捉、解放）によって通信時間を測定する（Ｓ９０１）。回線電圧が所定値以上（または以下）で通信中であることを判断する。
【０１３５】
続いて、サブＣＰＵ２００は、モニター中に、その時間とモニター結果である測定値（通信時間）を記録する（Ｓ９０２）。
【０１３６】
続いて、サブＣＰＵ２００は、通信完了後、メインＣＰＵ１００へ測定結果を送信する（Ｓ９０３）。その後処理を終了する。
【０１３７】
サブＣＰＵ２００が実行するメインＣＰＵ監視の処理手順について説明する。この処理はメインＣＰＵ１００が起動しているときにメインＣＰＵ１００のエラーを検出する処理である。図１７は、サブＣＰＵ２００が実行するメインＣＰＵ監視の処理手順を示すフローチャートである。
【０１３８】
サブＣＰＵ２００は、定期的にメインＣＰＵ１００に信号を送出し、それに対する応答をモニターする（Ｓ１００１）。
【０１３９】
続いて、サブＣＰＵ２００は、応答がない場合、管理者ＰＣへ定型文を送信し通知する（Ｓ１００２）。ここで管理者ＰＣとは、あらかじめ決められたＰＣなどのことである。なお、この通知に代えて、たとえば、ＭＦＰ１０の表示部１１２に故障発生などを表示させてもよい。ただし、この場合、ＭＦＰ１０の表示部１１２やネットワーク通信部１２４に対して、故障発生など特別な場合にのみ、メインＣＰＵ１００からの制御を離れて表示やネットワーク通信が行われるようにしておく必要がある。たとえば、メインＣＰＵ１００とサブＣＰＵ２００が同じバスによって直接接続されている形態では、故障したメインＣＰＵ１００に代わり、サブＣＰＵ２００がバスによって接続されている表示部やネットワーク通信部を介して警告表示や警告メッセージを送るようにしてもよい。
【０１４０】
サブＣＰＵ２００が実行するリング検知＋電源制御の処理手順について説明する。この処理はメインＣＰＵ１００が省エネモードのときにサブＣＰＵ２００が実行する処理である。図１８は、サブＣＰＵ２００が実行するリング検知＋電源制御の処理手順を示すフローチャートである。
【０１４１】
サブＣＰＵ２００は、信号検知部２４０を介して回線電圧と到来信号のケイデンス（Ｃａｄｅｎｃｅ）をモニターし、リング信号かを判断する（Ｓ１１０１）。
【０１４２】
続いて、サブＣＰＵ２００は、所定回数検出したならメインＣＰＵ１００を起動（メインＣＰＵ１００側への電力供給）する（Ｓ１１０２）。その後処理を終了する。
【０１４３】
サブＣＰＵ２００が実行する１３００Ｈｚトーン検知＋電源制御の処理手順について説明する。この処理はメインＣＰＵ１００が省エネモードのときにサブＣＰＵ２００が実行する処理である。図１９は、サブＣＰＵ２００が実行する１３００Ｈｚトーン検知＋電源制御の処理手順を示すフローチャートである。
【０１４４】
サブＣＰＵ２００は、信号検知部２４０を介して回線上のトーン信号をモニターして、１３００Ｈｚ信号かどうか判断する（Ｓ１２０１）。
【０１４５】
続いて、サブＣＰＵ２００は、１３００Ｈｚ信号が所定フォーマットであれば、メインＣＰＵ１００を起動（メインＣＰＵ１００側への電力供給）する（Ｓ１２０２）。その後処理を終了する。
【０１４６】
サブＣＰＵ２００が実行するＶ．２３検知（ナンバーディスプレイへの対応）＋電源制御の処理手順について説明する。この処理はメインＣＰＵ１００が省エネモードのときにサブＣＰＵ２００が実行する処理である。図２０は、サブＣＰＵ２００が実行するＶ．２３検知＋電源制御の処理手順を示すフローチャートである。
【０１４７】
サブＣＰＵ２００は、信号検知部２４０を介して回線電圧と到来信号のケイデンスをモニターしてカー信号かどうかを判断する（Ｓ１３０１）。
【０１４８】
続いて、サブＣＰＵ２００は、カー検出時には一次応答して、交換機からＶ．２３信号を受信する（Ｓ１３０２）。
【０１４９】
続いて、サブＣＰＵ２００は、Ｖ．２３受信内容を記憶、受信完了後回線を開放する（Ｓ１３０３）。
【０１５０】
続いて、サブＣＰＵ２００は、回線電圧と到来信号のケイデンスをモニターしてリング信号かどうかを判断する（Ｓ１３０４）。
【０１５１】
続いて、サブＣＰＵ２００は、所定回数検出したならメインＣＰＵ１００を起動（メインＣＰＵ１００側への電力供給）する（Ｓ１３０５）。
【０１５２】
続いて、サブＣＰＵ２００は、メインＣＰＵ１００へ受信信号（ナンバーディスプレイ番号）を通知する（Ｓ１３０６）。その後処理を終了する。
【０１５３】
以上説明した実施形態によれば、以下のような効果を奏する。
【０１５４】
サブＣＰＵ２００に実行させるプログラムを複数、メインＣＰＵ１００が管理している不揮発性メモリー１２２に記憶しておき、メインＣＰＵ１００の状態変化や設定変更に応じてサブＣＰＵ２００に実行させるプログラムを適切なものに書き換えることとした。これにより、ハードウェア資源の変更とは無関係にサブＣＰＵ２００の処理能力を有効活用できるようになる。特にサブＣＰＵ２００が管理するＲＡＭ２２１などの記憶装置の容量が少ない場合に有効である。たとえば、サブＣＰＵ２００が、電源制御のみ行っているような場合、その記憶装置の容量が少ない。本実施形態では、そのような記憶容量の少ない場合でも、それに見合った大きさのプログラムを用意しておいて、状態変化や設定変更に応じてプログラムを入れ換えることで、有効にサブＣＰＵ２００を働かせることができる。
【０１５５】
また、本実施形態では、ファクシミリの通信中は、画像縮小、符号化、および復号化など、ファクシミリに直接かかわる処理を実行するように書き換えることで、サブＣＰＵ２００にファクシミリ機能の一部を担わせることができる。これによりその間メインＣＰＵでは、サブＣＰＵ２００では実行できない画像処理や画像形成のためのラスタライズなどを行うことができる。
【０１５６】
また、本実施形態では、サブＣＰＵ２００に、回線電圧、電源電圧の監視や、メインＣＰＵ１００の監視など、ファクシミリ通信に直接かかわらない処理に書き換え、実行させてもよい。この場合もメインＣＰＵ１００では、ＭＦＰ１０としてサブＣＰＵ２００では実行できない画像処理や画像形成のためのラスタライズなどを行うことができる。
【０１５７】
また、本実施形態では、省エネモードの場合の信号監視をサブＣＰＵ２００に実施させる場合は、設定に応じて、通信回線上監視する信号に合わせたプログラムに書き換えることとした。具体的には、ナンバーディスプレイが有効の場合はＶ．２３の復調機能とメインＣＰＵ１００の電源制御を行わせる。また無鳴動着信設定が有効の場合は１３００Ｈｚトーンの復調機能とメインＣＰＵ１００の電源制御を行わせる。どちらも機能ＯＦＦの場合は通常モードとしてリング検知とメインＣＰＵ１００の電源制御を行わせる。このように様々な設定を行ってユーザーの要望に合わせた省エネモードを実現できる。さらにナンバーディスプレイが有効の場合は、着信を拒否する番号（付随情報）を同時にサブＣＰＵ２００に渡すことで不要な着信を抑えることができる。このようにサブＣＰＵ２００側だけで着信拒否も行い得るので、より省エネルギー効果を高めることができる。
【０１５８】
以上実施形態を説明したが、本発明はこれら実施形態に限定されるものではない。特に、図１０および１１を用いてサブＣＰＵ２００のプログラムの書き換えを説明したが、この説明にない様々なプログラムをサブＣＰＵ２００で実行させることができる。その場合も、書き換えるプログラムが変更させるだけであって、書き換えの処理手順は同様である。
【０１５９】
また、実施形態では、サブＣＰＵ用ＲＡＭ２２１はサブＣＰＵ２００専用のものであり、サブＣＰＵ２００がプログラムの書き換えを行うこととした。しかしこれに代えて、メインＣＰＵ１００から直接サブＣＰＵ用ＲＡＭ２２１へアクセスできるようにして、メインＣＰＵ１００によってサブＣＰＵ２００が実行するプログラムを直接書き換えるようにしてもよい。
【０１６０】
そのほか、本発明は、特許請求の範囲に記載された内容によって規定されるものであり、様々な変形形態が可能である。
【符号の説明】
【０１６１】
１０  ＭＦＰ、
１００  メインＣＰＵ、
１１２  表示部、
１１３  操作部、
１１４  画像処理部、
１１５  通信制御部、
１１６  モデム、
１１７  ＮＣＵ、
１１８  読取部、
１１９  プリントエンジン、
１２０  メインＣＰＵ用ＲＯＭ、
１２１  メインＣＰＵ用ＲＡＭ、
１２２  不揮発性メモリー、
１２３  電源制御部、
１２４  ネットワーク通信部、
１３０  サブＣＰＵ通信部、
１５０  メインＣＰＵ用バス、
２００  サブＣＰＵ、
２２０  サブＣＰＵ用ＲＯＭ、
２２１  サブＣＰＵ用ＲＡＭ、
２３０  メインＣＰＵ通信部、
２５０  サブＣＰＵ用バス。
【図１】
0006503784.tif 000002
【図２】
0006503784.tif 000003
【図３】
0006503784.tif 000004
【図４】
0006503784.tif 000005
【図５】
0006503784.tif 000006
【図６】
0006503784.tif 000007
【図７】
0006503784.tif 000008
【図８】
0006503784.tif 000009
【図９】
0006503784.tif 000010
【図１０】
0006503784.tif 000011
【図１１】
0006503784.tif 000012
【図１２】
0006503784.tif 000013
【図１３】
0006503784.tif 000014
【図１４】
0006503784.tif 000015
【図１５】
0006503784.tif 000016
【図１６】
0006503784.tif 000017
【図１７】
0006503784.tif 000018
【図１８】
0006503784.tif 000019
【図１９】
0006503784.tif 000020
【図２０】
0006503784.tif 000021