固件升级方法技术

技术编号:19778065 阅读:18 留言:0更新日期:2018-12-15 11:13
本申请公开了一种固件升级方法。该固件升级方法包括响应主机发送的升级命令,确定存储当前运行固件的第一存储区信息;接收主机发送的升级数据,根据确定出的第一存储区信息,将所述升级数据写入第二存储区,所述第一存储区、第二存储区为板卡对应的固件存储区;将写入所述第二存储区的固件设置为所述板卡重启后的运行固件。本申请解决了现有IAP升级中不能实时升级的技术问题。

【技术实现步骤摘要】
固件升级方法
本申请涉及互联网
,具体而言,涉及一种固件升级方法。
技术介绍
随着科技的迅速发展,机器人在各个领域的应用越来越广泛。机器人硬件部分是由不同功能的硬件板卡构成,在机器人正常工作过程中,会通过不同的硬件板卡执行其期望的运行态势。各个硬件板卡在产品出厂之前已将程序烧录进去,然而机器人在使用过程中,会因实际应用中的新需求或自身已有的规划,不断拓展其功能,这就导致底层硬件进行相应的固件升级。现有的升级形式主要有ICP(在电路编程)、ISP(在系统编程)和IAP(在应用编程)。其中,ICP只要MCU处于上电状态即可,不必预烧任何代码在MCU;ISP则是在烧录的时候,直接在系统上进行,不需要把MCU取下来,并且烧写的是整个程序;IAP同样是在硬件上进行编程,MCU却可以在系统中获取新代码并对程序的某部分重新编程,即可用程序来改变程序,修改程序的一部分达到升级、消除BUG的目的。ICP适合于研发阶段,由于烧录纯粹是ICP硬件的行为,MCU无法自己更新,给系统设计者的弹性较小。ISP给系统设计者的弹性较大,但是硬件升级一般需要外部电路辅助实现,如果升级需要到现场解决,在产品的量产阶段优势不大。IAP具备在线升级的功能,在升级时不需要开发人员进行现场操作,因此得到了广泛的应用。而现有IAP在升级时,需要板卡在重启时实现,会中断板卡的工作,且不能进行实时升级。针对现有IAP升级时的问题,目前尚未提出有效的解决方案。
技术实现思路
本申请的主要目的在于提供一种固件升级方法,以解决现有技术中IAP升级中存在的问题。为了实现上述目的,根据本申请的一个方面,提供了一种固件升级方法。根据本申请的固件升级方法包括:响应主机发送的升级命令,确定存储当前运行固件的第一存储区信息;接收主机发送的升级数据,根据确定出的第一存储区信息,将所述升级数据写入第二存储区,所述第一存储区、第二存储区为板卡对应的固件存储区;将写入所述第二存储区的固件设置为所述板卡重启后的运行固件。进一步的,接收主机发送的升级数据,根据确定出的第一存储区信息,将所述升级数据写入第二存储区,包括:接收主机发送的升级数据,判断接收到的升级数据是否正确,如果正确,则将所述升级数据写入所述第二存储区;如果错误,则向所述主机发送数据接收错误的错误代码;判断所述写入是否成功,如果未成功,则向所述主机发发送写入失败的错误代码。进一步的,将写入所述第二存储区的固件设置为所述板卡重启后的运行固件,包括:将参数配置文件中的程序跳转地址修改为所述第二存储区的地址,其中所述程序跳转地址为所述板卡上电时,运行固件的跳转地址。进一步的,所述升级数据为HEX文件。进一步的,所述主机与所述板卡之间通过CAN协议进行通信。为了实现上述目的,根据本申请的另一方面,提供了一种固件升级方法。根据本申请的固件升级方法,包括:向待升级板卡发送固件升级命令;接收所述待升级板卡的响应信息,所述响应信息包括待升级板卡存储当前运行固件的第一存储区信息;向所述待升级板卡发送升级数据,以使得所述待升级板卡根据所述第一存储区信息,将所述升级数据写入第二存储区,所述第一存储区、第二存储区为板卡对应的固件存储区。进一步的,接收所述板卡发送的错误代码信息,并根据错误代码信息重新发送所述升级数据。进一步的,向待升级板卡发送固件升级命令之前还包括:接收固件升级数据,比对所述固件升级数据的版本号,判断是否需要升级,确定待升级的板卡,所述版本号包括硬件版本号和软件版本号。为了实现上述目的,根据本申请的另一方面,提供了一种存储介质。根据本申请的存储介质,包括:程序,所述程序在被执行时,用于使主机实现相应的方法。为了实现上述目的,根据本申请的另一方面,提供了一种服务器。根据本申请的服务器,包括:存储器,所述存储器包括程序;处理器,执行所述程序以实现相应的方法。在本申请方案中,通过设置两个固件存储区,使得在线升级时,将升级数据存放在当前运行固件存储区之外的另外一个存储区,从而实现了快速实时升级的技术效果,进而解决了现有IAP升级中存在的问题。附图说明构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的方法流程图;图2是根据本申请实施例的方法流程图;以及图3是根据本申请实施例的方法流程图。具体实施方式为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本专利技术中的具体含义。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。为了实现IAP(InApplicationProgramming)功能,IAP从结构上将FLASH存储器映射为两个存储器,分别是应用boot区和程序存储区,设计产品的时候编写两个程序,第一部分程序放在boot区,不执行正常的功能,只是通过某种通信方式(如USB、Uart)接收固件或新的应用程序,执行对第二部分代码的更新,我们称之为Bootloader;第二部分代码存放在程序存储区,是用户的应用代码,实现产品的真正功能。第一部分代码必须事先烧写(通过烧录器或仿真器)到单片机内,第二部分代码可以通过烧录器或仿真器烧录,也可以使用第一部分的IAP功能烧录。当芯片上电后,首先运行第一部分代码,如果不需要更新,则跳转到第二部分代码执行;如果检测到需要更新,则执行更新程序。IAP通过程序在运行过程中对UserFlash的部分区域进行烧写,实现了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。如图1所示的固件升级方法,包括如下的步骤:101,响应主机发送的升级命令,确定存储当前运行固件的第一存储区信息。在实施时,可以设置第一存储区、第二存储区两个存储区域来存放板卡对应的固件,板卡接收到主机发送的升级命令时,确定当前运行固件的存放地址。102,接收主机发送的升级数据,根据本文档来自技高网
...

