嵌入式系统的固件升级方法与流程

文档序号:12718677阅读:660来源:国知局
嵌入式系统的固件升级方法与流程

本发明涉及嵌入式系统领域,尤其涉及一种嵌入式系统的固件升级方法。



背景技术:

嵌入式系统是一种专用计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、汽车、手机、智能机器人等都使用了嵌入式系统。

在智能机器人中,舵机内置有嵌入式系统,使其作为智能机器人中的动力元件,是智能机器人实现智能化的关键元件。在舵机的嵌入式系统中,由于功能变化、故障修复等原因,需要对嵌入式系统中的软件版本进行升级,即采用新的控制程序替代原来的控制程序,以满足舵机的日益多样化的功能需求。

当前舵机和智能终端上内置的嵌入式系统设有存储器FLASH,并将存储器FLASH划分为用于存放升级引导程序(Bootloader)的升级固化区(即BOOT区)和用于存放不同功能应用程序的应用程序区(即APP区)。当前舵机内设置的嵌入式系统升级时,系统上电后只能在较短的开机时间停留在升级固化区内通过升级引导程序(Bootloader)进行升级,这个时间一般为8-16ms。由于嵌入式系统只能在较短的开机时间内进行升级,若在开机时间内没有接收到升级指令或升级不成功,系统将会跳转到应用程序区执行应用程序;并且只能等到下一次系统上电的开机时间内进行升级。



技术实现要素:

本发明要解决的技术问题在于,针对现有嵌入式系统仅能在较短的开机时间内进行升级所存在的缺陷,提供一种嵌入式系统的固件升级方法。

本发明解决其技术问题所采用的技术方案是:一种嵌入式系统的固件升级方法,包括:

初始化升级固化区,启动看门狗程序并计时;

判断在预设时间内是否接收到升级指令;

若接收到所述升级指令,则在所述升级固化区内执行所述升级指令,完成应用程序升级。

优选地,还包括步骤:若所述在预设时间内没有接收到所述升级指令,则跳转到应用程序区。

优选地,还包括步骤:执行应用程序区中的应用程序。

优选地,还包括步骤:

判断所述执行应用程序时是否接收到所述升级指令;

若接收到所述升级指令,则停止喂狗,等待所述看门狗程序向所述微处理器发送复位信号;

跳转到所述初始化升级固化区,启动看门狗程序并计时步骤。

优选地,若所述执行应用程序时未接收到所述升级指令,则继续执行应用程序。

优选地,所述停止喂狗,等待所述看门狗程序向所述微处理器发送复位信号步骤前,还包括:将所述升级标志位设置为升级状态;

所述判断在预设时间内是否接收到升级指令步骤前还包括:判断嵌入式系统的升级标志位是否为升级状态;若为升级状态,则执行所述在所述升级固化区内执行所述升级指令,完成应用程序升级步骤。

优选地,还包括步骤:

若所述升级标志位为非升级状态,则执行所述判断在预设时间内是否接收到升级指令步骤。

优选地,在所述升级固化区内执行所述升级指令,完成应用程序升级步骤之前还包括:将所述升级标志位设置为升级状态;

在所述升级固化区内执行所述升级指令,完成应用程序升级步骤之后还包括:将所述升级标志位设置为非升级状态。

优选地,所述初始化升级固化区,启动看门狗程序并计时之前,还包括:使嵌入式系统上电复位。

优选地,所述预设时间大于所述嵌入式系统的开机升级时间。

本发明与现有技术相比具有如下优点:本发明所提供的嵌入式系统的固件升级方法中,通过判断在预设时间内是否接收到升级指令,以使升级固件区初始化后的预设时间内均处于升级固化区等待接收升级指令,以保证嵌入式系统在较长的预设时间内等待升级,使得嵌入式系统的等待升级时间较长,以保证嵌入式系统的升级。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明一实施例中嵌入式系统的固件升级方法的一流程图。

图2是本发明一实施例中嵌入式系统的固件升级方法的另一流程图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

图1和图2示出本实施例中的嵌入式系统的固件升级方法的流程图。该嵌入式系统包括但不限于舵机内置的嵌入式系统,还可以是其他智能终端上内置的嵌入式系统。如图1所示,在一具体实施方式中,该嵌入式系统的固件升级方法包括如下步骤:

S1:初始化升级固化区,启动看门狗程序并计时。

