一种嵌入式设备网络批量升级的方法与流程

文档序号:19905894发布日期:2020-02-11 14:29阅读:178来源:国知局
一种嵌入式设备网络批量升级的方法与流程

本发明涉及嵌入式软件技术领域,尤其涉及一种嵌入式设备网络批量升级的方法。



背景技术:

随着电子技术和网络技术的发展,嵌入式系统开发技术取得迅速发展。嵌入式系统在物联网、机器人控制、智能家居等领域获得广泛应用。嵌入式设备的软件更新,就是烧写新的软件到芯片里面。嵌入式处理器通常有几种烧写工具,即专用烧写工具jtag(jointtestactiongroup,联合测试工作组)、bootloader烧写等。jtag需要专门的接口,适合一对一烧写,现场设备要么数量多,要么被外壳包着,此时jtag方式就不适用了;bootloader是利用jtag固化到芯片内部,完成引导、升级等特定功能的程序,出厂后不会轻易变更,用bootloader升级设备,应用较多,如串口或网口。然而,bootloader方式的批量升级,还有待进一步研究。

嵌入式系统新的发展趋势之一,就是要具有远程软件更新和故障诊断的能力。



技术实现要素:

为了解决以上技术问题,本发明提供了一种嵌入式设备网络批量升级的方法。

本发明所解决的技术问题可以采用以下技术方案实现:

一种嵌入式设备网络批量升级的方法,其特征在于,包括:

步骤s1,烧写出厂阶段的bootloader程序;

步骤s2,所述bootloader程序向上位机请求新网络地址,并保存在flash中;

步骤s3,重启使用所述新网络地址,并引导用户程序升级;

步骤s4,所述上位机升级程序按照可扩展标记语言网络地址表,巡查当前网络内的设备,每当检测到一个所述设备时,所述上位机通过网络通道,启动网络升级流程,完成所述设备的升级。

优选的,所述步骤s1包括:

步骤s10,所述bootloader程序读取所述flash参数区网络参数,进行所述参数检测,当所述参数有效,执行步骤s11;当所述参数无效,则执行步骤s12;

步骤s11,启动所述新网络地址,进行三秒延迟检测,当触发升级命令时,执行步骤s13;当未触发升级命令时,则执行步骤s14;

步骤s12,启动默认网络地址,请求所述上位机新参数,当请求超时,则关闭所述网络,同时led循环报警;当请求未超时,则保存所述新参数,所述设备软件重启;

步骤s13,所述网络响应升级命令,当所述设备升级完成,执行步骤s14,当所述设备升级未完成,则执行所述步骤s13;

步骤s14,引导业务程序启动并进行网络参数检测,当检测的所述网络参数有效,执行步骤s15;当检测的所述网络参数无效,则执行所述步骤s12;

步骤s15,业务事件循环,当所述设备再次收到升级触发事件,停止业务,所述设备软件重启;当所述设备没有收到该触发事件,则执行所述步骤s15。

优选的,所述步骤s4中所述上位机升级程序包括:

步骤s40,所述上位机对可扩展标记语言文件检测并进行网络初始化;

步骤s41,所述上位机进入待机界面,当所述上位机程序自动升级,执行步骤s42,当所述上位机程序未自动升级,则执行步骤s43;

步骤s42,对所述上位机程序进行自动升级预处理,并执行步骤s44;

步骤s43,对所述上位机程序手动升级,当升级完成,执行步骤s42;当升级未完成,则执行步骤s41;

步骤s44,升级状态机,当所述状态机升级完成,则更新可扩展标记语言文件并执行所述步骤s41,直至所有所述设备完全升级并退出;当所述状态机升级未完成,则执行所述步骤s44。

优选的,所述步骤s4中所述设备升级过程包括:

步骤s400,启动所述状态机并从所述可扩展标记语言文件中获取下一个新的网络地址,当所述可扩展标记语言文件中不存在所述新的网络地址,则退出所述状态机,否则执行步骤s401;

步骤s401,检测所述设备是否在线,当检测超时,则记录故障状态并退出所述状态机,否则执行步骤s402;

步骤s402,通知所述设备准备文件系统,当响应超时,则记录所述故障状态并退出所述状态机,否则执行步骤s403;

步骤s403,将app文件按照每包512字节逐包传递等待响应,当响应超时,则记录所述故障状态并退出所述状态机,否则执行步骤s404;

