用于以无线方式重编程通信系统中的存储器的系统和方法

文档序号:7849007
专利名称:用于以无线方式重编程通信系统中的存储器的系统和方法
用于以无线方式重编程通信系统中的存储器的系统和方法要求优先权本申请要求享有于2010年2月4日提交的、美国临时申请N0.61/301,507的权益,本申请的全部内容通过弓I用并入本文。
背景技术
本发明涉及一种用于重编程存储器的系统和方法,具体涉及以无线方式重编程驻留在可训练式收发机的存储器中的软件。用于控制诸如车库开门器、防盗门、家用报警器、照明设备、计算机等之类的电器和设备的常规系统使用了单独的遥控器以操作相应的电器和/或设备。对这种常规系统来说,难于控制多个设备或电器,更不用说将电器和设备的操作并入单个可控系统。例如,车库开门器机制响应于射频控制信号而开关车库门。该控制信号通常是从与车库开门器一起销售的遥控器产生并发送的。所述控制信号具有预设的载波频率和控制代码,以使车库开门器机制只对发出相关联的控制信号的遥控器做出响应。与这种系统相关联的问题在于:开门器必须接收特定的预定控制信号来被操作。换言之,每个电器和设备必须接收特定的预定控制信号。因此,希望控制多个电器和/或设备的用户需要具有多个遥控器。随着技术社会不断演进,对于能以合并方式操作多个远端电子设备(例如位于离控制设备远端的电器和电子设备)的无线通信系统的需要不断增长。当前存在的无线通信系统允许多个电器和设备与集中式或单个远端设备通信。一个此类系统是JohnsonControls Inc.拥有的Homelink ,在该系统中,可训练式收发机能“学习”接收到的控制信号的特性,以使所述可训练式收发机随后可以产生并向受遥控的设备或电器发送具有学习到的特性的信号。例 如,在美国专利N0.5,903,226中公开了一个此类系统,并通过引用将其并入本申请。图1示出的是具有收发机电路34的示例性无线控制系统以及同样具有收发机电路33的远端电子系统(远程设备)。另一个此类系统是在欧洲专利N0.0935226B1中公开的,并同样通过引用将其并入本申请。为使可训练式收发机工作,每一个信号通常与用户致动的开关相关联,或者用户通过选择关联的开关(例如通过按下可训练式收发机上的与将被操作的设备相关联的按钮)来选择在可训练式收发机上经学习的信号之一。为使可训练式收发机学习长度和持续时间不同的各种信号的信号特性,在可训练式收发机内部为每一个传输信道提供并分配的存储器容量必须足以存储将被学习的最大信号的特性。此外,为使可训练式收发机在通信系统中正常工作,其必须与远端电子设备兼容,特别是与可训练式收发机随着时间的推移很可能与其进行通信的数量可能很多的远端电子设备兼容。显然,要预测这些远端电子设备中用户可能希望控制的远端电子设备以使为了兼容性而对可训练式收发机进行编程是较困难的。另外,随着新的远端电子设备的发展,在初始编程了可训练式收发机之后,当前还没有用以更新可训练式收发机以使新的远端电子设备兼容地用于无线通信系统的处理。