每一嵌入式系统设有看门狗(WatchDog Timer,简称WDT)程序,在嵌入式系统的MCU(即Microcontroller Unit,微控制单元,以下简称为MCU)正常工作时,每隔一喂狗时间(如8ms)会输出一个喂狗信号给看门狗程序,以使看门狗程序清零;若超过喂狗时间不喂狗,即不输出喂狗信号给看门狗程序,看门狗程序会给MCU一个复位信号,使MCU复位,从而防止MCU死机。其中,喂狗时间是看门狗定时器计数溢出时间,一旦到达计数阈值,看门狗就会产生复位。MCU必须在这个周期内对这个定时器进行清零处理,让看门狗定时器重新计数,防止看门狗产生复位。

可以理解地,在嵌入式系统的固件升级过程中,需将嵌入式系统与程序烧录终端相连。在程序烧录终端上生成或存储有升级程序代码,并通过串口与嵌入式系统通信,以将升级程序代码写入嵌入式系统,使嵌入式系统的固件升级,使其功能更完善,以满足产品需求。该程序烧录终端包括但不限于电脑。

S2:微处理单元判断在预设时间内是否接收到升级指令。

该预设时间由用户根据应用程序的升级时间自主设置,使升级固化区在初始化后的预设时间内MCU均停留在升级固化区,以等待接收升级指令并进行升级。本实施例中预设时间设为500ms,相比于嵌入式系统的开机升级时间(8-16ms),预设时间较长,可使MCU在预设时间内处于升级固化区内等待接收升级指令。

S3:若接收到升级指令,则在升级固化区内执行升级指令,完成应用程序升级。

在预设时间内,MCU会每隔一喂狗时间发送一喂狗信号,以保证MCU在升级固化区等待接收升级指令,若MCU接收到升级指令,则在升级固化区执行升级指令,以完成应用程序升级。

S4:若没有接收到升级指令,则跳转到应用程序区。

可以理解地,在固件升级区初始化后,MCU只有在预设时间(500ms)均没有接收到升级指令,才会跳转到应用程序区。可以理解地,嵌入式系统跳转到应用程序区后,会执行应用程序区的应用程序,该应用程序可以是嵌入式系统出厂时直接烧录的应用程序,也可以是嵌入式系统在系统固件升级之后加载的应用程序。

该嵌入式系统的固件升级方法中,通过判断在预设时间内是否接收到升级指令,以使升级固件区初始化后的预设时间内均处于升级固化区等待接收升级指令,以保证嵌入式系统在较长的预设时间内等待升级,使得嵌入式系统的等待升级时间较长,以保证嵌入式系统的升级。

如图2所示,在另一具体实施方式中,该嵌入式系统的固件升级方法包括如下步骤:

S01:使嵌入式系统上电复位。

其中,嵌入式系统包括但不限于舵机内置的嵌入式系统。嵌入式系统上电复位是指嵌入式系统的复位引脚上RST上,持续一段时间的高电平或者低电平,会使系统进入初始化的状态。

S02:初始化升级固化区,启动看门狗程序并计时。

每一嵌入式系统设有看门狗(WatchDog Timer,简称WDT)程序,在嵌入式系统的MCU(即Microcontroller Unit,微控制单元,以下简称为MCU)正常工作时,每隔一喂狗时间(如8ms)会输出一个喂狗信号给看门狗程序,以使看门狗程序清零;若超过喂狗时间不喂狗,即不输出喂狗信号给看门狗程序,看门狗程序会给MCU一个复位信号,使MCU复位,从而防止MCU死机。其中,喂狗时间是看门狗定时器计数溢出时间,一旦到达计数阈值,看门狗就会产生复位。MCU必须在这个周期内对这个定时器进行清零处理,让看门狗定时器重新计数,防止看门狗产生复位。

S03:判断嵌入式系统的升级标志位是否为升级状态;若为升级状态,则执行步骤S06;若为非升级状态,则执行步骤S04。

其中,升级标志位是用于判断嵌入式系统是否处于升级状态,可以理解地,升级标志位可以有升级状态和非升级状态两种状态。本实施例中,采用1和0分别表示升级状态和非升级状态。即升级标志位为1时,该嵌入式系统当前处于升级状态,无需执行步骤S04和步骤S05,即可直接执行步骤S06进行升级;升级标志位为0时,该嵌入式系统当前不处于升级状态,需执行步骤S04。步骤S03中,MCU判断升级标志位是否为1,以确定嵌入式系统的当前状态是否为升级状态,以确定MCU是否需要在预设时间内停留在升级固化区等待接收升级指令。

S04:微处理单元判断在预设时间内是否接收到升级指令;若接收到升级指令,则执行步骤S05;若没有接收到升级指令,则执行步骤S08。