步骤s404,所述上位机通知所述设备进行循环冗余校验码校验,当校验超时,则记录所述故障状态并退出所述状态机,否则执行步骤s405;

步骤s405,检测所述设备重启,当检测超时,则记录所述故障状态并退出所述状态机,否则直接退出所述状态机。

优选的,所述状态机包括ping状态、mount状态、app传输状态、循环冗余校验码状态以及重启远程设备状态五种状态,所述设备完成所述五种状态后结束本次升级,所述上位机升级程序自动寻找下一个所述设备进行升级,直至所有所述设备全部完成升级。

优选的,所述步骤s4中,当对每个所述设备进行升级时,采用用户数据报协议通信模式,并对所述五种状态分别处理,所述五种状态分别设有超时处理机制。

优选的,所述flash分为bootloader区、参数区以及用户程序区。

优选的,所述上位机升级程序不仅维护一个可扩展标记语言网络地址表,同时利用所述状态机进行批量化升级管理,包括巡查设备、点对点升级以及所述设备状态记录等。

其有益效果在于:

本发明方法不仅保证嵌入式设备网络地址唯一,也将该设备记录在上位机的可扩展标记语言文件中;同时实现嵌入式设备的网络批量升级,降低工作量,提高自动化水平;简洁的应用升级协议,便于移植与扩展,如扩展出现场故障统计等功能;采用可扩展标记语言配置文件方式,灵活方便,可扩展性好,如互联网连接等。

附图说明

图1为本发明提供的一种嵌入式设备网络批量升级的方法流程图;

图2为本发明提供的步骤s1的一种具体实施例子流程图;

图3为本发明提供的所述上位机升级程序流程图;

图4为本发明提供的远程嵌入式设备升级流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

参照图1为本发明提供的一种嵌入式设备网络批量升级的方法流程图,包括:

步骤s1,烧写出厂阶段的bootloader程序;

步骤s2,所述bootloader程序向上位机请求新网络地址,并保存在flash中;

步骤s3,重启使用所述新网络地址,并引导用户程序升级;

步骤s4,所述上位机升级程序按照可扩展标记语言网络地址表,巡查当前网络内的设备,每当检测到一个所述设备时,所述上位机通过网络通道,启动网络升级流程,完成所述设备的升级。

具体的,由上位机升级程序统一管理嵌入式设备的出厂阶段、现场应用阶段的状态。在出厂阶段,烧写bootloader程序,由bootloader程序向上位机请求网络地址,并保存在flash中,然后重启使用新地址,并引导用户程序。在应用现场阶段,由上位机按照可扩展标记语言网络地址表,巡查网络上的设备,每当检测一个设备,启动网络升级流程,完成该设备的升级。每次升级,都由状态机模块处理,保证升级的可靠性。

参照图2为本发明提供的步骤s1的一种具体实施例子流程图,包括:

步骤s10,所述bootloader程序读取所述flash参数区网络参数,进行所述参数检测,当所述参数有效,执行步骤s11;当所述参数无效,则执行步骤s12;

步骤s11,启动所述新网络地址,进行三秒延迟检测,当触发升级命令时,执行步骤s13;当未触发升级命令时,则执行步骤s14;

步骤s12,启动默认网络地址,请求所述上位机新参数,当请求超时,则关闭所述网络,同时led循环报警;当请求未超时,则保存所述新参数,所述设备软件重启;

步骤s13,所述网络响应升级命令,当所述设备升级完成,执行步骤s14,当所述设备升级未完成,则执行所述步骤s13;

步骤s14,引导业务程序启动并进行网络参数检测,当检测的所述网络参数有效,执行步骤s15;当检测的所述网络参数无效,则执行所述步骤s12;

步骤s15,业务事件循环,当所述设备再次收到升级触发事件,停止业务,所述设备软件重启;当所述设备没有收到该触发事件,则执行所述步骤s15。

具体的,bootloader首先读取参数区,尝试获取网络地址参数。由于是首次出厂烧写,flash中只有刚刚烧写的bootloader,其他都是无效数据。bootloader只能使用默认的网络地址,进行用户数据报协议网络通信。此时,上位机升级程序,检测到开发板,发起用户数据报协议通信。bootloader获取到新网络地址数据,保存到参数区。上位机升级程序触发开发板重启,然后以新网络地址,重新检测;而开发板重启后,从flash参数区,获取到有效的网络参数,启动自身网络,当上位机升级程序再次检测到开发板后,将该地址记录在可扩展标记语言文件中。上位机程序支持手动更新用户程序,所有出厂的开发板,都要经过这样的流程,不仅可以保证地址唯一,而且生成一个可扩展标记语言文件。

