(57)【特許請求の範囲】
【請求項１】
メモリに記憶されたモジュールを情報記録媒体に記録されているモジュールによって書き換えるメモリ書換え方法であって、
前記情報記録媒体は、前記メモリに記憶された書き換えるモジュールのうち参照すべきモジュールについての情報を示す参照モジュール情報と、書き換えるモジュールであって前記参照モジュール情報におけるモジュールと名称が異なるモジュールの情報を示す書き換えモジュール情報とを記憶し、
前記参照モジュール情報が示す前記参照すべきモジュールの情報と、前記メモリに記憶されているモジュールの情報とを照合する照合工程と、
前記照合工程において前記参照モジュール情報が示す情報と前記メモリに記憶されているモジュールの情報とが合致した場合、合致した前記参照モジュール情報が示す前記参照すべきモジュールの名称を表示する表示工程と、
前記表示工程において表示された前記参照すべきモジュールの名称と名称が異なる前記書き換えモジュール情報が入力された場合、前記書き換えモジュール情報が示すモジュールで前記メモリに記憶されたモジュールを書き換える書換え工程と、
を含むことを特徴とするメモリ書換え方法。
【請求項２】
前記情報記録媒体が、記録されているモジュール間の依存関係に関する依存情報を有するとともに、前記メモリ内に記憶されているモジュールの名称と合致した名称の参照モジュールと依存関係がある依存モジュール群を前記依存情報に基づいて前記メモリに一括して書き込む依存ファイル書込み工程をさらに含むことを特徴とする請求項１に記載のメモリ書換え方法。
【請求項３】
前記依存ファイル書込み工程は、前記依存モジュール群に関する情報を一時的に保存する一時保存工程をさらに含み、依存ファイル書込み工程中に電力の供給が断たれた場合、再開時には前記一時保存工程によって保存された前記依存モジュール群に関する情報に基づいて依存関係にあるモジュール群を前記メモリに一括して書き込むことを特徴とする請求項２に記載のメモリ書換え方法。
【請求項４】
前記メモリがフラッシュメモリであることを特徴とする請求項１〜３のいずれか一つに記載のメモリ書換え方法。
【請求項５】
前記情報記録媒体がフラッシュメモリを備えたカード式の情報記録媒体であるフラッシュカードであることを特徴とする請求項１〜４のいずれか一つに記載のメモリ書換え方法。
【請求項６】
コンピュータに、上記請求項１〜５のメモリ書換え方法のいずれか一つを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、システム監視下で行われるメモリ上のファイルシステムを書き換えるメモリの書換え方法およびその方法をコンピュータに実行させるためのプログラムに関する。
【０００２】
【従来の技術】
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という）が一般的に知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する３種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
従来の複合機では、内部にプリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェア（汎用ＯＳを含む）をそれぞれ別個に設ける構成となっており、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置を発明した。
【０００４】
この画像形成装置によれば、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
【０００５】
このような複合機は、複数のアプリケーションやプラットホームを構成する複数のコントロールサービスなどのプログラムがコントローラボード上のフラッシュメモリなどのＲＯＭ（Read Only Memory）に予め組み込まれた状態で出荷されている。このため、複合機に設計変更や新たな機能の追加が生じた場合には、アプリケーションやコントロールサービスなどのプログラムを更新するために、これらのプログラムを記録したＲＯＭを更新する必要性が生じてくる。
【０００６】
このようなＲＯＭ更新の方法としては、従来は、各プログラムの更新データと、更新データでアプリケーションやコントロールサービスの既存のプログラムを書き換えるために実行する更新プログラムとを複合機の機種ごとに個別のフラッシュカードなどの更新用記録媒体に格納していた。そして、この更新対象プログラムが搭載されている複合機の機種に応じて更新用フラッシュカードを選択し、選択した更新用フラッシュカードを複合機の記録媒体制御装置に挿入した状態で複合機を電源投入する。このとき、複合機のブートローダによって更新用フラッシュカードに格納された更新プログラムが起動し、この更新プログラムによって更新用フラッシュカード上の更新データを読み出して、ＲＯＭ上のアプリケーションやコントロールサービスの各プログラムを更新データで書き換えるという処理を行っていた。
【０００７】
図１０は、コントローラボード上のフラッシュメモリを、フラッシュカードを使って書き換える従来の技術を説明するための図である。組み込み系のソフトウェアを使用するシステムは、システムを構成するコントローラボード上のメモリマップにブートベクタを記憶させ、ブートベクタのアドレスにブートプログラムを配置してシステムプログラムの起動に使用している。また、コントローラボード上にはディップスイッチが設けられていて、コントローラボード上のフラッシュメモリなどのメモリを書き換える場合にはディップスイッチを切り換えることによってコントローラボード上にあるフラッシュメモリの領域とフラッシュカードの領域とを切り換えている。
【０００８】
上記した従来技術は、ディップスイッチを切り換えるために工具を使ってコントローラボードのカバーをはずす作業が必要であるために切り換えの作業に手間がかかるという欠点があった。また、ディップスイッチ切り換えの作業中に本体が動かなくなる。さらにはメモリを切り換えることにチェック機構が存在しないために不正な書き換え、あるいは誤って意図しない書き換えがなされる可能性があった。
【０００９】
上記した不具合を解決するため、フラッシュカードに記録されているモジュール情報とフラッシュメモリの情報（moduleinfo.txt）から取得したモジュール情報とを照合し、フラッシュメモリの情報に一致したフラッシュカードのモジュールだけを表示部に表示する技術がある。この技術において、ユーザは、表示されたモジュールを書き換える場合に入力部を操作して書き換えを実行する。なお、この技術では、フラッシュメモリの書き換えはモジュールと呼ばれる１ファイルシステムを単位として行っている。
【００１０】
【発明が解決しようとする課題】
しかしながら、上記したフラッシュカードとフラッシュメモリとのモジュールの情報を照合する技術は、不正な書き換えを防止することができる一方でフラッシュメモリのモジュールを意図的に他のモジュールに書き換えることができない。そして、このためにコントローラボード上のフラッシュメモリの用途が固定してしまい、機能ごとに情報処理装置を用意しなければならないという不具合があった。
【００１１】
また、フラッシュメモリのモジュールを別の機能を持ったモジュールに書き換えるには、フラッシュカードに記憶されたモジュールにフラッシュメモリのモジュール情報と一致する名前をつけることが考えられる。ただし、このようにした場合、自ら不正なフラッシュカードを作成することになる。さらに、モジュール情報と実際に記録されているモジュールデータが異なるフラッシュカードが作成されることになり、フラッシュカードの管理上不具合が生じる。
【００１２】
さらに、従来の技術は、フラッシュカードに記憶されているモジュール同士に依存関係があるとき、一部のモジュールだけを書き換える可能性があった。依存関係がある複数のモジュールの一部だけを書き換えられた場合、システムは、不具合を生じることがある。
【００１３】
本発明は、上記した点に鑑みてなされたものであり、コントロールボード上のモジュールを別の機能を持つモジュールに書き換えることができ、しかも不正な書き換えを防止できるメモリ書換え方法およびその方法をコンピュータに実行させるためのプログラムを提供することを第１の目的とする。
【００１４】
また、本発明は、互いに依存関係にあるすべてのモジュールを一括してメモリに書込むことができ、システムに不具合が発生することを防止することができるメモリ書換え方法およびその方法をコンピュータに実行させるためのプログラムを提供することを第２の目的とする。
【００１５】
さらに、本発明は、モジュールを書き換えている間に電源が切れて電力の供給が断たれた場合にも再度電力が供給されたときに互いに依存関係にあるすべてのモジュールを一括して書き換えることができるメモリ書換え方法およびその方法をコンピュータに実行させるためのプログラムを提供することを第３の目的とする。
【００１６】
【課題を解決するための手段】
上記した課題を解決し、目的を達成するため、請求項１に記載の発明にかかるメモリ書換え方法は、メモリに記憶されたモジュールを情報記録媒体に記録されているモジュールによって書き換えるメモリ書換え方法であって、前記情報記録媒体は、前記メモリに記憶された書き換えるモジュールのうち参照すべきモジュールについての情報を示す参照モジュール情報と、書き換えるモジュールであって前記参照モジュール情報におけるモジュールと名称が異なるモジュールの情報を示す書き換えモジュール情報とを記憶し、前記参照モジュール情報が示す前記参照すべきモジュールの情報と、前記メモリに記憶されているモジュールの情報とを照合する照合工程と、前記照合工程において前記参照モジュール情報が示す情報と前記メモリに記憶されているモジュールの情報とが合致した場合、合致した前記参照モジュール情報が示す前記参照すべきモジュールの名称を表示する表示工程と、前記表示工程において表示された前記参照すべきモジュールの名称と名称が異なる前記書き換えモジュール情報が入力された場合、前記書き換えモジュール情報が示すモジュールで前記メモリに記憶されたモジュールを書き換える書換え工程と、を含むことを特徴とする。
【００１７】
この請求項１に記載の発明によれば、情報記録媒体は、メモリに記憶された書き換えるモジュールのうち参照すべきモジュールについての情報を示す参照モジュール情報と、書き換えるモジュールであって参照モジュール情報におけるモジュールと名称が異なるモジュールの情報を示す書き換えモジュール情報とを記憶し、参照モジュール情報が示す参照すべきモジュールの情報と、メモリに記憶されているモジュールの情報とを照合し、参照モジュール情報が示す情報とメモリに記憶されているモジュールの情報とが合致した場合、合致した参照モジュール情報が示す参照すべきモジュールの名称を表示し、表示された参照すべきモジュールの名称と名称が異なる書き換えモジュール情報が入力された場合、書き換えモジュール情報が示すモジュールでメモリに記憶されたモジュールを書き換える。
【００１８】
請求項２に記載の発明にかかるメモリ書換え方法は、前記情報記録媒体が、記録されているモジュール間の依存関係に関する依存情報を有するとともに、前記メモリ内に記憶されているモジュールの情報と合致した情報の参照モジュールと依存関係がある依存モジュール群を前記依存情報に基づいて前記メモリに一括して書き込む依存ファイル書込み工程をさらに含むことを特徴とする。
【００１９】
この請求項２に記載の発明によれば、情報記録媒体が、記録されているモジュール間の依存関係に関する依存情報を有するとともに、メモリ内に記憶されているモジュールの名称と合致した名称の参照モジュールと依存関係がある依存モジュール群を依存情報に基づいて前記メモリに一括して書き込む。
【００２０】
請求項３に記載の発明にかかるメモリ書換え方法は、前記依存ファイル書込み工程は、前記依存モジュール群に関する情報を一時的に保存する一時保存工程をさらに含み、依存ファイル書込み工程中に電力の供給が断たれた場合、再開時には前記一時保存工程によって保存された前記依存モジュール群に関する情報に基づいて依存関係にあるモジュール群を前記メモリに一括して書き込む。
【００２１】
この請求項３に記載の発明によれば、モジュールの依存関係に関する情報を一時的に保存することができる。そして、依存ファイル書込み工程中に電力の供給が断たれた場合、再開時には一時的に保存された依存モジュール群に関する情報に基づいて依存関係にあるモジュールメモリに一括して書き込む。
【００２２】
請求項４に記載の発明にかかるメモリ書換え方法は、前記メモリがフラッシュメモリであることを特徴とする。
【００２３】
この請求項４に記載の発明によれば、メモリをフラッシュメモリとすることができる。
【００２４】
請求項５に記載の発明にかかるメモリ書換え方法は、前記情報記録媒体がフラッシュメモリを備えたカード式の情報記録媒体であるフラッシュカードであることを特徴とする。
【００２５】
この請求項５に記載の発明によれば、情報記録媒体をフラッシュメモリを備えたカード式の情報記録媒体であるフラッシュカードとすることができる。
【００２６】
請求項６に記載の発明にかかるプログラムは、コンピュータに、上記請求項１〜５のメモリ書換え方法のいずれか一つを実行させることを特徴とする。
【００２７】
この請求項６に記載の発明によれば、コンピュータに、上記請求項１〜５のメモリ書換え方法のいずれか一つを実行させることができる。
【００２８】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるメモリ書換え方法およびその方法をコンピュータに実行させるためのプログラムの好適な実施の形態を詳細に説明する。
【００２９】
図１は、本発明が適用される画像形成装置（以下、「複合機」という）の構成を示すブロック図である。図１に示すように、複合機１００は、白黒ラインプリンタ（B&W LP）１０１と、カラーラインプリンタ（Color LP）１０２と、スキャナ、ファクシミリなどのハードウェアリソース１０３などを有するとともに、プラットホーム１２０とアプリケーション１３０とから構成されるソフトウェア群１１０と電源投入時に実行される複合機起動部１４０とを備えている。
【００３０】
複合機起動部１４０は、複合機１００の電源投入時にまずはじめに実行され、上記各モジュールを起動モードに応じて実行するものである。ここで、起動モードには通常モードとＲＯＭ更新モードがある。通常モードとは、複合機でコピー、プリント、スキャナ、ファクシミリなど通常の複合サービスを行うために起動するモードである。ＲＯＭ更新モードとは、フラッシュメモリの更新を行うために複合機を起動するモードであり、ＲＯＭ更新フラッシュカード２０７を挿入した状態で電源投入が行われた場合に複合機はＲＯＭ更新モードで起動する。
【００３１】
プラットホーム１２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。
【００３２】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成される。なお、このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００３３】
汎用ＯＳ１２１は、ＵＮＩＸなどの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００３４】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御するという複合サービスを行う際に実行される通常モードスレッドと、かかるリソース管理を実行せずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００３５】
具体的には、このＳＲＭ１２３の通常モードスレッドは、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００３６】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御という複合サービスを行う際に実行される通常モードスレッドを有している。
【００３７】
ＳＣＳ１２２のプロセスは、さらに複合機１００がＲＯＭ更新モードで起動された場合にのみ起動されるＲＯＭ更新モードスレッドを通常モードスレッドとは別個に有している。このＲＯＭ更新モードスレッドは、複合機１００がＲＯＭ更新モードで起動されたときに、ＲＯＭ更新フラッシュカード２０７に記録されている更新データの中から、複合機１００で動作するアプリケーション、コントロールサービスの構成に応じた更新データを選定する処理を行う。
【００３８】
ＥＣＳ１２４のプロセスは、白黒ラインプリンタ（B&W LP）１０１、カラーラインプリンタ（Color LP）１０２、スキャナ、ファクシミリなどからなるハードウェアリソース１０３のエンジンの制御という複合サービスを行う際に実行される通常モードスレッドと、このようなエンジン制御を行わずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００３９】
ＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などのコピー、プリンタ、ファクシミリおよびスキャナなどの複合サービスを行う際に実行される通常モードスレッドと、かかる機能を実行せずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００４０】
ＯＣＳ１２６のプロセスは、オペレータと本体制御間の情報伝達手段となる操作パネル（オペレーションパネル）の制御という複合サービスを行う際に起動される通常モードスレッドと、かかる操作パネルの制御を行わず単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００４１】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供するという複合サービスを行う際に起動される通常モードスレッドと、かかる機能を実行せずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００４２】
ＮＣＳ１２８は、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行うという複合サービスを行う際に実行される通常モードスレッドと、かかる機能を実行せずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００４３】
このように、ＥＣＳ１２４、ＭＣＳ１２５、ＯＣＳ１２６、ＦＣＳ１２７、ＮＣＳ１２８、ＳＲＭ１２３の各ＲＯＭ更新モードスレッドはいずれも単に起動されるだけであるが、これは、ＲＯＭ更新処理時に、複合機内部で動作するコントロールサービスの存在を示すために起動されるようになっている。ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＲＯＭ更新処理時に更新データの選定処理を行うとともに、複合機内部で動作するコントロールサービスの存在を示すために起動されるようになっている。
【００４４】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５と、工程検査用アプリケーションである工程検査アプリ１１６とを有している。
【００４５】
図２は、図１に示した複合機のハードウェア構成図である。図２に示すように、この複合機は、ＣＰＵ２０２、ＳＤＲＡＭ２０３、ＳＲＡＭ２０８、フラッシュメモリ（フラッシュＲＯＭ）２０４、フラッシュカードインタフェース部２０６およびＨＤ２０５などをＡＳＩＣ２０１に接続したコントローラボード２００と、オペレーションパネル２１０と、ファックスコントロールユニット（ＦＣＵ）２２０と、ＵＳＢ２３０と、ＩＥＥＥ1394 ２４０と、プリンタ２５０から構成されている。オペレーションパネル２１０はＡＳＩＣ２０１に直接接続され、ＦＣＵ２２０、ＵＳＢ２３０、ＩＥＥＥ1394 ２４０およびプリンタ２５０はＰＣＩバスを介してＡＳＩＣ２０１に接続されている。
【００４６】
また、オペレーションパネル２１０は、後述するように、フラッシュカード２０７に記憶されているモジュールのうち、フラッシュＲＯＭ２０４に記憶されているモジュールと参照データが合致するモジュールを表示するための表示部２１０ａを備えている。
【００４７】
フラッシュカードインタフェース部２０６は、フラッシュカード２０７を挿入して、フラッシュカード２０７とデータのやりとりを行うインタフェースである。フラッシュカード２０７は、上述の各アプリ、各コントロールサービスおよびシステムリソースマネージャの各プログラムの更新データや更新先アドレスなどをファイルシステムとして格納するものである。
【００４８】
ＳＲＡＭ２０８は、ＲＯＭ更新中に電源が切れた場合に、処理復帰のために更新中の各種情報を蓄積する不揮発性メモリである。
【００４９】
フラッシュメモリ（以下、「フラッシュＲＯＭ」という）２０４には、上述の各アプリ、プラットホーム１２０を構成する各コントロールサービスやＳＲＭ１２３の各プログラムが格納されている。また、フラッシュＲＯＭ２０４には、ファイルシステムとして管理されるモジュール（１つのモジュールは１つのファイルシステムでなる）が複数配置されている。ＣＰＵ２０２は、フラッシュＲＯＭ２０４を、マウントして使用している。
【００５０】
次に、フラッシュメモリ２０４に記憶されたファイルシステム、フラッシュカード２０７のファイルシステムの各ブロックの構成について示す。モジュールで構成されるファイルシステムは、ファイルシステム情報、ディレクトリ(directory)情報、ファイル情報、パス情報、ファイルデータの５個のブロックで構成されており、ファイルシステム内のルート直下にはモジュール名とモジュールのバージョン名とが記録されたテキストファイル(moduleinfo.txt)が配置されている。
【００５１】
Ａフラッシュメモリ
１．ファイルシステム情報
struct rom_sblock {
unsigned long magic;        チェック用のマジックナンバー
long          time;         ファイルシステムの作成日時 (1970/01/01 00:00:00 からの経過秒数)
unsigned long bsize;        ファイルシステムのブロックサイズ ( 4096 )
unsigned long blocks;       データ領域のブロック数
unsigned long files;        総ファイル数
unsigned long nrdirent;     ディレクトリ情報の個数
unsigned long nrnode;       ファイル情報の個数
unsigned long pathsize;     パス情報の総サイズ
unsigned long data_offset;  先頭アドレスからデータ領域までのオフセット量};
【００５２】
２．ディレクトリ情報
struct rom_dirent {
unsigned long name;         ファイル名の文字列が、パス情報のどの位置にあるかを示すオフセット値
unsigned long rno;          ファイルの番号
unsigned long seq;          ディレクトリの中での、ファイルの順番を示す値};
【００５３】
ディレクトリ情報は、ディレクトリ内に存在するファイルの数だけ、必ず連続して存在する。ファイルの順番ｓｅｑは、ディレクトリの最初のエントリから降順に割り振られていて、最後のエントリは０となる。つまり、ｓｅｑは、ディレクトリの中に残っているファイルの数を示す値となる。あるディレクトリ中にあるファイル（filename）が存在する場合のディレクトリ構造を、図３に例示する。
【００５４】
３．ファイル情報（ファイル情報のテーブル）
ファイルシステム中のファイルは、各々以下の情報（ファイル情報）を持つ。ファイル情報は、ファイル番号（ｒｎｏ）順に配列されていて、ファイル番号をインデックスとして使用することによりファイル情報が簡単に取り出すことができる。
【００５５】
struct romfs_rnode {
unsigned short       mode   UNIX（登録商標） ファイル互換のモード情報
unsigned short       nlink  このファイルへのハードリンクの数
unsigned long        size   ファイルのデータサイズ
unsigned long        rno    ファイルシステム内部のファイル番号
long                 ctime  ファイルの作成日時情報 (1970/01/01 00:00:00 からの経過秒数)
unsigned long        uid    所有者のユーザ番号
unsigned long        gid    グループ番号
unsigned long        offset ファイルのデータの位置情報 (ファイルシステムのデータ領域の先頭からのオフセット、ただし、ディレクトリの場合には、ディレクトリ情報の中でのオフセット値)
};
【００５６】
４．パス情報（ファイル名のテーブル）
パス情報には、ファイルシステム中に存在するすべてのファイル名の文字列が格納されている。すべての文字列は、ＮＵＬＬ（==0x00）で終端される。各ファイルの文字列は、ファイルに該当するディレクトリ情報のnameポインタによって指定される。
【００５７】
また、ファイルがシンボリックファイルの場合、ファイル情報のｄａｔａ＿ｏｆｆｓｅｔポインタが指す先のパス情報領域にシンボリックリンク先のファイル名が格納される。
【００５８】
５．ファイルデータ
ファイルシステム中にあるすべてのデータは、ブロック単位で格納されている。このため、例えば、容量が１バイトだけのファイルであってもファイルシステムのデータ領域では１ブロック分（４０９６バイト）を占有する。
【００５９】
Ｂフラッシュカード
次に、フラッシュカード２０７に記録されているデータについて説明する。図４は、フラッシュカード２０７に記憶されているデータの構造を示す図である。ＲＯＭ更新フラッシュカード２０７には、図４に示すように、先頭のＲＯＭモニタ起動命令４００と、カード識別番号４０１と、ヘッダ部４０２と、データ部４０３とから構成されるデータが記録されている。
【００６０】
本実施の形態のフラッシュカード２０７は、記録されているファイルシステムの名称（例えばモジュールＩＤ）とは別に、参照すべきファイルシステムに関する参照データを有している。参照データについては、後に詳述するものとする。
【００６１】
ＲＯＭモニタ起動命令４００は、複合機の起動時に参照されて後述するＲＯＭモニタの起動を行うコマンドである。カード識別番号４０１は、フラッシュカード２０７の種類を識別するものであり、ＲＯＭ更新カード用、言語カード用、編集カード用にそれぞれの識別番号が予め割り当てられている。この実施の形態１において使用するＲＯＭ更新フラッシュカード２０７には、ＲＯＭ更新カード用の固有の番号がカード識別番号４０１に記録されている。
【００６２】
ヘッダ部４０２は、更新するモジュールごとのヘッダブロックに分かれており、各ヘッダブロックには次のヘッダブロックまでのオフセットである次ヘッダオフセットと、モジュールの更新データまでのオフセットである更新データオフセットと、更新データのサイズと、モジュールの識別情報であるモジュールＩＤと、そのモジュールのフラッシュＲＯＭ２０４上での相対番地を示す更新先アドレスと、そのモジュールのサイズである更新先領域長とから構成される。
【００６３】
ここで、モジュールは、ＭＣＳ１２５、ＥＣＳ１２４、ＮＣＳ１２８などのコントロールサービス単位のプログラム、プリンタアプリ１１１、コピーアプリ１１２などのアプリ単位のプログラム、プリンタエンジン１０１，１０２、スキャナエンジンなどのエンジン単位のプログラムで更新可能となっている。また、更新データとは、これらのモジュールに対する変更プログラムのバイナリデータを圧縮形式にしたものである。
【００６４】
以下に、ヘッダ部４０２に含まれるヘッダ情報を示す。
１．ヘッダ情報
struct card_header {
unsigned long magic;        チェック用のマジックナンバー
unsigned long offset;       モジュール情報へのオフセット量
};
【００６５】
ヘッダ部４０２の後ろからはデータ部４０３が記録されており、データ部４０３には更新データがモジュールごとに格納されている。各モジュールの更新データは、フラッシュメモリ２０４のファイルデータを更新するデータであって、先頭がモジュールに対応するヘッダブロックの更新データオフセットにより参照できるようになっている。
【００６６】
図５は、参照データ４０４のデータ構造を説明するための図である。図示したように、参照データ４０４は、複数のモジュール書換え情報と、モジュール書換え情報によってフラッシュＲＯＭ２０４のモジュールを書き換える処理を実行するためのモジュール書換え指示情報で構成されている。モジュール書換え情報は、フラッシュＲＯＭ２０４にあるモジュールを書き換える更新データを記憶したモジュール（書換えモジュール）に関する情報である。
【００６７】
また、モジュール書換え指示補助情報は、フラッシュＲＯＭ２０４に書き込まれているモジュールのうち参照すべきモジュールについての情報である参照モジュール指定指示情報と、依存関係があってフラッシュＲＯＭ２０４に一括して書き込まれるモジュールの情報である書換えモジュール指定指示情報とを持っている。
【００６８】
以下、図５に示した各情報の内容について記す。
２．モジュール情報
モジュール書換え情報とモジュール書換え指示情報は同一の構造を持っており、両者は、それぞれが有する識別情報によって識別される。
【００６９】
２−１−１モジュール書換え情報
struct moduleinfo {
unsigned char module[16]    書き換えモジュール名unsigned char version[16]   モジュールバージョン
unsigned long data_offset;  先頭アドレスからデータ領域までのオフセット量
unsigned long data_size;    データ領域のサイズ
unsigned long compress;     圧縮情報
unsigned long dist_addr;    書き込み先アドレス
unsigned long dist_size;    書き込み先領域
unsigned long next_offset;  次のモジュール情報へのオフセット量
};
【００７０】
２−２−１モジュール書換え指示情報
struct moduleinfo {
unsigned char module[16]    書き換え指示名称
unsigned char version[16]   未使用
unsigned long data_offset;  モジュール書き換え指示情報から書き換え指示補助情報までのオフセット量
unsigned long data_size;    書き換え指示補助情報のサイズ（0x14）
unsigned long flag;         圧縮情報および識別情報、メニュー非表示情報
unsigned long dist_addr;    書き込み先アドレス（未使用）
unsigned long dist_size;    書き込み先領域（未使用）
unsigned long next_offset;  次のモジュール情報へのオフセット量
};
【００７１】
識別情報と共に格納されているメニュー非表示情報は、フラッシュカード２０７に記憶されているモジュールとフラッシュＲＯＭ２０４内のモジュールとの間でモジュール名、マウントアドレスの整合がとれた場合に書換えモジュール名を表示するか否かを判断する処理に使用される情報である。
【００７２】
２−２−２．モジュール書き換え指示補助情報
struct moduleinfo_aux {
struct smoduleinfo   *smi;  書き換え指示補助情報から参照モジュール指定指示情報へのポインタ
struct wmoduleinfo   *wmi;  書き換え指示補助情報から書き換えモジュール指定指示情報へのポインタ
unsigned long flag;         未使用
};
【００７３】
２−２−３．参照モジュール指定指示情報
struct smoduleinfo {
unsigned char module[16]           参照モジュール名
unsigned char version[16]          モジュールバージョン
unsigned long rom_addr;            参照モジュールのアドレス
unsigned long rom_size;            参照モジュールのサイズ
unsigned long flag;                未使用
unsigned long next_offset;         次のモジュール情報へのオフセット量
};
【００７４】
２−２−４．書き換えモジュール指定指示情報
struct wmoduleinfo {
unsigned char module[16]           書き換えモジュール名
unsigned long flag;                未使用
unsigned long next_offset;         次のモジュール情報へのオフセット量
};
【００７５】
図６は、本実施の形態の複合機における複合機起動部１４０の構成を示すブロック図である。複合機起動部１４０は、図６に示すとおり、ＲＯＭモニタ６１０と、プログラム起動部６２０と、ＲＯＭ更新モードスレッドを起動したＳＣＳ１２２と、ＲＯＭ更新部６３０とから構成される。ＲＯＭモニタ６１０、プログラム起動部６２０、ＲＯＭ更新部６３０もフラッシュＲＯＭ２０４に記憶されている。
【００７６】
ＲＯＭモニタ６１０は、ＲＯＭ更新フラッシュカード２０７の先頭に記録されたＲＯＭモニタ起動命令を実行することにより起動され、ハードウェアの初期化、コントローラボードの診断、ソフトウェアの初期化、汎用ＯＳ１２１の起動などを行う。
【００７７】
プログラム起動部６２０は、汎用ＯＳ１２１から呼び出されるものであり、起動モード設定部６２１と、サービス層起動部６２２と、アプリ起動部６２３と、アプリ起動情報設定部６２４とから構成される。起動モード設定部６２１は、ＲＯＭ更新フラッシュカード２０７のカード識別番号のチェックを行って、通常モードまたはＲＯＭ更新モードの起動モードの設定を行う。サービス層起動部６２２は、汎用ＯＳ１２１の起動情報を取得して、コントロールサービスを起動する。アプリ起動情報設定部６２４は、ＲＯＭ更新モードの場合に実行され、各アプリの起動情報を取得して、取得したアプリ起動情報を環境変数に設定する。アプリ起動部６２３は、起動モードが通常モードである場合に実行され、各アプリの起動情報を取得して各アプリを起動する。
【００７８】
ＳＣＳ１２２のＲＯＭ更新モードスレッドは、プログラム起動部６２０のサービス層起動部６２２によって他のコントロールサービスとともに起動される。ＳＣＳ１２２のＲＯＭ更新モードスレッドでは、複合機１００で動作するコントロールサービスやアプリを判断して、ＲＯＭ更新フラッシュカード２０７から複合機１００の構成に応じた更新データを選定する。また、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＲＯＭ更新部６３０を起動して、ＲＯＭ更新部６３０に対して選定した更新データの情報とともにＲＯＭ更新命令を発する。
【００７９】
ＲＯＭ更新部６３０は、ＳＣＳ１２２のＲＯＭ更新モードスレッドにより起動され、ＳＣＳ１２２からＲＯＭ更新命令を受け取って、更新データでフラッシュＲＯＭ２０４を書き換えるものである。ＲＯＭ更新部６３０は、ＳＣＳ１２２からのＲＯＭ更新命令を解析するＲＯＭ更新命令解読部６３１と、更新先アドレスと解析したＲＯＭ更新命令に基づいてフラッシュＲＯＭ２０４のプログラムを書き換えるＲＯＭ更新処理部６３３と、ＲＯＭ更新中の各種情報をＳＲＡＭへ格納するＳＲＡＭ処理部６３２と、ＲＯＭ更新処理中のユーザへの進捗表示を制御する表示制御部６３４とから構成される。
【００８０】
以上述べた複合機起動部１４０は、以下のように動作する。すなわち、ＲＯＭ更新命令解読部６３１は、参照モジュール指定指示情報を解析し、参照モジュール指定情報とフラッシュＲＯＭ２０４に記憶されているファイルシステムの情報とを照合する。
【００８１】
さらに、ＲＯＭ更新命令解読部６３１は、照合の結果、参照モジュール指定指示情報のすべてがフラッシュＲＯＭ２０４のファイルシステムと合致した場合、ファイルシステムを書換えることが可能なフラッシュカード２０７のモジュールをすべて表示部２０１ａに表示する。このとき、書き換え可能なモジュールが複数あった場合、複数のモジュールを一括して書換可能なモジュール群としてモジュール郡としての別称とバージョン情報とを表示する。
【００８２】
このとき、モジュール書換え指示情報のメニュー非表示情報において、依存関係にあるモジュールとして記述されているモジュールの情報を非表示とする。メニュー非表示情報で非表示に設定されている書換えモジュールは、他のモジュールと依存関係にあるモジュールであって、非表示とすることによって単体モジュールが誤って書き換えられることを防ぐことができる。
【００８３】
ユーザは、表示部２１０ａに表示された参照モジュールのうちから書き換えを希望するモジュールを選択する。ＲＯＭ更新処理部６３３は、選択されたモジュールのモジュール情報にしたがってフラッシュＲＯＭ２０４のファイルシステムを書き換える。このとき、ユーザが単一のモジュールを指定した場合、選択されたモジュールがモジュール情報にしたがってフラッシュＲＯＭ２０４のモジュールに書込まれる。
【００８４】
ただし、ユーザが表示されたモジュールを一括して書込むことを選択した場合、ＲＯＭ更新命令解読部６３１は、書換えモジュール指定指示情報に基づいてフラッシュカードのモジュール情報から書き換えを行うモジュールを検索し、モジュールの書換えスケジュールを作成する。ＲＯＭ更新処理部６３３は、作成されたスケジュールにしたがってフラッシュＲＯＭ２０４のモジュールを書き換える。
【００８５】
以上述べた処理において、他のモジュールと依存関係があるモジュール（依存モジュール）については予めメニュー非表示情報を非表示に設定しておけば、単体モジュールの書き誤りを防ぐことができる。
【００８６】
さらに、本実施の形態は、モジュールを一括して書込む際には書換えモジュール指定指示情報に記述された書換えモジュールをフラッシュカード２０７から検索してモジュールの書換えスケジュールを作成する。このとき、フラッシュカード２０７のモジュール書換え指定指示情報として依存関係にあるモジュールの情報が記述されている。スケジュールは、スケジュールが表示部２０１ａに表示されて書き込まれるモジュールと共に依存関係があるモジュールをも書きこむように作成される。そして、ＲＯＭ更新処理部６３３は、スケジュールにしたがって順番にフラッシュＲＯＭ２０４を書き換えることにより、関係するモジュールをフラッシュＲＯＭ２０４に一括して書きこむことができる。
【００８７】
さらに、本実施の形態のメモリ書換え方法では、モジュールを書き換える際に書換えスケジュールに関する情報をＳＲＡＭ２０８に一時的に保存する。そして、依存モジュールの書き換え中に電力の供給が断たれた後再開したとき、ＳＲＡＭ２０８に保存されたスケジュールに基づいて書き換えを行っている。このため、書換えが中断したときにもスケジュールにしたがって依存関係にあるモジュールを一括して書きこむことができる。
【００８８】
次に、以上述べた本実施の形態のメモリ書換え方法を、図７、図８にフローチャートとして示し、説明する。なお、図８は、図７に示した書換え処理サブルーチンを説明するためのフローチャートである。
【００８９】
ユーザは、先ず、フラッシュカード２０７をフラッシュＲＯＭ２０４を備える複合機のフラッシュカードインタフェース部２０６に挿入し、電源を入れる。プログラム起動部６２０は、システムを起動してフラッシュカード２０７のヘッダ情報にあるマジックナンバをチェックする。そして、チェックの結果、マジックナンバがモジュールの書き換えに適切なものか否か判断する（ステップＳ７０１）。マジックナンバが適切なものでない場合（ステップＳ７０１：Ｎｏ）、ＲＯＭ更新部６３０が、ＳＲＡＭ２０８に書き換えのためのデータがあるか否か判断する（ステップＳ７０２）。
【００９０】
ステップＳ７０２の判断の結果、データがあった場合には（ステップＳ７０２：Ｙｅｓ）、警告を発する指示を出力し（ステップＳ７０３）、処理を終了する。また、ＳＲＡＭ２０８にデータがない場合（ステップＳ７０２：Ｎｏ）、複合機１００を通常モードで起動し（ステップＳ７０４）、処理を終了する。
【００９１】
また、ステップＳ７０１の判断において、ヘッダ情報のマジックナンバが適切であると判断された場合（ステップＳ７０１：Ｙｅｓ）、複合機１００のブートプログラムは、ヘッダ情報以降に記録されたモジュール情報をとり込んでＲＯＭ更新モードに入る。なお、本実施の形態では、ＲＯＭ更新モードを、書換え処理サブルーチンとして示し、説明する（ステップＳ７０５）。
【００９２】
書換え処理サブルーチンでは、ＲＯＭ更新部６３０が、ＳＲＡＭ２０８に書き換えモジュールのデータがあるか否か判断する（ステップＳ８０１）。この判断の結果、ＳＲＡＭ２０８にデータがない場合（ステップＳ８０１：Ｎｏ）、ＲＯＭ更新部６３０は、フラッシュＲＯＭ２０４上のファイルシステムとして管理されているモジュールをマウントしながらｍｏｄｕｌｅｉｎｆｏ．ｔｘｔをチェックする（ステップＳ８０２）。このチェックにより、プログラム起動部６２０によって起動されたコントロールサービスにおいて、ＳＣＳ１２２のＲＯＭ更新モードスレッドがフラッシュカード２０７からフラッシュカード２０７にある参照モジュール指定情報を取得し、参照モジュールの名称、バージョン、アドレス（書込み先）、サイズを得る。
【００９３】
次に、更新モードスレッドは、参照モジュール指定情報にあるモジュールとの名称、サイズ、バージョンといった情報が一致し、かつ書込み先のアドレスに一致するモジュールがフラッシュＲＯＭ２０４にあるか否か判断する（ステップＳ８０３）。そして、一致するモジュールがない場合（ステップＳ８０３：Ｎｏ）、警告を発して処理を終了する。
【００９４】
一方、ステップＳ８０３の判断の結果、フラッシュＲＯＭ２０４に参照モジュール指定情報と一致するモジュールがある場合（ステップＳ８０３：Ｙｅｓ）、プログラム起動部６２０がフラッシュＲＯＭ２０４を更新するメニューを起動する（ステップＳ８０５）。起動されたメニューにより、フラッシュＲＯＭ２０４のモジュールと参照モジュール指定情報が一致するモジュールの名称、モジュールが複数ある場合にはすべてをまとめたモジュール群の別称とバージョンとが表示部２１０ａに表示される。
【００９５】
次に、ＳＣＳ１２２は、ユーザが表示部２１０ａに表示されたモジュールを確認し、オペレーションパネル２１０から複数のモジュールでなるモジュール群の別称を指定し、モジュール群を一括して書込む選択をしたか否か判断する（ステップＳ８０６）。この結果、モジュール群を書込むよう入力がなされなかったと判断すると（ステップＳ８０６：Ｎｏ）、プログラム起動部４２０が、複合機１００を通常の起動モードに切り換える。
【００９６】
また、表示されたモジュールを一括して書込む場合（ステップＳ８０６：Ｙｅｓ）、一括して書込まれるモジュールの別称をＳＲＡＭ２０８に書込む（ステップＳ８０７）。そして、ＳＣＳ１２２は、フラッシュカード２０７の書換えモジュール指定指示情報にある書換えモジュール名を検索し、モジュールの書換えスケジュールを作成する（ステップＳ８０８）。
【００９７】
ステップＳ８０８で作成されたスケジュールは、書換えモジュールに依存するモジュールをも一括して書きこむように設定されていて、スケジュールにしたがってフラッシュＲＯＭ２０４を書き換えることによって依存モジュールをも一括して書きこむことができる。
【００９８】
次に、ＲＯＭ更新部６３０は、ステップＳ８０７で作成されたスケジュールにしたがってフラッシュＲＯＭ２０４にあるモジュールを書き換える（ステップＳ８０９）。また、書き換え終了後、一括して書込まれるモジュール群の別称をクリアし（ステップＳ８１０）、処理を終了する。なお、単一モジュールを書き換える場合には、ＳＲＡＭ２０８に記憶されている書換えモジュール名をクリアする。
【００９９】
本実施の形態のメモリ書換え方法は、以上述べた処理によって依存関係があるモジュールを一括して書き換え、一部のモジュールだけが書き換えられるために発生するシステムの不具合を防ぐことができる。さらに、書換えモジュール指定指示情報に参照モジュールと名称が異なるモジュールを書込むことができるため、フラッシュＲＯＭ２０４に異なるモジュールを書込むことができる。
【０１００】
また、ステップＳ８０１において、ＳＲＡＭ２０８にデータがある場合（ステップＳ８０１：Ｙｅｓ）、別称が付されてＳＲＡＭ２０８に記録された別称に対応するモジュールと同一のモジュール（別称モジュール）がフラッシュカード２０７に存在するか否か判断する（ステップＳ８０４）。判断の結果、別称モジュールがフラッシュカードにない場合（ステップＳ８０４：Ｎｏ）、警告を発して処理を終了する。なお、この警告は、別称モジュールを要求するメッセージを画像や音声によってユーザに送るものであってもよい。
【０１０１】
また、ステップＳ８０４において、別称モジュールがフラッシュカード２０７にあると判断された場合（ステップＳ８０４：Ｙｅｓ）、ＳＣＳ１２２は、ＳＲＡＭ２０８に記録された別称に基づいて再び書換えスケジュールを作成する（ステップＳ８０８）。
【０１０２】
ステップＳ８０４、ステップＳ８０８の処理によれば、停電などによって情報処理装置への電力の供給が停止した場合にもＳＲＡＭ２０８に記録されているモジュールの情報（別称）にしたがってフラッシュカード２０７から書換えモジュールを取得して再度書き換えのスケジュールを作成することができる。また、電源投入時、ステップＳ７０２に示したように先ずＳＲＡＭ２０８に書き換えに関するデータがあるか否か判断することにより、再び電力が供給されたときに自動的にモジュールの書換え処理が継続でき、モジュールを一括して書き換えることができる。
【０１０３】
以上述べた実施の形態のメモリ書換え方法は、フラッシュカードにモジュールの識別名とは別の参照モジュール名を記憶させ、参照モジュール名と一致するモジュールをフラッシュＲＯＭに書きこむことができる。このため、モジュールの識別名とは別のモジュール名を持ったモジュールをフラッシュＲＯＭに書込むことができる。また、この際、フラッシュＲＯＭのモジュールのデータが参照モジュールのデータ（バージョン、アドレスなど）と一致することを書き換えの条件とすることによって不正な書き換えをも防止することができる。
【０１０４】
なお、以上、本実施の形態で説明したメモリ書換え方法は、あらかじめ用意されたプログラムをコンピュータで実行することにより実現される。このプログラムは、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、上記記録媒体を介して、また伝送媒体として、インターネット等のネットワークを介して配布することができる。
【０１０５】
また、以下に、本実施の形態のメモリ書換え方法と従来技術との差異を明らかにするため、従来のメモリ書換え方法をフローチャートにして図９に示す。図９は、従来の技術の書換え処理サブルーチンにあたる処理を示すものである。図９に示した書換え処理サブルーチンでは、、ＲＯＭ更新部６３０が、ＳＲＡＭ２０８に書き換えモジュールのデータがあるか否か判断する（ステップＳ９０１）。
【０１０６】
この判断の結果、ＳＲＡＭ２０８にデータがない場合（ステップＳ９０１：Ｎｏ）、ＲＯＭ更新部６３０は、フラッシュＲＯＭ２０４上のファイルシステムとして管理されているモジュールをマウントしながらｍｏｄｕｌｅｉｎｆｏ．ｔｘｔをチェックする（ステップＳ９０２）。そして、更新モードスレッドが、フラッシュカード２０７にあるモジュールの名称と一致し、かつ書込み先のアドレスに一致するモジュールがフラッシュＲＯＭ２０４にあるか否か判断する（ステップＳ９０３）。そして、一致するモジュールがない場合（ステップＳ９０３：Ｎｏ）、警告を発して処理を終了する。
【０１０７】
一方、ステップＳ９０３の判断の結果、フラッシュＲＯＭ２０４にモジュール名が一致するモジュールがある場合（ステップＳ９０３：Ｙｅｓ）、プログラム起動部６２０がフラッシュＲＯＭ２０４を更新するメニューを起動する（ステップＳ９０５）。起動されたメニューにより、フラッシュＲＯＭ２０４のモジュールと名称が一致するモジュールの別称が表示部２１０ａに表示される。
【０１０８】
次に、ＳＣＳ１２２は、ユーザが表示部２１０ａに表示されたモジュールを確認し、オペレーションパネル２１０からモジュールを一括して書き込む選択をしたか否か判断する（ステップＳ９０６）。この結果、モジュールを書き込むよう入力がなされなかったと判断すると（ステップＳ９０６：Ｎｏ）、プログラム起動部４２０が、複合機１００を通常の起動モードに切り換える。
【０１０９】
また、表示されたモジュールを書き込む場合（ステップＳ９０６：Ｙｅｓ）、書き込まれるモジュールの名称をＳＲＡＭ２０８に書き込む（ステップＳ９０７）。そして、ＳＣＳ１２２は、ユーザが指定したモジュールによってフラッシュＲＯＭ２０４を書き換える（ステップＳ９０８）。そして、書き換え終了後、ＳＲＡＭ２０８に記憶されている書換えモジュール名をクリアする（ステップＳ９０９）。
【０１１０】
【発明の効果】
以上説明したように、請求項1に記載の発明は、フラッシュメモリのモジュールを別の名称を持った別の機能のモジュールに書き換えることができ、しかも不正な書き換えを防止できるメモリ書換え方法を提供することができるという効果を奏する。
【０１１１】
請求項２に記載の発明は、互いに依存関係にあるすべてのモジュールをメモリに一括して書込むことができ、システムに不具合が発生することを防止することができるメモリ書換え方法を提供することができるという効果を奏する。
【０１１２】
請求項３に記載の発明は、モジュールを一括して書き換えている間に電源が切れて電力の供給が断たれた場合にも再度電力が供給されたときに互いに依存関係にあるすべてのモジュールを書き換えることができるメモリ書換え方法を提供することができるという効果を奏する。
【０１１３】
請求項４に記載の発明は、前記メモリをフラッシュメモリとすることによって、特にプログラムを組み込んだ状態で出荷され、後にアプリケーションやコントロールサービスなどのプログラムを更新する構成の画像形成装置に適したメモリ書換え方法を提供することができるという効果を奏する。
【０１１４】
請求項５に記載の発明は、情報記録媒体をフラッシュメモリを備えたカード式の情報記録媒体であるフラッシュカードとすることによって、特にプログラムを組み込んだ状態で出荷され、後にアプリケーションやコントロールサービスなどのプログラムを更新する構成の画像形成装置に適したメモリ書換え方法を提供することができるという効果を奏する。
【０１１５】
請求項６に記載の発明は、コンピュータに、上記請求項１〜５に記載のメモリ書換え方法のいずれか一つを実行させることができるプログラムを提供することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施の形態が適用される複合機の構成を示すブロック図である。
【図２】図１に示した複合機のハードウェア構成図である。
【図３】図２に示したフラッシュメモリのディレクトリの構造を例示する図である。
【図４】図２に示したフラッシュカードに記憶されておるデータ構造を説明するための図である。
【図５】本発明の一実施の形態の参照データを説明するための図である。
【図６】図１に示した複合機起動部の構成を示すブロック図である。
【図７】本発明の一実施の形態のメモリ書換え方法を説明するためのフローチャートである。
【図８】本発明の一実施の形態のメモリ書換え方法を説明するための他のフローチャートである。
【図９】従来のメモリ書換え方法を説明するためのフローチャートである。
【図１０】コントローラボード上のフラッシュメモリを、フラッシュカードを使って書き換える従来の技術を説明するための図である。
【符号の説明】
１００  複合機
１０３  ハードウェアリソース
１１０  ソフトウェア群
１１１  プリンタアプリ
１１２  コピーアプリ
１１３  ファックスアプリ
１１４  スキャナアプリ
１１５  ネットファイルアプリ
１１６  工程検査アプリ
１２０  プラットホーム
１２２  ＳＣＳ（更新モードスレッド）
１２４  ＥＣＳ
１２５  ＭＣＳ
１２６  ＯＣＳ
１２７  ＦＣＳ
１２８  ＮＣＳ
１３０  アプリケーション
１４０  複合機起動部
２００  コントローラボード
２０１  ＡＳＩＣ
２０２  ＣＰＵ
２０３  ＳＤＲＡＭ
２０４  フラッシュメモリ
２０６  フラッシュカードインタフェース部
２０７  フラッシュカード
２０８  ＳＲＡＭ
２１０  オペレーションパネル
２１０ａ  表示部
２５０  プリンタ
４００  モニタ起動命令
４０１  カード識別番号
４０２  ヘッダ部
４０３  データ部
４０４  参照データ
４２０  プログラム起動部
６１０  ＲＯＭモニタ
６２０  プログラム起動部
６２１  起動モード設定部
６２２  サービス層起動部
６２３  アプリ起動部
６２４  アプリ起動情報設定部
６３０  更新部
６３１  更新命令解読部
６３２  ＳＲＡＭ処理部
６３３  ＲＯＭ更新処理部
６３４  表示制御部
【図１】
0004124410.tif 000002
【図２】
0004124410.tif 000003
【図３】
0004124410.tif 000004
【図４】
0004124410.tif 000005
【図５】
0004124410.tif 000006
【図６】
0004124410.tif 000007
【図７】
0004124410.tif 000008
【図８】
0004124410.tif 000009
【図９】
0004124410.tif 000010
【図１０】
0004124410.tif 000011