发明内容
本发明涉及一种重编程存储器的系统和方法,具体涉及以无线方式重编程驻留在可训练式收发机的存储器中的诸如应用代码之类的软件。通过以无线方式重编程存储器,允许从远端位置更新或替换可训练式收发机中的软件,而在远端位置处到该产品的直接或有线连接是不可用的。在本发明的一个实施例中,存在一种使用远端设备来对无线控制系统中的存储器进行编程的方法,其包括:接收来自所述远端设备的应用代码;以及将所述应用代码编程到所述无线控制系统的所述存储器的至少一部分中,以使所述无线控制系统使用所编程的应用代码来操作原本与所述无线控制系统不配对的至少一个远端电子设备。在本发明的一个方面中,所述方法包括:在所述无线控制系统上进入编程模式;对所述无线控制系统与所述远端设备之间的通信进行验证;以及指示所述验证通信的状态。在本发明的另一个方面中,所述应用代码用公共密钥来加密并附加了报头信息。在本发明的另一个方面中,所述方法包括:提取所述报头信息;使用所述公共密钥来解密至少第一数据块;以及将数据保存在所述远端设备的程序代码缓存器中,以便发送到所述无线控制系统。在本发明的另一个方面中,所述无线控制系统还包括:从所述远端设备接收所述至少第一数据块;核实所述至少第一数据块的完整性;确定所述至少第一数据块的传输的结束;以及用所述应用代码来编程所述无线控制系统的存储器的至少一部分。在本发明的另一个方面中,所述远端设备包括核实所述应用代码兼容于所述远端电子设备;以及将至少一个数 据块发送到所述无线控制系统直至到达数据的结束为止。在本发明的另一个实施例中,存在一种用于编程存储器的系统,其包括:至少包含收发机电路和存储器的无线控制系统;以及至少包含收发机电路和存储器的远端设备,其中,在所述远端设备的所述存储器中保存的应用代码被发送到所述无线控制系统,并由所述收发机电路接收,以及由所述收发机电路接收的所述应用代码被编程到所述无线控制系统的所述存储器的至少一部分中,以使所述无线控制系统使用所编程的应用代码来操作原本与所述无线控制系统不配对的至少一个远端电子设备。


