説明

情報処理装置および方法、プログラム、並びに記録媒体

【課題】機器の迅速な起動を実現するとともに、記録媒体が所定の記録容量を有する資源として有効に利用されるようにすることができるようにする。
【解決手段】ステップS1001で、ホストCPUは、起動の方式が、ウォームブート、またはコールドブートであるかを判定し、ウォームブート、またはコールドブートであると判定された場合、ステップS1002で、ファイルシステムのファイルアロケーションテーブルをチェックする。ステップS1003で、ホストCPUは、NAND型フラッシュメモリの空き容量を算出し、ステップS1004で空き容量が予め設定された閾値以下であると判定された場合、ステップS1005で、修復プログラムが実行される。これにより、実際に使用されているセクタと、ファイルアロケーションテーブルの使用されたセクタの情報とが整合するように、使用されたセクタの情報が修復される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および方法、プログラム、並びに記録媒体に関し、特に、機器の迅速な起動を実現するとともに、記録媒体が所定の記録容量を有する資源として有効に利用されるようにすることができるようにする情報処理装置および方法、プログラム、並びに記録媒体に関する。
【背景技術】
【0002】
コンピュータのOS(operating system)においては、記録媒体に記録されるデータの管理などに用いられるファイルシステムが搭載されている。ファイルシステムは、例えば、補助記憶装置などにより提供される記録媒体上のセクタと呼ばれる通常512バイトの記録単位の配列にアクセスし、このセクタ群を使用してファイルやディレクトリを構成し、各セクタがどのファイルに使用され、使用されていないセクタはどれなのかなどの情報を管理する。
【0003】
ファイルシステムにおいては、通常、ファイル名が何らかのインデックス(例えば、ファイルアロケーションテーブルのインデックス)により、実際にデータが記録されているセクタなどの記録単位と対応付けられており、例えば、MS-DOS(登録商標)のファイルシステムであるFAT、UNIX(登録商標)系ファイルシステムのinodeなどのように管理されている。
【0004】
また、ファイルアロケーションテーブルには、例えば、どのセクタが使用され、使用されていないセクタはどれなのかなどの情報が含まれており、記録媒体へのデータの記録(書き込み)または削除などの処理に伴って、このファイルアロケーションテーブルが正しく更新されることで、コンピュータの処理において記録媒体が資源として有効に利用されることになる。
【0005】
ファイルシステムでは、システムコール「open」、「read」、「write」、「close」などの処理が行われることで、データの読み出しまたは書き込みが行われている。
【0006】
ファイルシステムを介して行われるデータの書き込みなどの処理は、一旦、コンピュータのメインメモリにキャッシュされることにより行われる。そしてメインメモリにキャッシュされているデータが後からHDD(Hard Disk Drive)などの記録媒体に書き込まれる。このとき、ファイルシステムの処理では、例えば、書き込むべきデータの量に対応してファイルアロケーションテーブルなどの、使用されたセクタの情報を更新し、バックグラウンドでバスの転送速度などに合わせてHDDなどの記録媒体に転送する。データの書き込みなどの処理は、実際には、ファイルシステムにおけるシステムコール「close」の処理が完了したとき、キャッシュされていたデータが全てHDDなどの記録媒体に書き込まれて終了したことになる。
【0007】
このようにすることで、メインメモリに対して書き込み速度が遅いHDD(Hard Disk Drive)などの記録媒体への書き込み処理にかかる時間を、ユーザから隠ぺいし、レスポンスタイムを向上させることができる。
【0008】
しかしながら、システムコール「close」の処理が完了(終了)する前に、コンピュータの電源がOFFされた場合などは、メインメモリにキャッシュされたデータが、完全にHDDなどの記録媒体に書き込まれることなく、消失してしまう一方、ファイルアロケーションテーブルの使用されたセクタの情報が更新されたことで、実際には使用されていないセクタが、使用されたセクタとして認識されてしまうことがある。
【0009】
このように、システムコール「close」の処理が終了する前に、コンピュータの電源がOFFされることなどが繰り返し起こると、記録媒体に記録されたデータの量が増えていないにも係らず、コンピュータのファイルシステムにとっては記録媒体の空き容量が減ってしまうことになる。
【0010】
このような、事態を解消するために、実際に使用されているセクタと、ファイルアロケーションテーブルの使用されたセクタの情報とが整合するように、ファイルアロケーションテーブルの使用されたセクタの情報を修復するプログラムも提供されている。
【0011】
また、情報記録媒体から1以上の単位領域から構成される空き領域を探索し、探索した空き領域の先頭アドレスを取得して、取得した先頭アドレスをデータの識別情報として付与し、データに識別情報を対応付けて管理することで、ファイルの作成、検索、読み出しを迅速に実行する技術も提案されている(例えば、特許文献1参照)。
【0012】
【特許文献1】特開2003−022663号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかしながら、デジタルスチルカメラなどのCE(Consumer Electronics)機器においては、バッテリの電圧低下、またはユーザによる不適切な操作などに起因して、システムコール「close」の処理が終了する前に、機器の電源がOFFされることが容易に発生し得る。
【0014】
また、実際に使用されているセクタと、ファイルアロケーションテーブルの使用されたセクタの情報とが整合するように、ファイルアロケーションテーブルの使用されたセクタの情報を修復するプログラムを実行しようとしても、修復プログラムの実行のために、機器に電力を供給する必要があり、さらに修復プログラムの処理には所定の時間がかかるので、デジタルスチルカメラなど、バッテリにより長時間電力を供給し続けることが重要となり、かつ迅速な起動を要求される機器においては、このようなプログラムを安易に実行させることはできない。
【0015】
本発明はこのような状況に鑑みてなされたものであり、機器の迅速な起動を実現するとともに、記録媒体が所定の記録容量を有する資源として有効に利用されるようにすることができるようにするものである。
【課題を解決するための手段】
【0016】
本発明の一側面の情報処理装置は、アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置であって、前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かを判定する起動方式判定手段と、前記起動方式判定手段により、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、自分に装着される記録媒体の空き容量を算出する容量算出手段と、前記容量算出手段の処理により算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かを判定して判定結果を出力する修復実行判定手段とを備える情報処理装置である。
【0017】
前記複数種類の起動方式には、少なくとも第1の起動方式と第2の起動方式が含まれ、前記第1の起動方式においては、メインメモリへのデータのロードが行われず、前記第2の起動方式においては、前記動作状態において前記プロセッサにより実行されるソフトウェアに対応するデータが、あらためて前記メインメモリにロードされるようにすることができる。
【0018】
前記起動方式判定手段により、前記起動方式が、前記第2の起動方式であると判定された場合、前記容量算出手段の処理、および修復実行判定手段の処理が行われるようにすることができる。
【0019】
前記修復実行判定手段は、前記記録媒体の空き容量が予め設定された閾値以下である場合、前記修復プログラムを実行させる判定結果を出力するようにすることができる。
【0020】
前記修復実行判定手段により、前記修復プログラムを実行させる判定結果が出力された場合、プロセッサにより前記修復プログラムが実行されることで、前記記録媒体において実際に使用されているセクタと、前記インデックスの使用されたセクタの情報とが整合するように、前記インデックスの使用されたセクタの情報が修復されるようにすることができる。
【0021】
本発明の一側面の情報処理方法は、アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置の情報処理方法であって、前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かを判定し、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、自分に装着される記録媒体の空き容量を算出し、前記算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かを判定して判定結果を出力するステップを含む情報処理方法である。
【0022】
本発明の一側面のプログラムは、アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置のプログラムであって、前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かの判定を制御し、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、自分に装着される記録媒体の空き容量の算出を制御し、前記算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かを判定して判定結果の出力を制御するステップを含むコンピュータが読み取り可能なプログラムである。
【0023】
本発明の一側面においては、休止状態から動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かが判定され、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、自分に装着される記録媒体の空き容量が算出され、前記算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かが判定されて判定結果が出力される。
【発明の効果】
【0024】
本発明によれば、機器の迅速な起動を実現するとともに、記録媒体が所定の記録容量を有する資源として有効に利用されるようにすることができる。
【発明を実施するための最良の形態】
【0025】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0026】
本発明の一側面の情報処理装置は、アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置であって、前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かを判定する起動方式判定手段(例えば、図27のステップS1001の処理を実行する図1のホストCPU11)と、前記起動方式判定手段により、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、自分に装着される記録媒体の空き容量を算出する容量算出手段(例えば、図27のステップS1003の処理を実行する図1のホストCPU11)と、前記容量算出手段の処理により算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックス(例えば、ファイルアロケーションテーブル)を修復する修復プログラムを実行するか否かを判定して判定結果を出力する修復実行判定手段(例えば、図27のステップS1004の処理を実行する図1のホストCPU11)とを備える。
【0027】
本発明の一側面の情報処理方法は、アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置の情報処理方法であって、前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かを判定し(例えば、図27のステップS1001の処理)、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、自分に装着される記録媒体の空き容量を算出し(例えば、図27のステップS1003の処理)、前記算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックス(例えば、ファイルアロケーションテーブル)を修復する修復プログラムを実行するか否かを判定して判定結果を出力する(例えば、図27のステップS1004の処理)ステップを含む。
【0028】
以下、図面を参照して、本発明の実施の形態について説明する。
【0029】
図1は、本発明の一実施の形態の情報処理装置の一例であるデジタルスチルカメラの構成を示すブロック図である。デジタルスチルカメラは、ホストCPU11、リアルタイム処理用CPU12、マスクROM(read only memory)13、CCD(charge coupled device)14、アナログフロントエンド15、信号処理部16、NAND型フラッシュメモリ17、メモリコントローラ18、シリアルインタフェース19、LCD(liquid crystal display)20、グラフィックコントローラ21、メモリカード22、メモリカードインタフェース23、無線LAN(local area network)インタフェース24、コントローラ25、NAND型フラッシュメモリ26、ATA(AT attachment)−フラッシュメモリインタフェース27、IDE(integrated device (drive) electronics)インタフェース28、SDRAM(synchronous dynamic random access memory)29、SDRAMコントローラ30、入力部31、汎用入出力部32、エンベデッドコントローラ33、DC(direct current)−DCコンバータ34、バッテリ35、およびバッテリ36から構成される。
【0030】
ホストCPU11、リアルタイム処理用CPU12、マスクROM13、信号処理部16、メモリコントローラ18、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、SDRAMコントローラ30、および汎用入出力部32は、バスにより相互に接続されている。
【0031】
ホストCPU11は、組込用のCPUまたは汎用のCPUから構成され、オペレーティングシステムおよびアプリケーションプログラムを実行して、デジタルスチルカメラに対する、撮影する画像のサイズ、画像のデータの圧縮率、または露出若しくはシャッタスピードなどの各種の設定を行うためのGUIの処理などを行う。
【0032】
リアルタイム処理用CPU12は、組込用のCPUまたは汎用のCPUから構成され、ホストCPU11とは別に、オペレーティングシステムおよびアプリケーションプログラムを実行して、デジタルスチルカメラの各部を制御するためのリアルタイムの処理などを行う。
【0033】
マスクROM13は、デジタルスチルカメラ固有のデータ、並びに起動するときホストCPU11に実行されるブートローダを記憶する。
【0034】
なお、起動とは、電源の供給が停止された状態からの起動だけでなく、サスペンド状態、ハイバネーション、またはソフトオフ状態からの起動、いわゆるレジュームを含む。マスクROM13は、ブートローダと共に2次ブートローダを記憶するようにしてもよい。
【0035】
CCD14は、いわゆる画像センサであり、アナログフロントエンド15と相互に接続されている。CCD14は、図示せぬ光学系によってその感光部に結像された被写体の画像に応じたアナログの信号をアナログフロントエンド15に出力する。なお、CCD14に代えて、画像センサであるCMOSセンサを設けるようにしてもよい。
【0036】
アナログフロントエンド15は、CCD14および信号処理部16と相互に接続され、CCD14からの被写体の画像に応じたアナログの信号に、ノイズの除去などの所定の処理を適用して、アナログの信号をデジタルの信号に変換する。アナログフロントエンド15は、変換により得られた、被写体の画像に応じたデジタルの信号を信号処理部16に供給する。
【0037】
信号処理部16は、アナログフロントエンド15から供給された、被写体の画像に応じたデジタルの信号に、ホワイトバランスの処理または符号化の処理など所定の処理を適用する。信号処理部16は、所定の処理の適用により得られた、被写体の画像に応じたデータを、バス、IDEインタフェース28、およびATA−フラッシュメモリインタフェース27を介して、NAND型フラッシュメモリ26に供給するか、またはバスおよびメモリカードインタフェース23を介してメモリカード22に供給する。
【0038】
NAND型フラッシュメモリ17は、不揮発性記憶媒体の一例であり、メモリコントローラ18と相互に接続されている。NAND型フラッシュメモリ17は、ホストCPU11により実行されるプログラムまたはそのプログラムの実行に必要なデータを記憶するとともに、リアルタイム処理用CPU12により実行されるプログラムまたはそのプログラムの実行に必要なデータを記憶する。
【0039】
さらに、NAND型フラッシュメモリ17は、ハイバネーションから動作状態に起動する場合のイメージを記憶する。このNAND型フラッシュメモリ17に記憶されているイメージは、デジタルスチルカメラの動作状態においてSDRAM29にロードされているプログラムおよびデータがそのままデータとされたものである。NAND型フラッシュメモリ17に記憶されているイメージがSDRAM29にロードされることにより、SDRAM29は、デジタルスチルカメラの動作状態におけるプログラムおよびデータがロードされた状態となる。
【0040】
以下、NAND型フラッシュメモリ17に記憶されているイメージを、ホストCPU11により実行されるプログラムおよびデータのイメージとして説明するが、NAND型フラッシュメモリ17に記憶されているイメージを、ホストCPU11により実行されるプログラムおよびデータ並びにリアルタイム処理用CPU12により実行されるプログラムおよびデータのイメージとするようにしてもよい。
【0041】
また、以下、NAND型フラッシュメモリ17に記憶されているイメージを、ウォームブートイメージとも称する。
【0042】
メモリコントローラ18は、NAND型フラッシュメモリ17からのプログラム、データ、またはウォームブートイメージの読み出しを制御する。また、メモリコントローラ18は、NAND型フラッシュメモリ17へのウォームブートイメージなどの各種のデータの書き込みを制御する。
【0043】
シリアルインタフェース19は、ホストCPU11とエンベデッドコントローラ33との間のシリアル通信を行う。
【0044】
LCD20は、相互に接続されているグラフィックコントローラ21の制御の基に、各種の画像またはテキストなどを表示する。グラフィックコントローラ21は、LCD20の表示を制御する。
【0045】
メモリカード22は、例えば、メモリースティック(MEMORY STICK(登録商標))により構成され、不揮発性記憶媒体を内蔵し、デジタルスチルカメラに挿抜可能に構成される。メモリカード22は、デジタルスチルカメラに装着された場合、メモリカードインタフェース23と電気的に接続される。メモリカードインタフェース23は、装着されたメモリカード22のデータの記憶またはメモリカード22からのデータの読み出しを制御する。
【0046】
無線LANインタフェース24は、IEEE(institute of electrical and electronic engineers)802.11a,b、またはgなどに準拠して、アクセスポイントまたは他の機器などと通信する。コントローラ25は、無線LANインタフェース24とバスとを相互に接続し、無線LANインタフェース24を制御する。
【0047】
NAND型フラッシュメモリ26は、不揮発性記憶媒体の一例であり、相互に接続されているATA−フラッシュメモリインタフェース27の制御の基に、画像のデータなど、各種のデータを記憶する。ATA−フラッシュメモリインタフェース27は、IDEインタフェース28とNAND型フラッシュメモリ26とのインタフェースであり、ATAの規格に準拠してIDEインタフェース28と通信する。IDEインタフェース28は、IDEの規格に準拠し、ATA−フラッシュメモリインタフェース27と通信する。ATA−フラッシュメモリインタフェース27およびIDEインタフェース28を介して、NAND型フラッシュメモリ26がバスに接続されるので、ホストCPU11は、ハードディスクまたは光ディスクドライブに対するIDEの規格のコマンドを用いて、NAND型フラッシュメモリ26を制御することができるようになる。
【0048】
SDRAM29は、記憶媒体の一例であり、SDRAMコントローラ30と相互に接続され、ホストCPU11により実行されるオペレーティングシステムおよびアプリケーションプログラム、並びにリアルタイム処理用CPU12により実行されるオペレーティングシステムおよびアプリケーションプログラムを記憶する。ホストCPU11は、SDRAM29に記憶されたオペレーティングシステムおよびアプリケーションプログラムを実行する。また、リアルタイム処理用CPU12は、SDRAM29に記憶されたオペレーティングシステムおよびアプリケーションプログラムを実行する。
【0049】
なお、SDRAM29は、電源が供給されると記憶しているデータ(プログラムを含む)を自分自身でリフレッシュする、いわゆるセルフリフレッシュ機能を備える。
【0050】
SDRAMコントローラ30は、SDRAM29へのプログラムまたはデータの書き込み、およびSDRAM29からのプログラムまたはデータの読み出しを制御する。
【0051】
入力部31は、電源ボタン、無線LANボタン、USB(universal serial bus)ボタン、レンズキャップ(レンズシャッタ)の開閉を検出するスイッチ、十字キー、およびタッチパネルなどからなり、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧に応じた信号、レンズキャップの開閉に応じた信号、または十字キー若しくはタッチパネルなどへの操作に応じた信号を汎用入出力部32およびエンベデッドコントローラ33に供給する。
【0052】
汎用入出力部32は、汎用のシリアルまたはパラレルの入出力インタフェースであり、入力部31から供給された、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧に応じた信号、レンズキャップの開閉に応じた信号、または十字キー若しくはタッチパネルなどへの操作に応じた信号に対応するデータをホストCPU11またはリアルタイム処理用CPU12に供給する。
【0053】
また、汎用入出力部32には、USBの規格に準拠した機器またはケーブルを接続するためのUSB接続端子41が設けられている。
【0054】
なお、図示は省略するが、一方の端末がパーソナルコンピュータなどの機器に接続されているケーブルの他方の端末がUSB接続端子41に接続された場合、汎用入出力部32は、USB接続端子41に機器が接続されたことを示す信号をエンベデッドコントローラ33に供給する。
【0055】
エンベデッドコントローラ33は、いわゆる組込用のCPUであり、内蔵されているROMまたはRAMに記憶されているプログラムを実行する。エンベデッドコントローラ33は、入力部31から供給された信号を基に、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧またはレンズキャップの開閉に応じて、ホストCPU11のリセットおよびその解除を制御する。
【0056】
エンベデッドコントローラ33は、DC−DCコンバータ34によるデジタルスチルカメラの各部への電力の供給を制御する。
【0057】
DC−DCコンバータ34は、直流電圧電源であるバッテリ35または外部電源から供給される電圧を変換して、エンベデッドコントローラ33の制御に基づいて、デジタルスチルカメラの各部に所定の電圧の電源(電力)を供給するか、各部位毎に電源の供給を停止する。
【0058】
バッテリ35は、デジタルスチルカメラに着脱自在の2次電池であり、DC−DCコンバータ34を介して、デジタルスチルカメラの全体を駆動するための電力を供給する。
【0059】
バッテリ36は、例えばボタン電池などの1次電池であり、外部電源またはバッテリ35から電力が供給されない場合にエンベデッドコントローラ33を動作させるための電力を、エンベデッドコントローラ33に供給する。
【0060】
次に、ホストCPU11により実行されるプログラム、リアルタイム処理用CPUにより実行されるプログラム、またはエンベデッドコントローラ33により実行されるプログラムについて説明する。
【0061】
以下、プログラムの説明において、プログラムを実行するコンピュータにより行われる処理を、そのプログラムが行うとも表現する。
【0062】
まず、図2を参照して、ホストCPU11により実行されるオペレーティングシステム61およびアプリケーションプログラム62について説明する。
【0063】
ホストCPU11は、オペレーティングシステム61およびアプリケーションプログラム62を実行する。
【0064】
オペレーティングシステム61は、Linux(登録商標)などのオペレーティングシステムであり、ハードウェアの管理など基本的な処理を行う。アプリケーションプログラム62は、撮影しようとする被写体の画像の表示や撮影した画像の閲覧などの処理を行う。
【0065】
オペレーティングシステム61は、カーネル71、デバイスドライバ72、電源管理機構73、休止状態決定プログラム74、休止状態情報提供プログラム75、他CPUプログラム読み出しプログラム76、設定値記憶処理プログラム77、およびウォームブートイメージ生成プログラム78を含む。
【0066】
カーネル71は、オペレーティングシステム61の中核部分であり、アプリケーションプログラム62やマスクROM13乃至汎用入出力部32などのデバイスの監視、SDRAM29やメモリカード22、NAND型フラッシュメモリ26などの資源の管理、割りこみ処理、またはプロセス間通信など、オペレーティングシステム61としての基本機能を提供する。
【0067】
デバイスドライバ72は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのデバイスを制御する。本来、デバイスドライバ72は、信号処理部16乃至汎用入出力部32のそれぞれを個別に制御するプログラムであるが、個別に区別せず、信号処理部16乃至汎用入出力部32を一括して制御するものとして説明する。
【0068】
電源管理機構73は、ACPI(advanced configuration and power interface)サブシステムなどであり、デジタルスチルカメラをサスペンド状態、ハイバネーション、若しくはソフトオフ状態で休止させるように、また、サスペンド状態、ハイバネーション、若しくはソフトオフ状態の休止状態から動作状態となるように、電源を管理する。
【0069】
休止状態決定プログラム74は、デジタルスチルカメラが休止する場合、サスペンド状態またはハイバネーションのいずれの状態で休止するかを決定する。
【0070】
休止状態情報提供プログラム75は、デジタルスチルカメラが休止する場合、サスペンド状態またはハイバネーションのいずれか一方の決定された状態を示す休止状態情報を、シリアルインタフェース19を介してエンベデッドコントローラ33に供給する。
【0071】
他CPUプログラム読み出しプログラム76は、デジタルスチルカメラが休止する場合、NAND型フラッシュメモリ17に記憶されているリアルタイム処理用CPU12のオペレーティングシステムおよびアプリケーションプログラムをSDRAM29にロードする。
【0072】
なお、以下、NAND型フラッシュメモリ17に記憶されているプログラムまたはデータを、NAND型フラッシュメモリ17から読み出して、読み出したプログラムまたはデータをSDRAM29にロードすることを、プログラムまたはデータをNAND型フラッシュメモリ17からSDRAM29にロードすると称する。
【0073】
設定値記憶処理プログラム77は、デジタルスチルカメラが休止する場合、その休止の後に起動するときに行われる復帰において必要となる、シャッタスピードや露出、ズーム、撮影する画像のサイズや符号化する際の圧縮率、またはホストCPU11の内部の各レジスタの値などの設定値を、NAND型フラッシュメモリ17に記憶させる。
【0074】
ウォームブートイメージ生成プログラム78は、ファームウェア、すなわちオペレーティングシステム61またはアプリケーションプログラム62が更新されて(アップデートされて)、電源の供給が停止された状態から起動された場合、起動直後のウォームブートイメージを生成する。ウォームブートイメージ生成プログラム78は、生成したウォームブートイメージをNAND型フラッシュメモリ17に記憶させる。
【0075】
アプリケーションプログラム62は、撮影処理プログラム81、閲覧処理プログラム82、設定処理プログラム83、USBマスストレージクラス処理プログラム84、状態遷移処理プログラム85、および電源管理プログラム86を含む。
【0076】
撮影処理プログラム81は、撮影しようとする被写体の画像のLCD20への表示や、撮影した画像の画像処理、撮影により得られた画像のデータの符号化およびその記憶などを制御する。すなわち、撮影処理プログラム81は、撮影の処理を行う。
【0077】
閲覧処理プログラム82は、撮影によって生成され、NAND型フラッシュメモリ26またはメモリカード22に記憶した画像のデータにより画像をLCD20に表示させるなどして、使用者に画像を閲覧させる処理を行う。
【0078】
設定処理プログラム83は、シャッタスピード、露出、若しくはズーム、または撮影する画像のサイズ、符号化の方式や符号化の圧縮率などの撮影に関する設定や、画像のデータの記憶先や、画像の閲覧における表示の仕方など、各種の設定の処理を行う。
【0079】
USBマスストレージクラス処理プログラム84は、一方の端末がパーソナルコンピュータなどの機器に接続されているケーブルの他方の端末がUSB接続端子41に接続された場合、デジタルスチルカメラを記録デバイスとして動作させるUSBマスストレージクラスの処理を行う。
【0080】
撮影処理プログラム81乃至USBマスストレージクラス処理プログラム84のそれぞれは、撮影の処理乃至USBマスストレージクラスの処理のそれぞれにおいて、必要なGUIの処理を行う。
【0081】
状態遷移処理プログラム85は、動作状態に含まれる複数の状態のうち、所定の状態に遷移させる状態遷移の処理を行う。動作状態の詳細は後述する。
【0082】
電源管理プログラム86は、Linux(登録商標) kernelが提供する電源管理プログラム(Power Management Interface)であり、電源の状態に関する各種のコマンドを発行するなどして、電源を管理する。
【0083】
なお、オペレーティングシステム61が、状態遷移処理プログラム85を含むようにしてもよい。
【0084】
次に、図3を参照して、起動する場合、ホストCPU11に実行される2次ブートローダを説明する。この2次ブートローダは、起動するとき、ホストCPU11に実行されるブートローダによりSDRAM29にロードされて、実行される。
【0085】
2次ブートローダ101は、PC(Personal Computer)で用いられているgrubまたはliloなどに相当するプログラムであり、オペレーティングシステム61およびアプリケーションプログラム62の起動を制御する。
【0086】
2次ブートローダ101は、起動方式決定情報取得プログラム121、起動方式決定プログラム122、設定値読み出しプログラム123、他CPUプログラム読み出しプログラム124、およびウォームブートイメージ読み出しプログラム125を含む。
【0087】
起動方式決定情報取得プログラム121は、エンベデッドコントローラ33がその内部のメモリに記憶している起動方式決定情報を、エンベデッドコントローラ33から取得する。ここで、起動方式決定情報は、起動の方式を決定するための情報である。
【0088】
起動の方式とは、休止する直前の動作状態においてSDRAM29に記憶されていたプログラムであって、サスペンド状態においてSDRAM29に記憶されているプログラムを実行することにより起動する方式、または休止する以前の動作状態においてSDRAM29に記憶されていたプログラムのイメージであるウォームブートイメージあって、NAND型フラッシュメモリ17に記憶されているウォームブートイメージをSDRAM29にロードし実行することにより起動する方式などをいう。
【0089】
以下、休止する直前の動作状態においてSDRAM29に記憶されていたプログラムであって、サスペンド状態においてSDRAM29に記憶されているプログラムを実行することにより起動する方式をホットブートと称する。また、休止する以前の動作状態においてSDRAM29に記憶されていたプログラムのイメージであるウォームブートイメージあって、NAND型フラッシュメモリ17に記憶されているウォームブートイメージをSDRAM29にロードし実行することにより起動する方式をウォームブートと称する。
【0090】
さらに、NAND型フラッシュメモリ17に記憶されているオペレーティングシステムのファイルを開いて起動する方式をコールドブートと称する。
【0091】
起動に要する時間を比較すると、ウォームブートの起動に要する時間は、ホットブートの起動に要する時間に比較して長く、コールドブートの起動に要する時間は、ウォームブートの起動に要する時間に比較して極めて長い。すなわち、ホットブートの起動は、コールドブートの起動に比較して、極めて迅速であり、ウォームブートの起動は、コールドブートの起動に比較して、迅速であり、ホットブートの起動は、ウォームブートの起動に比較して、迅速であると言える。
【0092】
なお、ホットブートまたはウォームブートの方式により起動することは、一般に、レジューム(resume)と称されている。
【0093】
また、ホットブート、ウォームブート、またはコールドブートの起動の対象は、デジタルスチルカメラ、ホストCPU11、またはオペレーティングシステム61である。従って、デジタルスチルカメラが、ホットブート、ウォームブート、またはコールドブートされるとも、ホストCPU11が、ホットブート、ウォームブート、またはコールドブートされるとも、オペレーティングシステム61が、ホットブート、ウォームブート、またはコールドブートされるとも言える。
【0094】
次に、起動方式決定情報について説明すると、より詳細には起動方式決定情報は、休止状態情報およびバッテリ着脱情報からなり、さらに起動要因情報を含む。
【0095】
休止状態情報は、休止する場合に決定された休止状態を示す情報である。なお、休止状態情報には、ウォームブートイメージを作成するか否かを示すイメージ作成フラグが含まれている。例えば、セットされている(立っている)イメージ作成フラグは、ウォームブートイメージを作成することを示し、クリアされている(立っていない)イメージ作成フラグは、ウォームブートイメージを作成しないことを示す。
【0096】
バッテリ着脱情報は、休止状態におけるバッテリ35の着脱の履歴を示す。
【0097】
起動要因情報は、入力部31の電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、USB接続端子41に機器が接続されること、またはレンズキャップを開くことなど、起動のトリガとなる起動要因を示す。
【0098】
起動方式決定情報取得プログラム121は、エンベデッドコントローラ33から取得した起動方式決定情報を、SDRAM29の予め定められた記憶領域に記憶させる。
【0099】
起動方式決定プログラム122は、起動方式決定情報を基に、起動の方式を決定する。
【0100】
設定値読み出しプログラム123は、デジタルスチルカメラが休止する場合、設定値記憶処理プログラム77によりNAND型フラッシュメモリ17に記憶された設定値を読み出す。
【0101】
他CPUプログラム読み出しプログラム124は、ウォームブートまたはコールドブートの場合、NAND型フラッシュメモリ17に記憶されているリアルタイム処理用CPU12のオペレーティングシステムおよびアプリケーションプログラムをSDRAM29にロードする。
【0102】
ウォームブートイメージ読み出しプログラム125は、ウォームブートの場合、NAND型フラッシュメモリ17に記憶されているウォームブートイメージをSDRAM29にロードする。
【0103】
次に、リアルタイム処理用CPU12に実行されるオペレーティングシステム141およびアプリケーションプログラム142について、図4を参照して説明する。
【0104】
リアルタイム処理用CPU12は、オペレーティングシステム141およびアプリケーションプログラム142を実行する。
【0105】
オペレーティングシステム141は、μITRONなどの、いわゆるリアルタイムオペレーティングシステムであり、各種の基本的な処理を行う。アプリケーションプログラム142は、被写体を撮影する場合に必要とされる、図示せぬ光学系、CCD14、アナログフロントエンド15、および信号処理部16に対するリアルタイムの制御の処理を行う。
【0106】
オペレーティングシステム141は、起動方式決定情報取得プログラム161、起動方式決定プログラム162、およびアプリケーション起動終了制御プログラム163を含む。
【0107】
起動方式決定情報取得プログラム161は、起動する場合、起動方式決定情報取得プログラム121によって記憶させられた起動方式決定情報をSDRAM29の予め決められた記憶領域から読み出すことにより、起動方式決定情報を取得する。
【0108】
起動方式決定プログラム162は、起動方式決定情報を基に、起動の方式を決定する。この場合、起動方式決定プログラム162は、起動の方式を、起動方式決定プログラム122と共通する起動方式決定情報から、起動方式決定プログラム122により決定される起動の方式と同じ起動の方式に決定する。
【0109】
アプリケーション起動終了制御プログラム163は、起動する場合、起動方式決定情報に含まれる起動要因情報を基に、アプリケーションプログラム142の各種の処理の起動および終了を制御する。
【0110】
アプリケーションプログラム142は、リアルタイム処理プログラム171、GUI処理プログラム172、および起動画面表示プログラム173を含む。
【0111】
リアルタイム処理プログラム171は、図示せぬ光学系、CCD14、アナログフロントエンド15、および信号処理部16をリアルタイムに制御する。
【0112】
GUI処理プログラム172は、リアルタイム処理用CPU12がホストCPU11と共用する入力部31から使用者の指示を取得するためのユーザインタフェースの処理を行う。GUI処理プログラム172は、撮影処理プログラム81乃至USBマスストレージクラス処理プログラム84のそれぞれによるGUIの処理のうちの一部の処理、例えば、シャッタスピード、露出、またはズームの設定値など、起動直後にその設定が要求されることのある設定値についての限定されたGUIの処理を行う。
【0113】
起動画面表示プログラム173は、起動する場合、LCD20に、起動を示す起動画面を表示させる。
【0114】
なお、アプリケーションプログラム142が、アプリケーション起動終了制御プログラム163を含むようにしてもよい。
【0115】
次に、エンベデッドコントローラ33により実行されるプログラムについて説明する。図5は、エンベデッドコントローラ33により実行されるプログラムを示す図である。エンベデッドコントローラ33は、電源制御プログラム201、他CPUリセット制御プログラム202、起動方式決定情報取得プログラム203、起動方式決定情報記憶処理プログラム204、起動方式決定情報提供プログラム205、およびバッテリ着脱検出プログラム206を実行する。
【0116】
電源制御プログラム201は、DC−DCコンバータ34を制御することにより、デジタルスチルカメラの各部への電力の供給を制御する。
【0117】
他CPUリセット制御プログラム202は、ホストCPU11のリセットおよびその解除を制御する。
【0118】
起動方式決定情報取得プログラム203は、起動方式決定情報を取得する。
【0119】
より詳細には、起動方式決定情報取得プログラム203は、デジタルスチルカメラが休止する場合、休止状態情報提供プログラム75から送信されてくる休止状態情報を受信することにより、起動方式決定情報のうちの休止状態情報を取得する。
【0120】
また、起動方式決定情報取得プログラム203は、バッテリ着脱検出プログラム206からバッテリ35の着脱の検出の結果を取得する。起動方式決定情報取得プログラム203は、バッテリ35の着脱の検出の結果に応じたバッテリ着脱情報を生成する。さらに、起動方式決定情報取得プログラム203は、入力部31から供給される信号であって、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップの開閉を示す信号に応じて、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップを開くことなどの起動のトリガを示す起動要因情報を生成する。
【0121】
起動方式決定情報記憶処理プログラム204は、取得した起動方式決定情報をエンベデッドコントローラ33の内部のメモリに記憶する。すなわち、起動方式決定情報記憶処理プログラム204は、受信された休止状態情報、生成されたバッテリ着脱情報、または生成された起動要因情報をエンベデッドコントローラ33の内部のメモリに記憶する。
【0122】
起動方式決定情報提供プログラム205は、シリアルインタフェース19を介して、ホストCPU11からの要求に応じて、エンベデッドコントローラ33の内部のメモリに記憶されている起動方式決定情報をホストCPU11に提供する。
【0123】
バッテリ着脱検出プログラム206は、DC−DCコンバータ34の出力電圧を検出することにより、バッテリ35の着脱を検出する。
【0124】
次に、図6乃至図9を参照して、デジタルスチルカメラの状態について説明する。図6で示されるように、デジタルスチルカメラの状態は、メカニカルオフ状態G3、サスペンド状態S3、ハイバネーションS4、ソフトオフ状態S5、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、または他の処理を実行する状態のいずれかである。
【0125】
撮影処理実行状態においては、撮影処理プログラム81がホストCPU11により実行されている。閲覧処理実行状態においては、閲覧処理プログラム82がホストCPU11により実行されている。設定処理実行状態においては、設定処理プログラム83がホストCPU11により実行されている。
【0126】
他の処理を実行する状態においては、USBマスストレージクラス処理プログラム84がホストCPU11により実行されている。または、他の処理を実行する状態においては、アプリケーションプログラム62がホストCPU11により実行されているが、撮影処理プログラム81、閲覧処理プログラム82、設定処理プログラム83、およびUSBマスストレージクラス処理プログラム84のいずれもが実行されていない。
【0127】
サスペンド状態S3、ハイバネーションS4、およびソフトオフ状態S5は、休止状態と称する。また、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、および他の処理を実行する状態は、動作状態S0と称する。
【0128】
図7は、動作状態S0、サスペンド状態S3、ハイバネーションS4、ソフトオフ状態S5、およびメカニカルオフ状態G3のそれぞれにおける、ホストCPU11、SDRAM29、またはエンベデッドコントローラ33への電源の供給の有り無しを示す図である。
【0129】
図7中のONは、電源が供給されていることを示し、OFFは、電源の供給が停止されていること、すなわち、電源が供給されていないことを示す。
【0130】
動作状態S0において、DC−DCコンバータ34から、ホストCPU11、SDRAM29、およびエンベデッドコントローラ33の全部に電源が供給される。
【0131】
サスペンド状態S3において、DC−DCコンバータ34からのホストCPU11への電源の供給は停止され、DC−DCコンバータ34から、SDRAM29およびエンベデッドコントローラ33に電源が供給される。SDRAM29は、そのセルフリフレッシュ機能により、電源が供給されると記憶しているデータ(プログラム)を自分自身でリフレッシュするので、サスペンド状態S3において、記憶しているプログラムおよびデータを維持する。
【0132】
ハイバネーションS4およびソフトオフ状態S5において、DC−DCコンバータ34からのホストCPU11およびSDRAM29への電源の供給は停止され、DC−DCコンバータ34からエンベデッドコントローラ33に電源が供給される。
【0133】
デジタルスチルカメラにおいて、ハイバネーションS4とソフトオフ状態S5とは、電気的に同じ状態なので、以下の説明において、ハイバネーションS4とソフトオフ状態S5とを区別しない。
【0134】
メカニカルオフ状態G3において、DC−DCコンバータ34からの、ホストCPU11、SDRAM29、およびエンベデッドコントローラ33への電源の供給は停止される。但し、エンベデッドコントローラ33には、バッテリ36から電源が供給される。これにより、エンベデッドコントローラ33に内蔵されているリアルタイムクロック(RTC)の動作が保持される。
【0135】
なお、リアルタイム処理用CPU12への電源は、ホストCPU11への電源と同様に、動作状態S0において供給され、サスペンド状態S3、ハイバネーションS4、ソフトオフ状態S5、およびメカニカルオフ状態G3において供給が停止される。
【0136】
図8は、状態遷移を説明する図である。メカニカルオフ状態G3において、バッテリ35が装着されると、デジタルスチルカメラの状態は、ハイバネーションS4(ソフトオフ状態S5)に遷移する。
【0137】
ハイバネーションS4(ソフトオフ状態S5)において、バッテリ35が取り外されると、デジタルスチルカメラの状態は、メカニカルオフ状態G3に遷移する。
【0138】
ハイバネーションS4(ソフトオフ状態S5)において、入力部31の電源ボタンが押圧されると、デジタルスチルカメラの状態は、動作状態S0に遷移する。逆に、動作状態S0において、電源ボタンが長押しされる、すなわち予め決められた時間より長く継続して押圧されると、デジタルスチルカメラの状態は、ハイバネーションS4(ソフトオフ状態S5)に遷移する。
【0139】
動作状態S0において、電源ボタンが押圧されるか、レンズキャップが閉じられるか、または予め決められた時間より長く使用者による操作がなされない(ノーオペレーションである)と、デジタルスチルカメラの状態は、サスペンド状態S3に遷移する。
【0140】
サスペンド状態S3において、電源ボタンが押圧されるか、入力部31の無線LANボタンが押圧されるか、レンズキャップが開けられるか、または一方の端末が他の機器に接続されているケーブルの他方の端末がUSB接続端子41に接続されると、デジタルスチルカメラの状態は、動作状態S0に遷移する。
【0141】
サスペンド状態S3において、バッテリ35の電圧が予め定めた閾値より低くなるか、またはサスペンド状態S3に遷移してから予め定めた長さの時間、すなわち長時間が経過すると、デジタルスチルカメラの状態は、ハイバネーションS4(ソフトオフ状態S5)に遷移する。
【0142】
また、サスペンド状態S3において、バッテリ35が取り外されると、デジタルスチルカメラの状態は、メカニカルオフ状態G3に遷移する。同様に、動作状態S0において、バッテリ35が取り外されると、デジタルスチルカメラの状態は、メカニカルオフ状態G3に遷移する。
【0143】
なお、動作状態S0において、一定時間処理が実行されないと(アイドルになると)、デジタルスチルカメラの状態は、ホストCPU11のクロックの周波数を落とした、いわゆるアイドル状態に遷移する。アイドル状態では、一定の期間毎に割り込みが入り、デジタルスチルカメラの状態は、一定の期間毎に動作状態S0になる。
【0144】
図9を参照して、動作状態S0の詳細を説明する。動作状態S0には、撮影処理実行状態、閲覧処理実行状態、および設定処理実行状態に加えて、他の処理を実行する状態に相当する、USBマスストレージクラス処理実行状態、および初期状態S0Nが含まれる。
【0145】
USBマスストレージクラス処理実行状態においては、USBマスストレージクラス処理プログラム84がホストCPU11により実行されている。
【0146】
初期状態S0Nは、アプリケーションの処理の実行が抑制された状態である。初期状態S0Nにおいて、アプリケーションプログラム62がホストCPU11により実行されているが、撮影処理プログラム81、閲覧処理プログラム82、設定処理プログラム83、またはUSBマスストレージクラス処理プログラム84はいずれも実行されない。
【0147】
初期状態S0Nから、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態の何れかに遷移することができ、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態から、初期状態S0Nに遷移することができる。
【0148】
しかし、撮影処理実行状態から、閲覧処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態に直接に遷移することはできず、また、閲覧処理実行状態から、撮影処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態に直接に遷移することはできない。設定処理実行状態から、閲覧処理実行状態、撮影処理実行状態、またはUSBマスストレージクラス処理実行状態に直接に遷移することはできず、USBマスストレージクラス処理実行状態から、撮影処理実行状態、閲覧処理実行状態、または設定処理実行状態に直接に遷移することはできない。
【0149】
すなわち、撮影処理実行状態と、閲覧処理実行状態と、設定処理実行状態と、USBマスストレージクラス処理実行状態との間では直接に遷移することはできない。
【0150】
次に、図10乃至図12を参照して、起動の処理の手順の概要を説明する。
【0151】
まず、休止する以前の動作状態S0においてSDRAM29に記憶されていたプログラムのイメージであるウォームブートイメージあって、NAND型フラッシュメモリ17に記憶されているウォームブートイメージをSDRAM29にロードし実行することにより起動するウォームブートの起動について説明する。
【0152】
図10は、ウォームブートの起動の処理の手順を示す図である。時刻t0において、ホストCPU11のリセットが解除されると、ホストCPU11は、マスクROM13の予め定めた番地に格納されているブートローダの実行を開始する。ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されている2次ブートローダをSDRAM29にロードする。ブートローダのジャンプ命令により、ホストCPU11は、2次ブートローダの実行を開始する。
【0153】
2次ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されている、リアルタイム処理用CPU12に実行されるオペレーティングシステム141およびアプリケーションプログラム142をSDRAM29にロードする。
【0154】
そして、2次ブートローダを実行するホストCPU11は、リアルタイム処理用CPU12のリセットを解除する。
【0155】
リセットが解除されたリアルタイム処理用CPU12は、時刻t1において、SDRAM29の予め定めた番地からプログラムの命令の実行を開始することで、オペレーティングシステム141の実行を開始する。
【0156】
2次ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されている、ウォームブートイメージをSDRAM29にロードする。
【0157】
ウォームブートイメージのSDRAM29へのロードが完了すると、時刻t2において、ホストCPU11は、ロードされたウォームブートイメージに含まれている電源管理機構73の実行を開始する。電源管理機構73を実行するホストCPU11は、DC−DCコンバータ34およびバッテリ35を含む電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを修正するなどの復帰の処理を行う。
【0158】
電源管理機構73の復帰の処理が完了すると、時刻t3において、ホストCPU11は、ロードされたウォームブートイメージに含まれているカーネル71の実行を開始する。カーネル71を実行するホストCPU11は、SDRAM29の記憶空間の占有の状態などを検出して、SDRAM29などの資源の管理のプロセスのパラメータを修正するなどの復帰の処理を行う。
【0159】
カーネル71の復帰の処理が完了すると、時刻t4において、ホストCPU11は、ロードされたウォームブートイメージに含まれているデバイスドライバ72の復帰の処理の実行を開始する。すなわち、ホストCPU11は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのそれぞれのデバイスの状態を検出して、検出したデバイスの状態にあわせてデバイスドライバ72のパラメータを修正するなどの復帰の処理を行う。
【0160】
デバイスドライバ72の復帰の処理が完了すると、ホストCPU11は、デバイスドライバ72の復帰の処理が完了したことをリアルタイム処理用CPU12に通知する。
【0161】
リアルタイム処理用CPU12が、ホストCPU11からのデバイスドライバ72の復帰の処理が完了したことの通知を受信すると、リアルタイム処理プログラム171を実行することにより実行されるリアルタイムの制御の処理と、ホストCPU11における処理との通信が開始される。
【0162】
また、デバイスドライバ72の復帰の処理が完了すると、時刻t5において、ホストCPU11は、ロードされたウォームブートイメージに含まれるアプリケーションプログラム62の復帰の処理を開始する。ホストCPU11は、シャッタスピード、露出、またはズームなどの設定値を設定するなどの、アプリケーションプログラム62の復帰の処理を行う。
【0163】
アプリケーションプログラム62の復帰の処理が完了すると、ホストCPU11は、アプリケーションプログラム62の復帰の処理が完了したことをリアルタイム処理用CPU12に通知する。アプリケーションプログラム62の電源管理プログラム86は、電源管理機構73から電源の状態を示すパラメータを取得するなどして、電源の状態の監視を開始する。
【0164】
図11は、休止する直前の動作状態S0においてSDRAM29に記憶されていたプログラムであって、サスペンド状態S3においてSDRAM29に記憶されているプログラムを実行することにより起動するホットブートの起動の処理の手順を示す図である。
【0165】
なお、SDRAM29は、休止する直前の動作状態S0において記憶していたオペレーティングシステム61、アプリケーションプログラム62、オペレーティングシステム141、およびアプリケーションプログラム142の記憶を、サスペンド状態S3およびホットブートの起動の処理の開始後において維持する。
【0166】
時刻t0において、ホストCPU11のリセットが解除されると、ホストCPU11は、マスクROM13の予め定めた番地に格納されているブートローダの実行を開始する。ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されている2次ブートローダをSDRAM29にロードする。ブートローダのジャンプ命令により、ホストCPU11は、2次ブートローダの実行を開始する。
【0167】
上述したように、SDRAM29が、オペレーティングシステム141およびアプリケーションプログラム142の記憶を、サスペンド状態S3およびホットブートの起動の処理の開始後において維持しているので、ホットブートの起動の処理において、2次ブートローダを実行するホストCPU11がオペレーティングシステム141およびアプリケーションプログラム142をSDRAM29に改めてロードする必要はない。
【0168】
2次ブートローダを実行するホストCPU11は、リアルタイム処理用CPU12のリセットを解除する。
【0169】
リセットが解除されたリアルタイム処理用CPU12は、時刻t1において、SDRAM29の予め定めた番地からプログラムの命令の実行を開始することで、オペレーティングシステム141の実行を開始する。
【0170】
リアルタイム処理用CPU12のリセットを解除した後、ホストCPU11は、SDRAM29に記憶されている電源管理機構73の実行を開始する。電源管理機構73を実行するホストCPU11は、DC−DCコンバータ34およびバッテリ35を含む電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを修正するなどの復帰の処理を行う。
【0171】
電源管理機構73の復帰の処理が完了すると、時刻t2において、ホストCPU11は、SDRAM29に記憶されているカーネル71の実行を開始する。カーネル71を実行するホストCPU11は、SDRAM29の記憶空間の占有の状態などを検出して、SDRAM29などの資源の管理のプロセスのパラメータを修正するなどの復帰の処理を行う。
【0172】
カーネル71の復帰の処理が完了すると、時刻t3において、ホストCPU11は、SDRAM29に記憶されているデバイスドライバ72の復帰の処理の実行を開始する。すなわち、ホストCPU11は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのそれぞれのデバイスの状態を検出して、検出したデバイスの状態にあわせてデバイスドライバ72のパラメータを修正するなどの復帰の処理を行う。
【0173】
デバイスドライバ72の復帰の処理が完了すると、ホストCPU11は、デバイスドライバ72の復帰の処理が完了したことをリアルタイム処理用CPU12に通知する。
【0174】
リアルタイム処理用CPU12が、ホストCPU11からのデバイスドライバ72の復帰の処理が完了したことの通知を受信すると、リアルタイム処理プログラム171を実行することにより実行されるリアルタイムの制御の処理と、ホストCPU11における処理との通信が開始される。
【0175】
また、デバイスドライバ72の復帰の処理が完了すると、時刻t4において、ホストCPU11は、SDRAM29に記憶されているアプリケーションプログラム62の復帰の処理の実行を開始する。ホストCPU11は、シャッタスピード、露出、またはズームなどの設定値を設定するなどの、アプリケーションプログラム62の復帰の処理を行う。
【0176】
アプリケーションプログラム62の復帰の処理が完了すると、ホストCPU11は、アプリケーションプログラム62の復帰の処理が完了したことをリアルタイム処理用CPU12に通知する。アプリケーションプログラム62の電源管理プログラム86は、電源管理機構73から電源の状態を示すパラメータを取得するなどして、電源の状態の監視を開始する。
【0177】
このように、ホットブートの起動の処理においては、ウォームブートイメージをNAND型フラッシュメモリ17から読み出して、SDRAM29にロードするなどの処理が不要になるので、ウォームブートの起動の処理に比較して、より迅速に起動することができる。
【0178】
次に、デジタルスチルカメラを出荷する前に工場で実行されるか、または、いわゆるファームウェアをアップデートするときに実行される起動の方式である、NAND型フラッシュメモリ17に記憶されている、オペレーティングシステム61およびアプリケーションプログラム62を開いて起動するコールドブートについて説明する。
【0179】
図12は、コールドブートの起動の処理の手順を示す図である。
【0180】
時刻t0において、ホストCPU11のリセットが解除されると、ホストCPU11は、マスクROM13の予め定めた番地に格納されているブートローダの実行を開始する。ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されている2次ブートローダをSDRAM29にロードする。ブートローダのジャンプ命令により、ホストCPU11は、2次ブートローダの実行を開始する。
【0181】
2次ブートローダを実行するホストCPU11は、時刻t1において、NAND型フラッシュメモリ17に記憶されているオペレーティングシステム141およびアプリケーションプログラム142のSDRAM29へのロードを開始する。
【0182】
2次ブートローダを実行するホストCPU11は、リアルタイム処理用CPU12に実行されるオペレーティングシステム141およびアプリケーションプログラム142のSDRAM29へのロードが完了すると、リアルタイム処理用CPU12のリセットを解除する。
【0183】
リセットが解除されたリアルタイム処理用CPU12は、時刻t2において、SDRAM29の予め定めた番地からプログラムの命令の実行を開始することで、オペレーティングシステム141の実行を開始する。
【0184】
さらに、2次ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されているオペレーティングシステム61およびアプリケーションプログラム62を、SDRAM29にロードする。
【0185】
オペレーティングシステム61およびアプリケーションプログラム62のSDRAM29へのロードが完了すると、時刻t3において、ホストCPU11は、SDRAM29にロードされた電源管理機構73の実行を開始する。電源管理機構73を実行するホストCPU11は、DC−DCコンバータ34およびバッテリ35を含む電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを初期化するなどの初期化の処理を行う。
【0186】
電源管理機構73の初期化の処理が完了すると、時刻t4において、ホストCPU11は、SDRAM29にロードされたカーネル71の実行を開始する。カーネル71を実行するホストCPU11は、SDRAM29の記憶空間の大きさ(アドレスの範囲)などを検出して、SDRAM29などの資源の管理のプロセスのパラメータを初期化するなどの初期化の処理を行う。
【0187】
カーネル71の初期化の処理が完了すると、時刻t5において、ホストCPU11は、SDRAM29にロードされたデバイスドライバ72の初期化の処理を開始する。すなわち、ホストCPU11は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのそれぞれのデバイスを検出して、検出したデバイスにあわせてデバイスドライバ72のパラメータを初期化するなどの初期化の処理を行う。
【0188】
デバイスドライバ72の初期化の処理が完了すると、ホストCPU11は、デバイスドライバ72の初期化の処理が完了したことをリアルタイム処理用CPU12に通知する。
【0189】
リアルタイム処理用CPU12が、ホストCPU11からのデバイスドライバ72の初期化の処理が完了したことの通知を受信すると、リアルタイム処理プログラム171を実行することにより実行されるリアルタイムの制御の処理と、ホストCPU11における処理との通信が開始される。
【0190】
また、デバイスドライバ72の初期化の処理が完了すると、時刻t6において、ホストCPU11は、SDRAM29にロードされたアプリケーションプログラム62の初期化の処理を開始する。ホストCPU11は、撮影処理または閲覧処理に用いる各種のパラメータをデフォルトの値に設定するなどの、アプリケーションプログラム62の初期化の処理を行う。
【0191】
アプリケーションプログラム62の初期化の処理が完了すると、ホストCPU11は、アプリケーションプログラム62の初期化の処理が完了したことをリアルタイム処理用CPU12に通知する。アプリケーションプログラム62の電源管理プログラム86は、電源管理機構73から電源の状態を示すパラメータを取得するなどして、電源の状態の監視を開始する。
【0192】
さらに、ホストCPU11は、ウォームブートイメージを生成して、生成したウォームブートイメージをNAND型フラッシュメモリ17に記憶させる。
【0193】
このように、ファームウェアをアップデートするときなど、コールドブートの起動の処理が実行されて、NAND型フラッシュメモリ17に記憶されているウォームブートイメージが更新される。
【0194】
なお、初期化が完了したオペレーティングシステム61を実行するホストCPU11が、NAND型フラッシュメモリ17に記憶されているアプリケーションプログラム62を、SDRAM29にロードするようにしてもよい。
【0195】
次に、図13を参照して、動作状態S0から休止状態に遷移する休止の処理の手順の概要を説明する。
【0196】
時刻t0において、休止の処理の開始が指示されると、アプリケーションプログラム62を実行するホストCPU11は、休止状態に遷移する前に、状態を初期状態S0Nに遷移させる。アプリケーションプログラム62を実行するホストCPU11は、サスペンド状態S3に遷移するか、またはハイバネーションS4に遷移するかを決定する。
【0197】
また、アプリケーションプログラム62を実行するホストCPU11は、撮影した画像のデータを格納するファイルを閉じるなどの終了処理を実行する。
【0198】
さらに、時刻t1において、アプリケーションプログラム62を実行するホストCPU11は、リアルタイム処理用CPU12に終了を通知する。
【0199】
すると、リアルタイム処理用CPU12は、図示せぬ光学系を構成するレンズを終了位置に戻したりするなどの終了の処理を開始する。
【0200】
また、アプリケーションプログラム62の電源管理プログラム86は、決定したサスペンド状態S3またはハイバネーションS4への遷移を指示するコマンドを発行することで、電源管理機構73に終了を通知する。
【0201】
アプリケーションプログラム62を実行するホストCPU11による終了の処理が完了すると、時刻t2において、ホストCPU11は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのデバイスを制御するためのプロセスを終了させるなど、デバイスドライバ72の終了の処理を開始する。
【0202】
デバイスドライバ72の終了の処理が完了すると、時刻t3において、ホストCPU11は、アプリケーションプログラム62やのデバイスの監視、SDRAM29などの資源の管理、割りこみ処理、またはプロセス間通信などの所定のプロセスを完了させるカーネル71の終了の処理を開始する。
【0203】
カーネル71の終了の処理が完了すると、時刻t4において、ホストCPU11は、休止状態におけるパラメータを設定するなどの電源管理機構73の終了の処理を開始する。
【0204】
リアルタイム処理用CPU12から終了の処理の完了が通知されると、時刻t5において、電源管理機構73を実行するホストCPU11は、シリアルインタフェース19を介して、エンベデッドコントローラ33に電源の供給の停止(遮断)を要求する。エンベデッドコントローラ33は、ホストCPU11から電源の供給の停止が要求されると、時刻t6において、サスペンド状態S3に遷移する場合、DC−DCコンバータ34に、SDRAM29への電源の供給を維持させたまま、ホストCPU11およびリアルタイム処理用CPU12への電源の供給を停止(遮断)させ、ハイバネーションS4に遷移する場合、DC−DCコンバータ34に、SDRAM29、ホストCPU11、およびリアルタイム処理用CPU12への電源の供給を停止(遮断)させる。
【0205】
このように、サスペンド状態S3またはハイバネーションS4に遷移して休止することができる。
【0206】
次に、ウォームブート、ホットブート、およびコールドブートの起動の処理の詳細をそれぞれ説明する。
【0207】
図14乃至図16は、ウォームブートの起動の処理の詳細を説明するフローチャートである。ステップS101において、起動方式決定情報取得プログラム203を実行するエンベデッドコントローラ33は、起動の要因となる入力部31からの信号を取得する。すなわち、起動方式決定情報取得プログラム203は、入力部31から供給される、起動の要因となる、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップの開閉を示す信号を取得する。起動方式決定情報取得プログラム203を実行するエンベデッドコントローラ33は、取得した信号に応じて、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップを開くことなどの起動のトリガを示す起動要因情報を生成する。
【0208】
ステップS102において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33は、ステップS101で取得した信号に応じて生成された起動要因情報を内部のメモリに記憶する。すなわち、起動方式決定情報取得プログラム203により、起動の要因となる、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧またはレンズキャップの開閉を示す信号が入力部31から取得されると、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧またはレンズキャップを開くことなどの起動のトリガを示す起動要因情報が生成されるので、起動方式決定情報記憶処理プログラム204は、生成された起動要因情報をエンベデッドコントローラ33の内部のメモリに記憶する。
【0209】
ステップS103において、電源制御プログラム201を実行するエンベデッドコントローラ33は、DC−DCコンバータ34に、デジタルスチルカメラの各部への電力の供給を開始させる。これにより、ホストCPU11乃至汎用入出力部32への電源の供給が開始される。
【0210】
ステップS104において、エンベデッドコントローラ33は、供給される電源および電源の供給が開始された各部の動作が安定するまで、予め定めた所定の時間ウェイトする。
【0211】
ステップS105において、他CPUリセット制御プログラム202を実行するエンベデッドコントローラ33は、ホストCPU11のリセットを解除する。例えば、エンベデッドコントローラ33は、エンベデッドコントローラ33とホストCPU11とを接続する、リセット信号を供給するための信号線のそのリセット信号のレベルを変化させることにより、ホストCPU11のリセットを解除する。
【0212】
リセットが解除されると、ステップS201において、ホストCPU11は、マスクROM13のブートローダを起動して、ブートローダの実行を開始する。すなわち、ホストCPU11は、リセット解除のハードウェア割り込みにより、マスクROM13の予め定められた番地に格納されている命令を実行することで、ブートローダを起動する。ステップS202において、ホストCPU11は、ブートローダを初期化する。
【0213】
ステップS203において、ブートローダを実行するホストCPU11は、NAND型フラッシュメモリ17に記憶されている2次ブートローダ101をSDRAM29にロードする。ステップS204において、ホストCPU11は、ブートローダに含まれる命令である、2次ブートローダ101へのジャンプの命令を実行して、手続きは、2次ブートローダ101にジャンプする。その結果、ホストCPU11は、2次ブートローダ101の実行を開始する。
【0214】
なお、2次ブートローダ101をマスクROM13に記憶させ、マスクROM13に記憶されている2次ブートローダ101にジャンプするようにしてもよい。
【0215】
ステップS205において、ホストCPU11は、2次ブートローダ101を初期化する。2次ブートローダ101には、シリアルインタフェース19のドライバが含まれているので、シリアルインタフェース19を介して、ホストCPU11とエンベデッドコントローラ33との通信が可能になる。
【0216】
ステップS206において、2次ブートローダ101の起動方式決定情報取得プログラム121を実行するホストCPU11は、シリアルインタフェース19を介して、エンベデッドコントローラ33に、起動方式決定情報の要求を送信する。
【0217】
ステップS106において、起動方式決定情報提供プログラム205を実行するエンベデッドコントローラ33は、シリアルインタフェース19を介して、ホストCPU11から送信されてくる起動方式決定情報の要求を受信する。ステップS107において、起動方式決定情報提供プログラム205を実行するエンベデッドコントローラ33は、エンベデッドコントローラ33の内部のメモリに記憶されている起動方式決定情報を、シリアルインタフェース19を介してホストCPU11に送信する。
【0218】
ステップS207において、2次ブートローダ101の起動方式決定情報取得プログラム121を実行するホストCPU11は、シリアルインタフェース19を介して、エンベデッドコントローラ33から送信されてくる起動方式決定情報を受信する。
【0219】
ステップS208において、2次ブートローダ101の起動方式決定情報取得プログラム121を実行するホストCPU11は、受信した起動方式決定情報をSDRAM29に記憶させる。この場合、ホストCPU11は、SDRAM29の記憶領域のうちの、予め定めた領域に起動方式決定情報を記憶させる。
【0220】
ステップS209において、2次ブートローダ101の起動方式決定プログラム122を実行するホストCPU11は、ステップS207の受信により取得した起動方式決定情報を基に、起動の方式を決定する。この場合、ウォームブートの起動の方式に、起動の方式が決定される。なお、起動方式決定プログラム122は、休止状態情報がサスペンド状態S3を示すとともにバッテリ着脱情報がバッテリが取り外されたことを示す場合、または休止状態情報がハイバネーションS4を示す場合、起動の方式をウォームブートの起動の方式に決定する。
【0221】
ステップS210において、2次ブートローダ101を実行するホストCPU11は、汎用入出力部32を初期化する。
【0222】
ステップS211において、2次ブートローダ101の設定値読み出しプログラム123を実行するホストCPU11は、起動における復帰において必要となる、シャッタスピードや露出、ズーム、または撮影する画像のサイズや符号化する際の圧縮率などの設定値をNAND型フラッシュメモリ17からSDRAM29にロードする。
【0223】
ステップS212において、2次ブートローダ101の他CPUプログラム読み出しプログラム124を実行するホストCPU11は、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142を、NAND型フラッシュメモリ17からSDRAM29にロードする。
【0224】
ステップS213において、2次ブートローダ101を実行するホストCPU11は、リアルタイム処理用CPU12のリセットを解除する。
【0225】
リセットが解除されると、ステップS301において、リアルタイム処理用CPU12は、SDRAM29にロードされているオペレーティングシステム141の実行を開始する。すなわち、例えば、リアルタイム処理用CPU12は、リセット解除のハードウェア割り込みまたはソフトウェア割り込みにより、SDRAM29の予め定められた番地に格納されている命令を実行することで、オペレーティングシステム141の実行を開始する。ステップS302において、ホストCPU11は、オペレーティングシステム141を初期化する。
【0226】
ステップS303において、オペレーティングシステム141の起動方式決定情報取得プログラム161を実行するリアルタイム処理用CPU12は、SDRAM29から、ステップS208において記憶された起動方式決定情報を読み出す。ステップS304において、オペレーティングシステム141の起動方式決定プログラム162を実行するリアルタイム処理用CPU12は、ステップS209と同様の処理で、ステップS303で読み出した起動方式決定情報を基に、起動の方式を決定する。この場合、ウォームブートの起動の方式に、起動の方式が決定される。
【0227】
ステップS305において、オペレーティングシステム141を実行するリアルタイム処理用CPU12は、アプリケーションプログラム142を起動する。ステップS306において、リアルタイム処理用CPU12は、アプリケーションプログラム142を初期化する。
【0228】
ステップS307において、アプリケーションプログラム142を実行するリアルタイム処理用CPU12は、グラフィックコントローラ21を制御して、LCD20の表示を開始させ、図示せぬスピーカまたはブザーに起動音を出力させる。
【0229】
ステップS308において、アプリケーションプログラム142の起動画面表示プログラム173を実行するリアルタイム処理用CPU12は、グラフィックコントローラ21を制御して、LCD20に、起動を示す起動画面を表示させる。
【0230】
ステップS309において、アプリケーションプログラム142のGUI処理プログラム172を実行するリアルタイム処理用CPU12は、リアルタイム処理用CPU12がホストCPU11と共用する入力部31から使用者の指示が取得されるユーザインタフェースの処理であって、アプリケーションプログラム62の機能に比較し少ない機能の、すなわち機能の限定されたユーザインタフェースの処理を開始する。
【0231】
ステップS310において、アプリケーションプログラム142のリアルタイム処理プログラム171を実行するリアルタイム処理用CPU12は、図示せぬ光学系、CCD14、アナログフロントエンド15、および信号処理部16に対するリアルタイムの制御の処理を開始する。
【0232】
なお、ステップS310において、起動方式決定情報のうちの起動要因情報を参照して、レンズキャップが開かれたことにより起動された場合、リアルタイムの制御の処理として、図示せぬ光学系、CCD14、アナログフロントエンド15、および信号処理部16の初期化の処理を行うようにしてもよい。
【0233】
リアルタイム処理用CPU12により実行されるステップS301乃至ステップS310と並行して、ホストCPU11によりステップS214乃至ステップS218が実行される。すなわち、ステップS214において、2次ブートローダ101のウォームブートイメージ読み出しプログラム125を実行するホストCPU11は、ウォームブートイメージを、NAND型フラッシュメモリ17からSDRAM29にロードする。
【0234】
ステップS215において、ホストCPU11は、2次ブートローダ101に含まれる命令である、カーネル71へのジャンプの命令を実行して、手続きは、カーネル71にジャンプする。その結果、ホストCPU11は、オペレーティングシステム61の実行を開始する。
【0235】
ステップS216において、オペレーティングシステム61を実行するホストCPU11は、DC−DCコンバータ34およびバッテリ35などの電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを修正するなどの電源管理機構73の復帰の処理を実行する。
【0236】
ステップS217において、オペレーティングシステム61を実行するホストCPU11は、SDRAM29の記憶空間の占有の状態などを検出して、SDRAM29などの資源の管理のプロセスのパラメータを修正するなどのカーネル71の復帰の処理を実行する。
【0237】
ステップS218において、オペレーティングシステム61を実行するホストCPU11は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのそれぞれのデバイスの状態を検出して、検出したデバイスの状態にあわせてデバイスドライバ72のパラメータを修正するなどのデバイスドライバ72の復帰の処理を実行する。
【0238】
ステップS219において、オペレーティングシステム61を実行するホストCPU11は、バスを介して、リアルタイム処理用CPU12に、デバイスドライバ72の復帰処理の完了の通知を送信する。
【0239】
ステップS311において、オペレーティングシステム141を実行するリアルタイム処理用CPU12は、バスを介して、ホストCPU11から送信されてくる、デバイスドライバ72の復帰処理の完了の通知を受信する。
【0240】
また、ステップS220において、オペレーティングシステム61を実行するホストCPU11は、アプリケーションプログラム62の実行を開始する。ステップS221において、ホストCPU11は、シャッタスピード、露出、またはズームなどの設定値を設定するなどの、アプリケーションプログラム62の復帰の処理を実行する。
【0241】
なお、ステップS221の後、デジタルスチルカメラの状態は、初期状態S0Nとなる。
【0242】
ステップS222において、ホストCPU11は、バスを介して、リアルタイム処理用CPU12に、アプリケーションプログラム62の復帰処理の完了の通知を送信する。
【0243】
ステップS312において、リアルタイム処理用CPU12は、バスを介して、ホストCPU11から送信されてくる、アプリケーションプログラム62の復帰処理の完了の通知を受信する。
【0244】
ステップS313において、オペレーティングシステム141のアプリケーション起動終了制御プログラム163を実行するリアルタイム処理用CPU12は、アプリケーションプログラム142のGUI処理プログラム172を終了させることにより、機能の限定されたユーザインタフェースの処理を終了させて、ウォームブートの起動の処理は終了する。
【0245】
このように、ウォームブートの起動の処理により、休止状態から、初期状態S0Nに迅速に遷移することができる。
【0246】
次に、図17乃至図19のフローチャートを参照して、ホットブートの起動の処理の詳細を説明する。
【0247】
エンベデッドコントローラ33によるステップS131乃至ステップS137は、それぞれ、図14のステップS101乃至ステップS107のそれぞれと同様なので、その説明は省略する。
【0248】
ホストCPU11によるステップS231乃至ステップS238は、それぞれ、図14のステップS201乃至ステップS208のそれぞれと同様なので、その説明は省略する。
【0249】
ステップS239において、2次ブートローダ101の起動方式決定プログラム122を実行するホストCPU11は、ステップS237の受信により取得した起動方式決定情報を基に、起動の方式を決定する。この場合、ホットブートの起動の方式に、起動の方式が決定される。なお、起動方式決定プログラム122は、休止状態情報がサスペンド状態S3を示すとともにバッテリ着脱情報がバッテリが取り外されなかったことを示す場合、起動の方式をホットブートの起動の方式に決定する。
【0250】
ホストCPU11によるステップS240およびステップS241は、それぞれ、図14または図15のステップS210およびステップS211のそれぞれと同様なので、その説明は省略する。
【0251】
ステップS242において、2次ブートローダ101を実行するホストCPU11は、リアルタイム処理用CPU12のリセットを解除する。
【0252】
リアルタイム処理用CPU12によるステップS331乃至ステップS333は、それぞれ、図15のステップS301乃至ステップS303のそれぞれと同様なので、その説明は省略する。
【0253】
ステップS334において、オペレーティングシステム141の起動方式決定プログラム162を実行するリアルタイム処理用CPU12は、ステップS239と同様の処理で、ステップS333で読み出した起動方式決定情報を基に、起動の方式を決定する。この場合、ホットブートの起動の方式に、起動の方式が決定される。
【0254】
リアルタイム処理用CPU12によるステップS335乃至ステップS338は、それぞれ、図15または図16のステップS305乃至ステップS308のそれぞれと同様なので、その説明は省略する。
【0255】
ステップS339において、アプリケーションプログラム142のリアルタイム処理プログラム171を実行するリアルタイム処理用CPU12は、図示せぬ光学系、CCD14、アナログフロントエンド15、および信号処理部16に対するリアルタイムの制御の処理を開始する。
【0256】
すなわち、この場合、リアルタイム処理用CPU12による、GUI処理プログラム172の実行は抑制され、これにより、リアルタイム処理用CPU12がホストCPU11と共用する入力部31から使用者の指示が取得されるユーザインタフェースの処理であって、アプリケーションプログラム62の機能に比較し少ない機能の、すなわち機能の限定されたユーザインタフェースの処理の実行が抑制される。
【0257】
ホットブートの起動においては、ホストCPU11が極めて迅速に起動するので、リアルタイム処理用CPU12がGUI処理プログラム172を実行しないようにしたほうが、結果的に、より迅速に起動できるようになる。
【0258】
リアルタイム処理用CPU12により実行されるステップS331乃至ステップS339と並行して、ホストCPU11によりステップS243乃至ステップS246が実行される。すなわち、テップS243において、ホストCPU11は、2次ブートローダ101に含まれる命令である、カーネル71へのジャンプの命令を実行して、手続きは、カーネル71にジャンプする。その結果、ホストCPU11は、オペレーティングシステム61の実行を開始する。
【0259】
ホストCPU11によるステップS244乃至ステップS246は、それぞれ、図15または図16のステップS216乃至ステップS218のそれぞれと同様なのでその説明は省略する。
【0260】
さらに、ホストCPU11によるステップS247乃至ステップS250は、それぞれ、図16のステップS219乃至ステップS222のそれぞれと同様なのでその説明は省略する。また、リアルタイム処理用CPU12によるステップS340およびステップS341は、それぞれ、図16のステップS311およびステップS341のそれぞれと同様なのでその説明は省略する。
【0261】
ステップS250の後のステップS251において、アプリケーションプログラム62の状態遷移処理プログラム85を実行するホストCPU11は、SDRAM29に記憶されている起動方式決定情報のうちの起動要因情報を参照して、デジタルスチルカメラの状態を、起動要因に応じたアプリケーションの実行状態に遷移させて、ホットブートの起動の処理は終了する。例えば、ステップS251において、状態遷移処理プログラム85は、起動要因が入力部31の電源ボタンの押圧である場合、閲覧処理プログラム82を起動させて、デジタルスチルカメラの状態を閲覧処理実行状態に遷移させる。また、例えば、ステップS251において、状態遷移処理プログラム85は、起動要因がレンズキャップを開くことである場合、撮影処理プログラム81を起動させて、デジタルスチルカメラの状態を撮影処理実行状態に遷移させる。
【0262】
このように、ホットブートの起動の処理により、極めて迅速に起動すると共に、動作状態S0のうち、起動要因に応じた処理を実行する状態に遷移することができる。
【0263】
次に、図20乃至図22のフローチャートを参照して、デジタルスチルカメラを出荷する前に工場で実行されるか、または、いわゆるファームウェアをアップデートするときに実行されるコールドブートの起動の処理の詳細を説明する。
【0264】
エンベデッドコントローラ33によるステップS161乃至ステップS167は、それぞれ、図14のステップS101乃至ステップS107のそれぞれと同様なので、その説明は省略する。
【0265】
ホストCPU11によるステップS261乃至ステップS268は、それぞれ、図14のステップS201乃至ステップS208のそれぞれと同様なので、その説明は省略する。
【0266】
ステップS269において、2次ブートローダ101の起動方式決定プログラム122を実行するホストCPU11は、ステップS267の受信により取得した起動方式決定情報を基に、起動の方式を決定する。この場合、コールドブートの起動の方式に、起動の方式が決定される。
【0267】
例えば、ステップS269において、起動方式決定プログラム122を実行するホストCPU11は、休止状態情報に含まれるイメージ作成フラグを参照して、イメージ作成フラグがセットされている場合、すなわち、イメージ作成フラグが立っている場合、ウォームブートイメージを作成する必要があるので、コールドブートの起動の方式に、起動の方式を決定する。
【0268】
なお、イメージ作成フラグは、アップデートされたファームウェアが取得され、使用者からファームウェアのアップデートが指示された場合など、後述する休止の処理において、セットされる。
【0269】
ホストCPU11によるステップS270乃至ステップS273は、それぞれ、図14または図15のステップS210乃至ステップS213のそれぞれと同様なので、その説明は省略する。
【0270】
リアルタイム処理用CPU12によるステップS361乃至ステップS363は、それぞれ、図15のステップS301乃至ステップS303のそれぞれと同様なので、その説明は省略する。
【0271】
ステップS364において、オペレーティングシステム141の起動方式決定プログラム162を実行するリアルタイム処理用CPU12は、ステップS269と同様の処理で、ステップS363で読み出した起動方式決定情報を基に、起動の方式を決定する。この場合、コールドブートの起動の方式に、起動の方式が決定される。
【0272】
リアルタイム処理用CPU12によるステップS365およびステップS366は、それぞれ、図15のステップS305およびステップS306のそれぞれと同様なので、その説明は省略する。
【0273】
ステップS367において、アプリケーションプログラム142を実行するリアルタイム処理用CPU12は、グラフィックコントローラ21を制御して、LCD20に、ファームウェアアップデート中である旨を表示させる。
【0274】
このようにすることで、使用者は、ファームウェアのアップデートが行われていることを知ることができる。
【0275】
仮に、ファームウェアアップデート中である旨の表示の制御をホストCPU11に行わせると、ファームウェアアップデート中である旨を表示させるウォームブートイメージが生成されてしまうが、ファームウェアアップデート中である旨の表示の制御を、リアルタイム処理用CPU12が行うので、生成されたウォームブートイメージを用いて、ウォームブートの起動の処理が実行されても、ファームウェアアップデート中である旨が表示されることはない。
【0276】
ステップS368において、アプリケーションプログラム142のリアルタイム処理プログラム171を実行するリアルタイム処理用CPU12は、図示せぬ光学系、CCD14、アナログフロントエンド15、および信号処理部16に対するリアルタイムの制御の処理を開始する。
【0277】
すなわち、この場合、リアルタイム処理用CPU12による、GUI処理プログラム172の実行は抑制され、これにより、リアルタイム処理用CPU12がホストCPU11と共用する入力部31から使用者の指示が取得されるユーザインタフェースの処理であって、アプリケーションプログラム62の機能に比較し少ない機能の、すなわち機能の限定されたユーザインタフェースの処理の実行が抑制される。また、この場合、リアルタイム処理用CPU12による、起動画面表示プログラム173の実行は抑制され、これにより、LCD20への、起動を示す起動画面の表示が抑制される。
【0278】
リアルタイム処理用CPU12により実行されるステップS361乃至ステップS368と並行して、ホストCPU11によりステップS274乃至ステップS278が実行される。すなわち、ステップS274において、2次ブートローダ101を実行するホストCPU11は、オペレーティングシステム61を、NAND型フラッシュメモリ17からSDRAM29にロードする。
【0279】
ステップS275において、ホストCPU11は、2次ブートローダ101に含まれる命令である、カーネル71へのジャンプの命令を実行して、手続きは、カーネル71にジャンプする。その結果、ホストCPU11は、オペレーティングシステム61の実行を開始する。
【0280】
ステップS276において、オペレーティングシステム61の電源管理機構73を実行するホストCPU11は、DC−DCコンバータ34およびバッテリ35などの電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを初期化するなどして、電源管理機構73を初期化する。
【0281】
ステップS277において、オペレーティングシステム61のカーネル71を実行するホストCPU11は、SDRAM29の記憶空間の占有の状態などを検出して、SDRAM29などの資源の管理のプロセスのパラメータを初期化するなどして、カーネル71を初期化する。
【0282】
ステップS278において、オペレーティングシステム61を実行するホストCPU11は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのそれぞれのデバイスを検出すると共にその状態を検出して、その結果に応じてデバイスドライバ72のパラメータを初期化するなどして、デバイスドライバ72を初期化する。
【0283】
ステップS279において、オペレーティングシステム61を実行するホストCPU11は、バスを介して、リアルタイム処理用CPU12に、デバイスドライバ72の初期化の完了の通知を送信する。
【0284】
ステップS369において、オペレーティングシステム141を実行するリアルタイム処理用CPU12は、バスを介して、ホストCPU11から送信されてくる、デバイスドライバ72の初期化の完了の通知を受信する。
【0285】
また、ステップS280において、オペレーティングシステム61を実行するホストCPU11は、アプリケーションプログラム62を、NAND型フラッシュメモリ17からSDRAM29にロードする。ステップS281において、オペレーティングシステム61を実行するホストCPU11は、アプリケーションプログラム62の実行を開始する。
【0286】
ステップS282において、ホストCPU11は、アプリケーションプログラム62を初期化する。なお、ステップS282の後、状態は、初期状態S0Nとなる。
【0287】
ステップS283において、ホストCPU11は、バスを介して、リアルタイム処理用CPU12に、アプリケーションプログラム62の初期化の完了の通知を送信する。
【0288】
ステップS370において、リアルタイム処理用CPU12は、バスを介して、ホストCPU11から送信されてくる、アプリケーションプログラム62の初期化の完了の通知を受信する。
【0289】
ステップS284において、休止状態情報提供プログラム75を実行するホストCPU11は、シリアルインタフェース19を介して、エンベデッドコントローラ33に、イメージ作成フラグのクリアの要求を送信する。
【0290】
ステップS168において、起動方式決定情報取得プログラム203を実行するエンベデッドコントローラ33は、シリアルインタフェース19を介して、ホストCPU11から送信されてくるイメージ作成フラグのクリアの要求を受信する。
【0291】
ステップS169において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33は、休止状態情報に含まれるイメージ作成フラグをクリアする。
【0292】
ステップS285において、オペレーティングシステム61のウォームブートイメージ生成プログラム78を実行するホストCPU11は、SDRAM29に記憶されているプログラムおよびデータを読み出して、ウォームブートイメージを生成する。すなわち、ウォームブートイメージ生成プログラム78は、動作状態S0のうちの初期状態S0NにおいてSDRAM29にロードされているプログラムおよびデータをそのままデータとすることにより、ウォームブートイメージを生成する。
【0293】
ステップS286において、オペレーティングシステム61のウォームブートイメージ生成プログラム78を実行するホストCPU11は、ステップS285で生成したウォームブートイメージをNAND型フラッシュメモリ17に記憶させて、コールドブートの起動の処理は終了する。例えば、ステップS286において、ウォームブートイメージ生成プログラム78は、NAND型フラッシュメモリ17にこれまで記憶していたウォームブートイメージに、生成したウォームブートイメージを上書きするように、生成したウォームブートイメージをNAND型フラッシュメモリ17に記憶させる。
【0294】
このように、コールドブートの起動の処理により、アップデートされたファームウェアを含むウォームブートイメージが生成されて、NAND型フラッシュメモリ17に記憶される。
【0295】
なお、ステップS286の後、即座に、次に説明する終了の処理を実行するようにしてもよい。
【0296】
また、ウォームブートイメージが正常に生成されたことを確認した後に、ホストCPU11が、シリアルインタフェース19を介して、エンベデッドコントローラ33に、イメージ作成フラグのクリアの要求を送信し、エンベデッドコントローラ33が、イメージ作成フラグのクリアの要求を受信し、休止状態情報に含まれるイメージ作成フラグをクリアするようにしてもよい。このようにすることで、ウォームブートイメージが正常に生成された場合にのみ、イメージ作成フラグがクリアされることになる。すなわち、ウォームブートイメージがより確実に生成される。
【0297】
同様に、ウォームブートイメージがNAND型フラッシュメモリ17に正常に記憶されてから、イメージ作成フラグがクリアされるようにしてもよいことは当然である。
【0298】
さらにまた、コールドブートの起動の処理が完了してから、休止し、ステップS285において生成されたウォームブートイメージを用いて、ウォームブートの方式で起動し、正しく起動された場合、イメージ作成フラグがクリアされるようにしてもよい。このようにすることで、ウォームブートイメージを用いて正常に起動された場合にのみ、イメージ作成フラグがクリアされることになる。
【0299】
例えば、休止状態情報にイメージ作成フラグと共に含まれるイメージ生成済みフラグであって、ウォームブートイメージが生成されたか否かを示すイメージ生成済みフラグが、ウォームブートイメージが生成された場合、ウォームブートイメージが生成されたことを示すように、セットされ、そして、次に、起動する場合、セットされているイメージ生成済みフラグとセットされているイメージ作成フラグとが参照されて、起動の方式がウォームブートの起動の方式に決定され、オペレーティングシステム61の復帰の処理が完了して、アプリケーションプログラム62の復帰処理が完了した後に、イメージ生成済みフラグとイメージ作成フラグとがクリアされるようにしてもよい。
【0300】
なお、イメージ作成フラグとイメージ生成済みフラグとが用いられる場合、イメージ生成済みフラグがリセットされ、イメージ作成フラグがセットされているとき、起動の方式はコールドブートの起動の方式に決定され、イメージ生成済みフラグがリセットされ、イメージ作成フラグがリセットされているとき、起動の方式は、休止する場合に決定された休止状態と、休止状態におけるバッテリ35の着脱の履歴とから決定される。
【0301】
次に、図23のフローチャートを参照して、休止の処理の例を説明する。
【0302】
ステップS501において、アプリケーションプログラム62の状態遷移処理プログラム85を実行するホストCPU11は、撮影処理プログラム81、閲覧処理プログラム82、設定処理プログラム83、またはUSBマスストレージクラス処理プログラム84の実行を終了させることにより、デジタルスチルカメラの状態を動作状態S0のうちの初期状態S0Nに遷移させる。
【0303】
ステップS502において、オペレーティングシステム61の休止状態決定プログラム74を実行するホストCPU11は、遷移しようとする休止状態を決定する。すなわち、休止状態決定プログラム74は、遷移しようとする休止状態をサスペンド状態S3またはハイバネーションS4のいずれか一方に決定する。
【0304】
例えば、ステップS502において、休止状態決定プログラム74は、バッテリ35の出力電圧が予め定めた閾値以上であり、かつ、入力部31の電源ボタンが押圧された場合、または、バッテリ35の出力電圧が予め定めた閾値以上であり、かつ、レンズキャップが閉じられた場合、遷移しようとする休止状態をサスペンド状態S3に決定する。
【0305】
例えば、ステップS502において、休止状態決定プログラム74は、バッテリ35の出力電圧が予め定めた閾値未満である場合、または電源ボタンが予め決められた時間より長く継続して押圧された場合、遷移しようとする休止状態をハイバネーションS4に決定する。
【0306】
ステップS503において、オペレーティングシステム61の休止状態情報提供プログラム75を実行するホストCPU11は、シリアルインタフェース19を介して、エンベデッドコントローラ33に、遷移しようとする休止状態を示す休止状態情報を送信する。
【0307】
ステップS601において、起動方式決定情報取得プログラム203を実行するエンベデッドコントローラ33は、シリアルインタフェース19を介して、ホストCPU11から送信されてきた休止状態情報を受信する。ステップS602において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33は、ステップS601で受信した休止状態情報をエンベデッドコントローラ33の内部のメモリに記憶する。
【0308】
なお、アップデートされたファームウェア、すなわちオペレーティングシステム61またはアプリケーションプログラム62が取得され、使用者からファームウェアのアップデートが指示された場合、ステップS503において、セットされたイメージ作成フラグを含む休止状態情報が送信され、ステップS601において、セットされたイメージ作成フラグを含む休止状態情報が受信され、ステップS602において、セットされたイメージ作成フラグを含む休止状態情報が、エンベデッドコントローラ33の内部のメモリに記憶される。
【0309】
一方、アップデートされたファームウェアが取得されないか、またはアップデートされたファームウェアが取得されても、使用者からファームウェアのアップデートが指示されない場合、ステップS503において、クリアされたイメージ作成フラグを含む休止状態情報が送信され、ステップS601において、クリアされたイメージ作成フラグを含む休止状態情報が受信され、ステップS602において、クリアされたイメージ作成フラグを含む休止状態情報が、エンベデッドコントローラ33の内部のメモリに記憶される。
【0310】
ステップS603において、バッテリ着脱検出プログラム206を実行するエンベデッドコントローラ33は、DC−DCコンバータ34の出力電圧を検出することにより、バッテリ35の着脱を検出する。そして、起動方式決定情報取得プログラム203を実行するエンベデッドコントローラ33は、バッテリ35の着脱の検出の結果に応じたバッテリ着脱情報を生成する。
【0311】
ステップS604において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33は、バッテリ35の着脱の検出の結果に応じたバッテリ着脱情報を内部のメモリに記憶する。すなわち、ステップS604において、起動方式決定情報記憶処理プログラム204は、バッテリ35が取り外されている場合、バッテリ35が取り外されたことを示すバッテリ着脱情報を内部のメモリに記憶し、バッテリ35が装着されている場合、バッテリ35が取り外されていないこと(取り外されていなかったこと)を示すバッテリ着脱情報を内部のメモリに記憶する。
【0312】
一方、ステップS504において、アプリケーションプログラム62を実行するホストCPU11は、アプリケーションプログラム62の終了処理を実行する。例えば、ステップS504において、アプリケーションプログラム62は、撮影した画像のデータを格納するファイルを閉じるなどの終了処理を実行する。
【0313】
ステップS505において、アプリケーションプログラム62を実行するホストCPU11は、バスを介して、リアルタイム処理用CPU12に終了の通知を送信する。
【0314】
ステップS701において、オペレーティングシステム141を実行するリアルタイム処理用CPU12は、バスを介して、ホストCPU11から送信されてくる終了の通知を受信する。
【0315】
ステップS702において、オペレーティングシステム141およびアプリケーションプログラム142を実行するリアルタイム処理用CPU12は、終了処理を実行し、ステップS703において、オペレーティングシステム141を実行するリアルタイム処理用CPU12は、バスを介して、ホストCPU11に終了処理の開始の通知を送信する。
【0316】
例えば、ステップS702において、アプリケーションプログラム142のリアルタイム処理プログラム171は、図示せぬ光学系を構成するレンズを終了位置に戻すなどする。
【0317】
ステップS506において、アプリケーションプログラム62を実行するホストCPU11は、バスを介して、リアルタイム処理用CPU12から送信されてくる終了処理の開始の通知を受信する。
【0318】
そして、リアルタイム処理用CPU12の終了処理が完了すると、ステップS704において、オペレーティングシステム141を実行するリアルタイム処理用CPU12は、バスを介して、ホストCPU11に終了処理の完了の通知を送信してくるので、ステップS507において、オペレーティングシステム61を実行するホストCPU11は、バスを介して、リアルタイム処理用CPU12から送信されてきた終了処理の完了の通知を受信する。
【0319】
なお、リアルタイム処理用CPU12は、ホストCPU11に終了処理の完了の通知を送信した後、終了処理の完了の通知を受信したホストCPU11からの制御によりリセットされ、そのリセット状態が維持されるか、または、リアルタイム処理用CPU12は、無限ループの命令を実行する。
【0320】
ステップS508において、オペレーティングシステム61の設定値記憶処理プログラム77を実行するホストCPU11は、起動における復帰において必要となる設定値を、NAND型フラッシュメモリ17に記憶させる。NAND型フラッシュメモリ17に記憶される設定値は、シャッタスピードや露出、ズーム、撮影する画像のサイズや符号化する際の圧縮率、またはホストCPU11の内部の各レジスタの値などを示すものである。また、ステップS508において、NAND型フラッシュメモリ17に記憶させられる設定値には、オペレーティングシステム141およびアプリケーションプログラム142の変数としてSDRAM29に記憶され管理されている、リアルタイム処理用CPU12の内部の各レジスタの値やリアルタイム処理用CPU12の内部のインタフェースの各レジスタの値が含まれている。
【0321】
ステップS509において、オペレーティングシステム61を実行するホストCPU11は、デバイスドライバ72の終了の処理を実行する。すなわち、オペレーティングシステム61は、信号処理部16、シリアルインタフェース19、グラフィックコントローラ21、メモリカードインタフェース23、コントローラ25、IDEインタフェース28、および汎用入出力部32などのデバイスを制御するためのプロセスを終了させるなど、デバイスドライバ72の終了の処理を実行する。
【0322】
デバイスドライバ72の終了の処理の一部として、ステップS510において、オペレーティングシステム61の他CPUプログラム読み出しプログラム76を実行するホストCPU11は、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142を、NAND型フラッシュメモリ17からSDRAM29にロードする。
【0323】
このようにすることで、次にホットブートの起動の処理が実行される場合、その起動の処理において、オペレーティングシステム141およびアプリケーションプログラム142をSDRAM29にロードする必要がなくなり、更により迅速に起動することができるようになる。
【0324】
リアルタイム処理用CPU12が終了処理を実行している間は、オペレーティングシステム141およびアプリケーションプログラム142が実行され、オペレーティングシステム141およびアプリケーションプログラム142の内部変数などが変更される。従って、オペレーティングシステム141およびアプリケーションプログラム142のSDRAM29へのロードは、リアルタイム処理用CPU12の終了処理が完了してから、行われる。
【0325】
なお、ホストCPU11が、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142を、NAND型フラッシュメモリ17からSDRAM29にロードする前に、リアルタイム処理用CPU12をリセットし、リアルタイム処理用CPU12のリセット状態を維持させるようにした場合、リアルタイム処理用CPU12に無限ループの命令を実行させる場合に比較して、より安全にオペレーティングシステム141およびアプリケーションプログラム142をSDRAM29にロードし、起動において実行させることができる。すなわち、SDRAM29にロードされたオペレーティングシステム141およびアプリケーションプログラム142が、次に起動するまでに、リアルタイム処理用CPU12により変更されてしまう可能性をより少なくすることができる。
【0326】
リアルタイム処理用CPU12をリセット状態とせず、リアルタイム処理用CPU12に無限ループの命令を実行させる場合、オペレーティングシステム141およびアプリケーションプログラム142がロードされる記憶領域以外の記憶領域に、リアルタイム処理用CPU12により実行される無限ループの命令が格納される。例えば、リアルタイム処理用CPU12は、SDRAM29の記憶領域のうちの、オペレーティングシステム141およびアプリケーションプログラム142がロードされる記憶領域以外の記憶領域に格納されている、無限ループの命令を実行するか、または、マスクROM13に格納されている無限ループの命令を実行する。
【0327】
このように、リアルタイム処理用CPU12が終了処理を完了すると、リアルタイム処理用CPU12のリセット状態が維持されるか、またはリアルタイム処理用CPU12が無限ループの命令を実行するので、次にホットブートの方式により起動されるまでの間に、SDRAM29にロードされたオペレーティングシステム141およびアプリケーションプログラム142が変更されてしまうことを防止することができる。
【0328】
なお、ステップS502において、休止状態がハイバネーションS4に決定された場合、ステップS510をスキップするようにしてもよい。
【0329】
デバイスドライバ72の終了の処理が完了すると、ステップS511において、オペレーティングシステム61を実行するホストCPU11は、カーネル71の終了の処理を実行する。例えば、ステップS511において、オペレーティングシステム61は、アプリケーションプログラム62やのデバイスの監視、SDRAM29などの資源の管理、またはプロセス間通信などの所定のプロセスを完了させる。
【0330】
カーネル71の終了の処理が完了すると、ステップS512において、オペレーティングシステム61を実行するホストCPU11は、休止状態におけるパラメータを設定するなどの電源管理機構73の終了の処理を実行する。
【0331】
ステップS513において、オペレーティングシステム61の電源管理機構73を実行するホストCPU11は、シリアルインタフェース19を介して、エンベデッドコントローラ33に電源の供給の停止の要求を送信する。
【0332】
ステップS605において、電源制御プログラム201を実行するエンベデッドコントローラ33は、シリアルインタフェース19を介して、ホストCPU11から送信されてくる電源の供給の停止の要求を受信する。
【0333】
ステップS606において、電源制御プログラム201を実行するエンベデッドコントローラ33は、DC−DCコンバータ34に電源の供給を停止させて、処理は終了する。例えば、ステップS606において、電源制御プログラム201は、エンベデッドコントローラ33の内部のメモリに記憶された休止状態情報を参照して、サスペンド状態S3に遷移する場合、DC−DCコンバータ34に、SDRAM29への電源の供給を維持させたまま、ホストCPU11およびリアルタイム処理用CPU12への電源の供給を停止(遮断)させ、ハイバネーションS4に遷移する場合、DC−DCコンバータ34に、SDRAM29、ホストCPU11、およびリアルタイム処理用CPU12への電源の供給を停止(遮断)させる。
【0334】
このように、休止状態が決定されて、決定された休止状態を示す休止状態情報がエンベデッドコントローラ33の内部のメモリに記憶されてから、デジタルスチルカメラの状態が、その決定された休止状態に遷移させられる。また、休止状態に遷移する前に、起動における復帰において必要となる設定値が、NAND型フラッシュメモリ17に記憶される。
【0335】
さらにまた、サスペンド状態S3に遷移する前に、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142がSDRAM29にロードされる。
【0336】
なお、サスペンド状態S3に遷移する前に、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142がSDRAM29にロードされるようにした場合、上述したステップS332において、リアルタイム処理用CPU12は、ステップS241の処理でSDRAM29にロードされた設定値に含まれている、リアルタイム処理用CPU12の内部の各レジスタの値やその内部のインタフェースの各レジスタの値であって、休止する前の値をSDRAM29から読み出して、リアルタイム処理用CPU12の内部の各レジスタまたはリアルタイム処理用CPU12の内部のインタフェースの各レジスタのそれぞれに設定する。
【0337】
このようにすることで、リアルタイム処理用CPU12の内部の各レジスタおよびその内部のインタフェースの各レジスタに正しい値が設定された状態から、オペレーティングシステム141が実質的に実行されるので、リアルタイム処理用CPU12が暴走したり、サスペンド状態S3に遷移する前にSDRAM29にロードされたオペレーティングシステム141およびアプリケーションプログラム142が破壊されることなく、オペレーティングシステム141およびアプリケーションプログラム142が確実に正しく実行される。
【0338】
図24は、休止の処理の他の例を示すフローチャートである。
【0339】
ステップS531乃至ステップS539、ステップS631乃至ステップS634、およびステップS731乃至ステップS734は、それぞれ、図23のステップS501乃至ステップS509、ステップS601乃至ステップS604、およびステップS701乃至ステップS704のそれぞれと同様であり、その説明は省略する。
【0340】
図24のフローチャートで示される休止の処理におけるデバイスドライバ72の終了の処理において、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142は、SDRAM29にロードされない。
【0341】
ステップS540乃至ステップS542、並びにステップS635およびステップS636は、それぞれ、図23のステップS511乃至ステップS513、並びにステップS605およびステップS606のそれぞれと同様であり、その説明は省略する。
【0342】
このように、デバイスドライバ72の終了の処理において、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142を、SDRAM29にロードしないようにしてもよい。
【0343】
オペレーティングシステム141およびアプリケーションプログラム142のSDRAM29へのロードには、所定の時間がかかるので、オペレーティングシステム141およびアプリケーションプログラム142のSDRAM29へのロードが行われない場合には、より短い時間で休止の処理を行うことができる。
【0344】
なお、ステップS538において、NAND型フラッシュメモリ17に記憶させられる設定値には、オペレーティングシステム141およびアプリケーションプログラム142の変数としてSDRAM29に記憶され管理されている、リアルタイム処理用CPU12の内部の各レジスタの値やリアルタイム処理用CPU12の内部のインタフェースの各レジスタの値は含まれない。
【0345】
従って、設定値の記憶に必要な、NAND型フラッシュメモリ17の記憶領域の記憶容量をより少なくすることができる。
【0346】
また、図24のフローチャートで示される休止の処理の後、図17乃至図19のフローチャートを参照して説明したホットブートの起動の処理が実行される場合、ステップS242の前に、2次ブートローダ101の他CPUプログラム読み出しプログラム124を実行するホストCPU11が、リアルタイム処理用CPU12のオペレーティングシステム141およびアプリケーションプログラム142を、NAND型フラッシュメモリ17からSDRAM29にロードする。
【0347】
次に、休止状態において、DC−DCコンバータ34から電源が供給され、メカニカルオフ状態G3において、バッテリ36から電力が供給されるエンベデッドコントローラ33が予め定められた期間毎に実行する、バッテリ35の取り外しの履歴の記憶の処理について説明する。
【0348】
図25は、バッテリ35の取り外しの履歴の記憶の処理を説明するフローチャートである。ステップS901において、バッテリ着脱検出プログラム206を実行するエンベデッドコントローラ33は、DC−DCコンバータ34の出力電圧を検出することにより、バッテリ35の着脱を検出する。例えば、ステップS901において、バッテリ着脱検出プログラム206は、DC−DCコンバータ34の出力電圧と予め定めた閾値とを比較することにより、バッテリ35の装着または取り外しを検出する。
【0349】
ステップS902において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33は、バッテリ35が取り外されたか否かを判定する。ステップS902において、バッテリ35が取り外されたと判定された場合、手続きはステップS903に進み、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33は、バッテリ35が取り外されたことを示すバッテリ着脱情報を内部のメモリに記憶して、処理は終了する。すなわち、バッテリ35が取り外された場合、エンベデッドコントローラ33の内部に記憶されているバッテリ着脱情報は、バッテリ35が取り外されたことを示すように更新される。
【0350】
ステップS902において、バッテリ35が取り外されていないと判定された場合、エンベデッドコントローラ33の内部に記憶されているバッテリ着脱情報を更新する必要はないので、ステップS903はスキップされて、処理は終了する。
【0351】
このように、休止状態においてバッテリ35が取り外されると、バッテリ35が取り外されたことを示すようにバッテリ着脱情報が更新されるので、バッテリ着脱情報は、休止状態におけるバッテリ35の着脱の履歴を示すことになる。
【0352】
なお、ステップS901において、バッテリ着脱検出プログラム206を実行するエンベデッドコントローラ33が、DC−DCコンバータ34の出力電圧を検出することにより、外部電源からの電源の供給の停止を検出し、ステップS902において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33が、外部電源からの電源の供給が停止されたか否かを判定し、外部電源からの電源の供給が停止された場合、ステップS903において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33が、外部電源からの電源の供給が停止されたことを示すバッテリ着脱情報を内部のメモリに記憶するようにしてもよい。すなわち、この場合、バッテリ着脱情報は、外部電源からの電源の供給の履歴を示す。
【0353】
さらにまた、ステップS901において、バッテリ着脱検出プログラム206を実行するエンベデッドコントローラ33が、DC−DCコンバータ34の出力電圧を検出することにより、外部電源からの電源の供給の停止とバッテリ35の着脱とを検出し、ステップS902において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33が、外部電源からの電源の供給が停止されて、かつ、バッテリ35が取り外されたか否かを判定し、外部電源からの電源の供給が停止されて、かつ、バッテリ35が取り外された場合、ステップS903において、起動方式決定情報記憶処理プログラム204を実行するエンベデッドコントローラ33が、外部電源からの電源の供給が停止されて、かつ、バッテリ35が取り外されたことを示すバッテリ着脱情報を内部のメモリに記憶するようにしてもよい。
【0354】
すなわち、バッテリ着脱情報は、休止状態における、サスペンド状態S3を維持するための電源の供給の停止の履歴を示す情報の一例である。また、この場合、バッテリ着脱検出プログラム206は、休止状態における、サスペンド状態S3を維持するための電源の供給の停止を検出する。
【0355】
なお、図26で示されるように、メカニカルオフ状態G3において、バッテリ35が装着されると、このバッテリ35の装着を起動のトリガとして、コールドブートまたはウォームブートの起動の方式により、動作状態S0に遷移するようにデジタルスチルカメラを起動して、この動作状態S0から無条件でサスペンド状態S3に遷移するようにしてもよい。この場合、起動画面は表示されず、起動音も出力されない。
【0356】
このようにすることで、コールドブートまたはウォームブートの起動の処理に時間がかかる場合であっても、バッテリ35を装着するだけで、使用者が気づかないうちに、デジタルスチルカメラを、サスペンド状態S3で休止させることができる。
【0357】
そして、デジタルスチルカメラは、サスペンド状態S3で電源ボタンが押圧されると、ホットブートの起動の方式により、動作状態S0に遷移するように起動される。レンズキャップを開けることなどの他の起動要因により、サスペンド状態S3から、ホットブートの起動の方式により、動作状態S0に遷移するようにしてもよいことは当然である。
【0358】
その結果、使用者からは、電源ボタンの押圧などをトリガとして、メカニカルオフ状態G3から迅速に起動したように見える。
【0359】
以上のように、デジタルスチルカメラは、使用者の操作に応じて、その状態を、休止状態に遷移させるか、または動作状態S0に遷移させ、休止状態から動作状態S0に遷移する場合には、迅速に遷移する、すなわち、迅速に起動することができる。
【0360】
サスペンド状態S3で休止している間に、使用者がバッテリ35を取り外すことなく、起動させた場合には、ホットブートの方式により起動し、また、サスペンド状態S3で休止している間に、使用者がバッテリ35を取り外して、再度装着した場合には、ウォームブートの方式により起動し、さらにまた、ハイバネーションS4で休止すると、バッテリ35の着脱と無関係に、ウォームブートの方式により起動するので、使用者からは、休止状態が、あたかも電源をオフしている状態(メカニカルオフ状態G3)に見える。
【0361】
このように、休止状態としてサスペンド状態に遷移するようにした場合には、サスペンド状態からレジュームすることができる。また、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、起動のトリガとなる起動要因を示す信号を取得し、サスペンド状態から起動する場合、初期状態に復帰し、起動要因に応じたアプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させるようにした場合には、使用者の操作に応じた状態になるように、より迅速に起動することができる。
【0362】
さらにまた、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、起動のトリガとなる起動要因を示す情報を取得し、サスペンド状態から起動する場合、初期状態に復帰し、起動要因に応じたアプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させるようにした場合には、使用者の操作に応じた状態になるように、より迅速に起動することができる。
【0363】
なお、ウォームブートまたはコールドブートの方式により起動した場合、初期状態S0Nに遷移すると説明したが、ウォームブートまたはコールドブートの方式により起動した場合も、動作状態S0のうち、起動要因に応じた処理を実行する状態に遷移するようにしてもよい。
【0364】
ところで、デジタルスチルカメラなどにおいては、通常のパーソナルコンピュータと異なり、シャットダウンが行われることは稀である。従って、デジタルスチルカメラなどにおいては、例えば、ホストCPU11において、まだ何らかの処理が実行されている途中であるにも係らず、ホストCPU11に対する電力の供給が停止されてしまうこともあり得る。このような場合、例えば、NAND型フラッシュメモリ26などの記録媒体に記録されたデータの量が増えていないにも係らず、コンピュータのファイルシステムにとって利用可能な記録媒体の容量が減ってしまうことがある。
【0365】
ホストCPU11で実行されるオペレーティングシステム61においては、例えば、カーネル71の一部として、NAND型フラッシュメモリ26などの記録媒体に記録されるデータの管理などに用いられるファイルシステムが搭載されており、ファイルシステムにおいては通常、例えば、ファイルアロケーションテーブルなどの何らかのインデックスにより、記録媒体に記録されているファイルのファイル名などが、実際にデータが記録されているセクタなどの記録単位と対応付けられている。
【0366】
また、ファイルアロケーションテーブルには、例えば、どのセクタが使用され(既にデータが記録され)、使用されていない(まだデータが記録されていない)セクタはどれなのかなどの情報が含まれており、記録媒体へのデータの記録(書き込み)または削除などの処理に伴って、このファイルアロケーションテーブルが正しく更新されることで、コンピュータの処理において記録媒体が所定の記録容量を有する資源として有効に利用されることになる。
【0367】
ファイルシステムでは、システムコール「open」、「read」、「write」、「close」などの処理が行われることで、データの読み出しまたは書き込みが行われている。
【0368】
ファイルシステムを介して行われるデータの書き込みなどの処理は、一旦、SDRAM29などにキャッシュされることにより行われる。そして、例えば、SDRAM29にキャッシュされているデータが後から、NAND型フラッシュメモリ26などの記録媒体に書き込まれる。このとき、ファイルシステムの処理では、例えば、書き込むべきデータの量に対応してファイルアロケーションテーブルなどの、使用されたセクタの情報を更新し、バックグラウンドでバスの転送速度などに合わせてNAND型フラッシュメモリ26などの記録媒体に転送する。データの書き込みなどの処理は、実際には、ファイルシステムにおけるシステムコール「close」の処理が完了したとき、キャッシュされていたデータが全てNAND型フラッシュメモリ26などの記録媒体に書き込まれて終了したことになる。
【0369】
このようにすることで、SDRAM29に対して書き込み速度が遅いNAND型フラッシュメモリ26などの記録媒体への書き込み処理にかかる時間を、ユーザから隠ぺいし、レスポンスタイムを向上させることができる。
【0370】
しかしながら、システムコール「close」の処理が完全に終了する前に、コンピュータの電源がOFFされた場合などは、SDRAM29にキャッシュされたデータが、完全にNAND型フラッシュメモリ26などの記録媒体に書き込まれることなく、消失してしまう一方、ファイルアロケーションテーブルの使用されたセクタの情報が更新されたことで、実際には使用されていないセクタが、使用されたセクタとして認識されてしまうことがある。
【0371】
このように、システムコール「close」の処理が終了する前に、コンピュータの電源がOFFされることなどが繰り返し起こると、実際にはNAND型フラッシュメモリ26などの記録媒体に記録されたデータの量が増えていないにも係らず、ファイルシステムからみたNAND型フラッシュメモリ26などの記録媒体の空き容量が減ってしまうことになる。
【0372】
このような、事態を解消するために、実際に使用されているセクタと、ファイルアロケーションテーブルの使用されたセクタの情報とが整合するように、ファイルアロケーションテーブルの使用されたセクタの情報を修復するプログラム(以下、適宜修復プログラムと称する)も提供されている。例えば、機器が使用されていない時間帯に、この修復プログラムが実行されるようにする方式もあるが、修復プログラムの実行のために、機器に電力を供給する必要があり、デジタルスチルカメラなど、バッテリにより長時間電力を供給し続けることが重要となる機器においては、この方式は適していない。
【0373】
そこで本発明においては、例えば、ウォームブート、またはコールドブートにより起動されるときのみ、必要に応じて修復プログラムが実行されるようにする。ホットブートによる起動時にも、必要に応じて修復プログラムが実行されるようにしてもよいが、修復プログラムを実行して、ファイルアロケーションテーブルの使用されたセクタの情報が修復されるには、所定の時間がかかるので、ホットブートにより起動されたとき、修復プログラムが実行されるようにすると、ユーザにとっては、起動に時間がかかり操作性が悪いと感じられる。従って、元々起動に時間がかかるウォームブート、またはコールドブートにより起動されるときのみ、必要に応じて修復プログラムが実行されるようにすることが望ましい。
【0374】
具体的には、ホストCPU11により実行されるオペレーティングシステム61が、起動時にNAND型フラッシュメモリ26の空き容量をチェックして、空き容量が閾値以下である場合、実際に使用されているセクタと、ファイルアロケーションテーブルの使用されたセクタの情報とが整合するように、ファイルアロケーションテーブルの使用されたセクタの情報を修復するプログラムが実行されるようにする。
【0375】
例えば、デジタルスチルカメラがウォームブートされる場合、図16のステップS218の処理の後、デジタルスチルカメラがコールドブートされる場合、図22のステップS278の処理の後、図27に示されるような処理が実行されるようにすればよい。
【0376】
図27は、ホストCPU11で実行されるオペレーティングシステム61のカーネル71で実行される修復実行判定処理を説明するフローチャートである。
【0377】
ステップS1001において、ホストCPU11は、起動方式決定プログラム122により決定された起動の方式が、ウォームブートの起動の方式であるか、またはコールドブートの起動の方式であるかを判定し、起動の方式が、ウォームブートの起動の方式であるか、またはコールドブートの起動の方式であると判定された場合、処理は、ステップS1002に進む。
【0378】
ステップS1002において、ホストCPU11は、NAND型フラッシュメモリ26に記録されるデータの管理などに用いられるファイルシステムのファイルアロケーションテーブルをチェックする。上述したように、ファイルアロケーションテーブルには、例えば、どのセクタが使用され、使用されていないセクタはどれなのかなどの情報が含まれている。
【0379】
ステップS1003において、ホストCPU11は、ステップS1002の処理の結果に基づいて、NAND型フラッシュメモリ26の空き容量を算出する。
【0380】
ステップS1004において、ホストCPU11は、ステップS1003で算出されたNAND型フラッシュメモリ26の空き容量が予め設定された閾値以下であるか否かを判定する。ステップS1004において、NAND型フラッシュメモリ26の空き容量が閾値以下であると判定された場合、処理は、ステップS1005に進む。
【0381】
ステップS1005において、ホストCPU11は、修復プログラムを実行する。これにより、実際に使用されているセクタと、ファイルアロケーションテーブルの使用されたセクタの情報とが整合するように、ファイルアロケーションテーブルの使用されたセクタの情報が修復される。
【0382】
一方、ステップS1004において、NAND型フラッシュメモリ26の空き容量が閾値を超えていると判定された場合、ステップS1005の処理は、スキップされる。
【0383】
また、ステップS1001において、起動の方式が、ウォームブートの起動の方式、またはコールドブートの起動の方式ではない、すなわち、ホットブートの起動の方式であると判定された場合、ステップS1002乃至S1005の処理はスキップされる。
【0384】
このようにすることで、例えば、システムコール「close」の処理が終了する前に、デジタルスチルカメラの電源がOFFされることなどにより、NAND型フラッシュメモリ26などの記録媒体に記録されたデータの量が増えていないにも係らず、ファイルシステムからみたNAND型フラッシュメモリ26などの記録媒体の空き容量が減ってしまうことが発生した場合でも、デジタルスチルカメラがウォームブートにより起動されるか、またはコールドブートにより起動されるときに、ファイルアロケーションテーブルの使用されたセクタの情報が修復されて、NAND型フラッシュメモリ26などの記録媒体が所定の記録容量を有する資源として有効に利用されるようにすることができる。
【0385】
なお、本発明は、デジタルスチルカメラに限らず、パーソナルコンピュータ、デジタルビデオカメラ、携帯電話機、若しくは携帯型のプレーヤ、または、HDDレコーダプレーヤやテレビジョン受像機などの据え置き型の各種の機器にも適用することができる。
【0386】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【0387】
コンピュータ(ホストCPU11、リアルタイム処理用CPU12、またはエンベデッドコントローラ33)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディアに記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【0388】
そして、プログラムは、リムーバブルメディアをIDEインタフェース28に接続されているドライブに装着することにより、IDEインタフェース28を介して、NAND型フラッシュメモリ17に記憶することで、インストールすることができる。また、プログラムは、無線の伝送媒体を介して、無線LANインタフェース24で受信するか、または有線の伝送媒体を介して、汎用入出力部32で受信して、NAND型フラッシュメモリ17に記憶することで、インストールすることができる。その他、プログラムは、NAND型フラッシュメモリ17にあらかじめ記憶しておくことで、あらかじめインストールしておくことができる。
【0389】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【図面の簡単な説明】
【0390】
【図1】本発明の一実施の形態の情報処理装置の一例であるデジタルスチルカメラの構成を示すブロック図である。
【図2】ホストCPUにより実行されるオペレーティングシステムおよびアプリケーションプログラムの構成を示すブロック図である。
【図3】ホストCPUにより実行される2次ブートローダの構成を示すブロック図である。
【図4】リアルタイム処理用CPUにより実行されるオペレーティングシステムおよびアプリケーションプログラムの構成を示すブロック図である。
【図5】エンベデッドコントローラにより実行されるプログラムの構成を示すブロック図である。
【図6】デジタルスチルカメラの状態を説明する図である。
【図7】デジタルスチルカメラの状態を説明する図である。
【図8】デジタルスチルカメラの状態の遷移を説明する図である。
【図9】デジタルスチルカメラの状態を説明する図である。
【図10】ウォームブートの起動の処理の手順の概要を説明する図である。
【図11】ホットブートの起動の処理の手順の概要を説明する図である。
【図12】コールドブートの起動の処理の手順の概要を説明する図である。
【図13】休止の処理の手順の概要を説明する図である。
【図14】ウォームブートの起動の処理の詳細を説明するフローチャートである。
【図15】ウォームブートの起動の処理の詳細を説明するフローチャートである。
【図16】ウォームブートの起動の処理の詳細を説明するフローチャートである。
【図17】ホットブートの起動の処理の詳細を説明するフローチャートである。
【図18】ホットブートの起動の処理の詳細を説明するフローチャートである。
【図19】ホットブートの起動の処理の詳細を説明するフローチャートである。
【図20】コールドブートの起動の処理の詳細を説明するフローチャートである。
【図21】コールドブートの起動の処理の詳細を説明するフローチャートである。
【図22】コールドブートの起動の処理の詳細を説明するフローチャートである。
【図23】休止の処理の例を説明するフローチャートである。
【図24】休止の処理の他の例を説明するフローチャートである。
【図25】バッテリの取り外しの履歴の記憶の処理を説明するフローチャートである。
【図26】起動における状態遷移の例を示す図である。
【図27】修復実行処理の例を説明するフローチャートである。
【符号の説明】
【0391】
11 ホストCPU, 12 リアルタイム処理用CPU, 13 マスクROM, 17 NAND型フラッシュメモリ, 19 シリアルインタフェース, 20 LCD, 22 メモリカード, 24 無線LANインタフェース, 26 NAND型フラッシュメモリ, 29 SDRAM, 31 入力部, 32 汎用入出力部, 33 エンベデッドコントローラ, 34 DC−DCコンバータ, 35 バッテリ, 36 バッテリ, 41 USB接続端子, 61 オペレーティングシステム, 62 アプリケーションプログラム, 71 カーネル, 72 デバイスドライバ, 73 電源管理機構, 74 休止状態決定プログラム, 75 休止状態情報提供プログラム, 76 他CPUプログラム読み出しプログラム, 77 設定値記憶処理プログラム, 78 ウォームブートイメージ生成プログラム, 81 撮影処理プログラム, 82 閲覧処理プログラム, 83 設定処理プログラム, 84 USBマスストレージクラス処理プログラム, 85 状態遷移処理プログラム, 86 電源管理プログラム, 101 2次ブートローダ, 121 起動方式決定情報取得プログラム, 122 起動方式決定プログラム, 123 設定値読み出しプログラム, 124 他CPUプログラム読み出しプログラム, 125 ウォームブートイメージ読み出しプログラム, 141 オペレーティングシステム, 142 アプリケーションプログラム, 161 起動方式決定情報取得プログラム, 162 起動方式決定プログラム, 163 アプリケーション起動終了制御プログラム, 171 リアルタイム処理プログラム, 172 GUI処理プログラム, 173 起動画面表示プログラム, 201 電源制御プログラム, 202 他CPUリセット制御プログラム, 203 起動方式決定情報取得プログラム, 204 起動方式決定情報記憶処理プログラム, 205 起動方式決定情報提供プログラム, 206 バッテリ着脱検出プログラム

