(57)【要約】【課題】電子機器のブート時の処理を簡単にする。【解決手段】本発明の電子機器のプログラム更新方法では、ブートローダにより読み出される初期プログラムのアップデートを行う場合に、新しい初期プログラムファイルをプログラムメモリに格納するとともにその名称を最新バージョンの初期プログラムファイルであることを示した名称とし（Ｓ２０８）、並びに、上記プログラムメモリに元々格納されていた最新バージョンの初期プログラムファイルであることを示した名称のファイルを名称変更する（Ｓ２０５，Ｓ２０７）。【選択図】図３
2005078455.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードが展開されるワーキングメモリと、
上記ワーキングメモリ内に展開されているプログラムコードに基づき、当該機器の動作制御及びデータ処理を行うデータ処理ユニットと、
システム起動後に最初に実行される初期プログラムファイルが格納されているプログラムメモリと、
上記初期プログラムファイルを上記プログラムメモリから上記ワーキングメモリに展開するための実行コードが記述されたブートローダが所定の物理量域に格納されているブートメモリとを備え、
上記データ処理ユニットは、システム起動後に、上記ブートメモリに格納されているブートローダを実行し、続いて、上記ブートローダを実行することにより上記ワーキングメモリ上に展開された初期プログラムファイルのプログラムコードに応じて動作制御及びデータ処理を行い、
上記ブートローダには、最新バージョンの初期プログラムファイルであることを示した名称のファイルを、上記プログラムメモリから選択してワーキングメモリに展開する実行コードが記述されていること
を特徴とする電子機器。
【請求項２】
上記ブートローダには、
最新バージョンの初期プログラムファイルであることを示した名称のファイルが上記プログラムメモリに格納されているか否かを判断し、
格納されている場合には上記プログラムメモリからそのファイルを選択してワーキングメモリに展開し、
格納されていない場合には、旧バージョンの初期プログラムファイルであることを示した名称のファイルを選択して、そのファイルの名称を最新バージョンの初期プログラムファイルであることを示した名称に変更するとともに、そのファイルを選択してワーキングメモリに展開する、実行コードが記述されていること
を特徴とする請求項１記載の電子機器。
【請求項３】
上記プログラムメモリに格納されるファイルの名称は、ファイルタイトル及びそのファイルの種別を示す拡張子から構成されており、
最新バージョンの初期プログラムファイルであることを示した名称、及び、旧バージョンの初期プログラムファイルであることを示した名称は、ファイルタイトルが同一で拡張子が異なること
を特徴とする請求項２記載の電子機器。
【請求項４】
電子機器に組み込まれているプログラムをバージョンアップするプログラム更新方法において、
上記電子機器は、プログラムコードが展開されるワーキングメモリと、上記ワーキングメモリ内に展開されているプログラムコードに基づき、当該機器の動作制御及びデータ処理を行うデータ処理ユニットと、システム起動後に最初に実行される初期プログラムファイルが格納されているプログラムメモリと、上記初期プログラムファイルを上記プログラムメモリから上記ワーキングメモリに展開するための実行コードが記述されたブートローダが所定の物理量域に格納されているブートメモリとを備え、
上記データ処理ユニットは、システム起動後に、上記ブートメモリに格納されているブートローダを実行し、続いて、上記ブートローダを実行することにより上記ワーキングメモリ上に展開された初期プログラムファイルのプログラムコードに応じて動作制御及びデータ処理を行い、
上記ブートローダには、最新バージョンの初期プログラムファイルであることを示した名称のファイルを、上記プログラムメモリから選択してワーキングメモリに展開する実行コードが記述されており、
上記初期プログラムファイルの更新処理を行う場合には、
新しい初期プログラムファイルを上記プログラムメモリに格納するとともにその名称を最新バージョンの初期プログラムファイルであることを示した名称とし、並びに、上記プログラムメモリに元々格納されていた最新バージョンの初期プログラムファイルであることを示した名称のファイルを削除又は名称変更すること
を特徴とするプログラム更新方法。
【請求項５】
上記ブートローダには、
最新バージョンの初期プログラムファイルであることを示した名称のファイルが上記プログラムメモリに格納されているか否かを判断し、格納されている場合には上記プログラムメモリからそのファイルを選択してワーキングメモリに展開し、格納されていない場合には、旧バージョンの初期プログラムファイルであることを示した名称のファイルを選択して、そのファイルの名称を最新バージョンの初期プログラムファイルであることを示した名称に変更するとともに、そのファイルを選択してワーキングメモリに展開する、実行コードが記述されており、
上記初期プログラムファイルの更新処理を行う場合には、
新しい初期プログラムファイルを上記プログラムメモリに格納するとともにその名称を仮名称とし、
最新バージョンの初期プログラムファイルであることを示した名称のファイルが上記プログラムメモリに格納されているか否かを判断し、
格納されている場合にはそのファイルの名称を旧バージョンの初期プログラムファイルであることを示した名称に変更したのち、上記仮名称を最新バージョンの初期プログラムファイルであることを示した名称に変更し、
格納されていない場合には上記仮名称を最新バージョンの初期プログラムファイルであることを示した名称に変更すること
を特徴とする請求項４記載のプログラム更新方法。
【請求項６】
旧バージョンの初期プログラムファイルであることを示した名称のファイルが上記プログラムメモリに格納されている場合には、旧バージョンの初期プログラムファイルであることを示した名称のファイルを削除した後に、最新バージョンの初期プログラムファイルであることを示した名称のファイルの名称を旧バージョンの初期プログラムファイルであることを示した名称に変更すること
を特徴とする請求項５記載のプログラム更新方法。
【請求項７】
上記プログラムメモリに格納されるファイルの名称は、ファイルタイトル及びそのファイルの種別を示す拡張子から構成されており、
最新バージョンの初期プログラムファイルであることを示した名称、旧バージョンの初期プログラムファイルであることを示した名称、及び、上記仮名称は、ファイルタイトルが同一で拡張子が異なること
を特徴とする請求項６記載のプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内部メモリに格納されているプログラムに基づき動作する電子機器、及び、そのような電子機器のプログラムを更新するためのプログラム更新方法に関するものである。
【背景技術】
【０００２】
近年の家庭用電化製品、オフィス機器、携帯電話機等の各種の電子機器は、内部にＣＰＵ（Central Processing Unit）等の制御用の回路が設けられており、ＲＯＭ（Read Only Memory）に格納されているプログラムコードに基づき動作する。
【０００３】
このようなＣＰＵ内蔵の電子機器では、電源をオンした後のシステム起動過程が、比較的小さな実行コード群から構成されているブートローダを実行し、続いて、このブートローダがそのシステムのオペレーションシステムプログラムの初期コードを読み出すといった、段階的な起動動作となっているのが一般的である。
【０００４】
また、近年、コンピュータ等のアプリケーションプログラムと同様に、ＣＰＵ内蔵の電子機器でも、装置の完成後や出荷後にプログラムコードをアップデートして、その装置の機能拡張や機能補正が行えるようになってきている。
【０００５】
ところで、プログラムコードのアップデートが可能な電子機器の場合、プログラムコードが格納されているメモリ内には、工場出荷時から存在するプログラムファイルに加えて、アップデートを行った回数分のプログラムファイルが格納されている。そのため、このような電子機器に適用されるブートローダには、複数のプログラムファイルのうちから最新バージョンのプログラムファイルを検索する、という検索処理を行わなければならない。
【０００６】
しかしながら、起動時にこのような検索処理を実行すると、その分起動処理が複雑となり、ブートローダの実行コードが長くなってしまう。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする問題点は、組み込みプログラムのアップデートが可能な電子機器において、起動処理が複雑となってしまう点並びにブートローダの実行コードが大きくなってしまう点である。
【０００８】
そこで、本発明は、組み込みプログラムのアップデートが可能な電子機器において、起動時に実行される初期プログラムのバージョンの意識せずに簡単な起動処理を行い、さらに、ブートローダの実行コードを短くすることが可能な、電子機器及びそのプログラム更新方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る電子機器は、プログラムコードが展開されるワーキングメモリと、上記ワーキングメモリ内に展開されているプログラムコードに基づき、当該機器の動作制御及びデータ処理を行うデータ処理ユニットと、システム起動後に最初に実行される初期プログラムファイルが格納されているプログラムメモリと、上記初期プログラムファイルを上記プログラムメモリから上記ワーキングメモリに展開するための実行コードが記述されたブートローダが所定の物理量域に格納されているブートメモリとを備え、上記データ処理ユニットは、システム起動後に、上記ブートメモリに格納されているブートローダを実行し、続いて、上記ブートローダを実行することにより上記ワーキングメモリ上に展開された初期プログラムファイルのプログラムコードに応じて動作制御及びデータ処理を行い、上記ブートローダには、最新バージョンの初期プログラムファイルであることを示した名称のファイルを、上記プログラムメモリから選択してワーキングメモリに展開する実行コードが記述されている。
【００１０】
上記本発明の電子機器に対して、ブートローダにより読み出される初期プログラムのアップデートを行う場合には、新しい初期プログラムファイルをプログラムメモリに格納するとともにその名称を最新バージョンの初期プログラムファイルであることを示した名称とし、並びに、上記プログラムメモリに元々格納されていた最新バージョンの初期プログラムファイルであることを示した名称のファイルを削除又は名称変更する。
【００１１】
そして、本発明の電子機器のブートローダは、最新バージョンの初期プログラムファイルであることを示した名称のファイルを、上記プログラムメモリから選択してワーキングメモリに展開する処理を行う。
【００１２】
また、本発明に係るプログラム更新方法は、上記の本発明の電子機器に組み込まれているプログラムをバージョンアップするプログラム更新方法であって、初期プログラムファイルの更新処理を行う場合には、新しい初期プログラムファイルを上記プログラムメモリに格納するとともにその名称を最新バージョンの初期プログラムファイルであることを示した名称とし、並びに、上記プログラムメモリに元々格納されていた最新バージョンの初期プログラムファイルであることを示した名称のファイルを削除又は名称変更する。
【発明の効果】
【００１３】
本発明の電子機器では、ブートローダにより読み出される初期プログラムのアップデートが行われる場合には、新しい初期プログラムファイルがプログラムメモリに格納されるとともにその名称が最新バージョンの初期プログラムファイルであることを示した名称とされ、並びに、上記プログラムメモリに元々格納されていた最新バージョンの初期プログラムファイルであることを示した名称のファイルが削除又は名称変更される。
【００１４】
そして、本発明の電子機器では、ブートローダが、最新バージョンの初期プログラムファイルであることを示した名称のファイルを、上記プログラムメモリから選択してワーキングメモリに展開する処理を行う。
【００１５】
このことにより本発明の電子機器では、起動時に実行される初期プログラムのバージョンの意識せずにブートローダが簡単な起動処理を行い、さらに、ブートローダの実行コードを短くすることができる。
【００１６】
また、本発明のプログラム更新方法では、電子機器に対してブートローダにより読み出される初期プログラムのアップデートを行う場合には、新しい初期プログラムファイルをプログラムメモリに格納するとともにその名称を最新バージョンの初期プログラムファイルであることを示した名称とし、並びに、上記プログラムメモリに元々格納されていた最新バージョンの初期プログラムファイルであることを示した名称のファイルを削除又は名称変更する。
【００１７】
そのため、上記電子機器のブートローダは、最新バージョンの初期プログラムファイルであることを示した名称のファイルを、上記プログラムメモリから選択してワーキングメモリに展開する処理を行うことが可能となり、このことにより、起動時に実行される初期プログラムのバージョンの意識せずにブートローダが簡単な起動処理を行い、さらに、ブートローダの実行コードを短くすることができる。
【発明を実施するための最良の形態】
【００１８】
本発明を実施するための最良の形態として、ＣＰＵ（Central Processing Unit）を内蔵し、このＣＰＵにより電子的な制御がされる電子機器について説明をする。なお、電子機器とは、家庭用電化製品、オフィス機器、オーディオビジュアル機器、携帯電話機、通信機器等の電気的に動作をするあらゆる機器を含んでいる。
【００１９】
図１に、本発明を適用した電子機器１０の内部ブロック図を示す。
【００２０】
電子機器１０は、図１に示すように、当該電子機器１０内に設けられた電子制御がなされるユニットである電子制御対象部１１と、この電子制御対象部１１の動作制御及び演算処理を行うＣＰＵ１２と、ＣＰＵ１２の作業領域となるとともにプログラムコードが展開されるランダムアクセスメモリ（ＲＡＭ）１３とを備えている。ＣＰＵ１２は、ＲＡＭ１３上に展開されたプログラムコードを順次実行してゆき、このプログラムコードに基づき演算処理を行ったり、電子制御対象部１１に対して各種制御を行ったりする。電子制御対象部１１、ＣＰＵ１２及びＲＡＭ１３は、第１のバス１４上に設けられており、当該第１のバス１４を介して相互にデータ転送が行われる。
【００２１】
また、電子機器１０は、不揮発性の書き換え可能なメモリ手段であるフラッシュメモリ１５と、不揮発性の書き換え不可能なメモリ手段であるリードオンリーメモリ（ＲＯＭ）１６と、外部からデータの入力がされるデータ入力ポート１７とを備えている。フラッシュメモリ１５、ＲＯＭ１６及びデータ入力ポート１７は、第２のバス１８上に設けられており、当該第２のバス１７を介して相互にデータ転送が行われる。
【００２２】
また、電子機器１０は、バスブリッジ１９を備えている。バスブリッジ１９は、第１のバス１４と第２のバス１８との間のデータ転送制御を行う。
【００２３】
フラッシュメモリ１５には、ＣＰＵ１２が実行処理をする各種の動作プログラムがファイル化されて格納されている。これらの動作プログラムのうち、電源がオンした直後のシステム起動時にＣＰＵ１２に実行されるプログラムコードが記述されたファイルのことを、ここでは初期プログラムファイル２１という。初期プログラムファイル２１は、データ入力ポート１７を介して外部からアップデートが可能となっている。
【００２４】
少なくとも１回のアップデート処理がされた後は、通常の状態であれば、２種類の初期プログラムファイル２１がフラッシュメモリ１５内に格納される。一つは、最新バージョンのプログラムコードが記述された最新初期プログラムファイル２２であり、もう一つは、旧バージョンのプログラムコードが記述された旧初期プログラムファイル２３である。ただし、工場出荷時には、フラッシュメモリ１５内に最新初期プログラムファイル２２のみが格納されていてもよい。
【００２５】
また、電子機器１０では、フラッシュメモリ１５内に格納されるファイルの名称を、ファイルタイトル及びそのファイルの種別を示す拡張子とから構成している。ファイルタイトルと拡張子との間はドットで接続されている。また、電子機器１０では、最新初期プログラムファイル２２の名称と旧初期プログラムファイル２３の名称とを、ファイルタイトルが同一で拡張子のみが異なる形式で管理をしている。例えば、図１に示すように、最新初期プログラムファイル２２及び旧初期プログラムファイル２３のファイルタイトルをともに「program」とし、最新初期プログラムファイル２２の拡張子を「run」とし、旧初期プログラムファイル２３の拡張子を「old」として管理している。
【００２６】
また、フラッシュメモリ１５には、ブートローダ２４がある特定の物理アドレスに格納されている。ブートローダ２４は、当該電子機器１０のシステム起動時に最新初期プログラムファイル２２を読み出して、ＣＰＵ１２が実行可能なようにＲＡＭ１３上に展開する処理を行う実行コードが記述されているプログラムである。
【００２７】
以上のような構成の電子機器１０では、ブートローダ２４が格納されていることにより、段階的なシステム起動が行われる。すなわち、システム起動時には、ブートローダ２４がＣＰＵ１２により読み出され、ＣＰＵ１２によりブートローダ２４の実行がされる。続いて、このブートローダ２４の実行に応じてＣＰＵ１２により最新初期プログラムファイル２２が読み出されて、最新初期プログラムファイル２２のプログラムコードがＲＡＭ１３上に展開される。そして、ＣＰＵ１２がＲＡＭ１３上に展開されたプログラムコードを実行することにより、当該電子機器１０の起動動作が完了する。
【００２８】
さらに、以上のような構成の電子機器１０では、外部から初期プログラムファイル２１のアップデートが可能となっている。アップデート時には、データ入力ポート１７から新しいバージョンの初期プログラムファイル２１が入力される。そして、入力された初期プログラムファイル２１がフラッシュメモリ１５上の空き領域に記録されることにより、アップデートが完了する。なお、アップデート処理の主体は、ＣＰＵ１２であっても、外部機器であってもよい。ＣＰＵ１２が行う場合には、例えばＲＯＭ１６内等に格納されているアップデート処理用のプログラムを実行することにより行われ、外部機器が行う場合には、例えば、フラッシュメモリ１５を自己の外付けストレージ機器と認識して処理が行われる。
【００２９】
つぎに、ブートローダ２４の具体的な処理内容について、図２のフローチャートを参照して説明をする。
【００３０】
電子機器１０の電源がオンされると、ＣＰＵ１２は、ブートローダ２４をフラッシュメモリ１５から読み出して実行し、このことにより以下のステップＳ１０２からステップＳ１０６までの処理を行う（Ｓ１０１）。ＣＰＵ１２は、まず、フラッシュメモリ１５内に最新初期プログラムファイル（program.run）２２が存在するか否かを検出する（Ｓ１０２）。最新初期プログラムファイル（program.run）２２が存在すれば、ＣＰＵ１２は、そのファイルのプログラムコードをＲＡＭ１３上に展開し（Ｓ１０５）、続いて、展開したプログラムを起動する（Ｓ１０６）。一方、最新初期プログラムファイル（program.run）２２が存在しない場合には、ＣＰＵ１２は、旧初期プログラムファイル（program.old）２３がフラッシュメモリ１５上に存在するか否かを判断し（ステップＳ１０３）、存在すれば旧初期プログラムファイル（program.old）２３の名称を本来最新初期プログラムファイル２２に付けられる名称（program.run）に変更する（Ｓ１０４）。この結果、最新初期プログラムファイル２２がフラッシュメモリ１５内に格納されることとなる。そして、ＣＰＵ１２は、名称の変更をしたそのファイルのプログラムコードをＲＡＭ１３上に展開し（Ｓ１０５）、続いて、展開したプログラムを起動する（Ｓ１０６）。
【００３１】
以上のようにＣＰＵ１２は、ブートローダ２４を実行して、起動処理を行う。
【００３２】
つぎに、初期プログラムファイル２１のアップデート時における処理内容について、図３のフローチャートを参照して説明する。なお、この処理は、外部機器が行ってもＣＰＵ１２が行ってもよい処理であるが、ここではＣＰＵ１２が行うものとして説明をする。
【００３３】
まず、アップデート処理の開始命令が与えられ、この命令に応答してデータ入力ポート１７から新しいバージョンの初期プログラムファイル２１が入力される。ＣＰＵ１２は、入力されたそのファイルに仮名称を付けて、フラッシュメモリ１５に格納する（Ｓ２０１）。なお、この仮名称は、最新初期プログラムファイル（program.run）２２及び旧初期プログラムファイル（program.old）２３と、ファイルタイトルが同一で、拡張子のみが異なっている。例えば、仮名称のファイルタイトルは、最新初期プログラムファイル２２及び旧初期プログラムファイル２３と同一の「program」とし、拡張子は「tmp」としている。
【００３４】
続いて、ＣＰＵ１２は、フラッシュメモリ１５内に旧初期プログラムファイル（program.old）２３が存在するか否かを検出する（Ｓ２０２）。存在すれば、ステップＳ２０３に進み、存在しなければ、ステップＳ２０６に進む。
【００３５】
ＣＰＵ１２は、ステップＳ２０３において、フラッシュメモリ１５内に最新初期プログラムファイル（program.run）２２が存在するか否かを検出する（Ｓ２０３）。
【００３６】
ステップＳ２０３で最新初期プログラムファイル（program.run）２２が存在すると判断した場合には、ステップＳ２０８に進む。ステップＳ２０３で最新初期プログラムファイル（program.run）２２が存在しないと判断した場合には、旧初期プログラムファイル（program.old）２３を削除し（Ｓ２０４）、続いて、最新初期プログラムファイル（program.run）２２の名称を旧初期プログラムファイル２３に付けられる名称（program.old）に変更し（ステップＳ２０５）、ステップＳ２０８に進む。
【００３７】
また、ＣＰＵ１２は、ステップＳ２０６において、フラッシュメモリ１５内に、最新初期プログラムファイル（program.run）２２が存在するか否かを検出する（Ｓ２０６）。
【００３８】
ステップＳ２０６で最新初期プログラムファイル（program.run）２２が存在すると判断した場合には、ステップＳ２０８に進む。ステップＳ２０６で最新初期プログラムファイル（program.run）２２が存在しないと判断した場合には、最新初期プログラムファイル（program.run）２２の名称を旧初期プログラムファイル２３に付けられる名称（program.old）に変更し（ステップＳ２０７）、ステップＳ２０８に進む。
【００３９】
ステップＳ２０８において、ＣＰＵ１２は、仮名称で付けていた新しい初期プログラムファイル（program.tmp）の名称を、本来最新初期プログラムファイル２２に付けられる名称（program.run）に変更する。この結果、最新初期プログラムファイル２２がフラッシュメモリ１５内に格納されることとなる。そして、ＣＰＵ１２は、アップデート処理を終了する。
【００４０】
以上のように、電子機器１０では、ブートローダ２４により読み出される初期プログラムファイル２１のアップデートを行う場合、その新しい初期プログラムファイルの名称を最新バージョンのファイルの名称（program.run）として格納し、元々格納されていた最新バージョンのファイルの名称を他の名前に変更したり、そのファイル自体を削除したりする。
【００４１】
このことによりブートローダ２４は、最新バージョンの検索処理等を行わなくても、特定の名称のファイルを読み出しさえすれば、常に最新バージョンのファイルを読み出すことが可能となる。
【００４２】
このことにより電子機器１０では、起動時に実行される初期プログラムファイルのバージョンの意識しない簡単な実行コードにより起動処理を行うことが可能となり、さらに、その実行コードを短くすることができる。
【００４３】
また、電子機器１０では、最新初期プログラムファイル２２と旧初期プログラムファイル２３の名称を、ファイルタイトルを同一として拡張子のみ変更している。このことにより、記述子の検索のみを行えば、バージョンを新、旧のバージョンの判断をすることができ、ブートローダの処理を簡略化することが可能となる。
【００４４】
なお、電子機器１０では、ブートローダ２４をフラッシュメモリ１５に格納しているが、その他のメモリや領域に格納してもよい。
【図面の簡単な説明】
【００４５】
【図１】本発明が適用された電子機器の内部ブロック図である。
【図２】ブートローダの処理フローを示す図である。
【図３】初期プログラムファイルの更新処理フローを示す図である。
【符号の説明】
【００４６】
１０  電子機器、１１  電子制御対象部、１２  ＣＰＵ、１３  ＲＡＭ、１４  第１のバス、１５  フラッシュメモリ、１６  ＲＯＭ、１７  データ入力ポート、１８  第２のバス、１９  バスブリッジ、２１  初期プログラムファイル、２２  最新初期プログラムファイル、２３  旧初期プログラムファイル、２４  ブートローダ
【図１】
2005078455.tif 000003
【図２】
2005078455.tif 000004
【図３】
2005078455.tif 000005