JP6326047B2 - 集積回路型無線 - Google Patents

集積回路型無線 Download PDF

Info

Publication number
JP6326047B2
JP6326047B2 JP2015519340A JP2015519340A JP6326047B2 JP 6326047 B2 JP6326047 B2 JP 6326047B2 JP 2015519340 A JP2015519340 A JP 2015519340A JP 2015519340 A JP2015519340 A JP 2015519340A JP 6326047 B2 JP6326047 B2 JP 6326047B2
Authority
JP
Japan
Prior art keywords
software
firmware module
software application
wireless communication
memory
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.)
Active
Application number
JP2015519340A
Other languages
English (en)
Other versions
JP2015524964A (ja
JP2015524964A5 (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 JP2015524964A publication Critical patent/JP2015524964A/ja
Publication of JP2015524964A5 publication Critical patent/JP2015524964A5/ja
Application granted granted Critical
Publication of JP6326047B2 publication Critical patent/JP6326047B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/0003Software-defined radio [SDR] systems, i.e. systems wherein components typically implemented in hardware, e.g. filters or modulators/demodulators, are implented using software, e.g. by involving an AD or DA conversion stage such that at least part of the signal processing is performed in the digital domain

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Transceivers (AREA)

Description

本発明は、集積回路型無線通信デバイスおよびそのようなデバイスを構成する方法に関するものである。
集積回路型無線通信デバイスは、典型的には、シリコンチップ上でプロセッサ、メモリおよび無線通信ロジックを集積したものである。アンテナは、シリコン上に製造してもよいし、外部接続してもよい。該デバイスは、電源と、クロック源と、センサ、タイマー、デジタル・アナログ変換器および出力デバイスなどの外部周辺機器と、に接続するためのピンを有することになる。該プロセッサは、無線メッセージの送受信を監視するために、無線通信ロジックと相互接続している。
このような無線通信デバイス、またはチップは、ワイヤレスのマウスおよびキーボード、ゲーム機用コントローラ、自転車の速度計、リモートコントロール、ガレージドア開閉器、無線スピーカなど、広範囲の無線製品で使用することができる。
そのようなデバイス上のプロセッサは、ブルートゥースやジグビーなどの所定の無線プロトコルに従って無線通信ロジックを制御するために、不揮発性メモリからソフトウェアを直接実行することもある。
そのような無線通信チップを内蔵する、ワイヤレスマウスなどの完成品の製造には、通常、該チップを製品の残りの部分と集積する製品メーカーに供給する、無線チップメーカーが必要である。チップメーカーは、クロスコンパイラ、ローダ、デバッガなどのツール、およびドキュメントを含み、製品メーカーが無線デバイス用の専用アプリケーションソフトウェアを開発し、導入し、デバッグすることを可能にする、開発キットも提供することがある。専用アプリケーションソフトウェアは、例えば、所望のプロトコルに従って、ワイヤレスマウスのモーションセンサからの入力を受信し、適切な無線メッセージを送信するためのルーチンを含むことがある。
開発キットは、さらに、チップメーカーによって書かれたソフトウェアライブラリ、および/またはオペレーティングシステムのソースコードも含むことがある。そうすれば、製品メーカーは、付属のソースコードを自社の専用ソフトウェアアプリケーションとコンパイル・リンクして、各チップのメモリ内の所定アドレスに読み込まれる単一オブジェクトファイルを作成することができる。
ライブラリまたはオペレーティングシステムは、特定の無線プロトコルを実施する命令を含むことができる。メモリ管理、プロセッサスケジューリング、プロセス間通信などの他の機能を含めてもよい。アプリケーション開発者は、付属するこれらの関数を、ゼロから開発することなく、自身のアプリケーションコードから呼び出すことができる。このようにすれば、アプリケーションソフトウェアの開発をより簡単でより迅速に行なうことができる。また、異なる無線チップモデル間での移植性を容易にすることもできる。
しかし、出願人は、このような従来のアプローチには改善の余地があることを理解するに至った。
一態様の観点では、本発明は、集積回路型無線通信デバイスを構成する方法を提供するものであって、
前記デバイスは、プロセッサと、メモリと、無線通信ロジックと、を備え、
前記メモリには、所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令を含むファームウェアモジュールがファームウェアメモリアドレスに格納され、
前記プロセッサは、各々にスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を受信し、(i)前記ファームウェアモジュールのスーパーバイザ呼び出し処理機能を起動して、(ii)前記呼び出し処理機能が前記スーパーバイザ呼び出し番号を利用できるようにすることによって、スーパーバイザ呼び出し命令に応答するように構成され、
前記方法は、所定のアプリケーションメモリアドレスに格納されるようにソフトウェアアプリケーションを前記デバイスの前記メモリ内に読み込むことを含み、
前記ソフトウェアアプリケーションは、前記ファームウェアモジュールから無線通信機能を、起動すべき前記機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を発行することによって、起動するように設定される。
このようにすれば、本発明によって、無線制御機能を提供するファームウェアモジュールとスーパーバイザ呼び出し命令を介して相互接続するように、ソフトウェアアプリケーションを無線通信チップに読み込ませることができることを、当業者は理解できるであろう。
これにより、ソフトウェアアプリケーション開発者は、アプリケーションプログラムをチップメーカーによって供給されるライブラリやオペレーティングシステムとリンクする必要がなくなり、その結果、より単純でより効率的な開発プロセスとなる。リンク時における依存関係の必要性を無くすることによって、ソフトウェアアプリケーションの開発中に発生するバグの可能性を低減することができる。一連の開発段階で無線制御機能を提供するファームウェアモジュールをリンクし直し続ける必要がないため、構成オブジェクトのメモリ内の位置は、開発プロセス期間中変わらない可能性がある。メモリ位置のこの連続性のおかげでバグが発生するのを回避することができ、エラーが発生した場合、デバッグの助けともなる。
好ましい実施形態では、ファームウェアメモリアドレスに格納されたファームウェアモジュールは、リンクされた二進数である。したがって、ファームウェアモジュールとソフトウェアアプリケーションとのリンクは必要とせず、そもそも不可能である。ファームウェアモジュールは、マシンプログラムから直接アセンブルすることも可能であるが、通常は、(Cプログラミング言語からコンパイルされるなど)コンパイルされた二進数モジュールであると想定される。
ソフトウェアアプリケーションを開発するために、アプリケーション開発者が知っておくべき唯一の標準外(すなわち、プロセッサまたはデバイスアーキテクチャによって決まらない)情報は、所定のソフトウェアアプリケーションメモリアドレスと、ソフトウェアアプリケーションが使用するために利用可能な任意の(例えば、RAM内の)データメモリの量に関する情報と、スーパーバイザ呼び出し番号とファームウェアモジュール内の無線通信機能との間の所定の対応関係と、である。デバイスのソフトウェアアプリケーションを記述し、コンパイルし、読み込むためには、この情報で十分であると言える。アプリケーション開発者には、便利なように、この情報を含む(例として、Cプログラミング言語では)ヘッダファイルを提供することができると想定される。(そのようなヘッダファイルには、もちろん、任意選択として、アプリケーション開発者にとってさらに助けとなる他の追加機能が含まれていてもよい。)
本発明の方法に従ってデバイスを構成する別の利点は、デバイスメーカーがアプリケーション開発者に自身のファームウェアモジュールの機密ソースコードを公開する必要がないことである。
集積回路型デバイスは、すでにデバイスに予め読み込まれたファームウェアモジュールといっしょにソフトウェアアプリケーション開発者に提供されることもある。こうすれば、ファームウェアモジュールに含まれる任意の機密情報の安全性をさらに高めることができる。しかし、これは必須ではない。アプリケーション開発者は、その代わりに、予めコンパイルされた命令の二進数イメージとしてファームウェアモジュールを受け取り、そのファームウェアモジュールをデバイスに読み込むこともある。
したがって、さらなる態様の観点では、本発明は、プロセッサと、メモリと、無線通信ロジックと、を備えた集積回路型無線通信デバイスを構成する方法を提供し、前記方法は、
ソフトウェアアプリケーションを、所定のアプリケーションのメモリアドレスに格納されるように、前記デバイスの前記メモリに読み込むことと、
所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令を含むファームウェアモジュールを、所定のファームウェアメモリアドレスに格納されるように、前記デバイスの前記メモリに読み込むことと、を含み、
前記プロセッサは、各々にスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を受信し、(i)前記ファームウェアモジュールのスーパーバイザ呼び出し処理機能を起動して、(ii)前記呼び出し処理機能が前記スーパーバイザ呼び出し番号を利用できるようにすることによって、スーパーバイザ呼び出し命令に応答するように構成され、
前記ソフトウェアアプリケーションは、前記ファームウェアモジュールから無線通信機能を、起動すべき前記機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を発行することによって、起動するように設定される。
ファームウェアモジュールとソフトウェアアプリケーションは、任意の順序で、または実質的に同時にデバイス上に読み込むことができる。なお、それでも、二者を同時に読み込むことは、同業者が過去に行なったように、単一の、リンクされたソフトウェアアプリケーションとライブラリを読み込むこととは基本的に異なる。前述のように、ファームウェアモジュールは、コンパイルされてリンクされた(しかし、ソフトウェアアプリケーションにはリンクされない)二進数モジュールであることが好ましい。
本発明は、集積回路型無線通信デバイス自体にも拡張される。
したがって、第三の態様の観点では、本発明は、集積回路型無線通信デバイスを提供するものであって、
前記デバイスは、プロセッサと、メモリと、無線通信ロジックと、を備え、
前記メモリには、所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令を含むファームウェアモジュールがファームウェアメモリアドレスに格納され、
前記プロセッサは、各々にスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を受信し、(i)前記ファームウェアモジュールのスーパーバイザ呼び出し処理機能を起動して、(ii)前記呼び出し処理機能が前記スーパーバイザ呼び出し番号を利用できるようにすることによって、スーパーバイザ呼び出し命令に応答するように構成され、
前記メモリには、前記ファームウェアモジュールから無線通信機能を、起動すべき前記機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を発行することによって、起動するように設定されるソフトウェアアプリケーションが、所定のアプリケーションメモリアドレスに格納される。
さらなる態様の観点では、本発明は、プロセッサと、メモリと、無線通信ロジックと、を備える集積回路型無線通信デバイス上のファームウェアメモリアドレスに読み込まれるファームウェアモジュール、および、前記モジュールを格納する一時的または非一時的媒体を提供するものであって、前記ファームウェアモジュールは、
所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令と、
ソフトウェアアプリケーションによって発行されるスーパーバイザ呼び出し命令に対し、前記スーパーバイザ呼び出し命令と関係付けられたスーパーバイザ呼び出し番号に対応する無線通信機能を実行することによって、応答するように設定されたスーパーバイザ呼び出し処理機能と、を含む。
ファームウェアモジュールは、リンクされた二進数モジュールであることが好ましい。
さらに別の観点では、本発明は、プロセッサと、メモリと、無線通信ロジックと、を備える集積回路型無線通信デバイス上の所定のソフトウェアアプリケーションメモリアドレスに読み込まれるソフトウェアアプリケーション、および、前記ソフトウェアアプリケーションを格納する一時的または非一時的媒体を提供するものであって、前記ソフトウェアアプリケーションは、無線通信機能を、起動すべき前記機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を発行することによって、起動するように設定される。
上記の態様のいずれかの好ましい実施形態では、ファームウェアモジュールは、ファームウェアモジュールによって提供されるすべての無線通信機能が、番号と機能との間の所定の対応関係に従って、それぞれのスーパーバイザ呼び出し番号を有するスーパーバイザ呼び出し命令によって起動されるように設定される。このようにすれば、ファームウェア機能を起動するための他の機構をデバイスがサポートする必要はなくなり、その結果、静止時または実行時における実質的なリンク依存関係を無くし、そしてデバイスとソフトウェアアプリケーション開発を簡素化することができる。
なお、ファームウェアモジュールは、必ずしもソフトウェアアプリケーションが起動することができる無線通信に関係しない他の機能、例えば、暗号化アルゴリズムを提供することもある。デバイスは、すべてのそのような機能を起動することがスーパーバイザ呼び出し命令を発行することによって実行されるように構成されるのが好ましい。
デバイスの実施形態は、伝統的な、完全なオペレーティングシステムを含む必要がないので、アプリケーション開発者は、チップメーカーによって供給される独自のオペレーティングシステムと相互接続する方法を学ぶ必要がなく、プロセッサアーキテクチャ用のネイティブアプリケーションとしてソフトウェアアプリケーションを開発することが自由にできる。特に、プロセッサが当技術分野でよく知られている場合、これはアプリケーション開発者にとって非常に魅力的な特徴である。
デバイスが、ファームウェアモジュールに加えてハードウェア抽象化層を有する場合、ソフトウェアアプリケーションは、この層と直接に相互接続することができる。アプリケーション固有のドライバをデバイスに読み込むこともできる。
デバイスを構成することは、ソフトウェアアプリケーションをコンパイルするときにスーパーバイザ呼び出し番号と無線通信機能との対応関係を用いることを含むことがある。ソフトウェアアプリケーションをコンパイルしたり読み込んだりすることは、所定のソフトウェアアプリケーションメモリアドレスを利用することがある。いくつかの実施形態では、デバイスを構成することは、例えば、ヘッダファイルとして、スーパーバイザ呼び出し番号と無線通信機能との対応関係を入手すること、および/または、所定のソフトウェアアプリケーションメモリアドレスを入手することを含むことがある。このような情報は、次いで、ソフトウェアアプリケーションをコンパイルするときに使われることがある。
デバイスは、該デバイスでソフトウェアアプリケーションを実行するときに実行時リンクが不必要であるように構成されることが好ましい。
プロセッサは、スーパーバイザ呼び出し命令を任意の適切な方法で実施してもよい。一連の好ましい実施形態では、プロセッサは、Cortex‐MシリーズのプロセッサのようなARM社製プロセッサであり、したがって、スーパーバイザ呼び出し命令は、該プロセッサによってサポートされるSVC命令である。
ソフトウェアアプリケーションは、専用のSVCプロセッサ命令を実行することによって、スーパーバイザ呼び出し命令を発行することができる。このような命令は、ソフトウェアアプリケーションをコンパイルするときに、例えば、開発者がソフトウェアアプリケーションのソースコード内に特定のプリプロセッサ指示文を含めることによってコンパイラが生成してもよい。
スーパーバイザ呼び出しと関係付けられた番号は、レジスタを介して、または呼び出しスタックを介して、または他の任意の適切な機構を介して、呼び出し処理機能が利用できるようにすることができる。
プロセッサおよび/またはソフトウェアアプリケーションは、一つ以上の引数の値をスーパーバイザ呼び出し処理機能が利用できるように構成されることが好ましい。このようにすれば、ソフトウェアアプリケーションは、送信すべきデータのような引数を無線通信機能に渡すことができる。呼び出し処理機能は、無線通信機能からの戻り値をソフトウェアアプリケーションに渡すことができてもよい。
プロセッサは、ソフトウェアアプリケーションからのスーパーバイザ呼び出し命令を例外(ソフトウェア割り込み)として処理するように構成されることが好ましい。このようにすれば、ソフトウェアアプリケーションは、緊急を要する無線通信機能を起動する必要があるとき、より低い緊急度の処理を中断することができる。
プロセッサは、複数の割り込み優先度をサポートすることが好ましい。いくつかの実施形態では、ファームウェアモジュールの一部のイベント駆動型機能は、比較的高い優先度が割り当てられ、その他は、比較的低い優先度が割り当てられる。緊急を要する無線通信動作と関係付けられた機能は、比較的高い優先度が割り当てられることが好ましい。
ソフトウェアアプリケーションは、(以下に説明するように、ファームウェアモジュールによって転送される)割り込みを処理するように設定されるが、一部のイベント駆動型機能に対しては比較的高い優先度を与え、その他に対しては比較的低い優先度を与えることができる。ソフトウェアアプリケーションの優先度は、ファームウェアモジュールの優先度と交互配置されることが好ましい。ファームウェアの最も高い優先度レベルは、ファームウェアモジュールで実施される緊急の無線通信動作が、ソフトウェアアプリケーションよりも常に優先されることが可能となるように、ソフトウェアアプリケーションの最も高い優先度レベルよりも高いことが好ましい。こうすれば、ソフトウェアアプリケーションの不注意なプログラミングに対する保護手段を提供することができる。
ファームウェアモジュールは、割り込みを受け取るとソフトウェアアプリケーションの機能を起動するように設定されることが好ましい。このような割り込みは、例えば、動作感知器のような周辺機器から生じることがある。
ファームウェアモジュールとソフトウェアアプリケーションは、各々が割り込みベクタテーブルをそれぞれ有するものとする。二つのテーブルは、互いに同じ割り込みベクタアドレス相対位置を使用することが好ましい。ファームウェアモジュールのベクタテーブル(および、二者が同じ相対位置を使用したときは、ソフトウェアアプリケーションのベクタテーブル)における割り込みベクタアドレスの相対位置は、通常は、プロセッサアーキテクチャによって固定される。デバイスは、割り込みを処理するときにファームウェアモジュールのベクタテーブルを(すなわち、システム割り込みのベクタテーブルとして)使用するように構成されることが好ましい。
しかし、ファームウェアモジュールは、自分が処理するようにプログラムされていない割り込みはすべてソフトウェアアプリケーションに渡すように設定されることが好ましい。これは、ファームウェアモジュールが、特定の割り込みを処理するように構成されていないときはいつでも、ソフトウェアアプリケーションのベクタテーブル内で対応する相対位置に含まれるアドレスに分岐させることによって実施することができる。これは、ソフトウェアアプリケーションは、そのアプリケーションがデバイスに読み込まれた後、ファームウェアモジュールがどこを探せばそのアプリケーションのベクタテーブルが見つかるのかを事前に知ることができるように、所定のメモリアドレスに読み込まれるので可能となる。
例えば、一部の実施形態では、RESET割り込み処理機能のアドレスは、コンパイラによって常に相対位置が0(ゼロ)に配置される。そのため、ファームウェアモジュールのベクタテーブルにおけるRESET処理機能のアドレスは、メモリ内では0x0000 0000+0=0x0000 0000というアドレスになる。ソフトウェアアプリケーションのベクタテーブルにおけるRESET処理機能のアドレスは、CLENR0+0=CLENR0というアドレスになり、ここで、CLENR0は、ソフトウェアアプリケーションが配置される所定の基底メモリアドレスである。
この割り込み転送メカニズムによって、便宜上、ソフトウェアアプリケーションは、ファームウェアモジュールがデバイス上に存在しない場合と実質的に同じ方法でハードウェア割り込みを処理するようにプログラム化することができる。すなわち、ファームウェアモジュールは、割り込みを受け取る目的では、ソフトウェアアプリケーションに不可視とすることができる。該転送は、ハードウェア割り込みがソフトウェアアプリケーションに直接入る場合に比べて、約30命令未満または約3マイクロ秒未満の待ち時間しか付加しないように実施されることが好ましい。
ファームウェアモジュールは、実質的に無効になるように構成することもできる。このような無効化は、ファームウェアモジュールへの呼び出しを介して(できれば、SVC機構を使用して)行なうことができる。ファームウェアモジュールを無効にすると、ファームウェアモジュールは、プロトコルスタックをリセットし、また、リソースをソフトウェアアプリケーションに返すために(もし存在すれば)メモリ保護機能をすべて無効にすることができる。無効になると、ファームウェアモジュールは、(無効にしなければ自分が処理したものであれ)すべての割り込みをソフトウェアアプリケーションに転送することが好ましい。
プロセッサは、ある割り込み優先度レベルから別のレベルへの継ぎ目ない推移をサポートすることが好ましい。これは、時々テールチェインと呼ばれる。これによって、必要なときに緊急度の高い無線通信機能を優先させるように、ソフトウェアアプリケーションとファームウェアモジュールとの間(およびその逆)で制御を移管する洗練された手段が提供される。
デバイスは、メモリアクセス命令を横取りするように配置されたメモリ保護ロジックを備えることが好ましい。このロジックは、プロセッサとメモリの間にあるものとする。これは、アクセスを許可するかどうかを決定するために、メモリアクセス命令の位置(つまり、プロセッサが命令を読み取った場所)を使用することができる。メモリ保護ロジックは、ソフトウェアアプリケーションがファームウェアモジュールを読み取るか、または、上書きすること(あるいは両方)を防止するように構成されることが好ましい。
このようなメモリ保護は、ファームウェアモジュールの機密情報がソフトウェアアプリケーションの開発者によって読み取られることから守るという恩恵をもたらすことができる。また、ソフトウェアアプリケーションのバグの検出および訂正を助けるだけでなく、ソフトウェアアプリケーションのプログラムエラーによる潜在的な損傷を最小限にすることもできる。
メモリ保護ロジックは、ファームウェアモジュールと関係付けられたRAMがソフトウェアアプリケーションによって読み取られるか、または、書き込まれること(あるいは両方)から守るように構成することができる。
プロセッサと、メモリと、無線通信ロジックと、は、単一のシリコンチップ上に集積されることが好ましい。しかしながら、それらは、別の方法として、マルチチップモジュールとして集積することもできる。
メモリは、EEPROMやフラッシュなどの不揮発性メモリであることが好ましい。ファームウェアモジュールとソフトウェアアプリケーションがメモリから直接実行することができるように、ランダムアクセス読み取りをサポートすることが好ましい。
デバイスが、典型的には、揮発性メモリも備えることを、当業者は理解するであろう。さらに、一つ以上の周辺機器を備えることもある。電力とクロック信号を受信するための接続を有してもよい。アンテナのための接続を有してもよい。シリアル接続のような一つ以上の入力インタフェースおよび/または出力インタフェースを有してもよい。
本明細書に記載の一態様または実施形態の任意選択な好ましい特徴は、適切でありさえすれば、他の任意の態様または実施形態にも適用することができる。
本発明の特定の好ましい実施形態について、付随する図面を参照しながら、ほんの一例として説明することにする。
本発明を具体化したマイクロコントローラの概略図である。 マイクロコントローラの構造の主要ソフトウェアコンポーネントを示す概略図である。 マイクロコントローラ用の概略的なメモリマップである。 異なるプロセッサ割り込み優先度レベルの比喩的な図である。 様々な割り込み状況を説明する、比喩的な図である。 ソフトウェアアプリケーションがファームウェアモジュール内の関数を呼び出すことを示す、ソースコード要素の比喩的な図である。 ソフトウェアアプリケーションがシステム呼び出しを使用して内部機能を起動することを示す、ソースコード要素の比喩的な図である。 ソフトウェアアプリケーションがハードウェア割り込みを受け取ることを示す、ソースコード要素の比喩的な図である。
図1は、場合によってはシステムオンチップとしても知られている集積回路マイクロコントローラ1を示すものであって、抵抗・コンデンサ発振器を備えるか、および/または、チップ外の水晶発振器(図示せず)からの入力を受信するクロックロジック3と、電力管理回路5と、プロセッサ7(例えば、ARM社製Cortex‐M0)と、メモリ保護ロジック9と、RAM11と、不揮発性フラッシュメモリ13と、一つ以上の周辺機器15と、無線通信ロジック17と、入出力回路19と、を備えている。
これらの構成要素は、従来の方法で、例えば、回線とバス(図示せず)を使って、相互接続されている。メモリ保護ロジック9は、プロセッサ7からRAM111とフラッシュメモリ13への命令を横取りするように位置付けられている。製品に取り付けられるとき、マイクロコントローラ1は、電源、無線アンテナ、水晶発振器、センサ、出力デバイスなどの多くの外部構成要素に接続することができる。
図2は、マイクロコントローラ1を示しており、その上に、ARM社製Cortexマイクロコントローラソフトウェアインタフェース規格のような、任意選択のハードウェア抽象化層21が存在する。該構造は、ファームウェアモジュール23と、ドライバ25と、ソフトウェアアプリケーション27と、を含む。ドライバ25は、ソフトウェア・アプリケーション27専用のことがある。
ファームウェアモジュール23は、多くの組込みソフトウェアブロックを含む二進数アプリケーションである。無線プロトコルブロック31は、一つ以上の無線プロトコルスタックを実装する。無線イベントマネージャ33は、無線通信ロジック17のためのアクセスのスケジュール化、およびイベントの多重化を提供する。ライブラリ35は、共有ハードウェア資源管理と、乱数生成、割り込みと優先度の設定、(例えば、周辺機器を起動・停止するための)電力管理、暗号化機能、等の機能を提供する。ファームウェアマネージャ37は、ファームウェアモジュールを有効化・無効化することと、無線プロトコルスタックを有効化・無効化することをサポートする。
ファームウェアモジュール23は、システムベクタテーブルを所有し、すべてのリセットに関して該プログラムに対する入口点となる。
ファームウェアモジュール23用のアプリケーションプログラミングインタフェース(API)29は、ソフトウェアアプリケーション27がファームウェアモジュール23内の関数を呼び出すことを可能にする。これは、全面的にシステム呼び出しを使用して実施される。ARM社製プロセッサを使用する場合、各API関数プロトタイプは、コンパイル時に、ファームウェアの機能が関係付けられたスーパーバイザ呼び出し(SVC)番号を介して該機能にマッピングされる。このマッピングが提供されることによって、ソフトウェアアプリケーション27の開発者は、関数を正しく呼び出すことができる。
ファームウェアモジュール23は、イベントをソフトウェア割り込みとしてソフトウェアアプリケーション27に伝えることができ、その内容は、ソフトウェアアプリケーション27によって読み込まれる(ポーリングされる)までバッファに格納される。該読み込みは、API呼び出し(例えば、event_get())を通して行われる。
ソフトウェアアプリケーション27は、マイクロコントローラ1のハードウェアを、ファームウェアモジュール23を利用して間接的に該ハードウェアを使用することができることに加えて、直接またはハードウェア抽象化層21を介し、例えば、アプリケーション固有のドライバ25を用いて、アクセスすることができる。
図3は、RAM11とフラッシュ13がファームウェアモジュール23と(任意のアプリケーション固有のドライバ25を含む)ソフトウェアアプリケーション27とでどのように共有されるのかを示している。ARM社製Cortex‐M0プロセッサ7を使用する場合、フラッシュ13は、アドレスがゼロ(0x0000 0000)から上に向かって、その容量である、プログラムメモリサイズまで割り当てられ、RAM11は、アドレスが0x2000 0000から上に向かって、(0x2000 0000+RAMサイズ)まで割り当てられる。異なるタイプのプロセッサを使用する場合、別のアドレス値を使用することもある。
フラッシュ13は、アドレスCLENR0(領域0のプログラムの長さ)の両側に二つの異なる領域を含む。ゼロとCLENR0の間にある領域0は、ファームウェアモジュール23がロードされる場所である。その割り込みベクタテーブルは、アドレスのゼロに格納されている。CLENR0から上方に延びる領域1は、ソフトウェアアプリケーション27がロードされる場所である。それも、アドレスCLENR0に割り込みベクタテーブルを有するが、割り込みベクタテーブルの目的は、以下で説明する。なお、デバイス1は、設定情報やフラグを格納するなどといった他の目的のために使用される不揮発性メモリ(図示せず)を別に有することがある。
RAM11も同様に、基底アドレス0x2000 0000からRLENR0までの領域0とRLENR0から上方に延びる領域1を有する。RAMの領域0は、ファームウェアモジュール23のためのデータ記憶域を提供し、RAMの領域1は、ソフトウェアアプリケーション27のためのデータ記憶域を提供する。呼び出しスタックは、ファームウェアモジュール23とソフトウェアアプリケーション27とで共有され、例えば、0x2000 0000+RAMサイズから下方に拡がる。呼び出しスタックに割り当てられるメモリは、ソフトウェアアプリケーション27とファームウェアモジュール23の両方の必要性に十分に応える大きさでなければならない。
ファームウェアモジュール23による呼び出しスタックの必要使用量は、デバイス1に関して、チップメーカーによって公開されることがある。したがって、ソフトウェアアプリケーション27の開発者は、初期スタックポインタを定めて、ファームウェアモジュール23と自分のソフトウェアアプリケーション27の両方にとって十分なスタックメモリを予約する必要がある。ファームウェアモジュール23は、リセット時にメインスタックポインタを初期化することになる。
メモリ保護ロジック9は、プロセッサ7からフラッシュ13およびRAM11に対するすべてのメモリアクセス要求(例えば、読み取り要求)を横取りするように構成される。該ロジックは、アクセス要求命令の発行元(例えば、該要求は、ファームウェアモジュール23からのものであるか、またはソフトウェアアプリケーション27からのものであるか)を決定する。また、様々な発行元に対してそれぞれのアクセス権限を指定する(例えば、一つ以上の専用レジスタに格納された)メモリ保護構成データにアクセスし、それに応じてアクセス要求を許可または拒否する。
本発明のいくつかの好ましい実施形態では、ソフトウェアアプリケーション27は、フラッシュの領域0とRAMの領域0に対する読み取りおよび/または書き込みのアクセスを拒否される。こうすれば、ファームウェアモジュール23の機密性を保護し、また、ソフトウェアアプリケーション27によって、ファームウェアモジュール23に割り当てられたメモリ箇所に対し、不注意なまたは悪意のある書き込みが行なわれることを防止することができ、それによって堅牢性および安全性を向上させることができる。フラッシュのソフトウェアアプリケーション領域1も、例えば、外部デバッグインタフェースを介したリードバック行為から保護するなど、読み取りアクセスから保護することができる。
このことは、ソフトウェアアプリケーション27にはRAM領域0への書き込みアクセス権がないので、初期スタックポインタをRAM領域0におくことはできないことを意味する。本発明の他の実施形態では、呼び出しスタックは、二つの部分から成るものとし、ファームウェアモジュール23の呼び出しスタックはRAM領域0に置かれ、ソフトウェアアプリケーション27の呼び出しスタックはRAM領域1に置かれる。
図4は、ARM社製Cortex‐M0プロセッサによって提供されて、矢印の方向に優先度が増加する、様々な割り込みレベル41と、これらのレベルが、ファームウェアモジュール23とソフトウェアアプリケーション27によって使用される割込みレベル43にどのようにマッピングされるかということと、を示している。
メインという背景の処理環境の上には、優先度の高くなる順に、ソフトウェアアプリケーション低優先度と、ファームウェアモジュール低優先度と、ソフトウェアアプリケーション高優先度と、ファームウェアモジュール高優先度として使用される四つの割り込み優先度がある。高優先度のソフトウェアアプリケーション割り込みは、短い待ち時間が要求される緊急割り込みに使用される。
図5は、優先度レベルが変化する可能性のある様々な例を示している。
図5(a)は、背景となるメイン処理が、低優先度のソフトウェアアプリケーション、例えば、シリアル用ドライバによって割り込みを受ける様子を示している。次いで、ソフトウェアアプリケーション27は、(スーパーバイザ呼び出し(SVC)例外を発生させることによって)ファームウェアモジュール23にAPI呼び出しを行なう。ファームウェアモジュール23は、該呼び出しをファームウェア低優先度レベルで処理した後に、アプリケーション低優先度レベルに戻る。最後に、ソフトウェアアプリケーション27は操作を完了し、メインという背景レベルに実行が戻る。
図5(b)は、ファームウェアモジュール23へAPI呼び出しが(SVC例外を発生させることによって)メインの処理環境から発生する様子を示している。ファームウェア低優先度で実行するAPI機能は、高優先度のソフトウェアアプリケーション例外によって割り込みされる。これは、例えば、センサ入力を処理することであるかもしれない。ソフトウェアアプリケーションが高優先度の実行を終了すると、ファームウェアのAPI呼び出しは、低優先度のレベルで処理を継続することができ、最終的に背景であるメイン処理に戻る。
図5(c)は、背景であるメイン処理がファームウェアモジュール23によって高優先度の割り込みを受けた様子を示している。これは、着信する無線パケットのような、無線イベントマネージャ33が応答しなければならない、緊急を要する無線通信割り込みが原因である可能性がある。ファームウェアモジュール23内の割り込みサービスルーチンは、低優先度のファームウェア例外フラグを設定して、無線プロトコルスタックのより高いレベルに通知する。高優先度のルーチンが完了すると、プロセッサ7のテールチェイン機能によって(つまり、途中で、背景であるメインのレベルに戻すことなく)、直ちに低優先度のルーチンが実行されている。今度は、低優先度のファームウェアルーチンが、例外フラグを設定して、無線データパケットが受信されたという信号をソフトウェアアプリケーション27に通知する。この例外は、低優先度のファームウェアモジュールルーチンの完了後に直ちに実行される。この例では、ソフトウェアアプリケーション27は、次に、SVCを介してファームウェアモジュール23にAPI呼び出しを行ない、完了後に、処理環境をSVCからソフトウェアアプリケーション27に戻す。最後に、ソフトウェアアプリケーション低優先度操作が完了し、メインのレベルに実行が戻る。
図6〜図8は、ソフトウェアアプリケーション27とファームウェアモジュール23との間でどのように制御が渡されるのかを例を用いて説明している。説明のために、未コンパイルのC言語コードを抽出したものが使用されている。もちろん、実際には、プロセッサ7によってフラッシュメモリ13からの二進数命令が実行される。番号の付いた矢印は、連続する実行ステップを示している。
図6は、ソフトウェアアプリケーション27がファームウェアモジュール23のAPI29を通して機能を呼び出す様子を示している。アプリケーション27は、チップメーカーによってソフトウェアアプリケーション開発者に供給されたファームウェアヘッダファイルを使用して、ファームウェアのAPI29から取り込まれたプロトタイプを使ってある関数を呼び出す。_SVC(x) プラグマは、該関数がソフトウェアアプリケーション23によって呼び出されると、スーパーバイザ呼び出し(SVC)例外を発生させる命令を、コンパイラがオブジェクトコード中に挿入する。
プロセッサ7は、(システム割り込みベクタテーブルとして機能する)ファームウェアモジュールの割り込みベクタテーブルを介して、SVC処理機能を起動する。ソフトウェアアプリケーション27によって呼び出される関数と関係付けられたSVC番号は、引数と一緒に、SVC処理機能に渡される。このような引数は、プロセッサによって、レジスタを介して、または、コールスタックを介して渡すことができる。SVC処理機能は、SVC番号を使用して正しいファームウェアモジュールの関数を呼び出す。これは、無線制御機能(例えば、無線でデータを送信する命令)、または(例えば、ファームウェアモジュールを無効化する)ファームウェア管理機能、または(例えば、乱数を生成する)ライブラリ関数、であってもよい。関数が実行されると、ソフトウェアアプリケーション27に戻る。戻り値が、レジスタ内またはコールスタック上で利用可能であるようにできる。
図7は、ソフトウェアアプリケーション27がシステム呼び出しを介して、自分自身の機能の一つを呼び出す様子を示している。実行レベルを低優先度から高優先度に変更するために、このようなことを行なう可能性がある。図6における状況と同様に、ソフトウェアアプリケーション27は、ファームウェアモジュール27にあるSVC処理機能に実行が渡されるようにSVCを発生させる。しかしながら、この場合、該命令は、ソフトウェアアプリケーション自身の使用のために予約されている範囲にあるSVC番号を使用する。このようにして、ファームウェアモジュール23は、おそらくそれまでの動作とは異なる優先度レベルで、ソフトウェアアプリケーション27内の処理関数(app_systemcall_function())に実行が分岐するようにする。
図8は、ハードウェア割り込みをソフトウェアアプリケーション27がどのようにして受け取るのかを示している。ファームウェアモジュール23は、ファームウェアモジュール23が処理するように構成されている割り込みでない限り、初期設定ではソフトウェアアプリケーション27に割り込みを転送するように設定されている。さらに、ファームウェアモジュール23が(例えば、ファームウェアマネージャ37への適切なAPI呼び出しを介して)ソフトウェアアプリケーション27によって無効にされている場合、ファームウェアモジュールは、全ての割り込みをソフトウェアアプリケーション27に転送する。
モーションセンサなどから割り込みを受信すると、ファームウェアモジュール23の割り込み処理機能に制御が渡される。この処理機能は、ファームウェアモジュール23が有効になっているかどうか、そして、ファームウェアモジュール23が対処するように設定されている割り込みかであるかどうかを調べる。もしそうであれば、ファームウェアモジュール23は、割り込みを処理する。そうでない場合は、ソフトウェアアプリケーション27の割り込み処理ルーチンに実行を分岐させる。ファームウェアモジュール23は、ソフトウェアアプリケーションベクタテーブルの(CLENR0という)位置が予め決められていて、このベクタテーブルでの相対位置がファームウェアモジュールのベクタテーブルでの相対位置と同じなので、このルーチンがどこにあるのかを知ることができる。
このようにして、集積回路無線通信チップのファームウェアメモリアドレスにプログラムされた、無線制御ロジックを実施するファームウェアモジュールを、安全かつ便利に構成・使用することができる。

Claims (31)

  1. 集積回路型無線通信デバイスを構成する方法であって、
    前記デバイスは、プロセッサと、メモリと、無線通信ロジックと、を備え、
    前記メモリには、所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令を含むソフトウェアファームウェアモジュールがファームウェアメモリアドレスに格納され、
    前記プロセッサは、各々にスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を受信し、(i)前記ソフトウェアファームウェアモジュールのスーパーバイザ呼び出し処理部を起動して、(ii)前記呼び出し処理部が前記スーパーバイザ呼び出し番号を利用できるようにすることによって、スーパーバイザ呼び出し命令に応答するように構成され、
    前記方法は、所定のアプリケーションメモリアドレスに格納されるようにソフトウェアアプリケーションを前記デバイスの前記メモリ内に読み込むことを含み、
    前記ソフトウェアアプリケーションは、起動すべき無線通信機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を前記プロセッサに発行することによって、前記ソフトウェアファームウェアモジュールから前記無線通信機能を起動するように設定される
    ことを特徴とする、集積回路型無線通信デバイスを構成する方法。
  2. プロセッサと、メモリと、無線通信ロジックと、を備えた集積回路型無線通信デバイスを構成する方法であって、前記方法は、
    ソフトウェアアプリケーションを、所定のアプリケーションのメモリアドレスに格納されるように、前記デバイスの前記メモリに読み込むことと、
    所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令を含むソフトウェアファームウェアモジュールを、所定のファームウェアメモリアドレスに格納されるように、前記デバイスの前記メモリに読み込むことと、を含み、
    前記プロセッサは、各々にスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を受信し、(i)前記ソフトウェアファームウェアモジュールのスーパーバイザ呼び出し処理部を起動して、(ii)前記呼び出し処理部が前記スーパーバイザ呼び出し番号を利用できるようにすることによって、スーパーバイザ呼び出し命令に応答するように構成され、
    前記ソフトウェアアプリケーションは、起動すべき無線通信機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を前記プロセッサに発行することによって、前記ソフトウェアファームウェアモジュールから前記無線通信機能を起動するように設定される
    ことを特徴とする、集積回路型無線通信デバイスを構成する方法。
  3. 前記ソフトウェアファームウェアモジュールは、リンクされた二進数モジュールである
    ことを特徴とする、請求項1または2に記載の方法。
  4. 前記ソフトウェアファームウェアモジュールは、前記ソフトウェアファームウェアモジュールによって提供されるすべての無線通信機能が、番号と機能との間の所定の対応関係に従って、それぞれのスーパーバイザ呼び出し番号を有するスーパーバイザ呼び出し命令によって起動されるように設定される
    ことを特徴とする、請求項1乃至請求項3のいずれかに記載の方法。
  5. 前記方法は、さらに、
    前記ソフトウェアアプリケーションをコンパイルすることと、
    前記コンパイルするときに、スーパーバイザ呼び出し番号と無線通信機能との対応関係を用いることと、を含む
    ことを特徴とする、請求項1乃至請求項4のいずれかに記載の方法。
  6. 前記方法は、さらに、
    前記ソフトウェアアプリケーションをコンパイルしたり読み込んだりするときに、前記所定のソフトウェアアプリケーションメモリアドレスを利用することを含む
    ことを特徴とする、請求項1乃至請求項5のいずれかに記載の方法。
  7. 前記ソフトウェアアプリケーションは、専用のSVCプロセッサ命令を実行することによって、スーパーバイザ呼び出し命令を発行するように設定される
    ことを特徴とする、請求項1乃至請求項6のいずれかに記載の方法。
  8. 前記ソフトウェアファームウェアモジュールと前記ソフトウェアアプリケーションは、各々が割り込みベクタテーブルをそれぞれ有し、前記デバイスは、割り込みを処理するときに前記ソフトウェアファームウェアモジュールの前記ベクタテーブルを使用するように構成され、前記ソフトウェアファームウェアモジュールは、自分が処理するようにプログラムされていない割り込みはすべて前記ソフトウェアアプリケーションに渡すように設定される
    ことを特徴とする、請求項1乃至請求項7のいずれかに記載の方法。
  9. 前記ソフトウェアファームウェアモジュールと前記ソフトウェアアプリケーションの前記割り込みベクタテーブルは、互いに同じ割り込みベクタアドレス相対位置を使用する
    ことを特徴とする、請求項8に記載の方法。
  10. 前記デバイスは、メモリアクセス命令を横取りするように配置され、前記ソフトウェアアプリケーションが前記ソフトウェアファームウェアモジュールを読み取るか、または、上書きすることを防止するように構成されるメモリ保護ロジックを備える
    ことを特徴とする、請求項1乃至請求項9のいずれかに記載の方法。
  11. 集積回路型無線通信デバイスであって、
    前記デバイスは、プロセッサと、メモリと、無線通信ロジックと、を備え、
    前記メモリには、所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令を含むソフトウェアファームウェアモジュールがファームウェアメモリアドレスに格納され、
    前記プロセッサは、各々にスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を受信し、(i)前記ソフトウェアファームウェアモジュールのスーパーバイザ呼び出し処理部を起動して、(ii)前記呼び出し処理部が前記スーパーバイザ呼び出し番号を利用できるようにすることによって、スーパーバイザ呼び出し命令に応答するように構成され、
    前記メモリには、前記ソフトウェアファームウェアモジュールから無線通信機能を、起動すべき前記無線通信機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を前記プロセッサに発行することによって、前記ソフトウェアファームウェアモジュールから前記無線通信機能を起動するように設定されるソフトウェアアプリケーションが、所定のアプリケーションメモリアドレスに格納される
    ことを特徴とする、集積回路型無線通信デバイス。
  12. 前記ソフトウェアファームウェアモジュールは、前記ソフトウェアファームウェアモジュールによって提供されるすべての無線通信機能が、番号と機能との間の所定の対応関係に従って、それぞれのスーパーバイザ呼び出し番号を有するスーパーバイザ呼び出し命令によって起動されるように設定される
    ことを特徴とする、請求項11に記載のデバイス。
  13. 前記ソフトウェアファームウェアモジュールは、前記ソフトウェアファームウェアモジュールによって提供されるすべての機能が、前記スーパーバイザ呼び出し命令を発行することによって起動されるように設定される
    ことを特徴とする、請求項11または12に記載のデバイス。
  14. 前記デバイスで前記ソフトウェアアプリケーションを実行するときに実行時リンクが不必要であるように構成される
    ことを特徴とする、請求項11乃至請求項13のいずれかに記載のデバイス。
  15. 前記ソフトウェアアプリケーションは、専用のSVCプロセッサ命令を実行することによって、スーパーバイザ呼び出し命令を発行するように設定される
    ことを特徴とする、請求項11乃至請求項14のいずれかに記載のデバイス。
  16. 前記プロセッサおよび/または前記ソフトウェアアプリケーションは、一つ以上の引数の値を前記スーパーバイザ呼び出し処理部が利用できるように構成される
    ことを特徴とする、請求項11乃至請求項15のいずれかに記載のデバイス。
  17. 前記プロセッサは、前記ソフトウェアアプリケーションからのスーパーバイザ呼び出し命令を例外として処理するように構成され、前記プロセッサは、複数の割り込み優先度をサポートし、前記ソフトウェアファームウェアモジュールの一部の機能は、比較的高い優先度が割り当てられ、前記ソフトウェアファームウェアモジュールのその他の機能は、比較的低い優先度が割り当てられる
    ことを特徴とする、請求項11乃至請求項16のいずれかに記載のデバイス。
  18. 前記ソフトウェアアプリケーションは、一部のイベント駆動型機能に対しては比較的高い優先度を与え、その他のイベント駆動型機能に対しては比較的低い優先度を与えて、割り込みを処理するように設定される
    ことを特徴とする、請求項17に記載のデバイス。
  19. 前記ソフトウェアアプリケーションの高い優先度および低い優先度は、前記ファームウェアモジュールの高い優先度および低い優先度と交互配置される
    ことを特徴とする、請求項18に記載のデバイス。
  20. ファームウェアの最も高い優先度レベルは、ソフトウェアアプリケーションの最も高い優先度レベルよりも高い
    ことを特徴とする、請求項18または請求項19に記載のデバイス。
  21. 前記ソフトウェアファームウェアモジュールは、割り込みを受け取ると前記ソフトウェアアプリケーションの機能を起動するように設定される
    ことを特徴とする、請求項11乃至請求項20のいずれかに記載のデバイス。
  22. 前記ソフトウェアファームウェアモジュールと前記ソフトウェアアプリケーションは、各々が割り込みベクタテーブルをそれぞれ有し、前記デバイスは、割り込みを処理するときに前記ソフトウェアファームウェアモジュールの前記ベクタテーブルを使用するように構成され、前記ソフトウェアファームウェアモジュールは、自分が処理するようにプログラムされていない割り込みはすべて前記ソフトウェアアプリケーションに渡すように設定される
    ことを特徴とする、請求項11乃至請求項21のいずれかに記載のデバイス。
  23. 前記ソフトウェアファームウェアモジュールと前記ソフトウェアアプリケーションの前記割り込みベクタテーブルは、互いに同じ割り込みベクタアドレス相対位置を使用する
    ことを特徴とする、請求項22に記載のデバイス。
  24. 前記ソフトウェアファームウェアモジュールは、前記ソフトウェアファームウェアモジュールへの呼び出しを介し、リソースを前記ソフトウェアアプリケーションに返すために、前記ソフトウェアファームウェアモジュールがプロトコルスタックをリセットしメモリ保護機能をすべて無効にするようにして、実質的に無効になることができ、無効になると、前記ソフトウェアファームウェアモジュールは、すべての割り込みを前記ソフトウェアアプリケーションに転送する
    ことを特徴とする、請求項11乃至請求項23のいずれかに記載のデバイス。
  25. 前記プロセッサは、ある割り込み優先度レベルから別のレベルへの継ぎ目ない推移をサポートする
    ことを特徴とする、請求項11乃至請求項24のいずれかに記載のデバイス。
  26. 前記デバイスは、メモリアクセス命令を横取りするように配置され、前記ソフトウェアアプリケーションが前記ソフトウェアファームウェアモジュールを読み取るか上書きすることを、および/または、前記ソフトウェアファームウェアと関係付けられたRAMを読み取るか書き込むことを防止するように構成されるメモリ保護ロジックを備える
    ことを特徴とする、請求項11乃至請求項25のいずれかに記載のデバイス。
  27. 前記メモリは、ランダムアクセス読み取りをサポートする不揮発性メモリであり、前記デバイスは、前記ソフトウェアファームウェアモジュールと前記ソフトウェアアプリケーションを前記不揮発性メモリから直接実行することができるように構成される
    ことを特徴とする、請求項11乃至請求項26のいずれかに記載のデバイス。
  28. 前記ソフトウェアファームウェアモジュールは、リンクされた二進数モジュールであって、前記ソフトウェアアプリケーションにはリンクされていない、
    ことを特徴とする、請求項11乃至請求項27のいずれかに記載のデバイス。
  29. プロセッサと、メモリと、無線通信ロジックと、を備える集積回路型無線通信デバイス上のファームウェアメモリアドレスに読み込まれるソフトウェアファームウェアモジュールであって、前記ソフトウェアファームウェアモジュールは、リンクされた二進数モジュールであり、
    所定の無線プロトコルに従って前記無線通信ロジックを制御するための命令と、
    ソフトウェアアプリケーションによって発行されるスーパーバイザ呼び出し命令に対し、前記スーパーバイザ呼び出し命令と関係付けられたスーパーバイザ呼び出し番号に対応する無線通信機能を実行することによって、応答するように設定されたスーパーバイザ呼び出し処理部と、を含む
    ことを特徴とするソフトウェアファームウェアモジュール。
  30. リンクされた二進数モジュールである
    ことを特徴とする、請求項29に記載のソフトウェアファームウェアモジュール。
  31. プロセッサと、メモリと、無線通信ロジックと、を備える集積回路型無線通信デバイス上の所定のソフトウェアアプリケーションメモリアドレスに読み込まれるソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションは、起動すべき無線通信機能に対応する所定のスーパーバイザ呼び出し番号が関係付けられたスーパーバイザ呼び出し命令を前記プロセッサに発行することによって、前記無線通信機能を起動する複数の命令を含む
    とを特徴とするソフトウェアアプリケーション。
JP2015519340A 2012-06-27 2013-06-26 集積回路型無線 Active JP6326047B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1211423.7 2012-06-27
GB201211423A GB2503471B (en) 2012-06-27 2012-06-27 Integrated-circuit radio
PCT/GB2013/051692 WO2014001801A1 (en) 2012-06-27 2013-06-26 Integrated-circuit radio

Publications (3)

Publication Number Publication Date
JP2015524964A JP2015524964A (ja) 2015-08-27
JP2015524964A5 JP2015524964A5 (ja) 2016-08-12
JP6326047B2 true JP6326047B2 (ja) 2018-05-16

Family

ID=46704313

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015519340A Active JP6326047B2 (ja) 2012-06-27 2013-06-26 集積回路型無線

Country Status (8)

Country Link
US (2) US9317348B2 (ja)
EP (1) EP2867768A1 (ja)
JP (1) JP6326047B2 (ja)
KR (1) KR102088690B1 (ja)
CN (1) CN104412230B (ja)
GB (1) GB2503471B (ja)
TW (1) TWI603265B (ja)
WO (1) WO2014001801A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2515364B (en) * 2013-12-20 2015-06-17 Nordic Semiconductor Asa Updatable integrated-circuit radio
GB2521607B (en) 2013-12-23 2016-03-23 Nordic Semiconductor Asa Integrated-Circuit Radio
WO2020240235A1 (en) * 2019-05-31 2020-12-03 Micron Technology, Inc Controller for a memory component
CN112203319B (zh) * 2020-10-23 2022-07-15 四川长虹网络科技有限责任公司 ZigBee设备的测试方法、装置、计算机设备和存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3632139A1 (de) 1986-09-22 1988-04-07 Bbc Brown Boveri & Cie Verfahren zur ausfuehrung von zwei in verschiedenen programmiersprachen geschriebenen programmen
JPS63296140A (ja) * 1987-05-28 1988-12-02 Canon Inc 割込み制御方式
US5161228A (en) * 1988-03-02 1992-11-03 Ricoh Company, Ltd. System with selectively exclusionary enablement for plural indirect address type interrupt control circuit
JPH07105124A (ja) * 1993-10-06 1995-04-21 Toshiba Corp 割込み制御装置
CA2143488C (en) * 1995-02-27 2000-01-11 Robert Paul Duncan Dynamic link libraries without linker or loader support
US6223275B1 (en) * 1997-06-20 2001-04-24 Sony Corporation Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
JP2002108625A (ja) * 2000-09-26 2002-04-12 Toshiba Corp 言語処理装置及び言語処理プログラムを格納した記録媒体
US7237121B2 (en) 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US6874069B2 (en) 2002-07-26 2005-03-29 Silicon Storage Technology, Inc. Microcontroller having an embedded non-volatile memory array with read protection for the array or portions thereof
US7120794B2 (en) * 2003-10-29 2006-10-10 Qualcomm Inc. System for invoking a privileged function in a device
US7206884B2 (en) * 2004-02-11 2007-04-17 Arm Limited Interrupt priority control within a nested interrupt system
US7318150B2 (en) * 2004-02-25 2008-01-08 Intel Corporation System and method to support platform firmware as a trusted process
JP2005242806A (ja) * 2004-02-27 2005-09-08 Renesas Technology Corp データ処理装置
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20070112680A1 (en) * 2005-11-11 2007-05-17 Infineon Technologies Ag System and method for processing digital media content in a mobile device
WO2007065478A1 (en) * 2005-12-07 2007-06-14 Freescale Semiconductor, Inc Wireless subscriber communication unit and method of power control with back-off therefore
FR2905819B1 (fr) * 2006-09-12 2013-01-18 Wavecom Procede de gestion de l'architecture logicielle d'un circuit de radiocommunication,application,produit programme d'ordinateur et circuit correspondants.
US20090096586A1 (en) * 2007-10-12 2009-04-16 Icontrol, Inc. Radiofrequency Tracking and Communication Device and Method for Operating the Same
US20090253384A1 (en) * 2008-04-04 2009-10-08 Stmicroelectronics, Ltd. Dual Mode Radio Frequency Front End Circuit
US8291202B2 (en) * 2008-08-08 2012-10-16 Qualcomm Incorporated Apparatus and methods for speculative interrupt vector prefetching
US8143699B2 (en) * 2009-02-25 2012-03-27 Taiwan Semiconductor Manufacturing Co., Ltd. Dual-dielectric MIM capacitors for system-on-chip applications
US20110117956A1 (en) * 2009-11-17 2011-05-19 Yosi Levi Industrial radio device with unified programming interface and methods
US8862178B2 (en) * 2010-02-24 2014-10-14 Qualcomm Incorporated Methods and systems for managing participation in multiple wireless networks
US20120255031A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for securing memory using below-operating system trapping
US9063847B2 (en) * 2011-04-19 2015-06-23 Dell Products, Lp System and method for managing space allocation within a file system
US9563410B2 (en) * 2011-05-25 2017-02-07 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
WO2013162589A1 (en) * 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US20130338848A1 (en) * 2012-06-19 2013-12-19 Scott Park Method and Apparatus for Leveling Recreational Vehicles

Also Published As

Publication number Publication date
EP2867768A1 (en) 2015-05-06
JP2015524964A (ja) 2015-08-27
KR102088690B1 (ko) 2020-03-16
KR20150024927A (ko) 2015-03-09
US20140007141A1 (en) 2014-01-02
CN104412230B (zh) 2018-06-22
TWI603265B (zh) 2017-10-21
US9317348B2 (en) 2016-04-19
TW201401169A (zh) 2014-01-01
WO2014001801A1 (en) 2014-01-03
CN104412230A (zh) 2015-03-11
GB201211423D0 (en) 2012-08-08
GB2503471A (en) 2014-01-01
US20160196170A1 (en) 2016-07-07
GB2503471B (en) 2015-05-06

Similar Documents

Publication Publication Date Title
JP6306578B2 (ja) メモリ保護装置及び保護方法
US9891908B2 (en) Updatable integrated-circuit radio
JP2007206885A (ja) コンピュータシステム及びシステム起動方法
JP6326047B2 (ja) 集積回路型無線
JP5307133B2 (ja) デバイスエミュレーション支援装置、デバイスエミュレーション支援方法、デバイスエミュレーション支援回路及び情報処理装置
US20110161644A1 (en) Information processor
JP6495290B2 (ja) Ic無線装置
JP2011227730A (ja) マイクロコンピュータ
CN106922189B (zh) 设备代理装置及其控制方法
Bulusu Asymmetric multiprocessing real time operating system on multicore platforms
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法
JP2004252508A (ja) 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法
Dibble et al. Programming embedded systems: interacting with the embedded platform
Levy A Secure Operating System for the Internet of Things

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160624

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180413

R150 Certificate of patent or registration of utility model

Ref document number: 6326047

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250