【特許請求の範囲】
【請求項1】
アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置であって、
前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かを判定する起動方式判定手段と、
前記起動方式判定手段により、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、
自分に装着される記録媒体の空き容量を算出する容量算出手段と、
前記容量算出手段の処理により算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かを判定して判定結果を出力する修復実行判定手段と
を備える情報処理装置。
【請求項2】
前記複数種類の起動方式には、少なくとも第1の起動方式と第2の起動方式が含まれ、
前記第1の起動方式においては、メインメモリへのデータのロードが行われず、
前記第2の起動方式においては、前記動作状態において前記プロセッサにより実行されるソフトウェアに対応するデータが、あらためて前記メインメモリにロードされる
請求項1に記載の情報処理装置。
【請求項3】
前記起動方式判定手段により、前記起動方式が、前記第2の起動方式であると判定された場合、前記容量算出手段の処理、および修復実行判定手段の処理が行われる
請求項2に記載の情報処理装置。
【請求項4】
前記修復実行判定手段は、前記記録媒体の空き容量が予め設定された閾値以下である場合、前記修復プログラムを実行させる判定結果を出力する
請求項3に記載の情報処理装置。
【請求項5】
前記修復実行判定手段により、前記修復プログラムを実行させる判定結果が出力された場合、
プロセッサにより前記修復プログラムが実行されることで、前記記録媒体において実際に使用されているセクタと、前記インデックスの使用されたセクタの情報とが整合するように、前記インデックスの使用されたセクタの情報が修復される
請求項3に記載の情報処理装置。
【請求項6】
アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置の情報処理方法であって、
前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かを判定し、
前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、
自分に装着される記録媒体の空き容量を算出し、
前記算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かを判定して判定結果を出力するステップ
を含む情報処理方法。
【請求項7】
アプリケーションプログラムによる処理を実行する動作状態から、休止状態に遷移し、複数種類の起動方式により、前記休止状態から前記動作状態に遷移する情報処理装置のプログラムであって、
前記休止状態から前記動作状態に遷移する場合、前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式か否かの判定を制御し、
前記起動方式が、前記複数種類の起動方式のうちの予め定められた種類の起動方式であると判定された場合、
自分に装着される記録媒体の空き容量の算出を制御し、
前記算出された前記記録媒体の空き容量に基づいて、前記記録媒体に記録されるデータを管理するファイルシステムのインデックスを修復する修復プログラムを実行するか否かを判定して判定結果の出力を制御するステップ
を含むコンピュータが読み取り可能なプログラム。
【請求項8】
請求項7に記載のプログラムが記録されている記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate