(57)【要約】【課題】使用者の操作に応じた状態になるように、より迅速に起動する。【解決手段】ホストCPU１１は、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させる。エンベデッドコントローラ３３は、入力部１１から起動のトリガとなる起動要因を示す信号を取得する。ホストCPU１１は、サスペンド状態から起動する場合、初期状態への復帰の処理を実行し、起動により初期状態に復帰した場合、起動要因に応じたアプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させる。本発明は、デジタルスチルカメラに適用できる。【選択図】図１
2008165550.tif 000002
【特許請求の範囲】
【請求項１】
サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させる状態遷移手段と、
起動のトリガとなる起動要因を示す信号を取得する取得手段と、
前記サスペンド状態から起動する場合、前記初期状態への復帰の処理を実行する復帰処理実行手段と
を備え、
前記状態遷移手段は、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させる
情報処理装置。
【請求項２】
前記状態遷移手段は、起動により前記初期状態に復帰した場合、前記起動要因に応じた、撮影の処理または閲覧の処理のいずれか一方の前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させる
請求項１に記載の情報処理装置。
【請求項３】
前記状態遷移手段および前記復帰処理実行手段は、前記サスペンド状態において電源の供給が停止される第１のCPU（Central Processing Unit）により実現され、
前記取得手段は、前記サスペンド状態において電源が供給される第２のCPUにより実現される
請求項１に記載の情報処理装置。
【請求項４】
前記状態遷移手段は、アプリケーションプログラムを実行する前記第１のCPUにより実現され、
前記復帰処理実行手段は、前記アプリケーションプログラムおよびオペレーティングシステムを実行する前記第１のCPUにより実現され、
前記取得手段は、前記アプリケーションプログラムおよび前記オペレーティングシステムとは別のプログラムを実行する第２のCPUにより実現される
請求項３に記載の情報処理装置。
【請求項５】
前記第２のCPUは、前記サスペンド状態から起動する場合、前記第１のCPUのリセットの解除を制御する
請求項３に記載の情報処理装置。
【請求項６】
前記第２のCPUは、前記第１のCPUへの電源の供給を制御する
請求項３に記載の情報処理装置。
【請求項７】
サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、
起動のトリガとなる起動要因を示す信号を取得し、
前記サスペンド状態から起動する場合、前記初期状態に復帰し、
起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させる
ステップを含む起動方法。
【請求項８】
サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、
起動のトリガとなる起動要因を示す情報を取得し、
前記サスペンド状態から起動する場合、前記初期状態に復帰し、
起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させる
ステップを含む処理をコンピュータに行わせるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、起動方法、およびプログラムに関し、特に、迅速に起動できるようにした情報処理装置、起動方法、およびプログラムに関する。
【背景技術】
【０００２】
デジタルスチルカメラが広く利用されている。デジタルスチルカメラにおいて、技術的に高度なGUI（graphical user interface）が使用されるようになり、また、デジタルスチルカメラがネットワークと接続されるようになった。このような機能の向上の要求に対応するため、デジタルスチルカメラにおいて、Linux（登録商標）などの高性能、高機能なオペレーティングシステム（operating system）が実行されるようになってきた。
【０００３】
Linux（登録商標）などの高性能、高機能で規模の大きいオペレーティングシステムの起動には、規模の小さいμITRON（micro industrial the real-time operating system nucleus）などのオペレーティングシステムを起動する場合に比較して、一般的に、時間がかかる。
【０００４】
また、GUIやネットワークとの接続などのアプリケーションにおける処理が高度になると、アプリケーションプログラムが大きくなり、その起動にも時間がかかるようになってきた。
【０００５】
これには、オペレーティングシステムおよびアプリケーションプログラムの記憶に、記憶されているプログラムが直接実行できるNOR型フラッシュメモリではなく、NAND型フラッシュメモリが用いられることも影響している。NAND型フラッシュメモリにプログラムが記憶されている場合、このプログラムを実行させるためには、NAND型フラッシュメモリに記憶されているプログラムをRAM（random access memory）に一旦ロードしてから、RAMにロードされたプログラムを実行しなければならない。
【０００６】
そこで、従来、主記憶装置上に不揮発性記憶部を配置し、処理継続に必要な情報を不揮発性記憶部に退避して電源を遮断し、電源投入時には不揮発性記憶部に保持されている情報を利用して電源遮断により中断された処理を再開し、また、処理の再開に必要な情報を識別して優先度を付与し、優先度の高い情報から順に不揮発性記憶部に格納し、不揮発性記憶部に格納できなかったものを２次記憶装置に退避するようにして、サスペンド並びにレジューム処理を効率的に行なうようにしているものもある（例えば、特許文献１参照）。
【０００７】
【特許文献１】特開２００４−３６２４２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、デジタルスチルカメラにおいては、レンズキャップを開いたら撮影できる状態になり、また、単に電源ボタンを押圧したら、これまでに撮影した画像を閲覧できる状態になるなど、起動の操作に応じた起動を行う必要があり、単に、サスペンドし、レジュームするだけでは、この要件を満たすことができなかった。
【０００９】
本発明は、このような状況に鑑みてなされたものであり、使用者の操作に応じた状態になるように、より迅速に起動することができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の一側面の情報処理装置は、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させる状態遷移手段と、起動のトリガとなる起動要因を示す信号を取得する取得手段と、前記サスペンド状態から起動する場合、前記初期状態への復帰の処理を実行する復帰処理実行手段とを備え、前記状態遷移手段は、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させる。
【００１１】
前記状態遷移手段には、起動により前記初期状態に復帰した場合、前記起動要因に応じた、撮影の処理または閲覧の処理のいずれか一方の前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させることができる。
【００１２】
前記状態遷移手段および前記復帰処理実行手段は、前記サスペンド状態において電源の供給が停止される第１のCPU（Central Processing Unit）により実現され、前記取得手段は、前記サスペンド状態において電源が供給される第２のCPUにより実現されるようにできる。
【００１３】
前記状態遷移手段は、アプリケーションプログラムを実行する前記第１のCPUにより実現され、前記復帰処理実行手段は、前記アプリケーションプログラムおよびオペレーティングシステムを実行する前記第１のCPUにより実現され、前記取得手段は、前記アプリケーションプログラムおよび前記オペレーティングシステムとは別のプログラムを実行する第２のCPUにより実現されるようにできる。
【００１４】
前記第２のCPUには、前記サスペンド状態から起動する場合、前記第１のCPUのリセットの解除を制御させることができる。
【００１５】
前記第２のCPUには、前記第１のCPUへの電源の供給を制御させることができる。
【００１６】
本発明の一側面の起動方法は、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、起動のトリガとなる起動要因を示す信号を取得し、前記サスペンド状態から起動する場合、前記初期状態に復帰し、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させるステップを含む。
【００１７】
本発明の一側面のプログラムは、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、起動のトリガとなる起動要因を示す情報を取得し、前記サスペンド状態から起動する場合、前記初期状態に復帰し、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させるステップを含む処理をコンピュータに行わせる。
【００１８】
本発明の一側面の情報処理装置および起動方法においては、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態が遷移させられ、起動のトリガとなる起動要因を示す信号が取得され、前記サスペンド状態から起動する場合、前記初期状態に復帰し、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態が遷移させられる。
【００１９】
本発明の一側面のプログラムにおいては、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態が遷移させられ、起動のトリガとなる起動要因を示す情報が取得され、前記サスペンド状態から起動する場合、前記初期状態に復帰し、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態に状態が遷移させられる。
【発明の効果】
【００２０】
以上のように、本発明の一側面によれば、サスペンド状態からレジュームすることができる。
【００２１】
また、本発明の一側面によれば、使用者の操作に応じた状態になるように、より迅速に起動することができる。
【発明を実施するための最良の形態】
【００２２】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２３】
本発明の一側面の情報処理装置（例えば、図１のデジタルスチルカメラ）は、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態（例えば、図９の初期状態S0N）に状態を遷移させる状態遷移手段（例えば、図２の状態遷移処理プログラム８５）と、起動のトリガとなる起動要因（例えば、レンズキャップを開くこと）を示す信号を取得する取得手段（例えば、図５の起動方式決定情報取得プログラム２０３）と、前記サスペンド状態から起動する場合、前記初期状態への復帰の処理を実行する復帰処理実行手段（例えば、図２のオペレーティングシステム６１）とを備え、前記状態遷移手段は、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態（例えば、図９の撮影処理実行状態）に状態を遷移させる。
【００２４】
前記状態遷移手段および前記復帰処理実行手段は、前記サスペンド状態において電源の供給が停止される第１のCPU（Central Processing Unit）（例えば、図１のホストCPU１１）により実現され、前記取得手段は、前記サスペンド状態において電源が供給される第２のCPU（例えば、図１のエンベデッドコントローラ３３）により実現されるようにできる。
【００２５】
本発明の一側面の起動方法は、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態（例えば、図９の初期状態S0N）に状態を遷移させ（例えば、図２３のステップＳ５０１）、起動のトリガとなる起動要因（例えば、レンズキャップを開くこと）を示す信号を取得し（例えば、図１７のステップＳ１３１）、前記サスペンド状態から起動する場合、前記初期状態に復帰し（例えば、図１８および図１９のステップＳ２４４乃至ステップＳ２４６）、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態（例えば、図９の撮影処理実行状態）に状態を遷移させる（例えば、図１９のステップＳ２５１）ステップを含む。
【００２６】
本発明の一側面のプログラムは、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態（例えば、図９の初期状態S0N）に状態を遷移させ（例えば、図２３のステップＳ５０１）、起動のトリガとなる起動要因（例えば、レンズキャップを開くこと）を示す情報を取得し（例えば、図１７のステップＳ２３７）、前記サスペンド状態から起動する場合、前記初期状態に復帰し（例えば、図１８および図１９のステップＳ２４４乃至ステップＳ２４６）、起動により前記初期状態に復帰した場合、前記起動要因に応じた前記アプリケーションの処理を実行するアプリケーション実行状態（例えば、図９の撮影処理実行状態）に状態を遷移させる（例えば、図１９のステップＳ２５１）ステップを含む処理をコンピュータ（例えば、図１のホストCPU１１）に行わせる。
【００２７】
図１は、本発明の一実施の形態の情報処理装置の一例であるデジタルスチルカメラの構成を示すブロック図である。デジタルスチルカメラは、ホストCPU１１、リアルタイム処理用CPU１２、マスクROM（read only memory）１３、CCD（charge coupled device）１４、アナログフロントエンド１５、信号処理部１６、NAND型フラッシュメモリ１７、メモリコントローラ１８、シリアルインタフェース１９、LCD（liquid crystal display）２０、グラフィックコントローラ２１、メモリカード２２、メモリカードインタフェース２３、無線LAN（local area network）インタフェース２４、コントローラ２５、NAND型フラッシュメモリ２６、ATA（AT attachment）−フラッシュメモリインタフェース２７、IDE（integrated device (drive) electronics）インタフェース２８、SDRAM（synchronous dynamic random access memory）２９、SDRAMコントローラ３０、入力部３１、汎用入出力部３２、エンベデッドコントローラ３３、DC（direct current）−DCコンバータ３４、バッテリ３５、およびバッテリ３６から構成される。
【００２８】
ホストCPU１１、リアルタイム処理用CPU１２、マスクROM１３、信号処理部１６、メモリコントローラ１８、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、SDRAMコントローラ３０、および汎用入出力部３２は、バスにより相互に接続されている。
【００２９】
ホストCPU１１は、組込用のCPUまたは汎用のCPUから構成され、オペレーティングシステムおよびアプリケーションプログラムを実行して、デジタルスチルカメラに対する、撮影する画像のサイズ、画像のデータの圧縮率、または露出若しくはシャッタスピードなどの各種の設定を行うためのGUIの処理などを行う。
【００３０】
リアルタイム処理用CPU１２は、組込用のCPUまたは汎用のCPUから構成され、ホストCPU１１とは別に、オペレーティングシステムおよびアプリケーションプログラムを実行して、デジタルスチルカメラの各部を制御するためのリアルタイムの処理などを行う。
【００３１】
マスクROM１３は、デジタルスチルカメラ固有のデータ、並びに起動するときホストCPU１１に実行されるブートローダを記憶する。
【００３２】
なお、起動とは、電源の供給が停止された状態からの起動だけでなく、サスペンド状態、ハイバネーション、またはソフトオフ状態からの起動、いわゆるレジュームを含む。マスクROM１３は、ブートローダと共に２次ブートローダを記憶するようにしてもよい。
【００３３】
CCD１４は、いわゆる画像センサであり、アナログフロントエンド１５と相互に接続されている。CCD１４は、図示せぬ光学系によってその感光部に結像された被写体の画像に応じたアナログの信号をアナログフロントエンド１５に出力する。なお、CCD１４に代えて、画像センサであるCMOSセンサを設けるようにしてもよい。
【００３４】
アナログフロントエンド１５は、CCD１４および信号処理部１６と相互に接続され、CCD１４からの被写体の画像に応じたアナログの信号に、ノイズの除去などの所定の処理を適用して、アナログの信号をデジタルの信号に変換する。アナログフロントエンド１５は、変換により得られた、被写体の画像に応じたデジタルの信号を信号処理部１６に供給する。
【００３５】
信号処理部１６は、アナログフロントエンド１５から供給された、被写体の画像に応じたデジタルの信号に、ホワイトバランスの処理または符号化の処理など所定の処理を適用する。信号処理部１６は、所定の処理の適用により得られた、被写体の画像に応じたデータを、バス、IDEインタフェース２８、およびATA−フラッシュメモリインタフェース２７を介して、NAND型フラッシュメモリ２６に供給するか、またはバスおよびメモリカードインタフェース２３を介してメモリカード２２に供給する。
【００３６】
NAND型フラッシュメモリ１７は、不揮発性記憶媒体の一例であり、メモリコントローラ１８と相互に接続されている。NAND型フラッシュメモリ１７は、ホストCPU１１により実行されるプログラムまたはそのプログラムの実行に必要なデータを記憶するとともに、リアルタイム処理用CPU１２により実行されるプログラムまたはそのプログラムの実行に必要なデータを記憶する。
【００３７】
さらに、NAND型フラッシュメモリ１７は、ハイバネーションから動作状態に起動する場合のイメージを記憶する。このNAND型フラッシュメモリ１７に記憶されているイメージは、デジタルスチルカメラの動作状態においてSDRAM２９にロードされているプログラムおよびデータがそのままデータとされたものである。NAND型フラッシュメモリ１７に記憶されているイメージがSDRAM２９にロードされることにより、SDRAM２９は、デジタルスチルカメラの動作状態におけるプログラムおよびデータがロードされた状態となる。
【００３８】
以下、NAND型フラッシュメモリ１７に記憶されているイメージを、ホストCPU１１により実行されるプログラムおよびデータのイメージとして説明するが、NAND型フラッシュメモリ１７に記憶されているイメージを、ホストCPU１１により実行されるプログラムおよびデータ並びにリアルタイム処理用CPU１２により実行されるプログラムおよびデータのイメージとするようにしてもよい。
【００３９】
また、以下、NAND型フラッシュメモリ１７に記憶されているイメージを、ウォームブートイメージとも称する。
【００４０】
メモリコントローラ１８は、NAND型フラッシュメモリ１７からのプログラム、データ、またはウォームブートイメージの読み出しを制御する。また、メモリコントローラ１８は、NAND型フラッシュメモリ１７へのウォームブートイメージなどの各種のデータの書き込みを制御する。
【００４１】
シリアルインタフェース１９は、ホストCPU１１とエンベデッドコントローラ３３との間のシリアル通信を行う。
【００４２】
LCD２０は、相互に接続されているグラフィックコントローラ２１の制御の基に、各種の画像またはテキストなどを表示する。グラフィックコントローラ２１は、LCD２０の表示を制御する。
【００４３】
メモリカード２２は、例えば、メモリースティック（MEMORY STICK（登録商標））により構成され、不揮発性記憶媒体を内蔵し、デジタルスチルカメラに挿抜可能に構成される。メモリカード２２は、デジタルスチルカメラに装着された場合、メモリカードインタフェース２３と電気的に接続される。メモリカードインタフェース２３は、装着されたメモリカード２２のデータの記憶またはメモリカード２２からのデータの読み出しを制御する。
【００４４】
無線LANインタフェース２４は、IEEE（institute of electrical and electronic engineers）802.11a，b、またはgなどに準拠して、アクセスポイントまたは他の機器などと通信する。コントローラ２５は、無線LANインタフェース２４とバスとを相互に接続し、無線LANインタフェース２４を制御する。
【００４５】
NAND型フラッシュメモリ２６は、不揮発性記憶媒体の一例であり、相互に接続されているATA−フラッシュメモリインタフェース２７の制御の基に、画像のデータなど、各種のデータを記憶する。ATA−フラッシュメモリインタフェース２７は、IDEインタフェース２８とNAND型フラッシュメモリ２６とのインタフェースであり、ATAの規格に準拠してIDEインタフェース２８と通信する。IDEインタフェース２８は、IDEの規格に準拠し、ATA−フラッシュメモリインタフェース２７と通信する。ATA−フラッシュメモリインタフェース２７およびIDEインタフェース２８を介して、NAND型フラッシュメモリ２６がバスに接続されるので、ホストCPU１１は、ハードディスクまたは光ディスクドライブに対するIDEの規格のコマンドを用いて、NAND型フラッシュメモリ２６を制御することができるようになる。
【００４６】
SDRAM２９は、記憶媒体の一例であり、SDRAMコントローラ３０と相互に接続され、ホストCPU１１により実行されるオペレーティングシステムおよびアプリケーションプログラム、並びにリアルタイム処理用CPU１２により実行されるオペレーティングシステムおよびアプリケーションプログラムを記憶する。ホストCPU１１は、SDRAM２９に記憶されたオペレーティングシステムおよびアプリケーションプログラムを実行する。また、リアルタイム処理用CPU１２は、SDRAM２９に記憶されたオペレーティングシステムおよびアプリケーションプログラムを実行する。
【００４７】
なお、SDRAM２９は、電源が供給されると記憶しているデータ（プログラムを含む）を自分自身でリフレッシュする、いわゆるセルフリフレッシュ機能を備える。
【００４８】
SDRAMコントローラ３０は、SDRAM２９へのプログラムまたはデータの書き込み、およびSDRAM２９からのプログラムまたはデータの読み出しを制御する。
【００４９】
入力部３１は、電源ボタン、無線LANボタン、USB（universal serial bus）ボタン、レンズキャップ（レンズシャッタ）の開閉を検出するスイッチ、十字キー、およびタッチパネルなどからなり、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧に応じた信号、レンズキャップの開閉に応じた信号、または十字キー若しくはタッチパネルなどへの操作に応じた信号を汎用入出力部３２およびエンベデッドコントローラ３３に供給する。
【００５０】
汎用入出力部３２は、汎用のシリアルまたはパラレルの入出力インタフェースであり、入力部３１から供給された、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧に応じた信号、レンズキャップの開閉に応じた信号、または十字キー若しくはタッチパネルなどへの操作に応じた信号に対応するデータをホストCPU１１またはリアルタイム処理用CPU１２に供給する。
【００５１】
また、汎用入出力部３２には、USBの規格に準拠した機器またはケーブルを接続するためのUSB接続端子４１が設けられている。
【００５２】
なお、図示は省略するが、一方の端末がパーソナルコンピュータなどの機器に接続されているケーブルの他方の端末がUSB接続端子４１に接続された場合、汎用入出力部３２は、USB接続端子４１に機器が接続されたことを示す信号をエンベデッドコントローラ３３に供給する。
【００５３】
エンベデッドコントローラ３３は、いわゆる組込用のCPUであり、内蔵されているROMまたはRAMに記憶されているプログラムを実行する。エンベデッドコントローラ３３は、入力部３１から供給された信号を基に、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧またはレンズキャップの開閉に応じて、ホストCPU１１のリセットおよびその解除を制御する。
【００５４】
エンベデッドコントローラ３３は、DC−DCコンバータ３４によるデジタルスチルカメラの各部への電力の供給を制御する。
【００５５】
DC−DCコンバータ３４は、直流電圧電源であるバッテリ３５または外部電源から供給される電圧を変換して、エンベデッドコントローラ３３の制御に基づいて、デジタルスチルカメラの各部に所定の電圧の電源（電力）を供給するか、各部位毎に電源の供給を停止する。
【００５６】
バッテリ３５は、デジタルスチルカメラに着脱自在の２次電池であり、DC−DCコンバータ３４を介して、デジタルスチルカメラの全体を駆動するための電力を供給する。
【００５７】
バッテリ３６は、例えばボタン電池などの１次電池であり、外部電源またはバッテリ３５から電力が供給されない場合にエンベデッドコントローラ３３を動作させるための電力を、エンベデッドコントローラ３３に供給する。
【００５８】
次に、ホストCPU１１により実行されるプログラム、リアルタイム処理用CPUにより実行されるプログラム、またはエンベデッドコントローラ３３により実行されるプログラムについて説明する。
【００５９】
以下、プログラムの説明において、プログラムを実行するコンピュータにより行われる処理を、そのプログラムが行うとも表現する。
【００６０】
まず、図２を参照して、ホストCPU１１により実行されるオペレーティングシステム６１およびアプリケーションプログラム６２について説明する。
【００６１】
ホストCPU１１は、オペレーティングシステム６１およびアプリケーションプログラム６２を実行する。
【００６２】
オペレーティングシステム６１は、Linux（登録商標）などのオペレーティングシステムであり、ハードウェアの管理など基本的な処理を行う。アプリケーションプログラム６２は、撮影しようとする被写体の画像の表示や撮影した画像の閲覧などの処理を行う。
【００６３】
オペレーティングシステム６１は、カーネル７１、デバイスドライバ７２、電源管理機構７３、休止状態決定プログラム７４、休止状態情報提供プログラム７５、他CPUプログラム読み出しプログラム７６、設定値記憶処理プログラム７７、およびウォームブートイメージ生成プログラム７８を含む。
【００６４】
カーネル７１は、オペレーティングシステム６１の中核部分であり、アプリケーションプログラム６２やマスクROM１３乃至汎用入出力部３２などのデバイスの監視、SDRAM２９やメモリカード２２、NAND型フラッシュメモリ２６などの資源の管理、割りこみ処理、またはプロセス間通信など、オペレーティングシステム６１としての基本機能を提供する。
【００６５】
デバイスドライバ７２は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのデバイスを制御する。本来、デバイスドライバ７２は、信号処理部１６乃至汎用入出力部３２のそれぞれを個別に制御するプログラムであるが、個別に区別せず、信号処理部１６乃至汎用入出力部３２を一括して制御するものとして説明する。
【００６６】
電源管理機構７３は、ACPI（advanced configuration and power interface）サブシステムなどであり、デジタルスチルカメラをサスペンド状態、ハイバネーション、若しくはソフトオフ状態で休止させるように、また、サスペンド状態、ハイバネーション、若しくはソフトオフ状態の休止状態から動作状態となるように、電源を管理する。
【００６７】
休止状態決定プログラム７４は、デジタルスチルカメラが休止する場合、サスペンド状態またはハイバネーションのいずれの状態で休止するかを決定する。
【００６８】
休止状態情報提供プログラム７５は、デジタルスチルカメラが休止する場合、サスペンド状態またはハイバネーションのいずれか一方の決定された状態を示す休止状態情報を、シリアルインタフェース１９を介してエンベデッドコントローラ３３に供給する。
【００６９】
他CPUプログラム読み出しプログラム７６は、デジタルスチルカメラが休止する場合、NAND型フラッシュメモリ１７に記憶されているリアルタイム処理用CPU１２のオペレーティングシステムおよびアプリケーションプログラムをSDRAM２９にロードする。
【００７０】
なお、以下、NAND型フラッシュメモリ１７に記憶されているプログラムまたはデータを、NAND型フラッシュメモリ１７から読み出して、読み出したプログラムまたはデータをSDRAM２９にロードすることを、プログラムまたはデータをNAND型フラッシュメモリ１７からSDRAM２９にロードすると称する。
【００７１】
設定値記憶処理プログラム７７は、デジタルスチルカメラが休止する場合、その休止の後に起動するときに行われる復帰において必要となる、シャッタスピードや露出、ズーム、撮影する画像のサイズや符号化する際の圧縮率、またはホストCPU１１の内部の各レジスタの値などの設定値を、NAND型フラッシュメモリ１７に記憶させる。
【００７２】
ウォームブートイメージ生成プログラム７８は、ファームウェア、すなわちオペレーティングシステム６１またはアプリケーションプログラム６２が更新されて（アップデートされて）、電源の供給が停止された状態から起動された場合、起動直後のウォームブートイメージを生成する。ウォームブートイメージ生成プログラム７８は、生成したウォームブートイメージをNAND型フラッシュメモリ１７に記憶させる。
【００７３】
アプリケーションプログラム６２は、撮影処理プログラム８１、閲覧処理プログラム８２、設定処理プログラム８３、USBマスストレージクラス処理プログラム８４、状態遷移処理プログラム８５、および電源管理プログラム８６を含む。
【００７４】
撮影処理プログラム８１は、撮影しようとする被写体の画像のLCD２０への表示や、撮影した画像の画像処理、撮影により得られた画像のデータの符号化およびその記憶などを制御する。すなわち、撮影処理プログラム８１は、撮影の処理を行う。
【００７５】
閲覧処理プログラム８２は、撮影によって生成され、NAND型フラッシュメモリ２６またはメモリカード２２に記憶した画像のデータにより画像をLCD２０に表示させるなどして、使用者に画像を閲覧させる処理を行う。
【００７６】
設定処理プログラム８３は、シャッタスピード、露出、若しくはズーム、または撮影する画像のサイズ、符号化の方式や符号化の圧縮率などの撮影に関する設定や、画像のデータの記憶先や、画像の閲覧における表示の仕方など、各種の設定の処理を行う。
【００７７】
USBマスストレージクラス処理プログラム８４は、一方の端末がパーソナルコンピュータなどの機器に接続されているケーブルの他方の端末がUSB接続端子４１に接続された場合、デジタルスチルカメラを記録デバイスとして動作させるUSBマスストレージクラスの処理を行う。
【００７８】
撮影処理プログラム８１乃至USBマスストレージクラス処理プログラム８４のそれぞれは、撮影の処理乃至USBマスストレージクラスの処理のそれぞれにおいて、必要なGUIの処理を行う。
【００７９】
状態遷移処理プログラム８５は、動作状態に含まれる複数の状態のうち、所定の状態に遷移させる状態遷移の処理を行う。動作状態の詳細は後述する。
【００８０】
電源管理プログラム８６は、Linux（登録商標） kernelが提供する電源管理プログラム（Power Management Interface）であり、電源の状態に関する各種のコマンドを発行するなどして、電源を管理する。
【００８１】
なお、オペレーティングシステム６１が、状態遷移処理プログラム８５を含むようにしてもよい。
【００８２】
次に、図３を参照して、起動する場合、ホストCPU１１に実行される２次ブートローダを説明する。この２次ブートローダは、起動するとき、ホストCPU１１に実行されるブートローダによりSDRAM２９にロードされて、実行される。
【００８３】
２次ブートローダ１０１は、PC（Personal Computer）で用いられているgrubまたはliloなどに相当するプログラムであり、オペレーティングシステム６１およびアプリケーションプログラム６２の起動を制御する。
【００８４】
２次ブートローダ１０１は、起動方式決定情報取得プログラム１２１、起動方式決定プログラム１２２、設定値読み出しプログラム１２３、他CPUプログラム読み出しプログラム１２４、およびウォームブートイメージ読み出しプログラム１２５を含む。
【００８５】
起動方式決定情報取得プログラム１２１は、エンベデッドコントローラ３３がその内部のメモリに記憶している起動方式決定情報を、エンベデッドコントローラ３３から取得する。ここで、起動方式決定情報は、起動の方式を決定するための情報である。
【００８６】
起動の方式とは、休止する直前の動作状態においてSDRAM２９に記憶されていたプログラムであって、サスペンド状態においてSDRAM２９に記憶されているプログラムを実行することにより起動する方式、または休止する以前の動作状態においてSDRAM２９に記憶されていたプログラムのイメージであるウォームブートイメージあって、NAND型フラッシュメモリ１７に記憶されているウォームブートイメージをSDRAM２９にロードし実行することにより起動する方式などをいう。
【００８７】
以下、休止する直前の動作状態においてSDRAM２９に記憶されていたプログラムであって、サスペンド状態においてSDRAM２９に記憶されているプログラムを実行することにより起動する方式をホットブートと称する。また、休止する以前の動作状態においてSDRAM２９に記憶されていたプログラムのイメージであるウォームブートイメージあって、NAND型フラッシュメモリ１７に記憶されているウォームブートイメージをSDRAM２９にロードし実行することにより起動する方式をウォームブートと称する。
【００８８】
さらに、NAND型フラッシュメモリ１７に記憶されているオペレーティングシステムのファイルを開いて起動する方式をコールドブートと称する。
【００８９】
起動に要する時間を比較すると、ウォームブートの起動に要する時間は、ホットブートの起動に要する時間に比較して長く、コールドブートの起動に要する時間は、ウォームブートの起動に要する時間に比較して極めて長い。すなわち、ホットブートの起動は、コールドブートの起動に比較して、極めて迅速であり、ウォームブートの起動は、コールドブートの起動に比較して、迅速であり、ホットブートの起動は、ウォームブートの起動に比較して、迅速であると言える。
【００９０】
なお、ホットブートまたはウォームブートの方式により起動することは、一般に、レジューム（resume）と称されている。
【００９１】
また、ホットブート、ウォームブート、またはコールドブートの起動の対象は、デジタルスチルカメラ、ホストCPU１１、またはオペレーティングシステム６１である。従って、デジタルスチルカメラが、ホットブート、ウォームブート、またはコールドブートされるとも、ホストCPU１１が、ホットブート、ウォームブート、またはコールドブートされるとも、オペレーティングシステム６１が、ホットブート、ウォームブート、またはコールドブートされるとも言える。
【００９２】
次に、起動方式決定情報について説明すると、より詳細には起動方式決定情報は、休止状態情報およびバッテリ着脱情報からなり、さらに起動要因情報を含む。
【００９３】
休止状態情報は、休止する場合に決定された休止状態を示す情報である。なお、休止状態情報には、ウォームブートイメージを作成するか否かを示すイメージ作成フラグが含まれている。例えば、セットされている（立っている）イメージ作成フラグは、ウォームブートイメージを作成することを示し、クリアされている（立っていない）イメージ作成フラグは、ウォームブートイメージを作成しないことを示す。
【００９４】
バッテリ着脱情報は、休止状態におけるバッテリ３５の着脱の履歴を示す。
【００９５】
起動要因情報は、入力部３１の電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、USB接続端子４１に機器が接続されること、またはレンズキャップを開くことなど、起動のトリガとなる起動要因を示す。
【００９６】
起動方式決定情報取得プログラム１２１は、エンベデッドコントローラ３３から取得した起動方式決定情報を、SDRAM２９の予め定められた記憶領域に記憶させる。
【００９７】
起動方式決定プログラム１２２は、起動方式決定情報を基に、起動の方式を決定する。
【００９８】
設定値読み出しプログラム１２３は、デジタルスチルカメラが休止する場合、設定値記憶処理プログラム７７によりNAND型フラッシュメモリ１７に記憶された設定値を読み出す。
【００９９】
他CPUプログラム読み出しプログラム１２４は、ウォームブートまたはコールドブートの場合、NAND型フラッシュメモリ１７に記憶されているリアルタイム処理用CPU１２のオペレーティングシステムおよびアプリケーションプログラムをSDRAM２９にロードする。
【０１００】
ウォームブートイメージ読み出しプログラム１２５は、ウォームブートの場合、NAND型フラッシュメモリ１７に記憶されているウォームブートイメージをSDRAM２９にロードする。
【０１０１】
次に、リアルタイム処理用CPU１２に実行されるオペレーティングシステム１４１およびアプリケーションプログラム１４２について、図４を参照して説明する。
【０１０２】
リアルタイム処理用CPU１２は、オペレーティングシステム１４１およびアプリケーションプログラム１４２を実行する。
【０１０３】
オペレーティングシステム１４１は、μITRONなどの、いわゆるリアルタイムオペレーティングシステムであり、各種の基本的な処理を行う。アプリケーションプログラム１４２は、被写体を撮影する場合に必要とされる、図示せぬ光学系、CCD１４、アナログフロントエンド１５、および信号処理部１６に対するリアルタイムの制御の処理を行う。
【０１０４】
オペレーティングシステム１４１は、起動方式決定情報取得プログラム１６１、起動方式決定プログラム１６２、およびアプリケーション起動終了制御プログラム１６３を含む。
【０１０５】
起動方式決定情報取得プログラム１６１は、起動する場合、起動方式決定情報取得プログラム１２１によって記憶させられた起動方式決定情報をSDRAM２９の予め決められた記憶領域から読み出すことにより、起動方式決定情報を取得する。
【０１０６】
起動方式決定プログラム１６２は、起動方式決定情報を基に、起動の方式を決定する。この場合、起動方式決定プログラム１６２は、起動の方式を、起動方式決定プログラム１２２と共通する起動方式決定情報から、起動方式決定プログラム１２２により決定される起動の方式と同じ起動の方式に決定する。
【０１０７】
アプリケーション起動終了制御プログラム１６３は、起動する場合、起動方式決定情報に含まれる起動要因情報を基に、アプリケーションプログラム１４２の各種の処理の起動および終了を制御する。
【０１０８】
アプリケーションプログラム１４２は、リアルタイム処理プログラム１７１、GUI処理プログラム１７２、および起動画面表示プログラム１７３を含む。
【０１０９】
リアルタイム処理プログラム１７１は、図示せぬ光学系、CCD１４、アナログフロントエンド１５、および信号処理部１６をリアルタイムに制御する。
【０１１０】
GUI処理プログラム１７２は、リアルタイム処理用CPU１２がホストCPU１１と共用する入力部３１から使用者の指示を取得するためのユーザインタフェースの処理を行う。GUI処理プログラム１７２は、撮影処理プログラム８１乃至USBマスストレージクラス処理プログラム８４のそれぞれによるGUIの処理のうちの一部の処理、例えば、シャッタスピード、露出、またはズームの設定値など、起動直後にその設定が要求されることのある設定値についての限定されたGUIの処理を行う。
【０１１１】
起動画面表示プログラム１７３は、起動する場合、LCD２０に、起動を示す起動画面を表示させる。
【０１１２】
なお、アプリケーションプログラム１４２が、アプリケーション起動終了制御プログラム１６３を含むようにしてもよい。
【０１１３】
次に、エンベデッドコントローラ３３により実行されるプログラムについて説明する。図５は、エンベデッドコントローラ３３により実行されるプログラムを示す図である。エンベデッドコントローラ３３は、電源制御プログラム２０１、他CPUリセット制御プログラム２０２、起動方式決定情報取得プログラム２０３、起動方式決定情報記憶処理プログラム２０４、起動方式決定情報提供プログラム２０５、およびバッテリ着脱検出プログラム２０６を実行する。
【０１１４】
電源制御プログラム２０１は、DC−DCコンバータ３４を制御することにより、デジタルスチルカメラの各部への電力の供給を制御する。
【０１１５】
他CPUリセット制御プログラム２０２は、ホストCPU１１のリセットおよびその解除を制御する。
【０１１６】
起動方式決定情報取得プログラム２０３は、起動方式決定情報を取得する。
【０１１７】
より詳細には、起動方式決定情報取得プログラム２０３は、デジタルスチルカメラが休止する場合、休止状態情報提供プログラム７５から送信されてくる休止状態情報を受信することにより、起動方式決定情報のうちの休止状態情報を取得する。
【０１１８】
また、起動方式決定情報取得プログラム２０３は、バッテリ着脱検出プログラム２０６からバッテリ３５の着脱の検出の結果を取得する。起動方式決定情報取得プログラム２０３は、バッテリ３５の着脱の検出の結果に応じたバッテリ着脱情報を生成する。さらに、起動方式決定情報取得プログラム２０３は、入力部３１から供給される信号であって、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップの開閉を示す信号に応じて、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップを開くことなどの起動のトリガを示す起動要因情報を生成する。
【０１１９】
起動方式決定情報記憶処理プログラム２０４は、取得した起動方式決定情報をエンベデッドコントローラ３３の内部のメモリに記憶する。すなわち、起動方式決定情報記憶処理プログラム２０４は、受信された休止状態情報、生成されたバッテリ着脱情報、または生成された起動要因情報をエンベデッドコントローラ３３の内部のメモリに記憶する。
【０１２０】
起動方式決定情報提供プログラム２０５は、シリアルインタフェース１９を介して、ホストCPU１１からの要求に応じて、エンベデッドコントローラ３３の内部のメモリに記憶されている起動方式決定情報をホストCPU１１に提供する。
【０１２１】
バッテリ着脱検出プログラム２０６は、DC−DCコンバータ３４の出力電圧を検出することにより、バッテリ３５の着脱を検出する。
【０１２２】
次に、図６乃至図９を参照して、デジタルスチルカメラの状態について説明する。図６で示されるように、デジタルスチルカメラの状態は、メカニカルオフ状態G3、サスペンド状態S3、ハイバネーションS4、ソフトオフ状態S5、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、または他の処理を実行する状態のいずれかである。
【０１２３】
撮影処理実行状態においては、撮影処理プログラム８１がホストCPU１１により実行されている。閲覧処理実行状態においては、閲覧処理プログラム８２がホストCPU１１により実行されている。設定処理実行状態においては、設定処理プログラム８３がホストCPU１１により実行されている。
【０１２４】
他の処理を実行する状態においては、USBマスストレージクラス処理プログラム８４がホストCPU１１により実行されている。または、他の処理を実行する状態においては、アプリケーションプログラム６２がホストCPU１１により実行されているが、撮影処理プログラム８１、閲覧処理プログラム８２、設定処理プログラム８３、およびUSBマスストレージクラス処理プログラム８４のいずれもが実行されていない。
【０１２５】
サスペンド状態S3、ハイバネーションS4、およびソフトオフ状態S5は、休止状態と称する。また、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、および他の処理を実行する状態は、動作状態S0と称する。
【０１２６】
図７は、動作状態S0、サスペンド状態S3、ハイバネーションS4、ソフトオフ状態S5、およびメカニカルオフ状態G3のそれぞれにおける、ホストCPU１１、SDRAM２９、またはエンベデッドコントローラ３３への電源の供給の有り無しを示す図である。
【０１２７】
図７中のONは、電源が供給されていることを示し、OFFは、電源の供給が停止されていること、すなわち、電源が供給されていないことを示す。
【０１２８】
動作状態S0において、DC−DCコンバータ３４から、ホストCPU１１、SDRAM２９、およびエンベデッドコントローラ３３の全部に電源が供給される。
【０１２９】
サスペンド状態S3において、DC−DCコンバータ３４からのホストCPU１１への電源の供給は停止され、DC−DCコンバータ３４から、SDRAM２９およびエンベデッドコントローラ３３に電源が供給される。SDRAM２９は、そのセルフリフレッシュ機能により、電源が供給されると記憶しているデータ（プログラム）を自分自身でリフレッシュするので、サスペンド状態S3において、記憶しているプログラムおよびデータを維持する。
【０１３０】
ハイバネーションS4およびソフトオフ状態S5において、DC−DCコンバータ３４からのホストCPU１１およびSDRAM２９への電源の供給は停止され、DC−DCコンバータ３４からエンベデッドコントローラ３３に電源が供給される。
【０１３１】
デジタルスチルカメラにおいて、ハイバネーションS4とソフトオフ状態S5とは、電気的に同じ状態なので、以下の説明において、ハイバネーションS4とソフトオフ状態S5とを区別しない。
【０１３２】
メカニカルオフ状態G3において、DC−DCコンバータ３４からの、ホストCPU１１、SDRAM２９、およびエンベデッドコントローラ３３への電源の供給は停止される。但し、エンベデッドコントローラ３３には、バッテリ３６から電源が供給される。これにより、エンベデッドコントローラ３３に内蔵されているリアルタイムクロック（RTC）の動作が保持される。
【０１３３】
なお、リアルタイム処理用CPU１２への電源は、ホストCPU１１への電源と同様に、動作状態S0において供給され、サスペンド状態S3、ハイバネーションS4、ソフトオフ状態S5、およびメカニカルオフ状態G3において供給が停止される。
【０１３４】
図８は、状態遷移を説明する図である。メカニカルオフ状態G3において、バッテリ３５が装着されると、デジタルスチルカメラの状態は、ハイバネーションS4（ソフトオフ状態S5）に遷移する。
【０１３５】
ハイバネーションS4（ソフトオフ状態S5）において、バッテリ３５が取り外されると、デジタルスチルカメラの状態は、メカニカルオフ状態G3に遷移する。
【０１３６】
ハイバネーションS4（ソフトオフ状態S5）において、入力部３１の電源ボタンが押圧されると、デジタルスチルカメラの状態は、動作状態S0に遷移する。逆に、動作状態S0において、電源ボタンが長押しされる、すなわち予め決められた時間より長く継続して押圧されると、デジタルスチルカメラの状態は、ハイバネーションS4（ソフトオフ状態S5）に遷移する。
【０１３７】
動作状態S0において、電源ボタンが押圧されるか、レンズキャップが閉じられるか、または予め決められた時間より長く使用者による操作がなされない（ノーオペレーションである）と、デジタルスチルカメラの状態は、サスペンド状態S3に遷移する。
【０１３８】
サスペンド状態S3において、電源ボタンが押圧されるか、入力部３１の無線LANボタンが押圧されるか、レンズキャップが開けられるか、または一方の端末が他の機器に接続されているケーブルの他方の端末がUSB接続端子４１に接続されると、デジタルスチルカメラの状態は、動作状態S0に遷移する。
【０１３９】
サスペンド状態S3において、バッテリ３５の電圧が予め定めた閾値より低くなるか、またはサスペンド状態S3に遷移してから予め定めた長さの時間、すなわち長時間が経過すると、デジタルスチルカメラの状態は、ハイバネーションS4（ソフトオフ状態S5）に遷移する。
【０１４０】
また、サスペンド状態S3において、バッテリ３５が取り外されると、デジタルスチルカメラの状態は、メカニカルオフ状態G3に遷移する。同様に、動作状態S0において、バッテリ３５が取り外されると、デジタルスチルカメラの状態は、メカニカルオフ状態G3に遷移する。
【０１４１】
なお、動作状態S0において、一定時間処理が実行されないと（アイドルになると）、デジタルスチルカメラの状態は、ホストCPU１１のクロックの周波数を落とした、いわゆるアイドル状態に遷移する。アイドル状態では、一定の期間毎に割り込みが入り、デジタルスチルカメラの状態は、一定の期間毎に動作状態S0になる。
【０１４２】
図９を参照して、動作状態S0の詳細を説明する。動作状態S0には、撮影処理実行状態、閲覧処理実行状態、および設定処理実行状態に加えて、他の処理を実行する状態に相当する、USBマスストレージクラス処理実行状態、および初期状態S0Nが含まれる。
【０１４３】
USBマスストレージクラス処理実行状態においては、USBマスストレージクラス処理プログラム８４がホストCPU１１により実行されている。
【０１４４】
初期状態S0Nは、アプリケーションの処理の実行が抑制された状態である。初期状態S0Nにおいて、アプリケーションプログラム６２がホストCPU１１により実行されているが、撮影処理プログラム８１、閲覧処理プログラム８２、設定処理プログラム８３、またはUSBマスストレージクラス処理プログラム８４はいずれも実行されない。
【０１４５】
初期状態S0Nから、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態の何れかに遷移することができ、撮影処理実行状態、閲覧処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態から、初期状態S0Nに遷移することができる。
【０１４６】
しかし、撮影処理実行状態から、閲覧処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態に直接に遷移することはできず、また、閲覧処理実行状態から、撮影処理実行状態、設定処理実行状態、またはUSBマスストレージクラス処理実行状態に直接に遷移することはできない。設定処理実行状態から、閲覧処理実行状態、撮影処理実行状態、またはUSBマスストレージクラス処理実行状態に直接に遷移することはできず、USBマスストレージクラス処理実行状態から、撮影処理実行状態、閲覧処理実行状態、または設定処理実行状態に直接に遷移することはできない。
【０１４７】
すなわち、撮影処理実行状態と、閲覧処理実行状態と、設定処理実行状態と、USBマスストレージクラス処理実行状態との間では直接に遷移することはできない。
【０１４８】
次に、図１０乃至図１２を参照して、起動の処理の手順の概要を説明する。
【０１４９】
まず、休止する以前の動作状態S0においてSDRAM２９に記憶されていたプログラムのイメージであるウォームブートイメージあって、NAND型フラッシュメモリ１７に記憶されているウォームブートイメージをSDRAM２９にロードし実行することにより起動するウォームブートの起動について説明する。
【０１５０】
図１０は、ウォームブートの起動の処理の手順を示す図である。時刻t0において、ホストCPU１１のリセットが解除されると、ホストCPU１１は、マスクROM１３の予め定めた番地に格納されているブートローダの実行を開始する。ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されている２次ブートローダをSDRAM２９にロードする。ブートローダのジャンプ命令により、ホストCPU１１は、２次ブートローダの実行を開始する。
【０１５１】
２次ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されている、リアルタイム処理用CPU１２に実行されるオペレーティングシステム１４１およびアプリケーションプログラム１４２をSDRAM２９にロードする。
【０１５２】
そして、２次ブートローダを実行するホストCPU１１は、リアルタイム処理用CPU１２のリセットを解除する。
【０１５３】
リセットが解除されたリアルタイム処理用CPU１２は、時刻t1において、SDRAM２９の予め定めた番地からプログラムの命令の実行を開始することで、オペレーティングシステム１４１の実行を開始する。
【０１５４】
２次ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されている、ウォームブートイメージをSDRAM２９にロードする。
【０１５５】
ウォームブートイメージのSDRAM２９へのロードが完了すると、時刻t2において、ホストCPU１１は、ロードされたウォームブートイメージに含まれている電源管理機構７３の実行を開始する。電源管理機構７３を実行するホストCPU１１は、DC−DCコンバータ３４およびバッテリ３５を含む電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを修正するなどの復帰の処理を行う。
【０１５６】
電源管理機構７３の復帰の処理が完了すると、時刻t3において、ホストCPU１１は、ロードされたウォームブートイメージに含まれているカーネル７１の実行を開始する。カーネル７１を実行するホストCPU１１は、SDRAM２９の記憶空間の占有の状態などを検出して、SDRAM２９などの資源の管理のプロセスのパラメータを修正するなどの復帰の処理を行う。
【０１５７】
カーネル７１の復帰の処理が完了すると、時刻t4において、ホストCPU１１は、ロードされたウォームブートイメージに含まれているデバイスドライバ７２の復帰の処理の実行を開始する。すなわち、ホストCPU１１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのそれぞれのデバイスの状態を検出して、検出したデバイスの状態にあわせてデバイスドライバ７２のパラメータを修正するなどの復帰の処理を行う。
【０１５８】
デバイスドライバ７２の復帰の処理が完了すると、ホストCPU１１は、デバイスドライバ７２の復帰の処理が完了したことをリアルタイム処理用CPU１２に通知する。
【０１５９】
リアルタイム処理用CPU１２が、ホストCPU１１からのデバイスドライバ７２の復帰の処理が完了したことの通知を受信すると、リアルタイム処理プログラム１７１を実行することにより実行されるリアルタイムの制御の処理と、ホストCPU１１における処理との通信が開始される。
【０１６０】
また、デバイスドライバ７２の復帰の処理が完了すると、時刻t5において、ホストCPU１１は、ロードされたウォームブートイメージに含まれるアプリケーションプログラム６２の復帰の処理を開始する。ホストCPU１１は、シャッタスピード、露出、またはズームなどの設定値を設定するなどの、アプリケーションプログラム６２の復帰の処理を行う。
【０１６１】
アプリケーションプログラム６２の復帰の処理が完了すると、ホストCPU１１は、アプリケーションプログラム６２の復帰の処理が完了したことをリアルタイム処理用CPU１２に通知する。アプリケーションプログラム６２の電源管理プログラム８６は、電源管理機構７３から電源の状態を示すパラメータを取得するなどして、電源の状態の監視を開始する。
【０１６２】
図１１は、休止する直前の動作状態S0においてSDRAM２９に記憶されていたプログラムであって、サスペンド状態S3においてSDRAM２９に記憶されているプログラムを実行することにより起動するホットブートの起動の処理の手順を示す図である。
【０１６３】
なお、SDRAM２９は、休止する直前の動作状態S0において記憶していたオペレーティングシステム６１、アプリケーションプログラム６２、オペレーティングシステム１４１、およびアプリケーションプログラム１４２の記憶を、サスペンド状態S3およびホットブートの起動の処理の開始後において維持する。
【０１６４】
時刻t0において、ホストCPU１１のリセットが解除されると、ホストCPU１１は、マスクROM１３の予め定めた番地に格納されているブートローダの実行を開始する。ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されている２次ブートローダをSDRAM２９にロードする。ブートローダのジャンプ命令により、ホストCPU１１は、２次ブートローダの実行を開始する。
【０１６５】
上述したように、SDRAM２９が、オペレーティングシステム１４１およびアプリケーションプログラム１４２の記憶を、サスペンド状態S3およびホットブートの起動の処理の開始後において維持しているので、ホットブートの起動の処理において、２次ブートローダを実行するホストCPU１１がオペレーティングシステム１４１およびアプリケーションプログラム１４２をSDRAM２９に改めてロードする必要はない。
【０１６６】
２次ブートローダを実行するホストCPU１１は、リアルタイム処理用CPU１２のリセットを解除する。
【０１６７】
リセットが解除されたリアルタイム処理用CPU１２は、時刻t1において、SDRAM２９の予め定めた番地からプログラムの命令の実行を開始することで、オペレーティングシステム１４１の実行を開始する。
【０１６８】
リアルタイム処理用CPU１２のリセットを解除した後、ホストCPU１１は、SDRAM２９に記憶されている電源管理機構７３の実行を開始する。電源管理機構７３を実行するホストCPU１１は、DC−DCコンバータ３４およびバッテリ３５を含む電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを修正するなどの復帰の処理を行う。
【０１６９】
電源管理機構７３の復帰の処理が完了すると、時刻t2において、ホストCPU１１は、SDRAM２９に記憶されているカーネル７１の実行を開始する。カーネル７１を実行するホストCPU１１は、SDRAM２９の記憶空間の占有の状態などを検出して、SDRAM２９などの資源の管理のプロセスのパラメータを修正するなどの復帰の処理を行う。
【０１７０】
カーネル７１の復帰の処理が完了すると、時刻t3において、ホストCPU１１は、SDRAM２９に記憶されているデバイスドライバ７２の復帰の処理の実行を開始する。すなわち、ホストCPU１１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのそれぞれのデバイスの状態を検出して、検出したデバイスの状態にあわせてデバイスドライバ７２のパラメータを修正するなどの復帰の処理を行う。
【０１７１】
デバイスドライバ７２の復帰の処理が完了すると、ホストCPU１１は、デバイスドライバ７２の復帰の処理が完了したことをリアルタイム処理用CPU１２に通知する。
【０１７２】
リアルタイム処理用CPU１２が、ホストCPU１１からのデバイスドライバ７２の復帰の処理が完了したことの通知を受信すると、リアルタイム処理プログラム１７１を実行することにより実行されるリアルタイムの制御の処理と、ホストCPU１１における処理との通信が開始される。
【０１７３】
また、デバイスドライバ７２の復帰の処理が完了すると、時刻t4において、ホストCPU１１は、SDRAM２９に記憶されているアプリケーションプログラム６２の復帰の処理の実行を開始する。ホストCPU１１は、シャッタスピード、露出、またはズームなどの設定値を設定するなどの、アプリケーションプログラム６２の復帰の処理を行う。
【０１７４】
アプリケーションプログラム６２の復帰の処理が完了すると、ホストCPU１１は、アプリケーションプログラム６２の復帰の処理が完了したことをリアルタイム処理用CPU１２に通知する。アプリケーションプログラム６２の電源管理プログラム８６は、電源管理機構７３から電源の状態を示すパラメータを取得するなどして、電源の状態の監視を開始する。
【０１７５】
このように、ホットブートの起動の処理においては、ウォームブートイメージをNAND型フラッシュメモリ１７から読み出して、SDRAM２９にロードするなどの処理が不要になるので、ウォームブートの起動の処理に比較して、より迅速に起動することができる。
【０１７６】
次に、デジタルスチルカメラを出荷する前に工場で実行されるか、または、いわゆるファームウェアをアップデートするときに実行される起動の方式である、NAND型フラッシュメモリ１７に記憶されている、オペレーティングシステム６１およびアプリケーションプログラム６２を開いて起動するコールドブートについて説明する。
【０１７７】
図１２は、コールドブートの起動の処理の手順を示す図である。
【０１７８】
時刻t0において、ホストCPU１１のリセットが解除されると、ホストCPU１１は、マスクROM１３の予め定めた番地に格納されているブートローダの実行を開始する。ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されている２次ブートローダをSDRAM２９にロードする。ブートローダのジャンプ命令により、ホストCPU１１は、２次ブートローダの実行を開始する。
【０１７９】
２次ブートローダを実行するホストCPU１１は、時刻t1において、NAND型フラッシュメモリ１７に記憶されているオペレーティングシステム１４１およびアプリケーションプログラム１４２のSDRAM２９へのロードを開始する。
【０１８０】
２次ブートローダを実行するホストCPU１１は、リアルタイム処理用CPU１２に実行されるオペレーティングシステム１４１およびアプリケーションプログラム１４２のSDRAM２９へのロードが完了すると、リアルタイム処理用CPU１２のリセットを解除する。
【０１８１】
リセットが解除されたリアルタイム処理用CPU１２は、時刻t2において、SDRAM２９の予め定めた番地からプログラムの命令の実行を開始することで、オペレーティングシステム１４１の実行を開始する。
【０１８２】
さらに、２次ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されているオペレーティングシステム６１およびアプリケーションプログラム６２を、SDRAM２９にロードする。
【０１８３】
オペレーティングシステム６１およびアプリケーションプログラム６２のSDRAM２９へのロードが完了すると、時刻t3において、ホストCPU１１は、SDRAM２９にロードされた電源管理機構７３の実行を開始する。電源管理機構７３を実行するホストCPU１１は、DC−DCコンバータ３４およびバッテリ３５を含む電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを初期化するなどの初期化の処理を行う。
【０１８４】
電源管理機構７３の初期化の処理が完了すると、時刻t4において、ホストCPU１１は、SDRAM２９にロードされたカーネル７１の実行を開始する。カーネル７１を実行するホストCPU１１は、SDRAM２９の記憶空間の大きさ（アドレスの範囲）などを検出して、SDRAM２９などの資源の管理のプロセスのパラメータを初期化するなどの初期化の処理を行う。
【０１８５】
カーネル７１の初期化の処理が完了すると、時刻t5において、ホストCPU１１は、SDRAM２９にロードされたデバイスドライバ７２の初期化の処理を開始する。すなわち、ホストCPU１１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのそれぞれのデバイスを検出して、検出したデバイスにあわせてデバイスドライバ７２のパラメータを初期化するなどの初期化の処理を行う。
【０１８６】
デバイスドライバ７２の初期化の処理が完了すると、ホストCPU１１は、デバイスドライバ７２の初期化の処理が完了したことをリアルタイム処理用CPU１２に通知する。
【０１８７】
リアルタイム処理用CPU１２が、ホストCPU１１からのデバイスドライバ７２の初期化の処理が完了したことの通知を受信すると、リアルタイム処理プログラム１７１を実行することにより実行されるリアルタイムの制御の処理と、ホストCPU１１における処理との通信が開始される。
【０１８８】
また、デバイスドライバ７２の初期化の処理が完了すると、時刻t6において、ホストCPU１１は、SDRAM２９にロードされたアプリケーションプログラム６２の初期化の処理を開始する。ホストCPU１１は、撮影処理または閲覧処理に用いる各種のパラメータをデフォルトの値に設定するなどの、アプリケーションプログラム６２の初期化の処理を行う。
【０１８９】
アプリケーションプログラム６２の初期化の処理が完了すると、ホストCPU１１は、アプリケーションプログラム６２の初期化の処理が完了したことをリアルタイム処理用CPU１２に通知する。アプリケーションプログラム６２の電源管理プログラム８６は、電源管理機構７３から電源の状態を示すパラメータを取得するなどして、電源の状態の監視を開始する。
【０１９０】
さらに、ホストCPU１１は、ウォームブートイメージを生成して、生成したウォームブートイメージをNAND型フラッシュメモリ１７に記憶させる。
【０１９１】
このように、ファームウェアをアップデートするときなど、コールドブートの起動の処理が実行されて、NAND型フラッシュメモリ１７に記憶されているウォームブートイメージが更新される。
【０１９２】
なお、初期化が完了したオペレーティングシステム６１を実行するホストCPU１１が、NAND型フラッシュメモリ１７に記憶されているアプリケーションプログラム６２を、SDRAM２９にロードするようにしてもよい。
【０１９３】
次に、図１３を参照して、動作状態S0から休止状態に遷移する休止の処理の手順の概要を説明する。
【０１９４】
時刻t0において、休止の処理の開始が指示されると、アプリケーションプログラム６２を実行するホストCPU１１は、休止状態に遷移する前に、状態を初期状態S0Nに遷移させる。アプリケーションプログラム６２を実行するホストCPU１１は、サスペンド状態S3に遷移するか、またはハイバネーションS4に遷移するかを決定する。
【０１９５】
また、アプリケーションプログラム６２を実行するホストCPU１１は、撮影した画像のデータを格納するファイルを閉じるなどの終了処理を実行する。
【０１９６】
さらに、時刻t1において、アプリケーションプログラム６２を実行するホストCPU１１は、リアルタイム処理用CPU１２に終了を通知する。
【０１９７】
すると、リアルタイム処理用CPU１２は、図示せぬ光学系を構成するレンズを終了位置に戻したりするなどの終了の処理を開始する。
【０１９８】
また、アプリケーションプログラム６２の電源管理プログラム８６は、決定したサスペンド状態S3またはハイバネーションS4への遷移を指示するコマンドを発行することで、電源管理機構７３に終了を通知する。
【０１９９】
アプリケーションプログラム６２を実行するホストCPU１１による終了の処理が完了すると、時刻t2において、ホストCPU１１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのデバイスを制御するためのプロセスを終了させるなど、デバイスドライバ７２の終了の処理を開始する。
【０２００】
デバイスドライバ７２の終了の処理が完了すると、時刻t3において、ホストCPU１１は、アプリケーションプログラム６２やのデバイスの監視、SDRAM２９などの資源の管理、割りこみ処理、またはプロセス間通信などの所定のプロセスを完了させるカーネル７１の終了の処理を開始する。
【０２０１】
カーネル７１の終了の処理が完了すると、時刻t4において、ホストCPU１１は、休止状態におけるパラメータを設定するなどの電源管理機構７３の終了の処理を開始する。
【０２０２】
リアルタイム処理用CPU１２から終了の処理の完了が通知されると、時刻t5において、電源管理機構７３を実行するホストCPU１１は、シリアルインタフェース１９を介して、エンベデッドコントローラ３３に電源の供給の停止（遮断）を要求する。エンベデッドコントローラ３３は、ホストCPU１１から電源の供給の停止が要求されると、時刻t6において、サスペンド状態S3に遷移する場合、DC−DCコンバータ３４に、SDRAM２９への電源の供給を維持させたまま、ホストCPU１１およびリアルタイム処理用CPU１２への電源の供給を停止（遮断）させ、ハイバネーションS4に遷移する場合、DC−DCコンバータ３４に、SDRAM２９、ホストCPU１１、およびリアルタイム処理用CPU１２への電源の供給を停止（遮断）させる。
【０２０３】
このように、サスペンド状態S3またはハイバネーションS4に遷移して休止することができる。
【０２０４】
次に、ウォームブート、ホットブート、およびコールドブートの起動の処理の詳細をそれぞれ説明する。
【０２０５】
図１４乃至図１６は、ウォームブートの起動の処理の詳細を説明するフローチャートである。ステップＳ１０１において、起動方式決定情報取得プログラム２０３を実行するエンベデッドコントローラ３３は、起動の要因となる入力部３１からの信号を取得する。すなわち、起動方式決定情報取得プログラム２０３は、入力部３１から供給される、起動の要因となる、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップの開閉を示す信号を取得する。起動方式決定情報取得プログラム２０３を実行するエンベデッドコントローラ３３は、取得した信号に応じて、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧、またはレンズキャップを開くことなどの起動のトリガを示す起動要因情報を生成する。
【０２０６】
ステップＳ１０２において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３は、ステップＳ１０１で取得した信号に応じて生成された起動要因情報を内部のメモリに記憶する。すなわち、起動方式決定情報取得プログラム２０３により、起動の要因となる、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧またはレンズキャップの開閉を示す信号が入力部３１から取得されると、電源ボタン、無線LANボタン、若しくはUSBボタンの押圧またはレンズキャップを開くことなどの起動のトリガを示す起動要因情報が生成されるので、起動方式決定情報記憶処理プログラム２０４は、生成された起動要因情報をエンベデッドコントローラ３３の内部のメモリに記憶する。
【０２０７】
ステップＳ１０３において、電源制御プログラム２０１を実行するエンベデッドコントローラ３３は、DC−DCコンバータ３４に、デジタルスチルカメラの各部への電力の供給を開始させる。これにより、ホストCPU１１乃至汎用入出力部３２への電源の供給が開始される。
【０２０８】
ステップＳ１０４において、エンベデッドコントローラ３３は、供給される電源および電源の供給が開始された各部の動作が安定するまで、予め定めた所定の時間ウェイトする。
【０２０９】
ステップＳ１０５において、他CPUリセット制御プログラム２０２を実行するエンベデッドコントローラ３３は、ホストCPU１１のリセットを解除する。例えば、エンベデッドコントローラ３３は、エンベデッドコントローラ３３とホストCPU１１とを接続する、リセット信号を供給するための信号線のそのリセット信号のレベルを変化させることにより、ホストCPU１１のリセットを解除する。
【０２１０】
リセットが解除されると、ステップＳ２０１において、ホストCPU１１は、マスクROM１３のブートローダを起動して、ブートローダの実行を開始する。すなわち、ホストCPU１１は、リセット解除のハードウェア割り込みにより、マスクROM１３の予め定められた番地に格納されている命令を実行することで、ブートローダを起動する。ステップＳ２０２において、ホストCPU１１は、ブートローダを初期化する。
【０２１１】
ステップＳ２０３において、ブートローダを実行するホストCPU１１は、NAND型フラッシュメモリ１７に記憶されている２次ブートローダ１０１をSDRAM２９にロードする。ステップＳ２０４において、ホストCPU１１は、ブートローダに含まれる命令である、２次ブートローダ１０１へのジャンプの命令を実行して、手続きは、２次ブートローダ１０１にジャンプする。その結果、ホストCPU１１は、２次ブートローダ１０１の実行を開始する。
【０２１２】
なお、２次ブートローダ１０１をマスクROM１３に記憶させ、マスクROM１３に記憶されている２次ブートローダ１０１にジャンプするようにしてもよい。
【０２１３】
ステップＳ２０５において、ホストCPU１１は、２次ブートローダ１０１を初期化する。２次ブートローダ１０１には、シリアルインタフェース１９のドライバが含まれているので、シリアルインタフェース１９を介して、ホストCPU１１とエンベデッドコントローラ３３との通信が可能になる。
【０２１４】
ステップＳ２０６において、２次ブートローダ１０１の起動方式決定情報取得プログラム１２１を実行するホストCPU１１は、シリアルインタフェース１９を介して、エンベデッドコントローラ３３に、起動方式決定情報の要求を送信する。
【０２１５】
ステップＳ１０６において、起動方式決定情報提供プログラム２０５を実行するエンベデッドコントローラ３３は、シリアルインタフェース１９を介して、ホストCPU１１から送信されてくる起動方式決定情報の要求を受信する。ステップＳ１０７において、起動方式決定情報提供プログラム２０５を実行するエンベデッドコントローラ３３は、エンベデッドコントローラ３３の内部のメモリに記憶されている起動方式決定情報を、シリアルインタフェース１９を介してホストCPU１１に送信する。
【０２１６】
ステップＳ２０７において、２次ブートローダ１０１の起動方式決定情報取得プログラム１２１を実行するホストCPU１１は、シリアルインタフェース１９を介して、エンベデッドコントローラ３３から送信されてくる起動方式決定情報を受信する。
【０２１７】
ステップＳ２０８において、２次ブートローダ１０１の起動方式決定情報取得プログラム１２１を実行するホストCPU１１は、受信した起動方式決定情報をSDRAM２９に記憶させる。この場合、ホストCPU１１は、SDRAM２９の記憶領域のうちの、予め定めた領域に起動方式決定情報を記憶させる。
【０２１８】
ステップＳ２０９において、２次ブートローダ１０１の起動方式決定プログラム１２２を実行するホストCPU１１は、ステップＳ２０７の受信により取得した起動方式決定情報を基に、起動の方式を決定する。この場合、ウォームブートの起動の方式に、起動の方式が決定される。なお、起動方式決定プログラム１２２は、休止状態情報がサスペンド状態S3を示すとともにバッテリ着脱情報がバッテリが取り外されたことを示す場合、または休止状態情報がハイバネーションS4を示す場合、起動の方式をウォームブートの起動の方式に決定する。
【０２１９】
ステップＳ２１０において、２次ブートローダ１０１を実行するホストCPU１１は、汎用入出力部３２を初期化する。
【０２２０】
ステップＳ２１１において、２次ブートローダ１０１の設定値読み出しプログラム１２３を実行するホストCPU１１は、起動における復帰において必要となる、シャッタスピードや露出、ズーム、または撮影する画像のサイズや符号化する際の圧縮率などの設定値をNAND型フラッシュメモリ１７からSDRAM２９にロードする。
【０２２１】
ステップＳ２１２において、２次ブートローダ１０１の他CPUプログラム読み出しプログラム１２４を実行するホストCPU１１は、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２を、NAND型フラッシュメモリ１７からSDRAM２９にロードする。
【０２２２】
ステップＳ２１３において、２次ブートローダ１０１を実行するホストCPU１１は、リアルタイム処理用CPU１２のリセットを解除する。
【０２２３】
リセットが解除されると、ステップＳ３０１において、リアルタイム処理用CPU１２は、SDRAM２９にロードされているオペレーティングシステム１４１の実行を開始する。すなわち、例えば、リアルタイム処理用CPU１２は、リセット解除のハードウェア割り込みまたはソフトウェア割り込みにより、SDRAM２９の予め定められた番地に格納されている命令を実行することで、オペレーティングシステム１４１の実行を開始する。ステップＳ３０２において、ホストCPU１１は、オペレーティングシステム１４１を初期化する。
【０２２４】
ステップＳ３０３において、オペレーティングシステム１４１の起動方式決定情報取得プログラム１６１を実行するリアルタイム処理用CPU１２は、SDRAM２９から、ステップＳ２０８において記憶された起動方式決定情報を読み出す。ステップＳ３０４において、オペレーティングシステム１４１の起動方式決定プログラム１６２を実行するリアルタイム処理用CPU１２は、ステップＳ２０９と同様の処理で、ステップＳ３０３で読み出した起動方式決定情報を基に、起動の方式を決定する。この場合、ウォームブートの起動の方式に、起動の方式が決定される。
【０２２５】
ステップＳ３０５において、オペレーティングシステム１４１を実行するリアルタイム処理用CPU１２は、アプリケーションプログラム１４２を起動する。ステップＳ３０６において、リアルタイム処理用CPU１２は、アプリケーションプログラム１４２を初期化する。
【０２２６】
ステップＳ３０７において、アプリケーションプログラム１４２を実行するリアルタイム処理用CPU１２は、グラフィックコントローラ２１を制御して、LCD２０の表示を開始させ、図示せぬスピーカまたはブザーに起動音を出力させる。
【０２２７】
ステップＳ３０８において、アプリケーションプログラム１４２の起動画面表示プログラム１７３を実行するリアルタイム処理用CPU１２は、グラフィックコントローラ２１を制御して、LCD２０に、起動を示す起動画面を表示させる。
【０２２８】
ステップＳ３０９において、アプリケーションプログラム１４２のGUI処理プログラム１７２を実行するリアルタイム処理用CPU１２は、リアルタイム処理用CPU１２がホストCPU１１と共用する入力部３１から使用者の指示が取得されるユーザインタフェースの処理であって、アプリケーションプログラム６２の機能に比較し少ない機能の、すなわち機能の限定されたユーザインタフェースの処理を開始する。
【０２２９】
ステップＳ３１０において、アプリケーションプログラム１４２のリアルタイム処理プログラム１７１を実行するリアルタイム処理用CPU１２は、図示せぬ光学系、CCD１４、アナログフロントエンド１５、および信号処理部１６に対するリアルタイムの制御の処理を開始する。
【０２３０】
なお、ステップＳ３１０において、起動方式決定情報のうちの起動要因情報を参照して、レンズキャップが開かれたことにより起動された場合、リアルタイムの制御の処理として、図示せぬ光学系、CCD１４、アナログフロントエンド１５、および信号処理部１６の初期化の処理を行うようにしてもよい。
【０２３１】
リアルタイム処理用CPU１２により実行されるステップＳ３０１乃至ステップＳ３１０と並行して、ホストCPU１１によりステップＳ２１４乃至ステップＳ２１８が実行される。すなわち、ステップＳ２１４において、２次ブートローダ１０１のウォームブートイメージ読み出しプログラム１２５を実行するホストCPU１１は、ウォームブートイメージを、NAND型フラッシュメモリ１７からSDRAM２９にロードする。
【０２３２】
ステップＳ２１５において、ホストCPU１１は、２次ブートローダ１０１に含まれる命令である、カーネル７１へのジャンプの命令を実行して、手続きは、カーネル７１にジャンプする。その結果、ホストCPU１１は、オペレーティングシステム６１の実行を開始する。
【０２３３】
ステップＳ２１６において、オペレーティングシステム６１を実行するホストCPU１１は、DC−DCコンバータ３４およびバッテリ３５などの電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを修正するなどの電源管理機構７３の復帰の処理を実行する。
【０２３４】
ステップＳ２１７において、オペレーティングシステム６１を実行するホストCPU１１は、SDRAM２９の記憶空間の占有の状態などを検出して、SDRAM２９などの資源の管理のプロセスのパラメータを修正するなどのカーネル７１の復帰の処理を実行する。
【０２３５】
ステップＳ２１８において、オペレーティングシステム６１を実行するホストCPU１１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのそれぞれのデバイスの状態を検出して、検出したデバイスの状態にあわせてデバイスドライバ７２のパラメータを修正するなどのデバイスドライバ７２の復帰の処理を実行する。
【０２３６】
ステップＳ２１９において、オペレーティングシステム６１を実行するホストCPU１１は、バスを介して、リアルタイム処理用CPU１２に、デバイスドライバ７２の復帰処理の完了の通知を送信する。
【０２３７】
ステップＳ３１１において、オペレーティングシステム１４１を実行するリアルタイム処理用CPU１２は、バスを介して、ホストCPU１１から送信されてくる、デバイスドライバ７２の復帰処理の完了の通知を受信する。
【０２３８】
また、ステップＳ２２０において、オペレーティングシステム６１を実行するホストCPU１１は、アプリケーションプログラム６２の実行を開始する。ステップＳ２２１において、ホストCPU１１は、シャッタスピード、露出、またはズームなどの設定値を設定するなどの、アプリケーションプログラム６２の復帰の処理を実行する。
【０２３９】
なお、ステップＳ２２１の後、デジタルスチルカメラの状態は、初期状態S0Nとなる。
【０２４０】
ステップＳ２２２において、ホストCPU１１は、バスを介して、リアルタイム処理用CPU１２に、アプリケーションプログラム６２の復帰処理の完了の通知を送信する。
【０２４１】
ステップＳ３１２において、リアルタイム処理用CPU１２は、バスを介して、ホストCPU１１から送信されてくる、アプリケーションプログラム６２の復帰処理の完了の通知を受信する。
【０２４２】
ステップＳ３１３において、オペレーティングシステム１４１のアプリケーション起動終了制御プログラム１６３を実行するリアルタイム処理用CPU１２は、アプリケーションプログラム１４２のGUI処理プログラム１７２を終了させることにより、機能の限定されたユーザインタフェースの処理を終了させて、ウォームブートの起動の処理は終了する。
【０２４３】
このように、ウォームブートの起動の処理により、休止状態から、初期状態S0Nに迅速に遷移することができる。
【０２４４】
次に、図１７乃至図１９のフローチャートを参照して、ホットブートの起動の処理の詳細を説明する。
【０２４５】
エンベデッドコントローラ３３によるステップＳ１３１乃至ステップＳ１３７は、それぞれ、図１４のステップＳ１０１乃至ステップＳ１０７のそれぞれと同様なので、その説明は省略する。
【０２４６】
ホストCPU１１によるステップＳ２３１乃至ステップＳ２３８は、それぞれ、図１４のステップＳ２０１乃至ステップＳ２０８のそれぞれと同様なので、その説明は省略する。
【０２４７】
ステップＳ２３９において、２次ブートローダ１０１の起動方式決定プログラム１２２を実行するホストCPU１１は、ステップＳ２３７の受信により取得した起動方式決定情報を基に、起動の方式を決定する。この場合、ホットブートの起動の方式に、起動の方式が決定される。なお、起動方式決定プログラム１２２は、休止状態情報がサスペンド状態S3を示すとともにバッテリ着脱情報がバッテリが取り外されなかったことを示す場合、起動の方式をホットブートの起動の方式に決定する。
【０２４８】
ホストCPU１１によるステップＳ２４０およびステップＳ２４１は、それぞれ、図１４または図１５のステップＳ２１０およびステップＳ２１１のそれぞれと同様なので、その説明は省略する。
【０２４９】
ステップＳ２４２において、２次ブートローダ１０１を実行するホストCPU１１は、リアルタイム処理用CPU１２のリセットを解除する。
【０２５０】
リアルタイム処理用CPU１２によるステップＳ３３１乃至ステップＳ３３３は、それぞれ、図１５のステップＳ３０１乃至ステップＳ３０３のそれぞれと同様なので、その説明は省略する。
【０２５１】
ステップＳ３３４において、オペレーティングシステム１４１の起動方式決定プログラム１６２を実行するリアルタイム処理用CPU１２は、ステップＳ２３９と同様の処理で、ステップＳ３３３で読み出した起動方式決定情報を基に、起動の方式を決定する。この場合、ホットブートの起動の方式に、起動の方式が決定される。
【０２５２】
リアルタイム処理用CPU１２によるステップＳ３３５乃至ステップＳ３３８は、それぞれ、図１５または図１６のステップＳ３０５乃至ステップＳ３０８のそれぞれと同様なので、その説明は省略する。
【０２５３】
ステップＳ３３９において、アプリケーションプログラム１４２のリアルタイム処理プログラム１７１を実行するリアルタイム処理用CPU１２は、図示せぬ光学系、CCD１４、アナログフロントエンド１５、および信号処理部１６に対するリアルタイムの制御の処理を開始する。
【０２５４】
すなわち、この場合、リアルタイム処理用CPU１２による、GUI処理プログラム１７２の実行は抑制され、これにより、リアルタイム処理用CPU１２がホストCPU１１と共用する入力部３１から使用者の指示が取得されるユーザインタフェースの処理であって、アプリケーションプログラム６２の機能に比較し少ない機能の、すなわち機能の限定されたユーザインタフェースの処理の実行が抑制される。
【０２５５】
ホットブートの起動においては、ホストCPU１１が極めて迅速に起動するので、リアルタイム処理用CPU１２がGUI処理プログラム１７２を実行しないようにしたほうが、結果的に、より迅速に起動できるようになる。
【０２５６】
リアルタイム処理用CPU１２により実行されるステップＳ３３１乃至ステップＳ３３９と並行して、ホストCPU１１によりステップＳ２４３乃至ステップＳ２４６が実行される。すなわち、テップＳ２４３において、ホストCPU１１は、２次ブートローダ１０１に含まれる命令である、カーネル７１へのジャンプの命令を実行して、手続きは、カーネル７１にジャンプする。その結果、ホストCPU１１は、オペレーティングシステム６１の実行を開始する。
【０２５７】
ホストCPU１１によるステップＳ２４４乃至ステップＳ２４６は、それぞれ、図１５または図１６のステップＳ２１６乃至ステップＳ２１８のそれぞれと同様なのでその説明は省略する。
【０２５８】
さらに、ホストCPU１１によるステップＳ２４７乃至ステップＳ２５０は、それぞれ、図１６のステップＳ２１９乃至ステップＳ２２２のそれぞれと同様なのでその説明は省略する。また、リアルタイム処理用CPU１２によるステップＳ３４０およびステップＳ３４１は、それぞれ、図１６のステップＳ３１１およびステップＳ３４１のそれぞれと同様なのでその説明は省略する。
【０２５９】
ステップＳ２５０の後のステップＳ２５１において、アプリケーションプログラム６２の状態遷移処理プログラム８５を実行するホストCPU１１は、SDRAM２９に記憶されている起動方式決定情報のうちの起動要因情報を参照して、デジタルスチルカメラの状態を、起動要因に応じたアプリケーションの実行状態に遷移させて、ホットブートの起動の処理は終了する。例えば、ステップＳ２５１において、状態遷移処理プログラム８５は、起動要因が入力部３１の電源ボタンの押圧である場合、閲覧処理プログラム８２を起動させて、デジタルスチルカメラの状態を閲覧処理実行状態に遷移させる。また、例えば、ステップＳ２５１において、状態遷移処理プログラム８５は、起動要因がレンズキャップを開くことである場合、撮影処理プログラム８１を起動させて、デジタルスチルカメラの状態を撮影処理実行状態に遷移させる。
【０２６０】
このように、ホットブートの起動の処理により、極めて迅速に起動すると共に、動作状態S0のうち、起動要因に応じた処理を実行する状態に遷移することができる。
【０２６１】
次に、図２０乃至図２２のフローチャートを参照して、デジタルスチルカメラを出荷する前に工場で実行されるか、または、いわゆるファームウェアをアップデートするときに実行されるコールドブートの起動の処理の詳細を説明する。
【０２６２】
エンベデッドコントローラ３３によるステップＳ１６１乃至ステップＳ１６７は、それぞれ、図１４のステップＳ１０１乃至ステップＳ１０７のそれぞれと同様なので、その説明は省略する。
【０２６３】
ホストCPU１１によるステップＳ２６１乃至ステップＳ２６８は、それぞれ、図１４のステップＳ２０１乃至ステップＳ２０８のそれぞれと同様なので、その説明は省略する。
【０２６４】
ステップＳ２６９において、２次ブートローダ１０１の起動方式決定プログラム１２２を実行するホストCPU１１は、ステップＳ２６７の受信により取得した起動方式決定情報を基に、起動の方式を決定する。この場合、コールドブートの起動の方式に、起動の方式が決定される。
【０２６５】
例えば、ステップＳ２６９において、起動方式決定プログラム１２２を実行するホストCPU１１は、休止状態情報に含まれるイメージ作成フラグを参照して、イメージ作成フラグがセットされている場合、すなわち、イメージ作成フラグが立っている場合、ウォームブートイメージを作成する必要があるので、コールドブートの起動の方式に、起動の方式を決定する。
【０２６６】
なお、イメージ作成フラグは、アップデートされたファームウェアが取得され、使用者からファームウェアのアップデートが指示された場合など、後述する休止の処理において、セットされる。
【０２６７】
ホストCPU１１によるステップＳ２７０乃至ステップＳ２７３は、それぞれ、図１４または図１５のステップＳ２１０乃至ステップＳ２１３のそれぞれと同様なので、その説明は省略する。
【０２６８】
リアルタイム処理用CPU１２によるステップＳ３６１乃至ステップＳ３６３は、それぞれ、図１５のステップＳ３０１乃至ステップＳ３０３のそれぞれと同様なので、その説明は省略する。
【０２６９】
ステップＳ３６４において、オペレーティングシステム１４１の起動方式決定プログラム１６２を実行するリアルタイム処理用CPU１２は、ステップＳ２６９と同様の処理で、ステップＳ３６３で読み出した起動方式決定情報を基に、起動の方式を決定する。この場合、コールドブートの起動の方式に、起動の方式が決定される。
【０２７０】
リアルタイム処理用CPU１２によるステップＳ３６５およびステップＳ３６６は、それぞれ、図１５のステップＳ３０５およびステップＳ３０６のそれぞれと同様なので、その説明は省略する。
【０２７１】
ステップＳ３６７において、アプリケーションプログラム１４２を実行するリアルタイム処理用CPU１２は、グラフィックコントローラ２１を制御して、LCD２０に、ファームウェアアップデート中である旨を表示させる。
【０２７２】
このようにすることで、使用者は、ファームウェアのアップデートが行われていることを知ることができる。
【０２７３】
仮に、ファームウェアアップデート中である旨の表示の制御をホストCPU１１に行わせると、ファームウェアアップデート中である旨を表示させるウォームブートイメージが生成されてしまうが、ファームウェアアップデート中である旨の表示の制御を、リアルタイム処理用CPU１２が行うので、生成されたウォームブートイメージを用いて、ウォームブートの起動の処理が実行されても、ファームウェアアップデート中である旨が表示されることはない。
【０２７４】
ステップＳ３６８において、アプリケーションプログラム１４２のリアルタイム処理プログラム１７１を実行するリアルタイム処理用CPU１２は、図示せぬ光学系、CCD１４、アナログフロントエンド１５、および信号処理部１６に対するリアルタイムの制御の処理を開始する。
【０２７５】
すなわち、この場合、リアルタイム処理用CPU１２による、GUI処理プログラム１７２の実行は抑制され、これにより、リアルタイム処理用CPU１２がホストCPU１１と共用する入力部３１から使用者の指示が取得されるユーザインタフェースの処理であって、アプリケーションプログラム６２の機能に比較し少ない機能の、すなわち機能の限定されたユーザインタフェースの処理の実行が抑制される。また、この場合、リアルタイム処理用CPU１２による、起動画面表示プログラム１７３の実行は抑制され、これにより、LCD２０への、起動を示す起動画面の表示が抑制される。
【０２７６】
リアルタイム処理用CPU１２により実行されるステップＳ３６１乃至ステップＳ３６８と並行して、ホストCPU１１によりステップＳ２７４乃至ステップＳ２７８が実行される。すなわち、ステップＳ２７４において、２次ブートローダ１０１を実行するホストCPU１１は、オペレーティングシステム６１を、NAND型フラッシュメモリ１７からSDRAM２９にロードする。
【０２７７】
ステップＳ２７５において、ホストCPU１１は、２次ブートローダ１０１に含まれる命令である、カーネル７１へのジャンプの命令を実行して、手続きは、カーネル７１にジャンプする。その結果、ホストCPU１１は、オペレーティングシステム６１の実行を開始する。
【０２７８】
ステップＳ２７６において、オペレーティングシステム６１の電源管理機構７３を実行するホストCPU１１は、DC−DCコンバータ３４およびバッテリ３５などの電源の状態を検出して、検出した電源の状態にあわせて内部のパラメータを初期化するなどして、電源管理機構７３を初期化する。
【０２７９】
ステップＳ２７７において、オペレーティングシステム６１のカーネル７１を実行するホストCPU１１は、SDRAM２９の記憶空間の占有の状態などを検出して、SDRAM２９などの資源の管理のプロセスのパラメータを初期化するなどして、カーネル７１を初期化する。
【０２８０】
ステップＳ２７８において、オペレーティングシステム６１を実行するホストCPU１１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのそれぞれのデバイスを検出すると共にその状態を検出して、その結果に応じてデバイスドライバ７２のパラメータを初期化するなどして、デバイスドライバ７２を初期化する。
【０２８１】
ステップＳ２７９において、オペレーティングシステム６１を実行するホストCPU１１は、バスを介して、リアルタイム処理用CPU１２に、デバイスドライバ７２の初期化の完了の通知を送信する。
【０２８２】
ステップＳ３６９において、オペレーティングシステム１４１を実行するリアルタイム処理用CPU１２は、バスを介して、ホストCPU１１から送信されてくる、デバイスドライバ７２の初期化の完了の通知を受信する。
【０２８３】
また、ステップＳ２８０において、オペレーティングシステム６１を実行するホストCPU１１は、アプリケーションプログラム６２を、NAND型フラッシュメモリ１７からSDRAM２９にロードする。ステップＳ２８１において、オペレーティングシステム６１を実行するホストCPU１１は、アプリケーションプログラム６２の実行を開始する。
【０２８４】
ステップＳ２８２において、ホストCPU１１は、アプリケーションプログラム６２を初期化する。なお、ステップＳ２８２の後、状態は、初期状態S0Nとなる。
【０２８５】
ステップＳ２８３において、ホストCPU１１は、バスを介して、リアルタイム処理用CPU１２に、アプリケーションプログラム６２の初期化の完了の通知を送信する。
【０２８６】
ステップＳ３７０において、リアルタイム処理用CPU１２は、バスを介して、ホストCPU１１から送信されてくる、アプリケーションプログラム６２の初期化の完了の通知を受信する。
【０２８７】
ステップＳ２８４において、休止状態情報提供プログラム７５を実行するホストCPU１１は、シリアルインタフェース１９を介して、エンベデッドコントローラ３３に、イメージ作成フラグのクリアの要求を送信する。
【０２８８】
ステップＳ１６８において、起動方式決定情報取得プログラム２０３を実行するエンベデッドコントローラ３３は、シリアルインタフェース１９を介して、ホストCPU１１から送信されてくるイメージ作成フラグのクリアの要求を受信する。
【０２８９】
ステップＳ１６９において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３は、休止状態情報に含まれるイメージ作成フラグをクリアする。
【０２９０】
ステップＳ２８５において、オペレーティングシステム６１のウォームブートイメージ生成プログラム７８を実行するホストCPU１１は、SDRAM２９に記憶されているプログラムおよびデータを読み出して、ウォームブートイメージを生成する。すなわち、ウォームブートイメージ生成プログラム７８は、動作状態S0のうちの初期状態S0NにおいてSDRAM２９にロードされているプログラムおよびデータをそのままデータとすることにより、ウォームブートイメージを生成する。
【０２９１】
ステップＳ２８６において、オペレーティングシステム６１のウォームブートイメージ生成プログラム７８を実行するホストCPU１１は、ステップＳ２８５で生成したウォームブートイメージをNAND型フラッシュメモリ１７に記憶させて、コールドブートの起動の処理は終了する。例えば、ステップＳ２８６において、ウォームブートイメージ生成プログラム７８は、NAND型フラッシュメモリ１７にこれまで記憶していたウォームブートイメージに、生成したウォームブートイメージを上書きするように、生成したウォームブートイメージをNAND型フラッシュメモリ１７に記憶させる。
【０２９２】
このように、コールドブートの起動の処理により、アップデートされたファームウェアを含むウォームブートイメージが生成されて、NAND型フラッシュメモリ１７に記憶される。
【０２９３】
なお、ステップＳ２８６の後、即座に、次に説明する終了の処理を実行するようにしてもよい。
【０２９４】
また、ウォームブートイメージが正常に生成されたことを確認した後に、ホストCPU１１が、シリアルインタフェース１９を介して、エンベデッドコントローラ３３に、イメージ作成フラグのクリアの要求を送信し、エンベデッドコントローラ３３が、イメージ作成フラグのクリアの要求を受信し、休止状態情報に含まれるイメージ作成フラグをクリアするようにしてもよい。このようにすることで、ウォームブートイメージが正常に生成された場合にのみ、イメージ作成フラグがクリアされることになる。すなわち、ウォームブートイメージがより確実に生成される。
【０２９５】
同様に、ウォームブートイメージがNAND型フラッシュメモリ１７に正常に記憶されてから、イメージ作成フラグがクリアされるようにしてもよいことは当然である。
【０２９６】
さらにまた、コールドブートの起動の処理が完了してから、休止し、ステップＳ２８５において生成されたウォームブートイメージを用いて、ウォームブートの方式で起動し、正しく起動された場合、イメージ作成フラグがクリアされるようにしてもよい。このようにすることで、ウォームブートイメージを用いて正常に起動された場合にのみ、イメージ作成フラグがクリアされることになる。
【０２９７】
例えば、休止状態情報にイメージ作成フラグと共に含まれるイメージ生成済みフラグであって、ウォームブートイメージが生成されたか否かを示すイメージ生成済みフラグが、ウォームブートイメージが生成された場合、ウォームブートイメージが生成されたことを示すように、セットされ、そして、次に、起動する場合、セットされているイメージ生成済みフラグとセットされているイメージ作成フラグとが参照されて、起動の方式がウォームブートの起動の方式に決定され、オペレーティングシステム６１の復帰の処理が完了して、アプリケーションプログラム６２の復帰処理が完了した後に、イメージ生成済みフラグとイメージ作成フラグとがクリアされるようにしてもよい。
【０２９８】
なお、イメージ作成フラグとイメージ生成済みフラグとが用いられる場合、イメージ生成済みフラグがリセットされ、イメージ作成フラグがセットされているとき、起動の方式はコールドブートの起動の方式に決定され、イメージ生成済みフラグがリセットされ、イメージ作成フラグがリセットされているとき、起動の方式は、休止する場合に決定された休止状態と、休止状態におけるバッテリ３５の着脱の履歴とから決定される。
【０２９９】
次に、図２３のフローチャートを参照して、休止の処理の例を説明する。
【０３００】
ステップＳ５０１において、アプリケーションプログラム６２の状態遷移処理プログラム８５を実行するホストCPU１１は、撮影処理プログラム８１、閲覧処理プログラム８２、設定処理プログラム８３、またはUSBマスストレージクラス処理プログラム８４の実行を終了させることにより、デジタルスチルカメラの状態を動作状態S0のうちの初期状態S0Nに遷移させる。
【０３０１】
ステップＳ５０２において、オペレーティングシステム６１の休止状態決定プログラム７４を実行するホストCPU１１は、遷移しようとする休止状態を決定する。すなわち、休止状態決定プログラム７４は、遷移しようとする休止状態をサスペンド状態S3またはハイバネーションS4のいずれか一方に決定する。
【０３０２】
例えば、ステップＳ５０２において、休止状態決定プログラム７４は、バッテリ３５の出力電圧が予め定めた閾値以上であり、かつ、入力部３１の電源ボタンが押圧された場合、または、バッテリ３５の出力電圧が予め定めた閾値以上であり、かつ、レンズキャップが閉じられた場合、遷移しようとする休止状態をサスペンド状態S3に決定する。
【０３０３】
例えば、ステップＳ５０２において、休止状態決定プログラム７４は、バッテリ３５の出力電圧が予め定めた閾値未満である場合、または電源ボタンが予め決められた時間より長く継続して押圧された場合、遷移しようとする休止状態をハイバネーションS4に決定する。
【０３０４】
ステップＳ５０３において、オペレーティングシステム６１の休止状態情報提供プログラム７５を実行するホストCPU１１は、シリアルインタフェース１９を介して、エンベデッドコントローラ３３に、遷移しようとする休止状態を示す休止状態情報を送信する。
【０３０５】
ステップＳ６０１において、起動方式決定情報取得プログラム２０３を実行するエンベデッドコントローラ３３は、シリアルインタフェース１９を介して、ホストCPU１１から送信されてきた休止状態情報を受信する。ステップＳ６０２において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３は、ステップＳ６０１で受信した休止状態情報をエンベデッドコントローラ３３の内部のメモリに記憶する。
【０３０６】
なお、アップデートされたファームウェア、すなわちオペレーティングシステム６１またはアプリケーションプログラム６２が取得され、使用者からファームウェアのアップデートが指示された場合、ステップＳ５０３において、セットされたイメージ作成フラグを含む休止状態情報が送信され、ステップＳ６０１において、セットされたイメージ作成フラグを含む休止状態情報が受信され、ステップＳ６０２において、セットされたイメージ作成フラグを含む休止状態情報が、エンベデッドコントローラ３３の内部のメモリに記憶される。
【０３０７】
一方、アップデートされたファームウェアが取得されないか、またはアップデートされたファームウェアが取得されても、使用者からファームウェアのアップデートが指示されない場合、ステップＳ５０３において、クリアされたイメージ作成フラグを含む休止状態情報が送信され、ステップＳ６０１において、クリアされたイメージ作成フラグを含む休止状態情報が受信され、ステップＳ６０２において、クリアされたイメージ作成フラグを含む休止状態情報が、エンベデッドコントローラ３３の内部のメモリに記憶される。
【０３０８】
ステップＳ６０３において、バッテリ着脱検出プログラム２０６を実行するエンベデッドコントローラ３３は、DC−DCコンバータ３４の出力電圧を検出することにより、バッテリ３５の着脱を検出する。そして、起動方式決定情報取得プログラム２０３を実行するエンベデッドコントローラ３３は、バッテリ３５の着脱の検出の結果に応じたバッテリ着脱情報を生成する。
【０３０９】
ステップＳ６０４において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３は、バッテリ３５の着脱の検出の結果に応じたバッテリ着脱情報を内部のメモリに記憶する。すなわち、ステップＳ６０４において、起動方式決定情報記憶処理プログラム２０４は、バッテリ３５が取り外されている場合、バッテリ３５が取り外されたことを示すバッテリ着脱情報を内部のメモリに記憶し、バッテリ３５が装着されている場合、バッテリ３５が取り外されていないこと（取り外されていなかったこと）を示すバッテリ着脱情報を内部のメモリに記憶する。
【０３１０】
一方、ステップＳ５０４において、アプリケーションプログラム６２を実行するホストCPU１１は、アプリケーションプログラム６２の終了処理を実行する。例えば、ステップＳ５０４において、アプリケーションプログラム６２は、撮影した画像のデータを格納するファイルを閉じるなどの終了処理を実行する。
【０３１１】
ステップＳ５０５において、アプリケーションプログラム６２を実行するホストCPU１１は、バスを介して、リアルタイム処理用CPU１２に終了の通知を送信する。
【０３１２】
ステップＳ７０１において、オペレーティングシステム１４１を実行するリアルタイム処理用CPU１２は、バスを介して、ホストCPU１１から送信されてくる終了の通知を受信する。
【０３１３】
ステップＳ７０２において、オペレーティングシステム１４１およびアプリケーションプログラム１４２を実行するリアルタイム処理用CPU１２は、終了処理を実行し、ステップＳ７０３において、オペレーティングシステム１４１を実行するリアルタイム処理用CPU１２は、バスを介して、ホストCPU１１に終了処理の開始の通知を送信する。
【０３１４】
例えば、ステップＳ７０２において、アプリケーションプログラム１４２のリアルタイム処理プログラム１７１は、図示せぬ光学系を構成するレンズを終了位置に戻すなどする。
【０３１５】
ステップＳ５０６において、アプリケーションプログラム６２を実行するホストCPU１１は、バスを介して、リアルタイム処理用CPU１２から送信されてくる終了処理の開始の通知を受信する。
【０３１６】
そして、リアルタイム処理用CPU１２の終了処理が完了すると、ステップＳ７０４において、オペレーティングシステム１４１を実行するリアルタイム処理用CPU１２は、バスを介して、ホストCPU１１に終了処理の完了の通知を送信してくるので、ステップＳ５０７において、オペレーティングシステム６１を実行するホストCPU１１は、バスを介して、リアルタイム処理用CPU１２から送信されてきた終了処理の完了の通知を受信する。
【０３１７】
なお、リアルタイム処理用CPU１２は、ホストCPU１１に終了処理の完了の通知を送信した後、終了処理の完了の通知を受信したホストCPU１１からの制御によりリセットされ、そのリセット状態が維持されるか、または、リアルタイム処理用CPU１２は、無限ループの命令を実行する。
【０３１８】
ステップＳ５０８において、オペレーティングシステム６１の設定値記憶処理プログラム７７を実行するホストCPU１１は、起動における復帰において必要となる設定値を、NAND型フラッシュメモリ１７に記憶させる。NAND型フラッシュメモリ１７に記憶される設定値は、シャッタスピードや露出、ズーム、撮影する画像のサイズや符号化する際の圧縮率、またはホストCPU１１の内部の各レジスタの値などを示すものである。また、ステップＳ５０８において、NAND型フラッシュメモリ１７に記憶させられる設定値には、オペレーティングシステム１４１およびアプリケーションプログラム１４２の変数としてSDRAM２９に記憶され管理されている、リアルタイム処理用CPU１２の内部の各レジスタの値やリアルタイム処理用CPU１２の内部のインタフェースの各レジスタの値が含まれている。
【０３１９】
ステップＳ５０９において、オペレーティングシステム６１を実行するホストCPU１１は、デバイスドライバ７２の終了の処理を実行する。すなわち、オペレーティングシステム６１は、信号処理部１６、シリアルインタフェース１９、グラフィックコントローラ２１、メモリカードインタフェース２３、コントローラ２５、IDEインタフェース２８、および汎用入出力部３２などのデバイスを制御するためのプロセスを終了させるなど、デバイスドライバ７２の終了の処理を実行する。
【０３２０】
デバイスドライバ７２の終了の処理の一部として、ステップＳ５１０において、オペレーティングシステム６１の他CPUプログラム読み出しプログラム７６を実行するホストCPU１１は、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２を、NAND型フラッシュメモリ１７からSDRAM２９にロードする。
【０３２１】
このようにすることで、次にホットブートの起動の処理が実行される場合、その起動の処理において、オペレーティングシステム１４１およびアプリケーションプログラム１４２をSDRAM２９にロードする必要がなくなり、更により迅速に起動することができるようになる。
【０３２２】
リアルタイム処理用CPU１２が終了処理を実行している間は、オペレーティングシステム１４１およびアプリケーションプログラム１４２が実行され、オペレーティングシステム１４１およびアプリケーションプログラム１４２の内部変数などが変更される。従って、オペレーティングシステム１４１およびアプリケーションプログラム１４２のSDRAM２９へのロードは、リアルタイム処理用CPU１２の終了処理が完了してから、行われる。
【０３２３】
なお、ホストCPU１１が、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２を、NAND型フラッシュメモリ１７からSDRAM２９にロードする前に、リアルタイム処理用CPU１２をリセットし、リアルタイム処理用CPU１２のリセット状態を維持させるようにした場合、リアルタイム処理用CPU１２に無限ループの命令を実行させる場合に比較して、より安全にオペレーティングシステム１４１およびアプリケーションプログラム１４２をSDRAM２９にロードし、起動において実行させることができる。すなわち、SDRAM２９にロードされたオペレーティングシステム１４１およびアプリケーションプログラム１４２が、次に起動するまでに、リアルタイム処理用CPU１２により変更されてしまう可能性をより少なくすることができる。
【０３２４】
リアルタイム処理用CPU１２をリセット状態とせず、リアルタイム処理用CPU１２に無限ループの命令を実行させる場合、オペレーティングシステム１４１およびアプリケーションプログラム１４２がロードされる記憶領域以外の記憶領域に、リアルタイム処理用CPU１２により実行される無限ループの命令が格納される。例えば、リアルタイム処理用CPU１２は、SDRAM２９の記憶領域のうちの、オペレーティングシステム１４１およびアプリケーションプログラム１４２がロードされる記憶領域以外の記憶領域に格納されている、無限ループの命令を実行するか、または、マスクROM１３に格納されている無限ループの命令を実行する。
【０３２５】
このように、リアルタイム処理用CPU１２が終了処理を完了すると、リアルタイム処理用CPU１２のリセット状態が維持されるか、またはリアルタイム処理用CPU１２が無限ループの命令を実行するので、次にホットブートの方式により起動されるまでの間に、SDRAM２９にロードされたオペレーティングシステム１４１およびアプリケーションプログラム１４２が変更されてしまうことを防止することができる。
【０３２６】
なお、ステップＳ５０２において、休止状態がハイバネーションS4に決定された場合、ステップＳ５１０をスキップするようにしてもよい。
【０３２７】
デバイスドライバ７２の終了の処理が完了すると、ステップＳ５１１において、オペレーティングシステム６１を実行するホストCPU１１は、カーネル７１の終了の処理を実行する。例えば、ステップＳ５１１において、オペレーティングシステム６１は、アプリケーションプログラム６２やのデバイスの監視、SDRAM２９などの資源の管理、またはプロセス間通信などの所定のプロセスを完了させる。
【０３２８】
カーネル７１の終了の処理が完了すると、ステップＳ５１２において、オペレーティングシステム６１を実行するホストCPU１１は、休止状態におけるパラメータを設定するなどの電源管理機構７３の終了の処理を実行する。
【０３２９】
ステップＳ５１３において、オペレーティングシステム６１の電源管理機構７３を実行するホストCPU１１は、シリアルインタフェース１９を介して、エンベデッドコントローラ３３に電源の供給の停止の要求を送信する。
【０３３０】
ステップＳ６０５において、電源制御プログラム２０１を実行するエンベデッドコントローラ３３は、シリアルインタフェース１９を介して、ホストCPU１１から送信されてくる電源の供給の停止の要求を受信する。
【０３３１】
ステップＳ６０６において、電源制御プログラム２０１を実行するエンベデッドコントローラ３３は、DC−DCコンバータ３４に電源の供給を停止させて、処理は終了する。例えば、ステップＳ６０６において、電源制御プログラム２０１は、エンベデッドコントローラ３３の内部のメモリに記憶された休止状態情報を参照して、サスペンド状態S3に遷移する場合、DC−DCコンバータ３４に、SDRAM２９への電源の供給を維持させたまま、ホストCPU１１およびリアルタイム処理用CPU１２への電源の供給を停止（遮断）させ、ハイバネーションS4に遷移する場合、DC−DCコンバータ３４に、SDRAM２９、ホストCPU１１、およびリアルタイム処理用CPU１２への電源の供給を停止（遮断）させる。
【０３３２】
このように、休止状態が決定されて、決定された休止状態を示す休止状態情報がエンベデッドコントローラ３３の内部のメモリに記憶されてから、デジタルスチルカメラの状態が、その決定された休止状態に遷移させられる。また、休止状態に遷移する前に、起動における復帰において必要となる設定値が、NAND型フラッシュメモリ１７に記憶される。
【０３３３】
さらにまた、サスペンド状態S3に遷移する前に、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２がSDRAM２９にロードされる。
【０３３４】
なお、サスペンド状態S3に遷移する前に、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２がSDRAM２９にロードされるようにした場合、上述したステップＳ３３２において、リアルタイム処理用CPU１２は、ステップＳ２４１の処理でSDRAM２９にロードされた設定値に含まれている、リアルタイム処理用CPU１２の内部の各レジスタの値やその内部のインタフェースの各レジスタの値であって、休止する前の値をSDRAM２９から読み出して、リアルタイム処理用CPU１２の内部の各レジスタまたはリアルタイム処理用CPU１２の内部のインタフェースの各レジスタのそれぞれに設定する。
【０３３５】
このようにすることで、リアルタイム処理用CPU１２の内部の各レジスタおよびその内部のインタフェースの各レジスタに正しい値が設定された状態から、オペレーティングシステム１４１が実質的に実行されるので、リアルタイム処理用CPU１２が暴走したり、サスペンド状態S3に遷移する前にSDRAM２９にロードされたオペレーティングシステム１４１およびアプリケーションプログラム１４２が破壊されることなく、オペレーティングシステム１４１およびアプリケーションプログラム１４２が確実に正しく実行される。
【０３３６】
図２４は、休止の処理の他の例を示すフローチャートである。
【０３３７】
ステップＳ５３１乃至ステップＳ５３９、ステップＳ６３１乃至ステップＳ６３４、およびステップＳ７３１乃至ステップＳ７３４は、それぞれ、図２３のステップＳ５０１乃至ステップＳ５０９、ステップＳ６０１乃至ステップＳ６０４、およびステップＳ７０１乃至ステップＳ７０４のそれぞれと同様であり、その説明は省略する。
【０３３８】
図２４のフローチャートで示される休止の処理におけるデバイスドライバ７２の終了の処理において、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２は、SDRAM２９にロードされない。
【０３３９】
ステップＳ５４０乃至ステップＳ５４２、並びにステップＳ６３５およびステップＳ６３６は、それぞれ、図２３のステップＳ５１１乃至ステップＳ５１３、並びにステップＳ６０５およびステップＳ６０６のそれぞれと同様であり、その説明は省略する。
【０３４０】
このように、デバイスドライバ７２の終了の処理において、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２を、SDRAM２９にロードしないようにしてもよい。
【０３４１】
オペレーティングシステム１４１およびアプリケーションプログラム１４２のSDRAM２９へのロードには、所定の時間がかかるので、オペレーティングシステム１４１およびアプリケーションプログラム１４２のSDRAM２９へのロードが行われない場合には、より短い時間で休止の処理を行うことができる。
【０３４２】
なお、ステップＳ５３８において、NAND型フラッシュメモリ１７に記憶させられる設定値には、オペレーティングシステム１４１およびアプリケーションプログラム１４２の変数としてSDRAM２９に記憶され管理されている、リアルタイム処理用CPU１２の内部の各レジスタの値やリアルタイム処理用CPU１２の内部のインタフェースの各レジスタの値は含まれない。
【０３４３】
従って、設定値の記憶に必要な、NAND型フラッシュメモリ１７の記憶領域の記憶容量をより少なくすることができる。
【０３４４】
また、図２４のフローチャートで示される休止の処理の後、図１７乃至図１９のフローチャートを参照して説明したホットブートの起動の処理が実行される場合、ステップＳ２４２の前に、２次ブートローダ１０１の他CPUプログラム読み出しプログラム１２４を実行するホストCPU１１が、リアルタイム処理用CPU１２のオペレーティングシステム１４１およびアプリケーションプログラム１４２を、NAND型フラッシュメモリ１７からSDRAM２９にロードする。
【０３４５】
次に、休止状態において、DC−DCコンバータ３４から電源が供給され、メカニカルオフ状態G3において、バッテリ３６から電力が供給されるエンベデッドコントローラ３３が予め定められた期間毎に実行する、バッテリ３５の取り外しの履歴の記憶の処理について説明する。
【０３４６】
図２５は、バッテリ３５の取り外しの履歴の記憶の処理を説明するフローチャートである。ステップＳ９０１において、バッテリ着脱検出プログラム２０６を実行するエンベデッドコントローラ３３は、DC−DCコンバータ３４の出力電圧を検出することにより、バッテリ３５の着脱を検出する。例えば、ステップＳ９０１において、バッテリ着脱検出プログラム２０６は、DC−DCコンバータ３４の出力電圧と予め定めた閾値とを比較することにより、バッテリ３５の装着または取り外しを検出する。
【０３４７】
ステップＳ９０２において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３は、バッテリ３５が取り外されたか否かを判定する。ステップＳ９０２において、バッテリ３５が取り外されたと判定された場合、手続きはステップＳ９０３に進み、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３は、バッテリ３５が取り外されたことを示すバッテリ着脱情報を内部のメモリに記憶して、処理は終了する。すなわち、バッテリ３５が取り外された場合、エンベデッドコントローラ３３の内部に記憶されているバッテリ着脱情報は、バッテリ３５が取り外されたことを示すように更新される。
【０３４８】
ステップＳ９０２において、バッテリ３５が取り外されていないと判定された場合、エンベデッドコントローラ３３の内部に記憶されているバッテリ着脱情報を更新する必要はないので、ステップＳ９０３はスキップされて、処理は終了する。
【０３４９】
このように、休止状態においてバッテリ３５が取り外されると、バッテリ３５が取り外されたことを示すようにバッテリ着脱情報が更新されるので、バッテリ着脱情報は、休止状態におけるバッテリ３５の着脱の履歴を示すことになる。
【０３５０】
なお、ステップＳ９０１において、バッテリ着脱検出プログラム２０６を実行するエンベデッドコントローラ３３が、DC−DCコンバータ３４の出力電圧を検出することにより、外部電源からの電源の供給の停止を検出し、ステップＳ９０２において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３が、外部電源からの電源の供給が停止されたか否かを判定し、外部電源からの電源の供給が停止された場合、ステップＳ９０３において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３が、外部電源からの電源の供給が停止されたことを示すバッテリ着脱情報を内部のメモリに記憶するようにしてもよい。すなわち、この場合、バッテリ着脱情報は、外部電源からの電源の供給の履歴を示す。
【０３５１】
さらにまた、ステップＳ９０１において、バッテリ着脱検出プログラム２０６を実行するエンベデッドコントローラ３３が、DC−DCコンバータ３４の出力電圧を検出することにより、外部電源からの電源の供給の停止とバッテリ３５の着脱とを検出し、ステップＳ９０２において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３が、外部電源からの電源の供給が停止されて、かつ、バッテリ３５が取り外されたか否かを判定し、外部電源からの電源の供給が停止されて、かつ、バッテリ３５が取り外された場合、ステップＳ９０３において、起動方式決定情報記憶処理プログラム２０４を実行するエンベデッドコントローラ３３が、外部電源からの電源の供給が停止されて、かつ、バッテリ３５が取り外されたことを示すバッテリ着脱情報を内部のメモリに記憶するようにしてもよい。
【０３５２】
すなわち、バッテリ着脱情報は、休止状態における、サスペンド状態S3を維持するための電源の供給の停止の履歴を示す情報の一例である。また、この場合、バッテリ着脱検出プログラム２０６は、休止状態における、サスペンド状態S3を維持するための電源の供給の停止を検出する。
【０３５３】
なお、図２６で示されるように、メカニカルオフ状態G3において、バッテリ３５が装着されると、このバッテリ３５の装着を起動のトリガとして、コールドブートまたはウォームブートの起動の方式により、動作状態S0に遷移するようにデジタルスチルカメラを起動して、この動作状態S0から無条件でサスペンド状態S3に遷移するようにしてもよい。この場合、起動画面は表示されず、起動音も出力されない。
【０３５４】
このようにすることで、コールドブートまたはウォームブートの起動の処理に時間がかかる場合であっても、バッテリ３５を装着するだけで、使用者が気づかないうちに、デジタルスチルカメラを、サスペンド状態S3で休止させることができる。
【０３５５】
そして、デジタルスチルカメラは、サスペンド状態S3で電源ボタンが押圧されると、ホットブートの起動の方式により、動作状態S0に遷移するように起動される。レンズキャップを開けることなどの他の起動要因により、サスペンド状態S3から、ホットブートの起動の方式により、動作状態S0に遷移するようにしてもよいことは当然である。
【０３５６】
その結果、使用者からは、電源ボタンの押圧などをトリガとして、メカニカルオフ状態G3から迅速に起動したように見える。
【０３５７】
以上のように、デジタルスチルカメラは、使用者の操作に応じて、その状態を、休止状態に遷移させるか、または動作状態S0に遷移させ、休止状態から動作状態S0に遷移する場合には、迅速に遷移する、すなわち、迅速に起動することができる。
【０３５８】
サスペンド状態S3で休止している間に、使用者がバッテリ３５を取り外すことなく、起動させた場合には、ホットブートの方式により起動し、また、サスペンド状態S3で休止している間に、使用者がバッテリ３５を取り外して、再度装着した場合には、ウォームブートの方式により起動し、さらにまた、ハイバネーションS4で休止すると、バッテリ３５の着脱と無関係に、ウォームブートの方式により起動するので、使用者からは、休止状態が、あたかも電源をオフしている状態（メカニカルオフ状態G3）に見える。
【０３５９】
このように、休止状態としてサスペンド状態に遷移するようにした場合には、サスペンド状態からレジュームすることができる。また、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、起動のトリガとなる起動要因を示す信号を取得し、サスペンド状態から起動する場合、初期状態に復帰し、起動により初期状態に復帰した場合、起動要因に応じたアプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させるようにした場合には、使用者の操作に応じた状態になるように、より迅速に起動することができる。
【０３６０】
さらにまた、サスペンド状態になる前に、動作状態のうちの初期状態であって、アプリケーションの処理の実行を抑制した初期状態に状態を遷移させ、起動のトリガとなる起動要因を示す情報を取得し、サスペンド状態から起動する場合、初期状態に復帰し、起動により初期状態に復帰した場合、起動要因に応じたアプリケーションの処理を実行するアプリケーション実行状態に状態を遷移させるようにした場合には、使用者の操作に応じた状態になるように、より迅速に起動することができる。
【０３６１】
なお、本発明は、デジタルスチルカメラに限らず、パーソナルコンピュータ、デジタルビデオカメラ、携帯電話機、若しくは携帯型のプレーヤ、または、HDDレコーダプレーヤやテレビジョン受像機などの据え置き型の各種の機器にも適用することができる。
【０３６２】
また、ウォームブートまたはコールドブートの方式により起動した場合、初期状態S0Nに遷移すると説明したが、ウォームブートまたはコールドブートの方式により起動した場合も、動作状態S0のうち、起動要因に応じた処理を実行する状態に遷移するようにしてもよい。
【０３６３】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０３６４】
コンピュータ（ホストCPU１１、リアルタイム処理用CPU１２、またはエンベデッドコントローラ３３）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディアに記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０３６５】
そして、プログラムは、リムーバブルメディアをIDEインタフェース２８に接続されているドライブに装着することにより、IDEインタフェース２８を介して、NAND型フラッシュメモリ１７に記憶することで、インストールすることができる。また、プログラムは、無線の伝送媒体を介して、無線LANインタフェース２４で受信するか、または有線の伝送媒体を介して、汎用入出力部３２で受信して、NAND型フラッシュメモリ１７に記憶することで、インストールすることができる。その他、プログラムは、NAND型フラッシュメモリ１７にあらかじめ記憶しておくことで、あらかじめインストールしておくことができる。
【０３６６】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【図面の簡単な説明】
【０３６７】
【図１】本発明の一実施の形態の情報処理装置の一例であるデジタルスチルカメラの構成を示すブロック図である。
【図２】ホストCPUにより実行されるオペレーティングシステムおよびアプリケーションプログラムの構成を示すブロック図である。
【図３】ホストCPUにより実行される２次ブートローダの構成を示すブロック図である。
【図４】リアルタイム処理用CPUにより実行されるオペレーティングシステムおよびアプリケーションプログラムの構成を示すブロック図である。
【図５】エンベデッドコントローラにより実行されるプログラムの構成を示すブロック図である。
【図６】デジタルスチルカメラの状態を説明する図である。
【図７】デジタルスチルカメラの状態を説明する図である。
【図８】デジタルスチルカメラの状態の遷移を説明する図である。
【図９】デジタルスチルカメラの状態を説明する図である。
【図１０】ウォームブートの起動の処理の手順の概要を説明する図である。
【図１１】ホットブートの起動の処理の手順の概要を説明する図である。
【図１２】コールドブートの起動の処理の手順の概要を説明する図である。
【図１３】休止の処理の手順の概要を説明する図である。
【図１４】ウォームブートの起動の処理の詳細を説明するフローチャートである。
【図１５】ウォームブートの起動の処理の詳細を説明するフローチャートである。
【図１６】ウォームブートの起動の処理の詳細を説明するフローチャートである。
【図１７】ホットブートの起動の処理の詳細を説明するフローチャートである。
【図１８】ホットブートの起動の処理の詳細を説明するフローチャートである。
【図１９】ホットブートの起動の処理の詳細を説明するフローチャートである。
【図２０】コールドブートの起動の処理の詳細を説明するフローチャートである。
【図２１】コールドブートの起動の処理の詳細を説明するフローチャートである。
【図２２】コールドブートの起動の処理の詳細を説明するフローチャートである。
【図２３】休止の処理の例を説明するフローチャートである。
【図２４】休止の処理の他の例を説明するフローチャートである。
【図２５】バッテリの取り外しの履歴の記憶の処理を説明するフローチャートである。
【図２６】起動における状態遷移の例を示す図である。
【符号の説明】
【０３６８】
１１  ホストCPU，  １２  リアルタイム処理用CPU，  １３  マスクROM，  １７  NAND型フラッシュメモリ，  １９  シリアルインタフェース，  ２０  LCD，  ２２  メモリカード，  ２４  無線LANインタフェース，  ２６  NAND型フラッシュメモリ，  ２９  SDRAM，  ３１  入力部，  ３２  汎用入出力部，  ３３  エンベデッドコントローラ，  ３４  DC−DCコンバータ，  ３５  バッテリ，  ３６  バッテリ，  ４１  USB接続端子，  ６１  オペレーティングシステム，  ６２  アプリケーションプログラム，  ７１  カーネル，  ７２  デバイスドライバ，  ７３  電源管理機構，  ７４  休止状態決定プログラム，  ７５  休止状態情報提供プログラム，  ７６  他CPUプログラム読み出しプログラム，  ７７  設定値記憶処理プログラム，  ７８  ウォームブートイメージ生成プログラム，  ８１  撮影処理プログラム，  ８２  閲覧処理プログラム，  ８３  設定処理プログラム，  ８４  USBマスストレージクラス処理プログラム，  ８５  状態遷移処理プログラム，  ８６  電源管理プログラム，  １０１  ２次ブートローダ，  １２１  起動方式決定情報取得プログラム，  １２２  起動方式決定プログラム，  １２３  設定値読み出しプログラム，  １２４  他CPUプログラム読み出しプログラム，  １２５  ウォームブートイメージ読み出しプログラム，  １４１  オペレーティングシステム，  １４２  アプリケーションプログラム，  １６１  起動方式決定情報取得プログラム，  １６２  起動方式決定プログラム，  １６３  アプリケーション起動終了制御プログラム，  １７１  リアルタイム処理プログラム，  １７２  GUI処理プログラム，  １７３  起動画面表示プログラム，  ２０１  電源制御プログラム，  ２０２  他CPUリセット制御プログラム，  ２０３  起動方式決定情報取得プログラム，  ２０４  起動方式決定情報記憶処理プログラム，  ２０５  起動方式決定情報提供プログラム，  ２０６  バッテリ着脱検出プログラム
【図１】
2008165550.tif 000003
【図２】
2008165550.tif 000004
【図３】
2008165550.tif 000005
【図４】
2008165550.tif 000006
【図５】
2008165550.tif 000007
【図６】
2008165550.tif 000008
【図７】
2008165550.tif 000009
【図８】
2008165550.tif 000010
【図９】
2008165550.tif 000011
【図１０】
2008165550.tif 000012
【図１１】
2008165550.tif 000013
【図１２】
2008165550.tif 000014
【図１３】
2008165550.tif 000015
【図１４】
2008165550.tif 000016
【図１５】
2008165550.tif 000017
【図１６】
2008165550.tif 000018
【図１７】
2008165550.tif 000019
【図１８】
2008165550.tif 000020
【図１９】
2008165550.tif 000021
【図２０】
2008165550.tif 000022
【図２１】
2008165550.tif 000023
【図２２】
2008165550.tif 000024
【図２３】
2008165550.tif 000025
【図２４】
2008165550.tif 000026
【図２５】
2008165550.tif 000027
【図２６】
2008165550.tif 000028