JP2017504112A - 更新可能なic無線デバイス - Google Patents

更新可能なic無線デバイス Download PDF

Info

Publication number
JP2017504112A
JP2017504112A JP2016541366A JP2016541366A JP2017504112A JP 2017504112 A JP2017504112 A JP 2017504112A JP 2016541366 A JP2016541366 A JP 2016541366A JP 2016541366 A JP2016541366 A JP 2016541366A JP 2017504112 A JP2017504112 A JP 2017504112A
Authority
JP
Japan
Prior art keywords
software application
firmware module
wireless communication
new
boot loader
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016541366A
Other languages
English (en)
Other versions
JP2017504112A5 (ja
Inventor
ツヴェルダル、マルティン
ダヴィッド スタプレトン、ヨエル
ダヴィッド スタプレトン、ヨエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nordic Semiconductor ASA
Original Assignee
Nordic Semiconductor ASA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nordic Semiconductor ASA filed Critical Nordic Semiconductor ASA
Publication of JP2017504112A publication Critical patent/JP2017504112A/ja
Publication of JP2017504112A5 publication Critical patent/JP2017504112A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephone Function (AREA)

Abstract

IC無線通信デバイスは、プロセシング手段と、メモリと、無線通信回路とを備える。メモリは、(i)ブートローダと、(ii)ファームウェア用メモリ領域にファームウェアモジュール(FW)と、(iii)ソフトウェアアプリケーション用メモリ領域にソフトウェアアプリケーションとを格納する。FWは、所定の無線プロトコルに従って無線通信回路を制御する命令を含み、ソフトウェアアプリケーションは、FWの無線通信機能を呼び出す命令を含む。ブートローダまたはFWは、無線通信回路を用いて新FWを受信する命令を含むとともに、少なくとも一部のソフトウェアアプリケーションが新FWによって上書きされるように、新FWをソフトウェアアプリケーション用メモリ領域に格納する命令を含む。ブートローダは、新FWをソフトウェアアプリケーション用メモリ領域からファームウェア用メモリ領域に移動またはコピーする命令を含む。【選択図】図4

Description

本発明は、IC無線通信デバイスおよびそのデバイスを更新する方法に関する。
IC無線通信デバイスは、通常、プロセッサと、メモリと、無線通信回路とをシリコンチップ上で統合したものである。アンテナは、シリコン上に組まれても、外部接続してもよい。該デバイスは、通常、電源と、クロック源と、センサ、タイマー、デジタルアナログ変換器および出力装置などの外部周辺機器とに接続するためのピンを有している。該プロセッサは、該デバイスが無線メッセージを送信および/または受信するのを管理するために、無線通信回路とインタフェースをとる。
このような無線通信デバイスは、ワイヤレスのマウスとキーボード、ゲーム用コントローラ、自転車の速度計、リモートコントロール機器、ガレージドア開閉器、ワイヤレススピーカのような広範囲の無線製品で使用することができる。
このようなデバイスのプロセッサは、ブルートゥース(登録商標)やジグビーなどの所定の無線プロトコルに従って無線通信回路を制御するために、デバイス上の(EEPROMやフラッシュなどの)不揮発性メモリに格納されたソフトウェアを実行することができる。
そのようなデバイスの一例として、出願人のオンチップ無線nRF51822が挙げられる。nRF51822は、無線トランシーバと、256キロバイトの内蔵フラッシュメモリおよび16キロバイトのRAMを備えた32ビットのARM(登録商標) CORTEX(登録商標)−M0 CPUとを含んでいる。nRF51822は、予めコンパイル・リンクされたバイナリのファームウェアモジュールが既にフラッシュメモリにロードされた状態で顧客に供給されるが、該顧客が該デバイスにロードするためのバイナリイメージとして、ファームウェアモジュールを供給してもよい。該ファームウェアモジュールは、無線機のソフトウェア制御ならびに他の機能を提供することができる。顧客は、その後、IC化された無線デバイスを組み込んだ(無線コンピュータキーボードなどの)最終製品をエンドユーザに出荷する前に、予めリンクされた別のバイナリモジュールとして、独自のソフトウェアアプリケーションを該フラッシュメモリに追加することもできる。
本出願人は、ファームウェアモジュールおよびソフトウェアアプリケーションがデバイスにロードされた後でも、(例えば、新しい機能を追加したり、バグを修正したりするために)該ファームウェアモジュールのコードを変更したり更新したりすることが望ましい場合があることを認識するに至った。いくつかの例では、該デバイスがエンドユーザの所有物となっている段階で、このようなコードを変更することが望ましい場合がある。
本発明は、そのようなコード更新を容易にする効率的な方法を提供することを目的とする。
第一の態様から見ると、本発明は、IC無線通信デバイスを更新する方法を提供するものであって、
前記デバイスは、プロセシング手段と、メモリと、無線通信回路とを備え、
前記メモリは、(i)ブートローダと、(ii)ファームウェア用メモリ領域に、所定の無線プロトコルに従って前記無線通信回路を制御する命令を含むファームウェアモジュールと、(iii)ソフトウェアアプリケーション用メモリ領域に、前記ファームウェアモジュールの無線通信機能を呼び出す命令を含むソフトウェアアプリケーションとを格納し、
前記方法は
前記プロセシング手段が、前記無線通信回路を用いて新ファームウェアモジュールを受信する、前記ブートローダまたは前記ファームウェアモジュールの命令を実行するとともに、少なくとも一部の前記ソフトウェアアプリケーションが前記新ファームウェアモジュールによって上書きされるように、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域に格納する、前記ブートローダまたは前記ファームウェアモジュールの命令を実行することと、
前記プロセシング手段が、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域から前記ファームウェア用メモリ領域に移動またはコピーする前記ブートローダの命令を実行することと、を含む。
第二の側面から見ると、本発明は、
プロセシング手段と、
メモリと、
無線通信回路と、
を備えるIC無線通信デバイスを提供するものであって、
前記メモリは、(i)ブートローダと、(ii)ファームウェア用メモリ領域に、所定の無線プロトコルに従って前記無線通信回路を制御する命令を含むファームウェアモジュールと、(iii)ソフトウェアアプリケーション用メモリ領域に、前記ファームウェアモジュールの無線通信機能を呼び出す命令を含むソフトウェアアプリケーションとを格納し、
前記ブートローダまたは前記ファームウェアモジュールは、前記無線通信回路を用いて新ファームウェアモジュールを受信する命令を含むとともに、少なくとも一部の前記ソフトウェアアプリケーションが前記新ファームウェアモジュールによって上書きされるように、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域に格納する命令を含み、
前記ブートローダは、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域から前記ファームウェア用メモリ領域に移動またはコピーする命令を含む。
上述のように、本発明によれば、IC無線通信デバイスは、既存ファームウェアモジュールを用い無線で新ファームウェアモジュールを受信することができ、前記の旧ファームウェアモジュールを更新するか前記新ファームウェアモジュールと置き替える前に、前記新ファームウェアモジュールの一時的格納場所としてソフトウェアアプリケーション用メモリ領域を使用することができることが、当業者によって理解されるであろう。このようにすれば、前記新ファームウェアモジュールを受信するための専用メモリ領域を確保する必要がない。より大きなメモリが必要になれば、前記デバイスのサイズおよびコストを追加することになるので、これは望ましいことである。前記更新作業は、前記無線デバイスをケーブルでホストコンピューティングデバイスに接続する必要がなく無線で行なうことができるので、エンドユーザが適宜実行することもできる。
一連の好ましい実施形態において、前記ブートローダまたは前記新ファームウェアモジュールは、前記無線通信回路を用いて新ソフトウェアアプリケーションを受信する命令を含むとともに、前記新ソフトウェアアプリケーションを前記ソフトウェアアプリケーション用メモリ領域に格納する命令を含む。前記新ソフトウェアアプリケーションを受信するときに前記旧ファームウェアモジュールのコピーが前記ソフトウェアアプリケーション用メモリ領域に残っている場合、少なくとも一部の前記旧ファームウェアモジュールは、前記新ソフトウェアアプリケーションによって上書きされることが好ましい。この新ソフトウェアアプリケーションは、前記旧ソフトウェアアプリケーションと同一であってもよく、新コードまたは削除されたコードのような、少なくともいくつかの相違点を含んでいてもよい。
この新ファームウェアモジュールは、前記ソフトウェアアプリケーション用メモリ領域に格納されるとき、前記旧ソフトウェアアプリケーションを完全に上書きしてもよい。例えば、前記新ファームウェアモジュールが前記ソフトウェアアプリケーションよりも大きい場合がこのケースに該当する。
前記メモリは、ROM、不揮発性メモリ、および揮発性メモリのうちの任意の一つ以上を含むことができる。いくつかの実施形態では、前記メモリは、EEPROMや(NOR型フラッシュなどの)フラッシュや任意の他の適切な技術のような、不揮発性で読み書き可能なメモリを含むか、またはそれだけで構成されている。前記ファームウェア用メモリ領域および/または前記ソフトウェアアプリケーション用メモリ領域は、それぞれ不揮発性で読み書き可能なメモリを含むか、またはそれだけで構成されていることが好ましい。前記メモリは、(必須ではないが)コードを前記メモリから直接実行することができるように、ランダムアクセスが可能であることが好ましい。前記プロセシング手段は、前記ファームウェアモジュールおよび/または前記ソフトウェアアプリケーションの命令を前記メモリから直接に、おそらくプロセッサキャッシュを経由して、しかし最初に前記ファームウェアモジュールまたは前記ソフトウェアアプリケーションの全体をRAMにコピーすることはしないで実行することが好ましい。前記メモリは、個別に消去可能な複数のページを含んでいることが多い。前記メモリの不揮発性部分は、個々のビットやバイトやワードの単位のような、ページよりも微細なスケールでは消去することができないようなものであることが多い。ここで、消去するということは、前記メモリの内容をデフォルトの状態(通常、すべてバイナリ「1」かすべてバイナリ「0」のいずれか)にリセットすることを意味し、個々のビットやバイトはこの状態から書き込み動作で変更される。
上書きは、前記メモリの種類に応じて、消去動作を行なってから書き込み動作を行なうことを含む場合もあるし、単一動作として行なう場合もある。
前記デバイスは、RAMのような揮発性メモリも含むことが好ましい。しかし、好ましい実施形態においては、RAMの量、または利用可能RAMの量は、前記ソフトウェアアプリケーション用メモリ領域よりも小さい。前記新ファームウェアモジュールは、通常、前記RAMまたは前記利用可能RAMよりも大きいことが多い。前記新ファームウェアモジュールの前記ソフトウェアアプリケーション用メモリ領域への格納は、前記新ファームウェアモジュールの受信と時間的に重なることが好ましい。
前記ファームウェア用メモリ領域は、単一の連続したメモリアドレス範囲を占めていることが好ましい。しかし、これは必須ではなく、前記ファームウェア用メモリ領域は、複数の非連続的なサブ領域を含んでいてもよい。同様に、前記ソフトウェアアプリケーション用メモリ領域は、単一の連続したメモリアドレス範囲を占めていることが好ましい。しかし、これは必須ではなく、前記ソフトウェアアプリケーション用メモリ領域は、複数の非連続的なサブ領域を含んでいてもよい。前記ファームウェア用メモリ領域は、前記ソフトウェアアプリケーション用メモリ領域とは別個のものである(すなわち、重ならない)ことが好ましい。
前記ソフトウェアアプリケーションは、所定のソフトウェアアプリケーション用メモリアドレスに配置される(すなわち、一部または全ての前記ソフトウェアアプリケーションが、前記所定のメモリアドレスから伸びるメモリアドレス範囲を占める)ことが好ましい。この所定のアドレスは、前記ソフトウェアアプリケーションをリンクしたり前記デバイスにロードしたりする際に使用するために、前記ソフトウェアアプリケーションの開発者に提供されることが多い。このアドレスは、前記ソフトウェアアプリケーションに割り込みを転送するなどの目的で、前記ファームウェアモジュールが使用する場合がある。
前記新ファームウェアモジュールは、前記ソフトウェアアプリケーション用メモリ領域に書き込まれるとき、同一のまたはほぼ同一の所定のソフトウェアアプリケーション用メモリアドレスに格納される(すなわち、一部または全ての前記新ファームウェアモジュールが、前記ソフトウェアアプリケーション用メモリアドレスから伸びるメモリアドレス範囲を占める)ことが好ましい。こうすれば、上書きされる前記ソフトウェアアプリケーションと最大限重なることを保証することによって、メモリを非常に効率的に使用することができる。
前記ブートローダまたは前記新ファームウェアモジュールは、新ソフトウェアアプリケーションを前記所定のソフトウェアアプリケーション用メモリアドレスに書き込む命令を含むことが好ましい。
前記(旧)ファームウェアモジュールは、所定のファームウェア用メモリアドレスに配置される(すなわち、一部または全ての前記ファームウェアモジュールが、前記所定のファームウェア用メモリアドレスから伸びるメモリアドレス範囲を占める)ことが好ましい。前記新ファームウェアモジュールは、同じ前記所定のファームウェア用メモリアドレスに配置される(すなわち、一部または全ての前記新ファームウェアモジュールが、前記ファームウェア用メモリアドレスから伸びるメモリアドレス範囲を占める)ように移動またはコピーされることが好ましい。各々の前記ファームウェアモジュールおよび/または前記ソフトウェアアプリケーションは、命令とともにデータを含むこともできるし、割り込みベクタテーブルを含むこともできる。前記新ファームウェアモジュールは、前記旧ファームウェアモジュールより小さくても大きくてもよいし、互いに実質的に同じサイズであってもよい。
いくつかの実施形態では、一部または全ての前記ソフトウェアアプリケーション用メモリ領域は、前記新ファームウェアモジュールが前記ファームウェア用メモリ領域に移動された後に消去される。他の実施形態では、前記新ファームウェアモジュールのコピーは、前記ソフトウェアアプリケーション用メモリ領域に残したままにしておき、後に(デバイスのリセット後、または新ソフトウェアアプリケーションがロードされたときなどに)消去または上書きされる。
前記ブートローダは、ROMまたはフラッシュなどの読み書き可能メモリに格納されることが多い。前記ブートローダは、前記ファームウェアモジュールと比べて比較的小さい(例えば、ほぼ1/10のサイズ以下)ことが好ましい。一連の実施形態では、前記ブートローダはほぼ4キロバイトのサイズである一方、前記ファームウェアモジュールはほぼ80キロバイト以上のサイズである。前記ブートローダは、前記ファームウェア用メモリ領域に、または別個のブートローダ用メモリ領域に配置することができる。前記ブートローダは、前記ファームウェアモジュールを格納するために使用されていない、個別に消去可能な一つ以上のメモリページに格納されることが好ましい。こうすれば、前記ブートローダのコードに影響を与えずに、前記旧ファームウェアモジュールの消去や上書きを非常に効率的に行なうことができる。
前記プロセシング手段は、電源投入後またはリセット後、前記ブートローダの一つ以上の命令を実行するように構成することができる。前記ブートローダは、前記デバイスを更新する以外の機能を有していてもよいが、少なくともいくつかの実施形態では、他の機能を提供しない。いくつかの実施形態では、前記ブートローダは、前記無線通信回路を直接に使用する(すなわち、前記ファームウェアモジュールまたは前記ソフトウェアアプリケーションに実行を渡さずに前記無線通信回路を直接作動させる)命令は何も含んでいない。こうすれば、前記ブートローダは、可能な限りシンプルで小さい状態のまま保たれ、前記ブートローダのコードでバグが発生する可能性を最小限に抑えることができる。その代わりに、前記ブートローダは、無線通信が必要になると前記旧ファームウェアモジュールおよび/または前記新ファームウェアモジュールに実行を転送する場合がある。いくつかの実施形態では、前記ブートローダは、有効なファームウェアモジュールおよびソフトウェアアプリケーションが既に前記デバイスにロードされていれば常に(電源投入後またはリセット後などに)前記ファームウェアモジュールまたは前記ソフトウェアアプリケーションに実行を分岐させる命令を含む。
前記プロセシング手段は、どのように具体化されてもよいが、いくつかの好ましい実施形態では、ARM CORTEX−Mファミリーのプロセッサ(例えば、CORTEX−M0)のようなARM社によって開発されたプロセッサを含むか、またはそれ自体である。前記デバイスは、任意の適切なやり方で命令実行を共有することができる、二つ以上など複数のプロセッサを含む場合がある。いくつかの実施形態では、前記ファームウェアモジュールの命令は第一プロセッサによって実行され、前記ソフトウェアアプリケーションの命令は、前記第一プロセッサとは異なる第二プロセッサによって実行される。前記無線通信回路は、物理的および/または論理的に前記プロセッサとは別個であることが好ましい。前記無線通信回路は、アナログ回路および/またはデジタル回路を備えることができる。前記デバイスは、一体化されたアンテナを備えていてもよいし、外部アンテナ用接続部を備えていてもよい。前記デバイスは、抵抗器、コンデンサ、電源、増幅器、無線アンテナ、水晶発振器、センサ、出力デバイス、などのようなさまざまな外部部品を接続するための複数の接続部を備えていてもよい。
好ましい実施形態において、前記ファームウェアモジュールは、予めリンクされたバイナリイメージである。前記ソフトウェアアプリケーションも、予めリンクされたバイナリイメージであることが好ましい。前記ファームウェアモジュールと前記ソフトウェアアプリケーションとの間ではリンクが行なわれないことが好ましい。いくつかの実施形態では、前記ソフトウェアアプリケーションは、(例えば、無線機能を呼び出すために)前記プロセシング手段にスーパーバイザコール命令を実行させ、該スーパーバイザコール命令が前記ファームウェアモジュールによって処理される割り込みを発生させることによって、前記ファームウェアモジュールに制御権を移転する。
このように前記ファームウェアモジュールと前記ソフトウェアアプリケーションを分離すれば、前記旧ファームウェアモジュールを破損することなく、前記旧ソフトウェアアプリケーションを前記新ファームウェアモジュールで簡単に上書きすることができる。前記ファームウェアモジュールと前記ソフトウェアアプリケーションが単一のバイナリイメージとして一緒にコンパイルおよび/またはリンクされた場合、ソフトウェアアプリケーションのコードだけを含んだ、容易に識別できるメモリ領域が存在する可能性は低いので、これは簡単ではないだろう。だからと言って、不可能であるわけではなく、(例えば、リンカー命令を注意深く使用することによって)前記ファームウェアモジュールが前記ソフトウェアアプリケーションにリンクされて一体化する構成を排除するものではない。
前記デバイスは、前記ソフトウェアアプリケーション用メモリ領域のコードが前記ファームウェア用メモリ領域のアドレスを直接アクセスする(読み出す、および/または、書き込む、および/または、実行する)ことを防止することができるメモリ保護回路を備えていてもよい。
いくつかの実施形態において、前記ソフトウェアアプリケーションは、前記無線通信回路を用いて新ファームウェアモジュールを受信する、前記ファームウェアモジュールの命令を前記プロセッサに実行させる命令を含んでいる。前記ソフトウェアアプリケーションは、前記ファームウェアモジュールに(例えば、システムコールによって)直接に制御権を移転してもよいし、前記ブートローダに制御権を渡し、次に、前記ブートローダが前記ファームウェアモジュールの必要な機能または機能群を呼び出してもよい。こうすれば、前記ソフトウェアアプリケーションは、例えば、人間のユーザからの信号に応答したり、スマートフォンなどのリモートデバイスから無線で受信したメッセージに応答したりして、ファームウェアの更新を開始するかどうかやいつ開始するかを決定することができる。
前記ソフトウェアアプリケーションは、例えば、前記デバイスが前記新ファームウェアモジュールを受信している最中に無線通信の問題が起こった場合、または前記デバイスが予期せず(例えば、停電によって)リセットされた場合、前記デバイスがリモートデバイスとの無線接続を再確立することができる情報を(例えば、一つ以上の機能パラメータとして)前記ブートローダまたは前記ファームウェアモジュールに渡す命令を含むことができる。この情報は、デバイスアドレス、無線チャネル、認証情報、暗号化情報のうち任意の一つまたは複数であるような、結合情報を含んでいてもよい。前記デバイスが前記新ファームウェアモジュールを受信し始めると、前記ソフトウェアアプリケーションの上書きが開始されて(もはや実行可能でなくなって)いるので、これは重要であると言える。前記結合情報は、前記デバイスが前記リモートデバイスから新ソフトウェアアプリケーションを受信するためにも使用してもよい。前記ブートローダが前記結合情報を保存して前記新ソフトウェアアプリケーションを受信するために使用してもよいし、前記旧ファームウェアモジュールが前記結合情報を所定のメモリ位置に格納するなどして前記新ファームウェアモジュールが利用できるようにしてもよい。
前記ブートローダまたは前記ファームウェアモジュールは、前記新ファームウェアモジュールが正しく受信された、および/または、前記ソフトウェアアプリケーション用メモリ領域に正しく格納されたことを確認する命令を含むことが好ましい。前記ブートローダまたは前記ファームウェアモジュールは、前記新ファームウェアモジュールのチェックサムを検証すること、または、暗号署名を検証することを含んでいてもよい。チェックサムやデジタル署名などの前記新ファームウェアモジュール用認証情報は、例えば、前記新ファームウェアモジュールに付随したり前記新ファームウェアモジュールに埋め込まれたりして、前記リモートデバイスから前記デバイスに提供することができる。前記ブートローダまたは前記ファームウェアモジュールは、当該チェックが失敗すると前記無線通信回路を用いてリモートデバイスに通知する命令を含んでいて、前記リモートデバイスに前記新ファームウェアモジュールを再送信することを依頼してもよい。
前記新ファームウェアモジュールが正しく格納されると、前記旧ファームウェアモジュールは、前記ブートローダに戻るか、制御権を移転することができる。これは、直接分岐によって、割り込みを発生させることによって、前記デバイスをリセットさせることによって、または、任意の他の適切なメカニズムによって行なうことができる。
前記ブートローダは、(前記ファームウェア用メモリ領域を全て消去するなどして)前記旧ファームウェアモジュールを消去してから、前記ソフトウェアアプリケーション用メモリ領域から前記新ファームウェアモジュールを読んで、前記ファームウェア用メモリ領域に書き込むことができる。その後、(新ソフトウェアアプリケーションを受信する前か受信した後に)前記新ファームウェアモジュールに制御権を移転することができる。
新ソフトウェアアプリケーションが、前記ブートローダまたは前記新ファームウェアモジュールの命令の下で、続いて受信される場合、それを前記ソフトウェアアプリケーション用メモリ領域に直接書き込むことができる。前記新ソフトウェアアプリケーションの前記ソフトウェアアプリケーション用領域への格納は、前記新ソフトウェアアプリケーションの受信と時間的に重なることが好ましい。前記ブートローダまたは前記新ファームウェアモジュールは、前記新ソフトウェアアプリケーションが正しく受信された、および/または、前記ソフトウェアアプリケーション用メモリ領域に正しく格納されたことを確認する命令を含むことが好ましい。前記ブートローダまたは前記新ファームウェアモジュールは、前記新ソフトウェアアプリケーションのチェックサムまたは暗号署名を検証することを含んでいてもよい。前記ブートローダまたは前記ファームウェアモジュールは、当該チェックが失敗すると前記無線通信回路を用いてリモートデバイスに通知する命令を含んでいてもよい。前記ブートローダまたは前記新ファームウェアモジュールは、前記リモートデバイスに前記新ソフトウェアアプリケーションを再送信することを依頼してもよい。
新ソフトウェアアプリケーションは、前記新ファームウェアモジュールと同一の無線通信セッション中に受信されてもよい。あるいは、新ソフトウェアアプリケーションは、後で発生する無線通信セッションで受信されてもよい。新ソフトウェアアプリケーションは、前記新ファームウェアモジュールとは別のリモートデバイスから受信してもよい。
本明細書に記載した任意の態様または実施形態の特徴は、適切であればどんな場合でも、本明細書に記載した任意の他の態様または実施形態にも適用することができる。異なる実施形態または一連の実施形態に言及する場合、これらは必ずしも別個のものではなく重複してもよいことが理解されるべきである。
ほんの一例として、添付図面を参照しながら、本発明の特定の好ましい実施形態を説明することにする。
本発明を具現化するマイクロコントローラの概略図である。 マイクロコントローラアーキテクチャ内の主要なソフトウェア構成要素を示す概略図である。 マイクロコントローラの模式的なメモリマップである。 マイクロコントローラを更新する第一段階を示した、不揮発性メモリの概略図である。 マイクロコントローラを更新する第二段階を示した、不揮発性メモリの概略図である。 マイクロコントローラを更新する第三段階を示した、不揮発性メモリの概略図である。
図1は、オンチップ無線として知られることもあるICマイクロコントローラ1を示している。これは、無線心拍数モニタなどの製品に組み込まれることも多い。マイクロコントローラ1は、抵抗・コンデンサ発振器を備えるか外部水晶発振器(図示せず)からの入力を受信するクロック回路3と、電力管理回路5と、(ARM CORTEX−M0などの)プロセッサ7と、メモリ保護回路9と、RAM11と、不揮発性フラッシュメモリ13と、一つ以上の周辺機器15と、無線通信回路17と、入出力回路19とを備える。
プロセッサ7とRAM11とフラッシュメモリ13とは、回線およびバス(図示せず)を使用するなど従来のやり方で相互接続されている。メモリ保護回路9は、プロセッサ7からRAM11およびフラッシュメモリ13への命令をインターセプトするように位置している。マイクロコントローラ1は、製品に導入されると、電源、無線アンテナ、水晶発振器、コンデンサ、センサ、音声/映像出力デバイス等(図示せず)のような多くの外部構成要素に接続され得る。
図2は、ソフトウェアアーキテクチャの主要構成要素を示している。これらには、ARM CORTEXマイクロコントローラのソフトウェアインターフェイス規格のような任意選択のハードウェア抽象化層21と、ブートローダ22と、ファームウェアモジュール23と、ドライバ25と、ソフトウェアアプリケーション27とが含まれる。ドライバ25は、ソフトウェアアプリケーション27に専用であってもよい。
ブートローダ22は、フラッシュメモリ13にある小さなバイナリアプリケーションであり、無線によるソフトウェア更新を管理する命令を含んでいる。ブートローダ22は、リセット後に必ず入る入り口点である。通常は、更新が進行中でない限り、ファームウェアモジュール23にすぐに制御を渡す。
ファームウェアモジュール23は、多くの組込みソフトウェア群を含む、リンク済みバイナリアプリケーションである。無線プロトコル31は、ブルートゥース低エネルギーのような一つ以上の無線プロトコルスタックを実装している。ライブラリ35は、共有ハードウェアリソース管理および、乱数生成、割り込みや優先順位の構成、(周辺機器を有効にしたり無効にしたりするなどの)電力管理、暗号化機能などのような機能を提供する。ファームウェアマネージャ37は、ファームウェアモジュールを有効にしたり無効にしたり、無線プロトコルスタックを有効にしたり無効にしたりすることをサポートする。ファームウェアモジュール23は、システムベクタテーブルを所有している。
ファームウェアモジュール23用のアプリケーションプログラミングインタフェース(API)29は、ソフトウェアアプリケーション27がファームウェアモジュール23の機能を呼び出せるようにする。API29は、スーパーバイザコール命令という信号を使用して実行され、ソフトウェアアプリケーション27からファームウェアモジュール23に制御権を渡す。スーパーバイザコール命令は、ファームウェアモジュール23内で処理されるプロセス割り込みを発生させる。ファームウェアモジュール23は、ソフトウェア割り込みを使用して、ソフトウェアアプリケーション27に事象を知らせることができる。
ソフトウェアアプリケーション27は、ファームウェアモジュール23を使用してマイクロコントローラ1のハードウェアを間接的に使用することができることに加えて、該ハードウェアを直接に、または、アプリケーション専用のドライバ25を用いるなどによりハードウェア抽象化層21を介して、アクセスすることができる。
図3は、RAM11とフラッシュ13が、ファームウェアモジュール23と(任意のアプリケーション固有のドライバ25を含む)ソフトウェアアプリケーション27との間でどのように共有されるのかを示している。 ARM CORTEX−M0のプロセッサ7を使用すると、フラッシュ13は0(0x0000 0000)から上方にその容量であるSizeOfProgMemまでアドレスを割り当てられるとともに、RAM11は0x2000 0000から上方に「0x2000 0000 + RAMサイズ」までアドレスが割り当てられる。他の実施形態では、もちろん、異なるアドレス値を使用することができる。
フラッシュ13は、アドレスCLENR0(符号長領域0)の両側にニつの異なる領域を備えている。ゼロとCLENR0の間にある領域0は、ブートローダ22とファームウェアモジュール23が配置されているところである。ファームウェアモジュールの割り込みベクタテーブルは、アドレスのゼロに格納される。CLENR0から上方に延設される領域1は、ソフトウェアアプリケーション27および任意のアプリケーション用データがあるところである。この領域もまた、ファームウェアモジュール23から(そしておそらくブートローダ22から)の転送割り込みを受け取る割り込みベクタテーブルがアドレスCLENR0にある。デバイス1は、構成情報やフラグを格納するなど他の目的に使用することができる別の不揮発性メモリ(図示せず)を有してもよいことが理解されるであろう。
RAM11も同様に、基底アドレス0x2000 0000からRLENR0までの領域0、および、RLENR0から上方に伸びる領域1を有している。RAM領域0はブートローダ22とファームウェアモジュール23用のデータストレージを提供し、一方、RAM領域1はソフトウェアアプリケーション27用のデータストレージを提供する。コールスタックは、ファームウェアモジュール23とソフトウェアアプリケーション27との間で共有され、例えば、「0x2000 0000 +RAMサイズ」から下方に拡がる。コールスタックに割り当てられたメモリは、ソフトウェアアプリケーション27とファームウェアモジュール23の両方の必要性を考慮に入れて十分大きくなければいけない。所定の共有メモリアドレスは、RAM11の領域1にあってもよく、RAM11内で領域0および領域1以外の別の場所にあってもよい。
メモリ保護回路9は、プロセッサ7からフラッシュ13およびRAM11への(読み取り要求など)すべてのメモリアクセス要求をインターセプトするように構成されている。メモリ保護回路9は、アクセス要求命令の発行元を決定する(例えば、該要求は、ファームウェアモジュール23からのものかどうか、または、ソフトウェアアプリケーション27からのものかどうか)。メモリ保護回路9は、また、さまざまな発行元に対してアクセス権限をそれぞれ指定し、それに応じてアクセス要求を許可するか拒否する(例えば、一つ以上の専用レジスタに格納されている)メモリ保護構成データにアクセスする。
本発明のいくつかの好ましい実施形態において、ソフトウェアアプリケーション27は、フラッシュ領域0およびRAM領域0への読み取りおよび/または書き込みのアクセスを拒否される。こうすれば、ファームウェアモジュール23に対する機密性を保護し、ファームウェアモジュール23に割り当てられたメモリ位置にソフトウェアアプリケーション27が不注意に、または、悪意を持って書き込むのを防止することができ、堅牢性とセキュリティを向上することができる。ソフトウェアアプリケーションのフラッシュ領域1もまた、外部デバッグインタフェースを経由したリードバックに対して保護するなど、読み取りアクセスから保護することができる。
図4〜図6は、デバイス1のファームウェアモジュールおよびソフトウェアアプリケーションの更新を示している。南京錠シンボルは、メモリ保護回路9によってなんらかのアクセス保護が実施されているメモリ領域を示している。
ソフトウェアアプリケーション27は、ブートローダ22の更新機能を呼び出すことによって更新プロセスを開始する。ソフトウェアアプリケーション27は、リモートの相手方デバイスと接続するための無線プロトコル結合情報をブートローダ22に渡す。相手方デバイスは、例えば、スマートフォンでもラップトップコンピュータでもよい。結合情報は、接続が切れた場合に、マイクロコントローラ1が相手方デバイスに再接続するために使用することができる。ブートローダ22またはソフトウェアアプリケーション27は、その後、(例えば、ファームウェアモジュール23の更新動作を呼び出すためにシステムコールを使用して)ファームウェアモジュール23に制御権を渡す。ファームウェアモジュール23は、制御権を持つと、無線通信回路17を用いて、相手方デバイスに新ファームウェアモジュール40を要求する。
図4に示すように、ファームウェアモジュール23は、新ファームウェアモジュール40を受信し始める。ファームウェアモジュール23は、一部の受信データを一時的にRAMにバッファリングしてもよいが、新ファームウェアモジュール40を受信するとすぐに、それまでソフトウェアアプリケーション27を保持していた、フラッシュメモリ13の領域1へ書き込みを開始する。(アプリケーションベクタテーブルを含む)ソフトウェアアプリケーション27は、書き込みが開始される前に完全に消去されるか、または、必要に応じて一度に一ページずつ消去されてもよい。
新ファームウェアモジュール40全体が受信されてフラッシュメモリ13に書き込まれると、旧ファームウェアモジュール23は、相手方デバイスから受信した、新ファームウェアモジュール40のチェックサムを検証する。チェックサムが正しくない場合、旧ファームウェアモジュール23は、相手方デバイスによる新ファームウェアモジュール40の再送信を要求する。
マイクロコントローラ1が新ファームウェアモジュール40を受信している最中に(停電などで)予期せずリセットされた場合、ブートローダ22で実行が再開されて、相手方デバイスに再び新ファームウェアモジュール23を要求するようファームウェアモジュール23に命令する。
新ファームウェアモジュール40のチェックサムが正しいと、ファームウェアモジュール23は、ブートローダ22に制御権を渡す。ブートローダ22は、リモートの相手方デバイスとの接続を切り、フラッシュメモリ13の領域0から旧ファームウェアモジュール23(およびそのベクタテーブル)を消去する。ブートローダ22は、もちろん、領域0のブートローダ22のコードを消去することはない。これを容易にするために、ブートローダ22は、領域0の他の部分とは別の専用フラッシュページに格納されていて、ブートローダ22を含むページ以外の領域0をすべて消去するのが簡単にできることが好ましい。
図5に示すように、ブートローダ22は、次に、新ファームウェアモジュール40を領域1から領域0の該当アドレスにコピーする。
ブートローダ22は、次に、(例えば、システムコールを介して)新ファームウェアモジュール40の機能を呼び出して、無線でリモートの相手方デバイスに再接続するとともに新ソフトウェアアプリケーション42の送信を要求するよう命令する。ブートローダ22は、無線結合情報を新ファームウェアモジュール40に渡してこれを実行することができるようにする。
図6に示すように、新ファームウェアモジュール40は、新ソフトウェアアプリケーション42を受信し始める。新ファームウェアモジュール40は、一部の受信データを一時的にRAMにバッファリングしてもよいが、(アプリケーションベクタテーブルを含む)新ソフトウェアアプリケーション42を受信するとすぐに、フラッシュメモリ13の領域1へ書き込みを開始する。領域1は、書き込みが開始される前に完全に消去されるか、または、必要に応じて、一度に一ページずつ消去されてもよい。完了すると、ブートローダ22は、相手方デバイスから受信した、新ソフトウェアアプリケーション42のチェックサムを検証する。チェックサムが正しくない場合、ブートローダ22は、相手方デバイスによる新ソフトウェアアプリケーション42の再送信を要求する。
マイクロコントローラ1が新ソフトウェアアプリケーション42を受信している最中に(停電などで)予期せずリセットされた場合、ブートローダ22で実行が再開されて、相手方デバイスに再び新ソフトウェアアプリケーション42を要求するよう新ファームウェアモジュール40に命令する。
新ソフトウェアアプリケーション42のチェックサムが正しいと、ブートローダ22は、マイクロコントローラ1が新ソフトウェアアプリケーション42および新ファームウェアモジュール40を通常のやり方で使用し始めることができるように、新ソフトウェアアプリケーション42に制御権を渡す。
この構成では、ブートローダ22は、必要に応じて結合情報を渡すことを含めて、更新を実行するために旧ファームウェアモジュールと新ファームウェアモジュールの適切な機能を呼び出すことと、予期しないリセットから回復することを担う。
別の一連の実施形態において、旧ファームウェアモジュール23は、結合情報を保存することと、更新プロセスの状態を記憶することを担う。旧ファームウェアモジュール23は、新ファームウェアモジュール40を領域1に書き込み、それが正しく受信されたことを確認する。更新処理におけるブートローダ22の主なまたは唯一のタスクは、新ファームウェアモジュール40を領域1から領域0にコピーすることだけであってもよい。旧ソフトウェアアプリケーション27が新ファームウェアモジュール40によって完全に上書きされる前にマイクロコントローラ1が(停電などで)予期せずリセットされた場合、ブートローダ22で実行が再開されても、旧ファームウェアモジュール23に制御権を渡すだけである。旧ファームウェアモジュール23は、新ファームウェアモジュール40を最初から受信をやり直す必要があることを知ることができるように状態を維持し、メモリに格納された結合情報を用いて再び新ファームウェアモジュール23を要求する。旧ファームウェアモジュール23は、新ファームウェアモジュール40がアクセスできるように、結合情報を適切なメモリ領域へ(例えば、RAMに、または、好ましくはフラッシュ内の永続性のあるデータ記憶域に)書き込む。
新ファームウェアモジュール40が正しく受信されブートローダ22によって領域0にコピーされると、ブートローダ22は、新ファームウェアモジュール40に制御権を渡す。新ファームウェアモジュール40は、いつの時点で初めて処理を開始するのかが分かるように設定され、相手方デバイスに接続して新ソフトウェアアプリケーション42を受信することによって対応する。旧ファームウェアモジュール23は、それ以前に結合情報を適切なメモリ領域へ(例えば、RAMに、または、好ましくはフラッシュ内の永続性のあるデータ記憶域に)書き込み、新ファームウェアモジュール40が相手方デバイスに再接続するためにそれにアクセスできるようにしておく必要がある。
あるいは、新ファームウェアモジュール40は、新ソフトウェアアプリケーション42を受信するために、同一のリモートデバイスまたは別のリモートデバイスと新たな結合情報を設定することができる。これは、新ファームウェアモジュール40を受信した直後に行なわれてもよいし、時間的に遅れてもよい。

Claims (24)

  1. IC無線通信デバイスを更新する方法であって、
    前記デバイスは、プロセシング手段と、メモリと、無線通信回路とを備え、
    前記メモリは、(i)ブートローダと、(ii)ファームウェア用メモリ領域に、所定の無線プロトコルに従って前記無線通信回路を制御する命令を含むファームウェアモジュールと、(iii)ソフトウェアアプリケーション用メモリ領域に、前記ファームウェアモジュールの無線通信機能を呼び出す命令を含むソフトウェアアプリケーションとを格納し、
    前記方法は
    前記プロセシング手段が、前記無線通信回路を用いて新ファームウェアモジュールを受信する、前記ブートローダまたは前記ファームウェアモジュールの命令を実行するとともに、少なくとも一部の前記ソフトウェアアプリケーションが前記新ファームウェアモジュールによって上書きされるように、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域に格納する、前記ブートローダまたは前記ファームウェアモジュールの命令を実行することと、
    前記プロセシング手段が、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域から前記ファームウェア用メモリ領域に移動またはコピーする前記ブートローダの命令を実行することと、を含む
    ことを特徴とする、IC無線通信デバイスを更新する方法。
  2. 前記ソフトウェアアプリケーションは前記新ファームウェアモジュールによって完全に上書きされる
    ことを特徴とする、請求項1に記載の方法。
  3. 前記ブートローダまたは前記新ファームウェアモジュールは、前記無線通信回路を用いて新ソフトウェアアプリケーションを受信する命令を含むとともに、前記新ソフトウェアアプリケーションを前記ソフトウェアアプリケーション用メモリ領域に格納する命令を含む
    ことを特徴とする、請求項1または請求項2に記載の方法。
  4. 前記ファームウェア用メモリ領域および前記ソフトウェアアプリケーション用メモリ領域は、不揮発性で読み書き可能なメモリを各々含む
    ことを特徴とする、請求項1乃至請求項3のいずれかに記載の方法。
  5. 前記新ファームウェアモジュールの前記ソフトウェアアプリケーション用メモリ領域への格納は、前記新ファームウェアモジュールの受信と時間的に重なる
    ことを特徴とする、請求項1乃至請求項4のいずれかに記載の方法。
  6. 前記ソフトウェアアプリケーションは、所定のソフトウェアアプリケーション用メモリアドレスに配置され、前記方法は、前記新ファームウェアモジュールを前記所定のソフトウェアアプリケーション用メモリアドレスに格納することを含む
    ことを特徴とする、請求項1乃至請求項5のいずれかに記載の方法。
  7. 前記ブートローダは、個別に消去可能な一つ以上のメモリページに格納される
    ことを特徴とする、請求項1乃至請求項6のいずれかに記載の方法。
  8. 前記ブートローダは、前記無線通信回路を直接に使用する命令は何も含んでいない
    ことを特徴とする、請求項1乃至請求項7のいずれかに記載の方法。
  9. 前記ファームウェアモジュールは予めリンクされたバイナリイメージであり、前記ソフトウェアアプリケーションも予めリンクされたバイナリイメージである
    ことを特徴とする、請求項1乃至請求項8のいずれかに記載の方法。
  10. 前記ソフトウェアアプリケーションは、前記無線通信回路を用いて前記新ファームウェアモジュールを受信する、前記ファームウェアモジュールの命令を前記プロセッサに実行させる命令を含む
    ことを特徴とする、請求項1乃至請求項9のいずれかに記載の方法。
  11. 前記新ファームウェアモジュールはリモートデバイスから受信され、前記方法は、接続が失われた場合、前記ソフトウェアアプリケーションが前記リモートデバイスとの無線接続を再確立する情報を前記ブートローダまたは前記ファームウェアモジュールに渡すことを含む
    ことを特徴とする、請求項1乃至請求項10のいずれかに記載の方法。
  12. 前記プロセシング手段が、前記新ファームウェアモジュールが正しく受信されたことを確認する命令を実行することを含む
    ことを特徴とする、請求項1乃至請求項11のいずれかに記載の方法。
  13. プロセシング手段と、
    メモリと、
    無線通信回路と、
    を備えるIC無線通信デバイスであって、
    前記メモリは、(i)ブートローダと、(ii)ファームウェア用メモリ領域に、所定の無線プロトコルに従って前記無線通信回路を制御する命令を含むファームウェアモジュールと、(iii)ソフトウェアアプリケーション用メモリ領域に、前記ファームウェアモジュールの無線通信機能を呼び出す命令を含むソフトウェアアプリケーションとを格納し、
    前記ブートローダまたは前記ファームウェアモジュールは、前記無線通信回路を用いて新ファームウェアモジュールを受信する命令を含むとともに、少なくとも一部の前記ソフトウェアアプリケーションが前記新ファームウェアモジュールによって上書きされるように、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域に格納する命令を含み、
    前記ブートローダは、前記新ファームウェアモジュールを前記ソフトウェアアプリケーション用メモリ領域から前記ファームウェア用メモリ領域に移動またはコピーする命令を含む
    ことを特徴とするIC無線通信デバイス。
  14. 前記ブートローダまたは前記ファームウェアモジュールは、前記ソフトウェアアプリケーションを前記新ファームウェアモジュールで完全に上書きする命令を含む
    ことを特徴とする、請求項13に記載のIC無線通信デバイス。
  15. 前記ブートローダまたは前記新ファームウェアモジュールは、前記無線通信回路を用いて新ソフトウェアアプリケーションを受信する命令を含むとともに、前記新ソフトウェアアプリケーションを前記ソフトウェアアプリケーション用メモリ領域に格納する命令を含む
    ことを特徴とする、請求項13または請求項14に記載のIC無線通信デバイス。
  16. 前記ファームウェア用メモリ領域および前記ソフトウェアアプリケーション用メモリ領域は、不揮発性で読み書き可能なメモリを各々含む
    ことを特徴とする、請求項13乃至請求項15のいずれかに記載のIC無線通信デバイス。
  17. 前記ブートローダおよび/または前記ファームウェアモジュールの前記命令は、前記新ファームウェアモジュールの前記ソフトウェアアプリケーション用メモリ領域への格納が、前記新ファームウェアモジュールの受信と時間的に重なるように実行される
    ことを特徴とする、請求項13乃至請求項16のいずれかに記載のIC無線通信デバイス。
  18. 前記ソフトウェアアプリケーションは、所定のソフトウェアアプリケーション用メモリアドレスに配置され、前記ブートローダまたは前記ファームウェアモジュールは、前記新ファームウェアモジュールを前記所定のソフトウェアアプリケーション用メモリアドレスに格納する命令を含む
    ことを特徴とする、請求項13乃至請求項17のいずれかに記載のIC無線通信デバイス。
  19. 前記ブートローダは、個別に消去可能な一つ以上のメモリページに格納される
    ことを特徴とする、請求項13乃至請求項18のいずれかに記載のIC無線通信デバイス。
  20. 前記ブートローダは、前記無線通信回路を直接に使用する命令は何も含んでいない
    ことを特徴とする、請求項13乃至請求項19のいずれかに記載のIC無線通信デバイス。
  21. 前記ファームウェアモジュールは予めリンクされたバイナリイメージであり、前記ソフトウェアアプリケーションも予めリンクされたバイナリイメージである
    ことを特徴とする、請求項13乃至請求項20のいずれかに記載のIC無線通信デバイス。
  22. 前記ソフトウェアアプリケーションは、前記無線通信回路を用いて新ファームウェアモジュールを受信する、前記ファームウェアモジュールの命令を前記プロセッサに実行させる命令を含む
    ことを特徴とする、請求項13乃至請求項21のいずれかに記載のIC無線通信デバイス。
  23. 前記ブートローダまたは前記ファームウェアモジュールは、前記新ファームウェアモジュールをリモートデバイスから受信する命令を含み、前記ソフトウェアアプリケーションは、接続が失われた場合、前記リモートデバイスとの無線接続を再確立する情報を前記ブートローダまたは前記ファームウェアモジュールに渡す命令を含む
    ことを特徴とする、請求項13乃至請求項22のいずれかに記載のIC無線通信デバイス。
  24. 前記ブートローダまたは前記ファームウェアモジュールは、前記新ファームウェアモジュールが正しく受信されたことを確認する命令を含む
    ことを特徴とする、請求項13乃至請求項23のいずれかに記載のIC無線通信デバイス。
JP2016541366A 2013-12-20 2014-11-26 更新可能なic無線デバイス Pending JP2017504112A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1322797.0 2013-12-20
GB1322797.0A GB2515364B (en) 2013-12-20 2013-12-20 Updatable integrated-circuit radio
PCT/GB2014/053500 WO2015092355A1 (en) 2013-12-20 2014-11-26 Updatable integrated-circuit radio

Publications (2)

Publication Number Publication Date
JP2017504112A true JP2017504112A (ja) 2017-02-02
JP2017504112A5 JP2017504112A5 (ja) 2018-01-11

Family

ID=50071321

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016541366A Pending JP2017504112A (ja) 2013-12-20 2014-11-26 更新可能なic無線デバイス

Country Status (8)

Country Link
US (1) US9891908B2 (ja)
EP (1) EP3084593B1 (ja)
JP (1) JP2017504112A (ja)
KR (1) KR102277238B1 (ja)
CN (1) CN105830021B (ja)
GB (1) GB2515364B (ja)
TW (1) TWI625672B (ja)
WO (1) WO2015092355A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2521607B (en) * 2013-12-23 2016-03-23 Nordic Semiconductor Asa Integrated-Circuit Radio
EP3803573A1 (en) 2018-05-29 2021-04-14 Nordic Semiconductor ASA Delta file with reversing data
JP2020149236A (ja) * 2019-03-12 2020-09-17 キオクシア株式会社 電子機器及び電子機器の制御方法
JP7219813B2 (ja) * 2019-05-28 2023-02-08 日立Astemo株式会社 演算処理装置、車両制御装置及び更新方法
KR20210023184A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 런타임 오버레이를 통해 펌웨어를 관리하는 장치 및 방법
GB201914047D0 (en) * 2019-09-30 2019-11-13 Nordic Semiconductor Asa Bootloader updating
CN111459572B (zh) * 2020-03-31 2023-01-31 深圳市汇顶科技股份有限公司 程序加载方法、控制器、芯片以及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000183997A (ja) * 1998-12-16 2000-06-30 Nec Information Service Ltd データ送受信方式、データ送受信方法、および記録媒体
JP2002532802A (ja) * 1998-12-15 2002-10-02 インフィネオン テクノロジース アクチエンゲゼルシャフト 読み出し専用メモリに格納されたプログラムのシーケンスを変更する方法
JP2003152629A (ja) * 2001-11-15 2003-05-23 Nec Saitama Ltd 携帯型無線通信装置及び組み込み式ソフトウェアのダウンロード方法
JP2005502971A (ja) * 2001-09-17 2005-01-27 ソマ ネットワークス インコーポレイテッド ソフトウェアをアップデートする方法、装置、および、システム
JP2007148695A (ja) * 2005-11-25 2007-06-14 Konica Minolta Business Technologies Inc 情報処理装置およびブートプログラムの書き換え方法
JP2008027269A (ja) * 2006-07-24 2008-02-07 Matsushita Electric Ind Co Ltd 通信機器およびプログラム更新方法
JP2011055028A (ja) * 2009-08-31 2011-03-17 Sony Computer Entertainment Inc 無線通信端末、その制御方法、プログラム、及び情報記憶媒体

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023620A (en) * 1997-02-26 2000-02-08 Telefonaktiebolaget Lm Ecrisson Method for downloading control software to a cellular telephone
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US7188237B2 (en) * 2002-10-29 2007-03-06 Brocade Communication Systems, Inc. Reboot manager usable to change firmware in a high availability single processor system
EP1660996A2 (en) * 2003-09-03 2006-05-31 Bitfone Corporation Tri-phase boot process in electronic devices
US7185191B2 (en) * 2004-05-05 2007-02-27 International Business Machines Corporation Updatable firmware having boot and/or communication redundancy
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
US20090013317A1 (en) * 2007-02-08 2009-01-08 Airnet Communications Corporation Software Management for Software Defined Radio in a Distributed Network
US8539471B2 (en) 2007-12-13 2013-09-17 Telefonaktiebolaget L M Ericsson (Publ) Updating firmware of an electronic device
TW200943794A (en) * 2008-04-04 2009-10-16 Nxp Bv Method for efficient packet framing in a communication network
US20090274099A1 (en) * 2008-05-02 2009-11-05 Qualcomm Incorporated Methods and apparatus for communicating transmitter information in a communication network
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
EP2453352A1 (en) * 2010-11-08 2012-05-16 Gemalto SA Software updating process for an embedded device
GB2499003B (en) * 2012-02-02 2014-01-01 Renesas Mobile Corp Updating modem baseband firmware
KR20130101630A (ko) * 2012-02-16 2013-09-16 삼성전자주식회사 전자장치에서 펌웨어 업데이트를 위한 방법 및 장치
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
US9471300B2 (en) * 2012-07-26 2016-10-18 Utc Fire And Security America Corporation, Inc. Wireless firmware upgrades to an alarm security panel
CN103246536B (zh) * 2013-04-28 2016-01-06 常州南京大学高新技术研究院 物联定位系统的固件无线升级方法
US9667074B2 (en) * 2014-03-28 2017-05-30 Symbol Technologies, Llc Apparatus and method for updating remote standalone firmware

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002532802A (ja) * 1998-12-15 2002-10-02 インフィネオン テクノロジース アクチエンゲゼルシャフト 読み出し専用メモリに格納されたプログラムのシーケンスを変更する方法
JP2000183997A (ja) * 1998-12-16 2000-06-30 Nec Information Service Ltd データ送受信方式、データ送受信方法、および記録媒体
JP2005502971A (ja) * 2001-09-17 2005-01-27 ソマ ネットワークス インコーポレイテッド ソフトウェアをアップデートする方法、装置、および、システム
JP2003152629A (ja) * 2001-11-15 2003-05-23 Nec Saitama Ltd 携帯型無線通信装置及び組み込み式ソフトウェアのダウンロード方法
JP2007148695A (ja) * 2005-11-25 2007-06-14 Konica Minolta Business Technologies Inc 情報処理装置およびブートプログラムの書き換え方法
JP2008027269A (ja) * 2006-07-24 2008-02-07 Matsushita Electric Ind Co Ltd 通信機器およびプログラム更新方法
JP2011055028A (ja) * 2009-08-31 2011-03-17 Sony Computer Entertainment Inc 無線通信端末、その制御方法、プログラム、及び情報記憶媒体

Also Published As

Publication number Publication date
EP3084593A1 (en) 2016-10-26
KR20160100391A (ko) 2016-08-23
GB2515364B (en) 2015-06-17
GB201322797D0 (en) 2014-02-05
TW201525870A (zh) 2015-07-01
CN105830021A (zh) 2016-08-03
EP3084593B1 (en) 2020-05-06
CN105830021B (zh) 2020-04-03
KR102277238B1 (ko) 2021-07-14
TWI625672B (zh) 2018-06-01
US20160283220A1 (en) 2016-09-29
GB2515364A (en) 2014-12-24
WO2015092355A1 (en) 2015-06-25
US9891908B2 (en) 2018-02-13

Similar Documents

Publication Publication Date Title
EP3084593B1 (en) Updatable integrated-circuit radio
KR102095614B1 (ko) 메모리 보호
JP5514189B2 (ja) 周辺装置ロッキングメカニズム
US11847225B2 (en) Blocking access to firmware by units of system on chip
CN107567629B (zh) 在可信执行环境容器中的动态固件模块加载器
US20120005676A1 (en) Computing Machine and Method of Updating Virtual Machine
JP6326047B2 (ja) 集積回路型無線
US10055367B2 (en) Integrated-circuit radio
US20220004509A1 (en) Embedded secure element
JP2010225182A (ja) 半導体装置
CN107533515A (zh) 阻止存储器溢出攻击的精细粒度存储器保护
CN116235147A (zh) 嵌入式安全元件中频繁使用的应用程序的存储器管理

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190308

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191218

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20191218

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20191226

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20200107

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20200221

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20200303

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20200714

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20201013

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20201117

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20201117