其次,应用现场阶段的用户程序自动升级,每个出厂的开发板,都有固定的bootloader程序及出厂的配置参数。当开发板上电后,检测到用户程序区有效,经过3秒延迟,自动引导用户程序运行。为了实现批量自动升级,必须要及时触发bootloader进入升级状态。

参照图3为本发明提供的所述上位机升级程序流程图,包括:

步骤s40,所述上位机对可扩展标记语言文件检测并进行网络初始化;

步骤s41,所述上位机进入待机界面,当所述上位机程序自动升级,执行步骤s42,当所述上位机程序未自动升级,则执行步骤s43;

步骤s42,对所述上位机程序进行自动升级预处理,并执行步骤s44;

步骤s43,对所述上位机程序手动升级,当升级完成,执行步骤s42;当升级未完成,则执行步骤s41;

步骤s44,升级状态机,当所述状态机升级完成,则更新可扩展标记语言文件并执行所述步骤s41,直至所有所述设备完全升级并退出;当所述状态机升级未完成,则执行所述步骤s44。

具体的,首先,上位机升级程序按照可扩展标记语言表,逐个检测设备是否在线,如果在线,则首先让设备软重启,以便及时与bootloader程序通信,当远程嵌入式设备进入bootloader升级状态,可以开始升级。

参照图4为本发明提供的远程嵌入式设备升级流程图,包括:

步骤s400,启动所述状态机并从所述可扩展标记语言文件中获取下一个新的网络地址,当所述可扩展标记语言文件中不存在所述新的网络地址,则退出所述状态机,否则执行步骤s401;

步骤s401,检测所述设备是否在线,当检测超时,则记录故障状态并退出所述状态机,否则执行步骤s402;

步骤s402,通知所述设备准备文件系统,当响应超时,则记录所述故障状态并退出所述状态机,否则执行步骤s403;

步骤s403,将app文件按照每包512字节逐包传递等待响应,当响应超时,则记录所述故障状态并退出所述状态机,否则执行步骤s404;

步骤s404,所述上位机通知所述设备进行循环冗余校验码校验,当校验超时,则记录所述故障状态并退出所述状态机,否则执行步骤s405;

步骤s405,检测所述设备重启,当检测超时,则记录所述故障状态并退出所述状态机,否则直接退出所述状态机。

进一步的,状态机包括ping状态、mount状态、app传输状态、循环冗余校验码状态以及重启远程设备状态五种状态,设备完成五种状态后结束本次升级,上位机升级程序自动寻找下一个设备进行升级,直至所有设备全部完成升级。

进一步的,步骤s4中,当对每个设备进行升级时,采用用户数据报协议通信模式,并对五种状态分别处理,五种状态分别设有超时处理机制。

具体的,升级过程采用状态机方式进行,首先是ping状态,定时进行用户数据报协议探测,再次确认远程设备是否在线,如果探测超时,表明远程设备出现异常,记录该异常,并寻找下一个设备;其次是mount状态,通知远程设备进行文件系统或flash准备,如果响应超时,则记录故障,并寻找下一个设备;再次是app传输状态,将app文件按照每包512字节,逐包传输,等待该包的响应;然后是循环冗余校验码状态,上位机通知远程嵌入式设备,进行循环冗余校验码校验,等待循环冗余校验码结果,如果循环冗余校验码正确,最后就是重启远程设备状态,重启命令发送后,定时检测远程设备是否顺利启动app程序。以上几个状态完成后,本次升级就结束。上位机升级程序自动寻找下一个设备,重复之前的动作,即重启进入bootloader,完成下一个设备的升级。

进一步的,flash分为bootloader区、参数区以及用户程序区。

进一步的,上位机升级程序不仅维护一个可扩展标记语言网络地址表,同时利用状态机进行批量化升级管理,包括巡查设备、点对点升级以及设备状态记录等。

进一步的,本发明利用网口,实行自动升级,就可以不用理会是否预留烧写接口。在现场应用阶段,2台设备、1台pc,一起接入交换机,同时上电,到2台设备完成用户程序升级,大约需要15秒。可以明显看出自动化程度较高、效率较好。

以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

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