该预设时间由用户根据应用程序的升级时间自主设置,使升级固化区在初始化后的预设时间内MCU均停留在升级固化区,以等待接收升级指令并进行升级。本实施例中预设时间设为500ms,相比于嵌入式系统的开机升级时间(8-16ms),预设时间较长,可使MCU在预设时间内处于升级固化区内等待接收升级指令。可以理解地,在预设时间内,MCU会每隔一喂狗时间给看门狗程序发送一喂狗信号,以保证MCU在升级固化区等待接收升级指令,若MCU接收到升级指令,则在升级固化区执行升级指令,以完成应用程序升级。

S05:将升级标志位设置为升级状态,并执行步骤S06。

可以理解地,步骤S04中判断在预设时间内是否接收到升级指令的前提是升级固化区的升级标志位为非升级状态(即升级标志位为0);若微处理单元在预设时间内接收到升级指令,则使其升级标志位置升级状态(即将升级标志位置为1),以使升级固化区进行升级状态,执行步骤S06。

S06:在升级固化区内执行升级指令,完成应用程序升级,并执行步骤S07。

本实施例中,可以是在初始化升级固化区,即嵌入式系统的的开机升级时间(如8-16ms)内,检测到升级固化区内的升级标志位为升级状态(即升级标志位置为1)时,直接在升级固化区内执行升级指令,完成应用程序升级。还可以是在初始化升级固化区后的预设时间(如500ms)内接收到升级指令后,使升级固化区内的升级标志位置为升级状态(即升级标志位置为1),并在升级固化区内执行升级指令,完成应用程序升级。

S07:将升级标志位设置为非升级状态。

步骤S06中,嵌入式系统在升级固化区内完成应用程序升级后,需使升级标志位置为非升级状态(即升级标志位置为0),以表示升级固化区当前不处于升级状态,执行步骤S08。

S08:跳转到应用程序区。

步骤S08中,使嵌入式系统的MCU在升级固化区完成应用程序升级后,跳转到应用程序区,对应用程序区进行处理。可以理解地,初始化升级固化区后,MCU只有在预设时间(500ms)均没有接收到升级指令,才会跳转到应用程序区。

S09:执行应用程序区中的应用程序。

应用程序区中存储有不同功能的应用程序,嵌入式系统的MCU跳转到应用程序区后,根据用户输入的操作指令,执行应用程序区中的应用程序,以完成该嵌入式系统的功能。该应用程序可以是嵌入式系统出厂时直接烧录的应用程序,也可以是嵌入式系统在系统固件升级之后加载的应用程序。

S10:微处理单元判断执行应用程序时是否接收到升级指令;若接收到升级指令,则执行步骤S11;若未执行到升级指令,则执行步骤S09。

可以理解地,嵌入式系统的MCU在应用程序区执行应用程序时,也可以接收用户输入的升级指令,以使MCU执行接收到的升级指令进行应用程序升级处理。

S11:将升级标志位设置为升级状态,并执行步骤S12。

可以理解地,若嵌入式系统的MCU在应用程序区执行应用程序的过程接收到升级指令,使升级标志位设置为升级状态(即升级标志位置为1),以使该嵌入式系统进入升级状态,不再执行应用程序。

S12:停止喂狗,等待看门狗程序向微处理器发送复位信号,并跳转到步骤S02。

可以理解地,若嵌入式系统的升级标志位置升级状态(即升级标志位置为1),停止喂狗,使得看门狗程序超过喂狗时间不喂狗,看门狗程序会给MCU一个复位信号,使MCU复位,从而防止MCU死机,并跳转到步骤S02,以在升级固化区执行升级指令,完成应用程序升级。

本实施例中,若预设时间为500ms,喂狗时间为8ms,假设嵌入式系统上电复位时间为0,则嵌入式系统的初始化升级固化区后的0-500ms内,升级固化区均处于等待接收升级指令状态;若在0-500ms内接收到升级指令,则在升级固化区内执行升级指令,以完成应用程序升级;若0-500ms内没有接收到升级指令,则在500ms以后跳转到应用程序区,以执行应用程序区的应用程序。在应用程序区执行应用程序时,每隔8ms的喂狗时间需接收到一喂狗信号,否则嵌入式系统的MCU跳转到升级固化区,使升级固化区初始化。

该嵌入式系统的固件升级方法中,通过判断在预设时间内是否接收到升级指令,以使升级固件区初始化后的预设时间内均处于升级固化区等待接收升级指令,以保证嵌入式系统在较长的预设时间内等待升级,使得嵌入式系统的等待升级时间较长,以保证嵌入式系统的升级。具体地,升级固化区可以在初始化升级固化区的开机时间(如8-16ms)内,直接完成应用程序升级,无需等待,以提高升级效率;也可以在预设时间(如500ms)内接收到升级指令,完成应用程序升级,以确定升级固化区较长时间处于等待升级状态,保障升级成功。

本发明是通过上述具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换和等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1