"撮影光学系と撮像手段が一体のカメラユニットと、カメラユニットを着脱可能なボディと、カメラユニットとボディを接続する接続手段と、を有するカメラシステムにおいて、ボディは、ボディの動作を制御する第1のボディ制御プログラムが第1領域に記憶された第1の不揮発メモリと、ボディ制御プログラムを実行するCPUと、互いのバージョンが調整された、第2のボディ制御プログラム、及び、カメラユニットの動作を制御する第2のカメラユニット制御プログラムを記憶した第2の不揮発メモリから、前記接続手段を介して前記第2のボディ制御プログラム及び前記第2のカメラユニット制御プログラムをカメラユニットに送信する第1のプログラム送信手段と、カメラユニットから受信した前記第2のボディ制御プログラムを、前記第1領域とは異なる前記第1の不揮発メモリの第2領域に記憶するプログラム記録手段と、を有し、カメラユニットは、ボディから受信した前記第2のカメラユニット制御プログラムにより、予め第3の不揮発メモリに記憶されている第1のカメラユニット制御プログラムを更新するプログラム更新手段と、前記接続手段を介して前記第2のボディ制御プログラムをボディに送信する第2のプログラム送信手段と、を有する、ことを特徴とするカメラシステム。ボディは、前記第2領域に前記第2のボディ制御プログラムが記憶されているか否か、又は、前記第2領域に前記第2のボディ制御プログラムのバージョンと、カメラユニットの前記第3の不揮発メモリに記憶されているカメラユニット制御プログラムのバージョンに整合性があるか否か、を判定する判定手段を有し、前記第2領域に前記第2のボディ制御プログラムが記憶されていないか、又は、バージョンに整合性がない場合にのみ、前記プログラム記録手段は、カメラユニットから前記第2のボディ制御プログラムを受信する、ことを特徴とする請求項1記載のカメラシステム。ボディは、前記第2領域に前記第2のボディ制御プログラムが記憶されている場合、前記第1のボディ制御プログラムより優先して、前記CPUに前記第2のボディ制御プログラムを実行する、ことを特徴とする請求項1又は2記載のカメラシステム。ボディは、前記接続手段にカメラユニットが接続されていない場合、前記第2領域に前記第2のボディ制御プログラムが記憶されていても、前記第1領域に記憶された前記第1のボディ制御プログラムを実行する、ことを特徴とする請求項3記載のカメラシステム。前記第1の不揮発メモリは、前記第1のボディ制御プログラムに加え、前記第1のボディ制御プログラムと同一バージョンの第1のボディ用リソースデータを記憶しており、前記第1のプログラム送信手段は、前記第2の不揮発メモリに記憶されている前記第2のボディ制御プログラムと同一バージョンの第2のボディ用リソースデータをカメラユニットに送信し、前記プログラム記録手段は、カメラユニットから受信した前記第2のボディ用リソースデータを、前記第2領域に記憶する、ことを特徴とする請求項1~4いずれか1項記載のカメラシステム。前記第2のプログラム送信手段は、ボディにカメラユニットが装着された時又はバッテリがボディに装着された時、前記接続手段を介して前記第2のボディ制御プログラム及び前記第2のボディ用リソースデータをボディに送信する、ことを特徴とする請求項5記載のカメラシステム。本体側の制御を受ける第1部材と、前記第1部材が着脱可能な第2部材と、前記第1部材と前記第2部材を接続する接続手段と、を有する情報処理システムにおいて、前記第2部材は、前記第2部材の動作を制御する第1の第2部材制御プログラムが第1領域に記憶された第1の不揮発メモリと、第2部材制御プログラムを実行するCPUと、互いのバージョンが調整された、第2の制御プログラム、及び、前記第1部材の動作を制御する第2の第1部材制御プログラムを記憶した第2の不揮発メモリから、前記接続手段を介して前記第2の第1部材制御プログラム及び前記第2の第2部材制御プログラムを前記第1部材に送信する第1のプログラム送信手段と、前記第1部材から受信した前記第2の第2部材制御プログラムを、前記第1領域とは異なる前記第1の不揮発メモリの第2領域に記憶するプログラム記録手段と、を有し、前記第1部材は、前記第2部材から受信した前記第2の前記第1部材制御プログラムにより、予め第3の不揮発メモリに記憶されている第1の第1部材制御プログラムを更新するプログラム更新手段と、前記接続手段を介して前記第2の第2部材制御プログラムを前記第2部材に送信する第2のプログラム送信手段と、を有する、ことを特徴とする情報処理システム。撮影光学系と撮像手段が一体のカメラユニットと接続する接続手段を有し、カメラユニットを着脱可能なカメラ本体であって、ボディの動作を制御する第1のボディ制御プログラムが第1領域に記憶された第1の不揮発メモリと、ボディ制御プログラムを実行するCPUと、互いのバージョンが調整された、第2のボディ制御プログラム、及び、カメラユニットの動作を制御する第2のカメラユニット制御プログラムを記憶した第2の不揮発メモリから、前記接続手段を介して前記第2のボディ制御プログラム、及び、カメラユニットが予め第3の不揮発メモリに記憶されている第1のカメラユニット制御プログラムを更新するための前記第2のカメラユニット制御プログラムをカメラユニットに送信する第1のプログラム送信手段と、カメラユニットから受信した前記第2のボディ制御プログラムを、前記第1領域とは異なる前記第1の不揮発メモリの第2領域に記憶するプログラム記録手段と、を有するカメラ本体。ところで、カメラユニット交換式カメラシステムでは、ボディのラインナップに対してカメラユニットのラインナップの方が多いために、ボディとカメラユニットのファームウェアのバージョンの組み合わせが数多く発生するという不都合があることが知られている。この点、特許文献1に開示されたアップデート方法では、カメラユニットの出荷時はカメラユニット制御プログラムとカメラユニット特有の機能に対応したボディ制御プログラムの組合せが得られる。しかし、カメラユニットの出荷後に、さらにカメラユニットに機能が追加された場合、カメラユニット制御プログラムとボディ制御プログラムのバージョンの組合せをどのように検証するかが考慮されていないという問題がある。また、特許文献2に開示されたアップデート方法では、新しいファームウェアにより自動的にアップデートされるが、自動的にアップデートしたボディ用のファームウェアとカメラユニット用のファームウェアの組合せが、互換性が検証された組合せとは限らないという問題がある。本発明は、上記課題に鑑み、ユーザを煩わせることなくカメラユニットへ機能追加をすることが可能なカメラシステムを提供することを目的とする。本発明は、撮影光学系と撮像手段が一体のカメラユニットと、カメラユニットを着脱可能なボディと、カメラユニットとボディを接続する接続手段と、を有するカメラシステムにおいて、ボディは、ボディの動作を制御する第1のボディ制御プログラムが第1領域に記憶された第1の不揮発メモリと、ボディ制御プログラムを実行するCPUと、互いのバージョンが調整された、第2のボディ制御プログラム、及び、カメラユニットの動作を制御する第2のカメラユニット制御プログラムを記憶した第2の不揮発メモリから、前記接続手段を介して前記第2のボディ制御プログラム及び前記第2のカメラユニット制御プログラムをカメラユニットに送信する第1のプログラム送信手段と、カメラユニットから受信した前記第2のボディ制御プログラムを、前記第1領域とは異なる前記第1の不揮発メモリの第2領域に記憶するプログラム記録手段と、を有し、カメラユニットは、ボディから受信した前記第2のカメラユニット制御プログラムにより、予め第3の不揮発メモリに記憶されている第1のカメラユニット制御プログラムを更新するプログラム更新手段と、前記接続手段を介して前記第2のボディ制御プログラムをボディに送信する第2のプログラム送信手段と、を有する、ことを特徴とする。ユーザを煩わせることなくカメラユニットへ機能追加をすることが可能なカメラシステムを提供できる。以下、本発明を実施するための形態について図面を参照しながら説明する。図1は、本実施形態のカメラシステムの概略的な特徴を説明する図の一例である。カメラシステムは、レンズやズーム機構等が搭載されたカメラユニット200と、カメラユニット200が装着されるボディ100とを有する。ボディ100のフラッシュROMには、メーカの出荷時に少なくとも1つのボディ用のファームウェア以下、ボディファームウェアというが記憶されている。同様に、カメラユニット200のフラッシュROMには、メーカの出荷時に少なくとも1つのカメラユニット用のファームウェア以下、カメラユニットをCU、カメラユニット用のファームウェアをCUファームウェアというが記憶されている。ファームウェアのアップデート時、撮影者などのユーザにより、ボディ100とカメラユニット200の対のファームウェアが記憶されたメモリカードが用意される。対とは、ボディ100とカメラユニット200のファームウェアのバージョンが一致しているなど、互いの機能を十分に利用できるように調整されていることをいう。アップデートの際、ボディ100はメモリカードの2つのファームウェアをカメラユニット200に送信する。カメラユニット200は、すでに記憶しているCUファームウェアを、受信したアップデート用のCUファームウェアで更新上書きする。また、カメラユニット200は、アップデート用のボディファームウェアをフラッシュROMに記憶しておく。そして、カメラユニット200はアップデート用のボディファームウェアを、ボディ100に送信する。これにより、対のファームウェアのうちボディ用がボディ100に、カメラユニット200用がカメラユニット200にそれぞれ記憶されたことになる。なお、ボディ100は、アップデート用のボディファームウェアで出荷時のボディファームウェアを上書きしない。したがって、カメラシステムは、組合せが検証されたカメラユニットとボディのファームウェアの組合せにより全体を制御することができる。また、ボディ100には出荷時のファームウェアが記憶されたままなので、ボディ100の機能だけが追加されるファームウェアのバージョンアップがあっても、ボディファームウェアだけをアップデートすることができる。また、ファームウェアはボディに記憶されるので、ボディの制御プログラムの起動時間が長くなるのは、アップデート時だけにすることができる。構成例図2は、カメラシステムの斜視図の一例を示す。図2aは単焦点レンズのカメラユニット200aが装着されるカメラシステム300を、図2bは光学ズームレンズのカメラユニット200bが装着されるカメラシステム300を、それぞれ示す。カメラシステム300は、ボディ100と、ボディ100に着脱可能なカメラユニット200を有する。カメラシステム300は、カメラユニット200とボディ100が一体となって撮像システムとしての機能を発揮する。カメラユニット200は、主にレンズの種類によって種々のタイプのものが用意されている。ユーザは複数のカメラユニット200から適宜選択してボディ100に装着することができる。カメラユニット200には、例えば、標準レンズ、ズームレンズ、広角レンズ、望遠レンズ、マクロレンズ、ソフトフォーカスレンズ等がある。図2aと図2bに示すように、カメラユニット200a、200bのタイプは異なっていても、ボディ100は共通である。なお、カメラシステム300は、一般にデジタルスチルカメラと呼ばれるカメラであり、一眼レフカメラ又はコンパクトデジタルカメラの双方を含む。また、デジタルスチルカメラは、ビデオ撮影が可能でも可能でなくてもよい。一方、カメラシステム300がデジタルビデオカメラでも、レンズと本体が着脱可能であれば、本実施形態のファームウェアのアップデート方法を適用できる。また、必ずしもカメラとカメラユニットの組である必要はなく、2つの部材がそれぞれファームウェアを実行し互いに通信することで一体に動作するシステムであれば、本実施形態のアップデート方法を適用できる。図3は、ボディ100の斜視図の一例を示す。ボディ100の上面には、アップダウンダイヤル101、ロックボタン102、モードダイヤル103、シャッターボタン104、電源スイッチ105、ホットシュー107、フラッシュカバー108、マイク109、ストラップ取り付け部110、及び、フラッシュ発光部111が配置されている。アップダウンダイヤル101は、メニューに表示される設定を変更するためのダイヤルである。ロックボタン102は、モードダイヤルの回転を許可するためのボタンである。シャッターボタン104は、静止画を撮影するためのボタンである。電源スイッチ105は、電源をオン又はオフするためのボタンである。ホットシュー107は、外部フラッシュを装着するための接続部である。フラッシュカバー108はフラッシュ発光部111を保護するためのカバーである。マイク109は外部の音と集音する素子である。ストラップ取り付け部110は、カメラシステム300を携帯するためのストラップを取り付ける部位である。フラッシュ発光部111は夜間や暗部の撮影時に被写体を照明するランプである。また、前面には、AF補助光106及びカメラユニット取り外しレバー112が配置されており、カメラユニット200の取り付け部には、カメラユニット取り付け位置ガイド114と、端子113が配置されている。AF補助光106は、周囲が暗く、オートフォーカスでの測距が難しい状況で発光されるライトである。AF補助光106によりAF測距が行われる。カメラユニット取り外しレバー112は、カメラユニット200を脱着する際にユーザがスライドさせるレバーである。カメラユニット取り付け位置ガイド114は、ボディ100に対しカメラユニット200の位置あわせを行うための案内手段である。端子113は、カメラユニット200とボディ100を電気的に接続するための端子である。図4は、ボディ100の構成を示す斜視図の一例である。ボディ100の背面には、DIRECTボタン116、フラッシュオープン/設定ボタン117、VF/LCDボタン118、画像モニター120、オートフォーカス/フラッシュランプ119、USB端子136、AV出力端子137、HDMIミニ出力端子138、ADJ.レバー121、再生ボタン122、マクロボタン123、望遠/拡大表示ボタン124、広角/サムネイル表示ボタン125、上下左右方向キー126、MENU/OKボタン127、DISP.ボタン128、セルフタイマー/削除ボタン129、三脚ネジ穴135、バッテリ/カードカバー134、解除レバー133、電源DC入力ケーブルカバー132、スピーカ131、ストラップ取り付け部130、及び、端子カバー139が配置されている。DIRECTボタンは、現在の撮影設定を画面モニター120に表示するためのボタンであり、ユーザが画面モニター120から項目を選択することで、直接設定を変更すること可能にするボタンである。フラッシュオープン/設定ボタンは、フラッシュカバーを開放するためのボタンである。VF/LCDボタンは、画面モニター120をオフ又はオンにするためのボタンである。画面モニター120は撮影されている映像を表示するためのビューファインダーであり、また、各種のメニューを表示するために使用される。画面モニター120はタッチパネルになっており、操作を受け付けることもできる。オートフォーカス/フラッシュランプは、点灯色と点灯状態によりピント合わせの状態を通知する。USB端子は他の機器とUSBシリアル通信するための端子である。AV出力端子は、AVケーブルを接続することでテレビ画面などに映像や画像を表示するための端子である。HDMIミニ出力端子は、HDMIケーブルを接続することでテレビ画面などに映像や画像を表示するための端子である。ADJ.レバーは、メニューの項目が選択されている状態でユーザが押すことで、選択されている撮影設定項目の選択肢を表示するレバーである。設定を変更後、ユーザがADJレバーを押すと変更が確定される。再生ボタンは、撮影モードから再生モードに切り換えたり、再生モードで電源をオンにして、すでに撮影した画像や映像を再生するためのボタンである。マクロボタンは、レンズを被写体に接近させて撮影するためのボタンである。望遠/拡大表示ボタンは、範囲を狭めて被写体を大きく撮影するためのボタンである。広角/サムネイル表示ボタンは、被写体を小さくして広い範囲を撮影するためのボタンである。上下左右方向キーは、モニター画面のメニューやカーソルを移動させるためのボタンである。MENU/OKボタンは、設定を確定入力するためのボタンである。DISP.ボタンは、撮影モード、再生モードのそれぞれで画面表示を切り換えるためのボタンである。セルフタイマー/削除ボタンは、設定された時間の経過後に自動的にシャッタを押すためのボタン、及び、ファイルを削除するためのボタンである。三脚ネジ穴は、三脚を取り付けるためのねじ穴である。バッテリ/カードカバーは、バッテリとメモリカードの収納部のカバーである。バッテリ/カードカバーを開けると、バッテリ挿入部とカード挿入部が設けられており、ここにバッテリとメモリカードが装填される。解除レバーは、バッテリ/カードカバーをオープンするためのレバーである。電源DC入力ケーブルカバーは、補助電源を入力するケーブルの装着部のカバーである。スピーカは、例えばシャッタ音を出力する出力部である。端子カバーは、AVケーブル等の端子を保護するカバーである。図5は、カメラユニットの斜視図の一例である。カメラユニット200の側面には端子201が、正面にはリングキャップ202、レンズ204、及び、リングキャップ取り外しボタン203が配置されている。カメラユニット200は、ボディ100の取り付け部のカメラユニット取り付け位置ガイド114からボディ100の側面に向かって摺動して装着される。カメラユニット200がボディ100に装着されると、カメラユニット200の端子201がボディ100の端子113と接続される。リングキャップ202は、特定のレンズやアダプタを装着するための装着部を保護するキャップである。レンズ204は、像を撮像素子上で結像させる光学系である。リングキャップ取り外しボタン203は、リングキャップを取り外すためのボタンである。カメラシステムの動作についてカメラシステム300は、利用可能な機能と関係するいくつかのモードを有する。ユーザは、モードダイヤルを操作して、ポジションを所望の位置に合わせることよりカメラシステム300のモードを設定する。静止画撮影や動画撮影などのカメラの操作は、このモードダイヤルを切り替えてから行う。カメラシステム300のモードは、例えば、シーンモード、静止画撮影モード、動画撮影モードの3種類がある。静止画撮影モードは、静止画を撮影する場合に使用されるモードであり、シーンモードには、特定の撮影状況に応じてポートレートモード、フェイスモード、スポーツモード、遠景モード、夜景モード、高感度モード、ズームマクロモード、白黒モード、セピアモード、斜め補正モード、文字モードなどがある。動画撮影モードは、動画を撮影する場合に使用されるモードである。再生ボタンは、カメラシステム300のモードを再生モードへ切り換えるボタンである。撮影モード時、この再生ボタンが押下されると、最後に撮影された静止画が画面モニター120に表示される。レンズ204は、沈胴式のズームレンズで構成されており、電源スイッチによりカメラシステム300の電源が投入され、ユーザがモードダイヤルによりカメラのモードを撮影モードに設定すると、カメラユニット200から繰り出される。ユーザが、撮影モード時に望遠/拡大表示ボタンを押下すると、カメラシステム300は、レンズを望遠側へズームして、広角/サムネイル表示ボタンを押下すると、レンズを広角側へズームする。これによりレンズの焦点距離が変化される。また、再生モード時に、ユーザが広角/サムネイル表示ボタンを押下すると、再生中の画像が縮小表示され、望遠/拡大表示ボタンを押下すると、再生中の画像が拡大する。すなわち、再生した画像の表示倍率が変化させられる。シャッターボタン104は、2段式のスイッチで構成されており、半押し操作と押し切り操作が可能である。シャッターボタンが半押し操作されるとAE/AFが作動し、押し切り操作されると、AWBAutoWhiteBalanceが作動し撮影を実行する。画面モニター120は、カラー表示が可能な液晶ディスプレイで構成されており、再生モード時には撮影済み画像を表示するための画像表示パネルとして利用されるとともに、各種設定操作を行なう際のユーザインターフェース表示パネルとして利用される。また、撮影モード時には、必要に応じてライブビューが表示されて、画角確認用のファインダとして利用される。方向キー↑/↓/←/→は、上下左右4方向の指示を入力する方向指示手段として機能し、たとえば、メニュー画面でメニュー項目の選択などに使用される。MENU/OKボタンは、各モードの通常画面からメニュー画面への遷移を指示するボタンMENUボタンとして機能するととともに、選択内容の確定、処理の実行等を指示するボタンOKボタンとして機能する。DISPボタンは、画面モニター120のマークの表示/非表示を切り替えるなど、画面の表示状態の変更を指示するボタンとして機能する。撮影モード時、ユーザがこのボタンを1回押下するごとに、ヒストグラム表示→グリッドガイド表示→表示なし→画面モニターオフ→通常のマーク表示→ヒストグラム表示→と切り替えられる。再生モード時、ユーザがこのボタンを1回押下するごとに、ヒストグラム表示→ハイライト表示→表示なし→通常のマーク表示→ヒストグラム表示→と切り替えられる。また、このボタンは、入力操作のキャンセルや一つ前の操作状態に戻すことを指示するボタンとしても機能する。制御系統例図6は、カメラシステム内部の制御系統の構成例を示す図の一例である。カメラユニット200及びボディ100はそれぞれ中央処理装置CPUを有し、カメラユニット200及びボディ100の各部は、全体の動作をCPUによって統括制御している。ボディ100は、DC/DCコンバータ31、バッテリ37、バスを介して接続された外部バスI/F32、制御用ポート33、CCIR信号受信部34、画像信号処理部35、圧縮伸張処理部36、メモリカード制御部38、音声信号処理部39、OSDMIX部40、USB制御部41、ボディCPU42、フラッシュROM62及びSDRAM64、メモリカード43、オーディオCODEC44、スピ-カ131、マイク109、ビデオCODEC45、AV出力端子49、画像モニター信号処理部46、画面モニター120、USB端子136、操作部各種のボタンの総称51、ランプ状態などを通知する各種のランプ52、並びに、フラッシュ発光部111を有する。ボディCPU42は、ボディ制御プログラムを操作部から入力される操作信号に基づき実行して、ユーザの操作に応じてカメラシステム全体を統括制御する。フラッシュROM62には、ボディCPU42が実行するボディブートプログラム、ボディ制御プログラム、リソースデータ、及び、ボディ固有データたとえば工場にて設定された各部を調整する調整データやユーザ設定情報などのカメラシステム300の動作に関する各種設定情報が格納されている。ボディ制御プログラムとリソースデータがボディファームウェアである。フラッシュROM62は、NAND型フラッシュメモリで構成されており、NOR型フラッシュメモリと比べて回路規模が小さく、安価に大容量化できる。近年のデジタルカメラは、NAND型フラッシュメモリの低価格化により、大容量の内蔵メモリを具備し、ファームウェアなどプログラムの格納だけではなく、画像ファイルを格納できるものが増えている。また、NAND型フラッシュメモリは書き込みや消去も高速であるが、データの読み出しにおいてはRAMのようなアドレス指定によるアクセスができない。このため、ボディ制御プログラムなどCPUにて実行するプログラムコードは、一旦RAMへコピーしてから実行される。ボディのSDRAM64は、ボディCPU42の演算作業用領域、画像データRaw-RGB画像データ、YUV画像データ、圧縮伸張画像データ等の一時記憶領域として利用される。一方、カメラユニット200は、DC/DCコンバータ11、バスを介して接続された外部バスI/F12、制御用ポート13、CCIR信号送信部14、OSDMIX部15、カメラユニットCPU16、AF検出部23、AE/AWB検出部24、画像信号処理部25、圧縮伸張処理部26、フラッシュROM61及びSDRAM63、レンズ204、撮像素子19、AFE18、モータ21、並びに、モータドライバ22を有する。カメラユニットCPU16は、カメラユニット制御プログラムをボディCPU42から受信した制御命令に基づき実行して、カメラユニットを統括制御する。フラッシュROM61には、カメラユニットCPU16が実行するカメラユニットブートプログラム、カメラユニット制御プログラム、及び、カメラユニット固有データたとえば工場にて設定された各部を調整する調整データやユーザ設定情報などのカメラシステム300の動作に関する各種設定情報が格納されている。カメラユニット制御プログラムがカメラファームウェアである。カメラユニット200のSDRAM63は、カメラユニットCPU16の演算作業用領域、画像データRaw-RGB画像データ、YUV画像データ、圧縮伸張画像データ等の一時記憶領域として利用される。着脱自在なバッテリ37は、DC/DCコンバータ31へ電源を供給する。ボディ側のDC/DCコンバータ31は、バッテリ37の電圧をボディ100の各部に必要な所定の電圧に降圧、又は、昇圧する。また、カメラユニット側のDC/DCコンバータ11は、バッテリ37の電圧をカメラユニット200の各部に必要な所定の電圧に降圧又は昇圧する。ユーザがボディ100の電源スイッチを押下することで、ボディ100の電源がオン状態になると、同時にカメラユニットのDC/DCコンバータ11を介してカメラユニットの電源もオン状態となる。ボディブートプログラム及びカメラユニットブートプログラムはそれぞれのSDRAM63,64へロードされる。これらのブートプログラムはフラッシュROM61,62のあらかじめ決められたエリアに格納されており、電源がオンになるとまず一番初めにロードされるよう構成されている。ボディブートプログラムは、ファームウェアをアップデートするプログラムを有しており、メモリカード43にファームウェアファイル以下、ファームウェアファイルとファームウェアとは厳密には区別しないが存在する場合、ファームウェアのアップデートを行う。アップデート動作については後述する。また、これらのブートプログラムにより、ボディ100のボディ制御プログラム及びカメラユニット200のカメラユニット制御プログラムはそれぞれのSDRAM63,64へロードされる。ボディCPU42はボディ制御プログラムに従い、カメラユニットCPU16はカメラユニット制御プログラムに従い、装置各部の動作を制御する。それとともに制御に必要なデータ等を、一時的にそれぞれのSDRAM63に保存する。フラッシュROM61,62は、書き換え可能な不揮発性メモリなので、プログラムや制御に必要な各種データ、ユーザ設定情報を変更することが可能となり、機能のバージョンアップが容易に行えるという特徴をもつ。<マウント部>マウント部30は、端子113と端子201が電気的に接続される接続部である。ボディCPU42とカメラユニットCPU間のコマンド及びデータ送受信のために、マウント部30には外部バスI/F12,32、制御ポート13,33、CCIR信号送信部14、及び、CCIR信号受診部34が接続されている。ボディ100の外部バスI/F32とカメラユニット200の外部バスI/F12は、マウント部に設けられた電気接点を介して、互いに接続する。2つの外部バスI/F12,32は、双方向通信が可能な構成となっており、カメラユニット-ボディ間のコマンドのやりとりに使用される。例えば、ボディ100にある各種ボタンの状態などをボディCPU42からカメラユニットCPU16に送信したり、現在のズームレンズ位置をカメラユニットCPU16からボディCPU42へ送信することができる。さらに、外部バスI/F12,32は、画像データをカメラユニットからボディ100へ送信する時にも使用される。外部バスI/F12、32は、例えば、パラレルI/FやLVDSI/Fなど高速な転送速度を持つI/Fで構成されている。制御ポート13,33は、外部バスI/F12,32によるコマンド通信よりも、より高速にカメラユニット200からボディ又はボディからカメラユニットの機能を即座に制御したい場合に使用される。例えば、カメラユニット200がフラッシュ発光部111を制御する場合、撮像素子19からの画像取り込みタイミングに同調して制御する必要があり、外部バスI/F12,32のコマンド通信ではオーバーヘッドが問題になる。このような場合に、カメラユニット-ボディ間が制御ポート13,33を利用して通信することにより、オーバーヘッドの問題を解消している。また、カメラユニット200のCCIR信号送信部14は、ボディ100のCCIR信号受信部34と接続している。CCIR信号送信部14及びCCIR信号受信部34は、輝度/色差信号をコンポーネント映像信号たとえばITU-RBT.601規格の輝度信号及び色差信号へ変換し、映像信号の一方向通信が可能な構成となっている。CCIR信号送信部14は、カメラユニット側で撮像素子19から取り込んだ画像信号から生成される輝度/色差信号を送信する。CCIR信号受信部34はそれを受信する。ユーザは、ボディ側の画面モニター120及びAV出力端子49にて画像を確認することができる。<カメラユニット>レンズ204は、被写体の光学画像を取り込むズームレンズ204a、焦点を合わせるフォーカスレンズ204bによって構成されている。光軸に沿ってズームレンズ、フォーカスレンズ、不図示の絞り、及び、不図示のシャッタが配置されており、ズームモータ、フォーカスモータ、アイリスモータ、及び、シャッタの各モータ21がモータドライバ22を介してこれらの位置を制御する。ズームモータは、ズーム広角ボタン及びズーム望遠ボタンに連動して動作し、ズームレンズを広角側、又は、望遠側へ移動させる。フォーカスモータは、シャッターボタンの半押し操作によるオートフォーカスに連動して動作し、フォーカスレンズを至近側、又は、無限遠側へ移動させる。アイリスモータは、シャッターボタンの半押し操作による自動露光に連動して動作し、絞りの開口面積を変化させることにより絞り値を変化させ、撮影レンズから入射する光量を調節する。シャッタモータは、シャッターボタンの全押し操作による撮影動作に連動して動作し、通常はシャッタを開くように制御する。シャッタが開くと撮像素子19は例えば撮像素子19の信号蓄積を開始する。シャッタモータは、露光シャッタ時間経過後に光を遮断するためシャッタを閉じる。モータドライバ22は、バスを介してカメラユニットCPU16に接続されており、カメラユニットCPU16からの制御信号に基づいて各モータ21に駆動パルスを送信する。各モータ21は、この駆動パルスに応じて回転軸を回転駆動する。カメラユニット200がボディ100に装着されている時、カメラユニット200は、ユーザがボディ100の電源スイッチを押すことで、撮影モードに設定され、撮影が可能になる。そして、撮影モードに設定されることにより、レンズ204が繰り出され、撮影スタンバイ状態になる。この撮影モードにおいて、レンズ204を通過した被写体光は、絞りを介して撮像素子19の受光面に結像される。レンズの背面には、撮影レンズを透過した被写体光を受光面にて結像し光電変換する撮像素子固体撮像素子はCCDで構成されており、その受光面には、所定の配列構造ベイヤー、Gストライプなどで配列された赤R、緑G、青Bのカラーフィルタを介して多数のフォトダイオード受光素子が二次元的に配置されている19が配置されている。AFEAnalogFrontEnd18は、タイミングジェネレータTG、アナログ処理部CDS/AMP、A/D変換器等で構成されている。レンズを通過した被写体光は、撮像素子19の各フォトダイオードによって受光され、入射光量に応じた量の信号電荷に変換される。各フォトダイオードに蓄積された信号電荷は、カメラユニットCPU16の制御のもとにタイミングジェネレータTGから与えられる駆動パルスに基づいて、信号電荷に応じた電圧信号画像信号として順次読み出され、アナログ処理部CDS/AMPに加えられる。アナログ処理部CDS/AMPは、入力された画素ごとのRGB信号をサンプリングホールド相関二重サンプリング処理するとともに増幅し、A/D変換器に出力する。A/D変換器は、アナログ処理部CDS/AMPから出力されたアナログRGB信号をデジタルRGB信号に変換して、センサ入力制御部17へ出力する。センサ入力制御部17はRaw-RGB画像データとしてカメラユニットのSDRAM63に記憶する。画像信号処理部25は、メモリに取り込まれたRaw-RGB画像データをカメラユニットCPU16の指令に従って処理し、輝度信号Y信号及び色差信号Cr、Cb信号へ変換し、YUV画像データを生成する。この画像信号処理部25は、同時化回路単板CCDのカラーフィルタ配列に伴う色信号の空間的なズレを補間して色信号を同時式に変換する処理回路、ホワイトバランス補正回路、ガンマ補正回路、輪郭補正回路、輝度色差信号生成回路等を含む画像処理手段として機能する。カメラユニットCPU16からの指令に従ってメモリを活用しながら入力されたRGB信号を信号処理することにより、輝度信号及び色差信号輝度/色差信号を生成する。生成された輝度/色差信号は、YUV画像データとしてカメラユニットのSDRAM63に記憶される。<ライブビューの表示まで>撮影画像を画面モニター120に出力する場合は、YUV画像データが、カメラユニット側のSDRAM63からOSDMIX部15に送られる。OSDMIX部15は、入力されたYUV画像データの輝度/色差信号に文字や図形などのオンスクリーンディスプレイデータを重ね合わせて合成しCCIR信号送信部14に出力する。CCIR信号送信部14は、コンポーネント映像信号たとえばITU-RBT.601規格の輝度信号及び色差信号へ変換する。CCIR信号送信部14は、ボディ100のCCIR信号受信部34と通信する。ボディ側のCCIR信号受信部34はコンポーネント映像信号を受信し、コンポーネント映像信号を輝度/色差信号へ変換し、この輝度/色差信号をYUV画像データとしてボディ側のSDRAM64に記憶する。ボディ側のSDRAM64に格納されたYUV画像データは、ボディ側のSDRAM64からOSDMIX部40へ送信される。OSDMIX部40は、入力されたYUV画像データの輝度/色差信号に文字や図形などのオンスクリーンディスプレイデータを重ね合わせて合成し、ビデオCODEC45及び画像モニター信号処理部46に出力する。これにより、所要の撮影情報等が画像データに重ねて表示される。ビデオCODEC45には、ビデオエンコーダ、D/A変換器、及びビデオAMP等が内蔵されている。ビデオエンコーダは、入力されたYUV画像データの輝度/色差信号を表示用のデジタル表示出力信号たとえばNTSC方式のカラー複合映像信号に変換し、D/A変換器にてデジタル表示出力信号をアナログビデオ出力信号に変換する。ビデオAMPは、D/A変換器から出力されたアナログビデオ信号を、75Ωインピーダンス変換し、テレビなどの外部表示機器と接続するためのAV出力端子49へ出力する。これにより、撮像素子19で撮像された画像がテレビなどの外部表示機器に表示される。一方、画像モニター信号処理部46は、入力されたYUV画像データの輝度/色差信号を画面モニター120の入力信号形式であるRGB信号へ変換し、画面モニター120へ出力する。これにより、撮像素子19で撮像された画像が画面モニター120に表示される。カメラシステム300は、撮像素子19から画像信号を定期的に取り込み、その画像信号から生成される輝度/色差信号をCCIR信号送信部14及びCCIR信号受信部34を介してボディ側SDRAM内のYUV画像データを定期的に書き換える。そして、画面モニター120及びAV出力端子49に出力することにより、撮像素子19で撮像される画像をリアルタイムに表示する。ユーザは、この画面モニター120にリアルタイムに表示される画像ライブビューを見ることにより、撮影画像を確認することができる。<レリーズ1半押しの動作>撮影はシャッターボタン104の押下によって行なわれる。撮影に先立ち、ユーザは、画角を調整する必要があれば、望遠/拡大表示ボタン、広角/サムネイル表示ボタンを操作し、ズームレンズをズーミングさせて画角を調整する。シャッターボタン104が半押しされると、R1オン信号がボディCPU42に入力され、ボディCPU42は外部バスI/F32を介してカメラユニットCPU16へ通信を行い、R1オン信号を通知する。この結果、カメラユニットCPU16は、AE/AF処理を実施する。まず、センサ入力制御部17を介して撮像素子19から取り込まれた画像信号がAF検出部23とAE/AWB検出部24に入力される。AF検出部23は、1画面を複数のエリア例えば、16×16に分割し、分割エリアごとにG信号の高周波成分のみを通過させるハイパスフィルタ、絶対値化処理部、所定のフォーカスエリアたとえば、画面中央部内の信号を切り出すAFエリア抽出部、及び、AFエリア内の絶対値データを積算する積算部を有する。AF検出部23で求めた積算値のデータはカメラユニットCPU16に通知される。カメラユニットCPU16は、モータドライバ22を介してフォーカスモータを制御し、フォーカスレンズを移動させながら複数のAF検出ポイントで焦点評価値AF評価値を演算し、評価値が極大となるレンズ位置を合焦位置として決定する。そして、求めた合焦位置にフォーカスレンズが移動するように、フォーカスモータを制御することで、オートフォーカスAF動作をおこなう。AE/AWB検出部24は、1画面を複数のエリア例えば、16×16に分割し、分割エリアごとにR、G、B信号を積算する回路を含み、その積算値をカメラユニットCPU16に提供する。カメラユニットCPU16は、AE/AWB検出部24から得た積算値に基づいて被写体の明るさ被写体輝度を検出し、撮影に適した露出値撮影EV値を算出する。そして、求めた撮影EV値と所定のマップデータから、絞り値とシャッタースピードを決定し、これに従い撮像素子19の電子シャッタとモータドライバ22を介してアイリスモータを駆動し、絞りを制御して適正な露光量を得ることで、自動露光AE動作をおこなう。以上のように、シャッターボタン104の半押しによって、AE/AF処理が行なわれる。<レリーズ2押し切り操作>ユーザがシャッターボタンを押し切ると、ボディCPU42にR2オン信号が入力され、ボディCPU42は外部バスI/F32を介してカメラユニットCPU16と通信を行い、R2オン信号を通知する。この結果、カメラユニットCPU16は、撮影及び記録処理を開始する。すなわち、カメラユニットCPU16は測光結果に基づき決定された絞り値に従いモータドライバ22を制御して絞りを動かし、シャッタ速度値に従いモータドライバ22を制御してメカシャッタの開閉動作を制御して撮像素子19の露光時間を制御することにより、撮像素子19を露光する。撮像素子19から出力された画像信号は、AFE18、センサ入力制御部17を介してカメラユニット側SDRAMに取り込まれ、画像信号処理部25において輝度/色差信号に変換されたのち、YUV画像データとしてカメラユニット側SDRAMに格納される。また、AE/AWB検出部24は、自動ホワイトバランス調整時、分割エリアごとにR、G、B信号の色別の平均積算値を算出し、その算出結果をカメラユニットCPU16に提供する。カメラユニットCPU16は、得られたRの積算値、Bの積算値、Gの積算値から分割エリアごとにR/G及びB/Gの比を求め、求めたR/G、B/Gの値の、R/G、B/G色空間における分布等に基づいて、光源種判別を行う。そして、判別された光源種に適したホワイトバランス調整値に従って、たとえば、各比の値がおよそ1つまり、1画面においてRGBの積算比率がR:G:B≒1:1:1になるように、ホワイトバランス調整回路のR、G、B信号に対するゲイン値ホワイトバランス補正値を制御し、各色チャンネルの信号に補正をかけることで、オートホワイトバランスAWB動作をおこなう。カメラユニット側のSDRAM63に格納されたYUV画像データは、外部バスI/F12,32を介してボディ側のSDRAM64へYUV画像データとして格納される。ボディのSDRAM64格納されたYUV画像データは、圧縮伸張処理部36に加えられ、所定の圧縮フォーマットたとえばJPEG形式に従って圧縮された後、再びボディのSDRAM64に圧縮伸張画像データとして格納される。所定の画像記録フォーマットたとえばExif形式の画像ファイルとされたのち、メモリカード制御部38を介してメモリカードたとえばSDカード43に記録される。以上のようにしてメモリカード43に記録された画像は、再生ボタンの押下により、画面モニター120で再生表示させることができる。<再生動作>再生ボタンの押下により、ボディ100のモードを再生モードに設定すると、ボディCPU42は、メモリカード制御部38にコマンドを出力し、メモリカード43に最後に記録された画像ファイルを読み出させる。また、ボディ100にカメラユニット200が装着されていない時、電源ボタンまたは再生ボタンの押下により、同様に再生モードとして起動する。読み出された画像ファイルの圧縮画像データは、圧縮伸張処理部36により非圧縮の輝度/色差信号に伸張されたのち、OSDMIX部40及び画像モニター信号処理部46を介して画面モニター120に出力される。これにより、メモリカード43に記録されている画像が画面モニター120に再生表示される。また、パソコンなどの外部機器とUSB通信を行うには、USB端子136を介して接続を行い、ボディCPU42は、USB制御部41を制御することにより、USB通信を行う。シャッタ音、操作音などの音声信号データはフラッシュROM62に格納されており、ボディCPU42が音声信号処理部39を制御し、この音声データを音声信号処理部39を介してオーディオCODEC44へ出力する。オーディオCODEC44は、入力された音声信号を増幅するマイクアンプや、スピーカ131を駆動するためのオーディオアンプが内蔵ており、このオーディオCODEC44には、ユーザが音声信号を入力するマイク109、音声信号を出力するスピーカ131が接続されるており、これにより音声信号はスピーカから出力される。カメラユニットCPU16は、カメラユニット200の制御用ポート13からボディ100の制御用ポート33が受信したストロボ発光信号により、フラッシュライトを発光する。ボディCPU図7は、ボディCPU42の詳細回路図の一例である。ボディCPU42のRTC部70にはバッテリ37から常時、電源が供給され、フラッシュROM62及びSDRAM64はメイン電源スイッチ71を介してバッテリ37と接続されている。バッテリ37が装着されると、ボディCPU42にリセット信号がアサートされる。よって、ボディCPU42はバッテリ37の装着直後、リセットモードになる。ボディCPU42にはRTC部70を介して電源が供給される。RTC部70は、バッテリ37の装着を検出すると、ENABLE端子からアクティブハイのENABLE信号を出力する。これによりメイン電源スイッチ71がオンになり、フラッシュROM及びSARAMに電源が供給される。バッテリ37とボディCPU42は遅延回路73を介して接続されている。遅延回路73はボディCPU42、フラッシュROM62及びSDRAM64に電源が供給される時間よりも後に、バッテリ37が装着されたことによるリセット解除信号をボディCPU42に入力する。リセット解除信号が入力されると、リセット信号がアサートされていてもボディCPU42のリセットは解除される。ボディCPU42はリセットモードから次述するノーマルモードに移行する。ノーマルモードになるとボディCPU42はプログラムの実行が可能なので、フラッシュROM62からSDRAM64に読み出されたボディ制御プログラムを実行する。ボディ制御プログラムを実行したボディCPU42は、プログラムによる設定によりスタンバイモードに移行する。したがって、ボディCPU42はバッテリ37の装着により、自動的に、リセットモード→ノーマルモード→スタンバイモードに移行する。次に、スタンバイモードのボディCPU42に対し、ユーザが電源スイッチ若しくは再生ボタンを押下した場合、又は、カメラユニットをボディに装着したカメラユニット検出スイッチがオンになった場合、常時、電源が供給されているRTC部70がそれを検出する。RTC部70はキー入力割り込みをボディCPU42に入力する。これにより、ボディCPU42はノーマルモードになるのでボディ制御プログラムを実行することができる。ボディCPUの動作モード図8は、ボディCPU42の動作モードを説明する図の一例である。動作モードには、リセットモード、ノーマルモード、及び、スタンバイモードの3つがある。リセットモードは、電源バッテリ37が供給された直後の動作モードである。ノーマルモードは、プログラムが実行される状態、又は、カメラシステム300が撮影若しくは再生を行っている状態であり、ボディCPU42は、フラッシュROM62及びSDRAM64その他周辺機能外部ポート、シリアルインタフェースなどへアクセスが可能である。スタンバイモードは、ノーマルモードより電力を削減することが可能なモードで、キー入力割込みを除く全ての内部クロック供給を停止する。RTC部70はスタンバイモードになるとENABLE信号をオフにして消費電力を低減する。リセットモードからはボディCPU42にリセット解除信号が入力されるとノーマルモードに遷移する。ノーマルモードは、リセットモードとスタンバイモードに遷移する。ノーマルモードでリセット入力されると、リセットモードへ遷移する。ボディ制御プログラムが、ボディCPU42の設定を変更すると、スタンバイモードへ遷移する。リセット入力には、バッテリ電圧の降下により、ボディCPU42への電源供給が動作可能電圧以下になった場合、又は、バッテリ取り外しによるボディCPU42への電源供給遮断がある。ボディ制御プログラムによる設定には、電源スイッチのオフや、スイッチ検出が一定時間なかった場合にボディを省電力モードへ移行する場合、などがある。スタンバイモードは、ノーマルモードとリセットモードに遷移しうる。スタンバイモードからノーマルモードへの復帰は、キー入力割込み検出スイッチ類電源スイッチ、再生ボタン、カメラユニット検出スイッチのスイッチオンにより行われる。スタンバイモードからリセットモードへの遷移は、バッテリ電圧の降下により、ボディCPU42への電源供給が動作可能電圧以下になった場合、又は、バッテリ取り外しによるボディCPU42への電源供給遮断がある。このように、電源スイッチの状態に関係なくボディCPU42の動作モードを制御することで、カメラユニット200が交換又は脱着取り外し及び再装着されたことを検出できるようにしている。なお、カメラユニットCPU16は、DC/DCコンバータ11から電源が供給されるとノーマルモードへ遷移し、ボディCPU42がスタンバイモードになるとスタンバイモードになる。ファームウェア図9は、ファームウェアファイルの構成を示す概略図の一例である。ボディファームウェアは、ボディ制御プログラムとリソースデータを有する。ボディ制御プログラムとリソースデータは、それぞれ1つのファイルとしてユーザへ提供することもできるし、それぞれを別々のファイルとして提供することもできる。図示するように、制御プログラムは、ボディ用とカメラユニット用の2種類があるが、リソースデータはボディファームウェアファイルにしか含まれていない。リソースデータは、テキスト文字列、フォントデータ、ビットマップデータ、及びGUI情報を有する。テキスト文字列は、モニター画面に表示されるメニューの説明などであり、日本語や英語など言語毎に用意されている。フォントデータはテキスト文字列の字体を修飾するためのデータである。ビットマップデータはバッテリ残量などのカメラシステム300の状態を各種のアイコンである。GUI情報は、モニター画面のスクリーンを構成する部品のレイアウト情報である。すなわち、テキスト文字列を表示する位置や大きさ、色情報が格納されている。ボディ制御プログラム及びカメラユニット制御プログラムは、ボディ100及びカメラユニット全体を制御するプログラムコードで構成されており、ボディ制御プログラムにはリソースデータを用いてGUIの振る舞いを制御するプログラムも含まれている。ここで、カメラユニット200又はボディ100に何らかの機能が追加されたり変更された場合、その機能を使用するためのテキスト文字列等も変更になる可能性がある。したがって、機能追加や変更により、テキスト文字列、フォントデータ、ビットマップデータ、及びGUI情報の1つ以上に何らかの影響があった場合、必ずリソースデータを変更する必要がある。また、カメラシステム300は複数のスクリーンを有し、ユーザ操作に応じてスクリーンを切り換えて全体的なGUIを提供する。複数のスクリーン間の遷移は、ボディ制御プログラムで実現するため、リソースデータが変更された場合は、ボディ制御プログラムも変更する必要がある。リソースデータの変更に基づくボディ制御プログラムの変更を避けるためには、あらかじめ変更の可能性を予測してリソースデータを構築しておくなどの対応も考えられるが、数ヵ月後、数年後の業界動向変化を予測して準備するのは現実的にかなり困難である。起動時のSDRAMの状態ファームウェアのアップデートについて説明するため、ボディ100及びカメラユニットの起動時のSDRAM63,64の状態について説明する。図10aは起動時のボディ100のSDRAMの状態を、図10bは起動時のカメラユニット200のSDRAMの状態を、それぞれ示す図の一例である。ボディの起動時フラッシュROM62に格納されているボディ制御プログラムは、電源オンによりSDRAM64へロードされる。次に、ボディCPU42はSDRAM64へロードされたボディ制御プログラムを実行し、ボディ100を動作可能にする。GUIを表示するときは、リソースデータより必要なデータのみSDRAM64へロードし、スクリーンを構成する。カメラユニットの起動時フラッシュROM61に格納されているカメラユニット制御プログラムは、電源オンにより、SDRAM63へロードされる。次に、カメラユニットCPU16はSDRAM63へロードされたカメラユニット制御プログラムを実行し、カメラユニット200を動作可能にする。リソースデータを全てSDRAM64へロードしない理由リソースデータは、ボディ制御プログラムとは異なり、全てのデータを常時利用するのではなく、GUIの状態に従い利用するデータが決まっており、比較的大きなリソースデータをSDRAMに常時ロードしておくことで、カメラ自体の利便性低下につながる可能性がある。SDRAMは、サイズが大きな画像データを1枚でも多くロードできるようにすることで、連写枚数を増やすなどカメラ全体の利便性を向上させることができる。従来のCUファームウェアのアップデート方法図11は、従来から行われている、CUファームウェアのアップデートを模式的に説明する図の一例である。CUファームウェアのアップデート比較のため、まず、CUファームウェアの従来のアップデート方法について説明する。カメラユニット200のフラッシュROM61には、カメラユニット制御プログラムV1Vはバージョンを意味するが格納されており、ボディ側フラッシュROM62には、ボディ制御プログラムV1及びリソースデータV1が記憶されている。カメラユニット制御プログラムV1とボディ制御プログラムV1の組み合わせは、出荷時にあらかじめ組み合わせが考慮されており、ある機能が動作しないなどの不具合はないものとする。ファームウェアのアップデートには例えば再生ボタンが使用される。ユーザが、新しい古いものでもよいファームウェアファイルが記憶されたメモリカード43をメモリカード制御部38に装着し、再生ボタンを長押しすると、ボディCPU42はファームウェアのアップデートを開始する。カメラユニット制御プログラムをV1からV2へ変更する場合を説明する。メモリカードには、新しいCUファームウェアが記憶されており、ファームウェアファイルにはカメラユニット制御プログラムV2が格納されている。カメラユニット制御プログラムV2は、機能拡張が行われており、たとえばメニューへ新規スクリーンが追加され新たな項目を設定可能としている。ユーザがボディ100の再生ボタンを長押しすると、ボディ100の電源がオン状態になり、同時にカメラユニット200のDC/DCコンバータ11を介してカメラユニット200の電源もオン状態となる。1ボディブートプログラム及びカメラユニットブートプログラムはそれぞれのSDRAMへロードされそれぞれのCPUにて実行される。2ボディブートプログラムには、ファームウェアをアップデートするプログラムが格納されている。ボディブートプログラムは、メモリカードにファームウェアファイルが存在する場合、ファームウェアのアップデートを行う。メモリカードにCUファームウェアファイルが存在するため、ブートプログラムはCUファームウェアのアップデートを開始する。3ボディCPU42及びカメラユニットCPU16は、外部バスI/F12,32を介して通信を行い、ボディブートプログラムは、CUファームウェアファイルをメモリカードからカメラユニットのSDRAMへ転送する。4カメラユニットブートプログラムは、転送されたファームウェアファイルに格納されているカメラユニット制御プログラムV2を、既にフラッシュROM61に格納されているカメラユニット制御プログラムV1の領域へ上書きコピーする。これにより、CUファームウェアのアップデートは完了する。アップデートにより、カメラユニット制御プログラムV2とボディ制御プログラムV1という組み合わせが発生するが、この組合せは、カメラシステム300の出荷時には存在しない組み合わせとなる。この組合せでは、ボディ100は、カメラユニット200に追加された機能を知らないため、ユーザはボディ100を操作して追加機能を利用することができない。また、カメラユニット200とボディ100の後方互換性が確保されないため、追加された機能以外の不具合が発生する可能性がある。ボディファームウェアのアップデート図12は、従来から行われている、ボディファームウェアのアップデートを模式的に説明する図の一例である。ボディファームウェアのアップデートは、ボディ単体で行うことができる。ボディのフラッシュROM62には、ボディ制御プログラムV1及びリソースデータV1が格納されている。カメラユニット制御プログラムV1とボディ制御プログラムV1の組み合わせは、出荷時にあらかじめ組み合わせが考慮されており、ある機能が動作しないなどの不具合はないものとする。アップデートの際、ユーザは、メモリカード43に新しいファームウェアファイルを記憶しておき、再生ボタンを長押しすると、ボディファームウェアのアップデートを開始することができる。ボディ制御プログラム及びリソースデータをV1からV2へ変更する場合を説明する。メモリカード43には、新しいボディファームウェアファイルが準備されており、ボディファームウェアファイルにはボディ制御プログラムV2及びリソースデータV2が格納されている。ボディ制御プログラムV2及びリソースデータV2は、機能拡張が行われており、例えば、メニューへ新規スクリーンが追加され新たな項目を設定可能としている。ボディの再生ボタンを長押しすることで、ボディ100の電源がオン状態になると、DC/DCコンバータ31を介してボディ本体各部へ電源が供給される。1ボディブートプログラムはボディのSDRAM64へロードされ、ボディCPU42にて実行される。2ボディブートプログラムには、ファームウェアをアップデートするプログラムが格納されており、メモリカード43にファームウェアファイルが存在する場合、ファームウェアのアップデートを行う。メモリカードにボディファームウェアファイルが存在するため、ブートプログラムはファームウェアのアップデートを実行する。ここで、ボディ制御プログラム又はリソースデータの一方しかメモリカードに記憶されていない場合、一方のみをアップデートすればよい。3ボディブートプログラムは、ファームウェアファイルに格納されているボディ制御プログラムV2及びリソースデータV2を、既にフラッシュROM62に格納されているボディ制御プログラムV1及びリソースデータV1の領域へ上書きコピーして、ファームウェアのアップデートを完了する。アップデートの結果、カメラユニット制御プログラムV1とボディ制御プログラムV2という組み合わせが発生し、カメラシステム300の出荷時には存在しない組み合わせとなる。この場合、カメラユニット制御プログラムV2が格納されたカメラユニット200を装着した場合は、問題は発生しないが、カメラユニット制御プログラムV1が格納されたカメラユニット200を装着した場合、カメラユニット200とボディの後方互換性が確保されないため、ボディ100へ追加された機能以外の不具合が発生する可能性ある。ファームウェアの組み合わせ図13は、カメラユニット200とボディファームウェアのバージョンの組み合わせを説明する図の一例である。バージョンの組合せとしては、カメラユニット200の方が高い、同じ、ボディ100の方が高い、の3つがある。バージョンが3つの場合でも、9個の組合せが発生する。このため、ファームウェアバージョンの組み合わせが多くなると、ボディ100及びカメラユニット200の組み合わせ評価が煩雑になる。カメラユニット200及びボディ100の出荷時期によっては、それぞれのファームウェアバージョンが異なり、図13の全てのパターンが発生する。図13において、マークは以下の組合せを意味する。▲:ボディ100のファームウェアバージョンの方がカメラユニット200よりも低い組合せ●:ボディ100のファームウェアバージョンの方がカメラユニット200よりも高い組合せ◎:ボディ100とカメラユニット200のファームウェアバージョンが一致する組合せ例えば、販売時▲は、図11にて説明したカメラユニットのみV1→V2へバージョンアップする場合に生じる組合せである。●は、図12にて説明したボディのみV1→V2へバージョンアップする場合に生じる組合せである。▲と●の組合せは、上記のように不具合をもたらすおそれがあるので、◎の組み合わせを多くすることが、互換性確保のコストを低減し、さらにはこの組み合わせによるユーザの混乱を発生させないことにつながる。本実施形態のCUファームウェア及びボディファームウェアのアップデート方法図14は、カメラユニット200とボディ100の機能ブロック図の一例である。アップデートに使用される機能は、カメラユニット200とボディ100のブートプログラムがハードウェアと協働して実現される。カメラユニットブートプログラムは、プログラム更新部81とプログラム送信部82を有する。ボディブートプログラムはアップデート判定部83、カメラユニット装着判定部84、プログラム送信部85、更新判定部86、プログラム記録部87、及び、起動プロフラム選択部88を有する。アップデート判定部83は、ファームウェアのアップデートを行うか否かを判定する。カメラユニット装着判定部84は、ボディ100にカメラユニット200が装着されているか否かをカメラユニット検出スイッチの状態から判定する。プログラム送信部85は、メモリカードのファームウェアをカメラユニット200に送信する。プログラム記録部87は、カメラユニット200から受信したファームウェアをフラッシュROM62の拡張領域に記憶する。起動プロフラム選択部88は、フラッシュROM62から読み出して起動するボディ制御プログラムのバージョンを選択する。更新判定部86はボディ100のフラッシュROM62とカメラユニット200のフラッシュROM61のボディファームウェアのバージョンを比較して、カメラユニット200からボディファームウェアを受信すべきか否かを判定する。カメラユニット200のプログラム更新部81は、ボディ100から受信したカメラユニットファームウェアによりフラッシュROM61のカメラユニットファームウェアを上書きする。プログラム送信部82は、フラッシュROM61に記憶されているボディファームウェアをボディ100に送信する。図15は、本実施形態のカメラシステム300が、ボディファームウェアをアップデートするか又は起動する手順を示すフローチャート図の一例である。なお、手順のより具体的な内容を後に説明する。図15の手順はボディCPUがノーマルモードになるとスタートするS10のYes。ノーマルモードになるとボディCPU42とカメラユニットCPU16はブートプログラムを実行するS20。カメラユニット200がボディ100に装着されていない場合、カメラユニットCPU16はなにもしない。ボディブートプログラムが起動すると、まずカメラユニット装着判定部84が、カメラユニット200が装着されているか否かを判定するS30。カメラユニット200が装着されていなければ本実施形態のアップデート方法によりボディファームウェアをアップデートできないからである。カメラユニット200が装着されていない場合、処理はS140に進み、出荷時領域のボディ制御プログラムが起動される。ただし、ボディ単体のファームウェアファイルがメモリカードに記憶されていれば、ボディだけでファームウェアがアップデートされる。カメラユニットが装着されている場合S30のYes、ボディブートプログラムアップデート判定部83は、メモリカードにファームウェアファイルが記憶されているか否かを判定するS40。ファームウェアファイルが記憶されているか否かは、例えば、ファイル名やファイルの先頭部ファイルヘッダの情報などにより判定される。メモリカードのファームウェアファイルは、カメラユニット200のカメラユニット制御プログラムとボディ制御プログラムのバージョンが一致している。メモリカードにファームウェアファイルが記憶されていない場合、処理はS70に進む。メモリカードにファームウェアファイルが記憶されている場合、ボディブートプログラムはアップデートを開始し、メモリカードにファームウェアファイルが記憶されていない場合、ボディブートプログラムは起動処理を開始する。メモリカードにファームウェアファイルが記憶されている場合S40のYes、ボディブートプログラムプログラム送信部85は、メモリカードのファームウェアをカメラユニット200のSDRAMに送信するS50。そして、カメラユニットブートプログラムプログラム更新部81は、SDRAMのファームウェアをカメラユニット200のフラッシュROM61に上書きするS60。すなわち、カメラユニット200のファームウェアは新しいファームウェアに置き換わる。また、カメラユニット200のフラッシュROM61に書き込まれたファームウェアファイルにはボディファームウェアが含まれている。したがって、カメラユニット200にボディファームウェアが記憶されることは、そのファームウェアをボディ100に送信することで、カメラユニット200とボディファームウェアのバージョンが一致することを意味する。この後、処理はS70に進む。次に、ボディブートプログラム更新判定部86は、後述する条件1又は2が成立するか否かを判定するS70。条件1、2は、カメラユニット200からボディ100にボディファームウェアを転送する必要があるか否かを判定するための条件である。条件1又は条件2が成立しない場合S70のNo、S100以下の処理が実行される。条件1又は条件2が成立する場合S70のYes、ボディブートプログラムプログラム記録部87は、カメラユニット200のフラッシュROM61に格納されているボディファームウェアファイルを、カメラユニット200から受信してボディ100のSDRAMに記憶するS80。そして、ボディブートプログラムプログラム記録部87は、SDRAMのファームウェアファイルをフラッシュROM62の拡張領域に記憶するS90。拡張領域はアップデート用のファームウェアを記憶するための領域である。次に、ボディブートプログラムは、電源がオンか否かを判定するS100。電源がオンでなければS100のNo、ボディブートプログラムが所定の設定を行い、ボディCPU42及びカメラユニットCPU16はスタンバイモードに遷移するS120。電源がオンの場合S100のYes、ボディブートプログラム起動プロフラム選択部88は、拡張領域にファームウェアが記憶されているか否かを判定するS110。拡張領域にファームウェアが記憶されていればS110のYes、ボディブートプログラムは拡張領域のボディ制御プログラムをフラッシュROM62から読み出し、アップデートされたボディ制御プログラムを起動するS130。拡張領域にファームウェアが記憶されていない場合S110のNo、ボディブートプログラムは出荷時領域のボディ制御プログラムをフラッシュROM62から読み出しボディ制御プログラムを起動するS140。<アップデートの詳細な説明>図16は、本実施形態の、カメラファームウェア及びボディファームウェアのアップデートを模式的に説明する図の一例である。カメラユニット200のフラッシュROM61には、カメラユニット制御プログラムV1、ボディ制御プログラムV1、リソースデータV1、及び、ボディ固定データが記憶されている。ボディ100のフラッシュROM62には、ボディ制御プログラムV1及びリソースデータV1が記憶されている。カメラユニット制御プログラムV1とボディ制御プログラムV1の組み合わせは、出荷時にあらかじめ組み合わせが考慮されており、ある機能が動作しないなどの不具合はないものとする。メモリカード43には、CUファームウェアとボディファームウェアの組み合わせが考慮されたCUファームウェアV2ファイルが記憶されている。CUファームウェアV2ファイルには、カメラユニット制御プログラムV2、ボディ制御プログラムV2及びリソースデータV2が格納されている。カメラユニット制御プログラムV2、ボディ制御プログラムV2及びリソースデータV2は、機能拡張が行われており、たとえばメニューへ新規スクリーンが追加され新たな項目を設定可能としている。ボディにカメラユニットが装着された状態で、ユーザがボディ100にバッテリを装着した場合を想定する。上記のように、ボディはノーマルモードに移行し、同時にカメラユニット200のDC/DCコンバータ11を介してカメラユニット200のCPUもノーマルモードとなる。1ボディブートプログラム及びカメラユニットブートプログラムは、それぞれのSDRAMへロードされそれぞれのCPUにて実行される。2ボディブートプログラムには、ファームウェアをアップデートするプログラムが格納されており、メモリカードにファームウェアファイルが存在する場合、ファームウェアのアップデートを開始する。メモリカードにファームウェアファイルが存在するため、ブートプログラムはファームウェアのアップデートを実行する。3ボディCPU42及びカメラユニットCPU16は外部バスI/F12,32を介して通信を行い、ボディブートプログラムはファームウェアファイルをメモリカードから読み出し、カメラユニット200のSDRAM63へ送信する。4カメラユニットブートプログラムは、転送されたファームウェアファイルに格納されているカメラユニット制御プログラムV2を、既にフラッシュROM61に格納されているカメラユニット制御プログラムV1の領域へ上書きコピーする。5同じく、カメラユニットブートプログラムは、転送されたファームウェアファイルに格納されているボディ制御プログラムV2及びリソースデータV2を、既にフラッシュROM上に格納されているボディ制御プログラムV1及びリソースデータV1の領域へ上書きコピーして、ファームウェアのアップデートを完了する。すなわち、カメラユニット200のフラッシュROM61には、同じバージョンの組合せのCUファームウェアとボディファームウェアが記憶されたことになる。カメラシステムの起動時の動作図17は、本実施形態のボディ100及びカメラユニット200の起動時の動作を模式的に説明する図の一例である。図16にて説明したように、ファームウェアアップデートの結果、カメラユニットのフラッシュROM61に、カメラユニット制御プログラムV2、ボディ制御プログラムV2、及びリソースデータV2が記憶されている。また、ボディ100のフラッシュROM62には、ボディ制御プログラムV1及びリソースデータV1が記憶されている。また、デジタルカメラの使用態様では、ユーザ以外の第三者のカメラユニットをユーザのボディに装着する状況が生じる。このような状況は、ユーザが第三者のカメラユニットを譲り受けた場合や中古品を購入した場合に生じる。この場合、ボディとカメラユニットの関係は、図16の処理が終わった状態と同じになる。したがって、図16の処理の後、カメラユニットからボディ制御プログラムV2及びリソースデータV2がボディに転送される処理には、a図16の処理に引き続いて行われる場合と、bカメラユニットを交換した場合の、2つの契機がある。なお、カメラユニット制御プログラムV1とボディ制御プログラムV1の組み合わせ、及びカメラユニット制御プログラムV2とボディ制御プログラムV2の組み合わせは、出荷時にあらかじめ組み合わせが考慮されており、ある機能が動作しないなどの不具合はないものとする。また、メモリカード43には、ファームウェアファイルは格納されていない。<図16の処理の後>図16の処理の後であれば、ボディCPUはすでにノーマルモードになっている。カメラユニット200のDC/DCコンバータ11も、接続部を介して電源が供給され、カメラユニットCPU16もノーマルモードへ遷移している。1ボディ100及びカメラユニットブートプログラムはそれぞれのSDRAMへロードされ、それぞれのCPUにて実行される。図16の処理の後であれば、すでにSDRAMへロードされている。2ボディブートプログラムは、メモリカードにファームウェアが存在していないことを確認すると、ファームウェアのアップデートを行わない。3ボディCPU42のブートプログラムは、検出スイッチ類のスイッチオン入力を判別し、カメラユニット200が装着されたか否かを判定する。4カメラユニット200の装着を確認した後、ボディCPU42及びカメラユニットCPU16は外部バスI/F12,32を介して通信を行う。通信では、以下を確認し、条件1又は条件2が成立する場合のみ、カメラユニット200のフラッシュROM61に格納されているボディ制御プログラムV2及びリソースデータV2が格納されたボディファームウェアV2ファイルを、カメラユニット200からボディ100のSDRAMへ送信する。条件1ボディのフラッシュROM62の拡張領域に、ファームウェアが格納されていない。条件2ボディのフラッシュROM62の拡張領域に、ファームウェアが格納されているが、カメラユニットのフラッシュROM61に格納されているファームウェアとは異なるバージョンである。条件1又は条件2が成立しない場合、既に拡張領域にボディファームウェアV2ファイルが記憶されていることになる。5ボディCPU42は、ファームウェアファイルの転送終了を確認した後に、転送されたボディファームウェアV2ファイルを、フラッシュROM62の拡張領域へ記憶する。6そして、ボディ制御プログラムV2による設定により、ボディCPU42をスタンバイモードへ遷移させ、カメラユニット200のDC/DCコンバータ11の電源を遮断し、ボディ100は電源オフになる。以上のように、カメラユニット200が記憶している、バージョンの組合せが検証されたCUファームウェアとボディファームウェアのうち、ボディファームウェアをボディ100に送信するので、カメラユニット200とボディ100において、ファームウェアバージョンを一致させることができる。<バッテリ装着状態でカメラユニットを交換した場合ボディにバッテリを装着された状態で、カメラユニット200がボディ100へ装着された場合>ボディ100の電源スイッチがオフ状態である場合、ボディCPU42は前述の様にノーマルモードからスタンバイモードに遷移している。このとき、カメラユニット200を取り外し、再装着又は別のカメラユニット200がボディ100に装着されると、キー入力割込みにより、ボディCPU42はスタンバイモードからノーマルモードへ遷移する。ボディCPU42は、カメラユニット200へDC/DCコンバータ11から電源を供給するので、カメラユニット200へ電源が供給され、カメラユニットCPU16もノーマルモードへ移行する。この後の動作は、カメラユニット200がボディ100へ装着された後にボディ100にバッテリ37が装着された場合と同様である。1ボディ100及びカメラユニットブートプログラムはそれぞれのSDRAMへロードされ、それぞれのCPUにて実行される。2ボディブートプログラムは、メモリカードにファームウェアが存在していないことを確認すると、ブートプログラムはファームウェアのアップデートを行わない。3ボディCPU42のブートプログラムは、検出スイッチ類のスイッチオン入力を判別し、カメラユニット200が装着されたか否かを判定する。4カメラユニット200の装着を確認した後、ボディCPU42及びカメラユニットCPU16は外部バスI/F12,32を介して通信を行う。通信では、条件1又は条件2が成立する場合のみ、カメラユニット200のフラッシュROM61に格納されているボディ制御プログラムV2及びリソースデータV2が格納されたボディファームウェアV2ファイルを、カメラユニット200からボディ100のSDRAMへ送信する。5ボディCPU42は、ファームウェアファイルの転送終了を確認した後に、転送されたボディファームウェアV2ファイルを、フラッシュROM62の拡張領域へ記憶する。6そして、ボディ制御プログラムV2による設定により、ボディCPU42をスタンバイモードへ遷移させ、カメラユニット200のDC/DCコンバータ11の電源を遮断し、ボディ100は電源オフになる。このようにカメラユニットの装着だけでカメラユニットからボディにファームウェアファイルを転送することで起動時間が伸びることを防止できる。ここで、カメラユニットにボディ側の組み合わせを保証したファームウェアを記憶しておき、電源オン時にカメラユニットからボディのSDRAMに転送し、ボディCPUがSDRAMにあるボディ制御プログラムを起動する、という構成も考えられる。しかし、この構成では電源オンにならないとカメラユニットからボディへボディファームウェアが転送されず、電源オン時に毎回、ボディファームウェアの転送処理が発生するため、起動時間が延びてしまうという不都合を生じさせる。これに対し、本実施形態のカメラでは、カメラユニットの装着時に一度だけ、ユーザが意識することなくカメラユニットからボディにファームウェアファイルを転送するので、起動時間が伸びることを防止できる。仮にカメラユニットの装着時に電源オンされても、カメラユニットからボディにファームウェアファイルを転送するのは1回だけなので、起動時間が伸びることを防止できる。また、時間短縮のためカメラユニットからボディにボディ制御プログラムのみ転送する構成を採用することも考えられる。しかしこの構成では、互換性確保のためボディ側に全てのバージョンのリソースデータを記憶しておく必要があるという不都合がある。これに対し、本実施形態のカメラでは、カメラユニットの装着時にボディ制御プログラムとリソースデータの両方を転送するのでボディ側に全てのバージョンのリソースデータを記憶しておく必要性を回避できる。<カメラユニットを交換後、電源スイッチがオンにされた場合の動作>ボディ100の電源スイッチがオン状態になると、キー入力割込みにより、ボディCPU42はスタンバイモードからノーマルモードへ遷移する。ボディCPU42は、カメラユニット200のDC/DCコンバータ11へ電源を供給するように制御することで、カメラユニット200へ電源が供給され、カメラユニットCPUもノーマルモードへ移行する。以降の処理は、図17にて説明した1~5と同様である。そして、電源がオンの場合、ボディブートプログラムが起動するため、以下を行う。6 ́ボディのSDRAMに転送されたファームウェアのうち、ボディブートプログラムはボディ制御プログラムV2をフラッシュROM62の拡張領域に記憶する。そして、ボディ制御プログラムV2をSDRAMにロードし、ボディCPU42にボディ制御プログラムV2を実行させることで処理を切り替え、カメラユニット200が起動する。カメラシステムは撮影モードに設定され、撮影が可能になる。ファームウェアファイルを転送した場合、リソースデータV2はSDRAMに存在するが、転送しなかった場合と同様のボディ制御プログラムとすべく、フラッシュROM62に転送する。そして、ボディCPU42は、必要であれば、フラッシュROM62に格納されているリソースデータV2より必要なデータをSDRAMへロードする。また、ファームウェアファイルの転送がされない場合においては、既に拡張領域にはボディファームウェアV2ファイルが格納されていることになる。ボディブートプログラムは、拡張領域に格納されているボディファームウェアV2ファイルのうち、ボディ制御プログラムV2をSDRAMへロードし、ボディブートプログラムよりボディ制御プログラムV2へ処理を切り替えることで、カメラユニット200が起動し、撮影モードに設定され、撮影が可能になる。<ボディ単体で電源スイッチがオンにされた場合の起動時の動作>図18は、本実施形態のボディ及びカメラユニット200の起動時の動作を模式的に説明する図の一例である。図17によるボディ100へのレンズユニット装着の結果、ボディのフラッシュROM62の拡張領域には、ボディ制御プログラムV2及びリソースデータV2が格納されている。フラッシュROM62の拡張領域に格納されているボディ制御プログラムV2及びリソースデータV2は、ボディ100にレンズユニットが装着されている時にボディ100の制御を行うために利用され、ボディ単体での起動時には利用されない。1ボディブートプログラムは、カメラユニットが装着されていないことを検出すると、フラッシュROMの出荷時領域からボディ制御プログラムV1をSDRAMにロードする。つまり、ボディ100は、フラッシュROM62の出荷時領域に格納されているファームウェアバージョンにて必ず起動することとなる。この出荷時領域に格納されているファームウェアを変更したい場合、図12にて説明した従来のボディファームウェアのアップデートを実施することでアップデートができる。したがって、カメラユニットと関係なくボディ制御プログラム及びリソースデータだけをアップデートすることもできる。以上のように、本実施形態のカメラシステムは、CUファームウェアとボディファームウェアのバージョンが一致するメモリカードから、カメラユニットにCUファームウェアが、カメラユニットを経由してボディにボディファームウェアがそれぞれ記憶される。このため、アップデートの結果、カメラユニット制御プログラムとボディ制御プログラムのバージョンの組合せが検証されていないという状況が生じない。"