可更新集成电路无线电的制作方法
【专利摘要】一种集成电路无线电通信装置(1),包含处理装置(7)、存储器(13)、及无线电通信逻辑(17)。该存储器(13)存储(i)引导程序(22),(ii)在固件存储区域的固件模块(23),以及(iii)在软件?应用存储区域的软件应用(27)。该固件模块(23)包含用于根据预定的无线电协议来控制无线电通信逻辑(27)的指令,以及软件应用(27)包括用于调用该固件模块(23)的无线电?通信功能的指令。该引导程序(22)或该固件模块(23)包含用于使用无线电通信逻辑(17)来接收新的固件模块(40)的指令,以及该引导程序(22)或该固件模块(23)包含用于存储新的固件模块(40)在软件?应用存储区域的指令,使得软件应用的至少一部分被新的固件模块(40)所重写。该引导程序(22)包含用于从软件?应用存储区域移动或复制新的固件模块(40)到固件存储区域。
【专利说明】
可更新集成电路无线电
技术领域
[0001]本发明涉及集成电路无线电通信装置以及更新该装置的方法。
【背景技术】
[0002]集成电路无线电通信装置通常整合处理器、存储器、以及在硅芯片上的无线电通信逻辑。天线可在硅芯片上制作或外接。该装置通常具有用于将其连接到电源供应的针脚、时钟源、及任何外围设备,例如:传感器、定时器、数字模拟转换器、以及输出装置。该处理器与无线通信逻辑连接以管理由该装置发送和/或接收的无线电信息。
[0003]目前这样的无线通信装置可以被使用在许多无线产品,例如:无线鼠标和键盘、游戏机的控制器、脚踏车速度计、遥控器、车库门遥控器、无线扬声器等等。
[0004]在这样一个装置中的处理器可以在该装置上运行存储在非易失存储器的软件(如:电子可擦写可编程只读存储器(EEPROM)或闪存),从而根据预定的无线电协议,例如:蓝芽(Bluetooth?)或无线个域网(ZigBee),来控制该无线通信逻辑。
[0005]这样装置的一个例子为
【申请人】的nRF51822片上无线电(rad1-on-a-chip)。其包括:无线电收发器以及具有256kB嵌入式闪存和16kB随机存取存储器的32位ARMtmCortexTMM0中央处理器(CPU)。它可以供应给客户已经存入闪存的预编译及链接的二进制固件模块,或者该固件模块作为二进制图像供应给客户以加载至装置上。该固件模块可提供无线电的软件控制以及其他功能。在运送成品到终端用户之前,客户也可增加自己的软件应用到闪存上,作为单独的,预链接的二进制模块并入集成无线电装置(例如无线计算机键盘)。
[0006]因此
【申请人】了解到可能需要更改或更新固件模块中的代码(例如:增加新特征或修复错误),在固件模块以及软件应用加载至装置之后。在某些情况中,当装置属于终端用户时,可以理想的更改代码。
【发明内容】
[0007]本发明的目的是寻求提供一种有效的方法来促进代码更新。
[0008]从第一个方面,本发明提供一种更新集成电路无线电通信装置的方法,其中:
[0009]该装置包含处理装置、存储器及无线电通信逻辑;以及
[0010]该存储器存储(i)引导程序,(ii)在固件存储区域的固件模块,以及(i i i)在软件应用存储区域的软件应用,该固件模块包含用于根据预定的无线电协议来控制无线电通信逻辑的指令,以及该软件应用包括用于调用该固件模块的无线电通信功能的指令;
[0011]该方法包含:
[0012]该处理装置执行来自该引导程序或该固件模块的指令用于使用该无线电通信逻辑来接收新的固件模块,以及执行来自该引导程序或该固件模块的指令用于储存该新固件模块到该软件应用存储区域,使得该软件应用的至少一部分被该新固件模块所重写;以及
[0013]该处理装置执行来自该引导程序的指令用于从该软件应用存储区域移动或复制该新固件模块到该固件存储区域。
[0014]从第二个方面,本发明提供一种集成电路无线电通信装置,包含:
[0015]处理装置;
[0016]存储器;以及
[0017]无线电通信逻辑,
[0018]其中:
[0019]该存储器存储(i)引导程序,(ii)在固体存储区域的固件模块,以及(i i i)在软件应用存储区域的软件应用,该固件模块包括用于根据预定的无线电协议来控制该无线电通信逻辑的指令,以及该软件应用包括用于调用该固件模块的无线电通信功能的指令;
[0020]该引导程序或该固件模块包含用于使用该无线电通信逻辑来接收新的固件模块的指令,以及该引导程序或固件模块包含用于储存该新的固件模块到该软件应用存储区域,使得该软体应用的至少一部分被该新的固件模块所重写;以及
[0021]该引导程包含用于从该软件应用存储区域移动或复制该新的固件模块到该固件存储区域的指令。
[0022]因此,本领域的技术人员可以看出,根据本发明,一种集成电路无线电通信装置可使用现有的固件模块通过无线电接收新的固件模块,以及在新的固件模块更新或取代旧的固件模块之前,可使用软件应用存储区域作为新的固件模块的暂时储存器。以这种方式,就不需要保留专用的存储器区域来接收新的固件模块;这是需要的,因为较大的存储器的要求将会增加该装置的尺寸及成本。此更新还可由终端用户方便地执行,因为可以无线方式进行,不需要将该无线电装置通过电缆连接到主机计算装置。
[0023]在一组优选实施例中,该引导程序或该新的固件模块包含用于使用该无线电通信逻辑来接收新的软件应用的指令,以及该引导程序或新的固件模块包含用于储存该新的软件应用到该软件应用存储区域指令。当新的软件应用被接收时如果旧固件模块的复本保留在该软件应用存储区域中,优选地,该旧固件模块的至少一部分被该新软件应用所重写。该新的软件应用也许可与旧软件应用相同,或者可以包含至少一些差异,例如是新的代码或删除的代码。
[0024]当储存在该软件应用存储区域时,该新的固件模块或许会完全重写该旧软件应用。例如,当新的固件模块大于该软件应用时,可以是这种情况。
[0025]该存储器包含任一或多种:只读存储器、非易失存储器、以及挥发性存储器。在某些实施例中,包含或包括非易失读写存储器,例如电子可擦写可编程只读存储器、闪存(例如NOR类型闪存),或任何其他适合的技术。该固件存储器区域和/或该软件应用存储区域优选地每个包含或包括非易失读写存储器。该存储器优选地允许随机存取使得代码可以直接从存储器执行(尽管这不是必须的)。该处理装置优选地在固件模块和/或在软件应用中直接执行来自存储器的指令,可能通过一个处理器高速缓存,但不需要先复制整个固件模块或软件应用至随机存取存储器。该存储器可包含可单独擦除的页面。该存储器的非易失部分或许不能在比页面更细的比例下被擦除,例如:没有在一个单独的位、字节或字级。擦除在这里的意思为重设存储器内容为默认状态(通常是全为二进制“I”或全为二进制“O”),由此,该单独位元或字节的状态可以在写入操作时改变。
[0026]取决于存储器类型,重写可以包含在写入操作之执行擦除操作,或作为单一操作执行。
[0027]该装置优选地还包含挥发性存储器,例如随机存取存储器(RAM)。然而在优选实施例中,随机存取存储器的数量或可用的随机存取存储器数量小于该软件应用存储区域。该新的固件模块通常大于该随机存取存储器或可用的随机取存储器。储存该新的固件模块至该软件应用存储区域优选地与接收该新的固件模块在时间上重叠。
[0028]该固件模块优选地占据单独,连续范围的存储器地址,然而这不是必要的,且该固件存储区域包含两个或多个不连续子区域。类似的,该软件应用存储区域优选地占据单独,连续范围的存储器地址,然而这不是必要的,且该软件应用存储区域可包含两个或多个不连续子区域。该固件存储区域优选地与软件应用存储区域不同(即不重叠)。
[0029]该软件应用优选地位于预定的软件-应用存储地址(即一些或全部软件应用占据一个范围的存储器地址,从预定的存储器地址延伸)。此预定地址可提供给软件应用的开发者,当链接和/或载入该软件应用至该装置时使用。其或许会被该固件模块使用,例如:转送中断至该软件应用。
[0030]当被写入到软件应用存储区域时,该新的固件模块优选地储存于或近似于该相同的预定软件应用存储地址(即一些或全部新的固件模块占据一个范围的存储器地址,从该软件应用存储器地址延伸)。通过确保与重写软件应用的最大重叠而提供一个特别有效的存储器的使用。
[0031]该引导程序或新的固件模块优选地包含用于写入新软件应用至该预定的软件应用存储器地址的指令。
[0032]该(旧)固件模块优选地位于预定的固件存储地址(即一些或全部该固件模块占据一个范围的存储器地址,从该预定的固体存储地址延伸)。该新固件模块优选地移动或复制至位于相同的预定固体存储器地址(即一些或全部新固件模块占据一个范围的存储器地址,从该固体存储器地址延伸)。每一固件模块及/或软件应用可以包含数据以及指令,每一个可以包含中断向量表。该新的固件模块可以小于或大于旧固件模块或彼此尺寸大致相同。
[0033]在一些实施例中,在该新的固件模块移动到固件存储区域之后,一些或全部该软件-应用存储区域可能被擦除。在其他实施例中,该新的固件模块的复制本可以被留在该软件-应用存储区域,用于在之后被擦除或重写(例如,在装置重置后,或当新软件应用载入时)。
[0034]该引导程序可以被储存在只读存储器或读写存储器中,例如闪存。和该固件模块相比优选是相对小的(例如:约十分之一的大小或更小)。在一组实施例中,该引导程序约4kB,然而该固件模块大约SOkB或更多。该引导程序可以位于固件模块区域,或在一不同的引导程序存储区域。该引导程序优选地单独储存在一或多个可擦写存储页面,其不是用于储存固件模块。这能够特别有效擦除或重写旧固件模块,而不会影响引导程序的代码。
[0035]该处理步骤被设置为在电源接通或重置后执行一个或更多引导程序的指令。该引导程序具有不同于更新装置的功能,但在至少某些实施例中它不提供其他功能。在某些实施例中,该引导程序不含有用于直接使用该无线电通信逻辑的指令(即通过无线通信逻辑直接调用操作,不须通过执行该固件模块或该软件应用)。这样可使该引导程序尽可能维持简单和小,最小化该引导程序代码发生错误的机会。反之,当无线电通信逻辑是必要时,该引导程序可以转移执行旧固件模块和/或新的固件模块。在某些实施例中,该引导程序包含用于执行分支到该固件模块或该软件应用的指令(例如:在电源开启或重置后),每当有效的固件模块和软件应用已经载入至该装置上。
[0036]该处理装置可以采取任何形式,但在某些优选实施例中,其包括或是ARMtm设计的处理器,例如来自ARMtm Cortex?-M家族的处理器(例如:Cortex?-M0)。该装置可以包含多个处理器,例如两个或更多,其可以任何适当方式分享指令执行。在某些实施例中,来自该固件模块的指令被第一处理器执行,以及来自软件应用的指令被不同于第一处理器的第二处理器执行。无线电通信逻辑优选地在实体上和/或逻辑上与该处理器分开。它可以包含模拟和/或数字电路。该装置可以包含集成天线或可以包含用于芯片外天线的连接。该装置可以包含用于连接多种外围组件的连接,例如:电阻、电容、电源供应器、放大器、无线电天线、晶体振边器、传感器、输出装置等。
[0037]在优选实施例中,该固件模块是预先链接的二进制图像。该软件应用也优选的是预先链接的二进制图像。优选地,该固件模块与该软件应用没有链接产生。在某些实施例中,通过该处理装置执行管理程序呼叫指令,该软件应用将转移控制权给该固件模块(例如:调用无线电功能),其生成由固件模块处理的中断。
[0038]该固件模块与软件应用之间的分离使旧固件模块能够很容易的被新的固件模块所重写而不会毁损旧固件模块。这并不直接的如果该固件模块和软件应用被编译和/或连接成单一二进制图像,因为这不太可能是仅含有软件应用代码的易于识别的存储器区域。这并不是说是不可能的(例如:通过小心地使用链接器指示),以及在设置中,不排除将该固件模块完整地链接至该软件应用。
[0039]该装置可以包含存储器保护逻辑,其可以防止软件-应用存储器区域中的代码直接存取(读取和/或写入,和/或执行)在该固件存储区域的地址。
[0040]在某些实施例中,该软件应用包含用于使该处理器执行在固件模块中的指令的指令,以使用该无线电通信逻辑来接收新的固件模块。该软件应用可以直接转移控制权给该固件模块(例如:经由系统呼叫)或可以移转控制权给该引导程序,其可以依次调用该所需固件模块的功能或多个功能。这允许该软件应用决定是否或何时启动固件更新,例如:响应来自人类用户的信号,或响应来自例如智能型手机的远程装置通过无线电所接收的信息。
[0041]该软件应用可以包含用于传递信息到该引导程序或该固件模块的指令(例如:作为一个或更多功能参数),其允许该装置重新建立和远程装置的无线电链接,例如,如果当接收新的固件模块时无线电通信的问题,或该装置意外重置(例如由于电源故障)。此信息包含链结信息,如任何一个或更多的装置地址、无线电频道、验证信息、以及加密信息。这些信息是重要的,因为该软件应用可以开始被重写(且不再是可执行的),当该新的固件模块开始被该装置接收时。该引导程序可以储存链结信息以及使用它来接收该新软件应用,或旧固件模块可使得链结信息用于新的固件模块,例如:将其储存到预定的存储器地址。
[0042]该引导程序或固件模块优选地包括用于检查新的固件模块已经被正确接收和/或正确储存在软件应用存储区域的指令。这包含验证该新的固件模块的校验和(checksum)或验证加密签章。新的固件模块的认证信息,例如校验和或数字签名,可以由远程装置提供给该装置,例如:伴随新的固件模块或嵌入新的固件模块。该引导程序或新的固件模块可包含用于当检查错误时使用该无线电通信逻辑来发送信号至远程装置。它可以要求该远程装置重新传送新的固件模块。
[0043]一旦新的固件模块已经正确储存,旧固件模块可以返回或转移控制权给该引导程序。这可以由直接分支、或由触发中断、或使该装置重置、或任何其他合适机制来达成。
[0044]该引导程序可以擦除旧固件模块(例如:通过擦除该全部固件存储区域),然后从该软件应用存储区域读取新的固件模块并将之写入该固件存储区域。它随后可以转移控制权给新的固件模块(在接收新软件应用之前或之后)。
[0045]如果新软件应用随后被接收,在该引导程序或新的固件模块的指令之下,它可以被直接写入至软件-应用存储区域。储存该新软件应用到该软件-应用区域优选地与该新软件应用的接收在时间上重叠。该引导程序或新的固件模块优选地包含用于检查新软件应用已经被正确接收和/或正确储存在该软件应用存储区域的指令。这包含验证该软体应用的校验和或加密签章。该引导程序或固件模块可包含用于在检查错误时使用该无线电通信逻辑发送信号至远程装置的指令。它可以要求该远程装置重新传送新软件应用。
[0046]新软件应用可以作为新的固件模块在同一个无线电通信对会话(sess1n)中被接收。可选的,新软件应用可能无法被接收直至稍后的无线电通信会话,。它可以接收来自不同于该新固件模块的远程装置。
[0047]在此所描述的任何方面或实施例的特征,若适当的话,可应用到在此所描述的任何其它方面或实施例。当对不同实施例或实施例组进行参照时,需要了解的是它们不必是独特的,而可能重叠。
【附图说明】
[0048]本发明的确定优选实施例将仅通过示例描述,并参考附图,其中:
[0049]图1是本发明中微控制器实施例的示意图。
[0050]图2是微控制器架构内的主要软件组件示意图。
[0051]图3是微控制器的存储器图的示意图。
[0052]图4是非易失存储器的示意图,显示该微控制器更新的第一阶段。
[0053]图5是非易失存储器的示意图,显示该微控制器更新的第二阶段。
[0054]图6是非易失存储器之示意图,显示该微控制器更新的第三阶段。
【具体实施方式】
[0055]图1显示集成电路微控制器I实施例,有时也被称为片上无线电(rad1-on-a-chip)。它可以被合并入产品中,例如一无线心率监测器。该微控制器I包含时钟逻辑3,其可包含电阻电容振荡器和/或可以接收来自芯片外晶体振荡器的输入(未图示)、电源管理电路5、处理器7 (例如:ARMtm Cortex?-M0)、存储器保护逻辑9、随机存取存储器11、非挥发闪存13、一个或更多外围设备15、无线电通信逻辑17、以及输入/输出电路19。
[0056]该处理器7、随机存取存储器(RAM)Il以及闪存13以常规方式互连,例如使用线路和总线(未图示)。该存储器保护逻辑9设置使得从该处理器7截取指令到该随机存取存储器11和闪存13。当安装在产品中时,该微处理器I可连接到多个外围组件,例如电源供应器、无线电天线、晶体振荡器、电容、传感器、音频/视频输出装置等(未图示)。
[0057]图2显示软件架构的主要组件。包含选用的硬件抽象层21,例如ARMtmCortex?微控制器软件接口标准,引导程序22、固件模块23、驱动器25、以及软件应用27。该驱动器25可以用于该软件应用27。
[0058]该引导程序22是位于该闪存13的小二进制应用。它包含用于管理无线软件更新的指令。该引导程序22是在全部重置后的进入点。通常它直接移转控制权给该固件模块23,除非正在进行更新。
[0059]该固件模块23是一包含有多个嵌入式软件区块的链接二进制应用。无线电协议区块31实现一个或多个无线协议堆桟,例如蓝牙低能量(Bluetooth Low Energy)。库35提供共享的硬件资源管理和功能例如随机数产生、配置中断和优先权、电源管理(例如:启动和禁止外围设备)、加密功能等。固件管理程序37支持启动和禁止该固件模块,以及启动和禁止该无线协议堆栈。该固件模块23拥有该系统向量表。
[0060]用于该固件模块23的应用程序界面(API)29允许该软件应用27调用该固件模块23中的功能。它使用信号管理程序呼叫指令从该软件应用27移转控制权给该固件模块23。这些会造成处理中断可在该固件模块23中被处理。该固件体模块23可以使用软件中断来传达事件给该软件应用27。
[0061]该软件应用27可以直接存取该微控制器I硬件,或经由硬件抽象层21,例如通过特定应用驱动器25,此外能够使用该固件模块23来间接使用该硬件。
[0062]图3显示在该固件模块23以及该软件应用27(包含任何特定应用驱动器25)之间如何共享RAM 11以及闪存13。当使用ARMtm Cortex?-M0处理器7,该闪存13指定地址从O(0x0000 0000)向上,到程序存储器容量(SizeOfProgMem),以及该RAM 11指定地址从0x2000 0000向上到(0x2000 0000+RAM容量(SizeOfRAM))。不同的地址值也当然可以在其他实施例中使用。
[0063 ] 该闪存13包含在地址CLENRO (代码长度区域O)任一侧的两个不同区域。在地址O和CLENRO之间,区域O为该引导程序22和该固件模块23所在的位置。该固体模块的中断向量表储存在地址O ο从地址CLENRO向上延伸,区域I为该软件应用27以及任何应用数据所在的位置。它也有一中断向量表,位于地址CLENRO用于接收从该固件模块23所转发的中断(以及可能从该引导程序22)。应当理解的是,该装置I可以有其他非挥发存储器(未图示),其可用于其他目的,例如储存组态信息或标记。
[0064]该RAM 11类似地具有区域O,从基地址0x2000 000到RLENRO,以及区域I,从地址RLENRO向上延伸。RAM区域O提供数据储存给该引导程序22和该固件模块23,而区域I提供数据储存给该软件应用27。呼叫堆栈在该固件模块23和该软件应用27之间分享,并向下发展,例如从地址0x2000 0000+序存储器容量(SizeOfRAM)。分配给该呼叫堆栈的存储器必须足够大以符合该软件应用27和该固件模块23的需求。该预定的分享存储器地址可以在该RAM11的区域I,或位在该RAM 11的其他区域,区域O跟区域I之外。
[0065]该存储器保护逻辑9设置为截取由该处理器7到该闪存13及该随机存取存储器11的所有存储器存取请求(例如:读取请求)。它决定该存取请求指令的来源(例如该请求是否来自该固件模块23或该软件应用27)。它也存取存储器保护组态数据(例如储存在一个或多个专用寄存器),其对于各种来源指定各自的存取许可,以及允许或拒绝相应的存取请求。
[0066]在本发明一些优选实施例中,该软件应用27被拒绝读取和/或写入存取至闪存区域O和RAM区域O。这机密保护该固件模块23且可以防止由该软件应用27无意或恶意写入至分配给该固件模块23的存储器地址,从而增加稳定性及安全性。该软件应用闪存区域I也可以防止读取存取,例如,防止经由外部调试接口的回读。
[0067]图4至图6显示在该装置I上的该固件模块和该软件应用的更新。挂锁符号表示该存储器保护逻辑9已对存储器区域实施某种程度的存取保护。
[0068]该软件应用27通过呼叫在该引导程序22的更新功能来启动该更新过程。该软件应用27传送远程对等装置的无线电-协议链结信息给该引导程序22。举例来说,该对等装置可以是智能手机或笔记本电脑。在断线的情况下,该链结信息可以被该微控制器I使用以重新连接到该对等装置。该引导程序22或该软件应用27接着移转控制权给该固件模块23(例如使用系统呼叫以调用该固件模块23中的更新操作)。一旦该固件模块23具有控制权,它使用该无线电通信逻辑17来请求来自该对等装置的该新的固件模块40。
[0069]如图4所示,该固体模块23开始接收该新的固件模块40。它可能会暂时缓冲一些在该RAM中的接收数据,但它也开始写入该新的固件模块40至该闪存13的区域I,其先前保持其所接收的该软件应用27。该软件应用27(包含该应用向量表)可以在写入开始之前被全部擦除,或它可以在需要的时候擦除页面。
[0070]一旦该整个新的固件模块40已经被接收以及写入至该闪存13,该旧固件模块23对该新的固件模块40验证接收自该对等装置的校验和。如果该校验和不正确,该旧固件模块23请求通过对等装置重新传输该新的固件模块40。
[0071]如果微控制器I在接收该新的固件模块40的时候被意外重置(例如:由于停电),执行将会在该引导程序22中回复,其将指示该固件模块23从该对等装置再次请求该新的固件模块40。
[0072]一旦该新的固件模块40的校验和正确,该固件模块23将移转控制权给该引导程序
22。该引导程序22从该远程对等装置断开以及从该闪存13的区域O擦除该旧固件模块23(以及其向量表)。它当然不会擦除在区域O的该引导程序22代码。为了促进此设置,该引导程序22优选地储存在它自己的闪存页面或多个页面,与区域O的其余部分分开,因此它直接擦除全部的区域0,除了含有该引导程序22的页面或多个页面。
[0073]如图5所示,该引导程序22接着从区域I复制该新的固件模块40到区域O的相关地址。
[0074]该引导程序22接着调用在该新的固件模块40中的功能(例如经由系统呼叫),以指示它由无线电重新连接至该远程对等装置,以及请求传送新软件应用42。该引导程序22传送无线电链结信息到该新的固件模块40以使之能够做到此事。
[0075]如图6所示,该新的固件模块40开始接收该新软件应用42。它可能会在该RAM11中暂时缓冲一些接收的数据,但它也开始将其所接收到的该新软件应用42(包含该应用向量表)写人至该闪存13的区域I。区域I在写入开始之前可能被全部擦除,或是它可以在需要的时候擦除页面。在完成时,该引导程序22对该新软件应用42验证接收自该对等装置的校验和。如果该校验和不正确,该引导程序22请求由该对等装置重新传输该新软件应用42。
[0076]如果微控制器I在接收该新软件应用42的时候意外被重置(例如由于停电),执行将会在该引导程序22中回复,其将指示该新的固件模块40从该对等装置再次请求该新软件应用42。
[0077]一旦该新软件应用42的校验和正确,该引导程序22移转控制权给该新软件应用42,因此该微处理器I可以开始以常态方式使用该新软件应用42以及该新的固件模块40。
[0078]在这种配置中,该引导程序22负责调用在旧和新的固体模块之间的适合的功能以进行更新,包括依需要传送链结信息以及从意外重置中恢复。
[0079]在一组可选的实施例中,该旧固件模块23可以负责保存链结信息以及记忆更新过程的状态。该旧固件模块23可以将该新的固件模块40写入至区域I以及验证它已经被正确接收。该引导程序22在更新阶段主要或唯一的任务仅是将该新的固件模块40从区域I复制到区域O。如果该微控制器I遇到意外重置(例如停电),在该旧软件应用27完全由该新的固件模块40重写之前,执行将会在该引导程序22中回复,它仅转移控制权给该旧固件模块23。该旧固件模块23维持状态,因此可以知道它必须再次开始接收该新的固件模块40,以及使用储存在存储器的链结信息以再次请求该新的固件模块40。该旧固件模块23将该链结信息写入至适当的存储器区域(例如在随机存取存储器或优选在闪存中的永久数据存储区),因此它可以由该新的固件模块40所存取。
[0080]一旦该新的固件模块40已经由该引导程序22所正确接收以及复制到区域0,该引导程序22移转控制权至新的固件模块40。新的固件模块40被设置为当其第一时间开始时了解,以及通过链接到该对等装置和接收该新软件应用42而响应。该旧固件模块23必须先前已经将该链结信息写入至适当存储器区域(例如在随机存取存储器或优选地在闪存的永久数据存储区),因此该新的固件模块40能够存取它以重新连接至该对等装置。
[0081]可选的,该新的固件模块40可以与相同的远端装置或与不同的远程装置建立新的链结信息,据以接收该新软件应用42。这可能会在该新的固件模块40已经被接收之后立即发生,或在时间延迟之后发生。
【主权项】
1.一种更新集成电路无线电通信装置的方法,其中: 该装置包含处理装置、存储器、及无线电通信逻辑;以及 该存储器存储(i)引导程序,(ii)在固件存储区域的固件模块,以及(iii)在软件-应用存储区域的软件应用,该固件模块包含用于根据预定的无线电协议来控制该无线电通信逻辑的指令,以及该软件应用包括用于调用该固件模块的无线电-通信功能的指令; 该方法包含: 该处理装置执行来自该引导程序或该固件模块的指令用于使用该无线电通信逻辑来接收新的固件模块,以及执行来自该引导程序或该固件模块的指令用于存储该新的固件模块到软件-应用存储区域,使得该软件应用至少的一部分被该新的固件模块所重写;以及 该处理装置执行来自该引导程序的指令用于从该软件-应用存储区域移动或复制该新的固件模块到该固件存储区域。2.根据权利要求1所述的方法,其中该软件应用完全被该新的固件模块所重写。3.根据权利要求1或2所述的方法,其中该引导程序或该新的固件模块包含用于使用该无线电通信逻辑来接收新软件应用的指令,以及该引导程序或该新的固件模块包含用于存储该新软件应用到该软件-应用存储区域的指令。4.根据前述任一项权利要求所述的方法,其中该固件存储区域以及该软件-应用存储区域每个包含非易失,读写存储器。5.根据前述任一项权利要求所述的方法,其中存储该新的固件模块到该软件-应用存储区域与接收该新的固件模块在时间上是重叠的。6.根据前述任一项权利要求所述的方法,其中该软件应用是位于预定的软件-应用存储地址,以及其中该方法包含存储该新的固件模块到该预定的软件-应用存储地址。7.根据前述任一项权利要求所述的方法,其中该引导程序是存储在一个或多个独立可擦写存储页面。8.根据前述任一项权利要求所述的方法,其中该引导程序不含用于直接使用该无线电通信逻辑的指令。9.根据前述任一项权利要求所述的方法,其中该固件模块是一预先链接的二进制图像以及其中该软件应用是预先链接的二进制图像。10.根据前述任一项权利要求所述的方法,其中该软件应用包含用于使处理器执行该固件模块中的指令的指令,据以使用该无线电通信逻辑来接收该新的固件模块。11.根据前述任一项权利要求所述的方法,其中从远程装置接收新的固件模块,该方法进一步包括,如果失去连接,该软件应用传递信息到该引导程序或该固件模块以和该远程装置重新建立无线电连接。12.根据前述任一项权利要求所述的方法,包含该处理装置执行用于检查该新的固件模块已被正确地接收的指令。13.—种集成电路无线电通信装置,包含: 处理装置; 存储器;以及 无线电通信逻辑, 其中,该存储器存储(i)引导程序,(ii)在固件存储区域的固件模块,以及(iii)在软件-应用存储区域的软件应用,该固件模块包括用于根据预定的无线电协议来控制该无线电通信逻辑的指令,以及该软件应用包括用于调用该固件模块的无线电-通信功能的指令; 该引导程序或该固件模块包含用于使用该无线电通信逻辑来接收新的固件模块的指令,以及该引导程序或固件模块包含用于存储该新的固件模块到该软件-应用存储区域的指令,使得该软件应用的至少一部分被该新的固件模块所重写;以及 该引导程序包含用于从该软件-应用存储区域移动或复制该新的固件模块到该固件存储区域。14.根据权利要求13所述的装置,其中该引导程序或该固件模块包含用于使该新的固件模块完全重写该软件应用的指令。15.根据权利要求13或14所述的装置,其中该引导程序或该新的固件模块包含用于使用该无线电通信逻辑来接收新软件应用的指令,以及该引导程序或该新的固件模块包含用于存储该新软件应用到该软件-应用存储区域的指令。16.根据权利要求13到15中任一项所述的装置,其中该固件存储区域以及该软件-应用存储区域每个包含非易失,读写存储器。17.根据权利要求13到16中任一项所述的装置,其中在该引导程序和/或该固件模块中的指令使得存储该新的固件模块到该软件-应用存储区域与接收该新的固件模块在时间上是重叠的。18.根据权利要求13到17中任一项所述的装置,其中该软件应用位于预定的软件-应用存储地址,以及其中该引导程序或该新的固件模块包含用于存储该新的固件模块到该预定的软件-应用存储地址的指令。19.根据权利要求13到18中任一项所述的装置,其中该引导程序存储到一个或多个独立可擦写存储页面。20.根据权利要求13到19中任一项所述的装置,其中该引导程序不含有用于直接使用该无线电通信逻辑的指令。21.根据权利要求13到20中任一项所述的装置,其中该固件模块是预先链接的二进制图像以及其中该软件应用是预先链接的二进制图像。22.根据权利要求13到21中任一项所述的装置,其中该软件应用包含用于使处理器执行该固件模块中的指令的指令,据以使用该无线电通信逻辑来接收该新的固件模块。23.根据权利要求13到22中任一项所述的装置,其中该引导程序或该固件模块包含用于从远程装置接收该新的固件模块,以及其中如果失去链接,该软件应用包含用于传递信息到该引导程序或该固件模块的指令以和该远程装置重新建立无线电连接。24.根据权利要求13到23中任一项所述的装置,其中该引导程序或该固件模块包含用于检查该新的固件模块已被正确地接收的指令。
【文档编号】G06F9/445GK105830021SQ201480069617
【公开日】2016年8月3日
【申请日】2014年11月26日
【发明人】马丁·特韦达尔, 乔尔·大卫·斯泰普尔顿
【申请人】北欧半导体公司