以下将参考例图来描述本发明,其中:图1示出的是根据现有技术的示例性无线控制系统和远端电子设备。图2A示出的是根据本发明来重编程存储器的示例性流程图。图2B示出的是根据本发明的示例性存储设备和工具。图2C示出的是根据本发明的具有输入设备的放大视图的示例性无线控制系统。图3示出的是根据本发明与工具通信的示例性无线控制系统。图4A和4B示出的是根据本发明在可训练式收发机与工具之间进行的通信。图5示出的是根据本发明转换并加密的示例性代码流。图6示出的是根据本发明的被插入到工具中以用于编程存储器的经加密的代码。图7A和7B示出的是从工具观测到的数据接收和发送的示例性流程图。
图8A和SB示出的是从可训练式收发机观测到的数据接收和发送的示例性流程图。图9示出的是无线通信系统中的存储器的示例性示意图。
具体实施例方式本发明涉及一种用于重编程存储器的系统和方法,具体涉及以无线方式重编程驻留在可训练式收发机的存储器中的软件,例如应用代码。通过以无线方式重编程存储器,允许从远端位置更新或替换可训练式收发机中的软件,而在远端位置处到该产品的直接或有线连接是不可用的。在本发明的一个实施例中,驻留在可训练式收发机的存储器中的软件被重编程(以有线或无线方式)。在示例性实施例中,经加密的程序代码以无线方式例如经由射频(RF)链路从处于离可训练式收发机的远端位置处的设备(或“工具”)进行传送。远端位置可以是能够针对其执行有线或无线传输的任何远处。可训练式收发机使用驻留在一个存储区域中的软件(称为引导加载器代码)来解密并处理程序代码,以便将其编程到另一个存储区域中(称为应用代码)。这种编程可以是对当前驻留在存储器中的应用代码进行的完整或部分的重编程。以下将会 参考附图来进行更详细的描述。图2A示出的是根据本发明来重编程存储器的示例性流程图。优选地经加密(如下文中参考图5所述)的程序代码可以保存在存储器中,例如USB闪存驱动器、计算机、蜂窝电话、PDA等等。如下所述,该程序代码被插入或发送到用于重编程可训练式收发机的工具。在步骤(I)中,保存有经加密的程序代码(Appcode.enc)的诸如闪存驱动器之类的设备被插入到工具中。相关示例可以参见图2B,该图示出的是被插入工具RT的闪存驱动器USB的一个示例性实施例。工具RT从闪存驱动器USB中提取数据,并且将数据解密成二进制程序数据(AppCode.bin)以便存入工具RT中并供以后使用。在步骤(2)中,例如通过按下可训练式收发机12上的如图2C所示的一系列按钮B1、B2、B3,将可训练式收发机12置成编程模式。一旦将设备置成编程模式,在步骤(3)中在工具RT与可训练式收发机12之间就发生验证序列。在该验证序列期间传送的是与对应用代码的重编程相关的数据,包括例如部件编号(EPN)、序列号(SN)以及当前的应用版本(如果适用的话)和引导加载器版本。一旦通过验证(通常是在计算了各种密钥和计数器之后),可训练式收发机12就向工具RT通告该应用准备好被编程。工具RT开始以每次一个RF数据帧的方式传送保存在闪存设备上的经加密的应用程序代码,直至传送了全部应用程序代码为止。应该理解的是,虽然在示例性实施例中描述的是RF传输,但是本发明并不局限于这种类型的传输,并且很容易理解,任何形式的无线传输都是可以使用的。还在每次数据帧的传输期间从可训练式收发机12向工具RT回发应答(ACK),以确认在传送期间没有出现过错误。如果在数据帧的传输期间出现错误(例如校验和(Checksum)失败),则将进行规定次数的“重试”,直至认定传输成功为止。如图2的步骤(4)所示,可以在可训练式收发机的显示器和/或工具RT的显示器上指示在传送期间发生的任何错误。该显示器可以例如是LED 36a或其他任何装置以指示响应。例如,当可训练式收发机12写入程序存储器AC时,可训练式收发机上的LED可以闪烁,以表明正在执行处理,或者屏幕可以显示正在将数据写入存储器。显示器36a还可以指示成功完成或是未成功完成数据的传送。例如,LED可以将指示错误类型且指示需要进行额外编程的数字代码进行闪烁,或者绿灯可以指示成功完成。图3示出的是根据图2B和2C的与工具通信的示例性无线控制系统。在示例性实施例中,该无线控制系统(也称为可训练式收发机)12和工具RT中的每一个都包括操作者输入设备32/32a、显示器36/36a、控制电路30/30a、存储器31/31a以及收发机电路54/54a。该工具还包括用于接收数据的输入端,例如用于USB存储设备的输入端。应该了解,这些描述本质上是为举例,并且所述工具和可训练式收发机(即无线控制系统)并不局限于所公开的实施例。例如,可训练式收发机和工具不必包含实施例中示出的每一个设备,并且还可以包括额外特征,例如为连接到其他设备提供的接口。图4A和4B示出的是根据本发明而在可训练式收发机与工具之间进行的通信。应用代码驻留在可训练式收发机12 (参见图9)的应用代码块AC存储器31中。在编程可训练式收发机12以例如更新可训练式收发机的存储器31中的应用代码从而与新的或不兼容的远端电子设备一起工作期间,用从工具RT发送的应用代码更新或取代应用代码块中的数据(应用代码)。作为构造所发送的应用代码的一部分并且为了保护代码存储的安全,从应用代码中解析出相关数据并将相关数据加密(例如使用公共密钥),并且将诸如部件(类型)编号之类的信息添加至应用代码文件的报头中(5),如图5所示以及如下文更详细描述地那样。然后,将经加密的程序代码(AppCode.enc)保存在工具RT或是能够由工具RT访问的另一存储设备(例如闪存驱动器)中,以供以后使用。相关示例可以参见在下文中更详细描述的图6。应该了解,任何加密技术均可用于加密数据,并且加密并不局限于所描述的示例性实施例。为了重编程可训练式收发机12的存储器31,可以使用能够读取保存在USB闪存驱动器上的应用代码的设备RT (例如前述工具RT)。所述工具RT可以例如是可以正确解密保存在USB闪存驱动器上的 经加密的应用代码的独立单元或计算机。应该了解,该工具可以是用于读取和解密应用代码以及将应用代码发送到可训练式收发机的任何设备,如由技术人员所容易理解地。一旦从闪存驱动器USB接收到经加密的数据(AppCode.enc),工具RT就在10处从经加密的数据的报头文件中提取诸如部件(类型)编号之类的信息,并解密第一数据块(例如使用公共密钥)。应该了解,正如技术人员所理解地那样,可以解密整个文件,而不是一个数据块。为使可训练式收发机12与工具RT通信,在15处例如通过在输入设备32上选择一个按钮序列,将所述可训练式收发机12置成编程模式(“引导加载器模式”)。一旦进入编程模式,就由可训练式收发机产生唯一的密钥(例如用于与可训练式收发机相关联的每一个工具的密钥)。然后,将诸如可训练式收发机的部件(类型)编号、序列号、应用版本和引导加载器版本(未经加密)之类的信息发送至工具(20)。在25处,工具RT核实应用代码与可训练式收发机12的部件(类型)编号兼容,以便与可训练式收发机12同步。如果部件编号不兼容(即,部件编号核实未通过),则通信结束。否则,工具RT计算唯一的密钥,在35处创建一个随机计数器值(AES_CTR),以及在40处创建针对验证的要求。在45处将所述要求与地址范围一起发送到可训练式收发机12,并且可训练式收发机12核实AES_CTR值和编程地址范围并将其保存在存储器31中(在50处)。在55处,将应答(ACK)发回到工具RT,以及在60和65处,通过使用在工具RT和可训练式收发机12处的AES_CTR值来分别计算密码流。此时,工具RT和可训练式收发机12已经确认了兼容性并核实通过了传输链路。在70处,通过使用与密码流执行“异或”运算的第一程序数据块来创建经加密的数据(EData),并且创建RF数据帧(在75处)。EData包括程序代码以及为重编程可训练式收发机所需要的相关联的信息。将EData置于RF数据帧内部,以使得可以在传输中包含与数据相关联的额外信息(例如长度和校验和)以及各种命令(CMD)。将RF数据帧从工具RT发送到可训练式收发机12 (在80处),此处使用例如校验和来检查其完整性(在85处)。如果核实通过了校验和,则在90处向工具发回校验和应答(ACK),同时工具RT等待来自处理所述数据的可训练式收发机12的“就绪”应答(在95处)。可训练式收发机12从RF数据帧中提取EData,对该数据进行处理以使得使用密码流来对其进行解密,以及使用例如嵌入到EData中的诸如地址和长度之类的额外信息。然后,在100处,将新的/经更新的程序代码写入应用代码块AC中的存储器中。然后在105-115处,在工具RT和可训练式收发机12上递增随机数AES_CTR,并且计算另一个密码流。此时,处理循环进行至用与密码流进行异或运算的下一程序数据块来创建另一 EData (在120处),创建RF数据帧(在125处),以及将RF数据帧发送到可训练式收发机12 (在130)。处理持续进行,直至可训练式收发机12接收到最后一个数据块为止,此时,工具RT向可训练式收发机12发送数据结束(EOD)命令以及完全的校验和(在135处)。当在可训练式收发机12处接收到EOD命令时,计算经编程的完全的校验和并用接收到的校验和对其进行核实(在140处),并且将ACK发送到工具RT(在145处),其完结数据过程的传送(在150处)。此时存储了应用代码。图5示出的是根据本发明转换并加密的示例性代码流。虽然程序代码(AppCode.hex)200最初是作为十六进制代码编程的,但并不局限于这样的实施例。应该了解,任何形式的代码都是可以使用的。当转换/加密工具205 (其可以是能够转换并加密数据的任何设备,例如计算机或工具RT)接收到AppCode.hex时,在210处输入目标可训练式收发机的部件编号。在215处,为获取相关数据对AppCode.hex文件进行解析,并将其作为二进制文件(AppCode.bin)保存在工具RT中。AppCode.bin文件220是使用AES和公共密钥来在225处加密的,在230处将部件编号附加到该文件的报头中并将其作为经加密的应用代码(AppCode.enc) 235来 存储(例如,存储在闪存驱动器USB上)。图6示出的是根据本发明的被插入到工具以用于编程存储器的经加密的代码。将所存储的AppCode.enc文件235发送到工具RT(或者如果该文件是由工具RT创建的,那么其已经驻留在存储器中)。这里,在240处提取报头中的部件编号,并且在245处使用公共密钥来解密第一数据块。然后,在250处,将数据保存在存储器中,以便在以后发送到可训练式收发机12。图7A和7B示出的是如图4A和4B所描述的从工具观测到的数据的发送和接收的示例性流程图。一旦程序代码准备好(255)从工具RT发送到可训练式收发机12,工具RT就在260处确定是否接收到来自可训练式收发机12的状态消息。如果没接收到,则工具RT等待状态消息。如果已经接收到状态消息,则工具RT在265处确定所发送的消息中包含的部件编号是否匹配。如果不匹配,那么在270处出现处理错误。如果目标匹配,则在280处计算唯一的密钥,在285处创建随机计数器AES-CTR,以及在290处创建针对验证的要求并将其连同地址范围一起发送。一旦在300处接收到来自可训练式收发机12的应答(ACK),则在310处使用AES_CTR计算一个密码流。如果没有接收到ACK,那么在305处出现处理错误。一旦ACK被接收到并且是就绪的,则在325处创建EData,在330处创建RF数据帧,以及在335处发送该RF数据帧。如果没有接收到“就绪的”ACK,那么在320处出现处理错误。否则,工具RT等待表明RF数据帧的校验和被接收到的ACK,并且确定其是“就绪的”(350)还是“未就绪的”(360)。否则,在360处出现处理错误。如果“就绪”,则在370处确定是否出现数据结束(EOD)。如果没有出现,则在365处递增AES_CTR并且计算新的密码流。处理返回至在325处创建EData。否则,向可训练式收发机12发送EOD命令以及完全的校验和(CS),其中在380处中核实该ACK。如果核实通过,则处理在390处完成,否则,在385处出现处理错误。图8A和SB示出的是根据图4A和4B的从可训练式收发机观测到的数据的接收和发送的示例性流程图。在400处,例如通过在操作者输入设备32上选择按钮序列来进入引导加载器模式。在405处创建唯一的密钥,并且可训练式收发机12在410处发送信息(例如部件编号、序列号等等)。然后,可训练式收发机在415处确定是否接收到工具RT的要求。如果没有接收到的话,那么在420处出现处理错误。如果接收到的话,那么在425处核实所述要求。如果核实未通过,那么在430处出现处理错误。另一方面,如果核实通过,那么在435处存储地址范围并在44 0处存储AES_CTR值,以及在445处向工具RT发送ACK。然后,在450处使用AES_CTR来计算密码流,并在455处向工具RT发送ACK。作为回应,在460处接收到来自工具RT的RF数据帧,并使用校验和(CS)来检查数据帧。如果CS无效,那么在470处出现处理错误。如果CS有效,则在480处向工具RT发送ACK传输以确认关于CS的核实。在485处确定是否还接收到指示数据帧传输结束的EOD命令。如果接收到,则在495处接收并证实完全的CS,在500处发送用于指示关于CS的核实的ACK,并且处理在505处结束。否则,如果没有接收到EOD命令,则在490处,从RF数据帧中提取EData,处理该数据,并对存储器进行编程。在510处,递增AES_CTR,并计算下一密码流,其后发送表明可训练式收发机12为“就绪的”的ACK。处理返回至在460处接收额外的RF数据帧。图9示出的是无线通信系统中的存储器的示例性示意图。可训练式收发机具有存储器31,存储器31包括但不局限于引导加载器代码BLC以及应用代码AC。引导加载器代码BLC包括用于在接收到来自工具RT的应用代码AC的时候控制对应用代码AC的重编程的代码,应用代码AC是允许可训练式收发机12与远端电子设备18通信的代码。通过更新(部分重编程)和完全更新(完全重编程)应用代码AC,允许可训练式收发机与添加到系统中且先前不能与可训练式收发机通信的新的远端电子设备一起工作,还允许可训练式收发机与自身尚未更新的远端电子设备一起工作。虽然在附图中示出并在本文描述了示例性实施例,但是应该理解,这些实施例仅仅是作为示例提供的。例如,替换的实施例可以适合在商业市场中使用,其中办公室照明、安全系统、计算机、电视、车库门或是其他任何电器或设备受到控制。相应地,所描述的特征并不局限于特定的实施例,而是应该扩展到仍落入所附权利要求的范围内的各种修改。现在,本领域技术人员可以从以上的描述中了解到,本文的概括性教导可以采用多种形式来实施。因此,虽然所描述的特征是结合其特定的示例来描述的,但是这些特征的真实范围不应该受此限制,这是因为对本领域技术人员来说,通过研究附图和本说明书,其他的修改将会是显而易见的。
权利要求
1.一种使用远端设备来编程无线控制系统中的存储器的方法,包括: 接收来自所述远端设备的应用代码;以及 将所述应用代码编程到所述无线控制系统的所述存储器的至少一部分中,以使所述无线控制系统使用所编程的应用代码来操作原本与所述无线控制系统不配对的至少一个远端电子设备。
2.如权利要求1所述的用于编程存储器的方法,还包括: 在所述无线控制系统上进入编程模式; 验证所述无线控制系统与所述远端设备之间的通信;以及 指示所述验证通信的状态。
3.如权利要求2所述的用于编程存储器的方法,其中,所述应用代码用公共密钥来加密并且附加了报头信息。
4.如权利要求3所述的用于编程存储器的方法,还包括: 提取所述报头信息; 使用所述公共密钥来解密至少第一数据块;以及 将数据保存在所述远端设备的程序代码缓存器中,以便发送到所述无线控制系统。
5.如权利要求4所述的用于编程存储器的方法,其中,所述无线控制系统还包括: 从所述远端设备接收所述至少第一数据块; 核实所述至少第一数据 块的完整性; 确定所述至少第一数据块的传输的结束;以及 使用所述应用代码来编程所述无线控制系统的所述存储器的至少一部分。
6.如权利要求4所述的用于编程存储器的方法,其中,所述远端设备还包括: 核实所述应用代码兼容于所述远端电子设备;以及 将至少一个数据块发送到所述无线控制系统,直至到达数据的结束为止。
7.一种用于编程存储器的系统,包括: 至少包含收发机电路和存储器的无线控制系统;以及 至少包含收发机电路和存储器的远端设备,其中 在所述远端设备的所述存储器中保存的应用代码被发送到所述无线控制系统,并由所述收发机电路接收,以及 由所述收发机电路接收的所述应用代码被编程到所述无线控制系统的所述存储器的至少一部分中,以使所述无线控制系统使用所编程的应用代码来操作原本与所述无线控制系统不配对的至少一个远端电子设备。
8.如权利要求7所述的用于编程存储器的系统,其中,所述无线控制系统: 在所述无线控制系统上进入编程模式; 验证所述无线控制系统与所述远端设备之间的通信;以及 指示所述验证通信的状态。
9.如权利要求8所述的用于编程存储器的系统,其中,所述应用代码用公共密钥来加密并且附加了报头信息。
10.如权利要求9所述的用于编程存储器的系统,其中,所述远端设备: 提取所述报头信息;使用所述公共密钥来解密至少第一数据块;以及将数据保存在所述远端设备的程序代码缓存器中,以便发送到所述无线控制系统。
11.如权利要求10所述的用于编程存储器的系统,其中,所述无线控制系统:从所述远端设备接收所述至少第一数据块;核实所述至少第一数据块的完整性;确定所述至少第一数据块的传输的结束;以及使用所述应用代码来编程所述无线控制系统的所述存储器的至少一部分。
12.如权利要求10所述的用于编程存储器的系统,其中,所述远端设备:核实所述应用代码兼容于所述远端电子设备;以及将至少一个数 据块发送到所述无线控制系统,直至到达数据的结束为止。
全文摘要
本发明涉及一种用于重编程存储器的系统和方法,具体涉及以无线方式重编程驻留在可训练式收发机的存储器中的诸如应用代码这类的软件。通过以无线方式重编程存储器,允许从远端位置更新或替换可训练式收发机中的软件,而在远端位置处到该产品的直接或有线连接是不可用的。
文档编号H04L9/32GK103222227SQ201180017670
公开日2013年7月24日 申请日期2011年2月4日 优先权日2010年2月4日
发明者C·H·武伊斯特, T·R·维特科夫斯基, C·L·希勒, S·L·吉林斯, T·D·克拉韦尔 申请人:约翰逊控制技术公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1