程序在线升级方法及系统的制作方法

文档序号:9597701阅读:407来源:国知局
程序在线升级方法及系统的制作方法
【技术领域】
[0001] 本发明涉及程序在线升级方法,特别涉及嵌入式系统中固件程序的在线升级方 法。
【背景技术】
[0002] 在公开号为CN101271396的中国专利中公开一种在线升级方法,具体为系统上电 后判断更新标志是否有效;若更新标志有效,进行下载并更新;随后进入判断下载固件是 否成功步骤;所述步骤中判断为下载成功,会进入设置更新标志为无效的步骤。此时,有可 能出现了如下两种异常:
[0003] 第一种,如果固件本身有问题,如:烧录的固件本身被破坏,或者烧录了错误的固 件等原因无法在嵌入式系统被有效运行,那么该嵌入式系统就无法再正常工作;
[0004] 第二种,如果固件本身有问题,如:烧录的固件版本错误,虽可以在嵌入式系统被 有效运行,但是无法执行设置更新标志为有效的步骤,那么该嵌入式系统就不再具有在线 升级功能。
[0005] 对于上述两种异常,该嵌入式系统都已经没有能力执行恢复操作,就需要进行返 厂维修了。
[0006] 为了避免上述问题,在公开号为CN102857818和CN1464386两份中国专利中介绍 了一种更为可靠的升级方式。其基本原理是:嵌入式系统上电后,先运行一段代码,判断是 否需要进行在线升级操作。如果需要,则执行在线升级操作。否则,在跳转执行嵌入式系统 正常业务功能程序。
[0007] 以所述CN1464386专利的升级流程为例,系统上电后,先运行一段初始化代码;之 后与外部进行通信连接,根据外部的指示判断是否需要进行在线升级操作。这种升级方式 看似非常可靠,让系统一直都具备在线升级功能。但是,这种升级方式会给系统带来一个非 常大的隐患:嵌入式系统上电后,需要先运行一段代码,如果这段程序有误,影响到了后续 嵌入式系统正常业务功能程序的执行,那么嵌入式系统上电后先运行的这一段代码就必须 得更新。而且,为了保证这一段代码更新操作可靠,不影响嵌入式系统使用和在线升级功 能,一般都需要返厂维修,升级这一段代码。

【发明内容】

[0008] 本发明所要解决的是在升级过程中可能出现的固件本身有问题或初始化代码有 误导致的无法正常升级程序问题。
[0009] 为解决上述问题,本发明提供一种程序在线升级方法,包括:
[0010] 系统上电启动;
[0011] 判断复位的方式否为升级异常复位;
[0012] 若是异常复位,执行升级功能程序;
[0013] 若不是异常复位,查询标记值,根据标记值指向执行正常功能程序或升级功能程 序,
[0014] 所述升级功能程序用于给正常功能程序进行升级。
[0015] 进一步,所述程序在线升级方法,还包括,在执行所述正常功能程序时:
[0016] 接收升级命令;
[0017] 确认标记值,使其指向升级功能程序。
[0018] 进一步,所述程序在线升级方法,还包括,在执行所述升级功能程序时:
[0019] 确认标记值,使其指向升级功能程序。
[0020] 进一步,所述程序在线升级方法,还包括:
[0021] 判断升级是否成功;
[0022] 确认升级成功后,确认标记值,使其指向正常功能程序;及
[0023] 通过软件重启系统。
[0024] 本发明还提供另一种程序在线升级方法,内存中包括第一区间和第二区间,
[0025] 系统上电启动;
[0026] 查询标记值的指向;
[0027] 当标记值指向第一区间时执行第一区间程序;
[0028] 判断是否需要进行升级;
[0029] 确认升级后,对第二区间进行升级。
[0030] 进一步,所述程序在线升级方法,还包括:
[0031] 升级完成后确认标记值,使其指向第二区间;及
[0032] 通过软件重启系统。
[0033] 进一步,所述程序在线升级方法,还包括:
[0034] 所述第一区间和第二区间分别包括第一值和第二值;
[0035] 开始升级后确认标记值,使其指向第一区间的第二值;及
[0036] 完成升级后确认标记值,使其指向第二区间的第一值。
[0037] 进一步,所述程序在线升级方法,还包括:
[0038] 系统上电启动后判断复位方式是否为异常复位;
[0039] 判断为异常复位,确认标记值的指向;
[0040] 若指向第一值,执行标记值所指相反区间程序;
[0041 ] 若指向第二值,执行标记值所指空间程序。
[0042] 进一步,所述检查升级包的正确是根据CRC和校验和的方式进行。
[0043] 本发明还提供一种程序在线升级系统,包括:
[0044] 控制器,支持至少两种复位方式;
[0045] 升级异常复位键,向控制器输入异常复位状态;及
[0046] FLASH 模块,
[0047] 其中,所述FLASH模块包括:
[0048] 启动跳转区间,设置有至少两种复位状态;
[0049] 标记区间,标记指向升级功能程序区间或正常功能程序区间;
[0050] 升级功能程序区间,存储有升级功能程序;及
[0051] 正常功能程序区间,存储有正常功能程序,
[0052] 所述升级功能程序用于给所述正常功能程序进行升级。
[0053] 本发明还提供一种程序在线升级系统,包括:
[0054] 控制器,支持至少两种复位方式;
[0055] 升级异常复位键,向控制器输入升级版本回退复位状态;及
[0056] FALSH 模块,
[0057] 其中,所述FALSH模块包括:
[0058] 启动跳转区间,设置有至少两种复位状态;
[0059] 标记区间,标记指向第一区间或第二区间;及
[0060] 第一区间和第二区间,分别独立存储正常功能程序。
[0061] 进一步,所述升级异常复位键和升级异常复位键是采用ERIP或GPI0的引脚电平 状态的复位方式。
[0062] 与现有技术相比,根据本发明的程序在线升级方式可以保证嵌入式系统升级功能 完全可靠。当升级失败时,嵌入式系统完全有能力执行恢复操作,不需要进行返厂维修。
【附图说明】
[0063] 图1是本发明第一实施例的备份方式升级中程序区间的选择流程图;
[0064] 图2是本发明第一实施例的系统执行应用程序区间程序时的升级流程图;
[0065] 图3是本发明第一实施例的执行备份升级功能区间程序时的升级流程图;
[0066] 图4是本发明第二实施例的双系统方式的升级流程图;
[0067] 图5是本发明第三实施例的双系统方式的升级流程图。
【具体实施方式】
[0068] 为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明 的【具体实施方式】做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但 是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本 发明内涵的情况下做类似推广。因此本发明不受下面公开的【具体实施方式】的限制。
[0069] 本文介绍的升级方式对硬件有一定要求,其要求如下:
[0070] CPU需要支持复位控制(Reset Control)功能。从复位类型(Reset Type)寄 存器中,至少可以区分出如下几种复位方式:上电复位(Power On Reset)、软件触发复位 (Software Reset)、外部引脚复位(External Reset Input Pin,简称:ERIP),所述外部引 脚复位为外部复位按键,按下该按键,相当于使用ERIP功能。
[0071] 实施例1 :备份方式的升级
[0072] 在FLASH中备份一个具有升级功能系统,用于保证系统升级功能正常。如下表所 示,在这类系统中至少包含4个部分。
[0073] Flash空间分配:

