一种嵌入式设备远程固件更新方法
技术领域
本发明涉及一种嵌入式设备远程固件更新方法,属于工控自动化技术领域。
背景技术
随着工业物联网的迅猛发展,大量具备联网功能的嵌入式设备被广泛应用于日常生产、生活的各个领域中。由于新技术的不断涌现和对系统功能、性能等要求的不断提高,针对这些分布在全国各地乃至世界各地的嵌入式设备进行实时升级和维护成为了企业的迫切需求。
传统的升级方式通常由专业维护人员亲赴设备现场进行重新烧写系统或更换Flash存储部件。如图1所示,为常规的远程固件更新方案工作原理图,其工作模式较为单一,单个固件安装包被存储在远程服务器上的固定地址中,由所有远端设备通过透传网关定期下载更新;安装包的存储地址通常来说是写死的,不能轻易改变。远端设备与远程服务器之间单向通信,服务器无法得知远端设备是否及时下载了最新固件安装包,下载过程、安装过程是否顺利进行。因此常规的维护方式不仅耗费了极大的人力物力,而且在设备规模日益庞大的今天显得越来越难以为继。在此背景下,嵌入式系统的远程固件更新技术应运而生,并且在短时间内得到了快速发展。然而传统的远程固件更新方式较为单一,通常只能对批量远端设备进行一刀切式的统一更新,无法做到有选择性地选配升级。除此之外,远程固件更新过程及结果亦缺乏有效的监控手段及反馈途径;固件更新结果是否成功,固件更新版本是否准确,维护人员无从得知。
发明内容
本发明的目的是提出一种具有可选配升级、更新过程稳定可控的远程固件更新方法。
可选配升级指的是,维护人员可以根据设备类型、设备所在区域等条件,对远端设备进行筛选过滤,在一定范围内有选择性地对远端设备执行固件更新操作。
更新过程稳定可控指的是,维护人员可以籍由云端控制台监控远端设备的固件更新过程及更新结果。一旦远端固件更新失败或产生版本错误,维护人员能在第一时间得到状态反馈并采取相应的补救措施。
为了达到上述目的,本发明的技术方案是提供了一种基于云平台的远程固件更新方法,通过配置云平台的数据库管理并维护远端设备的固件更新过程及状态,其特征在于,包括以下步骤:
步骤1、云平台以与各远端设备一一对应的设备序列号作为唯一标识符建立并管理远端设备状态表,远端设备状态表中存储的字段包括设备序列号、设备类型、设备所在区域、设备当前固件版本号、固件更新日期及固件更新状态;
步骤2、云平台以固件版本号作为唯一标识符建立并管理固件版本映射表,固件版本映射表中存储的字段包括固件版本号、固件URL地址及固件md5校验值;
步骤3、远端设备在投入运行前先在云平台上进行注册,云平台为每个注册的远端设备生成并发放访问令牌,远端设备将访问令牌烧写进本地数据库中,同时,云平台更新远端设备状态表,记录当前设备的设备序列号、设备类型、设备所在区域、设备当前固件版本号;
步骤4、当有新的固件安装包产生时,首先将新的固件安装包上传至云平台特定路径中,再将新的固件安装包所对应的固件版本号、URL地址、md5校验值更新至固件版本映射表中;
步骤5、云平台设置步骤4上传的新的固件安装包的固件更新的选配范围,或者选择特定设备类型的远端设备进行更新,或者选择处于特定区域的设备进行更新,将远端设备状态表中与选中的设备类型或选中的区域相匹配的所有记录中的设备当前固件版本号更新为步骤4中上传的新的固件安装包的固件版本号,并且将对应的固件更新日期更新为当前日期,将对应的固件更新状态更新为待更新状态;
步骤6、远端设备接入以太网后,通过访问令牌连接云平台,周期性轮询远端设备状态表获取与本远端设备相对应的设备当前固件版本号,一旦检测到远端设备状态表中的当前固件版本号与本地存储的固件版本号不相同,则向云平台请求新固件安装包的URL地址及md5校验码;
步骤7、远端设备获取到新固件安装包的URL地址及md5校验码后,首先根据URL地址下载固件安装包,若下载失败,向云平台反馈对应错误状态码,云平台将错误码更新至远端设备状态表中与当前远端设备对应记录的固件更新状态,并返回步骤6重新开始执行,若下载成功,则进入步骤8;
步骤8、固件安装包下载完成后,在本地计算固件安装包的md5值,并与从云平台获取到的md5校验码进行比对,若一致,则证明下载的文件正确、完整,进入步骤9,否则,删除固件安装包,向云平台反馈对应的错误状态码,云平台将错误码更新至远端设备状态表中与当前远端设备对应记录的固件更新状态,并返回步骤6重新开始执行;
步骤9、远端设备运行固件安装包执行安装操作,若安装成功,更新设备本地固件版本号,向云平台返回成功状态码,云平台将成功状态码更新至远端设备状态表中与当前远端设备对应记录的固件更新状态,至此,整个远程固件更新过程顺利完成,否则,删除固件安装包,向云平台反馈对应的错误状态码,云平台将错误码更新至远端设备状态表中与当前远端设备对应记录的固件更新状态,并返回步骤6重新开始执行;
步骤10、云平台一旦收到任意远端设备传回的错误状态码,将自动产生报警信息,维护人员根据报警日志确认产生问题的范围及原因,并制定对应的解决方案,确保更新过程最终顺利完成。
优选地,步骤3中,所述远端设备通过上位机配置软件将所述访问令牌烧写进所述本地数据库中。
优选地,步骤6中,远端设备向云平台请求新固件安装包的URL地址及md5校验码包括以下步骤:远端设备向云平台提供其设备序列号,云平台根据设备序列号查询远端设备状态表中对应的记录,获取到与该设备序列号对应的设备当前固件版本号,再根据设备当前固件版本号查询固件版本映射表,获取该设备当前固件版本号所对应的URL地址及md5校验码。
本发明的有益效果在于:通过在云服务器上对远端设备进行群组划分,实现了以选配方式进行远程固件更新,在升级方式上更为灵活;通过在云服务器上建立远端设备状态表,实时记录每个远端设备返回的状态码,让维护人员随时掌控每一台远端设备的固件更新情况,使得整个更新过程更为稳定可控。通过在云服务器上建立固件版本映射表,极大地方便了维护人员进行固件版本追溯,提升了管理效率。
附图说明
图1为常规的远程固件更新方案工作原理图;
图2为本发明的远程固件更新方案工作原理图;
图3为云端数据库表结构图;
图4为云平台取得新固件安装包后进行选配升级配置工作流程;
图5为远端设备执行远程固件更新操作工作流程。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
如图2所示,本发明的远程固件更新方案工作原理是在建立云服务器的基础上,新增了固件版本映射表,该表由云服务器单独维护,用以管理多固件安装包版本号与具体下载地址之间的映射关系。同时新增远端设备状态表,该表由云服务器与远端设备共同维护,用以记录每个远端设备最新的固件版本号及设备当前更新状态,。
如图3所示,显示了本发明中所使用的云服务器数据库表结构。如图3的序号1所示,每当有新的固件安装包被制作出来并上传至云服务器中时,云服务器更新固件版本映射表,向表中新增记录,插入对应该安装包的版本号、URL地址及md5校验值。如图3的序号2所示,每当有新的远端设备在云服务器中注册时,云服务器向远端设备状态表中新增记录,插入与该设备对应的SN号、设备类型、所在区域及初始固件版本号等信息。其中,更新状态字段代表该远端设备当前的固件更新状态,有0:待更新,1:更新中,2:更新成功,N:更新失败(N为错误码)几种选项,默认状态为0。如图3序号3所示,固件版本字段是联系两个数据表的公共关键字。当远端设备向云服务器请求固件安装包下载地址及md5校验码信息时,云服务器以固件版本字段对两张表进行联合查询,即首先查远端设备状态表,根据设备SN号查询到对应的固件版本号,再查固件版本映射表,根据固件版本号查到对应的URL地址及md5校验码。
本发明提供的一种基于云平台的远程固件更新方法,通过配置云平台数据库管理并维护远端设备的固件更新过程及状态,包括以下步骤:
步骤1、云平台以设备SN号作为唯一标识符建立并管理远端设备状态表;远端设备状态表中存储字段包括设备SN号、设备类型、设备所在区域、设备当前固件版本号、固件更新日期及固件更新状态。
步骤2、云平台以固件版本号作为唯一标识符建立并管理固件版本映射表,固件版本映射表中存储字段包括固件版本号、固件URL地址及固件md5校验值。
步骤3、远端设备在投入运行前先在云平台上进行注册,云平台为每个注册的远端设备生成并发放访问令牌。远端设备通过上位机配置软件将访问令牌烧写进本地数据库中。同时,云平台更新远端设备状态表,记录当前设备的设备SN号、设备类型、设备所在区域及设备当前固件版本号等信息。每台远端设备对应一条记录。
步骤4、当有新的固件安装包产生时,首先将固件安装包上传至云平台特定路径中,再将其对应的固件版本号、URL地址、md5校验值信息更新至固件版本映射表中。如图4所示,在多固件安装包情况下,云平台采用Restful架构存储这些安装包,即每个固件安装包作为一个资源对应于一个唯一的URL地址。云平台在固件版本映射表中为每一个固件安装包建立一条记录,存储固件版本号与URL地址及md5校验码之间的映射关系。
步骤5、当有远程固件更新的需求产生时,云平台根据具体的更新需求(例如,对某种类型的设备进行更新,或者,对某个区域内的设备进行更新)设置筛选条件,并根据筛选条件查询远端设备状态表,获取符合条件的远端设备列表。该筛选过程通常可由云平台UI调用专门的SQL语句实现。获取设备列表后,云平台对设备列表所对应的远端设备状态表中的表记录进行批量修改,针对单条设备状态记录,其修改过程为:1)将固件版本字段修改为待更新固件版本号;2)将更新日期修改为当前日期;3)将更新状态字段修改为0(待更新)。
步骤6、远端设备接入以太网后,通过访问令牌连接云平台,周期性轮询远端设备状态表获取当前最新固件版本号。一旦检测到云平台的固件版本号与本地存储的固件版本号不相同,则向云平台请求新固件安装包的URL地址及md5校验码。URL地址用以下载固件安装包,md5校验码则用以让远端设备在本地进行下载完整性校验。
如图5所示,具体检测手段为,远端设备向云平台请求查询远端设备状态表中对应本设备的表记录,判断表记录中更新状态字段的值是否为0,若为0,代表本设备目前处于待更新状态,意味着有新的固件安装包产生,需要本设备下载安装。
具体请求URL地址及md5校验码的过程为,远端设备向云平台提供其设备SN号,云平台根据设备SN号查询远端设备状态表中对应记录,获取到与该设备对应的固件版本号,再根据固件版本号查询固件版本映射表,获取该固件版本所对应的URL地址及md5校验码。
步骤7、远端设备获取到新固件安装包的URL地址及md5校验码后,通过状态反馈,将远端设备状态表中与本设备对应的表记录中的更新状态字段值修改为1(更新中)。随后根据URL地址下载固件安装包。若下载失败,向云平台反馈对应错误状态码,云平台将错误码更新至远端设备状态表中与该设备对应记录的状态标志位,并返回步骤6重新开始执行。
步骤8、固件安装包下载完成后,在本地计算固件安装包的md5值,并与从云端获取到的md5校验码进行比对,若一致,则证明下载的文件正确、完整。否则,删除固件安装包,向云平台反馈对应的错误状态码,云平台将错误码更新至远端设备状态表中与该设备对应记录的状态标志位,并返回步骤6重新开始执行。
步骤9、远端设备运行固件安装包执行安装操作。若安装成功,更新设备本地固件版本号,向云平台返回成功状态码;至此,整个远程固件更新过程顺利完成。否则,删除固件安装包,向云平台反馈对应的错误状态码,并返回步骤6重新开始执行。
步骤10、云平台一旦收到任意设备传回的错误状态码,将自动产生报警信息。维护人员根据报警日志确认产生问题的范围及原因,并制定对应的解决方案,确保更新过程最终顺利完成。