一种分布式控制系统的可靠固件升级实现方法技术方案

技术编号:10369879 阅读:120 留言:0更新日期:2014-08-28 12:30
本发明专利技术提供了一种应用在分布式控制系统上的可靠固件升级方法,能使系统内任意控制器节点或主机都拥有了程序升级能力,能极大的提高硬件设备的扩展能力、系统定制性,减少后期维护升级成本。与传统方法不同的是:目标程序包接收在应用程序中实现,并将接收的数据包先存入备份程序区,当目标程序包接收完毕并CRC校验通过后,在IAP标记区生成参数信息标记,并调用Bootloader以实现程序升级,即使在任意环节发生不可预料的失败,旧有的程序不会被替换,极大的提高了系统的稳定性。

【技术实现步骤摘要】

本专利技术涉及一种应用于分布式控制系统领域的程序固件升级新方法。
技术介绍
随着电子产业的发展,分布式控制系统中的节点单元越来越多样,逻辑功能也越做越复杂,一旦发现正在运行的系统出现Bug或需要改动协议新增设备的情况,若没有一种稳定可靠地现场程序固件更新手段,将面临则系统拆卸一返厂维修一系统重施工的恶性循环。虽然现在的很多分布式系统都提供了程序固件更新功能,但由于机制的问题,这种方法往往只能完成对主机的升级,无法在不同类型的节点中通用,而且有些系统一旦中途发生意外升级失败,将导致系统的彻底失效,极大增加了的维护成本,体现不出科技发展的优势。如图1所示,一个标准的分布式控制系统往往包括一台可与PC机通讯的系统主机,一条或多条总线,总线上挂载若干个控制或检测节点。整个分布式系统还需要制定一个上位机-节点、上位机-主机的发送应答透传机制,以实现上位机能对分布式系统内的任意一个节点实现程序升级。
技术实现思路
专利技术目的:针对上述现有技术,提供,实现分布式控制系统中各个节点以及主机的可靠升级。技术方案:,主机和各个节点的FLASH分部均包括Bootloader区、运行程序区、备份程序区、升级标签区和数据参数区;固件升级实现方法包括如下步骤:步骤I),上位机将升级文件按大小为2n字节划分成若干升级包,每个升级包还包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及当前升级包序号;其中η为I?8的整数;步骤2),升级时主机或各节点的本地固件程序接收上位机发出的各升级包并存入各自的备份程序区,在接收完所有升级包后在升级标签区生成升级任务标记,所述升级任务标记包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及升级文件每包的字节数;步骤3),通过对主机或各节点复位来启动设备的Bootloader,所述Bootloader读取其升级标签区的升级任务标记后,判断所述备份程序区是否存在升级文件:若存在升级文件则跳转到步骤4),若不存在升级文件则跳转到步骤8);步骤4),通过CRC校验判断升级文件是否有效:若升级文件有效则跳转到步骤5);若升级文件无效则跳转到步骤8);步骤5),擦除所述主机或各节点运行程序区的文件后跳转到步骤6),若出现擦除异常则跳转到步骤3);步骤6),将所述备份程序区的升级包写入所述本地运行程序区后跳转到步骤7),若出现写入异常则跳转到步骤3);步骤7),擦除所述主机或各节点中升级标签区的升级任务标记后跳转到步骤8),若出现擦除异常则跳转到步骤3);步骤8),检测所述运行程序区目标程序是否有效:若有效则跳转到步骤9),若无效则经过延时后跳转到步骤3);步骤9),所述主机或各节点配置运行程序环境完成升级。进一步的,主机或各节点的本地固件程序采用断点续传协议接收各升级包并存入所述备份程序区。作为本专利技术的优选方案,所述步骤2)包括如下具体步骤:步骤2.1),应用程序接收到任意一个升级包后,进行升级包版本号判断:若接收到的升级文件版本号与当前运行程序版本不同则跳转到步骤2.2),若版本号相同则不升级;步骤2.2),判断是否为断点续传包:若当前接收到的升级包和历史升级任务中接收到的升级包版本号、升级文件总包数、升级文件总CRC校验相同,则该接收到的升级包为断点续传包并跳转到步骤2.3);若不同则是新的升级任务,则更新历史升级任务中的升级文件版本号、升级文件总包数、升级文件总CRC校验信息,并开始索要新升级任务的升级文件第一包;步骤2.3),按记录的升级任务向上位机索要期望的升级包;若收到期望的升级包则跳转到步骤2.4),若收到的升级包不是期望升级包则继续向上位机请求期望升级包;步骤2.4),将接收到的升级包按升级包序号写入FLASH备份程序区中;其中当每写入一个升级包后,从备份程序区中中读出该升级包,以判断写入是否成功:若不成功则重新向上位机请求该升级包;若成功则跳转到步骤2.5);步骤2.5),进行升级包接收完毕判断:若接收完毕则向上位机发送升级完成信息并跳转到所述步骤3),升级包未全部完整接收则继续向主机请求期望升级包。作为本专利技术的优选方案,所述步骤8)中,延时时间为100?500ms。有益效果:本专利技术方法与传统方法不同在于:所有可升级节点内预装的Bootloader只用以实现程序校验和替换功能,Bootloader位于Flash的启动地址,系统复位后先执行Bootloader,开始读取升级标签,判断在备份程序区是否存在能通过程序校验的完整升级文件,若有则逐步将备份区的数据写入运行区,并最后替换第一包,防止意外发生,然后读取运行区第一包判断是否有合法的启动代码,若替换的任意过程发生意外,Bootloader仍会从新执行升级,不会发生在程序替换过程中的替换不完整的情况。若升级文件替换完成才会擦除升级标签,准备启动运行区的应用程序。本分布式节点固件升级方法没有了基于通讯协议的程序包接收,程序包接收在应用程序中实现,并将接收的数据包先存入备份程序区,当接收程序包完毕并CRC校验通过后,在升级标签区生成参数信息标记,并调用Bootloader以实现程序升级,升级过程能实现断点续传,且即使在任意环节发不可预料的失败,旧有的程序不会被替换,极端情况下会继续完成程序更新任务,Flash读写异常时有100?500ms的延时保护,能够防止Flash在短时间内被写坏,极大的提高了系统的稳定性。【附图说明】图1是本专利技术所应用的分布式系统框架;图2是本专利技术的IAP分区划分;图3是Bootloader处理流程;图4是应用程序需要内嵌的接收数据包处理;图5是升级包和FLASH对应关系;图6是升级控制字段定义。【具体实施方式】下面结合附图对本专利技术做更进一步的解释。,如图2所示,主机和各个节点的FLASH分部均包括Bootloader区、运行程序区、备份程序区、升级标签区和数据参数区;而常见的IAP升级的FLASH空间仅划分Bootloader区和运行程序区。如图3所示,固件升级实现方法包括如下步骤:步骤I),上位机将升级文件按大小为2n字节划分成若干升级包,每个升级包还包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及当前升级包序号;其中η为I?8的整数;步骤2),升级时主机或各节点的本地固件程序采用断点续传协议接收上位机发出的各升级包并存入各自的备份程序区,如图4所示,具体包括如下步骤:步骤2.1),应用程序接收到任意一个升级包后,进行升级包版本号判断:若接收到的升级文件版本号与当前运行程序版本不同则跳转到步骤2.2),若版本号相同则不升级;步骤2.2),判断是否为断点续传包:若当前接收到的升级包和历史升级任务中接收到的升级包版本号、升级文件总包数、升级文件总CRC校验相同,则该接收到的升级包为断点续传包并跳转到步骤2.3);若不同则是新的升级任务,则更新历史升级任务中的升级文件版本号、升级文件总包数、升级文件总CRC校验信息,并开始索要新升级任务的升级文件第一包;步骤2.3),按记录的升级任务向上位机索要期望的升级包;若收到期望的升级包则跳转到步骤2.4),若收到的升级包不是期望升级包则继续向上位机请求期望升级包;步骤2.4),将接收到的升级包按升级包序号写入FLASH备份程序区中;其中当每本文档来自技高网...

【技术保护点】
一种分布式控制系统的可靠固件升级实现方法,其特征在于:主机和各个节点的FLASH分部均包括Bootloader区、运行程序区、备份程序区、升级标签区和数据参数区;固件升级实现方法包括如下步骤:步骤1),上位机将升级文件按大小为2n字节划分成若干升级包,每个升级包还包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及当前升级包序号;其中n为1~8的整数;步骤2),升级时主机或各节点的本地固件程序接收上位机发出的各升级包并存入各自的备份程序区,在接收完所有升级包后在升级标签区生成升级任务标记,所述升级任务标记包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及升级文件每包的字节数;步骤3),通过对主机或各节点复位来启动设备的Bootloader,所述Bootloader读取其升级标签区的升级任务标记后,判断所述备份程序区是否存在升级文件:若存在升级文件则跳转到步骤4),若不存在升级文件则跳转到步骤8);步骤4),通过CRC校验判断升级文件是否有效:若升级文件有效则跳转到步骤5);若升级文件无效则跳转到步骤8);步骤5),擦除所述主机或各节点运行程序区的文件后跳转到步骤6),若出现擦除异常则跳转到步骤3);步骤6),将所述备份程序区的升级包写入所述本地运行程序区后跳转到步骤7),若出现写入异常则跳转到步骤3);步骤7),擦除所述主机或各节点中升级标签区的升级任务标记后跳转到步骤8),若出现擦除异常则跳转到步骤3);步骤8),检测所述运行程序区目标程序是否有效:若有效则跳转到步骤9),若无效则经过延时后跳转到步骤3);步骤9),所述主机或各节点配置运行程序环境完成升级。...

