(57)【特許請求の範囲】
【請求項１】
電源オン操作を検出する第１ＣＰＵ、
ファームウェアを起動するための第１ブートプログラムを保存する内部メモリ、
前記内部メモリを更新するための第２ブートプログラムを保存する外部メモリ、
前記第１ブートプログラムの第１ロード情報、前記第２ブートプログラムの第２ロード情報を記憶するブートメモリ、
前記ブートメモリに書き込み制御を行うメモリインタフェース、
少なくとも前記第１ブートプログラム及び前記第２ブートプログラムを含むプログラムを実行する第２ＣＰＵを備え、
前記第１ＣＰＵは、
前記電源オン操作を検出すると、前記外部メモリが装着されたか否かを判別する判別手段、
前記判別手段による判別の結果、前記外部メモリが装着されていないと判別すると第１ブートレベルに設定し、前記外部メモリが装着されていると判別すると第２ブートレベルに設定する設定手段、
前記設定手段による設定が完了すると前記メモリインタフェース及び前記第２ＣＰＵを含む装置の一部に電力を供給するための電力供給部を制御する制御手段を備え、
前記メモリインタフェースは、
前記設定手段によって設定されたブートレベルを検出する検出手段、
前記第１ブートレベルを検出すると前記内部メモリから前記第１ロード情報を前記ブートメモリに書き込み、前記第２ブートレベルを検出すると前記外部メモリから前記第２ロード情報を前記ブートメモリに書き込む書き込み手段を備え、
前記第２ＣＰＵは、
前記ブートメモリに格納された前記第１ロード情報又は前記第２ロード情報を該ブートメモリから読み出し、前記第１ブートプログラム又は前記第２ブートプログラムを実行することを特徴とする、プログラム処理装置。
【請求項２】
前記外部メモリは前記第１ブートプログラムをさらに保存し、
前記第２ブートプログラムは前記第１ブートプログラムを前記外部メモリから前記内部メモリに転送するためのプログラムに相当する、請求項１記載のプログラム処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム処理装置に関し、特に、内部メモリに記憶されたプログラムを外部メモリに記憶されたプログラムによって更新する、プログラム処理装置に関する。
【背景技術】
【０００２】
この種の装置の一例が、特許文献１に開示されている。この背景技術によれば、プログラムとそのバージョン情報とが記憶されたメモリカードが外部コネクタに接続されると、メモリカードに記憶されたプログラムのバージョン情報と異なるバージョン情報を記憶したフラッシュＲＯＭが、複数のフラッシュＲＯＭの中から特定される。メモリカードに記憶されたプログラムは、こうして特定されたフラッシュＲＯＭに書き込まれる。これによって、プログラムのダウンロードに要する時間を短縮することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２４２５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、背景技術では、フラッシュＲＯＭに記憶されたプログラムを更新するための処理が他の処理において利用されることはなく、処理性能に限界がある。
【０００５】
それゆえに、この発明の主たる目的は、処理性能を高めることができる、プログラム処理装置を提供することである。
【課題を解決するための手段】
【０００６】
この発明に従うプログラム処理装置(10：実施例で相当する参照符号。以下同じ)は、対象プログラムを起動するための第１プログラムを保存する内部メモリ(28)、内部メモリを更新するための第２プログラムを保存する外部メモリ(42)が装着されたか否かを判別する判別手段(S5)、判別手段の否定的な判別結果に基づいて第１プログラムを指定する第１指定手段(S9)、判別手段の肯定的な判別結果に基づいて第２プログラムを指定する第２指定手段(S7)、および第１指定手段および第２指定手段のいずれか一方によって指定されたプログラムを実行する実行手段(S21~S23)を備える。
【０００７】
好ましくは、対象ブログラムはファームウェアに相当し、第１プログラムおよび第２プログラムの各々はブートプログラムに相当する。
【０００８】
さらに好ましくは、内部メモリは第１プログラムをロードするための第１ロード情報をさらに保存し、外部メモリは第２プログラムをロードするための第２ロード情報をさらに保存し、第１指定手段の処理は第１ロード情報の読み出しを要求する処理を含み、第２指定手段の処理は第２ロード情報の読み出しを要求する処理を含む。
【０００９】
より好ましくは、実行手段は、第１指定手段および第２指定手段のいずれか一方によって読み出されたロード情報に対応するプログラムをロードするロード手段(S21)、およびロード手段によってロードされたプログラムに従う処理を実行する処理手段(S23)を含む。
【００１０】
好ましくは、外部メモリは第１プログラムをさらに保存し、第２プログラムは第１プログラムを外部メモリから内部メモリに転送するためのプログラムに相当する。
【００１１】
好ましくは、判別手段，第１指定手段および第２指定手段は第１ＣＰＵ(32)の下で処理を実行し、実行手段は第２ＣＰＵ(24)の下で処理を実行する。
【００１２】
この発明に従うプログラム処理プログラムは、対象プログラムを起動するための第１プログラムを保存する内部メモリ(28)を備えるプログラム処理装置(10)のプロセッサ(24, 32)に、内部メモリを更新するための第２プログラムを保存する外部メモリ(42)が装着されたか否かを判別する判別ステップ(S5)、判別ステップの否定的な判別結果に基づいて第１プログラムを指定する第１指定ステップ(S9)、判別ステップの肯定的な判別結果に基づいて第２プログラムを指定する第２指定ステップ(S7)、および第１指定ステップおよび第２指定ステップのいずれか一方によって指定されたプログラムを実行する実行ステップ(S21~S23)を実行させるための、プログラム処理プログラムである。
【００１３】
この発明に従うプログラム処理方法は、対象プログラムを起動するための第１プログラムを保存する内部メモリ(28)を備えるプログラム処理装置(10)によって実行されるプログラム処理方法であって、内部メモリを更新するための第２プログラムを保存する外部メモリ(42)が装着されたか否かを判別する判別ステップ(S5)、判別ステップの否定的な判別結果に基づいて第１プログラムを指定する第１指定ステップ(S9)、判別ステップの肯定的な判別結果に基づいて第２プログラムを指定する第２指定ステップ(S7)、および第１指定ステップおよび第２指定ステップのいずれか一方によって指定されたプログラムを実行する実行ステップ(S21~S23)を備える。
【発明の効果】
【００１４】
この発明によれば、外部メモリが非装着状態であれば、内部メモリに保存された第１プログラムが指定される。これに対して、外部メモリが装着状態であれば、外部メモリに保存された第２プログラムが指定される。指定されたプログラムが第１プログラムであれば対象プログラムが起動され、指定されたプログラムが第２プログラムであれば内部メモリが更新される。つまり、外部メモリの装着／非装着に応じて指定プログラムを変更することで、実行手段の実行態様に相違が現れる。これによって、内部メモリを更新するための処理と対象プログラムの起動のための処理とを部分的に共通化でき、処理性能の向上が図られる。
【００１５】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００１６】
【図１】この発明の一実施例の基本的構成を示すブロック図である。
【図２】この発明の一実施例の構成を示すブロック図である。
【図３】ＮＡＮＤ型フラッシュメモリのマッピング状態の一例を示す図解図である。
【図４】ｅＭＭＣデバイスのマッピング状態の一例を示す図解図である。
【図５】図２実施例に適用されるＣＰＵの動作の一部を示すフロー図である。
【図６】図２実施例に適用されるＣＰＵの動作の他の一部を示すフロー図である。
【発明を実施するための形態】
【００１７】
以下、この発明の実施の形態を図面を参照しながら説明する。
［基本的構成］
【００１８】
図１を参照して、この発明の実施例のプログラム処理装置は、基本的に次のように構成される。内部メモリ１は、対象プログラムを起動するための第１プログラムを保存する。判別手段２は、内部メモリ１を更新するための第２プログラムを保存する外部メモリ６が装着されたか否かを判別する。第１指定手段３は、判別手段の否定的な判別結果に基づいて第１プログラムを指定する。第２指定手段４は、判別手段の肯定的な判別結果に基づいて第２プログラムを指定する。実行手段５は、第１指定手段および第２指定手段のいずれか一方によって指定されたプログラムを実行する。
【００１９】
外部メモリ６が非装着状態であれば、内部メモリ１に保存された第１プログラムが指定される。これに対して、外部メモリ６が装着状態であれば、外部メモリ６に保存された第２プログラムが指定される。指定されたプログラムが第１プログラムであれば対象プログラムが起動され、指定されたプログラムが第２プログラムであれば内部メモリ１が更新される。つまり、外部メモリ６の装着／非装着に応じて指定プログラムを変更することで、実行手段の実行態様に相違が現れる。これによって、内部メモリ１を更新するための処理と対象プログラムの起動のための処理とを部分的に共通化でき、処理性能の向上が図られる。
［実施例］
【００２０】
図２を参照して、この実施例のデータ処理装置１０は、電源回路３８を含む。電源回路３８は、互いに異なる電圧値を各々が示す複数の直流電源をバッテリ４０に基づいて生成する。生成された複数の直流電源の一部はサブＣＰＵ３２に直接的に与えられ、生成された複数の直流電源の他の一部は主電源スイッチ３６を介してシステム全体に与えられる。したがって、サブＣＰＵ３２は常時起動されるのに対して、システム全体を構成する要素は主電源スイッチ３６のオン／オフに従って起動／停止される。
【００２１】
なお、この実施例において“システム全体”とは、前処理回路１２，メモリ制御回路１４，ＳＤＲＡＭ１６，後処理回路１８，メモリＩ／Ｆ２０，ブートＲＡＭ２２，メインＣＰＵ２４，メモリＩ／Ｆ２６およびスロット３０を指す。
【００２２】
キー入力装置３４によって電源オン操作が行われると、サブＣＰＵ３２は、キー入力装置３４に設けられたキーの操作状態が特定状態にあるか否か、ならびにｅＭＭＣ(embedded MultiMedia Card)デバイス４２がスロット３０に装着されているか否かを判別する。
【００２３】
キー操作状態が特定状態にあり、かつｅＭＭＣデバイス４２がスロット３０に装着されていれば、サブＣＰＵ３２は、ｅＭＭＣブートトリガをＨレベルに設定する。これに対して、キー操作状態が特定状態と異なる状態にあるか、或いはｅＭＭＣデバイス４２がスロット３０から抜去されていれば、サブＣＰＵ３２は、ｅＭＭＣブートトリガをＬレベルに設定する。ここで、Ｈレベルを示すｅＭＭＣブートトリガはＮＡＮＤ型フラッシュメモリ２８に保存されたＩＰＬ＿ｎａｎｄ(IPL：Initial Program Loader)の読み出しの要求に相当し、Ｌレベルを示すｅＭＭＣブートトリガはｅＭＭＣデバイス４２に保存されたＩＰＬ＿ｅｍｍｃの読み出しの要求に相当する。
【００２４】
ｅＭＭＣブートトリガのレベル設定が完了すると、サブＣＰＵ３２は、主電源スイッチ３６をオン状態に設定する。これによって、システム全体が起動される。その後にキー入力装置３２によって電源オフ操作が行われると、サブＣＰＵ３２は、主電源スイッチ３６をオフ状態に設定する。これによって、システム全体が停止される。
【００２５】
図３を参照して、フラッシュメモリ２８は、ＩＰＬ＿ｎａｎｄ，ファームウェア用ブートプログラム，調整値，ファームウェアおよびコンテンツデータを記憶する。ＩＰＬ＿ｎａｎｄは、ファームウェア用ブートプログラムをロードするための情報に相当する。ファームウェア用ブートプログラムは、ファームウェアを起動するためのプログラムに相当する。調整値は、ファームウェアによって参照されるパラメータ値に相当する。コンテンツデータは、ファームウェアの実行によって作成されたデータに相当する。
【００２６】
図４を参照して、ｅＭＭＣデバイス４２は、ＦＡＴファイルシステムを採用し、ＩＰＬ＿ｅｍｍｃ，メモリ更新用ブートプログラム，ＭＢＲ(Master Boot Record)，ＦＡＴ(FAT：File Allocation Table)およびディレクトリエントリを管理データとして記憶するとともに、ＩＰＬ＿ｎａｎｄ，ファームウェア用ブートプログラムおよびファームウェアを実データとして記憶する。
【００２７】
ＩＰＬ＿ｅｍｍｃは、メモリ更新用ブートプログラムをロードするための情報に相当する。メモリ更新用ブートプログラムは、ＩＰＬ＿ｎａｎｄ，ファームウェア用ブートプログラムおよびファームウェアをフラッシュメモリ２８に複製するためのプログラムに相当する。なお、メモリ更新用ブートプログラムは、エンハンスドユーザデータエリアに記憶される。
【００２８】
図２に戻って、電源オン操作によって起動したメモリＩ／Ｆ２０は、サブＣＰＵ３２によって設定されたｅＭＭＣブートトリガのレベルを検出し、検出されたレベルに応じて異なる処理を以下の要領で実行する。
【００２９】
ｅＭＭＣブートトリガがＬレベルであれば、メモリＩ／Ｆ２０は、ＩＰＬ＿ｎａｎｄをメモリＩ／Ｆ２６を通してフラッシュメモリ２８から読み出し、読み出されたＩＰＬ＿ｎａｎｄをブートＲＡＭ２２に書き込む。
【００３０】
これに対して、ｅＭＭＣブートトリガがＨレベルであれば、メモリＩ／Ｆ２０は、ＩＰＬ＿ｅｍｍｃをメモリＩ／Ｆ２０およびスロット３０を通してｅＭＭＣデバイス４２から読み出し、読み出されたＩＰＬ＿ｅｍｍｃをブートＲＡＭ２２に書き込む。
【００３１】
また、電源オン操作によって起動したメインＣＰＵ２４は、ブートＲＡＭ２２に格納されたＩＰＬに対応するブートプログラムをロードするべく、以下の処理を実行する。
【００３２】
ブートＲＡＭ２２に格納されたＩＰＬがＩＰＬ＿ｎａｎｄであれば、メインＣＰＵ２４は、フラッシュメモリ２８に保存されたファームウェア用ブートブログラムをメモリＩ／Ｆ２６を通して読み出し、読み出されたファームウェア用ブートプログラムをメモリ制御回路１４を通してＳＤＲＡＭ１６に書き込む。
【００３３】
これに対して、ブートＲＡＭ２２に格納されたＩＰＬがＩＰＬ＿ｅｍｍｃであれば、メインＣＰＵ２４は、ｅＭＭＣデバイス４２に保存されたメモリ更新用ブートブログラムをスロット３０を通して読み出し、読み出されたメモリ更新用ブートプログラムをメモリ制御回路１４を通してＳＤＲＡＭ１６に書き込む。
【００３４】
メインＣＰＵ２４はその後、ＳＤＲＡＭ１６にロードされたブートプログラムを実行する。
【００３５】
ロードされたブートプログラムがファームウェア用ブートプログラムであれば、フラッシュメモリ２８に保存されたファームウェアが起動される。この結果、前処理回路１２および後処理回路１８がファームウェアの制御に従って動作し、さらにこの動作によって作成されたコンテンツデータがフラッシュメモリ２８の指定パーティションに保存される。
【００３６】
これに対して、ロードされたブートプログラムがメモリ更新用ブートプログラムであれば、フラッシュメモリ２８が更新される。ｅＭＭＣデバイス４２に保存されたＩＰＬ＿ｎａｎｄ，ファームウェア用ブートプログラムおよびファームウェアは、メモリ更新用ブートプログラムによってフラッシュメモリ２８の指定パーティションに複製される。
【００３７】
サブＣＰＵ３２は、図５に示すフロー図に従う処理を実行する。また、メインＣＰＵ２４は、図６に示すフロー図に従う処理を実行する。
【００３８】
図５を参照して、ステップＳ１では電源オン操作が行われたか否かを判別する。判別結果がＮＯからＹＥＳに更新されると、キー入力装置３４のキー操作状態が特定状態であるか否かをステップＳ３で判別し、ｅＭＭＣデバイス４２がスロット３０に装着されているか否かをステップＳ５で判別する。
【００３９】
ステップＳ３の判別結果およびステップＳ５の判別結果のいずれもがＹＥＳであれば、ステップＳ７に進み、ｅＭＭＣブートトリガをＨレベルに設定する。これに対して、ステップＳ３の判別結果およびステップＳ５の判別結果の少なくとも一方がＮＯであれば、ステップＳ９に進み、ｅＭＭＣブートトリガをＬレベルに設定する。ステップＳ７の処理によってＩＰＬ＿ｎａｎｄの読み出しが要求され、ステップＳ９の処理によってＩＰＬ＿ｅｍｍｃの読み出しが要求される。
【００４０】
ステップＳ７またはＳ９の処理が完了すると、ステップＳ１１で主電源スイッチ３６をオン状態に設定する。この結果、システム全体が起動する。メモリＩ／Ｆ２０は、ＨレベルのｅＭＭＣブートトリガに応答してＩＰＬ＿ｎａｎｄをフラッシュメモリ２８からブートＲＡＭ２２に転送し、ＬレベルのｅＭＭＣブートトリガに応答してＩＰＬ＿ｅｍｍｃをｅＭＭＣデバイス４２からブートＲＡＭ２２に転送する。
【００４１】
ステップＳ１３では電源オフ操作が行われたか否かを判別する。判別結果がＮＯからＹＥＳに更新されると、ステップＳ１５で主電源スイッチ３６をオフ状態に設定する。この結果、システム全体が停止する。ステップＳ１５の処理が完了すると、ステップＳ１に戻る。
【００４２】
図６を参照して、ステップＳ２１ではブートＲＡＭ２２に設定されたＩＰＬに従うブートプログラムをＳＤＲＡＭ１６にロードする。したがって、ブートＲＡＭ２２上のＩＰＬがＩＰＬ＿ｎａｎｄであれば、フラッシュメモリ２８に保存されたファームウェア用ブートプログラムがＳＤＲＡＭ１６にロードされる。これに対して、ブートＲＡＭ２２上のＩＰＬがＩＰＬ＿ｅｍｍｃであれば、ｅＭＭＣデバイス４２に保存されたメモリ更新用ブートプログラムがＳＤＲＡＭ１６にロードされる。
【００４３】
ステップＳ２３では、ロードされたブートプログラムを実行する。したがって、ロードされたブートプログラムがファームウェア用ブートプログラムであれば、フラッシュメモリ２８に格納されたファームウェアが起動され、前処理回路１２および後処理回路１８がファームウェアに従って動作する。これに対して、ロードされたブートプログラムがメモリ更新用ブートプログラムであれば、フラッシュメモリ２８が更新される。具体的には、ｅＭＭＣデバイス４２に格納されたＩＰＬ＿ｎａｎｄ，ファームウェア用ブートプログラムおよびファームウェアが、フラッシュメモリ２８上の指定パーティションに複製される。
【００４４】
以上の説明から分かるように、フラッシュメモリ２８はファームウェア用ブートプログラムを保存し、ｅＭＭＣデバイス４２はメモリ更新用ブートプログラムを保存する。サブＣＰＵ３２は、ｅＭＭＣデバイス４２がスロット３０に装着されたか否かを判別し(S5)、否定的な判別結果に基づいてファームウェア用ブートプログラムを指定する一方(S9)、肯定的な判別結果に基づいてメモリ更新用ブートプログラムを指定する(S7)。メインＣＰＵ２４は、こうして指定されたブートプログラムを実行する(S21~S23)。この結果、ファームウェア用ブートプログラムの指定に対応してファームウェアが起動され、メモリ更新用ブートプログラムの指定に対応してフラッシュメモリ２８が更新される。
【００４５】
このように、ｅＭＭＣデバイス４２が非装着状態であれば、フラッシュメモリ２８に保存されたファームウェア用ブートプログラムが指定される。これに対して、ｅＭＭＣデバイス４２が装着状態であれば、ｅＭＭＣデバイス４２に保存されたメモリ更新用ブートプログラムが指定される。指定されたプログラムがファームウェア用ブートプログラムであればファームウェアが起動され、指定されたプログラムがメモリ更新用ブートプログラムであればフラッシュメモリ２８が更新される。つまり、ｅＭＭＣデバイス４２の装着／非装着に応じて指定ブートプログラムを変更することで、その後の処理態様に相違が現れる。これによって、フラッシュメモリ２８の更新処理とファームウェアの起動処理とを部分的に共通化でき、処理性能の向上が図られる。
【００４６】
なお、この実施例では、ブートトリガのレベルに応じて異なるブートプログラムをロードするようにしている。しかし、注目するトリガはブートトリガに限られるものではなく、ロードすべきプログラムもまたブートプログラムに限られるものではない。
【符号の説明】
【００４７】
１０  …データ処理装置
１６  …ＳＤＲＡＭ
２２  …ブートＲＡＭ
２４  …メインＣＰＵ
２８  …フラッシュメモリ
３０  …スロット
３２  …サブＣＰＵ
４２  …ｅＭＭＣデバイス
【図１】
0005683911.tif 000002
【図２】
0005683911.tif 000003
【図３】
0005683911.tif 000004
【図４】
0005683911.tif 000005
【図５】
0005683911.tif 000006
【図６】
0005683911.tif 000007