CN105849695B - 集成电路无线电 - Google Patents
集成电路无线电 Download PDFInfo
- Publication number
- CN105849695B CN105849695B CN201480070514.2A CN201480070514A CN105849695B CN 105849695 B CN105849695 B CN 105849695B CN 201480070514 A CN201480070514 A CN 201480070514A CN 105849695 B CN105849695 B CN 105849695B
- Authority
- CN
- China
- Prior art keywords
- software application
- function
- firmware module
- radio communication
- logic
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling 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
一种集成电路无线电通信设备(1),包括具有硬件中断输入行的处理器(7);存储器(13);无线电通信逻辑(17);和中断接口逻辑(8)。所述存储器(13)包括固件模块(23),其包括(1)指令(31),其用于根据预定无线电协议控制所述无线电通信逻辑(17),以及(2)中断程序,其包括用于接收所述固件模块(23)上的无线电通信函数的识别和调用被识别的无线电通信函数的指令。所述中断接口逻辑(8)包括输入逻辑和输出逻辑,所述输入逻辑用于接收在所述设备(1)上执行的软件(27)所生成的信号,所述输出逻辑设置为断言(assert)所述处理器(7)的硬件中断输入行来响应所述输入逻辑单元上接收软件生成的信号。所述设备(1)配置为调用所述中断程序以响应所述处理器(7)的硬件中断输入行的断言。
Description
技术领域
本发明涉及一种集成电路无线电通信设备和配置此类设备的方法。
背景技术
集成电路无线电通信设备通常在硅片上集成处理器、存储器和无线电通信逻辑(logic)。天线可以在硅片上制造或者可以外部连接。所述设备将通常具有连接其至电源上的插脚、时钟源和任何外围设备如传感器、定时器、数模转换器和输出设备。处理器与无线电通信逻辑相连接以便管理由所述设备发送和/或接受的无线电信息。
此类无线电通信设备可以应用于大范围的无线产品,例如无线鼠标和键盘、游戏机的控制器、自行车速度计、遥控器、车库开门器、无线扬声器等等。
此类设备上的处理器可以执行所述设备上存储在非易失性存储器上的软件,以便根据如BluetoothTMor ZigBeeTM的预定无线电协议控制无线电通信逻辑。
如无线鼠标的完整产品通常通过产品制造商进行装配,所述产品制造商从独立的无线电芯片制造商得到无线电通信芯片。芯片制造商还可以给产品制造商提供开发工具,包含工具如交叉编译器、载入器、调试器和文件编制,这允许产品制造商开发、安装和调试定制的用于无线电设备的软件应用程序。定制的应用软件可以例如包括从无线鼠标的运动传感器接收输入以及根据期望的通信协议传送适配无线电信息至相关USB软件狗的程序。
并非要求产品制造商直接在芯片上连接无线电逻辑,而是芯片制造商将通常为开发工具提供芯片。开发工具可以包括用于软件库或操作系统的源代码,所述源代码由芯片制造商所写,其包括用于控制无线电逻辑的函数,例如,执行如Bluetooth Low EnergyTM的特殊无线电协议。其还可以包括其他函数,如用于内存管理、处理器调度、进程间通信等等的函数。应用程序开发人员可以从其应用程序代码中调用这些供给函数,而不必从头再写它们。这可以使得应用软件的开发更简单并且更快。这还可以易于无线电设备的不同型号之间的可移植性。
产品制造商将通常用其自己定制的软件应用程序从芯片制造商那里编译和链接源代码,以创造用于加载至每个设备存储器中的预定地址的单一的二进制图像文件。
然而申请人已经认识到此类传统方法可以得到改善。
发明内容
一方面,本发明提供了一种配置集成电路无线电通信设备的方法,其中:
所述设备包括存储器、无线电通信逻辑、中断接口逻辑、和具有硬件中断输入行的处理器;
中断接口逻辑包括输入逻辑和输出逻辑,所述输入逻辑用于接收在所述设备上执行的软件所生成的信号,所述输出逻辑设置为断言(assert)处理器的硬件中断输入行来响应接收输入逻辑上软件生成的信号;
存储器包括固件模块,所述固件模块包括(i)指令,用于根据预定无线电协议控制无线电通信逻辑,以及(ii)中断程序,包括用于接收固件模块上的无线电通信函数识别和调用识别的无线电通信函数的指令;并且
所述设备被配置为调用中断程序以响应处理器硬件中断输入行的断言(assertion),
所述方法包括下载软件应用程序至所述设备的存储器中,其中,软件应用程序包括指令,所述指令用于通过(i)生成信号至中断接口逻辑单元以使得中断接口逻辑单元断言处理器的硬件中断输入行,以及(ii)通过识别要被调用至中断程序的无线电通信函数来调用固件模块中的无线电通信函数。
因此本领域的技术人员可知,根据本发明,软件应用程序可以被加载入无线电通信设备,所述无线电通信设备通过硬件中断从固件模块中调用无线电通信函数。
这种机制不再需要软件应用程序开发者将软件应用程序代码与设备制造商提供的库或者操作系统链接。软件应用程序开发者不需要知道无线电通信函数位于存储器中的哪个位置,以便能够写调用它们的代码。这可以获得更稳定、更简单和更安全的开发程序。
在优选的实施例中,固件模块是预链接(pre-linked)的二进制图像或模块。优选地,不发生固件模块和软件应用程序之间的链接。设想固件模块通常是编译的二进制图像(例如,C语言编译的),尽管可能的是其部分或者全部可以直接从机器代码汇编。
通过消除固件模块和软件应用程序之间链接时间依赖的需要,可以减少软件应用程序开发期间漏洞生成的机会。没有必要在软件应用程序开发期间继续再编译和再链接固件模块。此种连续性可以避免漏洞出现并且如果漏洞真的生成还会有助于调试过程。
需要通过设备制造商提供相对少的信息给软件应用程序的开发者。为了开发软件应用程序,可以提供与所述机制相关的细节给应用程序开发者,所述机制用于识别要被调用的无线电通信函数;例如RAM中的预定位置或者在其上将回调函数放在软件应用程序中的地址,以及任意的函数识别码和可能的函数参数,如下文详细所述。可以提供预定软件存储地址给应用程序开发者,软件应用程序应该会被载入所述预定软件存储地址。还可以提供与可用于软件应用程序的存储器的量(例如编码空间和/或数据空间)相关的信息给应用程序开发者。至少在一些实施例中,该信息(除了处理器或器件结构的标准细节)可能足够应用程序开发者对设备进行写、编译和下载软件应用程序。
设想可以便利地提供应用程序开发者头文件或源文件(例如在C程序设计语言中),所述头文件或源文件将会包括一些或所有的所述信息(此类头文件或源文件当然可以视情况包括其他的、附加的特征以给应用程序开发者提供进一步的帮助)。
这避免了需要设备制造商提供无线电通信函数的任何目标文件,或者源代码给软件应用程序开发者。这可以简化设备制造商的版本控制,所述设备制造商可以改变固件模块中的函数的内容和位置,而无需通知应用程序开发者。
它还意味着设备制造商不必透露其固件模块的机密源代码给应用程序开发者。
通过提供固件模块预先载入到其上的集成电路设备给软件应用程序的开发者,通过使目标代码更难被访问可以提高包含在固件模块中的任何机密信息的安全性,尤其是当设备包含存储保护时,所述存储保护防止固件模块的未授权读取。
因为固件模块不需要被连接到软件应用程序,甚至在设备处于终端用户的占有之后可以替换一个或其他的固件模块和软件应用程序(例如用升级版)。
另一方面,本发明提供了一种集成电路无线电通信设备,包括:
具有硬件中断输入行的处理器;
存储器;
无线电通信逻辑;和
中断接口逻辑,
其中:
存储器包括固件模块,包括(1)根据预定无线电协议控制无线电通信逻辑的指令,和(2)中断程序,包括用于接收固件模块中的无线电通信函数的识别和调用被识别的无线电通信函数的指令;
终中断接口逻辑包括输入逻辑和输出逻辑,所述输入逻辑用于接收由在设备上执行的软件生成的信号,所述输出逻辑设置为断言(assert)处理器的硬件中断输入行响应在输出逻辑上接收软件生成的信号;和
设备配置为调用中断程序响应处理器的硬件中断输入行的断言(assertion)。
软件应用程序可以被载入此类设备的存储器中,并且然后可以通过生成至中断接口逻辑的信号和通过识别至中断程序的无线电通信函数来调用无线电通信函数。
因此,在一些实施例中,存储器另外包含软件应用,其包括指令,所述指令通过生成至中断接口逻辑的信号以使中断接口逻辑断言处理器的硬件中断输入行,以及通过识别要被调用至中断程序的无线电通信函数来调用固件模块中的无线电通信函数。
固件模块可以包含在存储器区域,向所述存储器读和/或写限制应用。固件模块可以位于ROM。然而,更优选地,固件模块位于非易失性存储器(例如,EEPROM或闪存)区域内,所述非易失性存储器通过设备上执行的非特权代码(unprivileged code)是不可读和/或不可写的。读保护可以进一步提高机密性保护。写保护可以降低固件模块在其已被载入设备之后(例如,由于软件应用程序中的漏洞)的意外或恶意的崩溃(corruption)。
然而,还可能的是可以提供固定模块给应用程序开发者作为二进制图像,并且应用程序开发者在制造过程中将固件模块和任意的软件应用程序载入设备。这对于设备开发商而言仍然会比提供源代码给应用程序开发者更安全。这还可以使得应用程序开发者不必编译固件模块和将其链接至软件应用程序。
因此,另一方面,本发明提供了一种配置集成电路无线电通信设备的方法,其中:
设备包括存储器、无线电通信逻辑、中断接口逻辑和具有硬件中断输入行的处理器;
中断接口逻辑包括输入逻辑和输出逻辑,所述输入逻辑用于接收由设备上执行的软件生成的信号,所述输入逻辑单元设置为断言处理器的硬件中断输入行来响应接收输入逻辑上的软件生成的信号;并且
设备设置为调用中断程序来响应处理器的硬件中断输入行的断言,
方法包括:
将固件模块载入设备的存储器,其中固件模块包括:(i)根据预定无线电协议控制无线电通信逻辑的指令,和(ii)中断程序,其包括用于接收固件模块中的无线电通信函数的识别和调用被识别的无线电通信函数的指令;以及
将软件应用程序载入设备的存储器,其中软件应用程序包括指令,所述指令用于通过生成信号至中断接口逻辑以使得中断接口逻辑断言处理器的硬件中断输入行,以及通过识别要被调用至中断程序的无线电通信函数来调用固件模块中的无线电通信函数。
固件模块和软件应用程序可以以任何顺序或大体上同时被载入设备。应了解同时载入它们两个仍然根本上不同于载入单一的、链接的软件应用程序和库(software-application-and-library)(例如,作为单一的二进制图像文件)。
固件模块优选地被载入至预定固件存储地址。软件应用程序优选地被载入至预定应用程序存储地址。
在本发明的所有方面中,固件模块优选地为编译和链接的二进制图像。同样地,软件应用程序优选地为编译和链接的二进制图像。固件模块和软件应用程序优选地相互不链接。固件模块优选地不包含与软件应用程序相关的存储器地址数据(带有软件应用程序中一个或多个回调函数的地址的可能异常,例如,将无线电通信函数参数传送至固件模块,如下文详细所述)。软件应用程序优选地不包含与固件模块相关的存储器地址数据。然而,在一些实施例中,可能的是软件应用程序可以包括固件模块中的一个或多个函数进入点的地址,例如,用于注册回调函数,或用于传送作为函数参数的数据,然而,即使那样,软件应用程序优选地不包含固件模块中的任何无线电通信函数的地址。
本发明的实施例的进一步的优点体现在当处理器支持多个中断优先级时。因为无线电通信函数通过中断被调用,那么可能的是无线电通信函数将比使其调用的函数以较高的优先级被执行。
处理器可以采用任何的形式,然而在优选的实施例中,其是通过ARMTM设计的处理器,并且可以来自与ARMTM CortexTM-M族(例如CortexTM-M0)。中断接口逻辑优选地物理上和/或逻辑上与处理器分离。它优选地包括不被处理器使用的逻辑门。
中断接口逻辑的输入逻辑优选地设置为检测信号响应处理器写入至预定存储地址或寄存器,例如与中断接口逻辑有关的寄存器,或RAM中的预定位置。输入逻辑可以配置为当预定位置上的数据位或其他值改变值时对信号进行检测。其可能设置为不时地监控位置或对其进行轮询(poll)以便检测由处理器引起的改变。
输入逻辑优选地设置为以这样的方式检测信号,信号可以由一个或多个标准的处理器指令生成;例如,来自ARMTM Thumb指令集(例如ARMv7-MThumb指令集)的指令。这允许标准处理器核心没有修改地应用在设置中,其高度适宜最小化额外的工程工作。在一些优选实施例中,软件可以通过指示设备的处理器写值到预定存储位置(例如使用STORE或MOVE指令)来生成信号。软件应用程序不需要包含任何的系统调用或管理程序调用,仍然可以以比软件应用程序执行高的优先级和/或特权级别调用无线电通信函数。
设备可以包括多个处理器,例如两个或者更多个。在一些实施例中,在第一处理器上执行的软件可以生成至中断接口逻辑的信号,同时中断接口逻辑的输出逻辑可以设置为断言不同于第一处理器的第二处理器的硬件中断输入行。在其他的实施例中,可能只存在单一的处理器。
中断程序可以调用一个或更多个分离的函数或子程序。在一些实施例中,此类函数或子程序可以被认为是中断程序的元素,或者它们可以被看作从其中分离的。在一些实施例中,中断程序可以调用或者跳转至软件应用程序中的指令,例如通过调用回调函数,如下文所述。中断函数或者它的一部分可以位于特定存储地址,并且该存储地址可以存储在设备上的中断向量表中,以便处理器直接跳转至中断程序来响应硬件中断输入行的断言。可选地,中断程序可以例如通过ROM中或引导加载器或其他与固件模块分离的二进制模块中的中断处理程序间接地被调用。
软件应用程序可以使用任何适当的机制来识别至中断程序的要被调用的无线电通信函数。在一些实施例中,软件应用程序可以在其生成至中断接口逻辑的信号之前识别无线电通信函数;在其他的实施例中它可以在生成所述信号之后这样做。
优选地,软件应用程序将函数识别符(function identifier)传送至中断程序,其识别要被调用的无线电通信函数。函数识别符可以采用任何适当的形式;它可以,例如,包括二进制数、文本字符串、存储地址、或其他独特地根据预定对应性(correspondence)或映射(mapping)识别固件模块中无线电通信函数的值。固件模块中的多个无线电通信函数可以与不同的各自的函数识别符相关。当开发软件应用程序时,可以提供应用无线电通信函数和函数识别符之间的关联(例如,在书面文档或头文件中)给程序开发者使用。
在一套实施例中,软件应用程序通过书写函数标示符至设备上的共享存储位置来将函数标示符传送至中断程序;例如,处理器寄存器或其他硬件寄存器,或存储地址(例如,RAM中的)。中断程序然后可以从共享的存储地址读取函数标示符和调用与那个函数标示符有关的无线电通信函数。这种关联可以被编译到中断程序中(例如作为编译开关语句),或者它可以被存储为数据对象,例如查找表,中断程序可以读取它以便确定与接收的函数标示符有关的无线电通信函数的地址。
另外的共享存储位置可以使得软件应用程序或者直接地或者间接地通过中断程序将参数传送至被识别的无线电通信函数。因此软件应用程序可以包括用于书写一个或多个参数至一个或多个共享存储位置的指令,并且中断程序或无线电通信函数可以包括用于从一个或多个共享存储位置中读取一个或多个参数的指令。
每个此类共享存储位置的地址可以被硬编码至固件模块和软件应用程序,或者它可以被硬编码至一个或其他的固件模块和软件应用程序中(例如,仅在固件模块中),并且经由堆栈或通过将其存储在不同的共享存储位置而被传送至另一个中。例如,被硬编码至两个元件的单一共享存储位置可以用于通过写位置地址至单一的共享存储位置来传递(transfer)多个其他的共享存储位置。这对于设备制造商而言可以通过最小化需要支持软件应用程序的存储配置上的限制而提高了灵活性。其中存储位置被硬编码至软件应用程序,这可以通过提供包含存储位置的头文件给应用程序开发者来实现。
在另一套实施例中,软件应用程序将函数标示符传送至调用堆栈上的中断程序。软件应用程序可以将函数标示符压入堆栈并且中断程序可以读取堆栈的函数标示符。中断程序仅通过由软件应用程序(即,不是从硬件模块或任何其他的软件部件)生成的信号是可调用的,这会有助于确保中断程序入口上调用堆栈的状态是可预测的;这使得中断程序提前知道在堆栈上的哪里找到函数标示符。软件应用程序还可以通过将用于无线电通信函数的参数写至堆栈来将它们传送至中断程序。中断程序可以设置为读取来自堆栈的此类参数并且将它们传送至无线电通信函数。中断程序必要时可以重新设置或必要时以其他方式处理参数。它可以在调用无线电通信函数之前将一些或全部的参数压回堆栈。
该套实施例是尤其有利的,因为它可以允许软件应用程序调用固件模块中的函数,而不需要任何的RAM或要在软件应用程序和固件模块之间共享的程序存储器(尽管其未被排除)。
在一些实施例中,固件模块可以包含软件应用程序中回调函数的地址。术语“回调”这里用于描述:在软件应用程序已经通过中断传送控制至固件模块之后固件模块能够从软件应用程序中进行调用的任何函数;非必要的是指向函数的指针动态地被传送至固件模块。例如,地址可能已经被送至应用程序开发者,所述应用程序开发者可以以这样一种方式(例如使用合适的连接指令)编译和/或链接软件应用程序,当软件应用程序被载入设备时回调函数位于预定地址。可选地,软件应用程序可以将回调函数的地址传送至固件模块。这可以通过写地址至共享存储位置或将其传送到堆栈上来完成,如上所述,或者固件模块可以包含预定地址上的回调注册函数(call-back-registration),软件应用程序可以将回调函数的地址传送至所述回调注册函数;在这种情况下,回调注册函数的地址可以例如当链接软件应用程序时以要被使用的存根(stub)的形式被提供至软件应用程序的开发者。提供回调注册函数的地址给应用程序开发者仍然会比提供所有无线电通信函数的地址要好,因为它仍允许固件开发者将来自由地重置固件模块中的无线电通信函数。
中断程序可以配置为调用软件应用程序中的函数(例如,此类回调函数),所述函数可以提供函数标示符和/或无线电通信函数参数给中断程序。这可以经由中断程序传送一个或多个存储地址(例如,指针)给回调函数以及回调函数写函数标示符和/或参数给存储器地址来完成。然后中断程序可以在所述地址上存取数据来确定函数标示符和/或参数。其可以在调用无线电通信函数之前将一些或全部的参数压回堆栈。使用回调函数来获取参数可以允许常规“C”语言参数在函数原型中格式化,而不必解析存储位置至使用堆积结构的类型。这种方法因此与在预定共享存储位置或堆栈中传送参数相比可以使得编码更容易。
应了解的是调用函数和从函数返回的概念是将如何依赖处理器的架构。在一些实施例中,处理器可以支持特定调用和/或返回指令,而在其他实施例中,不同的控制流和/或堆栈操作可以用于实现这些更高级别的概念。
在上述方面的优选实施例中,固件模块设置为以使得由固件模块提供给软件应用程序的所有无线电通信函数可以通过生成至中断接口逻辑的信号来被调用。以这种方式,不存在其他的用于调用固件无线电函数的机制需要由固件模块或设备支持,从而避免了实质的静态(static)或运行时间链接依赖性,并且简化了设备和软件应用程序的开发。
应了解固件模块可以提供其他的函数,不必与无线电通信相关,其可被软件应用程序就调用;例如,加密算法。优选地,设备设置为以使得软件应用程序对所有此类函数的调用是通过生成至中断接口逻辑的信号而执行的。
因为设备的实施例不需要包含传统的、完整的操作系统,应用程序开发者可以自由地开发软件应用程序作为处理器架构的本机应用程序,而不必学习如何与由设备制造商提供的专有操作系统相连接。这对于应用程序开发者而言是特别吸引人的特征,尤其是当处理器在本领域中被熟知时。
如果设备除了固件模块外还具有硬件抽象层,软件应用程序可以直接与该层相连接。应用程序特定驱动器还可以载入到所述设备上。
当编译软件应用程序时,配置设备可以包括使用无线电通信函数标示符和无线电通信函数之间的对应性(correspondence)。编译或加载软件应用程序可以利用预定软件应用程序存储地址。在一些实施例中,配置设备可以包括接收管理程序调用数字和无线电通信函数之间的对应性和/或接收预定软件应用程序存储地址,例如头文件。然后当编译软件应用程序时可以使用此类信息。
处理器优选地支持多个中断优先级。在一些实施例中,分配固件模块中的一些函数相对较高的优先级,而分配其他的相对较低的优先级。优选地,分配与时间临界(critical)无线电通信操作有关的函数相对较高的优先级。
在优选的实施例中,软件应用程序包括向量表,其允许固件模块调用软件应用程序中的函数而不需提前知道它们位于哪里。固件模块优选地配置为调用软件应用程序中的函数来响应固件模块接收中断。此类中断可以例如从如移动传感器的外围设备中产生。固件模块可以配置为调用软件应用程序中的函数来响应设备接收无线电数据包。
软件应用程序优选地设置为处理由固件模块转发的中断,如下文更加详细所述。
软件应用程序可以以相对较高的优先级执行一些事件驱动函数以及以相对较低的优先级执行某些其他的函数。软件应用程序使用的优先级优选地与固件模块使用的优先级交错。最高的固件优先级优选地高于最高的软件应用程序优先级,以便在固件模块中执行的临界(critical)无线电通信操作,总是可以优先于软件应用程序。这可以提供针对软件应用程序中的粗心编程的防护。
固件模块和软件应用程序每个可以具有各自的中断向量表。两个表优选地相互使用相同的中断向量地址偏移。固件模块的向量表中的(以及当两个表使用相同偏移时的软件应用程序的向量表)中断向量地址的偏移典型地由处理器架构固定。当处理中断时,设备优选地配置为使用固定模块的向量表(即,作为系统中断向量表)。
然而,固件模块优选地配置为以使得固件模块未被编程以处理其自身的所有中断被传送至软件应用程序。在固件模块未配置为处理特定中断的任何时候,这可以在固件模块中通过使得执行分支至(branch to)包含在软件应用程序的向量表中的对应偏移中的地址来执行。当软件应用程序被载入预定存储地址时这是可能的,因为一旦软件应用程序已经被载入设备,其允许固件模块提前知道去哪儿寻找软件应用程序的向量表。
例如,在一些实施例中,RESET中断处理程序地址总是被编译器设置在偏移=0处。因此,固件模块的向量表中的RESET处理程序地址将位于存储器中的地址0x0000 0000+0=0x0000 0000处。软件应用程序的向量表中的RESET处理程序地址是位于地址CLENR0+0=CLENR0处,其中CLENR0是软件应用程序位于其处的基础存储地址。
如果没有固件模块存在于设备上,该中断转发机制便利地允许对软件应用程序编程来以大体上相同的方式处理硬件中断。固件模块可以对软件应用程序的开发者不可见,并且其编译的目的是为接收中断。与直接硬件中断相比,中断转发优选地以这样的方式执行,其增加小于大约30个指令或小于大约3微秒的延迟。
在一些实施例中,固件模块包括大体上禁用固件模块的机制。此类禁用可以通过至固件模块的调用执行(优选地使用中断接口逻辑机制)。禁用固件模块可以使得固件模块重置协议堆栈以及使得任意的存储保护(如果存在)失效以便将资源给回软件应用程序。当禁用时,固件模块优选地转发所有的中断给软件应用程序(甚至是可能另外已经自身处理的那些)。
处理器优选地支持从一个中断优先级到另一个的无缝转换。这有时被称作末端连锁(tail-chaining)。这提供了软件应用程序和固件模块之间的传送控制的上等方法(反之亦然)以便允许时间临界无线电通信函数必要时优选。
设备优选地包括存储保护逻辑,其设置为拦截存储访问指令。该逻辑可以位于处理器和存储器之间。它可以使用存储访问指令的位置(即,处理器从哪儿读取指令)来确定是否允许访问。存储保护逻辑优选地配置为阻止软件应用程序读取和/或重写固件模块。
此类存储保护可以在保护固件模块中的敏感信息被软件应用程序开发者读取到的方面提供益处。它还可以最小化来自软件应用程序中的程序设计错误的潜在性损害,以及有助于软件应用程序中漏洞的检测和修正。存储保护逻辑可以配置为防止与固件模块有关的RAM被软件应用程序读取和/或写。
处理器、存储器和无线电通信逻辑优选地集成在单一半导体层上,例如硅片。然而,它们可以可选地集成在多层式模块上。
存储器优选地为非易失性存储器例如EEPROM或闪存。其优选地支持随机访问读取,以便固件模块和软件应用程序可以直接从存储器执行。
本领域的技术人员应了解的是设备还将典型地包括易失性存储器,例如RAM。它又可以包括一个或多个外围设备。它可以具有用于接收功率和时钟信号的连接。它可以具有天线的连接。它可以具有一个或多个输入和/或输出接口,例如串行连接。
这里描述的一个方面或实施例的可选或优选特征,在适当情况下可以应用于任何其他方面或实施例。
附图说明
现在参考附图,将仅通过举例的方式描述本发明的某些优选实施例,其中:
图1是体现本发明的微控制器的示意图;
图2是显示微控制器架构中的主要软件组件的示意图;
图3是微控制器的示意性存储映象图;
图4是不同处理器中断优先级的具象图;
图5a-5c是说明不同中断情况的具象图;
图6是说明软件应用程序调用固件模块中的函数的源代码元素的具象图;
图7是说明软件应用程序使用系统调用内部函数的源代码元素的具象图;以及
图8是说明软件应用程序接收硬件中断的源代码元素的具象图;
图9是表示用于调用通信功能的另一种机制的具象图;
图10是表示用于调用通信功能的另一种备选机制的具象图;和
图11是示出用于调用通信功能的又一替换机制的具象图。
具体实施方式
图1显示了集成电路微控制器1,有时被认为是片上无线电。它包括时钟逻辑3,其可以包括电阻电容振荡器和/或可以接收来自芯片外晶体振荡器(未示出)、电源管理电路5、处理器7(例如ARMTM CortexTM-M0)、中断接口逻辑8、存储保护逻辑9、RAM 11、非易失性闪存13、一个或多个外围设备15、无线电通信逻辑17和输入/输出电路19的输入。
处理器7、RAM 11和闪存13以如使用线和总线(未示出)的传统方式相连通。设置存储保护逻辑9以便拦截从处理器7到RAM 11和闪存13的指令。中断接口逻辑8被连接至处理器7的空闲硬件中断输入和存储器总线。当被安装到产品中,微控制器1可以被连接至若干外部组件,例如电源、无线电天线、晶体振荡器、电容器、传感器、音频/视觉输入设备等等(未示出)。
图2显示了软件构架的主要组件。这些包括可选硬件抽象层21例如ARMTM CortexTM微控制器软件接口标准、固件模块23、驱动器25和软件应用程序27。驱动器25可以用于软件应用程序27。
固件模块23是链接的二进制应用程序,其包括数个嵌入式软件模块。无线电协议模块31执行一个或多个无线协议堆栈,例如Bluetooth Low EnergyTM。库35提供共享硬件资源管理和函数,例如随机数生成、配置中断和优先级、电源管理(例如用于启用禁用外围设备)、加密函数等等。固件管理器37支持启用和禁用固件模块,和启用和禁用无线协议堆栈。
固件模块23拥有系统向量表并且是所有重置之后的进入点。
用于固件模块23的应用程序设计接口(API)29允许软件应用程序27调用固件模块23中的函数。其完全是通过使用至中断接口逻辑单元8的信号执行的。每个固件函数与独特的函数代码有关。该映射可以提供给软件应用程序27的开发者以允许函数正确地被调用。其内容可以在固件模块23和软件应用程序27中的每一个被编译时合并入固件模块23和软件应用程序27。RAM 11中的预定共享地址是可被软件应用程序27写入的并且是可被固件模块23读取的。该地址的使用允许软件应用程序27传送函数代码给固件模块23。
固件模块23可以使用软件中断将事件传达给软件应用程序27,所述软件中断的内容直到软件应用程序27读取(轮询)时是缓冲的。读取是通过API调用(例如event_get())完成的。
除了能够间接地使用固件模块23来利用硬件之外,软件应用程序27可以直接访问微控制器1硬件,或者通过硬件抽象层21访问,例如,凭借应用程序特定驱动器25。
图3显示了RAM 11和闪存13是如何在固件模块23和软件应用程序27之间共享的(包括任意的应用程序特定驱动器25)。当使用ARMTM CortexTM-M0处理器7,给闪存13分配地址从0(0x0000 0000)向上直到其容量SizeOfProgMem,给RAM 11分配地址从0x2000 0000向上直到(0x2000 0000+SizeOfRAM)。不同的地址值当然可以用于其他的实施例中。
闪存13在地址CLENR0(代码长度区域0)两旁包括两个不同的区域。在零和CLENR0之间的区域0是固件模块23被载入的地方。其中断向量表存储在地址零处。从CLENR0向上延伸的区域1是软件应用程序27被载入的地方。在地址CLENR0处其也具有中断向量表,目的如下所述。应了解的是设备1可以具有其他的非易失性存储器(未示出),其可以用于其他的目的,例如存储配置信息或标记。
RAM 11同样地具有区域0,从基础地址0x2000 000到RLENR0,以及区域1,从RLENR0向上延伸。RAM区域0为固件模块23提供数据存储,而RAM区域1为软件应用程序27提供数据存储。调用堆栈在固件模块23和软件应用程序27之间共享,并且例如从0x2000 0000+SizeOfRAM开始向下增长。分配给调用堆栈的存储器必须足够大以满足软件应用程序27和固件模块23的需要。预定共享存储地址可以在RAM 11的区域1中,或者可以位于RAM 11他处、区域0和1的外部。
用于设备1的固件模块23调用堆栈使用需求可以经由设备制造商发布。然后软件应用程序27的开发者必须限定初始堆栈指针并且保留足够的用于固件模块23和他的软件应用程序27的堆栈内存。固件模块23将初始化复位的主要的堆栈指针。
存储保护逻辑9设置为拦截所有从处理器7到闪存13和RAM 11的存储访问请求(例如读取请求)。它确定访问请求指令的来源(例如,请求是否来自固件模块23或来自软件应用程序27)。它还访问存储保护配置数据(例如,存储在一个或多个专用寄存器中),其指定不同来源各自的访问权限,并且相应地允许或限制访问请求。
在本发明的一些优选实施例中,软件应用程序27是拒绝到闪存区域0和RAM区域0的读取和/或写访问。这保护固件模块23的机密性并且可以防止软件应用程序27向分配给固件模块23的存储位置疏忽或恶意地写,从而提高了鲁棒性和安全性。软件应用程序闪存区域1还可以防止读访问,例如以防御通过外部调试接口的回读。
这意味着初始堆栈指针不可以在RAM区域0中,因为软件应用程序27不具有到该区域的写访问。在本发明的其他实施例中,调用堆栈可以分为两个部分,其中固件模块23调用堆栈位于RAM区域0中,软件应用程序27调用堆栈位于RAM区域1中。
中断接口逻辑8包含一位寄存器(未示出),其是可被处理器7寻址的。其设置为以使得在检测寄存器中的变化上(例如值的切换,或变为预定值),逻辑8断言至处理器7的硬件中断行。
图4示出了由ARMTM CortexTM-M0处理器提供的不同的中断级别41,箭头方向是递增的优先级,还示出了这些级别是如何映射到被固件模块23和软件应用程序27使用的中断级43的。
在软件应用程序27的主要背景语境之上是如下使用的四个中断优先级,以优先级递增次序:软件应用程序低优先级、固件模块低优先级、软件应用程序高优先级和固件模块高优先级。高优先级软件应用程序中断用于需要低延时的临界中断。
图5a-5c显示了优先级可能变化的不同例子。
图5a示出了软件应用程序27中的背景主过程(background main process)在低优先级被软件应用程序打断,例如被串行驱动程序。
软件应用程序27通过向预定共享存储地址书写与函数相关的函数代码,然后在中断接口逻辑8上写可寻址一位寄存器来调用固件模块23中的函数,以便使得中断接口逻辑8向处理器7发送硬件中断信号。固件模块23中的中断处理程序通过从预定共享存储地址中读取函数代码和调用(仍是在低优先级固件级别)指示函数,来响应低优先级固件级别上的中断(其是为该特定中断处理程序选择的默认级别)。一旦其已经被完成,则执行返回至应用程序低优先级并且控制被返回至软件应用程序27。最后,软件应用程序27完成其操作并且执行返回至主背景级别。
图5b示出了从软件应用程序27的主语境中完成至固件模块23的API调用。这可以通过使用软件应用程序27给中断接口逻辑8发送信号以触发中断来实现。在该例子中,固件低优先级中的API函数的执行是被高优先级软件应用程序异常中断的。这可以例如用于服务(service)传感器输入。它可以使得固件模块23从传感器输入转发中断给软件应用程序27。一旦软件应用程序27完成其高优先级执行,则在最后返回至背景主过程之前,固件API调用可以在较低优先级固件级别上继续。
图5c示出了软件应用程序27中的背景主过程通过固件模块23的高优先级中断。这会归因于设备1必须响应的时间临界无线电通信中断,例如引入无线分组(incoming radiopacket)。固件模块23中的中断服务程序可以向中断接口逻辑8发送信号以触发低优先级的固件中断(通过向预定共享存储地址写函数代码,以及在中断接口逻辑8中写可寻址的一位寄存器),以发信号至某一函数需要的无线电协议堆栈的较高级别。在高优先级程序的实现中,立刻执行低优先级程序,归因于处理器7的末端连锁能力(即,不必回到中间的背景主级别)。反过来低优先级固件程序触发中断以发信号至软件应用程序27,其已被无线电数据包接收到(通过中断转发)。在低优先级固件模块程序结束之后该中断是链接的。在该例子中,软件应用程序27通过向中断接口逻辑8发送信号而做出了至固件模块23的API调用,如图5a所示。最后,软件应用程序低优先级操作完成并且执行返回至主级别。
图6-8示出了其中控制可以在软件应用程序27和固件模块23之间传送的不同方式。C-like伪代码提取(extracts)是用于说明的。实践中,通过处理器7从闪存13中执行机器代码指令。附图中编号的箭头指示连续的执行步骤。
图6示出了通过API29调用固件模块23的函数"radio_transmit"的软件应用程序27。应用程序27首先向RAM 11中的共享存储位置(FUNCTION_TO_INVOKE)写radio_transmit函数(ID_RADIO_TRANSMIT)的独特的函数标示符。共享存储位置的标示符和地址使用设备开发商提供给软件应用程序开发者的固件头文件进行输入。接着,应用程序27通过向地址INTERRUPT_INTERFACE_REGISTER(也定义在头文件中)写入来切换中断接口逻辑8中的寄存器中的二进制标记。
中断接口逻辑8断言硬件中断,处理器7通过固件模块的中断向量表(其充当系统中断向量表)来调用相关的中断处理程序。中断处理程序读取与软件应用程序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配置为处理的中断。此外,如果固件模块23已经被软件应用程序27(例如,通过至固件管理器37的适当的API调用)禁用,固件模块将转发所有中断至软件应用程序27。
图9显示了用于调用无线电通信函数的可选机制,所述函数不需要使用RAM中的共享存储位置。一些实施例可以代替使用该机制,或者参考图6描述的机制。软件应用程序27包含位于闪存13中的预定地址上的回调函数。固件模块23可以分支至该回调函数,因为当编译和链接固件模块时已知所述预定地址。
为了调用固件模块中的无线电通信函数,软件应用程序首先通过写中断接口逻辑8中的可寻址一位寄存器来触发中断。固件模块中的中断处理程序然后调用软件应用程序27中的回调函数,并且将指针传送至functionID变量和将指针传送至参数数据块或数据结构。回调函数然后向通过functionID指针指向的存储地址写入期望无线电通信函数的标示符,并且在由Params指针指向的地址上写入任意参数。控制然后返回至固件模块23中的中断处理程序,其使用函数标示符来确定调用固件模块23中的何种无线电通信函数。必要时它解析(parse)所述参数(例如,通过将它们从Params存储地址移动至堆栈),并且调用无线电通讯函数。
图10示出了另外的可选机制,一些实施例可以使用该机制,以及或替代地,使用这里描述的其他机制。这类似于图9,除了没有使用指针来传送函数标示符,但是替代地被软件应用程序27压入堆栈。
在该例子中,软件应用程序27首先向堆栈写入期望无线电通信函数的标示符,然后通过在中断接口逻辑8中写入可寻址一位寄存器来触发中断。固件模块23中的中断处理程序读取脱离调用堆栈的函数标示符。其然后调用软件应用程序27中的回调函数,到其传送指针至参数数据块处。回调函数向由指针指向的地址写入任意的无线电通信函数参数。中断处理程序然后用指定的参数调用无线电通信函数。
图11显示了另外的可选机制,一些实施例可以使用该机制,以及或替代地,使用这里描述的其他机制。在该机制中,不需要共享RAM位置和任何的回调函数。可以优选使用该机制的实施例,因为它们是有可能免除固件模块和软件应用程序的开发者(除了可能的软件应用程序将要加载到其上的基础地址)之间的任何存储位置(RAM或闪存)的共享。
软件应用程序27将期望无线电通信函数的标示符和将要被发送至无线电通信函数的任何的参数压入调用堆栈。然后它通过在中断接口逻辑8中写入可寻址一位寄存器来触发中断。固件模块23中的中断处理程序然后从堆栈中读取标示符和参数。必要时它处理参数(例如,如果必要的话重新安排它们,以及将它们压回调用堆栈),并且调用通过标示符标示的无线电通信函数。
在所有的这些不同方式中,可以安全地和便利地配置和使用集成无线电通信设备。
Claims (36)
1.一种配置集成电路无线电通信设备的方法,其中:
所述设备包括存储器、无线电通信逻辑、硬件中断接口逻辑、和具有硬件中断输入行的处理器;
所述硬件中断接口逻辑与处理器分离并且包括输入逻辑和输出逻辑,所述输入逻辑用于接收在所述设备上执行的软件应用程序所生成的信号,所述输出逻辑设置为断言所述处理器的硬件中断输入行来响应所述输入逻辑上接收软件应用程序生成的信号;
所述存储器包括固件模块,所述固件模块包括(i)指令,其用于根据预定无线电协议控制所述无线电通信逻辑,以及(ii)中断程序,其包括用于接收所述固件模块上的无线电通信函数的识别和调用识别的无线电通信函数的指令;
并且所述设备配置为调用所述中断程序以响应所述处理器的硬件中断输入行的断言,
所述方法包括将软件应用程序载入至所述设备的存储器中,其中,所述软件应用程序包括指令,所述指令用于通过(i)生成信号至硬件中断接口逻辑以使得所述硬件中断接口逻辑单元断言所述处理器的硬件中断输入行,以及(ii)通过识别要被调用至中断程序的无线电通信函数来调用固件模块中的无线电通信函数。
2.一种配置集成电路无线电通信设备的方法,其中:
所述设备包括存储器、无线电通信逻辑、硬件中断接口逻辑和具有硬件中断输入行的处理器;
所述硬件中断接口逻辑与处理器分离并且包括输入逻辑和输出逻辑,所述输入逻辑用于接收由所述设备上执行的软件应用程序生成的信号,所述输出逻辑设置为断言所述处理器的硬件中断输入行来响应接收所述输入逻辑上的软件应用程序生成的信号;并且
所述设备设置为调用中断程序来响应所述处理器的硬件中断输入行的断言,
所述方法包括:
将固件模块载入所述设备的存储器,其中所述固件模块包括:(i)根据预定无线电协议控制无线电通信逻辑的指令,和(ii)中断程序,其包括用于接收固件模块中的无线电通信函数的识别和调用被识别的无线电通信函数的指令;以及
将软件应用程序载入设备的存储器,其中所述软件应用程序包括指令,所述指令用于通过生成信号至硬件中断接口逻辑单元以使得硬件中断接口逻辑单元断言处理器的硬件中断输入行,以及通过识别要被调用至中断程序的无线电通信函数来调用所述固件模块中的无线电通信函数。
3.根据权利要求1或2所述的方法,其中所述固件模块包括预链接的二进制映像文件。
4.根据前述权利要求1或2所述的方法,包括将所述软件应用程序加载至预定的应用程序存储地址。
5.根据前述权利要求1或2所述的方法,其中所述软件应用程序不包括与所述固件模块中的存储地址相关的数据。
6.根据前述权利要求1或2所述的方法,其中所述硬件中断接口逻辑的输入逻辑设置为检测软件应用程序响应于处理器写值至预定存储地址或寄存器所生成的信号。
7.根据前述权利要求1或2所述的方法,其中所述软件应用程序包括用于传送函数标示符至所述中断程序的指令,所述函数标示符标示要被调用的所述无线电通信函数。
8.根据权利要求7所述的方法,其中所述软件应用程序包括用于向所述设备上的共享存储位置写入所述函数标示符的指令,其中所述中断程序包括用于从所述共享存储位置读取所述函数标示符的指令。
9.根据权利要求8所述的方法,其中所述共享存储位置的地址是被硬编码至所述固件模块和所述软件应用程序的。
10.根据权利要求7所述的方法,其中所述软件应用程序包括用于传送所述函数标示符至调用堆栈上的所述中断程序的指令。
11.根据前述权利要求1或2所述的方法,其中所述软件应用程序包括通过将用于所述无线电通信函数的参数写入调用堆栈来将所述参数传送至所述中断程序的指令。
12.根据权利要求11所述的方法,其中所述中断程序包括用于从所述调用堆栈读取所述参数并传送所述参数至所述无线电通信函数的指令。
13.根据前述权利要求1或2所述的方法,其中所述固件模块包含所述软件应用程序中的回调函数的地址,并且其中所述中断程序包括指令,其用于传送一个或多个存储地址至所述回调函数,以及通过从所述一个或多个存储地址读取数据来从所述回调函数中接收函数标示符或用于所述无线电通信函数的函数参数,所述函数标示符标示要被调用的无线电通信函数。
14.根据前述权利要求1或2所述的方法,其中设置所述固件模块以使得所有由所述固件模块提供至所述软件应用程序的无线电通信函数可以通过生成至所述硬件中断接口逻辑的信号而被调用。
15.根据前述权利要求1或2所述的方法,其中所述处理器支持多个中断优先级,并且其中所述设备设置为以相对较高的优先级执行所述固件模块中的与时间临界无线电通信操作有关的函数,和以相对较低的优先级执行所述固件模块中的与时间临界无线电通信操作无关的函数。
16.根据权利要求15所述的方法,其中所述设备设置为以相对较高的优先级执行所述软件应用程序中的来自第一多个事件驱动函数的函数,以及以相对较低的优先级执行所述软件应用程序中的来自第二多个函数的函数,并且其中较高和较低软件应用程序优先级与较高和较低固件模块优先级交错。
17.根据权利要求16所述的方法,其中最高的固件优先级高于最高的软件应用程序优先级。
18.根据前述权利要求1或2所述的方法,其中所述固件模块和软件应用程序每个具有各自的中断向量表,其中当处理中断时所述设备配置为使用所述固件模块的向量表,和其中配置所述固件模块以使得所有未被编程为由所述固件模块自行处理的中断被传送至所述软件应用程序。
19.根据前述权利要求1或2所述的方法,其中所述设备包括存储保护逻辑,其设置为拦截存储访问指令和阻止所述软件应用程序读取或重写所述固件模块。
20.一种集成电路无线电通信设备,包括:
具有硬件中断输入行的处理器;
存储器;
无线电通信逻辑;和
硬件中断接口逻辑,
其中:
所述存储器包括固件模块,其包括(i)根据预定无线电协议控制无线电通信逻辑的指令,和(ii)中断程序,其包括用于接收所述固件模块中的无线电通信函数的识别和调用被识别的无线电通信函数的指令;
所述硬件中断接口逻辑与处理器分离并且包括输入逻辑和输出逻辑,所述输入逻辑用于接收由在所述设备上执行的软件应用程序生成的信号,所述输出逻辑设置为断言所述处理器的硬件中断输入行来响应在所述输出逻辑上接收软件应用程序生成的信号;
所述设备配置为调用所述中断程序以响应所述处理器的硬件中断输入行的断言;以及
所述存储器另外包含软件应用程序,其包括指令,所述指令用于通过生成信号至所述硬件中断接口逻辑以使得所述硬件中断接口逻辑断言所述处理器的硬件中断输入行,以及通过识别要被调用至所述中断程序的无线电通信函数来调用所述固件模块中的无线电通信函数。
21.根据权利要求20所述的设备,其中所述固件模块包括预链接的二进制映像文件。
22.根据前述权利要求20或21所述的设备,其中所述硬件中断接口逻辑的输入逻辑设置为检测软件应用程序响应于处理器写值至预定存储地址或寄存器所生成的信号。
23.根据权利要求20或21所述的设备,其中所述软件应用程序不包括与所述固件模块中的存储地址相关的数据。
24.根据权利要求20或21所述的设备,其中所述软件应用程序包括用于传送函数标示符至所述中断程序的指令,所述函数标示符标示要被调用的所述无线电通信函数。
25.根据权利要求24所述的设备,其中所述软件应用程序包括用于向所述设备上的共享存储位置写入所述函数标示符的指令,其中所述中断程序包括用于从所述共享存储地址读取所述函数标示符的指令。
26.根据权利要求25所述的设备,其中所述共享存储位置的地址是被硬编码至所述固件模块和所述软件应用程序的。
27.根据权利要求24所述的设备,其中所述软件应用程序包括用于传送所述函数标示符至调用堆栈上的所述中断程序的指令。
28.根据权利要求20或21所述的设备,其中所述软件应用程序包括通过将用于所述无线电通信函数的参数写入调用堆栈来将所述参数传送至所述中断程序的指令。
29.根据权利要求28所述的设备,其中所述中断程序包括用于从所述调用堆栈读取所述参数和传送所述参数至所述无线电通信函数的指令。
30.根据权利要求20或21所述的设备,其中所述固件模块包含所述软件应用程序中的回调函数的地址,并且其中所述中断程序包括指令,其用于传送一个或多个存储地址至所述回调函数,以及通过从所述一个或多个存储地址读取数据来从所述回调函数中接收函数标示符或用于所述无线电通信函数的函数参数,所述函数标示符标示要被调用的无线电通信函数。
31.根据权利要求20或21所述的设备,其中设置所述固件模块以使得所有由所述固件模块提供至所述软件应用程序的无线电通信函数可以通过生成至所述硬件中断接口逻辑的信号而被调用。
32.根据权利要求20或21所述的设备,其中所述处理器支持多个中断优先级,并且其中所述设备设置为以相对较高的优先级执行所述固件模块中的与时间临界无线电通信操作有关的函数,和以相对较低的优先级执行所述固件模块中的与时间临界无线电通信操作无关的函数。
33.根据权利要求32所述的设备,其中所述设备设置为以相对较高的优先级执行所述软件应用程序中的来自第一多个事件驱动函数的函数,以及以相对较低的优先级执行所述软件应用程序中的来自第二多个函数的函数,并且其中较高和较低软件应用程序优先级与较高和较低固件模块优先级交错。
34.根据权利要求33所述的设备,其中最高的固件优先级高于最高的软件应用程序优先级。
35.根据权利要求20或21所述的设备,其中所述固件模块和软件应用程序每个具有各自的中断向量表,其中当处理中断时所述设备配置为使用所述固件模块的向量表,和其中配置所述固件模块以使得所有未被编程为由所述固件模块自行处理的中断被传送至所述软件应用程序。
36.根据权利要求中20或21所述的设备,其中所述设备包括存储保护逻辑,其设置为拦截存储访问指令和阻止所述软件应用程序读取或重写所述固件模块。
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 |
---|---|
CN105849695A CN105849695A (zh) | 2016-08-10 |
CN105849695B true CN105849695B (zh) | 2019-10-08 |
Family
ID=50114614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480070514.2A Active CN105849695B (zh) | 2013-12-23 | 2014-11-20 | 集成电路无线电 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10055367B2 (zh) |
EP (1) | EP3087477B1 (zh) |
JP (1) | JP6495290B2 (zh) |
KR (1) | KR102276696B1 (zh) |
CN (1) | CN105849695B (zh) |
GB (1) | GB2521607B (zh) |
TW (1) | TWI640869B (zh) |
WO (1) | WO2015097426A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2540341B (en) | 2015-06-16 | 2019-06-26 | Nordic Semiconductor Asa | Event generating unit |
US10445119B2 (en) * | 2017-06-30 | 2019-10-15 | Intel Corporation | Software reconfigurable mobile devices and methods |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09160768A (ja) * | 1995-12-05 | 1997-06-20 | Sharp Corp | プログラム実行装置 |
CN1776653A (zh) * | 2004-11-15 | 2006-05-24 | 明基电通股份有限公司 | 数据通讯方法与系统 |
JP2007142969A (ja) * | 2005-11-21 | 2007-06-07 | Kenwood Corp | 無線システムの起動方法及びそのソフトウエア |
CN102077181A (zh) * | 2008-04-28 | 2011-05-25 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
CN102932022A (zh) * | 2012-09-29 | 2013-02-13 | 上海移远通信技术有限公司 | 无线通讯模块 |
CN103384997A (zh) * | 2011-02-15 | 2013-11-06 | 北欧半导体公司 | 可编程无线电 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6349941A (ja) * | 1986-08-20 | 1988-03-02 | Canon Inc | 演算処理装置 |
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 |
JP4690576B2 (ja) * | 2001-04-26 | 2011-06-01 | パナソニックシステムネットワークス株式会社 | ソフトウェアモデム及びそれを備えた通信端末装置 |
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 |
JP2005136572A (ja) | 2003-10-29 | 2005-05-26 | Renesas Technology Corp | 無線通信用半導体集積回路およびデータ処理用半導体集積回路並びに携帯端末 |
US7076637B2 (en) * | 2003-10-29 | 2006-07-11 | Qualcomm Inc. | System for providing transitions between operating modes of a device |
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 |
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. |
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 |
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 |
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 |
JP5590069B2 (ja) * | 2012-04-27 | 2014-09-17 | 株式会社デンソー | マイクロコンピュータ |
JP5494727B2 (ja) * | 2012-05-25 | 2014-05-21 | 横河電機株式会社 | 通信装置 |
GB2503583B (en) * | 2012-06-27 | 2015-06-17 | Nordic Semiconductor Asa | Memory Protection |
GB2503471B (en) * | 2012-06-27 | 2015-05-06 | Nordic Semiconductor Asa | Integrated-circuit radio |
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 |
US20170064651A1 (en) * | 2015-08-28 | 2017-03-02 | Alex Volkov | Synchronization of audio streams and sampling rate for wireless communication |
-
2013
- 2013-12-23 GB GB1322836.6A patent/GB2521607B/en active Active
-
2014
- 2014-11-20 US US15/029,586 patent/US10055367B2/en active Active
- 2014-11-20 WO PCT/GB2014/053441 patent/WO2015097426A1/en active Application Filing
- 2014-11-20 JP JP2016541506A patent/JP6495290B2/ja active Active
- 2014-11-20 EP EP14803210.5A patent/EP3087477B1/en active Active
- 2014-11-20 KR KR1020167019910A patent/KR102276696B1/ko active IP Right Grant
- 2014-11-20 CN CN201480070514.2A patent/CN105849695B/zh active Active
- 2014-11-21 TW TW103140369A patent/TWI640869B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09160768A (ja) * | 1995-12-05 | 1997-06-20 | Sharp Corp | プログラム実行装置 |
CN1776653A (zh) * | 2004-11-15 | 2006-05-24 | 明基电通股份有限公司 | 数据通讯方法与系统 |
JP2007142969A (ja) * | 2005-11-21 | 2007-06-07 | Kenwood Corp | 無線システムの起動方法及びそのソフトウエア |
CN102077181A (zh) * | 2008-04-28 | 2011-05-25 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
CN103384997A (zh) * | 2011-02-15 | 2013-11-06 | 北欧半导体公司 | 可编程无线电 |
CN102932022A (zh) * | 2012-09-29 | 2013-02-13 | 上海移远通信技术有限公司 | 无线通讯模块 |
Also Published As
Publication number | Publication date |
---|---|
GB2521607A (en) | 2015-07-01 |
TW201527976A (zh) | 2015-07-16 |
CN105849695A (zh) | 2016-08-10 |
KR20160102040A (ko) | 2016-08-26 |
KR102276696B1 (ko) | 2021-07-13 |
GB201322836D0 (en) | 2014-02-12 |
JP2017511513A (ja) | 2017-04-20 |
WO2015097426A1 (en) | 2015-07-02 |
GB2521607B (en) | 2016-03-23 |
US20160267030A1 (en) | 2016-09-15 |
EP3087477B1 (en) | 2023-11-08 |
US10055367B2 (en) | 2018-08-21 |
EP3087477A1 (en) | 2016-11-02 |
JP6495290B2 (ja) | 2019-04-03 |
TWI640869B (zh) | 2018-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4271234B2 (ja) | 修正関数を有するプロトコルスタック | |
US7406550B2 (en) | Deterministic microcontroller with configurable input/output interface | |
JP2006502470A (ja) | 複数のレジスタ・コンテキストを有するデータ処理システムおよび該システムのための方法 | |
JPH06101042B2 (ja) | マイクロコンピユ−タ | |
CN109643290A (zh) | 用于具用扩展分段的面向对象的存储器管理的技术 | |
CN105579953A (zh) | 灵活引导程序代码架构 | |
WO2017032112A1 (zh) | 一种与无中央处理器单板通讯的方法及通讯设备 | |
US20070198997A1 (en) | Customer framework for embedded applications | |
WO2022086791A1 (en) | Detecting infinite loops in a programmable atomic transaction | |
CN105849695B (zh) | 集成电路无线电 | |
CN108829529A (zh) | 虚拟机内存共享方法、装置、计算机设备及存储介质 | |
GB2489790A (en) | Dual trust architecture | |
US20160196170A1 (en) | Integrated-circuit radio | |
CN103003769B (zh) | 时钟电路、电子设备以及提供时钟信号的方法 | |
CN109343950A (zh) | 一种适用于Xilinx软核处理器的中断通用处理方法 | |
EP1596305B1 (en) | Interrupt handling system | |
CN106922189B (zh) | 设备代理装置及其控制方法 | |
CN114327882A (zh) | 一种数据转发方法、装置及系统 | |
CN105589822A (zh) | 一种人机接口设备的数据传输方法及装置 | |
Walder et al. | Reconfigurable hardware OS prototype | |
WO2006081092A2 (en) | Deterministic microcontroller with configurable input/output interface | |
Rellermeyer et al. | Co-managing software and hardware modules through the juggle middleware | |
Halvorsen et al. | Universal Serial Bus | |
Zhou | A lightweight DSP framework for OMAP3530-driven embedded devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |