(57)【要約】【課題】コスト低減、チップサイズの削減を図るとともに、起動時間の短縮化を図る。【解決手段】第１ＣＰＵ２０１は、第１駆動手段と第２駆動手段を制御するための第１プログラムと第２プログラムをサブマイコン２０６の揮発性メモリ２０９に転送する際には、まず第１プログラムと第２プログラムの一方の転送を開始し、サブマイコンから受信完了を受信すると、第１プログラムと第２プログラムの他方の転送を開始するとともに、並行して第１駆動手段または第２駆動手段の制御開始命令を送信し、第２ＣＰＵ２０７は、制御開始命令を受信した後、メインマイコンからの第１プログラムと第２プログラムの他方を受信するのと並行して、第１プログラムと第２プログラムの一方にしたがって第１駆動手段または前記第２駆動手段の制御を行う。【選択図】図２
2010204326.tif 000002
【特許請求の範囲】
【請求項１】
システム全体の制御を行う第１ＣＰＵ、および複数のプログラムを格納する不揮発性メモリを有するメインマイコンと、
第１駆動手段、第２駆動手段を制御するためのプログラムが前記メインマイコンの不揮発性メモリから転送される揮発性メモリ、および前記揮発性メモリに転送されたプログラムにしたがって前記第１駆動手段と前記第２駆動手段の制御を行う第２ＣＰＵを有する少なくとも一つのサブマイコンとを有する携帯機器において、
前記メインマイコンの不揮発性メモリは、前記第１駆動手段を制御するための第１プログラムと前記第２駆動手段を制御するための第２プログラムとを分割して格納しており、
前記第１ＣＰＵは、前記第１プログラムと前記第２プログラムを前記サブマイコンの揮発性メモリに転送する際には、まず前記第１プログラムと前記第２プログラムの一方の転送を開始し、前記サブマイコンから受信完了を受信すると、前記第１プログラムと前記第２プログラムの他方の転送を開始するとともに、並行して前記第１駆動手段または前記第２駆動手段の制御開始命令を送信し、
前記第２ＣＰＵは、前記制御開始命令を受信した後、前記メインマイコンからの前記第１プログラムと前記第２プログラムの他方を受信するのと並行して、前記第１プログラムと前記第２プログラムの一方にしたがって前記第１駆動手段または前記第２駆動手段の制御を行うことを特徴とする携帯機器。
【請求項２】
前記第１プログラムと前記第２プログラムの一方にしたがって前記第１駆動手段または前記第２駆動手段の制御を開始するタイミングは、前記第１ＣＰＵによって行われる起動処理と前記第２ＣＰＵによって行われる前記第１駆動手段または前記第２駆動手段の制御開始とで生じる電気的な負荷が重ならないタイミングであることを特徴とする請求項１に記載の携帯機器。
【請求項３】
複数の起動モードから選択されたモードを判定するモード判定手段と、
前記第１駆動手段または前記第２駆動手段の状態を判定する状態判定手段とを有し、
前記第１ＣＰＵは、前記第１プログラムと前記第２プログラムの一方を前記サブマイコンの揮発性メモリに転送する際には、前記モード判定手段によって判定された判定結果、および前記状態判定手段によって判定された判定結果に応じて、前記第１のプログラムと前記第２のプログラムを転送する順番を変更して転送することを特徴とする請求項１または２に記載の携帯機器。
【請求項４】
前記第２ＣＰＵは、転送プログラムを格納する不揮発性メモリを有することを特徴とする請求項１ないし３のいずれかに記載の携帯機器。
【請求項５】
請求項１ないし４のいずれかに記載の携帯機器としての撮像装置であって、
前記第１駆動手段であるズーム制御手段と、
前記第２駆動手段であるフォーカス制御手段とを有することを特徴とする撮像装置。
【請求項６】
請求項３に記載の携帯機器としての撮像装置であって、
前記第１駆動手段であるズーム制御手段と、
前記第２駆動手段であるフォーカス制御手段とを有し、
前記モード判定手段は、起動モードが撮影モードか再生モードかを判定し、
前記状態判定手段は、前記ズーム制御手段により制御されるズームレンズが繰り出し状態か沈胴状態かを判定することを特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを有する携帯機器および撮像装置に関するものである。
【背景技術】
【０００２】
近年、デジタルカメラやデジタルビデオ等の携帯機器は、機能の多様化が進んでいる。例えば、手振れ補正機能、高速静音なズーム、および、ＡＦ（オートフォーカス）機能、画像認識技術を用いた顔認識機能などが挙げられる。このように、複雑で処理に時間を要する機能を実現するために、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理ユニット）を複数持ったシステムを採用する携帯機器が増えてきている。このことによって、一般的な機能の処理を行うメインＣＰＵと、複雑な処理が必要な機能の処理を行うサブＣＰＵとに、ＣＰＵ負荷を分散することで、高速処理化を実現している。
【０００３】
一方、複数のＣＰＵを有することによってコストやチップサイズが増大することが懸念される。その改善策としては、複数のＣＰＵに対して、プログラムを格納しておく不揮発性メモリを一つにすることによって、コストやチップサイズを削減することが図られている。すなわち、不揮発性メモリはメインＣＰＵを含むマイクロコントローラ（以下、メインマイコン）上にのみ持つ。そして、起動時にメインマイコンから、サブＣＰＵを含むマイクロコントローラ（以下、サブマイコン）の揮発性メモリにプログラムを転送し、揮発性メモリ上でサブＣＰＵの処理を実行する。また、プログラムを揮発性メモリで実行することで、不揮発性メモリと比較してメモリアクセス時間が速くなり、高速処理が実現できるという効果も得られる。
【０００４】
しかし、このようなシステムにおいては、サブＣＰＵで制御する周辺デバイスを起動させるには、プログラムの転送が終了するまで起動処理を開始できず、機器全体の起動に時間を要するものであった。デジタルカメラやデジタルビデオのような携帯機器においては、電源が切られている状態からでも、すぐに起動し、使用可能な状態になることが望まれている。
【０００５】
特許文献１では、転送するプログラムを分割圧縮して不揮発性メモリに格納しておき、送信側のＣＰＵがプログラムを分割して転送した後、受信側のＣＰＵでは揮発性メモリ上に順次展開して実行することで起動時間を短縮するという技術が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２６３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、メインＣＰＵおよびサブＣＰＵで制御する周辺デバイスの駆動を行う際、制御開始時に制御回路に突入電流が発生することがある。メインＣＰＵとサブＣＰＵとで、周辺デバイスの制御開始タイミングが同時に発生した場合、それぞれの周辺デバイスの突入電流が重なってしまい、電源電圧が不安定になってしまう。そのため、電池残量が充分あるにも拘らず、バッテリー低下を誤検出する虞があった。
【０００８】
また、沈胴式のレンズ鏡筒を有するデジタルカメラにおいては、電源釦が押された後、ズームレンズの動作が開始されるまでに時間を要すると、ユーザーは電源釦を押していないと誤解してしまう。サブＣＰＵでズームレンズを制御するようなシステムでは、プログラム転送に時間がかかるとそのような誤解を生じさせる虞があった。
【０００９】
（発明の目的）
本発明の目的は、コスト低減、チップサイズの削減を図るとともに、起動時間の短縮化を図ることのできる携帯機器および撮像装置を提供しようとするものである。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明は、システム全体の制御を行う第１ＣＰＵ、および複数のプログラムを格納する不揮発性メモリを有するメインマイコンと、第１駆動手段、第２駆動手段を制御するためのプログラムが前記メインマイコンの不揮発性メモリから転送される揮発性メモリ、および前記揮発性メモリに転送されたプログラムにしたがって前記第１駆動手段と前記第２駆動手段の制御を行う第２ＣＰＵを有する少なくとも一つのサブマイコンとを有する携帯機器において、前記メインマイコンの不揮発性メモリが、前記第１駆動手段を制御するための第１プログラムと前記第２駆動手段を制御するための第２プログラムとを分割して格納しており、前記第１ＣＰＵが、前記第１プログラムと前記第２プログラムを前記サブマイコンの揮発性メモリに転送する際には、まず前記第１プログラムと前記第２プログラムの一方の転送を開始し、前記サブマイコンから受信完了を受信すると、前記第１プログラムと前記第２プログラムの他方の転送を開始するとともに、並行して前記第１駆動手段または前記第２駆動手段の制御開始命令を送信し、前記第２ＣＰＵは、前記制御開始命令を受信した後、前記メインマイコンからの前記第１プログラムと前記第２プログラムの他方を受信するのと並行して、前記第１プログラムと前記第２プログラムの一方にしたがって前記第１駆動手段または前記第２駆動手段の制御を行う携帯機器とするものである。
【発明の効果】
【００１１】
本発明によれば、コスト低減、チップサイズの削減を図るとともに、起動時間の短縮化を図ることができる携帯機器または撮像装置を提供できるものである。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１に係る撮像装置の概略構成を示すブロック図である。
【図２】実施例１に係るメインマイコンとサブマイコンを示すブロック図である。
【図３】実施例１に係るサブマイコンのメモリマップを示す図である。
【図４】実施例１に係る第１プログラムの転送処理のフローチャートである。
【図５】実施例１に係る第２プログラムの転送処理のフローチャートである。
【図６】実施例１に係るレンズ鏡筒を示す断面図である。
【図７】実施例１に係る撮像装置の電源投入時の動作を示すフローチャートである。
【図８】実施例１に係るレンズ鏡筒の繰り出し処理のフローチャートである。
【図９】実施例１に係るレンズ鏡筒の沈胴処理のフローチャートである。
【図１０】実施例２に係るメインマイコンとサブマイコンを示すブロック図である。
【発明を実施するための形態】
【００１３】
本発明を実施するための形態は、以下の実施例１および２に示す通りである。
【実施例１】
【００１４】
図１は本発明の実施例１に係るデジタルカメラなどの撮像装置１００の概略構成を示すブロック図である。
【００１５】
図１において、１０１はレンズ鏡筒であり、ズームレンズ１０２、絞りシャッタ１０３、防振（ＩＳ）を実現する補正レンズ１０４、フォーカスレンズ１０５を具備している。１０６はズームレンズ１０２を制御するズーム制御部、１０７は絞りシャッタ１０３を制御する絞りシャッタ制御部、１０８は補正レンズ１０４を制御するＩＳ制御部、１０９はフォーカスレンズ１０５を制御するフォーカス制御である。１１０はレンズシステム制御部である。
【００１６】
１１１はＣＣＤやＣＭＯＳ等からなる撮像素子である。１１２はＡＦＥ（アナログ・フロントエンド）回路であり、タイミングパルス発生（ＴＧ）回路や相関２重サンプリング（ＣＤＳ）回路、Ａ／Ｄ変換器などによって構成される。このＡＦＥ回路１１２は、撮像素子１１１によって変換されたアナログの電気信号を特定のサンプリング周期でデジタル信号へと変換する。１１３はＡＦＥ回路１１２からの信号に対して画素補間処理や色変換処理を行い、画像データとして、ＤＲＡＭやＳＲＡＭなどで構成される画像メモリ１１４に転送する画像処理回路である。
【００１７】
１１５はＴＦＴ＿ＬＣＤ（薄膜トランジスタ駆動型液晶表示器）等により構成される画像表示部であり、撮影によって得られた画像データの表示を行うと共に、特定の情報（例えば、撮影情報）等を表示する。また、画像表示部１１５は撮像素子１１１の出力信号にて生成される画像データを逐次表示することで電子ファインダ機能を実現する。１１６はカメラシステム制御部であり、ユーザーの操作に応じて、周辺デバイスに制御命令を送る。
【００１８】
１１７は操作部であり、撮影動作においては、この操作部１１７に含まれるレリーズ釦が押下される。レリーズ釦が押下されると、カメラシステム制御部１１６は、最適の露出値もしくはユーザーによって設定されている露出値となるようにレンズシステム制御部１１０に指示する。これにより、絞りシャッタ制御部１０７および絞りシャッタ１０３により適正な絞り位置が設定される。また、ＡＦＥ回路１１２に対してはゲイン設定を指示する。さらに、カメラシステム制御部１１６は、被写体の距離に応じてピントが最適となるようにレンズシステム制御部１１０に指示する。これにより、フォーカス制御部１０９を介して所望とされるフォーカス位置にフォーカスレンズ１０５が設定される。その状態で、撮像素子１１１への露光が開始され、一定時間が経過した後、絞りシャッタ１０３が閉じられることで露光が終了する。
【００１９】
１１８はＩ／Ｆ（インターフェース）部であり、上記の露光時に生成された画像データを記録部１１９へ出力する。記録部１１９は、フラッシュメモリより成るメモリカードなどの記録媒体の制御を行う。なお、記録媒体はカメラに内蔵されたメモリ領域であってもよい。１２０は電源部である。
【００２０】
上記撮像装置１００においては、レンズ鏡筒１０１を制御するレンズシステム制御部１１０、ズーム制御部１０６からフォーカス制御部１０９までの各制御部と、その他のシステムを制御するカメラシステム制御部１１６とでは、異なるＣＰＵ上で処理が行われる。
【００２１】
図２に、二つのＣＰＵとその周辺装置（ペリフェラル）のハードウェア構成を示す。
【００２２】
メインマイコン２００は、ＣＰＵ２０１、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２０２、ＲＡＭ２０３、ＲＯＭ２０４およびＳＩＯ（Ｓｅｒｉａｌ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）２０５などから構成される。サブマイコン２０６も同様に、ＣＰＵ２０７、ＤＭＡＣ２０８、ＲＡＭ２０９、ＲＯＭ２１０およびＳＩＯ２１１などから構成されるが、ＲＯＭ２１０は転送プログラムを記憶するだけの小容量のものである。
【００２３】
上記撮像装置１００においては、メインマイコン２００にて、図１のカメラシステム制御部１１６の処理が行われる。また、サブマイコン２０６にて、図１のレンズシステム制御部１１０およびズーム制御部１０６からフォーカス制御部１０９までの各制御部の処理が行われる。メインマイコン２００内のＲＯＭ２０４は不揮発性メモリであるため、電源が供給されていないときでもデータを保持する（格納しておく）ことが可能である。また、サブマイコン２０６内のＲＯＭ２１０は容量が限られている。そのため、電源部１２０からの電源が供給されていない時の、サブＣＰＵ２０７で実行されるプログラムは、メインマイコン２００内のＲＯＭ２０４に格納するようにしている。電源投入時には、サブＣＰＵ２０７は、ＳＩＯ２０５および２１１を介してプログラムを受信してＲＡＭ２０９に格納し、格納したプログラムを実行する。
【００２４】
ここで、ＤＭＡＣ２０８について説明する。ＤＭＡＣとは、メモリ−メモリ間、もしくは、メモリ周辺装置間で高速にデータ転送を行うためのコントローラである。ＣＰＵでは、データ転送開始時に転送元アドレスおよび転送先アドレス、転送サイズを設定することで、転送中にＣＰＵを介することなく自動的にデータ転送を行うことが可能となる。ＤＭＡＣを使用することによって、プログラム転送と同時に、ＣＰＵでは別の処理を行うことができる。
【００２５】
メインマイコン２００は、転送元アドレスとしてＲＯＭ２０４上でサブＣＰＵ用プログラムが格納されているメモリ領域を、転送先アドレスとしてＳＩＯ２０５の送信バッファを、それぞれ設定する。サブマイコン２０６は、転送元アドレスとしてＳＩＯ２１１の受信バッファを、転送先アドレスとしてＲＡＭ２０９上でプログラムを格納するメモリ領域を、それぞれ設定する。転送を開始すると、ＤＭＡ転送によってＲＯＭ２０４からＳＩＯ２０５へとプログラムが転送される。次いで、ＳＩＯ２０５とＳＩＯ２１１とのシリアル通信によって、ＳＩＯ２１１にデータが転送される。さらには、ＳＩＯ２１１とＲＡＭ２０９のＤＭＡ転送によってＲＡＭ２０９へと転送される。このようにして、ＣＰＵを介することなく、プログラム転送を実現することが可能となる。
【００２６】
図３は、サブマイコン２０６のアドレス空間を示している。本実施例１におけるサブマイコン２０６では、メモリマップドＩ／Ｏ方式によってＩ／Ｏが割り振られており、０ｘ００００００００から０ｘＦＦＦＦＦＦＦＦまでの４ＧＢの中でメモリおよびＩ／Ｏが割り振られている。
【００２７】
０ｘ００００００００はリセットベクタである。リセットベクタは、サブマイコン２０６に電源が供給された後、ハードウェアリセットがかかると、最初に処理が実行される領域である。このリセットベクタには、最初に実行するプログラムの先頭アドレスが書かれており、リセットベクタが実行されるとプログラムカウンタ（ＰＣ）にそのアドレスが書き込まれる。ＰＣとは、ＣＰＵで次に実行すべき命令が書き込まれているレジスタであり、このレジスタにアドレスを書き込むことで処理をジャンプさせることができる。サブマイコン２０６では、初期状態でプログラムを保持できる領域はＲＯＭ２１０のみである。したがって、リセットベクタには、ＲＯＭ２１０の先頭アドレスである０ｘ００００Ｆ８００が書き込まれており、ＲＯＭ２１０に格納されている転送プログラムを実行することが可能となる。
【００２８】
０ｘ０００００００４から０ｘ００００Ｆ７ＦＦまでは、ＲＡＭ２０９のメモリ領域として割り振られている。この領域は、最初に転送されるプログラムが格納されている第１プログラム領域と、第１プログラムが実行されるのと並行して転送されるプログラムが格納されている第２プログラム領域とに分けられている。
【００２９】
０ｘ００ＦＦＥ０００以降は、Ｉ／Ｏ領域として割り振られている。Ｉ／Ｏとしては、ＳＩＯ２１１を始め、不図示の汎用入出力ポートやその他のペリフェラルなどがある。メモリマップドＩ／Ｏ方式によってメモリ空間にＩ／Ｏが配置されているため、Ｉ／Ｏにアクセスする際にもメモリにアクセスするのと同様のアドレス指定を行うことで、ペリフェラルを利用することが可能である。
【００３０】
ここで、プログラムを分割して生成する生成手段と、サブマイコン２０６上でそれらのプログラムを実行する実行手段について説明する。
【００３１】
携帯機器などの組み込み機器においては、ＣＰＵ上で実行するプログラムの作成手段として、クロスコンパイルという手段が用いられている。これは、一旦、パソコンなどのホストマシンでプログラムを作成し、実行可能なバイナリデータに変換したものをターゲットマシンに転送するという方法である。プログラム言語で書かれたプログラム（ソースコード）は、コンパイラと呼ばれる、プログラム言語から機械語に変換するソフトウェアにて機械語のプログラム（オブジェクトコード）に変換される。機能ごとにソースコードを分割してプログラムを作成することで、生成されるオブジェクトコードも分割されて生成される。分割されたオブジェクトコードからＣＰＵ上で実行可能なプログラム（バイナリコード）を生成するには、リンカと呼ばれるオブジェクトコードを結合するソフトウェアにて、一つのプログラムに結合する必要がある。リンカでは、オブジェクトコードを結合する際に、リロケーション情報と呼ばれる、各オブジェクトコードをメモリ上で配置するアドレス情報に基づいて、実アドレスが割りつけられる。この処理によって、分割されたオブジェクトコードから他のコードを参照することが可能となる。
【００３２】
第１プログラム領域に割り当てられるオブジェクトコード群と第２プログラム領域に割り当てられるオブジェクトコード群とで別々にリンクを行うことで、二つのバイナリコードを生成することが可能である。それぞれのプログラム間でコードを参照するためには、互いのアドレス情報さえ分かっていれば参照することができる。
【００３３】
サブマイコン２０６上でのプログラムのアクセス方法について、具体的に説明する。
【００３４】
第１プログラム領域は、メインマイコン２００からの制御命令を受信し、命令内容を解析する命令受信・解析部と、最初に駆動を行うデバイスの起動処理が記述されている起動処理部とで構成される。起動処理は、例えば図８で後述するズーム繰り出し処理や図９で後述するフォーカス沈胴処理である。第２プログラム領域は、起動処理完了後の各デバイスの制御処理が記述されている制御処理部によって構成される。制御処理は、例えば図８で後述するフォーカス繰り出し処理や図９で後述するズーム沈胴処理である。メインマイコン２００とサブマイコン２０６との間では、決められた通信プロトコルによってデータの送受信が行われている。命令受信・解析部では、データを受信し、受信したデータからこの通信プロトコルに従って、命令内容の解析を行う。命令内容が、例えば、起動処理であった場合には、第１プログラム領域の起動処理部を実行する。その他の制御処理であった場合には、第２プログラム領域の制御処理部を実行する。そのため、第２プログラム領域の先頭アドレスである０ｘ００００７Ｃ００に実際に処理が記述されている領域のオフセットアドレスを加算したアドレスにジャンプして制御処理を実行する。但し、第２プログラムの転送が完了していない場合に、そのアドレスをアクセスしようとするとＣＰＵが誤作動する虞がある。したがって、転送終了していない状態で、メインマイコン２００から第２プログラム領域の命令が送信された場合には、メインマイコン２００に対してエラーを返信する。
【００３５】
次に、サブマイコン２０６に電源が投入され、すべてのプログラムの受信が完了するまでの一連の処理について、図４および図５のフローチャートを用いて説明する。
【００３６】
図４は、電源投入から第１プログラムの受信完了までを示すフローチャートである。
【００３７】
サブマイコン２０６に電源が投入される（Ｓ１００）と、前述したようにＰＣに転送プログラムのアドレスを設定し、プログラム転送処理を開始する（Ｓ１０１）。転送プログラムでは、ＤＭＡＣ２０８に対してデータ転送情報を設定する（Ｓ１０２）。転送元アドレスはＩ／Ｏ領域に割り振られているＳＩＯの受信バッファアドレスであり、転送先アドレスは第１プログラム領域の先頭アドレスである０ｘ０００００００４、転送サイズは３１ｋバイトである。次に、送受信割り込みを許可して、通信イネーブル信号を有効とすることで通信可能状態とする（Ｓ１０３）。メインマイコン２００は、この信号を監視しており、この信号が通信可能状態となると、プログラムの転送を開始する。
【００３８】
次のステップＳ１０４からステップＳ１０７までの処理、および、二回目以降のステップＳ１０３の処理は、ＳＩＯ２１１とＤＭＡＣ２０８とによって行われる。
【００３９】
受信データを受信する（Ｓ１０４のＹＥＳ）と受信割り込みが発生し、通信イネーブル信号を無効として（Ｓ１０５）、次のデータが送信されないようにする。この状態で、受信バッファから転送先のＲＡＭ２０９の第１プログラム領域にプログラムをコピーする（Ｓ１０６）。コピーが終了すると、指定されたサイズのデータ転送が終了したかを判定し（Ｓ１０７）、終了していなければ（Ｓ１０７のＮＯ）再び通信イネーブル信号を有効とする（Ｓ１０３）。この処理を、指定されたサイズのデータ転送が終了するまで順次繰り返すことでプログラム転送を実現する。
【００４０】
指定されたサイズのデータ転送が終了したと判定する（Ｓ１０７のＹＥＳ）と、次にチェックサム計算を行う（Ｓ１０８）。チェックサムとは、データを送受信する際の誤り検出方法の一つである。転送したデータを数値と見なして、その合計を取った値と、予め計算しておいたデータとを比較することで、転送時に通信路のノイズなどによってデータが破壊されていないかのチェックを行うことが可能となる。チェックサムの比較（Ｓ１０９）を行った結果、値が正しい場合（Ｓ１０９のＯＫ）には、正常に受信が完了したことをメインマイコン２００に対して返信する（Ｓ１１０）。一方、比較結果が誤っている場合（Ｓ１０９のＮＧ）には、メインマイコン２００に転送エラー命令を返す（Ｓ１１１）。
【００４１】
メインマイコン２００は、転送エラー命令が返ると、再送などの誤り訂正処理を行うか、もしくは、画像表示部１１５にエラー警告を表示して起動処理を終了する。
図５は、図４で正常に転送処理が終了した後、第２プログラムの受信と並行して第１プログラムでサブマイコン２０６の制御を行うことを示すフローチャートである。
【００４２】
図４のステップＳ１１０で正常に第１プログラムの受信を完了すると、ＰＣに第１プログラム領域の先頭アドレスである０ｘ０００００００４を設定して処理をジャンプさせ、第１プログラムの処理を開始する（Ｓ２００）。
【００４３】
ステップＳ２０１からステップＳ２１１までの処理は、第１プログラムを受信する処理（Ｓ２０１〜Ｓ２１１）と同様であり、ＤＭＡＣ２０８に第２プログラム領域の転送情報を設定することでＣＰＵを介さずにプログラム転送を行う。このときの転送元アドレスは受信バッファであり、転送先アドレスは第２プログラム領域の先頭アドレスである０ｘ００００７Ｃ００、転送サイズは３１ｋバイトである。
【００４４】
ステップＳ２０３にて第２プログラムのデータの受信の判定を行い、データを受信していない場合（Ｓ２０３のＮＯ）には、メインマイコン２００からサブマイコン２０６に対する制御命令（制御開始命令）を受信したか否かの判定を行う（Ｓ２１３）。制御命令を受信したことを判定する（Ｓ２１３のＹＥＳ）と、サブＣＰＵ２０７は、送られて来た命令に従ってサブマイコン２０６に接続されているデバイスの制御を開始する（Ｓ２１４）。
【００４５】
第２プログラムデータ及び制御（開始）命令はメインＣＰＵ２０１からサブＣＰＵ２０７にＳＩＯ２０５，２１１を介して通信される。サブＣＰＵ２０７の第１プログラムの処理として、メインＣＰＵ２０１から送られたデータを受信し、第２プログラムのデータであるか、制御（開始）命令であるかを判定する。判定した結果、第２プログラムのデータであればメモリ上の第２プログラム領域（図３参照）にデータをコピーし、制御（開始）命令であれば、デバイス（ズームまたはフォーカス）の制御を開始する。
【００４６】
図５のステップＳ２０３とＳ２１３では、データ通信が発生しているかを常に監視して、データを受信した場合には、それがプログラムデータか制御（開始）命令のどちらであるかを判定して、その判定に応じて処理を実行する。また、データ通信が発生していない場合にはステップＳ２０３，Ｓ２１３がどちらもＮＯとなり、監視を繰り返すことを示している。プログラムデータはバイト単位で間欠的に送られており、その間に制御開始命令が発生して、プログラムデータのコピーとデバイスの制御演算処理がサブＣＰＵ２０７で同時に行われることを、「並行して」と表現している。
【００４７】
次に、図６から図９までを用いて、撮像装置１００における具体的な処理の例を示す。
【００４８】
図６は、レンズ鏡筒１０１の光軸方向の断面図を示した図である。レンズ鏡筒１０１は、沈胴式鏡筒であり、図６（ａ）は繰り出し状態、図６（ｂ）は沈胴状態を示している。
【００４９】
図６において、レンズ鏡筒１０１は３群構成の鏡筒である。３００はズームレンズ１０２の前群である第１レンズ群、３０１はズームレンズ１０２の後群および手振れ補正用の補正レンズ１０４である。また、絞りシャッタ１０３からなる第２レンズ群、３０２はフォーカスレンズ１０５である第３レンズ群である。各レンズ群は、ＤＣモータやステッピングモータ、超音波モータなどのアクチュエータを動力源として、光軸方向に駆動するメカ機構となっている。第１レンズ群３００および第２レンズ群３０１は、一つのアクチュエータの駆動に連動して撮像素子１１１からの距離や各群間の距離を変化させることで、ズーム機能を実現している。第３レンズ群３０２は単独のアクチュエータで駆動することが可能であり、フォーカスレンズ１０５を移動させることによるビント位置の調整を実現している。また、第２レンズ群３０１の一部である補正レンズ１０４は、光軸方向に対して垂直方向に移動させられることで、手振れの軽減を実現する。絞りシャッタ１０３は、絞りの開口径を変化させることで撮像素子１１１に露光される露光量の調整を行ったり、シャッタを全閉したりすることで露光を遮断することが可能である。
【００５０】
レンズ鏡筒１０１の沈胴状態（図６（ｂ）参照）は、各レンズ群が最も接近している状態であり、この沈胴長を短くすることで、カメラの小型化を実現している。第１レンズ群３００および第２レンズ群３０１、すなわちズームレンズ１０２が沈胴した状態で、第３レンズ群３０２、すなわちフォーカスレンズ１０５を駆動すると、ズームレンズ１０２とフォーカスレンズ１０５とが衝突して破損する虞がある。したがって、この沈胴状態から繰り出し動作を行うためには、先にズームレンズ１０２を繰り出させた後、フォーカスレンズ１０５を駆動する必要がある。同様に、沈胴時にはフォーカスレンズ１０５を沈胴させた後に、ズームレンズ１０２を沈胴させる必要がある。このとき、フォーカスレンズ１０５と比較して、ズームレンズ１０２は沈胴状態から繰り出し状態となるまでの移動量が大きいため、繰り出し動作が完了するのに時間を要してしまう。そのため、レンズ鏡筒１０１の全体の繰り出し時間を短縮するように、ズームレンズ１０２の繰り出し動作が完了する前にフォーカスレンズ１０５の繰り出し動作を開始するようにしている。
【００５１】
次に、撮像装置１００に電源投入され、レンズ鏡筒１０１が繰り出され、もしくは、沈胴されるまでの処理の流れを説明する。
【００５２】
図７は、電源投入から各モードでの起動までの処理を示すフローチャートである。電源投入（Ｓ３００）後、起動モードが撮影モードであるか再生モードであるか否かの判定を行う（Ｓ３０１）。撮影モードであれば、レンズ鏡筒１０１が沈胴状態であるか否かの判定を行い（Ｓ３０２）、沈胴状態であればそのまま繰り出し処理を行う（Ｓ３０３）。一方、撮像装置１００の電源ＯＮ状態で電池が抜かれるなどして、レンズ鏡筒１０１が繰り出したまま、電源ＯＦＦ状態となる場合もあり、その状態で電源投入されると、ズームレンズ１０２およびフォーカスレンズ１０５のレンズ位置がリセットされる。そのために、一旦、沈胴処理（Ｓ３０３）を行った後に、通常の起動と同様の繰り出し処理を行う（Ｓ３０４）。その後は、撮影モードで起動（Ｓ３０５）を行う。
【００５３】
また、起動モードが再生モードであった場合も、次にレンズ鏡筒１０１が沈胴状態であるか否かの判定を行い（Ｓ３０６）、沈胴状態であれば、そのまま沈胴状態で再生モードの起動を行う（Ｓ３０８）。一方、レンズ鏡筒１０１０が繰り出し状態で電源投入された場合には、レンズ鏡筒１０１の沈胴処理を行い（Ｓ３０７）、その後に再生モードで起動を行う（Ｓ３０８）。
【００５４】
前述のように、繰り出し処理では、最初にズームレンズ１０２を駆動する必要がある。そのため、第１プログラムにはズーム駆動用プログラムが、第２プログラムにはそれ以外のプログラム（実プログラム、フォーカス駆動用プログラムが含まれる）が割り当てられる。沈胴処理では、最初にフォーカスレンズ１０５を駆動する必要がある。よって、第１プログラムにはフォーカス駆動用プログラムが、第２プログラムにはそれ以外のプログラム（実プログラム）が、それぞれ割り当てられる。メインマイコン２００のＲＯＭ２０４には、このような２種類のプログラムを格納しておき、起動モードおよび沈胴状態に応じて、転送するプログラムを変更する。
【００５５】
次に、図８および図９を用いて、プログラム転送とレンズ鏡筒１０１の処理の流れを説明する。
【００５６】
カメラシステム制御部１１６（メインマイコン２００内のＣＰＵ２０１に相当）は、図７のステップＳ３０２での判定において、レンズ鏡筒１０１が沈胴状態と判定した場合、ステップＳ３０４にて図８に示す繰り出し処理を行う。また、ステップＳ３０２もしくはステップＳ３０６の判定において、レンズ鏡筒１０１が繰り出し状態と判定した場合には、ステップＳ３０３もしくはステップＳ３０７にて図９に示す沈胴処理を行う。
【００５７】
繰り出し処理では、電源投入後、カメラシステム制御部１１６は、図８に示すように、レンズシステム制御部１１０（サブマイコン２００内のＣＰＵ２０６に相当）に対してズーム駆動用プログラムの転送を開始する。レンズシステム制御部１１０は、プログラムを受信後、チェックサム判定が正常であれば、カメラシステム制御部１１６に対して受信完了命令を返信する。
【００５８】
カメラシステム制御部１１６は、受信完了命令を受信すると、それ以外の実プログラムをレンズシステム制御部１１０に転送する。それと同時に、撮像素子１１１やＡＦＥ回路１１２などの撮像回路の電源投入を開始する。実プログラム転送開始後、撮像回路の突入電流を回避するタイミング（ピーク電流が重ならないタイミング）で、レンズシステム制御部１１０にズーム繰り出し開始命令を送信する。このように、実プログラムの転送とズーム繰り出し開始命令が平行して行われる。突入電流の検出は、電流検出回路により検出したり、あらかじめ突入電流時間を計測しておき、その時間経過を計測したりすることで検出する等がある。
【００５９】
ズーム制御部１０９は、レンズシステム制御部１１０から制御開始命令を受けると、ズームレンズ１０２の繰り出し処理を開始する。ズーム制御部１０９は、駆動開始後、突入電流の発生を検出して、カメラシステム制御部１１６に通知する。カメラシステム制御部１１６は、このズーム制御部１０９の突入電流を回避して画像表示部１１５の電源を投入する。その後、カメラシステム制御部１１６には、実プログラムの転送完了と、画像表示部１１５の突入電流終了の通知がされる。また、ズームレンズ１０２がフォーカスレンズ１０５と衝突しない位置まで繰り出されたときに、レンズシステム制御部１１０からフォーカス制御部１０６を介してフォーカスレンズ１０５の駆動開始許可命令が通知される。
【００６０】
これらの通知がすべて揃うと、フォーカス制御部１０６に繰り出し開始命令が送信され、ズームレンズ１０２とフォーカスレンズ１０５とが同時に繰り出し動作を行うこととなる。その後、各々のレンズが繰り出し位置まで到達すると、カメラシステム制御部１１６には繰り出し完了通知がなされ、繰り出し動作が完了する。
【００６１】
次に、沈胴処理について、図９にしたがって説明する。
【００６２】
電源投入後、カメラシステム制御部１１６（メインマイコン２００内のＣＰＵ２０１）は、レンズシステム制御部１１０（サブマイコン２００内のＣＰＵ２０６）に対してフォーカス駆動用プログラムの転送を開始する。レンズ鏡筒１０１の沈胴時は、その他の周辺デバイスの駆動は行われない。したがって、フォーカス駆動用プログラムの受信完了後、すぐにカメラシステム制御部１１６はフォーカス制御部１０９に沈胴命令を送信する。沈胴開始と同時に、実プログラム（ズーム駆動用プログラムを含む）の転送も開始する。このように、実プログラムの転送とフォーカス沈胴開始命令とが平行して行われる。レンズ鏡筒１０１の繰り出し時間を短縮するため、ズームレンズ１０２の駆動速度は、フォーカスレンズ１０５に対して高速に設定されている。そのため、沈胴時には、ズームレンズ１０２とフォーカスレンズ１０５とを同時に駆動すると衝突する虞があるため、沈胴時にはフォーカスレンズ１０５が沈胴した後、ズームレンズ１０２の沈胴動作を開始する。ズームレンズ１０２の沈動が完了した時点で、レンズシステム制御部１１０はカメラシステム制御部１１６にレンズ鏡筒１０１の沈胴完了を通知する。
【００６３】
上記実施例１における撮像装置１００は、以下の構成要素よりなる。被写体像を撮像して画像信号を出力する撮像手段である撮像素子１１１を有する。さらに、焦点距離を変更して被写体像の画角を変更するズームレンズ１０２およびズーム制御部１０６と、ピント位置を調整するフォーカスレンズ１０５、フォーカス制御部１０９とを有する。さらに、システム全体の制御を行う第１ＣＰＵであるＣＰＵ２０１、および複数のプログラムを格納する不揮発性メモリであるＲＯＭ２０４を有するメインマイコン２００を有する。さらに、ズーム制御部１０６とフォーカス制御部１０９を制御するプログラムが転送される揮発性メモリであるＲＡＭ２０９を有する。さらに、揮発性メモリに転送されたプログラムにしたがってズーム制御部１０６とフォーカス制御部１０９の制御を行う第２ＣＰＵを有するサブマイコン２０６を有する。
【００６４】
上記ＲＯＭ２０４は、ズーム制御部１０６を制御するための第１プログラムとフォーカス制御部１０９を制御するための第２プログラムとを分割して格納している。そして、メインマイコン２００のＣＰＵ２０１は、第１プログラムと第２プログラムとをサブマイコン２０６のＲＡＭ２０９に転送する際には、まず第１プログラムと第２プログラムの一方の転送を開始する。そして、サブマイコン２０６から受信完了を受信すると、第１プログラムと第２プログラムの他方の転送を開始するとともに、並行してズーム制御部１０６またはフォーカス制御部１０９の制御開始命令を送信する。サブマイコン２０６のＣＰＵ２０７は、制御開始命令を受信した後、第１プログラムと第２プログラムの他方を受信するのと並行して、ズーム制御部１０６またはフォーカス制御部１０９の制御を行う。
【００６５】
なお、上記ズーム制御部１０６の制御開始命令を発生するタイミングは、第１ＣＰＵによって行われる起動処理とズーム制御部１０６の制御処理とで生じる電気的な負荷が重ならないタイミングである。具体的には、撮像素子１１１および画像表示部１１５を制御する制御回路に流れる電流とズーム制御部１０６に流れる電流とでピーク電流が重ならないタイミングである。
【００６６】
また、上記実施例１における撮像装置１００は、以下の構成要素を有する。撮影モードか再生モードかを判定するモード判定手段（図７のステップＳ３０１）と、ズーム手段（および前記フォーカス手段に含まれる各レンズ）が繰り出し状態か沈胴状態かを判定する状態判定手段（図７のステップＳ３０２，Ｓ３０６）とを有する。
【００６７】
そして、メインマイコン２００のＣＰＵ２０１は、第１プログラムと第２プログラムとをＲＡＭ２０９に転送する際には、以下のようにする。つまり、図７ないし図９に示すように、モード判定手段によって判定された判定結果、および、状態判定手段によって判定された判定結果に応じて、第１のプログラムと第２のプログラムの順番を変更して転送するようにしている。
【００６８】
上記のような構成にすることにより、第１、第２プログラムを格納するためのサブマイコン２０６内のＲＯＭ２１０をなくし、あるいは転送プログラムだけを格納することでそのメモリ領域を減らすようにしている。よって、コストおよびチップサイズの削減を図ることができる。また、プログラム転送と周辺デバイスの制御開始命令を並行して行うようにしているので、起動時間の短縮化を図ることができる。さらに、第１ＣＰＵ２０１によって行われる起動処理と第２ＣＰＵ２０７によって行われるズーム駆動手段またはフォーカス駆動手段の制御開始とで生じる電気的な負荷が重ならないようにしている。よって、ピーク電流を低減させることができ、省電力化を実現することができる。
【実施例２】
【００６９】
次に、本発明の実施例２に係る撮像装置について説明する。図１０は、三つのＣＰＵとその周辺装置（ペリフェラル）のハードウェア構成を示すブロック図である。なお。撮像装置の構成は、図１や図６と同様であるものとする。
【００７０】
大容量の不揮発性メモリを持つメインマイコン４００と、小容量の不揮発性メモリを持つ二つのサブマイコン４０６および４１２によって構成されている。メインマイコン４００（ＣＰＵ４０１）では、カメラシステム制御部１１６の制御が行われる。サブマイコン４０６（ＣＰＵ４０７）では、レンズシステム制御部１１０およびズーム制御部１０６の制御が、サブマイコン４１２（ＣＰＵ４１３）では、レンズシステム制御部１１０およびフォーカス制御部１０９の制御が、それぞれ行われる。また、絞りシャッタ制御部１０７およびＩＳ制御部１０８は、サブマイコン４０６およびサブマイコン４１２のいずれかで制御が行われる。
【００７１】
上記実施例１と同様に、サブマイコン４０６および４１２上の不揮発性メモリ容量は小容量であるため、電源投入時にプログラムを転送する必要がある。このとき、実施例１で説明したように、起動モード（撮影モードもしくは再生モード）およびズームレンズ１０２の沈胴状態の判定結果に応じて、ズームレンズ１０２およびフォーカスレンズ１０５のいずれかを先に駆動する必要がある。したがって、この判定結果に応じて、メインマイコン４００からサブマイコン４０６または４１２にプログラムを転送する順番を変更する。
【００７２】
また、複数の起動モードから選択されたモードを判定する、つまり撮影モードか再生モードかを判定するモード判定手段と、前記ズーム手段および前記フォーカス手段の状態を判定する状態判定手段とを有する。そして、モード判定手段によって判定された判定結果、および、状態判定手段によって判定された判定結果に応じて、第１のプログラムと前記第２のプログラムを転送する順番を変更して転送するようにしている。
【００７３】
よって、実施例２においても、プログラムを格納するための不揮発性メモリをなくし、あるいはそのメモリ領域を減らすようにしているので、コストおよびチップサイズの削減を図ることができる。また、プログラム転送と周辺デバイスの制御開始命令を並行して行うようにしているので、起動時間の短縮化を図ることができる。さらに、実施例１と同様に、ピーク電流を低減でき、省電力化を実現することができる。
【００７４】
上記実施例１および２では、ＣＰＵが二つまたは三つの場合を説明したが、四つ以上であってもよい。また、ＣＰＵ間の通信がシリアル通信である例を示したが、バスで直接接続されていてもよい。
【００７５】
（発明と実施例の対応）
本発明において、ズーム制御部１０６が本発明の第１駆動手段、ズーム制御手段に相当し、フォーカス制御部１０９が本発明の第２駆動手段、フォーカス制御手段に相当する。また、図７のステップＳ３０１の動作を行う部分が、本発明の、起動モードを判定するモード判定手段、撮影モードか再生モードかを判定するモード判定手段に相当する。また、図７のステップＳ３０２，Ｓ３０６の動作を行う部分が、本発明の、第１駆動手段または第２駆動手段の状態を判定する状態判定手段、ズームレンズが繰り出し状態か沈胴状態かを判定する状態判定手段に相当する。
【符号の説明】
【００７６】
２００  メインマイコン
２０１  メインＣＰＵ
２０２  データ転送装置
２０４  不揮発性メモリ
２０６  サブマイコン
２０７  サブＣＰＵ
２０８  データ転送装置
２０９  揮発性メモリ
【図１】
2010204326.tif 000003
【図２】
2010204326.tif 000004
【図３】
2010204326.tif 000005
【図４】
2010204326.tif 000006
【図５】
2010204326.tif 000007
【図６】
2010204326.tif 000008
【図７】
2010204326.tif 000009
【図８】
2010204326.tif 000010
【図９】
2010204326.tif 000011
【図１０】
2010204326.tif 000012