【技术保护点】
1.一种固件升级方法,其特征在于,包括:响应主机发送的升级命令,确定存储当前运行固件的第一存储区信息;接收主机发送的升级数据,根据确定出的第一存储区信息,将所述升级数据写入第二存储区,所述第一存储区、第二存储区为板卡对应的固件存储区;将写入所述第二存储区的固件设置为所述板卡重启后的运行固件。

【技术特征摘要】
1.一种固件升级方法,其特征在于,包括:响应主机发送的升级命令,确定存储当前运行固件的第一存储区信息;接收主机发送的升级数据,根据确定出的第一存储区信息,将所述升级数据写入第二存储区,所述第一存储区、第二存储区为板卡对应的固件存储区;将写入所述第二存储区的固件设置为所述板卡重启后的运行固件。2.根据权利要求1所述的方法,其特征在于,接收主机发送的升级数据,根据确定出的第一存储区信息,将所述升级数据写入第二存储区,包括:接收主机发送的升级数据,判断接收到的升级数据是否正确,如果正确,则将所述升级数据写入所述第二存储区;如果错误,则向所述主机发送数据接收错误的错误代码;判断所述写入是否成功,如果未成功,则向所述主机发送写入失败的错误代码。3.根据权利要求1所述的方法,其特征在于,将写入所述第二存储区的固件设置为所述板卡重启后的运行固件,包括:将参数配置文件中的程序跳转地址修改为所述第二存储区的地址,其中所述程序跳转地址为所述板卡上电时,运行固件的跳转地址。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述升级数据为HEX文件。...

【专利技术属性】
技术研发人员:支涛林胜昌
申请(专利权)人:北京云迹科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1