一种用于程序更新的装置、方法及微控制器的制造方法
【专利摘要】本发明提供一种用于程序更新的装置、方法及微控制器。其中,装置包括:包括第一存储单元、第二存储单元和更新控制单元;所述第一存储单元和所述第二存储单元互为备份,均存储最新版本程序;所述更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。本发明提供的方案提高了程序更新的安全性,使得使用程序的系统的鲁棒性随之提高。
【专利说明】
一种用于程序更新的装置、方法及微控制器
技术领域
[0001]本发明涉及智能控制领域,尤其涉及用于程序更新的装置、方法及微控制器。
【背景技术】
[0002]微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。
[0003]现阶段,基于微控制器的智能系统的程序升级方法有两种:使用专用烧写设备升级和在应用编程:IAP(In Applicat1n Programming)。IAP技术使得目标芯片的程序升级脱离了烧写设备的束缚,并且可以远程控制,是远程更新技术的核心,但是远程更新的对象往往是技术人员不便于直接“到达”的地方。
[0004]在程序更新过程中,当目标设备遇到异常如断电、异常复位等导致更新失败时,异常消除后,系统由于程序更新不完全导致其运行处于“死机”状态,由于维护人员不能及时到位,系统将在一定时间内瘫痪,功能完全丧失,这对用户来说显然是不能接受的。
【发明内容】
[0005]本发明的主要目的在于克服上述现有技术的缺陷,尤其涉及用于程序更新的装置、方法及微控制器。以解决现有技术中程序更新失败后系统出现的问题,提高了程序更新的安全性,使得使用程序的系统的鲁棒性随之提高。
[0006]本发明一方面提供了一种用于程序更新的装置,包括第一存储单元、第二存储单元和更新控制单元;所述第一存储单元和所述第二存储单元互为备份,均存储最新版本程序;所述更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。
[0007]可选地,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。
[0008]可选地,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。
[0009]可选地,还包括第一标识存储单元,用于存储第一标识,所述第一标识用于指示系统的工作存储单元;所述更新控制单元根据所述第一标识判断系统的工作存储单元。
[0010]可选地,若程序更新未成功,不改变所述第一标识的值,若程序更新成功后,在重新加载程序前,将所述第一标识设置为本次的非工作存储单元。
[0011]可选地,还包括第二标识存储单元,用于存储第二标识,所述第二标识用于指示更新程序是否成功。
[0012]可选地,当上电或复位时,重新加载程序。
[0013]可选地,第一存储单元、第二存储单元、更新控制单元、第一标识存储单元、第二标识存储单元中至少一个设置在flash空间。
[0014]本发明又一方面提供了一种,包括上述任一所述用于程序更新的装置。
[0015]本发明再一方面提供了一种用于程序更新的方法,所述方法用于包括第一存储单元、第二存储单元和更新控制单元的微处理器;所述第一存储单元和所述第二存储单元互为备份,均存储最新版本程序;当接收到更新命令时,所述更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。
[0016]可选地,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。
[0017]可选地,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。
[0018]可选地,还包括第一标识,所述第一标识用于指示系统的工作存储单元;所述更新控制单元根据所述第一标识判断系统的工作存储单元。
[0019]可选地,若程序更新未成功,不改变所述第一标识的值,若程序更新成功后,在重新加载程序前,将所述第一标识设置为本次的非工作存储单元。
[0020]可选地,还包括第二标识,所述第二标识用于指示更新程序是否成功。
[0021 ]可选地,当上电或复位时,重新加载程序。
[0022]可选地,所述第一存储单元、所述第二存储单元、所述更新控制单元中至少一个设置在flash空间。
[0023]本发明的方案,解决了现有技术中程序更新时意味中断导致的系统问题,提高了程序更新的安全性,使得使用程序的系统的鲁棒性随之提高。
【附图说明】
[0024]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0025]图1是本发明提供的用于程序更新的装置的一实施例的结构示意图;
[0026]图2是本发明提供的用于程序更新的装置的一实施例的结构示意图;
[0027]图3是本发明提供的微控制器的一实施例的结构示意图;
[0028]图4是本发明提供的用于程序更新的方法的一实施例的方法示意图;
[0029]图5是本发明提供的的方法的微控制器的一实施例的flash空间示意图;
[0030]图6是是本发明提供的程序更新方法的一实施例的方法流程图;
[0031]图7是是本发明提供的用于程序更新的装置的一实施例复位/上电方法流程图。
【具体实施方式】
[0032]为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0034]图1是本发明提供的用于程序更新的装置的一实施例的结构示意图。
[0035]本发明一【具体实施方式】,如图1所示。该实施方式提供了一种用于程序更新的装置11,包括第一存储单元111、第二存储单元113和更新控制单元115。
[0036]第一存储单元和所述第二存储单元互为备份,均存储最新版本程序。系统可以选择运行第一存储单元或第二存储单元的程序。
[0037]更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。
[0038]例如,系统运行第一存储单元的程序,若接收到更新命令,更新控制单元判断第二存储单元为非工作存储单元,则更新第二存储单元的程序。
[0039]可选地,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。
[0040]例如,上一次工作存储单元为第一存储单元,在第一存储单元工作时,更新第二存储单元的程序,但是由于断电、复位、网络超时等原因更新失败,在复位或上电后,仍保持第一存储单元为工作存储单元。
[0041]可选地,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。
[0042]例如,上一次工作存储单元为第一存储单元,在第一存储单元工作时,更新第二存储单元的程序,若更新成功,在复位或上电后,将第二存储单元为工作存储单元,并根据第二存储单元的内容更新第一存储单元的内容。
[0043]图2是本发明提供的用于程序更新的装置的一实施例的结构示意图。本发明一【具体实施方式】,结合本发明其他实施方式的各个方面。一种用于程序更新的装置21,包括第一存储单元211、第二存储单元213和更新控制单元215、第一标识存储单元217、第二标识存储单元219(可选)。
[0044]第一存储单元和所述第二存储单元互为备份,均存储最新版本程序。系统可以选择运行第一存储单元或第二存储单元的程序。
[0045]更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。
[0046]例如,系统运行第一存储单元的程序,若接收到更新命令,更新控制单元判断第二存储单元为非工作存储单元,则更新第二存储单元的程序。
[0047]可选地,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。
[0048]例如,上一次工作存储单元为第一存储单元,在第一存储单元工作时,更新第二存储单元的程序,但是由于断电、复位、网络超时等原因更新失败,在复位或上电后,仍保持第一存储单元为工作存储单元。
[0049]可选地,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。
[0050]例如,上一次工作存储单元为第一存储单元,在第一存储单元工作时,更新第二存储单元的程序,若更新成功,在复位或上电后,将第二存储单元为工作存储单元,并根据第二存储单元的内容更新第一存储单元的内容。
[0051]第一标识存储单元,用于存储第一标识,第一标识用于指示系统的工作存储单元;更新控制单元根据所述第一标识判断系统的工作存储单元。
[0052]例如,第一标识内容为指示第一存储单元,指示的方式可以有多种,例如编号、名称等等。则此时第一存储单元为工作存储单元。更新控制单元查询第一标识内容,根据第一标识指示的存储单元,确定第一存储单元为此时的工作存储单元。
[0053]可选地,若程序更新未成功,不改变所述第一标识的值,若程序更新成功后,在重新加载程序前,将所述第一标识设置为本次的非工作存储单元。
[0054]例如,第一标识内容为指示第一存储单元,更新第二存储单元的程序,若更新未成功,则第一标识内容仍指示第一存储单元,若更新成功,在复位或上电前,将第一标识内容变更为指示第二存储单元。
[0055]可选地,还包括第二标识存储单元,用于存储第二标识,第二标识用于指示更新程序是否成功。
[0056]可选地,第一存储单元、第二存储单元、更新控制单元、第一标识存储单元、第二标识存储单元中至少一个设置在flash空间。
[0057]图3是本发明提供的微控制器的一实施例的结构示意图。本发明一【具体实施方式】,结合其他实施方式的各个方面。微控制器3,包括本发明各个实施方式提供的用于程序更新的装置。
[0058]图4是本发明提供的用于程序更新的方法的一实施例的方法示意图。
[0059]本发明一【具体实施方式】,结合其他实施方式的各个方面。一种用于程序更新的方法,该方法用于包括第一存储单元、第二存储单元和更新控制单元的微处理器。该方法包括步骤S410和S430。
[0060]步骤S410,第一存储单元和所述第二存储单元互为备份,均存储最新版本程序。系统可以选择运行第一存储单元或第二存储单元的程序。
[0061]步骤S430,步骤当接收到更新命令时,所述更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。
[0062]例如,系统运行第一存储单元的程序,若接收到更新命令,更新控制单元判断第二存储单元为非工作存储单元,则更新第二存储单元的程序。
[0063]可选地,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。
[0064]例如,上一次工作存储单元为第一存储单元,在第一存储单元工作时,更新第二存储单元的程序,但是由于断电、复位、网络超时等原因更新失败,在复位或上电后,仍保持第一存储单元为工作存储单元。
[0065]可选地,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。
[0066]例如,上一次工作存储单元为第一存储单元,在第一存储单元工作时,更新第二存储单元的程序,若更新成功,在复位或上电后,将第二存储单元为工作存储单元,并根据第二存储单元的内容更新第一存储单元的内容。
[0067]可选地,还包括第一标识,第一标识用于指示系统的工作存储单元;更新控制单元根据第一标识判断系统的工作存储单元。
[0068]例如,第一标识内容为指示第一存储单元,指示的方式可以有多种,例如编号、名称等等。则此时第一存储单元为工作存储单元。更新控制单元查询第一标识内容,根据第一标识指示的存储单元,确定第一存储单元为此时的工作存储单元。
[0069]可选地,若程序更新未成功,不改变所述第一标识的值,若程序更新成功后,在重新加载程序前,将所述第一标识设置为本次的非工作存储单元。
[0070]例如,第一标识内容为指示第一存储单元,更新第二存储单元的程序,若更新未成功,则第一标识内容仍指示第一存储单元,若更新成功,在复位或上电前,将第一标识内容变更为指示第二存储单元。
[0071]可选地,还包括第二标识,所述第二标识用于指示更新程序是否成功。
[0072]可选地,第一存储单元、第二存储单元、更新控制单元中至少一个设置在flash空间
[0073]图5是本发明提供的的方法的微控制器的一实施例的flash空间示意图。
[0074]本发明一【具体实施方式】,结合本发明其他实施方式的各个方面。微处理器的flash空间包括跳转程序区,Bootloader区(更新控制单元的一种实现方式),用户程序低区(第一存储单元/第二存储单元的一种实现方式),用户程序高区(第二存储单元/第一存储单元的一种实现方式),程序运行标识区(第一标识单元的一种实现方式),更新状态标识区(第二标识单元的一种实现方式)。
[0075]跳转程序为芯片上电或者复位后,通过读取程序运行标识区内容和/或更新状态标识区内容来判断当前要如何执行。
[0076]Bootloader区,该区负责调用例如IAP方法并结合运行标识区内容来更新用户程序。如果当前标识区为低区,则本次更新高区,反之,如果当前标识区为高区,则本次更新低区。
[0077]用户程序低区,当前运行的最新程序或备份程序。
[0078]用户程序高区,当前运行的最新程序或备份程序。
[0079]程序运行标识区,内容表征当前应该运行哪个区用户程序。
[0080]更新状态标识区,内容表征bootloader更新结果。
[0081]图6是本发明提供的程序更新方法的一实施例的方法流程图。本发明一【具体实施方式】,结合本发明其他实施方式的各个方面。
[0082]步骤一,应用程序入口。
[0083]步骤二,判断是否收到远程更新命令,若收到执行步骤三,否则执行应用程序功能,并返回步骤二。
[0084]步骤三,Bootloader区。
[0085]步骤四,修改更新状态标识区内容为进行中。
[0086]步骤五,读取运行标识区内容。
[0087]步骤六,判断运行标识区内容是否指向用户程序低区,若判断结果为否,则将更新指针调整指向为用户程序低区,执行步骤八,否则执行步骤七。
[0088]步骤七,将更新指针调整指向用户程序高区。
[0089 ] 步骤八,调用例如IAP方法更新程序。
[0090]步骤九,判断是否完成更新,若未完成更新,则执行步骤八,否则执行步骤十。
[0091]步骤十,修改更新状态标识区内容为已经完成。
[0092]步骤十一,更新运行标识,将运行标识指示为更新完成的用户程序区。
[0093]步骤十一后,系统复位或上电。
[0094]图7是本发明提供的用于程序更新的装置的一实施例复位/上电方法流程图。本发明一【具体实施方式】,结合本发明其他实施方式的各个方面。
[0095]步骤一,上电或复位。
[0096]步骤二,运行跳转程序。
[0097]步骤三,读取更新状态标识区内容。
[0098]步骤四,判断更新状态标识区是否为空,若为空则执行左侧分支的步骤五,否则执行右侧分支的步骤五。
[0099]左侧分支步骤五,修改运行标识指示用户程序低区。
[0100]左侧分支步骤六,修改更新状态标识为已完成。
[0101]左侧分支步骤七,跳转到低区程序运行。
[0102]右侧分支步骤五,判断更新状态标识是否是已完成,判断结果为否时,修改更新状态标识为已完成。
[0103]右侧分支步骤六,读取运行标识区内容。
[0104]右侧分支步骤七,判断运行标识区内容是否指向用户程序低区,若是则跳转至低区程序运行,否则跳转至高区程序运行。
[0105]由此,利用本发明的方案,解决了现有技术中程序更新时意味中断导致的系统问题,提高了程序更新的安全性,使得使用程序的系统的鲁棒性随之提高。
[0106]本文中所描述的功能可在硬件、由处理器执行的软件、固件或其任何组合中实施。如果在由处理器执行的软件中实施,那么可将功能作为一或多个指令或代码存储于计算机可读媒体上或经由计算机可读媒体予以传输。其它实例及实施方案在本发明及所附权利要求书的范围及精神内。举例来说,归因于软件的性质,上文所描述的功能可使用由处理器、硬件、固件、硬连线或这些中的任何者的组合执行的软件实施。此外,各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0107]在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0108]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为控制装置的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0109]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(R0M,Read-0nly Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0110]以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
【主权项】
1.一种用于程序更新的装置,其特征在于,包括第一存储单元、第二存储单元和更新控制单元; 所述第一存储单元和所述第二存储单元互为备份,均存储最新版本程序; 所述更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。2.根据权利要求1所述的装置,其特征在于,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。3.根据权利要求1或2所述的装置,其特征在于,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。4.根据权利要求1-3任一所述的装置,其特征在于,还包括第一标识存储单元,用于存储第一标识,所述第一标识用于指示系统的工作存储单元;所述更新控制单元根据所述第一标识判断系统的工作存储单元。5.根据权利要求4所述的装置,其特征在于,若程序更新未成功,不改变所述第一标识的值,若程序更新成功后,在重新加载程序前,将所述第一标识设置为本次的非工作存储单J L ο6.根据权利要求1-5任一所述的装置,其特征在于,还包括第二标识存储单元,用于存储第二标识,所述第二标识用于指示更新程序是否成功。7.根据权利要求1-6任一所述的装置,其特征在于,当上电或复位时,重新加载程序。8.根据权利要求1-7任一所述的装置,其特征在于,第一存储单元、第二存储单元、更新控制单元、第一标识存储单元、第二标识存储单元中至少一个设置在flash空间。9.一种微控制器,其特征子在于,包括权利要求1-8任一所述的装置。10.—种用于程序更新的方法,其特征在于,所述方法用于包括第一存储单元、第二存储单元和更新控制单元的微处理器; 所述第一存储单元和所述第二存储单元互为备份,均存储最新版本程序; 当接收到更新命令时,所述更新控制单元,用于判断第一存储单元还是第二存储单元是工作存储单元,并根据判断结果,更新非工作存储单元中的程序。11.根据权利要求10所述的方法,其特征在于,当程序更新未成功时,则在重新加载程序时,将上一次的工作存储单元作为本次的工作存储单元。12.根据权利要求10或11所述的方法,其特征在于,当程序更新成功后,则在重新加载程序时,将上一次的非工作存储单元作为本次的工作存储单元,并根据本次工作存储单元的内容更新本次非工作存储单元的内容。13.根据权利要求10-12任一所述的方法,其特征在于,还包括第一标识,所述第一标识用于指示系统的工作存储单元;所述更新控制单元根据所述第一标识判断系统的工作存储单元。14.根据权利要求13所述的方法,其特征在于,若程序更新未成功,不改变所述第一标识的值,若程序更新成功后,在重新加载程序前,将所述第一标识设置为本次的非工作存储单元。15.根据权利要求10-14任一所述的方法,其特征在于,还包括第二标识,所述第二标识用于指示更新程序是否成功。16.根据权利要求10-15任一所述的方法,其特征在于,当上电或复位时,重新加载程序。17.根据权利要求10-16任一所述的方法,其特征在于,所述第一存储单元、所述第二存储单元、所述更新控制单元中至少一个设置在flash空间。
【文档编号】G06F9/445GK105975322SQ201610436397
【公开日】2016年9月28日
【申请日】2016年6月15日
【发明人】李祥
【申请人】珠海格力电器股份有限公司