【技术特征摘要】
1.一种分布式控制系统的可靠固件升级实现方法,其特征在于:主机和各个节点的FLASH分部均包括Bootloader区、运行程序区、备份程序区、升级标签区和数据参数区;固件升级实现方法包括如下步骤: 步骤I),上位机将升级文件按大小为2n字节划分成若干升级包,每个升级包还包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及当前升级包序号;其中η为I~8的整数; 步骤2),升级时主机或各节点的本地固件程序接收上位机发出的各升级包并存入各自的备份程序区,在接收完所有升级包后在升级标签区生成升级任务标记,所述升级任务标记包括升级文件版本号、升级文件总包数、升级文件总CRC校验以及升级文件每包的字节数; 步骤3),通过对主机或各节点复位来启动设备的Bootloader,所述Bootloader读取其升级标签区的升级任务标记后,判断所述备份程序区是否存在升级文件:若存在升级文件则跳转到步骤4),若不存在升级文件则跳转到步骤8); 步骤4),通过CRC校验判断升级文件是否有效:若升级文件有效则跳转到步骤5);若升级文件无效则跳转到步骤8); 步骤5),擦除所述主机或各节点运行程序区的文件后跳转到步骤6),若出现擦除异常则跳转到步骤3); 步骤6),将所述备份程序区的升级包写入所述本地运行程序区后跳转到步骤7),若出现写入异常则跳转到 步骤3); 步骤7),擦除所述主机或各节点中升级标签区的升级任务标记后跳转到步骤8),若出现擦除异常则跳转到步骤3); 步骤8),检测所述运行程序区目标程序是否有效:若有效则跳转到步骤9),若无效则经过延时后跳转到步骤3); 步骤9),所述主机或各节点配置运行程序...

【专利技术属性】
技术研发人员:齐翔何国远王鹏齐羽心孔宁
申请(专利权)人:南京融教科技有限公司
类型:发明
国别省市:江苏;32

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

1