[0075] 当系统启动时,先执行"启动跳转区间"中的程序。这个程序根据系统当前的复位 类型(Reset Type)和FLASH中标记区间的标记(Flag)值作为判断依据,选择运行"备份升 级功能程序区间"或"正常APP应用程序区间"的程序。标记值仅需要两种,一种指向运行 "备份升级功能程序区间";另一种指向运行"正常APP应用程序区间"的程序。所述备份升 级功能程序是用于给所述正常功能程序进行升级。
[0076] 图1是本发明第一实施例的备份方式升级中程序区间的选择流程图。如图1所 示,程序区间的选择流程包括:S11,系统上电启动后查询复位类型对应的值;S12,判断所 述值是否为升级异常复位键启动,若是执行S16,否则执行S13 ;S13,查询FLASH中的标记 值;S14,判断所述标记值是否指向"正常APP应用程序区间",若是执行S15,否则执行S16 ; S15,执行"正常应用区间"的程序;S16,执行"备份升级功能程序区间"的程序。
[0077] 图2是本发明第一实施例的系统执行应用程序区间程序时的升级流程图。续图1 中的流程,如图2所示,在执行"正常APP应用程序区间"的程序时,升级流程具体包括:S21, 执行"正常APP应用程序区间"的程序;S22,接收到外部升级指令;S23,在接收到所述外部 升级指令以后确认标记值,使标记值指向执行"备份升级功能程序区间";S24,通过软件重 新启动。在进行重新启动以后会再次进行图1中所示的流程。上述过程中因为已将标记值 设为指向执行"备份升级功能程序区间",且无异常复位键启动,根据图1中所示的流程会 进行到执行"备份升级功能程序区间"程序的步骤。
[0078] 图3是本发明第一实施例的执行备份升级功能区间程序时的升级流程图。续图 1和图2中的流程,如图3所示,在执行"备份升级功能区间"的程序时,升级流程具体包 括:S31,系统执行"备份升级功能程序区间"的程序;S32确认标记值,使其指向执行"备 份升级功能程序区间"的程序;S33,接收外部升的级指令;S34,根据所述指令接收外部升 级数据包,并写入FLASH中的"正常APP应用程序区间";S35,利用循环冗佘校验(Cyclic Redundancy Check,简称:CRC)或校验和(Checksum)机制,检查写入FLASH空间的升级数 据包的正确性,S36,判断升级是否成功,若成功进行S37,否则回到S33 ;S37,当升级成功以 后确认标记值,使其指向"正常APP应用程序区间";S38,通过软件控制重启系统。其中S32
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1