JP2017511513A - Ic無線装置 - Google Patents

Ic無線装置 Download PDF

Info

Publication number
JP2017511513A
JP2017511513A JP2016541506A JP2016541506A JP2017511513A JP 2017511513 A JP2017511513 A JP 2017511513A JP 2016541506 A JP2016541506 A JP 2016541506A JP 2016541506 A JP2016541506 A JP 2016541506A JP 2017511513 A JP2017511513 A JP 2017511513A
Authority
JP
Japan
Prior art keywords
interrupt
software application
firmware module
wireless communication
function
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.)
Granted
Application number
JP2016541506A
Other languages
English (en)
Other versions
JP6495290B2 (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 JP2017511513A publication Critical patent/JP2017511513A/ja
Application granted granted Critical
Publication of JP6495290B2 publication Critical patent/JP6495290B2/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

IC無線通信装置(1)は、ハードウェア割り込み入力ラインを有するプロセッサ(7)と、メモリ(13)と、無線通信回路(17)と、割り込みインターフェース回路(8)とを備える。メモリ(13)は、(i)所定の無線プロトコルに従って無線通信回路(17)を制御する命令(31)と、(ii)ファームウェアモジュール(23)にある無線通信機能の特定情報を受信し、特定された無線通信機能を呼び出す命令を含む割り込みルーチンとを含むファームウェアモジュール(23)を収容している。割り込みインターフェース回路(8)は、装置(1)で実行中のソフトウエア(2)によって生成される信号を受信する入力回路と、ソフトウェア生成された信号を入力回路で受信するとプロセッサ(7)のハードウェア割り込み入力ラインを割り込み可能状態にするように設定された出力回路とを備える。装置(1)は、プロセッサ(7)のハードウェア割り込み入力ラインが割り込み可能状態になると、割り込みルーチンを呼び出すように構成されている。【選択図】図9

Description

本発明は、IC無線通信装置およびその装置を構成する方法に関する。
IC無線通信装置は、通常、プロセッサとメモリと無線通信回路とをシリコンチップ上に集積している。アンテナは、シリコン上に組み込んでもよいし、または、外部接続してもよい。該装置は、通常、電源と、クロック源と、センサ、タイマー、デジタルアナログ変換器、出力装置などの外部周辺機器とに接続するためのピンを有する。プロセッサは、この装置が無線メッセージの送受信を行なうのを管理するために、無線通信回路と相互にやり取りする。
このような無線通信装置は、無線マウスとキーボード、ゲーム機器用コントローラ、自転車の速度計、リモートコントロール、ガレージドア開閉器、ワイヤレススピーカーなどといった広範囲の無線製品で使用される。
このような装置のプロセッサは、ブルートゥースやジグビーといった所定の無線プロトコルに従って無線通信回路を制御するために、該装置の不揮発性メモリに格納されたソフトウェアを実行することもある。
ワイヤレスマウス等の完成品は、通常、製品メーカーが別の無線チップメーカーから無線通信チップを仕入れて組み立てる。このチップメーカーは、該製品メーカーが該無線装置用の特別仕様ソフトウェアアプリケーションを開発し、導入し、デバッグすることができる、クロスコンパイラとローダとデバッガと説明書等のツールを含んだ開発キットも製品メーカーに提供することもある。特製アプリケーションソフトウェアは、例えば、所望の通信プロトコルに従って、ワイヤレスマウスの動作センサからの入力を受信し、関連するUSBドングルに適切な無線メッセージを送信するためのルーチンを備えることができる。
製品メーカーにチップの無線回路と直接やり取りすることを求めるのではなく、通常、チップメーカーは、チップと共に開発キットを提供する。開発キットは、チップメーカーによって書かれた、例えば、ブルートゥース低エネルギ等の特定無線プロトコルを実行するといった、無線回路の制御を行なう機能を含んだソフトウェアライブラリやオペレーティングシステムのソースコードを備えていてもよい。また、メモリ管理やプロセッサスケジューリングやプロセス間通信用の機能といった他の機能も備えていてもよい。アプリケーション開発者は、ゼロからそれらをコーディングする必要がなく、自らのアプリケーションコードからこれらの提供機能を呼び出すことができる。このようにすれば、アプリケーションソフトウェアの開発を簡単かつ迅速に行なうことができる。また、該無線装置の異なるモデル間での移植性を楽にすることができる。
製品メーカーは、通常、チップメーカーから入手したソースコードを自らの特別仕様ソフトウェアアプリケーションとともにコンパイル・リンクし、各装置のメモリ内の所定アドレスにロードする単一バイナリイメージファイルを作成する。
しかし、出願人は、このような従来のやり方を改善することができることに気付いた。
一態様によれば、本発明は、IC無線通信装置を構成する方法を提供するものであって、
前記装置は、メモリと、無線通信回路と、割り込みインターフェイス回路と、ハードウェア割り込み入力ラインを有するプロセッサとを備え、
前記割り込みインタフェース回路は、前記装置で実行中のソフトウェアによって生成される信号を受信する入力回路と、ソフトウェア生成された信号を前記入力回路で受信すると前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように設定された出力回路とを備え、
前記メモリは、(i)所定の無線プロトコルに従って無線通信回路を制御する命令と、(ii)前記ファームウェアモジュールにある無線通信機能の特定情報を受信すると、特定された前記無線通信機能を呼び出す命令を備えた割り込みルーチンとを含むファームウェアモジュールを収容し、
前記装置は、前記プロセッサの前記ハードウェア割り込み入力ラインが割り込み可能状態になると前記割り込みルーチンを呼び出すように構成され、
前記方法は、前記装置の前記メモリにソフトウェアアプリケーションを読み込むことを含む方法であって、
前記ソフトウェアアプリケーションは、(i)前記割り込みインターフェイス回路へ送る信号を生成することによって、前記割り込みインターフェイス回路に前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にさせ、さらに、(ii)呼び出すべき無線通信機能を特定して前記割り込みルーチンに知らせることによって、前記ファームウェアモジュール内の前記無線通信機能を呼び出す命令を備える。
このようにして、本発明によれば、ハードウェア割り込みを介してファームウェアモジュールから複数の無線通信機能を呼び出すソフトウェアアプリケーションを無線通信装置に読み込むことが可能であることが、当業者には理解できるであろう。
このメカニズムによれば、ソフトウェアアプリケーション開発者がソフトウェアアプリケーションのコードを装置メーカーによって供給されるライブラリやオペレーティングシステムとリンクする必要がなくなる。ソフトウェアアプリケーション開発者は、無線通信機能がメモリ内のどこに配置されているのか知らなくても、これらを呼び出すコードを記述できるようになる。このようにすれば、開発プロセスは、より安定し、より簡単で、より確実なものになり得る。
好ましい実施形態では、前記ファームウェアモジュールは、予めリンクされたバイナリイメージすなわちモジュールである。前記ファームウェアモジュールと前記ソフトウェアアプリケーションとのリンク作業は発生しないことが好ましい。前記ファームウェアモジュールは、その一部または全部をマシンコードから直接アセンブルすることも可能であるが、通常、コンパイルされた(例えば、Cプログラミング言語からコンパイルされた)バイナリイメージであると想定される。
前記ファームウェアモジュールと前記ソフトウェアアプリケーションとのリンク時における依存関係が不要となることによって、前記ソフトウェアアプリケーションの開発中にバグが発生する可能性を低減することができる。前記ソフトウェアアプリケーションの開発中に、前記ファームウェアモジュールを再コンパイルして再リンクし続ける必要はなくなる。このような開発の連続性により、バグが発生するのを回避することができ、仮にバグが発生してもデバッグ処理の助けとなる。
前記装置メーカーが前記ソフトウェアアプリケーション開発者に提供する情報は、比較的少なくて済む。前記ソフトウェアアプリケーションを開発するにあたり、前記アプリケーション開発者には、以下でより詳細に説明するように、前記ソフトウェアアプリケーション内のコールバック機能を配置するRAM内の所定の位置すなわちアドレス等の、呼び出すべき無線通信機能を特定するメカ二ズムに関する詳細、および、機能を特定できる情報と取り得る機能パラメータの詳細が提供される。前記アプリケーション開発者には、前記ソフトウェアアプリケーションを読み込むべき所定のソフトウェア用メモリアドレスが提供される。また、前記アプリケーション開発者には、前記ソフトウェアアプリケーションが利用可能なメモリ(コード域および/またはデータ域など)の量に関連する情報が提供されることも多い。少なくともいくつかの実施形態において、(前記プロセッサや装置アーキテクチャの標準的な詳細情報に加えて)この情報があれば、前記アプリケーション開発者が前記装置用のソフトウェアアプリケーションを記述し、コンパイルし、読み込むには十分である。
前記アプリケーション開発者に、この情報の一部またはすべてを含むヘッダファイルまたはソースファイル(Cプログラミング言語の場合の例)が提供されれば、好都合であると想定される(このようなヘッダファイルまたはソースファイルは、当然のことながら、前記アプリケーション開発者をさらに支援する、他の付加的な特徴を必要に応じて含んでいてもよい)。
このようにすれば、装置メーカーが、前記無線通信機能のオブジェクトファイルやソースコードを前記ソフトウェアアプリケーション開発者に供給しないで済む。このようにすれば、装置メーカーは、前記ファームウェアモジュール内の機能の内容と位置を前記アプリケーション開発者に通知することなく変更することができ、バージョン管理を簡素化することができる。
また、装置メーカーは、ファームウェアモジュールの機密ソースコードを前記アプリケーション開発者に公開する必要がないことを意味する。
前記ファームウェアモジュールが前記装置に予め読み込まれた状態でIC装置を前記ソフトウェアアプリケーションの開発者に提供することによって、特に前記装置に前記ファームウェアモジュールの不正な読み出しを防ぐメモリ保護機能が含まれている場合は、前記オブジェクトコードにアクセスすることがさらに難しくなり、前記ファームウェアモジュールに含まれる機密情報のセキュリティを高めることができる。
前記ファームウェアモジュールを前記ソフトウェアアプリケーションにリンクする必要がないので、前記装置がエンドユーザの所有となった後であっても前記ファームウエアモジュールと前記ソフトウェアアプリケーションの一方または他方を(例えば、更新されたバージョンで)入れ換えることが可能である。
さらなる態様によれば、本発明は、IC無線通信装置を提供するものであって、前記装置は、
ハードウェア割り込み入力ラインを有するプロセッサと、
メモリと、
無線通信回路と、
割り込みインタフェース回路とを備え、
前記メモリは、(i)所定の無線プロトコルに従って無線通信回路を制御する命令と、(ii)前記ファームウェアモジュールにある無線通信機能を特定できる情報を受信し、特定された前記無線通信機能を呼び出す命令を含む割り込みルーチンとを備えたファームウェアモジュールを収容し、
前記割り込みインタフェース回路は、前記装置で実行中のソフトウェアによって生成される信号を受信する入力回路と、ソフトウェア生成された信号を前記入力回路で受信すると前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように構成された出力回路とを含み、
前記装置は、前記プロセッサの前記ハードウェア割り込み入力ラインが割り込み可能状態になると前記割り込みルーチンを呼び出すように構成される
ことを特徴とする。
ソフトウェアアプリケーションは、そのような装置の前記メモリに読み込まれ、そして、前記割込みインターフェース回路へ送る信号を生成し、無線通信機能を特定し前記割り込みルーチンに知らせることによって、無線通信機能を呼び出すことができる。
このように、いくつかの実施形態では、前記メモリは、前記割り込みインターフェイス回路へ送る信号を生成し、前記割り込みインターフェイス回路に前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にさせるとともに、呼び出すべき前記無線通信機能を特定し前記割り込みルーチンに知らせることによって、前記ファームウェアモジュールの無線通信機能を呼び出す命令を含むソフトウェアアプリケーションをさらに収容している。
前記ファームウェアモジュールは、読み出し制限および/または書き込み制限が適用されるメモリ領域に収容することができる。前記ファームウェアモジュールは、ROMに配置することができる。しかし、より好ましくは、前記ファームウェアモジュールは、前記装置上で実行される非特権コードでは読み出しおよび/または書き込みができない不揮発性メモリ(EEPROMやフラッシュメモリ等)の領域にある。読み出し保護によって、機密性保護をさらに高めることができる。書き込み保護によって、前記ファームウェアモジュールが前記装置に読み込まれた後に(前記ソフトウェアアプリケーションのバグ等によって)偶発的に、または、悪意を持って破損される危険性を減らすことができる。
しかし、前記アプリケーション開発者は、前記ファームウェアモジュールをバイナリイメージとして提供され、製造過程で、前記ファームウェアモジュールと任意のソフトウェアアプリケーションの両方を前記装置に読み込むことも可能である。こうすれば、前記装置メーカーにとって、ソースコードを前記アプリケーション開発者に提供するよりもまだ安全である。また、前記アプリケーション開発者が、前記ファームウェアモジュールをコンパイルし前記ソフトウェアアプリケーションにリンクする義務から救うこともできる。
このように、さらなる態様によれば、本発明は、IC無線通信装置を構成する方法を提供するものであって、
前記装置は、メモリと、無線通信回路と、割り込みインターフェイス回路と、ハードウェア割り込み入力ラインを有するプロセッサとを備え、
前記割り込みインタフェース回路は、前記装置で実行するソフトウェアによって生成された信号を受信する入力回路と、前記入力回路でソフトウェアが生成した信号を受信すると、前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように設けられた出力回路とを含み、
前記装置は、前記プロセッサの前記ハードウェア割り込み入力ラインが割り込み可能状態になると、割り込みルーチンを呼び出すように構成されていて、
前記方法は
(i)所定の無線プロトコルに従って無線通信回路を制御する命令と、(ii)前記ファームウェアモジュールにある無線通信機能を特定できる情報を受信し、特定された前記無線通信機能を呼び出す命令を含む割り込みルーチンとを含むファームウェアモジュールを前記装置の前記メモリに読み込むことと、
前記割り込みインターフェイス回路へ送る信号を生成することによって前記割り込みインターフェイス回路に前記プロセッサのハードウェア割り込み入力ラインを割り込み可能状態にさせ、呼び出すべき無線通信機能を特定し前記割り込みルーチンに知らせることによって、前記ファームウェアモジュールの前記無線通信機能を呼び出す命令を含むソフトウェアアプリケーションを前記装置の前記メモリに読み込むこととを含む
ことを特徴とする。
前記ファームウェアモジュールと前記ソフトウェアアプリケーションは、任意の順番で、または、実質的に同時に前記装置に読み込まれてもよい。それでも、二つを同時に読み込むことは、ソフトウェアアプリケーションとライブラリがリンクされた単一のものを(例えば、単一のバイナリイメージファイルとして)読み込むこととは本質的に異なることを理解されたい。
前記ファームウェアモジュールは、所定のファームウェア用メモリアドレスに読み込まれることが好ましい。前記ソフトウェアアプリケーションは、所定のアプリケーション用メモリアドレスに読み込まれることが好ましい。
本発明のすべての態様において、前記ファームウェアモジュールは、コンパイル・リンクされたバイナリイメージであることが好ましい。同様に、前記ソフトウェアアプリケーションも、コンパイル・リンクされたバイナリイメージであることが好ましい。前記ファームウェアモジュールと前記ソフトウェアアプリケーションは、互いにリンクされてはいないことが好ましい。前記ファームウェアモジュールは、前記ソフトウェアアプリケーションに関連するメモリアドレス情報を何も含まないことが好ましい(下記に詳細が説明されるように、無線通信機能のパラメータを前記ファームウェアモジュールに渡す等の目的で、前記ソフトウェアアプリケーションにある一つ以上のコールバック機能のアドレスはおそらく例外となる)。前記ソフトウェアアプリケーションは、前記ファームウェアモジュールに関連するメモリアドレス情報を何も含まないことが好ましい。しかしながら、いくつかの実施形態では、前記ソフトウェアアプリケーションは、例えば、コールバック機能を登録したり機能に関するパラメータとしてデータを渡したりするために、前記ファームウェアモジュールにある一つ以上の機能のエントリポイントアドレスを含む可能性があるが、その場合であっても、前記ソフトウェアアプリケーションは、前記ファームウェアモジュールにある無線通信機能のアドレスを何も含まないことが好ましい。
前記プロセッサが複数の割込み優先順位をサポートしているときは、本発明の実施形態のさらなる利点が生じる。前記無線通信機能は割り込みを介して呼び出されるので、前記無線通信機能がその呼び出しの元となった機能よりも高い優先順位で実行される可能性がある。
前記プロセッサは種類を問わないが、いくつかの好ましい実施形態では、ARM社によって設計されたプロセッサであり、ARM Cortex−Mファミリー(Cortex−M0等)に属するものである。前記割り込みインタフェース回路は、物理的および/または論理的に前記プロセッサとは別であることが好ましく、前記プロセッサによって使用されていない論理ゲートを含むことが好ましい。
前記割り込みインターフェース回路の前記入力回路は、前記プロセッサが所定のメモリアドレス、前記割り込みインターフェース回路と関係付けられたレジスタ等のレジスタ、または、RAM内の所定位置に書き込みを行なうと信号を検出するように設定されることが好ましい。前記入力回路は、所定の位置におけるデータビットや他の値の内容が変わると信号を検出するように構成すればよい。前記プロセッサによる変更を検出するためには、その位置を監視したり周期的にポーリングしたりするように構成すればよい。
前記入力回路は、例えば、ARMのThum命令セット(ARMv7−M Thum命令セット等)の命令のような、一つ以上の標準的なプロセッサ命令によって前記信号を生成することができるようなやり方で、前記信号を検出するように構成されることが好ましい。こうすれば、標準的なプロセッサコアを前記装置内で何ら変更せずに使用することができ、余分な技術的苦労を最小限にするには非常に望ましい。いくつかの好ましい実施形態では、ソフトウェアが前記装置のプロセッサに命令して、ある値を所定のメモリ位置に(STORE命令やMOVE命令を使用するなどして)書き込むことによって前記信号を生成することができる。前記ソフトウェアアプリケーションは、システムコールやスーパーバイザコールを何も含まなくても、前記ソフトウェアアプリケーションが実行中の優先順位よりも高い優先順位および/または特権レベルで無線通信機能を呼び出すことができる。
前記装置は、二つ以上など複数のプロセッサを含むことができる。いくつかの実施形態では、第一プロセッサ上で実行中のソフトウェアは、前記割込みインターフェース回路へ送る信号を生成し、前記割り込みインターフェース回路の前記出力回路は、前記第一プロセッサとは異なる第二プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように設定することができる。他の実施形態では、ただ一つのプロセッサしかない場合もある。
前記割り込みルーチンは、一つ以上の別の機能やサブルーチンを呼び出すことができる。いくつかの実施形態では、このような機能やサブルーチンは、前記割り込みルーチンの構成要素であるとみなされる場合があったり、別のものとみなされる場合があったりする。いくつかの実施形態では、前記割り込みルーチンは、以下に説明するように、コールバック機能を呼び出すなどして、前記ソフトウェアアプリケーションの命令を呼び出したり、それらの命令にジャンプすることができる。前記割り込みルーチンまたはその一部は、特定のメモリアドレスに配置され、前記ハードウェア割り込み入力ラインが割り込み可能状態になると前記プロセッサが前記割り込みルーチンに直接ジャンプするように、そのメモリアドレスを前記装置の割込みベクタテーブルに格納することができる。あるいは、前記割り込みルーチンは、例えば、ROM内、または、ブートローダーや前記ファームウェアモジュールとは別の他のバイナリモジュール内の割り込み処理機能によって、間接的に呼び出すことができる。
前記ソフトウェアアプリケーションは、任意の適切なメカニズムを使用し、呼び出すべき前記無線通信機能を特定し前記割り込みルーチンに知らせることができる。前記ソフトウェアアプリケーションは、いくつかの実施形態では前記割込みインターフェース回路へ送る信号を生成する前に、他の実施形態では前記信号を生成した後に、前記無線通信機能を特定することができる。
前記ソフトウェアアプリケーションは、呼び出すべき前記無線通信機能を特定する機能特定情報を前記割込みルーチンに渡すことが好ましい。前記機能特定情報は、任意の適切な形をとることができ、例えば、所定の対応関係またはマッピングに応じて前記ファームウェアモジュール内の無線通信機能を一意に特定するニ進数、文字列、メモリアドレス、または他の値を含むことができる。前記ファームウェアモジュール内の複数の無線通信機能は、それぞれ異なる機能特定情報と関係付けられることが多い。前記アプリケーション開発者は、前記ソフトウェアアプリケーションを開発するときに使用する、無線通信機能と機能特定情報との関連性を(例えば、文書やヘッダーファイルで)提供される場合もある。
一連の実施形態では、前記ソフトウェアアプリケーションは、例えば、プロセッサレジスタや他のハードウェアレジスタ、または、(RAM内などの)メモリアドレスといった、前記装置の共有メモリ域に前記機能特定情報を書き込むことによって、前記割り込みルーチンに前記機能特定情報を渡す。すると、前記割り込みルーチンは、前記共有メモリ域から前記機能特定情報を読み出し、前記機能特定情報と関係付けられている無線通信機能を呼び出すことができる。この関係付けは、(例えば、コンパイルされたswitch文として)前記割り込みルーチンにコンパイルするか、または、受信した機能特定情報と関係付けられた無線通信機能の前記アドレスを特定するために前記割り込みルーチンが読み込むことができる、参照テーブルのようなデータオブジェクトとして格納することができる。
さらに、共有メモリ域を利用すれば、前記ソフトウェアアプリケーションは、直接に、または前記割り込みルーチンを介して間接的に、特定された前記無線通信機能にパラメータを渡すことができる。こうして、前記ソフトウェアアプリケーションは、一つ以上のパラメータを一つ以上の共有メモリ域に書き込む命令を含み、前記割り込みルーチンや前記無線通信機能は、前記一つ以上のパラメータを前記一つ以上の共有メモリ域から読み出す命令を含むことができる。
このような各共有メモリ域のアドレスは、前記ファームウェアモジュールと前記ソフトウェアアプリケーションの両方にハードコードされてもよいし、前記ファームウェアモジュールと前記ソフトウェアアプリケーションのうちのいずれかに(例えば、前記ファームウェアモジュールにのみ)ハードコードされ、スタックを経由するか異なる共有メモリ域に格納することによって、他方に渡してもよい。例えば、両方の構成要素にハードコードされた単一の共有メモリ域を使用して、前記単一の共有メモリ域に複数の追加共有メモリ域のアドレスを書き込むことによって前記複数の追加共有メモリ域を転送することができる。こうすれば、前記ソフトウェアアプリケーションをサポートするために必要なメモリレイアウト上の制約を最小限にすることによって、装置メーカーが柔軟性を高めることができる。これは、メモリ域が前記ソフトウェアアプリケーションにハードコードされる場合、前記メモリ域を含んだヘッダファイルを前記アプリケーション開発者に提供することによって実現することができる。
別の一連の実施形態では、前記ソフトウェアアプリケーションは、前記機能特定情報をコールスタックで前記割り込みルーチンに渡す。前記ソフトウェアアプリケーションは、前記機能特定情報を前記スタックに預けると、前記割り込みルーチンが前記スタックから前記機能特定情報を読み出すことができる。前記割り込みルーチンは、前記ソフトウェアアプリケーションによって(つまり、前記ファームウェアモジュールやそれ以外のソフトウェア構成要素からではなく)生成された信号によってのみ呼び出し可能なので、前記割り込みルーチンに入る段階で前記コールスタックの状態が予知可能であることを保証する助けとなり、このおかげで、前記割り込みルーチンは前記機能特定情報が前記スタックのどこにあるのか事前に知ることができる。前記ソフトウェアアプリケーションは、前記無線通信機能用のパラメータを前記スタックに書き込むことによって前記割り込みルーチンに渡すこともできる。前記割り込みルーチンは、このようなパラメータを前記スタックから読み出し、前記無線通信機能に渡すように設定することができる。前記割り込みルーチンは、必要に応じて前記パラメータを再設定したり、さもなければ処理したりすることができる。前記無線通信機能を呼び出す前に、一部またはすべてのパラメータを前記スタックに戻すことができる。
この一連の実施形態は、前記ソフトウェアアプリケーションが、前記ソフトウェアアプリケーションと前記ファームウェアモジュールとでRAMやプログラムメモリ域を共有する必要がなく(このことを除外してはいないが)、前記ファームウェアモジュール内の機能を呼び出すことができるので、特に有益である。
いくつかの実施形態では、前記ファームウェアモジュールは、前記ソフトウェアアプリケーションのコールバック機能のアドレスを含む場合がある。「コールバック」という用語は、ここでは、前記ソフトウェアアプリケーションが割り込みを介して前記ファームウェアモジュールに制御を渡した後に、前記ファームウェアモジュールが前記ソフトウェアアプリケーションから呼び出すことができる機能を記述するために使用され、前記機能へのポインタが前記ファームウェアモジュールに動的に渡されることは必須ではない。例えば、前記アドレスが前記アプリケーション開発者に与えられていて、(適切なリンカー命令を使用するなどして)前記ソフトウェアアプリケーションが前記装置に読み込まれると前記コールバック機能が所定のアドレスに配置されるように前記ソフトウェアアプリケーションをコンパイルおよび/またはリンクすることができる。あるいは、前記ソフトウェアアプリケーションは、前記コールバック機能の前記アドレスを前記ファームウェアモジュールに渡すことができる。これは、上述のように、前記アドレスを共有メモリ域に書き込むか前記スタックに渡すことによって行なうことができるし、または、前記ファームウェアモジュールがコールバック登録機能を所定アドレスに持っていて前記ソフトウェアアプリケーションが前記コールバック機能の前記アドレスを同機能に渡すこともできる。この場合、前記コールバック登録機能の前記アドレスは、例えば、前記ソフトウェアアプリケーションをリンクする際に使用されるスタブという形で、前記ソフトウェアアプリケーションの前記開発者に提供することができる。一つのコールバック登録機能の前記アドレスを前記アプリケーション開発者に提供することにより、ファームウェア開発者が後日に前記ファームウェアモジュール内の無線通信機能を自由に再配置することが可能になるので、すべての前記無線通信機能の前記アドレスを提供するよりも好ましいことがある。
前記割り込みルーチンは、自らに機能特定情報および/または無線通信機能のパラメータを提供する、ソフトウェアアプリケーション内の機能(コールバック機能など)を呼び出すように構成することができる。これは、前記割り込みルーチンが一つ以上のメモリアドレス(ポインタなど)を前記コールバック機能に渡し、前記コールバック機能が機能特定情報および/またはパラメータを前記メモリアドレスに書き込むことによって実現することができる。すると、前記割り込みルーチンは、前記アドレスにある該データをアクセスし前記機能特定情報および/またはパラメータを特定することができる。前記無線通信機能を呼び出す前に、一部またはすべてのパラメータを前記スタックに戻すこともできる。パラメータを取り出すためにコールバックを使用すると、パックされた構造を用いてメモリ域を各種タイプに変換する必要がなく、通常の「C」言語の関数プロトタイプでパラメータをフォーマットする手法を使うことができる。したがって、この手法を使えば、所定の共有メモリ域や前記スタックにパラメータを渡すことと比較して、コーディングをより簡単にすることができる。
機能を呼び出して機能から戻るという概念がどのように実行されるかは、前記プロセッサのアーキテクチャに依存することが理解されるであろう。前記プロセッサは、いくつかの実施形態では、特定の呼び出し命令および/または戻り命令をサポートすることができるし、他の実施形態では、異なる制御フロー操作および/またはスタック操作を使用してこれらの上位概念を実行することができる。
上記の態様のいずれかの好ましい実施形態では、前記ファームウェアモジュールは、前記ファームウェアモジュールによって前記ソフトウェアアプリケーションに提供されるすべての前記無線通信機能が、前記割込みインターフェース回路へ送る信号を生成することによって呼び出すことができるように設定されている。このように、ファームウェアの無線機能を呼び出す他のメカニズムが前記ファームウェアモジュールや前記装置によってサポートされる必要はないので、静的リンクや実行時リンクにかなり依存することを回避することができ、前記装置および前記ソフトウェアアプリケーションの開発を簡素化することができる。
前記ファームウェアモジュールは、必ずしも無線通信に関連しない、前記ソフトウェアアプリケーションが呼び出すことができる他の機能、例えば、暗号化アルゴリズムを提供してもよいことが理解されるであろう。前記装置は、そのようなすべての機能を前記ソフトウェアアプリケーションによって呼び出すのは、前記割り込みインターフェイス回路へ送る信号を生成することによって行われるように構成されることが好ましい。
前記装置の実施形態は、伝統的な、完全なオペレーティングシステムを含む必要はないので、前記アプリケーション開発者は、前記装置メーカーによって供給される専用オペレーティングシステムとどのようにインターフェイスをとるか学習する必要はなく、前記ソフトウェアアプリケーションを前記プロセッサアーキテクチャのネイティブアプリケーションとして自由に開発することができる。この点は、前記アプリケーション開発者にとって、特に前記プロセッサが当該技術分野でよく知られている場合、非常に魅力的な特徴である。
前記装置が前記ファームウェアモジュールに加えてハードウェア抽象化層を有する場合、前記ソフトウェアアプリケーションは、この層と直接インターフェースをとることができる。アプリケーション固有のドライバも前記装置に読み込むことができる。
前記装置を構成することには、前記ソフトウェアアプリケーションをコンパイルするときの前記無線通信機能特定情報と前記無線通信機能との対応関係を使用することを含めることができる。前記ソフトウェアアプリケーションをコンパイルしたり読み込んだりすることは、前記所定のソフトウェアアプリケーション用メモリアドレスを利用することができる。いくつかの実施形態では、前記装置を構成することには、例えばヘッダファイルとして、スーパーバイザーコール番号と無線通信機能との対応関係を受信すること、および/または、前記所定のソフトウェアアプリケーション用メモリアドレスを受信することを含めることができる。そして、そのような情報は、前記ソフトウェアアプリケーションをコンパイルするときに使用することができる。
前記プロセッサは、複数の割り込み優先度をサポートしていることが好ましい。いくつかの実施形態では、前記ファームウェアモジュールの一部の機能は比較的高い優先度が割り当てられ、他の機能は比較的低い優先度が割り当てられる。緊急度の高い無線通信動作に関連する機能には、比較的高い優先度が割り当てられることが好ましい。
好ましい実施形態では、前記ソフトウェアアプリケーションは、前記ファームウェアモジュールが、前記ソフトウェアアプリケーション内の機能をそれらがどこに配置されているのか事前に知らなくても呼び出すことができるベクタテーブルを含んでいる。前記ファームウェアモジュールは、割り込みを受信すると、前記ソフトウェアアプリケーション内の機能を起動するように構成されていることが好ましい。このような割り込みは、例えば、動作感知器のような周辺機器から、生じる可能性がある。前記ファームウェアモジュールは、前記装置が無線データパケットを受信すると、前記ソフトウェアアプリケーション内の機能を呼び出すように構成することができる。
前記ソフトウェアアプリケーションは、以下でより詳しく説明するように、前記ファームウェアモジュールによって転送される割り込みを処理するように構成されていることが好ましい。
前記ソフトウェアアプリケーションは、一部のイベント駆動型機能を比較的高い優先度で実行し、所定の他の機能を比較的低い優先度で実行することができる。前記ソフトウェアアプリケーションが使用する優先順位は、前記ファームウェアモジュールが使用する優先順位と交互配置されることが好ましい。最も高いファームウェア優先順位は、前記ファームウェアモジュールで実行される、緊急度の高い無線通信動作が前記ソフトウェアアプリケーションよりも常に優先されるように、最も高いソフトウェアアプリケーション優先順位よりも高いことが好ましい。こうすれば、前記ソフトウェアアプリケーションの不注意なプログラミングに対して保護することができる。
前記ファームウェアモジュールと前記ソフトウェアアプリケーションは、それぞれ割り込みベクタテーブルを有することができる。二つのテーブルは、割り込みベクタアドレスのオフセットが互いに同じものを使用することが好ましい。前記ファームウェアモジュールのベクタテーブルにある割り込みベクタアドレスのオフセットは(したがって、二者が同じオフセットを使用している場合、前記ソフトウェアアプリケーションのベクタテーブルも)、通常、前記プロセッサアーキテクチャによって固定されている。前記装置は、割り込みを処理する際に、前記ファームウェアモジュールのベクタテーブルを(すなわち、システム割り込みベクタテーブルとして)使用するように構成されていることが好ましい。
しかし、前記ファームウェアモジュールは、自ら処理するようにはプログラムされていないすべての割り込みが前記ソフトウェアアプリケーションに渡されるように構成されていることが好ましい。これは、前記ファームウェアモジュールが、自分が特定の割込みを処理するように構成されていないときは常に前記ソフトウェアアプリケーションのベクタテーブル内の対応するオフセットに含まれるアドレスに処理をブランチさせることによって、実行される。これは、前記ソフトウェアアプリケーションが所定のメモリアドレスに読み込まれるときに可能となるが、その理由は、このようにすれば、前記ソフトウェアアプリケーションが前記装置に読み込まれると、前記ファームウェアモジュールは、前記ソフトウェアアプリケーションのベクタテーブルがどこにあるのかを事前に知ることができるからである。
例えば、いくつかの実施形態では、リセット割り込み処理部アドレスは、コンパイラによって、常に、オフセット=0に配置されている。したがって、前記ファームウェアモジュールのベクタテーブル内の前記RESET処理部アドレスは、メモリ内でアドレス 0x0000 0000 + 0 = 0x0000 0000 となる。前記ソフトウェアアプリケーションのベクタテーブル内の前記RESET処理部アドレスは、アドレス CLENR0 + 0 = CLENR0 に存在し、ここで、CLENR0は、前記ソフトウェアアプリケーションが配置されている基底メモリアドレスである。
この割り込み転送メカニズムがあると、前記ソフトウェアアプリケーションが、前記装置にファームウェアモジュールが存在しない場合とほぼ同じようにハードウェア割り込みを処理するようにプログラムすることができるので便利である。前記ファームウェアモジュールは、割り込みを受信する目的では、前記ソフトウェアアプリケーションの前記開発者、および、そのコンパイルに見えないようにすることができる。前記割り込み転送は、直接のハードウェア割り込みと比較して、約30未満の命令または約3マイクロ秒未満の待ち時間しか追加しないように実行されることが好ましい。
いくつかの実施形態では、前記ファームウェアモジュールは、実質的に前記ファームウェアモジュールを無効にするメカニズムを備えている。このような無効化は、前記ファームウェアモジュールの呼び出しを介して(割り込みインターフェイス回路のメカニズムを使用するのが好ましい)行なうことができる。前記ファームウェアモジュールを無効にすると、前記ファームウェアモジュールは、前記ソフトウェアアプリケーションにリソースを戻すために、プロトコルスタックをリセットして、メモリ保護(存在する場合)を無効にすることができる。無効にした場合、前記ファームウェアモジュールは、(そうでなければ自らが処理したであろう)すべての割り込みを前記ソフトウェアアプリケーションに転送することが好ましい。
前記プロセッサは、一つの割り込み優先順位から別の優先順位へシームレスに移行するようサポートすることが好ましい。これは、テールチェインと呼ばれることがある。こうすれば、緊急度の高い無線通信機能を必要時に優先させることができるように、前記ソフトウェアアプリケーションと前記ファームウェアモジュールの間で(およびその逆に)制御を転送する洗練された手段が提供される。
前記装置は、メモリアクセス命令をインターセプトするように構成されたメモリ保護回路を備えていることが好ましい。この回路は、前記プロセッサと前記メモリとの間に配置することができる。これは、メモリアクセス命令の位置(すなわち、前記プロセッサが前記命令を読み出した位置)を使用して、アクセスを許可するかどうかを決定することができる。前記メモリ保護回路は、前記ソフトウェアアプリケーションが前記ファームウェアモジュールを読み出したり、および/または、上書きしたりするのを防止するように構成されていることが好ましい。
このようなメモリ保護があれば、前記ファームウェアモジュールの機密情報が前記ソフトウェアアプリケーションの前記開発者によって読み出されるのを保護するという利点を提供することができる。また、前記ソフトウェアアプリケーションのプログラミングエラーによる潜在的損傷を最小限に抑えるとともに、前記ソフトウェアアプリケーションにあるバグの検出および訂正を助けることができる。前記メモリ保護回路は、前記ファームウェアモジュールと関係付けられたRAMが前記ソフトウェアアプリケーションによって読み出されたり、および/または、書き込まれたりするのを保護するように構成することができる。
前記プロセッサと、前記メモリと、前記無線通信回路とは、単一の半導体層、例えば、シリコンチップに集積されていることが好ましい。しかし、代わりに、多層モジュール内に集積されていてもよい。
前記メモリは、EEPROMやフラッシュメモリなどの不揮発性メモリであることが好ましい。前記ファームウェアモジュールと前記ソフトウェアアプリケーションを前記メモリから直接に実行することができるように、ランダムアクセス読み出しをサポートしていることが好ましい。
当業者は、前記装置が、通常は、RAMなどの揮発性メモリも含んでいることを理解するであろう。一つ以上の周辺機器を追加で備えることができる。電力およびクロック信号を受信する接続部を有することもできる。アンテナとの接続部を有することもできる。シリアル接続部のような一つ以上の入力インタフェースおよび/または出力インタフェースを有することもできる。
本明細書に記載の一つの態様又は実施形態の随意の、または、好ましい特徴は、適切である限り、他の任意の態様または実施形態にも適用することができる。
ほんの一例として、添付図面を参照しながら、本発明の特定の好ましい実施形態を説明することにする。
本発明を実施するマイクロコントローラの概略図である。 マイクロアーキテクチャ内の主要なソフトウェア構成要素を示す概略図である。 マイクロコントローラの模式的なメモリマップである。 異なるプロセッサ割り込み優先順位の象徴的な図である。 さまざまな割り込みのシナリオを示す象徴的な図である。 ソフトウェアアプリケーションがファームウェアモジュールのある機能を呼び出す場合を示すソースコード要素の象徴的な図である。 ソフトウェアアプリケーションが内部機能を呼び出すためにシステムコールを使用する場合を示すソースコード要素の象徴的な図である。 ソフトウェアアプリケーションがハードウェア割り込みを受信する場合を示すソースコード要素の象徴的な図である。
図1は、無線オンチップとして知られることもあるICマイクロコントローラ1を示しており、抵抗・コンデンサ発振器を有し、および/または、オフチップ水晶発振器(図示せず)からの入力を受信することができるクロック回路3と、電力管理回路5と、プロセッサ7(ATM Cortex−M0など)と、割込みインターフェース回路8と、メモリ保護回路9と、RAM11と、不揮発性フラッシュメモリ13と、一つ以上の周辺機器15と、無線通信回路17と、入出力回路19とを備えている。
プロセッサ7と、RAM11と、フラッシュメモリ13とは、接続線およびバス(図示せず)を使用するなど、従来のやり方で相互接続されている。メモリ保護回路9は、プロセッサ7からRAM11およびフラッシュメモリ13への命令をインターセプトするように置かれている。割り込みインタフェース回路8は、プロセッサ7の予備ハードウェア割り込み入力とメモリバスとに接続されている。
製品に設置する場合、マイクロコントローラ1は、電源、無線アンテナ、水晶発振器、コンデンサ、センサ、オーディオ/ビジュアル出力デバイス、等(図示せず)の多くの外付け構成要素に接続することができる。
図2は、ソフトウェアアーキテクチャの主要構成要素を示している。これらには、ARM Cortexマイクロコントローラソフトウェアインターフェイス規格などの随意のハードウェア抽象化層21と、ファームウェアモジュール23と、ドライバ25と、ソフトウェアアプリケーション27とが含まれる。ドライバ25は、ソフトウェアアプリケーション27専用とすることもできる。
ファームウェアモジュール23は、多くの組込みソフトウェアブロックを含む、リンクされたバイナリアプリケーションである。無線プロトコルブロック31は、ブルートゥース低エネルギーなどの一つ以上の無線プロトコルスタックを実行する。ライブラリ35は、共有ハードウェアリソース管理と、乱数生成、割り込みや優先度の構成、(例えば、周辺機器の起動と停止を行なうための)電源管理、暗号化機能などの機能とを提供する。ファームウェアマネジャー37は、ファームウェアモジュールの起動と停止、および無線プロトコルスタックの起動と停止をサポートする。
ファームウェアモジュール23は、システムベクタテーブルを所有しており、すべてのリセット後のエントリポイントである。
ファームウェアモジュール23用のアプリケーションプログラミングインタフェース(API)29は、ソフトウェアアプリケーション27がファームウェアモジュール23内の機能を呼び出すことを可能にするものであって、すべて割り込みインターフェイス回路8への信号を利用して実行される。各ファームウェア機能は、ユニークな機能番号と関係付けられている。このマッピング情報は、各機能を正常に呼び出すことができるようにソフトウェアアプリケーション27の開発者に提供することができる。その内容は、ファームウェアモジュール23とソフトウェアアプリケーション27をそれぞれコンパイルするときに両者に組み込むことができる。 RAM11内の所定の共有アドレスは、ソフトウェアアプリケーション27によって書き込むことができ、ファームウェアモジュール23によって読み出すことができる。このアドレスを使えば、ソフトウェアアプリケーション27は、ファームウェアモジュール23に機能番号を渡すことができる。
ファームウェアモジュール23は、ソフトウェア割り込みを利用してソフトウェアアプリケーション27にイベントを伝達することができ、該ソフトウェア割り込みの内容は、ソフトウェアアプリケーション27によって読み出される(ポーリングされる)までバッファリングされる。この読み出しは、(event_get()などの)APIコールを介して行われる。
ソフトウェアアプリケーション27は、マイクロコントローラ1のハードウェアを直接に、または、ファームウェアモジュール23を利用してハードウェアを間接的に使用することができることに加えて、アプリケーション専用ドライバ25を用いるなどによってハードウェア抽象化層21を介してアクセスすることができる。
図3は、RAM11とフラッシュメモリ13が、ファームウェアモジュール23と(アプリケーション専用ドライバ25を含む)ソフトウェアアプリケーション27の間でどのように共有されるのかを示している。 ARM Cortex−M0プロセッサ7を使用するとき、フラッシュメモリ13は、ゼロ(0x0000 0000)から上方向にその容量である SizeOfProgMemまでアドレスを割り当てられ、RAM11は、0x2000 0000 から上方向に(0x2000 0000 + SizeOfRAM)までアドレスが割り当てられる。もちろん、他の実施形態では、異なるアドレス値を使用することができる。
フラッシュメモリ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 + SizeOfRAMから下方向に拡大する。呼び出しスタックに割り当てられるメモリは、ソフトウェアアプリケーション27とファームウェアモジュール23の両方のニーズを満たすのに十分な大きさである必要がある。所定の共有メモリアドレスは、RAM11の領域1であってもよいし、RAM11内で領域0と領域1の外にある別の位置に配置することもできる。
ファームウェアモジュール23のコールスタック使用要件は、装置1に関しては装置メーカーが公開することができる。そうすれば、ソフトウェアアプリケーション27の開発者は、初期スタックポインタを定義し、ファームウェアモジュール23および自分のソフトウェアアプリケーション27の両者に十分なスタックメモリを予約する必要がある。ファームウェアモジュール23は、リセット時にメインスタックポインタを初期化することになる。
メモリ保護回路9は、プロセッサ7からフラッシュメモリ13およびRAM11へのすべてのメモリアクセス要求(例えば、読み出し要求)をインターセプトするように設定されており、アクセス要求命令のソースを(例えば、要求が、ファームウェアモジュール23からか、またはソフトウェアアプリケーション27からか)決定する。また、さまざまなソースについてそれぞれのアクセス権を指定している(例えば、一つ以上の専用レジスタに格納されている)メモリ保護構成データにアクセスし、それに応じてアクセス要求を許可または拒否する。
本発明のいくつかの好ましい実施形態では、ソフトウェアアプリケーション27は、フラッシュメモリ領域0とRAM領域0への読み出しアクセスおよび/または書き込みアクセスを拒否される。こうすることによって、ファームウェアモジュール23の機密性を保護し、ソフトウェアアプリケーション27がファームウェアモジュール23に割り当てられたメモリ位置に不用意に、または、悪意を持って書き込みを行なうのを防止することができ、それにより堅牢性とセキュリティが向上する。ソフトウェアアプリケーション用フラッシュメモリ領域1も、例えば、外部デバッグインタフェースを経由したリードバックに対して保護するなどの目的で読み出しアクセスから保護することができる。
このことは、ソフトウェアアプリケーション27がRAM領域0への書き込みアクセス権を持っていないので、初期スタックポインタをこの領域に置くことはできないことを意味する。本発明の他の実施形態では、呼び出しスタックは二つの部分からなり、ファームウェアモジュール23のコールスタックはRAM領域0に置き、ソフトウェアアプリケーション27のコールスタックはRAM領域1に置くことができる。
割り込みインタフェース回路8は、プロセッサ7がアドレス指定可能な単一ビットレジスタ(図示せず)を備えている。このレジスタの変化(例えば、値の切り替え、または所定の値への変化)を検出すると、該回路8は、プロセッサ7へのハードウェア割り込みラインを割り込み可能状態にするように設定されている。
図4は、ARM Cortex−M0プロセッサによって提供され、矢印の方向に優先度が高くなる、さまざまな割り込みレベル41と、これらの優先順位が、ファームウェアモジュール23およびソフトウェアアプリケーション27の使用する割り込みレベル43にどのようにマッピングされるかとを示している。
ソフトウェアアプリケーション27のバックグラウンド実行状態であるメインの上には、次のように使用される四つの割り込み優先度として、優先度の昇順に、ソフトウェアアプリケーション低優先度と、ファームウェアモジュール低優先度と、ソフトウェアアプリケーション高優先度と、ファームウェアモジュール高優先度とが存在する。高優先度のソフトウェアアプリケーション割り込みは、低遅延が要求される、緊急度の高い割り込みに使用される。
図5(a)〜(c)は、起こり得る優先順位変化のさまざまな例を示している。
図5(a)は、バックグラウンドで実行中のソフトウェアアプリケーション27のメイン処理が、シリアルドライバなど低優先度ソフトウェアアプリケーションによって割り込まれる場合を示している。すると、ソフトウェアアプリケーション27は、ファームウェアモジュール23内の機能と関係付けられた機能番号を所定の共有メモリアドレスに書き込み、そして割り込みインタフェース回路8がプロセッサ7にハードウェア割り込みを通知するように、割り込みインタフェース回路8内のアドレス指定可能な単一ビットレジスタに書き込みを行なうことによって該機能を呼び出す。ファームウェアモジュール23内の割り込み処理機能は、(この特定の割り込み処理機能に対して選択されたデフォルトの優先順位である)低優先度ファームウェアの優先順位で実行され、所定の共有メモリアドレスから機能番号を読み出し、指定された機能を(依然として低優先度ファームウェアの優先順位で)呼び出すことによって、割り込みに応答する。これが完了すると、アプリケーション低優先順位に実行が戻り、ソフトウェアアプリケーション27に制御が戻される。最後に、ソフトウェアアプリケーション27は動作を完了し、メインのバックグラウンド優先順位に実行が戻る。
図5(b)は、ソフトウェアアプリケーション27のメイン実行状態からファームウェアモジュール23へのAPI呼び出しが行なわれる場合を示している。これは、ソフトウェアアプリケーション27が割り込みインターフェイス回路8に通知して割り込みを発生させることによって行なわれる。この例では、ファームウェア低優先度でのAPI機能の実行は、やがて高優先度ソフトウェアアプリケーション例外によって割り込みを受ける。これは、例えば、センサ入力の処理を行なうことが考えられる。これによって、ファームウェアモジュール23がセンサ入力からの割り込みをソフトウェアアプリケーション27に転送するようになることもある。ソフトウェアアプリケーション27がその高優先度の実行を終了すると、ファームウェアへのAPI呼び出しは、最終的にバックグラウンドのメイン処理に戻るまで、低優先度ファームウェアの優先順位で継続することができる。
図5(c)は、バックグラウンドで実行中のソフトウェアアプリケーション27のメイン処理がファームウェアモジュール23による高優先度の割り込みを受けた場合を示している。これは、着信無線パケットのような、装置1が応答する必要がある、緊急を要する無線通信割り込みに起因する可能性がある。ファームウェアモジュール23内の割り込みサービスルーチンは、割込みインターフェース回路8に通知し、(所定の共有メモリアドレスに機能番号を書き込み、割り込みインターフェイス回路8内のアドレス指定可能な単一ビットレジスタに書き込みを行なうことによって)低優先度のファームウェア割り込みを発生させ、特定の機能が必要であることを、より高い優先順位の無線プロトコルスタックに通知する。高優先度のルーチンが完了すると、プロセッサ7のテールチェイン機能によって、低優先度のルーチンが(すなわち、その間にバックグラウンドのメイン優先順位に戻ることなく)直ちに実行される。次に、低優先度のファームウェアルーチンが、割り込みを発生させて、無線データパケットが受信されたことを(割り込み転送を介して)ソフトウェアアプリケーション27に通知する。この割り込みは、低優先度のファームウェアモジュールルーチンの完了後にチェインされる。この例では、ソフトウェアアプリケーション27は、次に、図5(a)のように、割り込みインターフェイス回路8に通知することによってファームウェアモジュール23へのAPI呼び出しを行なう。最後に、ソフトウェアアプリケーションの低優先度動作が完了し、メインの優先順位に実行が戻る。
図6〜図8は、ソフトウェアアプリケーション27とファームウェアモジュール23との間で制御を渡す別のやり方を示している。説明を分かりやすくするために、C言語のような擬似コードの抜粋を用いている。実際には、プロセッサ7によってフラッシュメモリ13から機械コード命令が実行される。図中で番号の付いた矢印は、一連の実行手順を示している。
図6は、ソフトウェアアプリケーション27がAPI29を介してファームウェアモジュール23の「radio_transmit」機能を呼び出す場合を示している。ソフトウェアアプリケーション27は、まず、radio_transmit機能(ID_RADIO_TRANSMIT)のユニークな機能特定情報をRAM11内の共有メモリ位置(FUNCTION_TO_INVOKE)に書き込む。共有メモリ位置の特定情報とアドレスは、装置メーカーによってソフトウェアアプリケーション27の開発者に供給されるファームウェアヘッダファイルを使用してインポートされる。次に、ソフトウェアアプリケーション27は、アドレスINTERRUPT_INTERFACE_REGISTER(同様に、ヘッダファイルに定義してある)に書き込むことによって、割り込みインタフェース回路8内のレジスタのバイナリフラグを切り替える。
割り込みインタフェース回路8は、ハードウェア割り込みを割り込み可能状態にすると、プロセッサが、(システム割り込みベクタテーブルとして機能する)ファームウェアモジュール割り込みベクタテーブルを介して、当該割り込み処理ルーチンを呼び出す。割り込み処理ルーチンは、ソフトウェアアプリケーション27によって呼び出された機能と関係付けられた特定情報を共有メモリ位置から読み出す。同様に、別の共有メモリ位置を用いて、ソフトウェアアプリケーション27からの引数やパラメータを受信することもできる。あるいは、そのような引数は、ハードウェアのメモリレジスタを介して、または、コールスタックを介して渡すことができる。
割り込み処理ルーチンは、radio_transmitというファームウェア機能を呼び出す。代わりに、他の無線制御機能(例えば、無線でデータを送信する命令)やファームウェア管理機能(例えば、ファームウェアモジュールを無効にする機能)やライブラリ機能(例えば、乱数を生成する機能)のような他のファームウェア機能を呼び出すこともできる。機能が実行されると、割り込みが終了し、ソフトウェアアプリケーション27に制御が戻る。レジスタ内やコールスタック上の戻り値をソフトウェアアプリケーション27に利用可能とすることもできる。
図7は、ソフトウェアアプリケーション27がハードウェア割り込みを介して自分の機能のいずれかを呼び出す場合を示している。実行優先順位を低優先度から高優先度に変更するために、このようなことをする場合がある。図6の状況と同様に、ソフトウェアアプリケーション27は、割り込みインターフェイス回路8を用いてハードウェア割り込みを発生させ、ファームウェアモジュール27内の割り込み処理ルーチンに実行が渡るようにする。ただし、この場合、命令で渡す機能特定情報は、ソフトウェアアプリケーションが自ら使用するために予約されている範囲内のものに限られる。このようにして、ファームウェアモジュール23は、潜在的に前の動作とは異なる優先順位で、ソフトウェアアプリケーション27内の処理ルーチン機能(app_systemcall_function())に実行をブランチさせる。
図8は、(例えば、無線回路17や周辺機器15からの)異なるハードウェア割り込みをソフトウェアアプリケーション27がどのように受信することができるのかを示している。割り込みを受信すると、ベクタテーブルによってファームウェアモジュール23内の割り込み処理ルーチンに処理が渡る。これは、ファームウェアモジュール23が有効になっているかどうか、および、ファームウェアモジュール23が処理するように設定されている割り込みであるかどうかをチェックする。そうである場合、ファームウェアモジュール23は、割り込みを処理する。そうでない場合、ここで示したように、ファームウェアモジュール23は、ソフトウェアアプリケーション27の割り込み処理ルーチンへ制御を渡す。ファームウェアモジュール23は、(CLENR0にある)ソフトウェアアプリケーション用ベクタテーブルの位置が予め決められているので、このルーチンをどこで検索するか知っており、このベクタテーブル内のオフセットは、ファームウェアモジュール用ベクタテーブル内のオフセットと同じである。
ファームウェアモジュール23は、自分が処理するように構成されている割り込みでない限り、ソフトウェアアプリケーション27に割り込みを転送するようにデフォルトで設定されている。そして、ファームウェアモジュール23が(例えば、ファームウェアマネジャー37への適切なAPI呼び出しを介し)ソフトウェアアプリケーション27によって無効にされている場合、ファームウェアモジュールは、すべての割り込みをソフトウェアアプリケーション27に転送する。
図9は、RAM内の共有メモリ位置の使用を必要としない、無線通信機能を呼び出すための別のメカニズムを示している。いくつかの実施形態は、図6を参照して説明したメカニズムの代わりに、または併用して、このメカニズムを使用することができる。ソフトウェアアプリケーション27は、フラッシュメモリ13の所定アドレスにおいてコールバック機能を含んでいる。ファームウェアモジュールをコンパイル・リンクした時点で所定アドレスが既知のものとなっているので、ファームウェアモジュール23は、このコールバック機能にブランチすることができる。
ファームウェアモジュールの無線通信機能を呼び出すために、ソフトウェアアプリケーションは、まず、割り込みインタフェース回路8のアドレス指定可能な単一ビットレジスタに書き込みを行なうことで、割り込みを発生させる。すると、ファームウェアモジュール23の割り込み処理ルーチンが、ソフトウェアアプリケーション27のコールバック機能を呼び出し、functionID変数へのポインタと、パラメータのデータブロックまたはデータ構造へのポインタとを渡す。すると、コールバック機能は、所望の無線通信機能の特定情報を、functionIDポインタが指し示すメモリアドレスに書き込み、また、何かパラメータがあればParamsポインタが指し示すアドレスに書き込む。次に、ファームウェアモジュール23の割り込み処理ルーチンに制御が戻り、該ルーチンは、機能特定情報を用いて、ファームウェアモジュール23内のどの無線通信機能を呼び出すかどうかを決定する。該ルーチンは、必要に応じてパラメータを(Paramsの指し示すメモリアドレスからスタックに移動するなどして)解析し、その無線通信機能を呼び出す。
図10は、いくつかの実施形態が、本明細書に記載した他のメカニズムと併用して、または代わりとして、使用することができる、さらに別のメカニズムを示している。これは、機能特定情報がポインタを使用して渡されないことを除いて、図9と同じであるが、その代わり、ソフトウェアアプリケーション27によってコールスタックに転送される。
この例では、ソフトウェアアプリケーション27は、まず、所望の無線通信機能の特定情報をスタックに書き込み、その後、割り込みインタフェース回路8のアドレス指定可能な単一ビットレジスタに書き込みを行なうことによって、割り込みを発生させる。ファームウェアモジュール23の割り込み処理ルーチンは、コールスタックから機能特定情報を読み込む。次に、ソフトウェアアプリケーション27のコールバック機能を呼び出し、パラメータのデータブロックへのポインタを渡す。コールバック機能は、何か無線通信機能用パラメータがあればポインタの指し示すアドレスに書き込む。すると、割り込み処理ルーチンは、示されたパラメータ付きでその無線通信機能を呼び出す。
図11は、いくつかの実施形態が、本明細書に記載した他のメカニズムと併用して、または代わりとして、使用することができる、さらに別のメカニズムを示している。このメカニズムでは、共有RAMの位置も何らかのコールバック機能も必要としない。このメカニズムを使用する実施形態は、(ソフトウェアアプリケーションが読み込まれる基底アドレスはおそらく別として)潜在的に、ファームウェアモジュールとソフトウェアアプリケーションとの開発者同士で(RAMまたはフラッシュメモリの)メモリ位置を共有しなくても済むので、好ましい場合がある。
ソフトウェアアプリケーション27は、所望の無線通信機能の特定情報とその無線通信機能に送信される何らかのパラメータをコールスタックに転送する。次いで、割り込みインタフェース回路8のアドレス指定可能な単一ビットレジスタに書き込みを行なうことによって、割り込みを発生させる。すると、ファームウェアモジュール23の割り込み処理ルーチンは、スタックから特定情報およびパラメータを読み出し、必要に応じてパラメータを処理すると(例えば、必要に応じてそれらを並べ替え、コールスタックに転送して戻す)、特定情報によって特定された無線通信機能を呼び出す。
これらすべてのさまざまな手法で、IC無線通信装置を構成し、安全かつ便利に利用することができる。

Claims (37)

  1. IC無線通信装置を構成する方法であって、
    前記装置は、メモリと、無線通信回路と、割り込みインターフェイス回路と、ハードウェア割り込み入力ラインを有するプロセッサとを備え、
    前記割り込みインタフェース回路は、前記装置で実行中のソフトウェアによって生成される信号を受信する入力回路と、ソフトウェア生成された信号を前記入力回路で受信すると前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように設定された出力回路とを備え、
    前記メモリは、(i)所定の無線プロトコルに従って無線通信回路を制御する命令と、(ii)前記ファームウェアモジュールにある無線通信機能の特定情報を受信すると、特定された前記無線通信機能を呼び出す命令を備えた割り込みルーチンとを含むファームウェアモジュールを収容し、
    前記装置は、前記プロセッサの前記ハードウェア割り込み入力ラインが割り込み可能状態になると前記割り込みルーチンを呼び出すように構成され、
    前記方法は、前記装置の前記メモリにソフトウェアアプリケーションを読み込むことを含む方法であって、
    前記ソフトウェアアプリケーションは、(i)前記割り込みインターフェイス回路へ送る信号を生成することによって、前記割り込みインターフェイス回路に前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にさせ、さらに、(ii)呼び出すべき無線通信機能を特定し前記割り込みルーチンに知らせることによって、前記ファームウェアモジュール内の前記無線通信機能を呼び出す命令を備える
    ことを特徴とする、IC無線通信装置を構成する方法。
  2. IC無線通信装置を構成する方法であって、
    前記装置は、メモリと、無線通信回路と、割り込みインターフェイス回路と、ハードウェア割り込み入力ラインを有するプロセッサとを備え、
    前記割り込みインタフェース回路は、前記装置で実行するソフトウェアによって生成された信号を受信する入力回路と、前記入力回路でソフトウェアが生成した信号を受信すると、前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように設けられた出力回路とを含み、
    前記装置は、前記プロセッサの前記ハードウェア割り込み入力ラインが割り込み可能状態になると、割り込みルーチンを呼び出すように構成されていて、
    前記方法は
    (i)所定の無線プロトコルに従って無線通信回路を制御する命令と、(ii)前記ファームウェアモジュールにある無線通信機能の特定情報を受信し、特定された前記無線通信機能を呼び出す命令を含む割り込みルーチンとを含むファームウェアモジュールを前記装置の前記メモリに読み込むことと、
    前記割り込みインターフェイス回路へ送る信号を生成することによって、前記割り込みインターフェイス回路に前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にさせるとともに、呼び出すべき無線通信機能を特定し前記割り込みルーチンに知らせることによって、前記ファームウェアモジュールの前記無線通信機能を呼び出す命令を含むソフトウェアアプリケーションを前記装置の前記メモリに読み込むこととを含む
    ことを特徴とする、IC無線通信装置を構成する方法。
  3. 前記ファームウェアモジュールは、予めリンクされたバイナリイメージである
    ことを特徴とする、請求項1または請求項2に記載の方法。
  4. さらに、前記ソフトウェアアプリケーションを所定のアプリケーションメモリアドレスに読み込むことを含む
    ことを特徴とする、請求項1乃至請求項3のいずれかに記載の方法。
  5. 前記ソフトウェアアプリケーションは、前記ファームウェアモジュールのメモリアドレスに関して何もデータを含まない
    ことを特徴とする、請求項1乃至請求項4のいずれかに記載の方法。
  6. 前記前記割り込みインタフェース回路の前記入力回路は、前記プロセッサが所定のメモリアドレスまたはレジスタに書き込みを行なうと、信号を検出するように設定される
    ことを特徴とする、請求項1乃至請求項5のいずれかに記載の方法。
  7. 前記ソフトウェアアプリケーションは、呼び出すべき前記無線通信機能を特定する機能特定情報を前記割り込みルーチンに渡す命令を含む
    ことを特徴とする、請求項1乃至請求項6のいずれかに記載の方法。
  8. 前記ソフトウェアアプリケーションは、前記装置の共有メモリ位置に前記機能特定情報を書き込む命令を含み、前記割り込みルーチンは、前記共有メモリ位置から前記機能特定情報を読み出す命令を含む
    ことを特徴とする、請求項7に記載の方法。
  9. 前記共有メモリ位置のアドレスは、前記ファームウェアモジュールと前記ソフトウェアアプリケーションにハードコードされている
    ことを特徴とする、請求項8に記載の方法。
  10. 前記ソフトウェアアプリケーションは、前記機能特定情報をコールスタックで前記割り込みルーチンに渡す命令を含む
    ことを特徴とする、請求項7に記載の方法。
  11. 前記ソフトウェアアプリケーションは、前記無線通信機能用のパラメータをコールスタックに書き込むことによって前記割り込みルーチンに渡す命令を含む
    ことを特徴とする、請求項1乃至請求項10のいずれかに記載の方法。
  12. 前記割り込みルーチンは、前記パラメータを前記スタックから読み出し、前記無線通信機能に渡す命令を含む
    ことを特徴とする、請求項11に記載の方法。
  13. 前記ファームウェアモジュールは、前記ソフトウェアアプリケーションのコールバック機能のアドレスを含み、前記割り込みルーチンは、一つ以上のメモリアドレスを前記コールバック機能に渡し、前記一つ以上のメモリアドレスからデータを読み出すことによって、前記コールバック機能から機能特定情報または機能パラメータを受け取る命令を含む
    ことを特徴とする、請求項1乃至請求項12のいずれかに記載の方法。
  14. 前記ファームウェアモジュールは、前記ファームウェアモジュールによって前記ソフトウェアアプリケーションに提供されるすべての前記無線通信機能が、前記割込みインターフェース回路へ送る信号を生成することによって呼び出すことができるように設定される
    ことを特徴とする、請求項1乃至請求項13のいずれかに記載の方法。
  15. 前記プロセッサは、複数の割り込み優先度をサポートしており、前記装置は、前記ファームウェアモジュールの一部の機能を比較的高い優先度で実行し、前記ファームウェアモジュールの他の機能を比較的低い優先度で実行するように設定されている
    ことを特徴とする、請求項1乃至請求項14のいずれかに記載の方法。
  16. 前記装置は、前記ソフトウェアアプリケーションの一部の機能を比較的高い優先度で実行し、前記ソフトウェアアプリケーションの他の機能を比較的低い優先度で実行し、前記ソフトウェアアプリケーションの前記高い優先度と前記低い優先度が、前記ファームウェアモジュールの前記高い優先度と前記低い優先度と交互配置されるように設定されている
    ことを特徴とする、請求項15に記載の方法。
  17. 前記ファームウェアモジュールの最も高い優先順位は、前記ソフトウェアアプリケーションの最も高い優先順位よりも高い
    ことを特徴とする、請求項16に記載の方法。
  18. 前記ファームウェアモジュールと前記ソフトウェアアプリケーションは、それぞれ割り込みベクタテーブルを有し、前記装置は、割り込みを処理する際に、前記ファームウェアモジュールの前記ベクタテーブルを使用するように構成されていて、前記ファームウェアモジュールは、自ら処理するようにはプログラムされていないすべての割り込みが前記ソフトウェアアプリケーションに渡されるように構成されている
    ことを特徴とする、請求項1乃至請求項17のいずれかに記載の方法。
  19. 前記装置は、メモリアクセス命令をインターセプトして、前記ソフトウェアアプリケーションが前記ファームウェアモジュールを読み出したり上書きしたりするのを防止するように設定されたメモリ保護回路を備えている
    ことを特徴とする、請求項1乃至請求項18のいずれかに記載のデバイス。
  20. ハードウェア割り込み入力ラインを有するプロセッサと、
    メモリと、
    無線通信回路と、
    割り込みインタフェース回路とを備えるIC無線通信装置であって、
    前記メモリは、(i)所定の無線プロトコルに従って無線通信回路を制御する命令と、(ii)前記ファームウェアモジュールにある無線通信機能を特定できる情報を受信し、特定された前記無線通信機能を呼び出す命令を含む割り込みルーチンとを備えたファームウェアモジュールを収容し、
    前記割り込みインタフェース回路は、前記装置で実行中のソフトウェアによって生成される信号を受信する入力回路と、ソフトウェア生成された信号を前記入力回路で受信すると前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にするように構成された出力回路とを含み、
    前記装置は、前記プロセッサの前記ハードウェア割り込み入力ラインが割り込み可能状態になると前記割り込みルーチンを呼び出すように構成される
    ことを特徴とする、IC無線通信装置。
  21. 前記ファームウェアモジュールは、予めリンクされたバイナリイメージである
    ことを特徴とする、請求項20に記載の装置。
  22. 前記割り込みインタフェース回路の前記入力回路は、前記プロセッサが所定のメモリアドレスまたはレジスタに書き込みを行なうと、信号を検出するように設定される
    ことを特徴とする、請求項20または請求項21に記載の装置。
  23. 前記メモリは、追加として、前記割り込みインターフェイス回路へ送る信号を生成することによって前記割り込みインターフェイス回路に前記プロセッサの前記ハードウェア割り込み入力ラインを割り込み可能状態にさせ、呼び出すべき無線通信機能を特定し前記割り込みルーチンに知らせることによって、前記ファームウェアモジュールの前記無線通信機能を呼び出す命令を含むソフトウェアアプリケーションを収容している
    ことを特徴とする、請求項20乃至請求項22のいずれかに記載の装置。
  24. 前記ソフトウェアアプリケーションは、前記ファームウェアモジュールのメモリアドレスに関して何もデータを含まない
    ことを特徴とする、請求項23に記載の装置。
  25. 前記ソフトウェアアプリケーションは、呼び出すべき前記無線通信機能を特定する機能特定情報を前記割り込みルーチンに渡す命令を含む
    ことを特徴とする、請求項23または請求項24に記載の装置。
  26. 前記ソフトウェアアプリケーションは、前記装置の共有メモリ位置に前記機能特定情報を書き込む命令を含み、前記割り込みルーチンは、前記共有メモリ位置から前記機能特定情報を読み出す命令を含む
    ことを特徴とする、請求項25に記載の装置。
  27. 前記共有メモリ位置のアドレスは、前記ファームウェアモジュールと前記ソフトウェアアプリケーションにハードコードされている
    ことを特徴とする、請求項26に記載の装置。
  28. 前記ソフトウェアアプリケーションは、前記機能特定情報をコールスタックで前記割り込みルーチンに渡す命令を含む
    ことを特徴とする、請求項25に記載の装置。
  29. 前記ソフトウェアアプリケーションは、前記無線通信機能用のパラメータをコールスタックに書き込むことによって前記割り込みルーチンに渡す命令を含む
    ことを特徴とする、請求項23乃至請求項28のいずれかに記載の装置。
  30. 前記割り込みルーチンは、前記パラメータを前記コールスタックから読み出し、前記無線通信機能に渡す命令を含む
    ことを特徴とする、請求項29に記載の装置。
  31. 前記ファームウェアモジュールは、前記ソフトウェアアプリケーションのコールバック機能のアドレスを収容し、前記割り込みルーチンは、一つ以上のメモリアドレスを前記コールバック機能に渡し、前記一つ以上のメモリアドレスからデータを読み出すことによって、前記コールバック機能から機能特定情報または機能パラメータを受け取る命令を含む
    ことを特徴とする、請求項23乃至請求項30のいずれかに記載の装置。
  32. 前記ファームウェアモジュールは、前記ファームウェアモジュールによって前記ソフトウェアアプリケーションに提供されるすべての前記無線通信機能が、前記割込みインターフェース回路へ送る信号を生成することによって呼び出すことができるように設定される
    ことを特徴とする、請求項23乃至請求項31のいずれかに記載の装置。
  33. 前記プロセッサは、複数の割り込み優先度をサポートしており、前記装置は、前記ファームウェアモジュールの一部の機能を比較的高い優先度で実行し、前記ファームウェアモジュールの他の機能を比較的低い優先度で実行するように設定されている
    ことを特徴とする、請求項23乃至請求項32のいずれかに記載の装置。
  34. 前記装置は、前記ソフトウェアアプリケーションの一部の機能を比較的高い優先度で実行し、前記ソフトウェアアプリケーションの他の機能を比較的低い優先度で実行し、前記ソフトウェアアプリケーションの前記高い優先度と前記低い優先度が、前記ファームウェアモジュールの前記高い優先度と前記低い優先度と交互配置されるように設定されている
    ことを特徴とする、請求項33に記載の装置。
  35. 前記ファームウェアモジュールの最も高い優先順位は、前記ソフトウェアアプリケーションの最も高い優先順位よりも高い
    ことを特徴とする、請求項34に記載の装置。
  36. 前記ファームウェアモジュールと前記ソフトウェアアプリケーションは、それぞれ割り込みベクタテーブルを有し、前記装置は、割り込みを処理する際に、前記ファームウェアモジュールの前記ベクタテーブルを使用するように構成されていて、前記ファームウェアモジュールは、自ら処理するようにはプログラムされていないすべての割り込みが前記ソフトウェアアプリケーションに渡されるように構成されている
    ことを特徴とする、請求項23乃至請求項35のいずれかに記載の装置。
  37. 前記装置は、メモリアクセス命令をインターセプトして、前記ソフトウェアアプリケーションが前記ファームウェアモジュールを読み出したり上書きしたりするのを防止するように設定されたメモリ保護回路を備えている
    ことを特徴とする、請求項23乃至請求項36のいずれかに記載の装置。
JP2016541506A 2013-12-23 2014-11-20 Ic無線装置 Active JP6495290B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1322836.6 2013-12-23
GB1322836.6A GB2521607B (en) 2013-12-23 2013-12-23 Integrated-Circuit Radio
PCT/GB2014/053441 WO2015097426A1 (en) 2013-12-23 2014-11-20 Integrated-circuit radio

Publications (2)

Publication Number Publication Date
JP2017511513A true JP2017511513A (ja) 2017-04-20
JP6495290B2 JP6495290B2 (ja) 2019-04-03

Family

ID=50114614

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016541506A Active JP6495290B2 (ja) 2013-12-23 2014-11-20 Ic無線装置

Country Status (8)

Country Link
US (1) US10055367B2 (ja)
EP (1) EP3087477B1 (ja)
JP (1) JP6495290B2 (ja)
KR (1) KR102276696B1 (ja)
CN (1) CN105849695B (ja)
GB (1) GB2521607B (ja)
TW (1) TWI640869B (ja)
WO (1) WO2015097426A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2541133B (en) 2015-06-16 2018-01-03 Nordic Semiconductor Asa Interrupt generating unit
US10445119B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Software reconfigurable mobile devices and methods
US20240020364A1 (en) * 2022-07-14 2024-01-18 Dell Products L.P. Secured communication protocol layer for authenticated hardware data access

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6349941A (ja) * 1986-08-20 1988-03-02 Canon Inc 演算処理装置
JPH09160768A (ja) * 1995-12-05 1997-06-20 Sharp Corp プログラム実行装置
JP2002325113A (ja) * 2001-04-26 2002-11-08 Matsushita Graphic Communication Systems Inc ソフトウェアモデム及びその割り込み制御方法
US20060104227A1 (en) * 2004-11-15 2006-05-18 Chia-En Chuang Data communication methods and systems
US20090318078A1 (en) * 2006-09-12 2009-12-24 Wavecom Method of managing the software architecture of a radio communication circuit, corresponding application, computer program product and circuit
JP2013232028A (ja) * 2012-04-27 2013-11-14 Denso Corp マイクロコンピュータ
JP2013247529A (ja) * 2012-05-25 2013-12-09 Yokogawa Electric Corp 通信装置

Family Cites Families (30)

* 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
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
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
US7076637B2 (en) * 2003-10-29 2006-07-11 Qualcomm Inc. System for providing transitions between operating modes of a device
US7120794B2 (en) * 2003-10-29 2006-10-10 Qualcomm Inc. System for invoking a privileged function in a device
JP2005136572A (ja) 2003-10-29 2005-05-26 Renesas Technology Corp 無線通信用半導体集積回路およびデータ処理用半導体集積回路並びに携帯端末
US7206884B2 (en) 2004-02-11 2007-04-17 Arm Limited Interrupt priority control within a nested interrupt system
JP2005242806A (ja) 2004-02-27 2005-09-08 Renesas Technology Corp データ処理装置
DE102004057259A1 (de) 2004-11-26 2006-06-01 Robert Bosch Gmbh Manipulationsgeschütztes Mikrocontrollersystem
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
JP2007142969A (ja) * 2005-11-21 2007-06-07 Kenwood Corp 無線システムの起動方法及びそのソフトウエア
US20080126779A1 (en) 2006-09-19 2008-05-29 Ned Smith Methods and apparatus to perform secure boot
US7949874B2 (en) * 2006-09-28 2011-05-24 Phoenix Technologies Ltd. Secure firmware execution environment for systems employing option read-only memories
JP4415071B2 (ja) * 2007-06-22 2010-02-17 富士通マイクロエレクトロニクス株式会社 メモリ共有システム装置
US7730248B2 (en) 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
CN102077181B (zh) * 2008-04-28 2014-07-02 惠普开发有限公司 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
JP5102122B2 (ja) * 2008-06-11 2012-12-19 キヤノン株式会社 復号化装置及び復号化方法
US20110117956A1 (en) 2009-11-17 2011-05-19 Yosi Levi Industrial radio device with unified programming interface and methods
GB201102628D0 (en) * 2011-02-15 2011-03-30 Nordic Semiconductor Asa Programmable radio
US20120255031A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for securing memory using below-operating system trapping
US9563410B2 (en) 2011-05-25 2017-02-07 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
GB2503470B (en) * 2012-06-27 2014-08-13 Nordic Semiconductor Asa Memory protection
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
CN102932022A (zh) * 2012-09-29 2013-02-13 上海移远通信技术有限公司 无线通讯模块
GB2515364B (en) * 2013-12-20 2015-06-17 Nordic Semiconductor Asa Updatable integrated-circuit radio
US9762441B2 (en) * 2014-10-29 2017-09-12 Saankhya Labs Private Limited Method and system of dynamically designing and operating an optimal communication network configuration
EP3139635A1 (en) * 2015-08-28 2017-03-08 Alex Volkov Synchronization of audio streams and sampling rate for wireless communication

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6349941A (ja) * 1986-08-20 1988-03-02 Canon Inc 演算処理装置
JPH09160768A (ja) * 1995-12-05 1997-06-20 Sharp Corp プログラム実行装置
JP2002325113A (ja) * 2001-04-26 2002-11-08 Matsushita Graphic Communication Systems Inc ソフトウェアモデム及びその割り込み制御方法
US20060104227A1 (en) * 2004-11-15 2006-05-18 Chia-En Chuang Data communication methods and systems
US20090318078A1 (en) * 2006-09-12 2009-12-24 Wavecom Method of managing the software architecture of a radio communication circuit, corresponding application, computer program product and circuit
JP2013232028A (ja) * 2012-04-27 2013-11-14 Denso Corp マイクロコンピュータ
JP2013247529A (ja) * 2012-05-25 2013-12-09 Yokogawa Electric Corp 通信装置

Also Published As

Publication number Publication date
CN105849695A (zh) 2016-08-10
US10055367B2 (en) 2018-08-21
JP6495290B2 (ja) 2019-04-03
EP3087477A1 (en) 2016-11-02
CN105849695B (zh) 2019-10-08
WO2015097426A1 (en) 2015-07-02
KR102276696B1 (ko) 2021-07-13
US20160267030A1 (en) 2016-09-15
KR20160102040A (ko) 2016-08-26
EP3087477B1 (en) 2023-11-08
GB201322836D0 (en) 2014-02-12
GB2521607B (en) 2016-03-23
TWI640869B (zh) 2018-11-11
GB2521607A (en) 2015-07-01
TW201527976A (zh) 2015-07-16

Similar Documents

Publication Publication Date Title
JP6306578B2 (ja) メモリ保護装置及び保護方法
US8341602B2 (en) Automated verification of a type-safe operating system
WO2010004240A1 (en) Data processing apparatus, for example using modes
KR102104695B1 (ko) 하드웨어 디바이스에 대한 소프트웨어 인터페이스
JP5307133B2 (ja) デバイスエミュレーション支援装置、デバイスエミュレーション支援方法、デバイスエミュレーション支援回路及び情報処理装置
JP6495290B2 (ja) Ic無線装置
US20160196170A1 (en) Integrated-circuit radio
WO2023071786A1 (zh) 一种进程间的函数调用方法及相关设备
Paci et al. Lightweight IO virtualization on MPU enabled microcontrollers
US10496439B1 (en) Finite resource allocator with intrinsically subordinate operating system
CN106922189B (zh) 设备代理装置及其控制方法
Balas et al. CV32RT: Enabling Fast Interrupt and Context Switching for RISC-V Microcontrollers
CN117272412B (zh) 中断控制寄存器保护方法、装置、计算机设备及存储介质
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法
EP4398104A1 (en) Inter-process function calling method and related device
Rivera Hardware-based data protection/isolation at runtime in Ada code for microcontrollers
Yiu Software development in ARMv8-M architecture
Dibble et al. Programming embedded systems: interacting with the embedded platform
Rivera Hardware-Based Data Protection/Isolation at Runtime in Ada Code for Microcontrollers
Nios Nios II Exception Handling Overview

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190122

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: 20190219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190306

R150 Certificate of patent or registration of utility model

Ref document number: 6495290

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