(57)【要約】【課題】電子機器本来の機能を停止させることなく、電子機器の動作を制御するソフトウェアを瞬時に更新することができるソフトウェア更新装置を提供する。【解決手段】半導体メモリは、実行対象のソフトウェアが記憶される少なくとも１つの第１のメモリブロックと、更新用のソフトウェアが記憶される少なくとも１つの第２のメモリブロックとを備えている。コンパレータにより、レジスタに保持された指示情報に従い、ＣＰＵのアドレス信号と変換テーブルの内容とを比較して実行対象のソフトウェアが使用されていないタイミングを検出し、書換回路により、レジスタに保持された指示情報に従って、少なくとも１つの第１のメモリブロックと少なくとも１つの第２のメモリブロックとを入れ換えるように変換テーブルの内容を変更する。【選択図】図１
2004240717.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵのメモリ空間と半導体メモリのメモリ空間との間の対応付けの情報が記憶された変換テーブルと、この変換テーブルの内容に従って、前記ＣＰＵのメモリ空間と前記半導体メモリのメモリ空間との間のアドレス変換を行うアドレス変換回路と、前記変換テーブルの内容を書き換える指示情報を保持するレジスタと、このレジスタに保持された指示情報に従い、前記ＣＰＵのアドレス信号と前記変換テーブルの内容とを比較して実行対象のソフトウェアが使用されていないタイミングを検出し、前記変換テーブルの内容を書き換えるように指示を出すコンパレータと、このコンパレータの指示に従って前記変換テーブルの内容を変更する書換回路とを備え、
前記半導体メモリは、前記実行対象のソフトウェアが記憶される少なくとも１つの第１のメモリブロックと、更新用のソフトウェアが記憶される少なくとも１つの第２のメモリブロックとからなり、
前記書換回路は、前記レジスタに保持された指示情報に従って、前記半導体メモリの少なくとも１つの第１のメモリブロックと少なくとも１つの第２のメモリブロックとを入れ換えるように前記変換テーブルの内容を変更することを特徴とするソフトウェア更新装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアの内容を瞬時に更新することができるソフトウェア更新装置に関するものである。
【０００２】
【従来の技術】
電子機器の動作を制御するソフトウェアは、例えばファームウェアとしてフラッシュメモリ等の不揮発性メモリに書き込まれ、ＣＰＵ（中央演算装置）のメモリ空間内の一部に配置されて使用される場合がある。
【０００３】
この場合、不揮発性メモリに書き込まれたソフトウェアの内容を更新する際には、電子機器本来の動作、すなわち不揮発性メモリに書き込まれたソフトウェアの実行を一時的に停止させてからその内容を書き換えた後、さらにリセットや再起動を経て電子機器本来の機能を復旧させるといった手順をとる必要があった。これは、書き換え中のプログラムコードがＣＰＵにより誤って実行されるのを防止するためである。
【０００４】
しかし、リアルタイム性が求められたり、一時的な停止さえも許されない電子機器については、上記の手順を適用することができず、ソフトウェアの更新を行うのが困難であるという問題があった。
【０００５】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、電子機器本来の機能を停止させることなく、電子機器の動作を制御するソフトウェアを瞬時に更新することができるソフトウェア更新装置を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ＣＰＵのメモリ空間と半導体メモリのメモリ空間との間の対応付けの情報が記憶された変換テーブルと、この変換テーブルの内容に従って、前記ＣＰＵのメモリ空間と前記半導体メモリのメモリ空間との間のアドレス変換を行うアドレス変換回路と、前記変換テーブルの内容を書き換える指示情報を保持するレジスタと、このレジスタに保持された指示情報に従い、前記ＣＰＵのアドレス信号と前記変換テーブルの内容とを比較して実行対象のソフトウェアが使用されていないタイミングを検出し、前記変換テーブルの内容を書き換えるように指示を出すコンパレータと、このコンパレータの指示に従って前記変換テーブルの内容を変更する書換回路とを備え、
前記半導体メモリは、前記実行対象のソフトウェアが記憶される少なくとも１つの第１のメモリブロックと、更新用のソフトウェアが記憶される少なくとも１つの第２のメモリブロックとからなり、
前記書換回路は、前記レジスタに保持された指示情報に従って、前記半導体メモリの少なくとも１つの第１のメモリブロックと少なくとも１つの第２のメモリブロックとを入れ換えるように前記変換テーブルの内容を変更することを特徴とするソフトウェア更新装置を提供するものである。
【０００７】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のソフトウェア更新装置を詳細に説明する。
【０００８】
図１は、本発明のソフトウェア更新装置を適用する電子機器の一実施形態の構成概略図である。同図に示す電子機器１０は、ＣＰＵ（中央演算装置）１２と、アドレスデコーダ１４と、フラッシュメモリ１６と、ＳＲＡＭ（スタティックラム）１８とを備えている。ＣＰＵ１２とアドレスデコーダ１４とはＣＰＵバス２０を介して接続され、アドレスデコーダ１４とフラッシュメモリ１６およびＳＲＡＭ１８とはメモリバス２２を介して接続されている。
【０００９】
ここで、フラッシュメモリ１６はファームウェアであり、電子機器１０の固定的な動作を制御する基本プログラムを記憶する。また、ＳＲＡＭ１８は、ＣＰＵ１２の動作を制御するアプリケーションプログラムを記憶したり、ＣＰＵ１２が動作する際の作業領域として使用される。フラッシュメモリ１６およびＳＲＡＭ１８のメモリ空間はＣＰＵ１２のメモリ空間内の所定位置に配置され、ＣＰＵ１２は、フラッシュメモリ１６およびＳＲＡＭ１８に記憶されているプログラムを読み出し、読み出したプログラムに従って動作する。
【００１０】
アドレスデコーダ１４は、本発明のソフトウェア更新装置の一例であり、ＣＰＵ１２の論理的なメモリ空間とフラッシュメモリ１６およびＳＲＡＭ１８の物理的なメモリ空間との間のアドレス変換を行う機能を持つ。図示例のアドレスデコーダ１４は、それぞれＣＰＵバス２０およびメモリバス２２を駆動するバスドライバ２４，２６と、アドレス変換回路２８と、変換テーブル３０と、書換回路３２と、コンパレータ３４と、レジスタ３６とを備えている。
【００１１】
バスドライバ２４は、ＣＰＵバス２０、アドレス変換回路２８およびコンパレータ３４とそれぞれ相互に接続され、バスドライバ２６は、メモリバス２２およびアドレス変換回路２８とそれぞれ相互に接続されている。また、アドレス変換回路２８は変換テーブル３０と相互に接続され、変換テーブル３０はコンパレータ３４と相互に接続され、コンパレータ３４はレジスタ３６と相互に接続されている。また、コンパレータ３４の出力は書換回路３２に入力され、書換回路３２の出力は、図示を省略しているが、変換テーブル３０に入力されている。
【００１２】
ここで、変換テーブル３０は、ＣＰＵ１２の論理的なメモリ空間とフラッシュメモリ１６およびＳＲＡＭ１８の物理的なメモリ空間との間の対応付けを行う情報が記憶されたテーブルである。
【００１３】
アドレス変換回路２８は、変換テーブル３０の内容に従って、ＣＰＵ１２の論理的なメモリ空間とフラッシュメモリ１６およびＳＲＡＭ１８の物理的なメモリ空間との間のアドレス変換を行う。ＣＰＵ１２から出力されるアドレス信号は、ＣＰＵバス２０およびバスドライバ２４を介してアドレス変換回路２８に入力され、アドレス変換回路２８によって変換された後、バスドライバ２６およびメモリバス２２を介してフラッシュメモリ１６およびＳＲＡＭ１８に入力される。
【００１４】
また、レジスタ３６は、変換テーブル３０の内容を書き換えるための指示情報を保持する。この指示情報は、後述するように、実行対象のどのメモリブロックと更新用のどのメモリブロックとを入れ換えるのかという情報である。図示を省略しているが、レジスタ３６には、例えばＣＰＵ１２から指示情報が書き込まれる。
【００１５】
コンパレータ３４は、レジスタ３６に指示情報が書き込まれると、この指示情報に従って、バスドライバ２４を介して入力されるＣＰＵ１２のアドレス信号と変換テーブル３０に記憶されているテーブルの内容とを比較し、実行対象のソフトウェアが使用されていないタイミングを検出して、書換回路３２に対し、レジスタ３６の指示情報に従って変換テーブル３０の内容を書き換えるように指示を出す。
【００１６】
書換回路３２は、コンパレータ３４からの指示により、レジスタ３６の指示情報に従って変換テーブル３０の内容を書き換える。
【００１７】
次に、図２に示す一例を挙げて、フラッシュメモリ１６に記憶されているソフトウェアの更新を行う場合の電子機器１０の動作を説明する。
【００１８】
図２は、ＣＰＵのメモリ空間とフラッシュメモリのメモリ空間との対応関係を表す一実施形態の概念図である。図中左側は、更新前のメモリ空間の対応関係を表し、右側は、更新後のメモリ空間の対応関係を表す。ここで、ＣＰＵ１２のメモリ空間において、メモリブロックｉ〜ｉ＋３は実行対象のプログラムが記憶されるメモリブロックであり、メモリブロックｊ〜ｊ＋３は、更新用のプログラムが記憶される予備のメモリブロックである。
【００１９】
実行対象のプログラムが記憶されるメモリブロックは、ＣＰＵ１２によりアクセスされ、記憶されているプログラムが読み出されて実行される、現在使用中のプログラムが記憶されるメモリブロックである。これに対し、更新用のプログラムが記憶される予備のメモリブロックは、実行対象のメモリブロックに記憶されているプログラムと入れ換えられる、更新用のプログラムが記憶されるメモリブロックである。
【００２０】
まず、図２の左側に示すように、更新前のＣＰＵ１２のメモリ空間では、メモリブロックｉ〜ｉ＋３にそれぞれコードＡ，Ｂ，Ｃ，Ｄが記憶され、メモリブロックｊ、ｊ＋１にはそれぞれ新コードＡ，新コードＣが記憶されている。この場合、変換テーブル３０には、ＣＰＵ１２のメモリブロックｉ〜ｉ＋３がそれぞれフラッシュメモリ１６のメモリブロックｉ〜ｉ＋３に対応し、ＣＰＵ１２のメモリブロックｊ〜ｊ＋３がそれぞれフラッシュメモリ１６のメモリブロックｊ〜ｊ＋３に対応するという情報が記憶されている。
【００２１】
これに対し、図２の右側に示すように、更新後のＣＰＵ１２のメモリ空間では、メモリブロックｉ〜ｉ＋３にそれぞれ新コードＡ，コードＢ，新コードＣ，コードＤが記憶され、メモリブロックｊ、ｊ＋１にはそれぞれコードＡ，コードＣが記憶されている。この場合、変換テーブル３０には、ＣＰＵ１２のメモリブロックｉ〜ｉ＋３がそれぞれフラッシュメモリ１６のメモリブロックｊ、ｉ＋１，ｊ＋１，ｉ＋３に対応し、ＣＰＵ１２のメモリブロックｊ〜ｊ＋３がそれぞれフラッシュメモリ１６のメモリブロックｉ、ｉ＋２，ｊ＋２，ｊ＋３に対応するという情報が記憶されている。
【００２２】
すなわち、ＣＰＵ１２が、メモリブロックｉ、ｉ＋２内のメモリアドレスにアクセスすると、実際にはフラッシュメモリ１６のメモリブロックｊ、ｊ＋１内の対応するメモリアドレスにアクセスされる。また、これとは逆に、ＣＰＵ１２が、メモリブロックｊ、ｊ＋１内のメモリアドレスにアクセスすると、実際にはフラッシュメモリ１６のメモリブロックｉ、ｉ＋２内の対応するメモリアドレスにアクセスされる。
【００２３】
なお、コードＡ，Ｂ，Ｃ，Ｄは、実行対象のコードであり、新コードＡ，Ｃは、それぞれコードＡ，Ｃと入れ換えられる更新用の新規コードである。また、コードＡ，Ｂ，Ｃ，Ｄおよび新コードＡ，Ｃは、それぞれ機能的に独立して動作するプログラムであり、例えばＣＰＵ１２がコードＢ，Ｃ，Ｄのプログラムを実行している間は、コードＡのプログラムを新コードＡのプログラムに更新する（入れ換える）ことが可能である。
【００２４】
ソフトウェアの更新を行う場合、ＣＰＵ１２により、ソフトウェア更新プログラムに従って、フラッシュメモリ１６の予備のメモリブロックに更新用のプログラムの書き込みが行われる。本実施形態では、図２の左側に示すように、フラッシュメモリ１６のメモリブロックｊに新コードＡが書き込まれ、フラッシュメモリ１６のメモリブロックｊ＋１に新コードＣが書き込まれる。
【００２５】
この更新用の新規コードの書き込みは、実行対象のプログラムが格納されているメモリブロックｉ〜ｉ＋３の内容を変更するものではないため、電子機器１０本来の機能を停止させることなく実施することが可能である。なお、ソフトウェア更新プログラムは、例えばフラッシュメモリ１６に記憶されているものを使用してもよいし、あるいは外部の記憶装置等からＳＲＡＭ１８に読み込まれたものを使用してもよい。
【００２６】
新規コードの書き込みが終了すると、ＣＰＵ１２からレジスタ３６に対して、フラッシュメモリ１６のメモリブロックｉ〜ｉ＋３のうちのどのメモリブロックと、予備のメモリブロックｊ〜ｊ＋３のうちのどのメモリブロックとを入れ換えるのかを指示する情報が書き込まれる。本実施形態では、メモリブロックｉとメモリブロックｊとを入れ換え、かつメモリブロックｉ＋２とメモリブロックｊ＋１とを入れ換えるよう指示する情報が書き込まれる。
【００２７】
レジスタ３６に指示情報が書き込まれると、この指示情報に従ってコンパレータ３４が動作を開始する。コンパレータ３４は、変換テーブル３０の内容を参照して、ＣＰＵ１２のメモリブロックｉ、ｉ＋２とフラッシュメモリ１６のメモリブロックｉ、ｉ＋２とが対応していることを認識し、ＣＰＵ１２のアドレス信号をモニタして、ＣＰＵ１２がメモリブロックｉ、ｉ＋２内のメモリアドレスをアクセスしているかどうかを検出する。
【００２８】
コンパレータ３４により、ＣＰＵ１２がメモリブロックｉ、ｉ＋２内のメモリアドレスをアクセスしていないことが検出されると、コンパレータ３４から書換回路３２に対し、レジスタ３６の指示情報に従って変換テーブル３０の内容を書き換えるように指示する信号が与えられる。
【００２９】
書換回路３２は、コンパレータ３４から指示を受け取ると、レジスタ３６に保持されている指示情報に従って変換テーブル３０の内容を書き換える。本実施形態では、図２の右側に示すように、ＣＰＵ１２のメモリブロックｉ、ｉ＋２とフラッシュメモリ１６のメモリブロックｊ、ｊ＋１とが対応付けされ、ＣＰＵ１２のメモリブロックｊ、ｊ＋１とフラッシュメモリ１６のメモリブロックｉ、ｉ＋２とが対応付けされるように変換テーブル３０の内容が書き換えられる。
【００３０】
アドレス変換回路２８は、変更後の変換テーブル３０の内容に従ってＣＰＵ１２のメモリ空間を変換する。本実施形態の場合、ＣＰＵ１２がメモリブロックｉ内のメモリアドレスをアクセスした場合、フラッシュメモリ１６のメモリブロックｊ内の対応するメモリアドレスに変換し、ＣＰＵ１２がメモリブロックｉ＋２内のメモリアドレスをアクセスした場合、フラッシュメモリ１６のメモリブロックｊ＋１内の対応するメモリアドレスに変換する。
【００３１】
これにより、ＣＰＵ１２から見ると、フラッシュメモリ１６のメモリブロックｉ、ｉ＋２の内容がメモリブロックｊ、ｊ＋１の内容に瞬時に変更されたように見える。このため、電子機器１０本来の動作を停止させることなく、フラッシュメモリ１６に記憶されているソフトウェアの更新を瞬時に行うことができる。
【００３２】
なお、フラッシュメモリ１６やＳＲＡＭ１８に限定されず、従来公知のどのような半導体メモリを用いてもよい。また、半導体メモリは、実行対象のソフトウェアが記憶される少なくとも１つのメモリブロックと、更新用のソフトウェアが記憶される少なくとも１つのメモリブロックとを備えていればよい。また、本発明のソフトウェア更新装置は、ファームウェアに限定されるわけではなく、どのようなソフトウェアの更新にも適用可能である。
【００３３】
本発明は、基本的に以上のようなものである。
以上、本発明のソフトウェア更新装置について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【００３４】
【発明の効果】
以上詳細に説明した様に、本発明のソフトウェア更新装置は、コンパレータにより、レジスタに保持された指示情報に従い、ＣＰＵのアドレス信号と変換テーブルの内容とを比較して実行対象のソフトウェアが使用されていないタイミングを検出し、書換回路により、レジスタに保持された指示情報に従って、半導体メモリの少なくとも１つの第１のメモリブロックと少なくとも１つの第２のメモリブロックとを入れ換えるように変換テーブルの内容を変更するものである。
これにより、本発明のソフトウェア更新装置によれば、電子機器本来の機能を停止させることなく、電子機器の動作を制御するソフトウェアを瞬時に更新することができる。
【図面の簡単な説明】
【図１】本発明のソフトウェア更新装置を適用する電子機器の一実施形態の構成概略図である。
【図２】ＣＰＵのメモリ空間を表す一実施形態の概念図である。
【符号の説明】
１０  電子機器
１２  ＣＰＵ
１４  アドレスデコーダ
１６  フラッシュメモリ
１８  ＳＲＡＭ
２０  ＣＰＵバス
２２  メモリバス
２４，２６  バスドライバ
２８  アドレス変換回路
３０  変換テーブル
３２  書換回路
３４  コンパレータ
３６  レジスタ
【図１】
2004240717.tif 000003
【図２】
2004240717.tif 000004