(57)【要約】【課題】プログラムの転送時に余分なデータの転送が行われないようにすると共に、プログラムのバージョンアップをデータ量の制約なしに実現するための技術を提供する。【解決手段】ＲＯＭ２０からＲＡＭ３０へ転送されるデータは、プログラムデータの一部であるデータ量情報に基くデータ量となる。そのため、データ量情報で示されるデータ量をプログラムデータのデータ量に合わせることで、ＲＯＭ２０からＲＡＭ３０へ転送されるデータをプログラムデータだけにできる。これにより、システムの起動時に余分なデータ転送が行われることはないため、システムの起動に要する時間が長くなってしまうことはない。また、データ量情報で示されるデータ量を変更するだけで、ＲＡＭ３０へ転送すべきデータ量を任意に変更できるため、プログラム，または，バージョンアップ用のプログラムを作成する際の自由度が高くなり作成者の負担も軽くできる。【選択図】図１
2005275571.tif 000002
【特許請求の範囲】
【請求項１】
ＲＯＭに格納されたプログラムデータをＲＡＭへ転送する転送手段を備え、該転送手段により前記ＲＡＭへ転送されたプログラムデータで示されるプログラムに基づいてＣＰＵの動作が開始されるように構成されたシステム起動装置であって、
前記プログラムデータには、前記プログラムに対応するデータ領域のデータ量を特定可能なデータ量情報が含まれており、
前記転送手段は、前記プログラムデータに含まれるデータ量情報に基づき、該データ量情報で特定されるデータ量に応じて前記ＲＡＭの記憶領域に、前記プログラムデータを転送する
ことを特徴とするシステム起動装置。
【請求項２】
前記転送手段は、前記プログラムデータのうち、前記プログラムに対応するデータ領域のみを転送する
ことを特徴とする請求項１に記載のシステム起動装置。
【請求項３】
前記プログラムデータは、前記プログラムに対応するデータ領域として、データ量の圧縮された圧縮データ領域およびデータ量の圧縮されていない非圧縮データ領域を有し、該非圧縮データ領域が、少なくとも前記圧縮データ領域の解凍および前記ＲＡＭへの転送を指令するためのプログラムを示すデータであって、
前記転送手段は、前記プログラムデータのデータ領域のうち、前記非圧縮データ領域のみを前記ＲＡＭに転送するように構成され、
前記ＣＰＵが、前記転送手段により前記ＲＡＭに転送された非圧縮データ領域で示されるプログラムに従って、前記圧縮データ領域の解凍および前記ＲＡＭへの転送を実行する
ことを特徴とする請求項１または請求項２に記載のシステム起動装置。
【請求項４】
前記転送手段による前記プログラムデータの転送に伴って、前記ＣＰＵのメモリ空間と前記ＲＯＭおよび前記ＲＡＭそれぞれのデータ領域とを対応づけるためのマッピングを行うマッピング手段を備えており、
該マッピング手段は、前記ＣＰＵのメモリ空間と前記ＲＯＭのデータ領域のうちの前記データ量情報に対応するデータ領域とを対応づけるためのマッピングを行わない
ことを特徴とする請求項１から３のいずれかに記載のシステム起動装置。
【請求項５】
前記ＲＯＭは、電気的に書き換え可能な不揮発性メモリからなり、
前記マッピング手段は、所定のマッピング条件が満たされたときにのみ、前記ＣＰＵのメモリ空間と前記ＲＯＭのデータ領域のうちの前記データ量情報に対応するデータ領域とを対応づけるためのマッピングを行う
ことを特徴とする請求項４に記載のシステム起動装置。
【請求項６】
前記ＲＡＭへ転送された前記プログラムデータで示されるプログラムに基づいて前記ＣＰＵの動作が開始された以降、前記プログラムデータが転送された前記ＲＡＭの記憶領域へのアクセスを監視する監視手段と、
該監視手段によって、前記プログラムデータが転送された前記ＲＡＭの記憶領域へのデータの書き込みを行う旨のアクセスが検出された場合に、該書き込まれたデータに基づく処理が前記ＣＰＵにより実行されることを回避するための回避処理を実行する回避処理手段と、を備えている
ことを特徴とする請求項１から５のいずれかに記載のシステム起動装置。
【請求項７】
前記回避処理手段は、前記回避処理として、前記ＣＰＵによる前記プログラムの実行を停止させると共に、前記転送手段による前記プログラムデータの前記ＲＡＭへの再転送、および、前記ＣＰＵによる前記再転送されたプログラムデータで示されるプログラムの実行を開始させてシステムの再起動を行わせる
ことを特徴とする請求項６に記載のシステム起動装置。
【請求項８】
前記回避処理手段は、前記回避処理として、前記ＣＰＵによる前記プログラムの実行を停止させると共に、前記監視手段によりアクセスが検出された旨を報知する
ことを特徴とする請求項６に記載のシステム起動装置。
【請求項９】
ＲＯＭがシリアル方式でデータを入出力するデバイスにより構成されている
ことを特徴とする請求項１から８のいずれかに記載のシステム起動装置。
【請求項１０】
ＲＯＭに格納されたプログラムデータをＲＡＭへ転送し、該転送したプログラムデータで示されるプログラムに基づいてＣＰＵの動作を開始させるシステム起動方法であって、
前記プログラムデータを、前記プログラムに対応するデータ領域のデータ量を特定可能なデータ量情報が含まれたものとしておき、
前記プログラムデータを前記ＲＡＭへ転送する際には、該プログラムデータに含まれるデータ量情報に基づき、該データ量情報で特定されるデータ量に応じた前記ＲＡＭの記憶領域に、前記プログラムデータを転送する
ことを特徴とするシステム起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに基づいてＣＰＵの動作が開始されるように構成されたシステム起動装置，および，プログラムに基づいてＣＰＵの動作を開始させるシステム起動方法に関する。
【背景技術】
【０００２】
起動用のプログラム（いわゆるブートプログラム）に基づいてＣＰＵの動作を開始させることによりシステムを起動するシステム起動装置においては、このプログラムが記憶されたＲＯＭへのアクセスによりＣＰＵが動作を開始するものが一般的であるが、近年では、ＲＯＭ（別個のメモリユニット）に記憶されたプログラム（ユーザプログラム）をＲＡＭ（内部揮発性メモリ）へ転送させ、こうしてＲＡＭに転送されたプログラムへのアクセスによりＣＰＵが動作を開始するように構成されたもの（回路装置）も提案されている（特許文献１参照）。
【０００３】
一般に、ＲＡＭの転送速度（アクセス速度）は、ＲＯＭよりも高速であるため、上述のようにＲＡＭへ転送したプログラムでＣＰＵの動作を開始させることにより、システムの起動に要する時間を短縮することができる。
【特許文献１】特表２００１−５１２２５８号公報（例えば、段落［００１５］など）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したようなシステム起動装置では、外部からの指令を契機に、ＲＯＭからＲＡＭへのプログラムの転送を開始するように構成されているが（例えば、同文献の段落［００１８］など）、このときのプログラムの転送量をあらかじめ設定しておき、この転送量に応じたデータをプログラムとして転送させるように構成する必要がある。
【０００５】
この構成においては、できるだけ大きな転送量を設定しておくことが望ましいが、実際のプログラムのデータ量よりも大きな転送量を設定することは、プログラムの転送時に常に余分なデータの転送が行われることとなり、システムの起動に要する時間が長くなってしまう要因となってしまう。
【０００６】
そのため、このようなシステム起動装置においては、結局、できるだけ大きな転送量を設定することはされておらず、あらかじめ設定すべき転送量と実際のプログラムのデータ量とが一致するように構成されることが多い。
【０００７】
しかし、このように構成した場合、プログラムをバージョンアップする場合においても、バージョンアップ前後でプログラムのデータ量が変わらないようにしなければならない。これは、プログラム自体のデータ量が多くなってしまうと、プログラムの一部をＲＡＭに転送できなくなり、正常にシステムの起動が行われなくなる恐れがあるからである。
【０００８】
このようなデータ量の制約は、プログラム，または，バージョンアップ用のプログラムを作成する作成者側への負担が大きく、場合によってはプログラムのバージョンアップができなくなる恐れさえある。
【０００９】
本発明は、上記課題を解決するためになされたものであり、その目的は、プログラムの転送時に余分なデータの転送が行われないようにすると共に、プログラムのバージョンアップをデータ量の制約なしに実現するための技術を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するため請求項１に記載のシステム起動装置は、ＲＯＭに格納されたプログラムデータをＲＡＭへ転送する転送手段を備え、該転送手段により前記ＲＡＭへ転送されたプログラムデータで示されるプログラムに基づいてＣＰＵの動作が開始されるように構成されたシステム起動装置である。そして、前記プログラムデータには、前記プログラムに対応するデータ領域のデータ量を特定可能なデータ量情報が含まれており、前記転送手段は、前記プログラムデータに含まれるデータ量情報に基づき、該データ量情報で特定されるデータ量に応じて前記ＲＡＭの記憶領域に、前記プログラムデータを転送する。
【００１１】
このように構成されたシステム起動装置によれば、データ量情報で特定されるデータ量のデータをプログラムデータとしてＲＯＭからＲＡＭへ転送することができる。そのため、プログラムデータのデータ量がどのようなデータ量であったとしても、このプログラムデータのデータ量をＲＯＭからＲＡＭへ転送すべきデータ量とすることができる。
【００１２】
つまり、データ量情報で示されるデータ量を、プログラムデータのデータ量に合わせた値とすることでＲＯＭからＲＡＭへ転送されるデータをプログラムデータだけとすることができ、これにより、システムの起動時には、余分なデータ転送が行われることはなく、必要最小限のデータ転送が行われるようになるため、システムの起動に要する時間が長くなってしまうことはない。
【００１３】
さらに、データ量情報で示されるデータ量を変更するだけで、ＲＯＭからＲＡＭへ転送すべきデータ量を任意に変更することができるため、プログラム，または，バージョンアップ用のプログラムを作成する際の自由度が高くなり作成者の負担も軽くできる。
【００１４】
また、上述した転送手段は、ＲＯＭに格納されたプログラムデータをＲＡＭへ転送するにあたり、プログラムデータ全体を転送するようにしてもよいが、このプログラムデータにおけるデータ量情報については、ＣＰＵがプログラムを実行するためには不必要なデータ領域となるため、請求項２に記載のように、前記プログラムデータのうち、前記プログラムに対応するデータ領域のみを転送する、ように構成してもよい。
【００１５】
このように構成すると、ＲＡＭへ不必要なデータを転送しなくてもよくなるため、ＲＡＭへプログラムデータを転送するのに要する時間を短縮することができる。
なお、この構成においては、データ量情報を、プログラムデータのうちプログラムを示すデータ領域のみのデータ量を示すものとすることが望ましい。
【００１６】
また、請求項３に記載のシステム起動装置は、前記プログラムデータは、前記プログラムに対応するデータ領域として、データ量の圧縮された圧縮データ領域およびデータ量の圧縮されていない非圧縮データ領域を有し、該非圧縮データ領域が、少なくとも前記圧縮データ領域の解凍および前記ＲＡＭへの転送を指令するためのプログラムを示すデータである。この場合、データ量情報は、非圧縮データ領域についてのデータ量のみを示すものとなる。そして、前記転送手段は、前記プログラムデータのデータ領域のうち、前記非圧縮データ領域のみを前記ＲＡＭに転送するように構成され、前記ＣＰＵが、前記転送手段により前記ＲＡＭに転送された非圧縮データ領域で示されるプログラムに従って、前記圧縮データ領域の解凍および前記ＲＡＭへの転送を実行する、ことを特徴とする。
【００１７】
このように構成すれば、ＣＰＵが、転送手段によりＲＡＭに転送された非圧縮データ領域で示されるプログラムに従って、ＲＯＭに格納されている圧縮データ領域の解凍（伸張）およびＲＡＭへの転送を行うため、ＣＰＵが実行すべきプログラムデータを正規のデータ量よりも圧縮してデータ量の少ない状態でＲＯＭに格納しておくことができる。
【００１８】
また、上述したようなシステム起動装置においては、ＣＰＵのメモリ空間とＲＯＭおよびＲＡＭそれぞれのデータ領域とを対応づける、または、データの転送に伴って対応づけを変更するためのマッピングを行うマッピング手段を備えていることが一般的である。このようなマッピング手段は、当然、ＣＰＵのメモリ空間とＲＯＭにおけるプログラムデータのデータ領域との対応づけも行っているが、上述したようにプログラムデータに含まれるデータ量情報については、ＣＰＵによるプログラムの実行には不必要なデータである。そのため、ＣＰＵのメモリ空間の一部がデータ量情報に対応するデータ領域に対応づけられていると、プログラムデータで示されるプログラムを設計するにあたり、例えば、データ量情報に対応するデータ領域を避けてメモリ空間を指定するようにするなど、データ量情報に対応するデータ領域を考慮する必要がある。具体的な例として、メモリ空間における先頭アドレスからデータ量情報のデータ領域をマッピングした場合、ＲＯＭに記憶された他のデータへアクセスするためには、データ量情報のデータ領域に相当するアドレス分だけシフトしたアドレスを指定しなければならない。このようなことは、単にプログラム設計を複雑なものとする要因となるだけであり、好ましいことではない。
【００１９】
そこで、請求項４に記載のように、マッピング手段は、転送手段によるプログラムデータの転送時、前記ＣＰＵのメモリ空間と前記ＲＯＭのデータ領域のうちの前記データ量情報に対応するデータ領域とを対応づけるためのマッピングを行わない、ように構成するとよい。
【００２０】
このように構成すれば、プログラムデータで示されるプログラムを設計するにあたり、データ量情報に対応するデータ領域を考慮する必要がなくなるため、プログラムデータで示されるプログラムの設計を容易なものとすることができる。
【００２１】
また、上述したマッピング手段を備えるシステム起動装置は、例えば、プリンタ，複合機などの本体装置（システム）に組み込んで使用することが考えられるが、このようなシステム起動用のプログラムは、本体装置を作動させる際の不都合を修正したり機能を追加したりするために、必要に応じてバージョンアップする（修正版に書き換える）ことができるようにしておく必要がある。このためには、プログラムデータが格納されたＲＯＭを電気的に書換可能な不揮発性メモリ（例えば、ＥＥＰＲＯＭ；Electrically Erasable Programmable Read-only Memoryなど）からなるものとし、上記修正版のプログラムデータに書き換え可能に構成すればよいが、上述のようにマッピング手段がデータ量情報に対応するデータ領域のマッピングを行わない構成となっていると、ＲＯＭにおけるデータ量情報のデータ領域へアクセスすることができず、結果、データ量情報についての書き換えが行えなくなってしまう。
【００２２】
そこで、例えば、請求項５に記載のように、前記マッピング手段は、所定のマッピング条件が満たされたときにのみ、前記ＣＰＵのメモリ空間と前記ＲＯＭのデータ領域のうちの前記データ量情報に対応するデータ領域とを対応づけるためのマッピングを行う、ように構成するとよい。
【００２３】
このように構成すれば、所定のマッピング条件が満たされたことをもって、ＣＰＵのメモリ空間とＲＯＭのデータ領域のうちのデータ量情報に対応するデータ領域とを対応づけるためのマッピングが行われるため、ＲＯＭにおけるデータ量情報のデータ領域へアクセスすることができるようになり、データ量情報についても書き換えが行える状態とすることができる。
【００２４】
ところで、ＣＰＵは、プログラムデータで示されるプログラムに従って処理を行うが、ＣＰＵによって実行されるプログラムは、ＲＡＭに記憶されたものである。ＲＡＭは、外部からのアクセスにより容易にそのデータを書き換えることができてしまうため、外部からの不正なアクセスによりプログラムデータが書き換えられることで、本体装置が異常な動作をしてしまう危険性がある。
【００２５】
このような危険を回避するためには、例えば、請求項６に記載のように、前記ＲＡＭへ転送された前記プログラムデータで示されるプログラムに基づいて前記ＣＰＵの動作が開始された以降、前記プログラムデータが転送された前記ＲＡＭの記憶領域へのアクセスを監視する監視手段と、該監視手段によって、前記プログラムデータが転送された前記ＲＡＭの記憶領域へのデータの書き込みを行う旨のアクセスが検出された場合に、該書き込まれたデータに基づく処理が前記ＣＰＵにより実行されることを回避するための回避処理を実行する回避処理手段と、を備えている、とよい。
【００２６】
このように構成すれば、ＲＡＭへ転送されたプログラムデータで示されるプログラムに基づいてＣＰＵの動作が開始された以降、プログラムデータが転送されたＲＡＭの記憶領域へのデータの書き込みを行う旨のアクセスが検出された場合には、この書き込まれたデータに基づく処理がＣＰＵにより実行されることを回避するための回避処理が実行される。そのため、外部からの不正なアクセスによりプログラムデータが書き換えられたとしても、本体装置が異常な動作をしてしまうことを防止できる。
【００２７】
なお、この構成における「回避処理」とは、不正に書き込まれたデータに基づく処理がＣＰＵにより実行されることを回避することができればよく、例えば、ＣＰＵによるプログラムの実行を停止させる、といった処理が考えられる。
【００２８】
また、別の処理内容として、請求項７に記載のように、前記ＣＰＵによる前記プログラムの実行を停止させると共に、前記転送手段による前記プログラムデータの前記ＲＡＭへの再転送、および、前記ＣＰＵによる前記再転送されたプログラムデータで示されるプログラムの実行を開始させてシステムの再起動を行わせる、といった処理を考えることもできる。
【００２９】
このように構成すれば、外部からの不正なアクセスによりプログラムデータが書き換えられたとしても、ＲＯＭに格納されている正規のプログラムデータが転送し直された状態で再起動するため、本体装置が異常な動作をしてしまうことを防止するだけでなく、本体装置が正常に動作できる状態に復旧することができる。
【００３０】
また、別の処理内容として、請求項８に記載のように、前記ＣＰＵによる前記プログラムの実行を停止させると共に、前記監視手段によりアクセスが検出された旨を報知する、といった処理を考えることもできる。
【００３１】
このように構成すれば、外部からの不正なアクセスによりプログラムデータが書き換えられたとしても、その旨を報知することができるため、この報知を確認したユーザがＲＯＭに格納されている正規のプログラムデータを転送し直すための作業を行うことで、本体装置が正常に動作できる状態に復旧することができる。
【００３２】
なお、この構成における「報知する」とは、例えば、本体装置が表示装置を備えている場合であれば、この表示装置へのメッセージの表示、スピーカを備えている場合であれば、このスピーカによるメッセージの出力、プリントエンジンを備えている場合であれば、メッセージの印刷などを行うことである。
【００３３】
また、上述したシステム起動装置においては、ＲＯＭやＲＡＭなどを本体装置に実装するときの実装面積を少なくして本体装置の小型化を実現することが望ましい。
そのためには、請求項９に記載のように、ＲＯＭがシリアル方式でデータを入出力するデバイスにより構成されている、とよい。
【００３４】
このように構成すれば、ＲＯＭの実装面積を削減することができるだけでなく、パラレル方式でデータを入出力するＲＯＭに比べて入出力端子の数を少なくすることができる。
また、請求項１０に記載のシステム起動方法は、ＲＯＭに格納されたプログラムデータをＲＡＭへ転送し、該転送したプログラムデータで示されるプログラムに基づいてＣＰＵの動作を開始させるシステム起動方法であって、前記プログラムデータを、前記プログラムに対応するデータ領域のデータ量を特定可能なデータ量情報が含まれたものとしておき、前記プログラムデータを前記ＲＡＭへ転送する際には、該プログラムデータに含まれるデータ量情報に基づき、該データ量情報で特定されるデータ量に応じた前記ＲＡＭの記憶領域に、前記プログラムデータを転送する、ことを特徴とする。
【００３５】
このような方法によりシステムを起動する場合、少なくとも請求項１に記載のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
また、この方法においては、プログラムデータをＲＡＭへ転送する際、プログラムデータのうちプログラムに対応するデータ領域のみを転送する、ようにするとよい。この場合、少なくとも請求項２のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
【００３６】
また、上述した各方法において、プログラムデータが、プログラムに対応するデータ領域として、データ量の圧縮された圧縮データ領域およびデータ量の圧縮されていない非圧縮データ領域を有し、この非圧縮データ領域が少なくとも圧縮データ領域の解凍およびＲＡＭへの転送を指令するためのプログラムを示すデータである場合は、プログラムデータをＲＡＭへ転送する際に、プログラムデータのデータ領域のうち、非圧縮データ領域のみをＲＡＭに転送することとし、ＣＰＵが、ＲＡＭに転送された非圧縮データ領域で示されるプログラムに従って、圧縮データ領域の解凍およびＲＡＭへの転送を実行する、ようにするとよい。この場合、少なくとも請求項３のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
【００３７】
また、上述した各方法において、プログラムデータの転送に伴って、ＣＰＵのメモリ空間とＲＯＭおよびＲＡＭそれぞれのデータ領域とを対応づけるためのマッピングを行う場合には、ＣＰＵのメモリ空間とＲＯＭのデータ領域のうちのデータ量情報に対応するデータ領域とを対応づけるためのマッピングを行わない、ようにするとよい。
【００３８】
この場合、少なくとも請求項４のシステム起動装置により得られるのと同様の作用，効果を得ることができる。また、このシステム起動方法において、ＲＯＭが電気的に書き換え可能な不揮発性メモリからなる場合には、所定のマッピング条件が満たされたときにのみ、ＣＰＵのメモリ空間とＲＯＭのデータ領域のうちのデータ量情報に対応するデータ領域とを対応づけるためのマッピングを行う、ようにすればよい。この場合、少なくとも請求項５のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
【００３９】
また、上述した各方法においては、ＲＡＭへ転送されたプログラムデータで示されるプログラムに基づいてＣＰＵの動作が開始された以降、プログラムデータが転送されたＲＡＭの記憶領域へのアクセスを監視するようにし、この監視において、プログラムデータが転送されたＲＡＭの記憶領域へのデータの書き込みを行う旨のアクセスが検出された場合に、こうして書き込まれたデータに基づく処理がＣＰＵにより実行されることを回避するための回避処理を実行する、ようにするとよい。この場合、少なくとも請求項６のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
【００４０】
また、このシステム起動方法においては、回避処理として、ＣＰＵによるプログラムの実行を停止させると共に、プログラムデータのＲＡＭへの再転送、および、ＣＰＵによる再転送されたプログラムデータで示されるプログラムの実行を開始させてシステムの再起動を行わせる、ようにするとよい。この場合、少なくとも請求項７のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
【００４１】
また、回避処理として、ＣＰＵによる前記プログラムの実行を停止させると共に、アクセスが検出された旨を報知する、ようにしてもよい。この場合、少なくとも請求項８のシステム起動装置により得られるのと同様の作用，効果を得ることができる。
【発明を実施するための最良の形態】
【００４２】
以下に、本発明におけるシステム起動装置が、例えば、プリンタ，複写機，スキャナなどの本体装置に実装された実施形態を図面と共に説明する。
本体装置１は、本体装置１の有する機能を実現するための構成要素（図示されない）の他、ＣＰＵ１０，ＲＯＭ２０，ＲＡＭ３０，システムコントローラ４０，ユーザインタフェース部（以降、「ＵＩ／Ｆ」とする）５０，ＰＣインタフェース部（以降、「ＰＣＩ／Ｆ」とする）６０などを備え、ＣＰＵ１０，ＲＯＭ２０，ＲＡＭ３０は、それぞれシステムコントローラ４０を介してデータ通信可能に接続されている。
【００４３】
ＲＯＭ２０は、電気的に書換可能な不揮発性メモリ（本実施形態においては、ＥＥＰＲＯＭ；Electrically Erasable Programmable Read-only Memory）であって、シリアル方式でデータの入出力を行うように構成されている。このＲＯＭ２０には、本体装置１のシステムを起動するための起動用プログラム（いわゆるブートプログラム）を示すプログラムデータが格納されている。
【００４４】
このプログラムデータは、プログラムデータのデータ量を示すデータ量情報のデータ領域と、本体装置１を起動するのに最低限必要な処理だけを実行するためのプログラムに相当するデータ領域と、その他の処理を実行するためのプログラムに相当するデータ領域と、で構成されている。これらのうち、データ量情報のデータ領域は、このデータ領域のデータ量を含まず、プログラムに相当するデータ領域のみのデータ量を示すものである。また、後者のプログラムに相当するデータ領域については、図２（ａ）に示すように、そのデータ量が圧縮された圧縮データとして格納されており、この圧縮データを解凍（伸張）したデータ（解凍後データ）とするための処理が、後述のように、前者のプログラムに相当するデータ領域（以降、「非圧縮データ」とする）で示されるプログラムに従って行われるように構成されている。
【００４５】
なお、初期状態において、ＲＯＭ２０およびＲＡＭ３０それぞれの記憶領域は、バスコントローラ４７０により、ＲＯＭ２０の記憶領域（図２における「0000_0000h」以降）、ＲＡＭ３０の記憶領域（図２における「4000_0000h」以降）の順でＣＰＵ１０のメモリ空間にマッピングされている。そして、マッピングされたアドレスへのアクセスにより、ＲＯＭ２０またはＲＡＭ３０との間でデータの読み出し，書き込みが可能となる。
【００４６】
システムコントローラ４０は、ＲＯＭ２０の動作を制御するＲＯＭコントローラ４２０，ＲＡＭ３０の動作を制御するＲＡＭコントローラ４３０，ＲＯＭ２０からＲＡＭ３０へのデータ転送を行うＤＭＡコントローラ４４０，ＤＭＡコントローラ４４０によるデータ転送を指令するＦ／Ｗコピーコントローラ４５０，上記ＤＭＡコントローラ４４０とＦ／Ｗコピーコントローラ４５０とＣＰＵ１０とからのＲＯＭ２０あるいはＲＡＭ３０へのアクセス要求の調停を行うバスコントローラ４７０，バスコントローラ４７０とＲＯＭコントローラ４２０あるいはＲＡＭコントローラ４３０とを接続するバス４６０，バスコントローラ４７０とＣＰＵ１０とを接続するバス４６１，バスコントローラ４７０とＤＭＡコントローラ４４０とを接続するバス４６２，バスコントローラ４７０とＦ／Ｗコピーコントローラ４５０とを接続するバス４６３，上記各コントローラおよびＣＰＵ１０へリセット信号を出力するリセットコントローラ４８０，ＲＡＭコントローラ４３０を介したＲＡＭ３０へのアクセスを監視するアクセス監視回路４９０などで構成されている。
【００４７】
ＵＩ／Ｆ５０は、ユーザによる操作を受け付ける操作パネル，本体装置１に関する情報を表示するための表示パネルなどからなる。
ＰＣＩ／Ｆ６０は、所定の規格に従ってホスト装置（例えば、図１におけるパーソナルコンピュータ（以降、「ＰＣ」とする）５）とのデータ通信を行うためのインタフェース（例えば、ＵＳＢインタフェースなど）である。
【００４８】
なお、本実施形態において、システムコントローラ４０およびＣＰＵ１０は、ＣＰＵコアを含むＡＳＩＣ（Application Specific Integrated Circuit ）として一体に構成されたものであるが、システムコントローラ４０のみをＡＳＩＣとして構成してもよいし、必要に応じてＰＣＩ／Ｆ６０などをＡＳＩＣの中に含める構成としてもよい。
［システム起動手順］
このように構成された本体装置１において、電源が投入された際に行われるシステムを起動する手順を図３に基づいて説明する。なお、本体装置１は、いわゆるハードウェア回路として以下の制御動作を実行するように構成されたものであるが、ここでは理解を容易にするために、ハードウェア回路としての制御動作をフローチャートに置き換えて説明する。
【００４９】
まず、リセットコントローラ４８０が各ブロックをリセットする（ｓ１１０）。ここでは、ＣＰＵ１０，ＲＯＭコントローラ４２０，ＲＡＭコントローラ４３０，ＤＭＡコントローラ４４０，Ｆ／Ｗコピーコントローラ４５０およびバスコントローラ４７０それぞれにリセット信号（Ｈレベルの信号）を出力することにより、各ブロックをリセットする。
【００５０】
次に、ＣＰＵ１０を除くブロックのリセットを解除する（ｓ１２０）。ここでは、ＣＰＵ１０以外に対するリセット信号の出力を終了する（Ｌレベルの信号とする）ことにより、ＣＰＵ１０を除くブロックのリセットを解除する。
【００５１】
こうして、各ブロックのリセットが解除された後、Ｆ／Ｗコピーコントローラ４５０が、ＲＯＭ１０の記憶領域のうち先頭アドレスに格納されているデータ（データ量情報）を読み込む（ｓ１３０）。ここで読み込まれるデータ量情報とは、以降の手順においてＲＡＭ２０へ書き込むべきプログラムデータのうち、非圧縮データに相当するデータ量Ａバイトを示すデータである。
【００５２】
次に、Ｆ／Ｗコピーコントローラ４５０が、ＤＭＡコントローラ４４０に対して、ＲＯＭ２０の記憶領域のうち、データ量情報直後のアドレスからｓ１３０の手順で読み込んだデータ量Ａバイト分のデータをＲＡＭ３０に転送（コピー）するように指令する（ｓ１４０）。
【００５３】
この指令を受けたＤＭＡコントローラ４４０は、ＲＯＭ２０のデータ量情報直後のアドレスからデータ量Ａバイト分のデータについてのＲＡＭ３０への転送を開始し（ｓ１５０，ｓ１６０：ＮＯ）、データ転送が終了したら（ｓ１６０：ＹＥＳ）、Ｆ／Ｗコピーコントローラ４５０に対し、データ転送の終了を通知するための信号を出力する（ｓ１７０）。このｓ１５０〜ｓ１７０の手順によって、初期状態でデータが記憶されていなかったＲＡＭ３０に（図２（ａ）参照）、プログラムデータのうち、上述した最低限必要な処理だけを実行するためのプログラムに相当するデータ領域である非圧縮データがＤＭＡコントローラ４４０により記憶されることとなる（図２（ｂ）参照）。
【００５４】
次に、Ｆ／Ｗコピーコントローラ４５０が、バスコントローラ４７０に対して、ＲＯＭ２０の記憶領域，ＲＡＭ３０の記憶領域それぞれをマッピングし直すように指令する（ｓ１８０）。
【００５５】
この指令をうけたバスコントローラ４７０は、ＲＯＭ２０の記憶領域，ＲＡＭ３０の記憶領域それぞれをマッピングし直す（ｓ１９０）。ここでは、以降の手順においてＣＰＵ１０がリセットを解除されたときに最初にアクセスするメモリ空間のアドレス（本実施形態においては、メモリ空間の先頭アドレス「0000_000h」）に、ｓ１５０，ｓ１６０の手順でＲＡＭ３０に転送された非圧縮データが配置されるようにマッピングする。具体的には、ＲＯＭ２０における非圧縮データの記憶領域およびＲＡＭ３０における非圧縮データの記憶領域それぞれの配置を入れ替える。また、ＲＡＭ３０における非圧縮データの記憶領域およびＲＯＭ２０における圧縮データの記憶領域の配置を、データ量情報の記憶領域に相当するアドレスだけ先頭アドレスに向けてシフトさせる（図２(ｂ)参照）。このように、バスコントローラ４７０は、非圧縮データおよび圧縮データの記憶領域の配置を、データ量情報の記憶領域に相当するアドレスだけ先頭アドレスに向けてシフトさせるようなマッピングを行うことにより、データ量情報の記憶領域についてのマッピングを行わないようにしている。
【００５６】
次に、リセットコントローラ４８０がＣＰＵ１０のリセットを解除する（ｓ２００）。ここでは、ＣＰＵ１０に対するリセット信号の出力を終了する（Ｌレベルの信号とする）ことにより、ＣＰＵ１０のリセットを解除する。
【００５７】
こうして、各ブロックのリセットが解除された後、ＲＡＭ３０の記憶領域における先頭アドレスへアクセスすることにより、上述したｓ１５０，ｓ１６０の手順でＲＡＭ３０に転送された非圧縮データで示されるプログラム（ソフトウェア）に基づいてＣＰＵ１０の動作が開始される（ｓ２１０）。ここでは、ｓ２００の手順においてリセットが解除された直後はプログラムカウンタの内容が「０」であることから、内部のプログラムカウンタによって示されるアドレスである先頭アドレスへアクセスすることとなる。この非圧縮データは、ＲＯＭ２０に記憶された圧縮データへのアクセス，圧縮データの解凍，および，圧縮データを解凍してなる解凍後データのＲＡＭ３０への記憶といった処理を実行可能なプログラムを示すものであって、これらの処理がプログラムの起動直後に実行されるように構成されている。
【００５８】
そのため、このプログラムを起動したＣＰＵ１０は、ＲＯＭ２０から圧縮データを読み出して解凍する共に、このデータ（解凍後データ）をＲＡＭ３０に記憶させる（ｓ２２０）。
【００５９】
このｓ２２０の手順によって、プログラムデータのうち、上述したその他の処理を実行するためのプログラムに相当する解凍後データが、ＣＰＵ１０により起動されたソフトウェアによりＲＡＭ３０に記憶され（図２（ｃ）参照）、これにより、ＲＡＭ３０にデータ量情報を除くプログラムデータ全体、つまり本体装置１の起動用プログラムが書き込まれた状態となる。
【００６０】
［アクセス監視］
本実施形態において、ＣＰＵ１０は、ＲＡＭ３０に記憶された起動用プログラムを実行するように構成されているが、ＲＡＭ３０は、外部からのアクセスにより容易にそのデータを書き換えることができてしまう。そのため、外部からの不正なアクセスによりプログラムデータが書き換えられると、このプログラムデータで示されるプログラムがＣＰＵ１０により実行され、本体装置１が異常な動作をしてしまう危険性がある。そこで、上述したシステムの起動手順を経てシステムが起動した以降には、アクセス監視回路４９０により、ＲＡＭ３０への不正なアクセスを監視するように構成されている。このアクセス監視の手順を図４に基づいて説明する。
【００６１】
まず、アクセス監視回路４９０をイネーブル（動作状態）にする（ｓ３１０）。こうして、アクセス監視回路４９０をイネーブルにすることにより、ＲＡＭ３０への不正なアクセスが発生したか否かを監視する状態となる。本実施形態において、アクセス監視回路４９０は、ＲＡＭ３０の記憶領域のうち、起動用プログラムが記憶されている記憶領域（プログラム領域）へのデータの記憶を行うためのアクセス（ライトアクセス）の発生を起動用プログラムの不正な書き換えと判定するように構成されている。
【００６２】
この後、アクセス監視回路４９０によりプログラム領域へのライトアクセスの発生を監視し（ｓ３２０：ＮＯ）、ライトアクセスが発生したら（ｓ３２０：ＹＥＳ）、アクセス監視回路４９０をディセーブル（停止状態）にする（ｓ３３０）。こうして、アクセス監視回路４９０をディセーブルとすることにより、以降の手順においてＲＡＭ３０への起動用プログラムの書き換えが有効に行えない状態となる。
【００６３】
そして、回避処理を実行した後（ｓ３４０）、ｓ３１０の手順へ戻る。ここでは、まず、アクセス監視回路４９０が、起動用プログラムの不正な書き換えが発生した旨を割込データの出力によりＣＰＵ１０へ通知する。この割込データを入力したＣＰＵ１０は、起動用プログラムによる処理の実行を強制的に終了する。また、割込データを出力した後、アクセス監視回路４９０は、リセットコントローラ４８０に対し、リセットを行うための指令を出力する。この指令を入力したリセットコントローラ４８０は、図３におけるｓ１１０〜ｓ２２０の手順と同様の手順を経てＲＡＭ３０の起動用プログラムを書き換える。これにより、起動用プログラムを正常なものに書き直し、本体装置１が再起動される。
【００６４】
［起動用プログラムのバージョンアップ］
上述したシステムの起動手順を経てシステムが起動した後には、起動用プログラムによる処理の一つとして、起動用プログラム自体をバージョンアップ（修正版への書き換え）するための処理を実行可能となる。このＣＰＵ１０によるバージョンアップ処理について図５に基づいて説明する。
【００６５】
このバージョンアップ処理は、ＰＣＩ／Ｆ６０を介して接続されたＰＣ５から、このＰＣ５に組み込まれたアプリケーションソフトを介して送信されてきた修正版のプログラムデータを受信することによって開始される。なお、このプログラムデータは、上述したのと同様、圧縮データ，非圧縮データおよびデータ量情報からなり、このデータ量情報が非圧縮データの総データ量を示すものである。また、ＰＣ５からの転送時間短縮のために、プログラムデータを全て圧縮データで受け取り、本体装置１側で解凍することによって、上記構成のプログラムデータを得るようにしてもよい。
【００６６】
まず、ＰＣ５から受信したプログラムデータのＲＡＭ３０への書き込みを開始し（ｓ４１０，ｓ４２０：ＮＯ）、書き込みが終了したら（ｓ４２０：ＹＥＳ）、ＲＯＭ３０におけるデータ量情報の記憶領域へのアクセスが可能な状態とする（ｓ４３０）。上述のように、システムの起動手順を経てシステムが起動した後、ＲＯＭ２０におけるデータ量情報の記憶領域については、バスコントローラ４７０によるマッピングが行われていない状態となっているため、この状態でＣＰＵ１０がデータ量情報の記憶領域へアクセスすることができない。そこで、このｓ４３０の処理では、バスコントローラ４７０に対して、ＲＯＭ２０におけるデータ量情報の記憶領域についてのマッピングを指令することにより、この記憶領域へのアクセスを可能な状態とする。本実施形態において、バスコントローラ４７０は、図６に示すように、ＣＰＵ１０のメモリ空間のうちの空いているアドレスに、ＲＯＭ２０におけるデータ量情報の記憶領域に相当するアドレス（本実施形態においては、ＲＯＭ２０の先頭から４バイト分）を対応づけるマッピングを行う。
【００６７】
こうして、ＲＯＭ２０におけるデータ量情報の記憶領域へのアクセスが可能な状態となったら、ｓ４１０，ｓ４２０の処理でＲＡＭ３０に書き込んだプログラムデータのＲＯＭ２０への書き込みを開始し（ｓ４４０，ｓ４５０：ＮＯ）、書き込みが終了したら（ｓ４５０：ＹＥＳ）、リセットコントローラ４８０に対し、リセットを行うための指令を出力して（ｓ４６０）、本バージョンアップ処理を終了する。このｓ４４０，ｓ４５０の処理では、プログラムデータを、ＲＯＭ２０の記憶領域における先頭アドレスから、データ量情報，非圧縮データ，圧縮データの順に書き込む。また、ｓ４６０の処理で出力された指令を入力したリセットコントローラ４８０は、図３におけるｓ１１０〜ｓ２２０の手順と同様の手順を経てＲＡＭ３０の起動用プログラムを書き換える。これにより、起動用プログラムがバージョンアップされ、本体装置１が再起動されることとなる。
【００６８】
［効果］
このように構成された本体装置１によれば、データ量情報で特定されるデータ量のデータをプログラムデータとしてＲＯＭ２０からＲＡＭ３０へ転送することができるため、プログラムデータのデータ量がどのようなデータ量であったとしても、このプログラムデータのデータ量をＲＯＭ２０からＲＡＭ３０へ転送すべきデータ量とすることができる。
【００６９】
つまり、データ量情報で示されるデータ量を、プログラムデータのデータ量に合わせた値とすることでＲＯＭ２０からＲＡＭ３０へ転送されるデータをプログラムデータだけとすることができ、これにより、システムの起動時には、余分なデータ転送が行われることはなく、必要最小限のデータ転送が行われるようになるため、システムの起動に要する時間が長くなってしまうことはない。
【００７０】
さらに、データ量情報で示されるデータ量を変更するだけで、ＲＯＭ２０からＲＡＭ３０へ転送すべきデータ量を任意に変更することができるため、プログラム，または，バージョンアップ用のプログラムを作成する際の自由度が高くなり作成者の負担も軽くできる。
【００７１】
また、図３のシステム起動手順では、ＲＯＭ２０に格納されたプログラムデータのうち、データ量情報に相当するデータ領域ついてはＲＡＭ３０へ転送されず、プログラムに相当するデータ領域（圧縮データ，非圧縮データ）のみがＲＡＭ３０へ転送される。このデータ量情報については、ＣＰＵ１０がプログラムを実行するためには不必要なデータ領域であるため、このような不要なデータ領域を転送しないことで、ＲＡＭ３０へプログラムデータを転送するのに要する時間を短縮することができる。
【００７２】
また、図３におけるｓ２１０の手順では、ＣＰＵ１０が、ＤＭＡコントローラ４４０によりＲＡＭ３０に転送された非圧縮データで示されるプログラムに従って、ＲＯＭ２０に格納されている圧縮データの解凍およびＲＡＭ３０への転送を行う。そのため、ＣＰＵ１０が実行すべきプログラムデータを正規のデータ量よりも圧縮してデータ量の少ない状態でＲＯＭ２０に格納しておくことができる。
【００７３】
また、図３におけるｓ１９０の手順では、ＣＰＵ１０のメモリ空間とＲＯＭ２０におけるプログラムデータのデータ領域との対応づけを行っているが、このとき、データ量情報に対応するデータ領域についての対応づけは行っていない。上述したようにプログラムデータに含まれるデータ量情報については、ＣＰＵ１０によるプログラムの実行には不必要であるため、ＣＰＵ１０のメモリ空間の一部がデータ量情報に対応するデータ領域に対応づけられていると、プログラムデータで示されるプログラムを設計するにあたり、例えば、データ量情報のデータ領域を避けてメモリ空間を指定するようにするなど、データ量情報に対応するデータ領域を考慮しなければならない。ところが、上記ｓ１９０の手順のように、データ量情報のデータ領域についての対応づけを行わない構成であれば、プログラムデータで示されるプログラムを設計するにあたり、データ量情報のデータ領域を考慮する必要がなくなるため、プログラムデータで示されるプログラムの設計を容易なものとすることができる。
【００７４】
ただ、このようにデータ量情報のデータ領域についてのマッピングを行わない場合、プログラムデータのバージョンアップ時にも、データ量情報の書き換えが行えなくなってしまうことになるが、本体装置１のシステムが起動した後には、ＰＣＩ／Ｆ６０を介して修正版のプログラムデータを受信することを条件として、図５におけるｓ４３０の処理でデータ量情報についてのマッピングが行われ、これにより、ＣＰＵ１０からＲＯＭ２０のデータ量情報へアクセスできるようになる。このように、上記条件が満たされたことをもって、データ量情報の書き換えが行える状態とすることができる。
【００７５】
また、システムが起動した以降、アクセス監視回路４９０により、ＲＡＭ３０への不正なアクセスを監視すると共に、不正なアクセスの発生が検出された際には、この不正なアクセスに基づく処理がＣＰＵ１０により実行されることを回避するための回避処理が実行される。この回避処理では、ＣＰＵ１０による起動用プログラムの実行が強制的に終了されるため、外部からの不正なアクセスによりプログラムデータが書き換えられたとしても、本体装置が異常な動作をしてしまうことを防止できる。
【００７６】
また、この回避処理としては、図３におけるｓ１１０〜ｓ２２０の手順と同様の手順によりプログラムデータの書き直しおよび起動用プログラムの再起動も行われるため、外部からの不正なアクセスによりプログラムデータが書き換えられていたとしても、ＲＯＭ２０に格納されている正規のプログラムデータが転送し直された状態で再起動するため、本体装置１が異常な動作をしてしまうことを防止するだけでなく、本体装置１が正常な起動用プログラムで動作できる状態に復旧することができる。
【００７７】
また、ＲＯＭ２０は、ＲＯＭがシリアル方式でデータを入出力するデバイスにより構成されているため、ＲＯＭ２０自体の実装面積を削減することができるだけでなく、パラレル方式でデータを入出力するＲＯＭに比べて入出力端子の数を少なくすることができる。
【００７８】
［変形例］
以上、本発明の実施の形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
【００７９】
例えば、上記実施形態においては、システムコントローラ４０およびＣＰＵ１０がＣＰＵコアを含むＡＳＩＣとして一体に構成されたものを例示したが、例えば、ＰＬＤ（Programmable Logic Device ）を利用して構成するようにしてもよい。
【００８０】
また、上記実施形態においては、ＲＯＭ２０がＥＥＰＲＯＭである構成を例示したが、ＲＯＭ２０としては、電気的に書換可能な不揮発性メモリであればよく、例えば、フラッシュメモリなどを採用してもよい。
【００８１】
また、上記実施形態においては、図５のバージョンアップ処理におけるマッピング処理（ｓ４３０の処理）が「ＰＣＩ／Ｆ６０を介したプログラムデータの受信」を条件に実行されるように構成されたものを例示した。しかし、このマッピング条件については、この条件以外の条件を採用することもできる。例えば、特定の操作がＵＩ／Ｆ５０により行われたことをマッピング条件とすることが考えられる。
【００８２】
また、上記実施形態の図４におけるｓ３４０の手順では、回避処理として、起動用プログラムによる処理を終了させると共に、起動用プログラムの書き直しを行うように構成されたものを例示した。しかし、この回避処理としては、起動用プログラムの書き直しを行う代わりに、不正なアクセスにより起動用プログラムが書き換えられたことを報知するためのメッセージを表示させるための指令をＵＩ／Ｆ５０へ出力することとしてもよい。
【００８３】
このように構成すれば、外部からの不正なアクセスによりプログラムデータが書き換えられたとしても、その旨を報知することができるため、この報知を確認したユーザがＲＯＭに格納されている正規のプログラムデータを転送し直すための作業、つまり本体装置１の再起動を行うことで、本体装置１が正常に動作できる状態に復旧することができる。
【００８４】
なお、この構成における「報知」としては、メッセージの表示の他、スピーカを備えている場合であれば、このスピーカによるメッセージの出力、プリントエンジンを備えている場合であれば、メッセージの印刷などを行う構成を採用することもできる。
【００８５】
また、上記実施形態においては、プログラムデータがデータ量情報，圧縮データおよび非圧縮データからなるデータであって、図３におけるｓ２１０以降の手順でＣＰＵ１０が圧縮データの解凍，転送を行うように構成されたものを例示した。しかし、プログラムデータをデータ量情報および非圧縮データのみからなるデータとし、図３におけるシステム起動手順でＣＰＵ１０による圧縮データの解凍，転送を行わないように構成してもよい。この場合、図３におけるｓ２１０以降の手順は行われないこととなる。
【００８６】
［本発明との対応関係］
以上説明した実施形態において、ＣＰＵ１０，ＲＯＭ２０，ＲＡＭ３０およびシステムコントローラ４０からなる構成が、本発明におけるシステム起動装置である。
【００８７】
また、ＤＭＡコントローラ４４０，Ｆ／Ｗコピーコントローラ４５０は、本発明における転送手段であり、バスコントローラ４７０は、本発明におけるマッピング手段であり、アクセス監視回路４９０は、本発明における監視手段であり、図５におけるｓ３４０の処理は本発明における回避処理手段である。
【図面の簡単な説明】
【００８８】
【図１】本体装置の構成を示すブロック図
【図２】ＣＰＵのメモリ空間とＲＯＭ，ＲＡＭの記憶領域とのマッピングの状態
【図３】システムの起動手順を示すフローチャート
【図４】アクセス監視の手順を示すフローチャート
【図５】バージョンアップ処理の処理手順を示すフローチャート
【図６】ＣＰＵのメモリ空間とＲＯＭ，ＲＡＭの記憶領域とのマッピングの状態（バージョンアップ処理時）
【符号の説明】
【００８９】
１…本体装置、２０…ＲＯＭ、３０…ＲＡＭ、４０…システムコントローラ、５０…ユーザインタフェース部、６０…ＰＣインタフェース部、４２０…ＲＯＭコントローラ、４３０…ＲＡＭコントローラ、４４０…ＤＭＡコントローラ、４５０…Ｆ／Ｗコピーコントローラ、４６０…バス、４６１…バス、４６２…バス、４６３…バス、４７０…バスコントローラ、４８０…リセットコントローラ、４９０…アクセス監視回路。
【図１】
2005275571.tif 000003
【図２】
2005275571.tif 000004
【図３】
2005275571.tif 000005
【図４】
2005275571.tif 000006
【図５】
2005275571.tif 000007
【図６】
2005275571.tif 000008