(57)【要約】【課題】ファームウェア更新方法で、ＲＡＭに更新プログラムモジュールとそのアドレスを書込むものは、各ファームウェアモジュール先頭に更新ファームウェア存在確認処理が必要で、ＲＯＭ内容を全てＲＡＭにコピーするものは、ＲＯＭ交換検知手段が必要で、かつＲＯＭ、ＲＡＭ、ＣＰＵ一体化ＬＳＩに適用できない。【解決手段】ファームウェア等の情報を格納するＲＯＭ、ＲＯＭ情報がコピーされるＲＡＭ、ファームウェアを実行するＣＰＵ、外部との通信手段を備え、ＣＰＵがファームウェア実行時の関数コールは、起動時にＲＯＭからコピーされたＲＡＭの関数アドレス情報に基づき、ＲＯＭのファームウェア変更やファームウェア追加は、修正または追加されたファームウェアを通信手段を介してＲＡＭに書込むと共にＲＡＭの該当関数のアドレスを新たに書込まれたＲＡＭのアドレスに書き換える。【選択図】図１
2008102761.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアとファームウェアで参照する固定データおよびメインルーチン以外の全関数のアドレス情報が格納されたマスクＲＯＭと、マスクＲＯＭに格納されている関数のアドレス情報がコピーされるＲＡＭと、マスクＲＯＭのファームウェアを実行するＣＰＵと、外部との通信を行う通信手段を備え、  起動時はマスクＲＯＭに格納されている関数のアドレス情報をＲＡＭにコピーし、ＣＰＵがマスクＲＯＭのファームウェアを実行する時の関数コールはＲＡＭにコピーされた関数のアドレス情報に基づいて動作するように構成された組み込み型の情報処理装置におけるファームウェアの更新方法であって、
ファームウェアは通信手段から入力されたデータをＲＡＭ上の任意のアドレスに書き込む機能を備え、マスクＲＯＭのファームウェアを変更、または追加する場合は、修正されたファームウェアまたは追加するファームウェアを外部から上記通信手段を介してＲＡＭに書き込むとともにＲＡＭにコピーされている該当関数のアドレス情報を修正または追加するファームウェアが新たに書き込まれたＲＡＭのアドレス情報に書き換えることを特徴とする組み込みファームウェアの更新方法。
【請求項２】
工場出荷前の工場調整用の専用のファームウェアは、ＲＡＭの空き領域に書き込むことを特徴とする請求項１に記載の組み込みファームウェアの更新方法。
【請求項３】
ファームウェアとファームウェアで参照する固定データおよびメインルーチン以外の全関数のアドレス情報が格納されたマスクＲＯＭと、マスクＲＯＭに格納されている関数のアドレス情報がコピーされるＮＶＲＡＭと、データ領域としてのＲＡＭと、マスクＲＯＭのファームウェアを実行するＣＰＵと、外部との通信を行う通信手段を備え、起動時はマスクＲＯＭに格納されている関数のアドレス情報をＮＶＲＡＭにコピーし、ＣＰＵがマスクＲＯＭのファームウェアを実行する時の関数コールはＮＶＲＡＭにコピーされた関数のアドレス情報に基づいて動作するように構成された組み込み型の情報処理装置におけるファームウェアの更新方法であって、
ファームウェアは通信手段から入力されたデータをＮＶＲＡＭ上の任意のアドレスに書き込む機能を備え、マスクＲＯＭのファームウェアを変更、またはファームウェアを追加する場合は、修正されたファームウェアまたは追加するファームウェアを外部から上記通信手段を介してＮＶＲＡＭに書き込むとともにＮＶＲＡＭにコピーされている該当関数のアドレス情報を修正または追加するファームウェアが新たに書き込まれたＮＶＲＡＭのアドレス情報に書き換えることを特徴とする組み込みファームウェアの更新方法。
【請求項４】
工場出荷前の工場調整用の専用のファームウェアは、ＮＶＲＡＭの空き領域に書き込むことを特徴とする請求項３に記載の組み込みファームウェアの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は組み込み型の情報処理装置においてファームウェアの不具合を解消したり機能を変更・追加したりするためのファームウェア更新技術に関する。
【背景技術】
【０００２】
組み込み型の情報処理装置は、ファームウェアや固定データを記憶したマスクＲＯＭ（Read Only Memory）、プログラム実行中に参照する変数などを記憶するＲＡＭ（Random Access Memory）、ファームウェアに基づいてデータの処理や周辺機能の制御を行うＣＰＵ（Central Processor Unit）を備えているものが一般的である。この組み込み型の情報処理装置でファームウェアに不具合が生じたり、機能を変更したり新規に追加する場合にはマスクＲＯＭに記憶されているファームウェア（プログラム）を更新する必要がある。プログラムを更新する方法として、組み込み型の情報処理装置そのものをプログラムを更新した情報処理装置に物理的に交換する方法が考えられる。しかし、組み込み型の情報処理装置は一般的にはＬＳＩ（Large Scale Integrated circuit）になっており、多大なコストと労力が必要であるため通常は行われない。特に携帯電話などに搭載される組み込み型のＬＳＩは膨大な数が生産されるため非現実的である。
【０００３】
上記問題を解決するファームウェアの更新方法として、ＲＡＭの空き領域あるいは特定の領域に更新すべきプログラムモジュールとそのプログラムモジュールが書き込まれるＲＡＭのアドレス情報を書き込み、ＲＡＭ上に書き込まれた更新プログラムモジュールが実行されるようにして不具合を解消したり機能を追加したりする方法が、例えば特開平５−７３２９２号公報（特許文献１）や特開平６−４４０７８号公報（特許文献２）に記載のように従来から提案されている。
【０００４】
【特許文献１】特開平５−７３２９２号公報
【特許文献２】特開平６−４４０７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１の特開平５−７３２９２号公報に記載のものは、ファームウェアの各モジュールが実行される時に修正されたファームウェアがＲＡＭに配置されているかを確認するように構成されているので、各ファームウェアモジュールの先頭に更新したファームウェアが存在するか否かを確認するための処理を予め組み込んでおく必要があるという問題点がある。
また、特許文献２の特開平６−４４０７８号公報に記載のものはマスクＲＯＭの内容を全てＲＡＭ上にコピーしてから実行するものであり、マスクＲＯＭが交換されたことを検知してＲＡＭに更新したプログラムモジュールを書き込むように構成されているので、マスクＲＯＭ交換を検知する特別なハードウェアが必要であり、かつマスクＲＯＭ、ＲＡＭ、ＣＰＵが一体化されたＬＳＩでは適用できないという問題点がある。
【０００６】
この発明は上記のような問題点を解決するためになされたもので、ファームウェアを更新するための特別なファームウェアやハードウェアが必要なく、簡易な構成でマスクＲＯＭに書き込まれているファームウェアを更新したり新たなファームウェア機能を追加したりすることが可能な組み込みファームウェアの更新方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る組み込みファームウェアの更新方法は、
ファームウェアとファームウェアで参照する固定データおよびメインルーチン以外の全関数のアドレス情報が格納されたマスクＲＯＭと、マスクＲＯＭに格納されている関数のアドレス情報がコピーされるＲＡＭと、マスクＲＯＭのファームウェアを実行するＣＰＵ（Central Processor Unit）と、外部との通信を行う通信手段を備え、
起動時はマスクＲＯＭに格納されている関数のアドレス情報をＲＡＭにコピーし、ＣＰＵがマスクＲＯＭのファームウェアを実行する時の関数コールはＲＡＭにコピーされた関数のアドレス情報に基づいて動作するように構成され、ファームウェアは通信手段から入力されたデータをＲＡＭ上の任意のアドレスに書き込む機能を備えた組み込み型の情報処理装置において、
マスクＲＯＭのファームウェアを変更、あるいはファームウェアを追加する場合は、外部からの修正されたファームウェアあるいは追加するファームウェアを上記通信手段を介してＲＡＭに書き込むとともにＲＡＭにコピーされている該当関数のアドレス情報を修正または追加するファームウェアが新たに書き込まれたＲＡＭのアドレス情報に書き換えるものである。
【発明の効果】
【０００８】
この発明の組み込みファームウェアの更新方法は、その方法が使用される組み込み型の情報処理装置の起動時にマスクＲＯＭ上に配置されている関数アドレステーブルをＲＡＭにコピーし、ファームウェア内の関数を更新したり、ファームウェアの機能を追加する場合は、ＲＡＭに更新したファームウェアあるいは追加ファームウェアを書き込むとともにＲＡＭにコピーした関数アドレステーブルの内容を書き換え、ＲＡＭへの書き込みは通信手段を介して行うように構成されているので、ファームウェアを更新するための特別なファームウェアやハードウェアが必要なく、簡易な構成でマスクＲＯＭに書き込まれているファームウェアを更新したり新たなファームウェア機能を追加したりすることが可能な組み込みファームウェアの更新方法を得ることができるという効果がある。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１はこの発明の実施の形態１によるファームウェアの更新方法が適用される組み込み型の情報処理装置の構成を示すブロック図である。一般的に、このような組み込み型の情報処理装置はＬＳＩとして構成されている。
図１において、１はＣＰＵ、２はマスクＲＯＭ、３はＲＡＭ、４は外部に接続されるホストコントローラなどとデータの通信を行う通信手段である。
通信手段４は外部のホストコントローラと組み込み型情報処理装置との間のコマンドインタフェースを実現するために設けられたものであり、組み込み型情報処理装置は通信手段４を介して入力されるコマンドに基づいて各種処理を実行する。
マスクＲＯＭ２には３つの領域が存在し、２ａにはファームウェア本体が格納され、２ｂにはファームウェアのメイン処理以外の全関数のマスクＲＯＭ上でのアドレス情報をテーブル化した関数アドレステーブルが格納され、２ｃには変数の初期値などの固定データが格納されている。
ＲＡＭ３も同じく３つの領域に分けられ、ファームウェアの実行時に変数などを格納するデータ領域３ａ、関数アドレステーブルのコピーを格納するための関数アドレステーブルコピー領域３ｂ、未使用状態である空き領域３ｃが存在する。
【００１０】
このように構成された組み込み型の情報処理装置は、電源投入後の起動時においてマスクＲＯＭ２の領域２ｂに格納されている関数アドレステーブルをＲＡＭ３の関数アドレステーブルコピー領域３ｂにコピーする。この処理は、一般的にリセット解除後に必ず実行されるファームウェアのスタートアップ処理に実装しておけばよい。そして、メイン処理から各関数をコールする場合には、ＣＰＵ１はＲＡＭ３の関数アドレステーブルコピー領域３ｂに格納されている関数のアドレス情報を参照して関数そのものを実行する。このような動作は、各関数を間接アドレッシングするようにファームウェアを実装しておけば、特段の手段を設けなくても一般的なＣＰＵで実現することが可能である。
【００１１】
次にこの発明の実施の形態１の組み込み型の情報処理装置において、一例として関数Ａを更新する場合の方法について図２を参照しながら説明する。
まず、ユーザは関数Ａの処理内容を更新した関数Ａ'を作成し．用意する。
次にユーザは関数Ａ'をＲＡＭ３の空き領域３ｃのどの領域に書き込むかを決定する。
次にホストコントローラが通信手段４を介して関数Ａ'をＲＡＭ３の決定された空き領域３ｃに書き込む。
ホストコントローラが通信手段４を介して関数アドレステーブルコピー領域３ｂに記憶されている関数Ａのアドレス値、即ち、マスクＲＯＭ上に記憶されていた元々の関数Ａのアドレス値を、関数Ａ'が書き込まれたＲＡＭ上のアドレス値に書き換える。
通信手段４を介してＲＡＭ上の任意のアドレスに書き込む動作は、書き込みアドレス、書き込むデータ、書き込むデータ数などを指定するコマンドを設け、そのコマンドに対応した処理をファームウェアに実装しておけば容易に実現することが可能である。
【００１２】
このようにすることで、次にメインルーチンから関数Ａがコールされると、関数Ａの代わりに関数Ａ'が実行されるようになる。
なお、更新したファームウェアコードのＲＡＭ３への書き込みと関数アドレステーブルコピー領域３ｂの変更をホストコントローラから実行するタイミングは、起動後に通信手段４が有効になった直後でも良いし、更新する関数の機能を使用する直前でも良く、組み込み型の情報処理装置自身が関与する必要はない。
【００１３】
以上は、関数の処理内容を変更する場合の方法について説明したが、ファームウェアに機能を追加することも可能である。一例として関数Ａの前後に新たなファームウェア処理を追加する場合の方法について、図３を参照しながら説明する。
まず、ユーザは新たに追加するファームウェア処理と関数Ａのコール処理を含んだ関数Ｃを作成する。新たに追加するファームウェア処理は、関数Ａの前処理として組み込んでも良いし、後処理として組み込んでも良い。
次にユーザは関数ＣをＲＡＭ３の空き領域３ｃのどの領域に書き込むかを決定する。
次にホストコントローラが通信手段４を介して関数ＣをＲＡＭ３の空き領域３ｃに書き込む。
ホストコントローラが通信手段４を介して関数アドレステーブルコピー領域３ｂに記憶された関数Ａのアドレス値、即ち、マスクＲＯＭ上に記憶されていた元々の関数Ａのアドレス値を、関数Ｃが書き込まれたＲＡＭ上のアドレス値に書き換える。
このようにすることで、次にメインルーチンから関数Ａがコールされるタイミングで、関数Ｃが実行されることにより新たに追加した機能と関数Ａが実行されるようになる。
【００１４】
以上のように、実施の形態１の組み込み型の情報処理装置におけるファームウェアの更新方法は、起動時にマスクＲＯＭ上に配置されている関数アドレステーブルをＲＡＭにコピーし、ファームウェア内の関数を更新したり、ファームウェアの機能を追加する場合は、ＲＡＭに更新したファームウェアあるいは追加ファームウェアを書き込むとともにＲＡＭにコピーした関数アドレステーブルの内容を書き換える。なお、ＲＡＭへの書き込みはホストコントローラからこのホストコントローラとのコマンドインタフェースとして設けられている通信手段を介して行うように構成されているので、ファームウェアを更新するための特別なファームウェアやハードウェアが必要なく、簡易な構成でマスクＲＯＭに書き込まれているファームウェアを更新したり新たなファームウェア機能を追加したりすることが可能な組み込みファームウェアの更新方法を得ることができるという効果がある。
【００１５】
実施の形態２．
図４はこの発明の実施の形態２によるファームウェアの更新方法が適用される組み込み型の情報処理装置の構成を示すブロック図である。実施の形態１と同一の手段は同一の番号で示し、その説明を省略する。図４において、５はＮＶＲＡＭ（Non Voltage RAM）、６はＲＡＭである。
ＮＶＲＡＭ５は、他の構成部材とは別の専用電源系統が割り当てられたバッテリバックアップのＲＡＭで、専用電源が投入されていれば書き込まれたデータを保持できるので、少ない消費電力でデータを保持しておきたい場合などに用いられることが多い。ＮＶＲＡＭ５は３つの領域に分けられ、ファームウェア実行時に変数などを格納するデータ領域５ａ、関数アドレステーブルのコピーを格納するための関数アドレステーブルコピー領域５ｂ、未使用状態である空き領域５ｃが存在する。
なお、この実施の形態２では、ＲＡＭ６はデータ領域としてのみ使用される。
【００１６】
このように構成された実施の形態２の組み込み型の情報処理装置は、第１回目の電源投入後の起動時においてマスクＲＯＭ２の領域２ｂに格納されている関数アドレステーブルをＮＶＲＡＭ５の関数アドレステーブルコピー領域５ｂにコピーする。そして、メイン処理から各関数をコールする場合には、ＣＰＵ１はＮＶＲＡＭ５の関数アドレステーブルコピー領域５ｂに格納されている関数のアドレス情報を参照して関数そのものを実行する。
【００１７】
次にこの発明の実施の形態２における組み込み型の情報処理装置において、一例として関数Ａを更新する場合の方法について図５を参照しながら説明する。
まず、ユーザは関数Ａの処理内容を更新した関数Ａ'を作成する。次にユーザは関数Ａ'をＮＶＲＡＭ５の空き領域５ｃのどの領域に書き込むかを決定する。次にホストコントローラにより通信手段４を介して関数Ａ'をＮＶＲＡＭ５の空き領域５ｃに書き込むとともに、関数アドレステーブルコピー領域５ｂに記憶されていた元々の関数ＡのマスクＲＯＭ上のアドレス値を、関数Ａ'が書き込まれたＮＶＲＡＭ上のアドレス値に書き換える。この動作は第１回目の起動直後に行う。このようにすることで、次にメインルーチンから関数Ａがコールされると、関数Ａの代わりに関数Ａ'が実行されるようになる。
【００１８】
次にファームウェアに機能を追加する方法の一例として関数Ａの前後に新たなファームウェア処理を追加する場合について説明する。
まず、ユーザは新たに追加するファームウェア処理と関数Ａのコール処理を含んだ関数Ｃを作成する。新たに追加するファームウェア処理は、関数Ａの前処理として組み込んでも良いし、後処理として組み込んでも良い。
次にユーザは関数ＣをＮＶＲＡＭ５の空き領域５ｃのどの領域に書き込むかを決定する。
次にホストコントローラが通信手段４を介して関数ＣをＮＶＲＡＭ５の空き領域５ｃに書き込む。
ホストコントローラが通信手段４を介して関数アドレステーブルコピー領域５ｂに記憶された関数Ａのアドレス値、即ち、マスクＲＯＭ上に記憶されていた元々の関数Ａのアドレス値を、関数Ｃが書き込まれたＮＶＲＡＭ５上のアドレス値に書き換える。
このようにすることで、次にメインルーチンから関数Ａがコールされるタイミングで、関数Ｃが実行されることになり新たに追加した機能と関数Ａが実行されるようになる。
【００１９】
次回に組み込み型の情報処理装置を起動する場合は、ＮＶＲＡＭ５のデータをチェックし、データが保持されていれば、更新したファームウェアコードのＮＶＲＡＭ５への書き込みと関数アドレステーブルコピー領域５ｂの変更は行わない。ＮＶＲＡＭ５のデータのチェックは、ホストコントローラからコマンド経由でＮＶＲＡＭ５のデータを読み出して実施しても良いし、組み込み型の情報処理装置のファームウェアのスタートアップにデータをチェックする処理を組み込んでおく方法でも良い。
【００２０】
以上のように、実施の形態２の組み込み型の情報処理装置におけるファームウェアの更新方法は、起動時にマスクＲＯＭ上に配置されている関数アドレステーブルをＮＶＲＡＭにコピーし、ファームウェア内の関数を更新したり、ファームウェアの機能を追加する場合は、ＮＶＲＡＭに更新したファームウェアあるいは追加ファームウェアを書き込むとともにＮＶＲＡＭにコピーした関数アドレステーブルの内容を書き換える。ＮＶＲＡＭへの書き込みはホストコントローラからこのホストコントローラとのコマンドインタフェースとして設けられている通信手段を介して行うように構成されているので、ファームウェアを更新するための特別なファームウェアやハードウェアが必要なく、簡易な構成でマスクＲＯＭに書き込まれているファームウェアを更新したり新たなファームウェア機能を追加したりすることが可能で、かつ起動するための時間も短い組み込みファームウェアの更新方法を得ることができるという効果がある。
【００２１】
実施の形態３．
例えばカメラモジュールなどに搭載される組み込み型の情報処理装置では、カメラモジュールの各個体の性能ばらつきを吸収するために製品出荷前にパラメータの調整を行うことが多く、その場合、パラメータ調整用の専用のファームウェアモジュールを実行する必要がある。このようなファームウェアモジュールは、製品出荷後は使用されないため、マスクＲＯＭ領域に配置するとマスクＲＯＭ領域を圧迫することになる。
そこで、製品出荷前のパラメータ調整時は、実施の形態１や実施の形態２で説明した手順で調整用のファームウェアモジュールをＲＡＭあるいはＮＶＲＡＭに配置して実行し、製品出荷後にファームウェアを更新したりファームウェアを追加する場合も、工場出荷前に使用したＲＡＭあるいはＮＶＲＡＭの空き領域に実施の形態１や実施の形態２で説明した手順を実行するようにすれば、上記問題は解消でき、マスクＲＯＭ領域を有効に活用することが可能である。
【００２２】
以上のように、実施の形態３の組み込み型の情報処理装置におけるファームウェアの更新方法では、工場出荷前は、ＲＡＭあるいはＮＶＲＡＭの空き領域にパラメータ調整専用のファームウェアを書き込み、出荷後は、更新ファームウェアや追加ファームウェアを工場出荷前に使用したＲＡＭあるいはＮＶＲＡＭの空き領域に書き込むように構成しているので、実施の形態１および実施の形態２に示した効果に加え、マスクＲＯＭ領域には製品出荷後に必要なファームウェアのみを配置できるという効果がある。
【産業上の利用可能性】
【００２３】
この発明によるファームウェアの更新方法は、例えば、携帯端末や携帯電話等の内蔵モバイルカメラ向け信号処理ＬＳＩに適用され、不具合発生時や機能の変更・追加等のためのファームウェアの更新が可能となる。
【図面の簡単な説明】
【００２４】
【図１】この発明の実施の形態１によるファームウェアの更新方法が適用される組み込み型の情報処理装置の構成を示すブロック図である。
【図２】実施の形態１の組み込み型の情報処理装置における関数Ａの更新方法の説明図である。
【図３】実施の形態１の組み込み型の情報処理装置における新たなファームウェア処理を追加する方法の説明図である。
【図４】この発明の実施の形態２によるファームウェアの更新方法が適用される組み込み型の情報処理装置の構成を示すブロック図である。
【図５】実施の形態２の組み込み型の情報処理装置における関数Ａの更新方法の説明図である。
【符号の説明】
【００２５】
１；ＣＰＵ、２；マスクＲＯＭ、３、６；ＲＡＭ、４；通信手段、５；ＮＶＲＡＭ。
【図１】
2008102761.tif 000003
【図２】
2008102761.tif 000004
【図３】
2008102761.tif 000005
【図４】
2008102761.tif 000006
【図５】
2008102761.tif 000007