(57)【要約】【課題】ローダの書き換え途中で中断されても、ファームウェアをリカバリー可能とすること。【解決手段】ＣＰＵは、フラッシュＲＯＭに記憶されているローダをフラッシュＲＯＭの他の位置にコピーし、ファームウェアの書き換え中であると判断した場合、ローダベクタの消去の有無により、ローダが書き換え中であるか否かを判断し、ローダが書き換え中であると判断した場合、フラッシュＲＯＭの他の位置にコピーしたローダを、ＲＡＭにコピーし、ＲＡＭにコピーしたローダを実行し、フラッシュＲＯＭに記憶されているファームウェアを書き換える。【選択図】図１１
2019040571.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと、
ファームウェアを記憶するための不揮発性メモリと、
制御部と、を備え、
前記ファームウェアは、ファームウェア本体と、前記不揮発性メモリを書き換えるためのローダと、を含み、
前記制御部は、
前記ファームウェアを書き換え中であることを示す第１マークを前記不揮発性メモリに設け、
前記ローダを書き換え中であることを示す第２マークを前記不揮発性メモリに設け、
起動時、前記第１マークにより、前記ファームウェアが書き換え中であるか否かを判断し、
前記ファームウェアの書き換え中ではないと判断した場合、前記不揮発性メモリに記憶されている前記ローダを前記揮発性メモリにコピーし、
前記不揮発性メモリに記憶されている前記ローダを前記不揮発性メモリの他の位置にコピーし、
前記ファームウェアの書き換え中であると判断した場合、前記第２マークにより、前記ローダが書き換え中であるか否かを判断し、
前記ローダが書き換え中であると判断した場合、前記不揮発性メモリの他の位置にコピーした前記ローダを、前記揮発性メモリにコピーし、
前記揮発性メモリにコピーした前記ローダを実行し、前記不揮発性メモリに記憶されている前記ファームウェアを書き換えることを特徴とする電子機器。
【請求項２】
前記制御部は、
前記不揮発性メモリに記憶されている前記ローダを前記不揮発性メモリの他の位置にコピーする場合、前記ファームウェア本体が格納されている位置にコピーし、
前記ファームウェア本体よりも先に前記ローダを書き換え、
前記ローダの書き換え後に、前記ファームウェア本体を書き換えることを特徴とする請求項１に記載の電子機器。
【請求項３】
前記制御部は、
前記不揮発性メモリに記憶されている前記ローダを前記揮発性メモリにコピーした後、前記第１マークを消去することを特徴とする請求項１又は２に記載の電子機器。
【請求項４】
前記第１マークは、前記ファームウェア本体のアドレスを示す起動用ベクタの消去に相当し、
前記制御部は、
前記起動用ベクタが消去されていない場合、前記ファームウェアの書き換え中でないと判断し、
前記起動用ベクタが消去されている場合、前記ファームウェアの書き換え中であると判断することを特徴とする請求項１に記載の電子機器。
【請求項５】
前記制御部は、
前記不揮発性メモリに記憶されている前記ローダを前記不揮発性メモリの他の位置にコピーした後、前記第２マークを消去することを特徴とする請求項１〜４のいずれか１項に記載の電子機器。
【請求項６】
前記第２マークは、前記不揮発性メモリに記憶されている前記ローダのアドレスを示すローダベクタの消去に相当し、
前記ローダベクタが消去されていない場合、前記ローダの書き換え中でないと判断し、
前記ローダベクタが消去されている場合、前記ローダの書き換え中であると判断することを特徴とする請求項１〜５のいずれか１項に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアを備える電子機器に関する。
【背景技術】
【０００２】
多くの組み込みシステムのマイクロコンピューターは、内蔵のフラッシュＲＯＭ（フラッシュメモリ）とＲＡＭとを有する。内蔵フラッシュＲＯＭにプログラムは記憶されている。ＣＰＵは、フラッシュＲＯＭから命令コードを読み出して実行する。ＲＡＭの容量は、フラッシュＲＯＭよりも少なく、プログラム全てをＲＡＭ上にコピー（ダウンロード）して実行することはできない。フラッシュＲＯＭ上のプログラムを新しいバージョンのプログラムに書き換える機能を備えさせる場合、書き換え用のプログラムもフラッシュＲＯＭ上に記憶しておく必要がある。フラッシュＲＯＭには、本来の製品としての機能を実現するプログラムと、フラッシュＲＯＭを書き換えるためのプログラム（フラッシュローダ。以下、単に「ローダ」という。）と、をいわゆるファームウェアとして記憶している。
【０００３】
ファームウェアを新しいバージョンにアップデートする際、ファームウェアは、マイクロコンピューター外部からシリアル通信のような方法で取り込まれ、フラッシュＲＯＭに書き込まれる。フラッシュＲＯＭ上に書き込まれたローダで、フラッシュＲＯＭを書き換えることはできないので（実行途中で書き換えられてしまうので）、ファームウェアの中のローダをＲＡＭ上にコピーし、ＲＡＭから命令コードを読み出して実行するのが一般的である（例えば、特許文献１参照。）。上述のように、内蔵のＲＡＭの容量は少ないが、ローダをコピーできるだけの容量は必須である。しかしながら、それ以上の作業用のＲＡＭを確保することは難しい。従って、シリアル通信では、ファームウェアをフラッシュＲＯＭのアドレスの小さい方から順番に入力し、その順番のまま、フラッシュＲＯＭに書き込むことになる。
【０００４】
フラッシュＲＯＭを書き換え中に、電源切断、何らかの異常により、中断されてしまうと、フラッシュＲＯＭには不完全な、すなわち、正常でないプログラムが書かれたままとなり、機器は動作不能になってしまう。これを防ぐために、フラッシュＲＯＭを書き換え中、フラッシュＲＯＭのどこかに書き換え中であるマークをつけておく（又は、一部を故意に消去状態にしておくことでマークとする。）。そして、マイクロコンピューター起動時に、書き換え中を示すマークを確認し、マークがあれば書き換え中に中断されたと判断し、ローダをＲＡＭにコピーして実行し、ファームウェアの書き換えを再び行うことで回復する（リカバリー起動）。
【０００５】
しかしながら、フラッシュＲＯＭのローダを書き換えている際に、電源切断等で中断されると、ローダが壊れた状態であるため、再びファームウェアの書き換えを行って回復することができなくなってしまう。これを防ぐために、フラッシュＲＯＭを２倍の容量とし、ファームウェアを交互に書き換えることで、一方は、常に正常であるようにする方法があるが、フラッシュＲＯＭの容量が２倍必要となる。また、図１４に示すように、ローダが入るだけの小容量のブロックを、他のブロックとハードウェア的に入れ替えられるような機能を持っており、常に新しいローダか古いローダかのどちらかを記憶できるようにしたマイクロコンピューターも存在する。しかしながら、全てのマイクロコンピューターがそのような機能を持っておらず、入れ替えられるブロックも小容量であるため、ローダを格納しきれない場合がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１０３２６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の機器では、ローダの書き換え途中で中断された場合、ファームウェアをリカバリーできない可能性がある。
【０００８】
本発明の目的は、ローダの書き換え途中で中断されても、ファームウェアをリカバリー可能とすることである。
【課題を解決するための手段】
【０００９】
第１の発明の電子機器は、揮発性メモリと、ファームウェアを記憶するための不揮発性メモリと、制御部と、を備え、前記ファームウェアは、ファームウェア本体と、前記不揮発性メモリを書き換えるためのローダと、を含み、前記制御部は、前記ファームウェアを書き換え中であることを示す第１マークを前記不揮発性メモリに設け、前記ローダを書き換え中であることを示す第２マークを前記不揮発性メモリに設け、起動時、前記第１マークにより、前記ファームウェアが書き換え中であるか否かを判断し、前記ファームウェアの書き換え中ではないと判断した場合、前記不揮発性メモリに記憶されている前記ローダを前記揮発性メモリにコピーし、前記不揮発性メモリに記憶されている前記ローダを前記不揮発性メモリの他の位置にコピーし、前記ファームウェアの書き換え中であると判断した場合、前記第２マークにより、前記ローダが書き換え中であるか否かを判断し、前記ローダが書き換え中であると判断した場合、前記不揮発性メモリの他の位置にコピーした前記ローダを、前記揮発性メモリにコピーし、前記揮発性メモリにコピーした前記ローダを実行し、前記不揮発性メモリに記憶されている前記ファームウェアを書き換えることを特徴とする。
【００１０】
本発明では、制御部は、不揮発性メモリに記憶されているローダを、不揮発性メモリの他の位置にコピーする。また、制御部は、ローダが書き換え中である、すなわち、ローダを書き換え中に中断されたと判断した場合、不揮発性メモリの他の位置にコピーしたローダを、揮発性メモリにコピーする。これにより、制御部は、揮発性メモリにコピーしたローダを実行し、不揮発性メモリに記憶されているファームウェアを書き換えることができる。このように、本発明によれば、ローダの書き換え途中で中断されても、ファームウェアをリカバリーすることができる。
【００１１】
第２の発明の電子機器は、第１の発明の電子機器において、前記制御部は、前記不揮発性メモリに記憶されている前記ローダを前記不揮発性メモリの他の位置にコピーする場合、前記ファームウェア本体が格納されている位置にコピーし、前記ファームウェア本体よりも先に前記ローダを書き換え、前記ローダの書き換え後に、前記ファームウェア本体を書き換えることを特徴とする。
【００１２】
本発明では、制御部は、不揮発性メモリに記憶されているローダを不揮発性メモリの他の位置にコピーする場合、ファームウェア本体が格納されている位置にコピーする。このため、ローダのコピーのために、不揮発性メモリを別に用意する必要がない。
【００１３】
第３の発明の電子機器は、第１又は第２の発明の電子機器において、前記制御部は、前記不揮発性メモリに記憶されている前記ローダを前記揮発性メモリにコピーした後、前記第１マークを消去することを特徴とする。
【００１４】
第４の発明の電子機器は、第１〜第３のいずれかの発明の電子機器において、前記第１マークは、前記ファームウェア本体のアドレスを示す起動用ベクタの消去に相当し、前記制御部は、前記起動用ベクタが消去されていない場合、前記ファームウェアの書き換え中でないと判断し、前記起動用ベクタが消去されている場合、前記ファームウェアの書き換え中であると判断することを特徴とする。
【００１５】
第５の発明の電子機器は、第１〜第４のいずれかの発明の電子機器において、前記制御部は、前記不揮発性メモリに記憶されている前記ローダを前記不揮発性メモリの他の位置にコピーした後、前記第２マークを消去することを特徴とする。
【００１６】
第６の発明の電子機器は、第１〜第５のいずれかの発明の電子機器において、前記第２マークは、前記不揮発性メモリに記憶されている前記ローダのアドレスを示すローダベクタの消去に相当し、前記ローダベクタが消去されていない場合、前記ローダの書き換え中でないと判断し、前記ローダベクタが消去されている場合、前記ローダの書き換え中であると判断することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ローダの書き換え途中で中断されても、ファームウェアをリカバリーすることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るスピーカー装置の構成を示すブロック図である。
【図２】通常起動から通常のファームウェアアップデートのシーケンスを示す図である。
【図３】通常起動から通常のファームウェアアップデートのシーケンスを示す図である。
【図４】通常起動から通常のファームウェアアップデートのシーケンスを示す図である。
【図５】通常起動から通常のファームウェアアップデートのシーケンスを示す図である。
【図６】通常起動から通常のファームウェアアップデートのシーケンスを示す図である。
【図７】通常起動から通常のファームウェアアップデートのシーケンスを示す図である。
【図８】リカバリーのファームウェアアップデートのシーケンスを示す図である。
【図９】リカバリーのファームウェアアップデートのシーケンスを示す図である。
【図１０】リカバリーのファームウェアアップデートのシーケンスを示す図である。
【図１１】リカバリーのファームウェアアップデートのシーケンスを示す図である。
【図１２】起動チェックをする場合のスピーカー装置の処理動作を示すフローチャートである。
【図１３】ローダの先頭に配置されるローダ、ベクタを示す図である。
【図１４】ブロックの入れ替えを示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について説明する。図１は、本実施形態に係るスピーカー装置の構成を示すブロック図である。スピーカー装置１（電子機器）は、マイクロコンピューター２と、操作部３と、ＤＳＰ（Digital Signal Processor）４と、Ｄ／Ａコンバーター（以下、「ＤＡＣ」という。）５と、増幅器６と、スピーカー７と、無線モジュール８と、を備える。
【００２０】
マイクロコンピューター２は、ＣＰＵ（制御部）、フラッシュＲＯＭ（不揮発性メモリ）、ＲＡＭ（揮発性メモリ）等を備える。マイクロコンピューター２は、スピーカー装置１を構成する各部を制御する。操作部３は、例えば、ユーザーによるボリューム調整を受け付けるためのボリュームノブを有している。ＤＳＰ４は、デジタル音声信号に信号処理を行う。ＤＡＣ５は、ＤＳＰ４が信号処理を行ったデジタル音声信号を、アナログ音声信号にＤ／Ａ変換する。増幅器６は、ＤＡＣ５がＤ／Ａ変換したアナログ音声信号を増幅する。増幅器６が増幅したアナログ音声信号は、スピーカー７に出力される。スピーカー７は、入力されるアナログ音声信号に基づいて、音声を出力する。無線モジュール８は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格、Ｗｉ−Ｆｉ規格に従った無線通信を行うためのものである。
【００２１】
マイクロコンピューター２は、例えば、無線モジュール８を介して、スマートフォン、デジタルオーディオプレーヤー等から送信されるデジタル音声信号を受信する。そして、マイクロコンピューター２は、受信したデジタル音声信号に、ＤＳＰ４による信号処理、ＤＡＣ５によるＤ／Ａ変換、増幅器６によるアナログ音声信号の増幅を行わせる。
【００２２】
フラッシュＲＯＭには、ファームウェアが記憶されている。ファームウェアは、ファームウェア本体と、フラッシュＲＯＭを書き換えるためのローダと、を含む。以下、ファームウェアがアップデートされる場合の処理について説明する。
【００２３】
（通常起動から通常のファームウェアアップデートのシーケンス（図２〜図７））
（１）マイクロコンピューター２がリセットされると、ＣＰＵは、リセットベクタを読み込み、そのアドレスにジャンプする。ここでは、リセットベクタは、起動チェック処理を差しているので、起動チェック処理へジャンプする。ＣＰＵは、起動チェック処理において、起動用ベクタをチェックする。ＣＰＵは、起動用ベクタが消去されていなければ、起動用ベクタが指し示す通常動作のプログラムのアドレスへジャンプする（通常起動）。フラッシュＲＯＭは、消去されているアドレスのビットが全て１となる。このため、ＣＰＵは、ベクタのビットが全て１か否かで、起動用ベクタが消去されているか否かを判断することができる。
【００２４】
（２）ＣＰＵは、ユーザー操作等でアップデートを指示されると、コピー処理へジャンプする。（３）ＣＰＵは、ローダベクタが消去されていないと判断できれば、ローダベクタとローダとをＲＡＭにコピーする。ローダベクタとローダとは、コピーした先のＲＡＭ上のアドレス配置で実行できるようにコンパイルされている。（４）次に、ＣＰＵは、ローダベクタ（コピー前のフラッシュＲＯＭ上でも、コピー後のＲＡＭ上でも構わない。）の指し示すローダのアドレスへジャンプする（ＲＡＭ上のアドレスを指し示すようにコンパイルされている。）。このとき、ＣＰＵは、パラメータとして、フラグＡ←０、フラグＢ←０を設定しておく。フラグＡ＝０は、起動用ベクタが消去されていないことを示す。フラグＢ＝０は、ローダベクタが消去されていないことを示す。
【００２５】
（５）ＣＰＵは、フラグＡ＝０であれば、起動用ベクタを消去する。起動用ベクタが消去されている間に中断され、再起動した場合は、（１）の判断において、通常起動は行われない。（６）ＣＰＵ２は、フラグＢ＝０であれば、本来のローダ（フラッシュＲＯＭの先頭にある）を固定アドレスへとコピーする。固定アドレスは、本来のローダと重なっていないアドレスであればどこでもよい。また、ファームウェア本体のアドレスと重なっていて、上書きすることになっても構わない。ファームウェア本体に上書きするようにコピーすることで、コピーのためのフラッシュＲＯＭの容量を用意する必要がなくなる。
【００２６】
（７）ＣＰＵは、フラグＢ＝０であれば、フラッシュＲＯＭ上の本来のローダベクタを消去する。ローダベクタが消去されている間に中断され、再起動した場合は、（６）でのローダの固定アドレスへのコピーは、行われない。（８）ＣＰＵは、ファームウェアをシリアル通信等で入手し、書き換える。ファームウェアは、アドレスの小さい方から順番に渡される。ファームウェアの先頭には、ローダが配置されているので、ＣＰＵは、まずローダから書き換える。ただし、ローダベクタの値は、ＲＡＭ上に控えをとっておき、このときは書き換えない（消去されたままとする。）。
【００２７】
（９）ＣＰＵは、新しいローダの書き換えが終わったら、控えておいたローダベクタを書き込む。ローダの書き換えが終わったか否かの判断は、ローダベクタの次のアドレスにローダの最後のアドレス（＝大きさ）を記録しておき、そのアドレスまで書き終わったら、ローダの書き換えが終わったと判断する。（１０）ＣＰＵは、残りのファームウェアの起動用ベクタまでを書き換える。
【００２８】
（１１）ＣＰＵは、新しいファームウェアと、フラッシュＲＯＭ上にある古い起動チェック処理、コピー処理、リセットベクタと、を比較する。これらの処理、ベクタは、小さな簡単なもののため、ほとんどの場合、変更されることがなく、書き換える必要がない。しかし、書き換え中にマイクロコンピューター２がリセットされた場合、起動できなくなる。比較して同じならば書き換えを行わないことにより、起動できなくなるリスクがなくなる。ＣＰＵは、変更されていた場合のみ、書き換える。（１２）ＣＰＵは、マイクロコンピューター２をリセットして再起動し、リセットベクタのアドレスへジャンプする。そして、ＣＰＵは、（１）の処理に戻る。
【００２９】
（リカバリーのファームウェアアップデートのシーケンスａ（図８、図９））
（１−ａ）マイクロコンピューター２がリセットされると、ＣＰＵは、リセットベクタを読み込み、起動チェック処理を差しているので、起動チェック処理へジャンプする。（２−ａ）ＣＰＵは、起動用ベクタをチェックし、起動用ベクタが消去されているため、コピー処理へジャンプする。（３−ａ）ＣＰＵは、ローダベクタが消去されていないかを確認し、ローダベクタが消去されていないので、本来のアドレスにあるローダベクタとローダとをＲＡＭにコピーする。ＣＰＵは、ローダベクタ（コピー前のフラッシュＲＯＭ上でも、コピー後のＲＡＭ上でも構わない。）の指し示すローダのアドレスへジャンプする（ＲＡＭ上のアドレスを指し示すように、コンパイルされている。）。このとき、ＣＰＵは、パラメータとして、フラグＡ←１、フラグＢ←０を設定しておく。フラグＡ＝１は、起動用ベクタが消去されていることを示す。フラグＢ＝０は、ローダベクタが消去されていないことを示す。この後、ＣＰＵは、（６）〜（１２）の処理を行う。
【００３０】
ここで、起動用ベクタの消去は、ファームウェアが書き換え中であることを示すマーク（第１マーク）に相当する。制御部は、起動用ベクタを消去することで、フラッシュＲＯＭに上記マークを設ける。制御部は、起動用ベクタが消去されていなければ、ファームウェアの書き換え中でない、すなわち、ファームウェアの書き換え中に中断されていないと判断する。制御部は、起動用ベクタが消去されていれば、ファームウェアの書き換え中である、すなわち、ファームウェアの書き換え中に中断されたと判断する。
【００３１】
（リカバリーのアップデートのシーケンスｂ（図１０、図１１））
（１−ｂ）マイクロコンピューター２がリセットされると、ＣＰＵは、リセットベクタを読み込み、起動チェック処理を差しているので、起動チェック処理へジャンプする。（２−ｂ）ＣＰＵは、起動用ベクタをチェックし、起動用ベクタが消去されているので、起動チェック処理へジャンプする。（３−ｂ）ＣＰＵは、ローダベクタが消去されていないかを確認し、ローダベクタが消去されているので、固定アドレスにあるローダベクタ（コピー）とローダ（コピー）とをＲＡＭにコピーする。（４−ｂ）ＣＰＵは、ローダベクタ（コピー前のフラッシュＲＯＭ上でも、コピー後のＲＡＭ上でも構わない。）の指し示すローダのアドレスへジャンプする（ＲＡＭ上のアドレスを指し示すようにコンパイルされている。）。このとき、ＣＰＵは、パラメータとして、フラグＡ←１、フラグＢ←１を設定しておく。フラグＡ＝１は、起動用ベクタが消去されていることを示す。フラグＢ＝１は、起動用ベクタが消去されていることを示す。この後、ＣＰＵは、（８）〜（１２）の処理を行う。
【００３２】
ここで、ローダベクタの消去は、ローダを書き換え中であることを示すマーク（第２マーク）に相当する。制御部は、ローダベクタを消去することで、フラッシュＲＯＭに上記マークを設ける。制御部は、ローダベクタが消去されていなければ、ローダの書き換え中でない、すなわち、ローダの書き換え中に中断されていないと判断する。制御部は、ローダベクタが消去されていれば、ローダの書き換え中である、すなわち、ローダの書き換え中に中断されたと判断する。
【００３３】
（起動チェック）
以下、起動チェックをする場合のスピーカー装置の処理動作について、図１２に示すフローチャートに基づいて説明する。ＣＰＵは、まず、起動ベクタが消去されていないか否かを判断する（Ｓ１）。ＣＰＵは、起動用ベクタが消去されていないと判断した場合（Ｓ１：Ｙｅｓ）、起動用ベクタへジャンプする（Ｓ２）。この場合、通常起動が行われる。次に、ＣＰＵは、ファームウェアのアップデートを行うか否かを判断する（Ｓ３）。ＣＰＵは、ファームウェアのアップデートを行わないと判断している間は（Ｓ３：Ｎｏ）、Ｓ３の処理を繰り返し実行する。
【００３４】
ＣＰＵは、ファームウェアのアップデートを行うと判断した場合（Ｓ３：Ｙｅｓ）、本来のローダをＲＡＭにコピーする（Ｓ４）。次に、ＣＰＵは、フラグＡ←０、フラグＢ←０として、ローダベクタのアドレス（ＲＡＭ上）へジャンプする（Ｓ５）。次に、ＣＰＵは、フラグＡ＝０であるか否かを判断する（Ｓ６）。ＣＰＵは、フラグＡ＝０であると判断した場合（Ｓ６：Ｙｅｓ）、起動用ベクタを消去する（Ｓ７）。ＣＰＵは、フラグＡ＝０ではないと判断した場合（Ｓ６：Ｎｏ）、又は、Ｓ７の処理の後、フラグＢ＝０であるか否かを判断する（Ｓ８）。ＣＰＵは、フラグＢ＝０であると判断した場合（Ｓ８：Ｙｅｓ）、ローダをコピーする（Ｓ９）。ＣＰＵは、フラグＢ＝０ではないと判断した場合（Ｓ８：Ｎｏ）、又は、Ｓ１０の処理の後、ローダベクタを消去する（Ｓ１０）。
【００３５】
ＣＰＵは、起動用ベクタが消去されていると判断した場合（Ｓ１：Ｎｏ）、コピー処理へジャンプする（Ｓ１１）。この場合、リカバリー処理が行われる。次に、ＣＰＵは、ローダベクタが消去されていないか否かを判断する（Ｓ１２）。ＣＰＵは、ローダベクタが消去されていないと判断した場合（Ｓ１２：Ｙｅｓ）、本来のローダをＲＡＭにコピーする（Ｓ１３）。次に、ＣＰＵは、フラグＡ←１、フラグＢ←０として、ローダベクタのアドレス（ＲＡＭ上）にジャンプする（Ｓ１４）。次に、ＣＰＵは、Ｓ６の処理を行う。
【００３６】
ＣＰＵは、ローダベクタが消去されていると判断した場合（Ｓ１５：Ｎｏ）、フラグＡ←１、フラグＢ←１として、ローダベクタのアドレス（ＲＡＭ上）にジャンプする（Ｓ１６）。次に、ＣＰＵは、Ｓ６の処理を行う。
【００３７】
ＣＰＵは、ローダの先頭（フラッシュＲＯＭの先頭）に、図１３に示すような、ベクタ、データを置く。
【００３８】
以上説明したように、本実施形態では、ＣＰＵは、フラッシュＲＯＭに記憶されているローダを、フラッシュＲＯＭの他の位置にコピーする。また、ＣＰＵは、ローダが書き換え中である、すなわち、ローダを書き換え中に中断されたと判断した場合、フラッシュＲＯＭの他の位置にコピーしたローダを、ＲＡＭにコピーする。これにより、ＣＰＵは、ＲＡＭにコピーしたローダを実行し、フラッシュＲＯＭに記憶されているファームウェアを書き換えることができる。このように、本実施形態によれば、ローダの書き換え途中で中断されても、ファームウェアをリカバリーすることができる。
【００３９】
また、本実施形態では、ＣＰＵは、フラッシュＲＯＭに記憶されているローダをフラッシュＲＯＭの他の位置にコピーする場合、ファームウェア本体が格納されている位置にコピーする。このため、ローダのコピーのために、フラッシュＲＯＭを別に用意する必要がない。
【００４０】
以上、本発明の実施形態について説明したが、本発明を適用可能な形態は、上述の実施形態には限られるものではなく、以下に例示するように、本発明の趣旨を逸脱しない範囲で適宜変更を加えることが可能である。
【００４１】
上述の実施形態では、ファームウェアを備える電子機器として、スピーカー装置を例示した。これに限らず、ファームウェアを備える電子機器であればよい。
【産業上の利用可能性】
【００４２】
本発明は、ファームウェアを備える電子機器に好適に採用され得る。
【符号の説明】
【００４３】
１  スピーカー（電子機器）
２  マイクロコンピューター
３  操作部
４  ＤＳＰ
５  ＤＡＣ
６  増幅器
７  スピーカー
８  無線モジュール
【図１】
2019040571.tif 000003
【図２】
2019040571.tif 000004
【図３】
2019040571.tif 000005
【図４】
2019040571.tif 000006
【図５】
2019040571.tif 000007
【図６】
2019040571.tif 000008
【図７】
2019040571.tif 000009
【図８】
2019040571.tif 000010
【図９】
2019040571.tif 000011
【図１０】
2019040571.tif 000012
【図１１】
2019040571.tif 000013
【図１２】
2019040571.tif 000014
【図１３】
2019040571.tif 000015
【図１４】
2019040571.tif 000016