CN115827023A - 一种主从板设计下控制器的固件更新方法 - Google Patents

一种主从板设计下控制器的固件更新方法 Download PDF

Info

Publication number
CN115827023A
CN115827023A CN202211586765.9A CN202211586765A CN115827023A CN 115827023 A CN115827023 A CN 115827023A CN 202211586765 A CN202211586765 A CN 202211586765A CN 115827023 A CN115827023 A CN 115827023A
Authority
CN
China
Prior art keywords
firmware
rts
area
packet
board
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211586765.9A
Other languages
English (en)
Inventor
胡辉
陈宇
舒鹏飞
陈越
夏威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuzhou Jiacheng Technology Development Co ltd
Original Assignee
Zhuzhou Jiacheng Technology Development Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuzhou Jiacheng Technology Development Co ltd filed Critical Zhuzhou Jiacheng Technology Development Co ltd
Priority to CN202211586765.9A priority Critical patent/CN115827023A/zh
Publication of CN115827023A publication Critical patent/CN115827023A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提出一种主从板设计下控制器的固件更新方法,涉及控制器固件更新的技术领域,在固件源代码的中断向量表末尾加入版本标识及版本信息,简单方便,准确率高且具有普适性,以主板扩展大容量非易失存储器,引入双备份机制避免固件更新失败导致控制器无法运行rts固件的现象发生,利用上位机将固件缓存至主板的非易失存储器,从板从主板的非易失存储器中拉取版本,降低固件更新流程复杂度,为方便管理,利用rts包生成器打包得到包含主、从板所有rts固件的rts固件包,并加入完整性校验信息,主从板bootload从非易失存储器缓存的rts固件包同步rts固件版本,实现了主、从板rts固件自动分发并保证版本配套。

Description

一种主从板设计下控制器的固件更新方法
技术领域
本发明涉及控制器固件更新的技术领域,更具体地,涉及一种主从板设计下控制器的固件更新方法。
背景技术
随着自动化技术的发展,智能控制器(PLC)接入IO的数量剧增,由于控制芯片IO端口资源约束,技术人员通常采用主从板设计的方式以满足需求。一般而言,控制器在暴露出问题时需进行固件更新以修复问题缺陷。
然而,控制器在采用主从板设计时,其固件更新功能存在以下问题:(1)控制器主板片内FLASH存储容量有限,可能无法存储主从板的所有固件;(2)控制器需稳定可靠且需保证主从板固件版本匹配;(3)控制器的主、从板均要支持固件更新,但从板是无对外通讯接口的;(4)控制器上机安装后拆卸极耗工时,固件更新需免拆卸以减少工时降低成本;(5)控制器主板有启动时间短的要求。
当前控制器单板相关固件更新结构及硬件接口如图1所示,目前控制器的固件更新一般基于IAP(In-Application Programming,在应用中编程)技术,采用bootload加rts(codesys运行时系统)架构实现,单板片内FLASH划分出bootload及rts区域,首先烧录单板bootload固件至片内Flash的bootload区域,需通过ICP(下载/调试口,如j-link等)方式将bootload(引导程序)烧写至片内FLASH,随后上位机与bootload配合经由IAP下载口(包括但不限于COM、CAN口等)烧写rts固件并跳转执行。基于这种方式,现有技术也公开了一种基于stm32单片机的IAP方法及系统,涉及单片机软件升级的技术领域,该方案包括以下步骤:烧写BootLoader程序至单片机;烧写APP程序至单片机;运行所述BootLoader程序以更新APP程序,该方法可以远程控制程序的升级无需机械性的拆卸操作,可以使用IAP升级方案进行更新迭代。然而,采用主从板涉及的控制器与单板stm32单片机不一样,从板被密封在外壳内,固件更新相关结构及硬件结构如图2所示,一般不对外暴露IAP接口,无法直接通过上位机更新从板固件,尤其控制器外发上机安装后,拆卸控制器通过下载调试口烧写固件,存在人力资源、工时开销等问题而不可行。一旦控制器出现问题,需要更换固件时,仅能依靠人工保证主从板固件版本配套,耗时耗力且容易出错。
发明内容
为解决采用主从板设计的控制器IAP接口不外露,无法直接通过上位机更新从板固件导致固件更新流程复杂性高、耗时耗力的问题,本发明提出了一种主从板设计下控制器的固件更新方法,简单方便,稳定性高,普适性强。
为了达到上述技术效果,本发明的技术方案如下:
一种主从板设计下控制器的固件更新方法,所述方法包括以下步骤:
S1.在固件源代码的中断向量表末尾加入版本标识及版本信息,编译得到主、从板的bootload固件及rts固件;
S2.主板扩展大容量非易失存储器,利用rts包生成器打包得到包含主、从板所有rts固件的rts固件包,并加入完整性校验信息;
S3.引入双备份机制,将非易失存储器划分为区域0及区域1,根据完整性校验信息确定非易失存储器的区域0与区域1内是否存在完整rts固件包;
S4.主板的bootload固件上电,确定区域0与区域1分别对应活跃区还是备份区,根据条件选择进入下载模式或运行rts固件;
S5.下载模式,通过上位机将rts固件包烧录至主板的非易失存储器的备份区,然后复位转执行S4;
S6.主板运行rts固件,从非易失存储器的活跃区保存的主板rts固件包中同步主板rts固件并运行;
S7.从板的bootload固件上电,从板发起从板rts固件初始化请求,主板返回从板RTS固件初始化信息,从板根据初始化信息从主板拉取rts固件;
S8.主板传输从板rts固件,从板校验rts固件,在从板rts固件校验通过后,跳转运行rts固件。
本技术方案通过主板实现主、从板的固件更新,在固件源代码的中断向量表末尾加入版本标识及版本信息,简单方便,准确率高且具有普适性,以主板扩展大容量非易失存储器,引入双备份机制避免固件更新失败导致控制器无法运行rts固件的现象发生,利用上位机将固件缓存至主板的非易失存储器,从板从主板的非易失存储器中拉取版本,从而将一个涉及三方的复杂交互分解为两个端到端的交互,降低固件更新流程复杂度,为方便管理,利用rts包生成器打包得到包含主、从板所有rts固件的rts固件包,并加入完整性校验信息,主从板bootload从非易失存储器缓存的rts固件包同步rts固件版本,实现了主、从板rts固件自动分发并保证版本配套。
优选地,固件通过汇编代码初始化中断向量表及C语言运行环境,中断向量表的起始地址固定,在汇编代码首地址附近,且中断向量数量有限,中断向量表的内容为指向sram或片内flash地址的中断处理函数指针或空指针;在固件源代码的中断向量表末尾加入版本标识及版本信息时,对主、从板的片内Flash空间进行规划,根据主、从板的片内Flash空间规划,若版本标识满足非空指针且不在片内Flash及sram地址空间内,则能通过搜索固件二进制编码,从固件中提取到版本信息,所述的版本信息包括固件版本号、固件类型、编译时间。
在此,将版本标识及版本信息添加至固件中断向量表末尾,并从编译后的固件二进制文件中直接提取版本信息的方法,简单方便、正确率极高且具有普适性,可在各型号单片机上实现。
优选地,从固件中提取版本信息的流程为:
S11.遍历中断向量表;
S12.检查是否出现版本标识,若是,提取版本信息,结束;否则,判断中断处理函数指针是否超范围,若是,执行步骤S13;否则,返回步骤S11;
S13.进行错误处理,结束。
优选地,在步骤S2中,rts包生成器将主、从板的rts固件统一打包为rts固件包,rts固件包包括rts固件包头、rts固件记录及rts固件三部分,rts固件包头包含完整性校验信息、写回的完整性校验信息、下载序号、rts固件包版本、固件包中的固件数量及固件包长度,每一条rts固件记录给出了一个rts固件的信息,包含固件类型、固件版本、固件校验信息、固件长度、固件在rts固件包中的起始地址,rts固件包由rts固件包头、rts固件记录及编译后生成的rts固件二进制bin文件对齐后连接而成。
在此,rts固件包自带完整性校验信息,后续可根据rts固件包的完整性校验信息验证固件更新是否成功。
优选地,所述完整性校验信息利用md5/crc32算法计算除完整性校验信息及写回的完整性校验信息字段外的rts固件包中其它字符的特征值获得;rts固件包除完整性校验信息、写回的完整性校验信息及下载序号外,其它字段从编译后的二进制bin文件中提取。
优选地,在步骤S3中,根据完整性校验信息确定非易失存储器的区域0与区域1内是否存在完整rts固件包的过程为:
S31.检查区域0/区域1的完整性校验信息是否全为0xFF,若是,非易失存储器的区域0/区域1内无完整rts固件包,否则,执行步骤S32;
S32.判断区域0/区域1的完整性校验信息及写回的完整性校验信息字段是否相等,若是,非易失存储器的区域0/区域1内存在完整rts固件包;否则,非易失存储器的区域0/区域1内无完整rts固件包。
优选地,在步骤S4中,主板的bootload固件上电,确定区域0与区域1分别对应活跃区还是备份区的标准为:
若区域0与区域1内均都存在完整rts固件包,则最近成功下载rts固件包的区域为活跃区;最近成功下载rts固件包的区域确定过程为:比较两个区域的下载序号字段,若差为1,则下载序号大的为活跃区,若其差大于1,则下载序号小的为活跃区。
若区域0与区域1中仅有一个区域存在完整rts固件包,则存在完整rts固件包的区域为活跃区;
若区域0与区域1均不存在rts固件,则区域0为备份区,区域1为活跃区;
根据条件选择进入下载模式或运行rts固件的过程满足:
若区域0及区域1均不存在完整rts固件包,则直接进入下载模式;
若区域0、区域1中的任一区域存在完整rts固件包,则在跳转主板rts固件运行前,判断是否进入下载模式:硬件设计一个调试io口,通过检查调试io口电平判断进入下载模式还是跳转主板rts固件运行。
在此,引入双备份机制避免固件更新失败导致控制器无法运行rts固件的现象发生,主板每次上电有一个进下载模式还是rts的选择过程。
优选地,打包的rts固件包中完整性校验信息、写回的完整性校验信息及下载序号全为0xFF。
优选地,通过上位机将rts固件包烧录至主板的非易失存储器的备份区的过程为:
S51.查询单板信息,由主板上报主板类型及下载序号,下载序号为活跃区下载序号加1;
S52.上位机使用主板上报的下载序号替换rts固件包中的下载序号字段,然后计算出此时rts固件包完整性校验信息后,替换掉rts固件包中的完整性校验信息字段,此时写回的完整性校验信息字段仍全为0xff;
S53.上位机发起初始化rts固件包请求,告知主板rts固件包的完整性校验信息及长度;
S54.主板发起rts固件包传输请求,上位机只需被动响应请求,将rts固件包传输至主板并缓存至非易失存储器备份区;
S55.主板在传输完成后,对rts固件包进行校验,计算出rts固件包的完整性校验信息,并与上位机初始化固件包请求下发的完整性校验信息对比是否一致,如一致,则将完整性校验信息写回至备份区写回的完整性校验信息字段地址。
优选地,在rts固件包中加入写回的完整性校验信息字段作为校验成功标识,在非易失存储器烧写后的首次校验成功后写入校验标识,无需每次上电重新校验;
当主从板跳转至rts固件运行时,从活跃区同步rts固件,主板仅在其rts固件提供从板固件更新流程。
在此,rts固件包带有下载的先后顺序信息,配合固件包的完整性校验流程,控制器在固件更新成功时才跳转至最新下载的rts固件包运行,否则继续运行旧有的rts固件包,提高了控制器的稳定性及可靠性,降低维护成本。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出一种主从板设计下控制器的固件更新方法,在固件源代码的中断向量表末尾加入版本标识及版本信息,简单方便,准确率高且具有普适性,以主板扩展大容量非易失存储器,引入双备份机制避免固件更新失败导致控制器无法运行rts固件的现象发生,利用上位机将固件缓存至主板的非易失存储器,从板从主板的非易失存储器中拉取版本,从而将一个涉及三方的复杂交互分解为两个端到端的交互,降低固件更新流程复杂度,为方便管理,利用rts包生成器打包得到包含主、从板所有rts固件的rts固件包,并加入完整性校验信息,主从板bootload从非易失存储器缓存的rts固件包同步rts固件版本,实现了主、从板rts固件自动分发并保证版本配套。
附图说明
图1表示本发明背景技术中提出的当前控制器单板相关固件更新结构及硬件接口示意图;
图2表示本发明背景技术中提出的采用主从板涉及的控制器的固件更新相关结构及硬件结构示意图;
图3表示本发明实施例1中提出的主从板设计下控制器的固件更新方法的流程示意图;
图4表示本发明实施例2中提出的主、从板的片内Flash空间规划示意图;
图5表示本发明实施例2中提出的从固件中提取版本信息的流程示意图;
图6表示本发明实施例3中提出的rts固件包的结构示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好地说明本实施例,附图某些部位会有省略、放大或缩小,并不代表实际尺寸;
对于本领域技术人员来说,附图中某些公知内容说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
附图中描述位置关系的仅用于示例性说明,不能理解为对本专利的限制;
实施例1
如图3所示,本实施例提出了一种主从板设计下控制器的固件更新方法,所述方法包括以下步骤:
S1.在固件源代码的中断向量表末尾加入版本标识及版本信息,编译得到主、从板的bootload固件及rts固件;
S2.主板扩展大容量非易失存储器,利用rts包生成器打包得到包含主、从板所有rts固件的rts固件包,并加入完整性校验信息;
S3.引入双备份机制,将非易失存储器划分为区域0及区域1,根据完整性校验信息确定非易失存储器的区域0与区域1内是否存在完整rts固件包;
S4.主板的bootload固件上电,确定区域0与区域1分别对应活跃区还是备份区,根据条件选择进入下载模式或运行rts固件;
S5.下载模式,通过上位机将rts固件包烧录至主板的非易失存储器的备份区,然后复位转执行S4;
S6.主板运行rts固件,从非易失存储器的活跃区保存的主板rts固件包中同步主板rts固件并运行;
S7.从板的bootload固件上电,从板发起从板rts固件初始化请求,主板返回从板RTS固件初始化信息,从板根据初始化信息从主板拉取rts固件;
S8.主板传输从板rts固件,从板校验rts固件,在从板rts固件校验通过后,跳转运行rts固件。
本实施例主要实行以下措施降低固件更新流程复杂度并确保满足固件更新中的性能指标要求:
(1)合理规划bootload及rts固件职责;
控制器出厂时只烧录bootload固件,且出厂后bootload原则上不更新,因此bootload固件需遵循最简化设计原则,只完成两个任务,rts固件更新及加载运行rts固件。
(2)扩展非易失存储器简化固件更新流程
主板扩展大容量非易失存储器缓存固件,上位机将固件缓存至主板的非易失存储器,从板从主板的非易失存储器中拉取版本,从而将一个涉及三方的复杂交互分解为两个端到端的交互,降低流程复杂度。
(3)为固件加入版本信息
为方便管理,在主从板的bootload固件及rts固件中加入版本信息,内容包括固件版本号、固件类型、编译时间等信息。
(4)引入双备份机制缓存固件
为避免固件更新失败导致控制器无法运行rts固件,引入双备份机制,将非易失存储器划分为区域0及区域1,其中一个是活跃区另一个是备份区,活跃区只读,备份区可写,活跃区及备份区基于特定机制自动切换。
(5)设计固件包格式及双备份自动切换流程
为方便管理,将主从板的rts固件统一打包为rts固件包,并加入完整性校验信息,根据完整性校验信息来决定非易失存储器的区域0与区域1是活跃区还是备份区,主从板bootload从非易失存储器缓存的rts固件包同步rts固件版本,以此实现主从板rts固件自动分发并保证版本配套。
(6)减少主板上电时间
主板上电时需对固件进行校验,包括非易失存储器的完整性校验及片内flash校验,其瓶颈在于非易失存储器受限于硬件带宽约束完整性校验耗时较长,故在rts固件包中加入写回的完整性校验信息字段作为校验成功标识,在非易失存储器烧写后的首次校验成功后写入校验标识而无需每次上电重新校验。另外为避免主板bootload等待从板同步rts固件导致主板上电超时,主板只在其rts固件提供从板固件更新流程。
实施例2
在本实施例中,固件通过汇编代码初始化中断向量表及C语言运行环境,中断向量表的起始地址固定,在汇编代码首地址附近,且中断向量数量有限,中断向量表的内容为指向sram或片内flash地址的中断处理函数指针或空指针;在固件源代码的中断向量表末尾加入版本标识及版本信息时,对主、从板的片内Flash空间进行规划,根据主、从板的片内Flash空间规划,若版本标识满足非空指针且不在片内Flash及sram地址空间内,则能通过搜索固件二进制编码,从固件中提取到版本信息,所述的版本信息包括固件版本号、固件类型、编译时间,主、从板的片内Flash空间规划如图4所示。
将版本标识及版本信息添加至固件中断向量表末尾,并从编译后的固件二进制文件中直接提取版本信息的方法,简单方便、正确率极高且具有普适性,可在各型号单片机上实现。
以意法半导体stm32系列芯片为例,可在其初始化汇编代码中加入版本信息,如下文所示:
Figure BDA0003991528340000081
Figure BDA0003991528340000091
如图5所示,从固件中提取版本信息的流程为:
S11.遍历中断向量表;
S12.检查是否出现版本标识,若是,提取版本信息,结束;否则,判断中断处理函数指针是否超范围,若是,执行步骤S13;否则,返回步骤S11;
S13.进行错误处理,结束。
实施例3
在步骤S2中,rts包生成器将主、从板的rts固件统一打包为rts固件包,如图6所示,rts固件包包括rts固件包头、rts固件记录及rts固件三部分,rts固件包头包含完整性校验信息、写回的完整性校验信息、下载序号、rts固件包版本、固件包中的固件数量及固件包长度,每一条rts固件记录给出了一个rts固件的信息,包含固件类型、固件版本、固件校验信息、固件长度、固件在rts固件包中的起始地址,因非易失存储器一般按页(256/1024/2048字节)操作,为方便操作,rts固件包由rts固件包头、rts固件记录及编译后生成的rts固件二进制bin文件对齐后连接而成,rts固件包自带完整性校验信息,后续可根据rts固件包的完整性校验信息验证固件更新是否成功。
在本实施例中,完整性校验信息利用md5/crc32算法计算除完整性校验信息及写回的完整性校验信息字段外的rts固件包中其它字符的特征值获得,但在具体实施是,不限于md5/crc32算法;rts固件包除完整性校验信息、写回的完整性校验信息及下载序号外,其它字段从编译后的二进制bin文件中提取。
根据完整性校验信息确定非易失存储器的区域0与区域1内是否存在完整rts固件包的过程为:
S31.检查区域0/区域1的完整性校验信息是否全为0xFF,若是,非易失存储器的区域0/区域1内无完整rts固件包,否则,执行步骤S32;
S32.判断区域0/区域1的完整性校验信息及写回的完整性校验信息字段是否相等,若是,非易失存储器的区域0/区域1内存在完整rts固件包;否则,非易失存储器的区域0/区域1内无完整rts固件包。
在步骤S4中,主板的bootload固件上电,确定区域0与区域1分别对应活跃区还是备份区的标准为:
若区域0与区域1内均都存在完整rts固件包,则最近成功下载rts固件包的区域为活跃区;最近成功下载rts固件包的区域确定过程为:比较两个区域的下载序号字段,若差为1,则下载序号大的为活跃区,若其差大于1,则下载序号小的为活跃区。
若区域0与区域1中仅有一个区域存在完整rts固件包,则存在完整rts固件包的区域为活跃区;
若区域0与区域1均不存在rts固件,则区域0为备份区,区域1为活跃区;
根据条件选择进入下载模式或运行rts固件的过程满足:
若区域0及区域1均不存在完整rts固件包,则直接进入下载模式;
若区域0、区域1中的任一区域存在完整rts固件包,则在跳转主板rts固件运行前,判断是否进入下载模式:硬件设计一个调试io口,通过检查调试io口电平判断进入下载模式还是跳转主板rts固件运行。
打包的rts固件包中完整性校验信息、写回的完整性校验信息及下载序号全为0xFF,通过上位机将rts固件包烧录至主板的非易失存储器的备份区的过程为:
S51.查询单板信息,由主板上报主板类型及下载序号,下载序号为活跃区下载序号加1;
S52.上位机使用主板上报的下载序号替换rts固件包中的下载序号字段,然后计算出此时rts固件包完整性校验信息后,替换掉rts固件包中的完整性校验信息字段,此时写回的完整性校验信息字段仍全为0xff;
S53.上位机发起初始化rts固件包请求,告知主板rts固件包的完整性校验信息及长度;
S54.主板发起rts固件包传输请求,上位机只需被动响应请求,将rts固件包传输至主板并缓存至非易失存储器备份区;
S55.主板在传输完成后,对rts固件包进行校验,计算出rts固件包的完整性校验信息,并与上位机初始化固件包请求下发的完整性校验信息对比是否一致,如一致,则将完整性校验信息写回至备份区写回的完整性校验信息字段地址。
在rts固件包中加入写回的完整性校验信息字段作为校验成功标识,在非易失存储器烧写后的首次校验成功后写入校验标识,无需每次上电重新校验;当主从板跳转至rts固件运行时,从活跃区同步rts固件,主板仅在其rts固件提供从板固件更新流程。rts固件包带有下载的先后顺序信息,配合固件包的完整性校验流程,控制器在固件更新成功时才跳转至最新下载的rts固件包运行,否则继续运行旧有的rts固件包,提高了控制器的稳定性及可靠性,降低维护成本。
实施例仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种主从板设计下控制器的固件更新方法,其特征在于,所述方法包括以下步骤:
S1.在固件源代码的中断向量表末尾加入版本标识及版本信息,编译得到主、从板的bootload固件及rts固件;
S2.主板扩展大容量非易失存储器,利用rts包生成器打包得到包含主、从板所有rts固件的rts固件包,并加入完整性校验信息;
S3.引入双备份机制,将非易失存储器划分为区域0及区域1,根据完整性校验信息确定非易失存储器的区域0与区域1内是否存在完整rts固件包;
S4.主板的bootload固件上电,确定区域0与区域1分别对应活跃区还是备份区,根据条件选择进入下载模式或运行rts固件;
S5.下载模式,通过上位机将rts固件包烧录至主板的非易失存储器的备份区,然后复位转执行S4;
S6.主板运行rts固件,从非易失存储器的活跃区保存的主板rts固件包中同步主板rts固件并运行;
S7.从板的bootload固件上电,从板发起从板rts固件初始化请求,主板返回从板RTS固件初始化信息,从板根据初始化信息从主板拉取rts固件;
S8.主板传输从板rts固件,从板校验rts固件,在从板rts固件校验通过后,跳转运行rts固件。
2.根据权利要求1所述的主从板设计下控制器的固件更新方法,其特征在于,固件通过汇编代码初始化中断向量表及C语言运行环境,中断向量表的起始地址固定,在汇编代码首地址附近,且中断向量数量有限,中断向量表的内容为指向sram或片内flash地址的中断处理函数指针或空指针;在固件源代码的中断向量表末尾加入版本标识及版本信息时,对主、从板的片内Flash空间进行规划,根据主、从板的片内Flash空间规划,若版本标识满足非空指针且不在片内Flash及sram地址空间内,则能通过搜索固件二进制编码,从固件中提取到版本信息,所述的版本信息包括固件版本号、固件类型、编译时间。
3.根据权利要求2所述的主从板设计下控制器的固件更新方法,其特征在于,从固件中提取版本信息的流程为:
S11.遍历中断向量表;
S12.检查是否出现版本标识,若是,提取版本信息,结束;否则,判断中断处理函数指针是否超范围,若是,执行步骤S13;否则,返回步骤S11;
S13.进行错误处理,结束。
4.根据权利要求1所述的主从板设计下控制器的固件更新方法,其特征在于,在步骤S2中,rts包生成器将主、从板的rts固件统一打包为rts固件包,rts固件包包括rts固件包头、rts固件记录及rts固件三部分,rts固件包头包含完整性校验信息、写回的完整性校验信息、下载序号、rts固件包版本、固件包中的固件数量及固件包长度,每一条rts固件记录给出了一个rts固件的信息,包含固件类型、固件版本、固件校验信息、固件长度、固件在rts固件包中的起始地址,rts固件包由rts固件包头、rts固件记录及编译后生成的rts固件二进制bin文件对齐后连接而成。
5.根据权利要求4所述的主从板设计下控制器的固件更新方法,其特征在于,所述完整性校验信息利用md5/crc32算法计算除完整性校验信息及写回的完整性校验信息字段外的rts固件包中其它字符的特征值获得;rts固件包除完整性校验信息、写回的完整性校验信息及下载序号外,其它字段从编译后的二进制bin文件中提取。
6.根据权利要求5所述的主从板设计下控制器的固件更新方法,其特征在于,在步骤S3中,根据完整性校验信息确定非易失存储器的区域0与区域1内是否存在完整rts固件包的过程为:
S31.检查区域0/区域1的完整性校验信息是否全为0xFF,若是,非易失存储器的区域0/区域1内无完整rts固件包,否则,执行步骤S32;
S32.判断区域0/区域1的完整性校验信息及写回的完整性校验信息字段是否相等,若是,非易失存储器的区域0/区域1内存在完整rts固件包;否则,非易失存储器的区域0/区域1内无完整rts固件包。
7.根据权利要求6所述的主从板设计下控制器的固件更新方法,其特征在于,在步骤S4中,主板的bootload固件上电,确定区域0与区域1分别对应活跃区还是备份区的标准为:
若区域0与区域1内均都存在完整rts固件包,则最近成功下载rts固件包的区域为活跃区;最近成功下载rts固件包的区域确定过程为:比较两个区域的下载序号字段,若差为1,则下载序号大的为活跃区,若其差大于1,则下载序号小的为活跃区。
若区域0与区域1中仅有一个区域存在完整rts固件包,则存在完整rts固件包的区域为活跃区;
若区域0与区域1均不存在rts固件,则区域0为备份区,区域1为活跃区;
根据条件选择进入下载模式或运行rts固件的过程满足:
若区域0及区域1均不存在完整rts固件包,则直接进入下载模式;
若区域0、区域1中的任一区域存在完整rts固件包,则在跳转主板rts固件运行前,判断是否进入下载模式:硬件设计一个调试io口,通过检查调试io口电平判断进入下载模式还是跳转主板rts固件运行。
8.根据权利要求7所述的主从板设计下控制器的固件更新方法,其特征在于,打包的rts固件包中完整性校验信息、写回的完整性校验信息及下载序号全为0xFF。
9.根据权利要求8所述的主从板设计下控制器的固件更新方法,其特征在于,通过上位机将rts固件包烧录至主板的非易失存储器的备份区的过程为:
S51.查询单板信息,由主板上报主板类型及下载序号,下载序号为活跃区下载序号加1;
S52.上位机使用主板上报的下载序号替换rts固件包中的下载序号字段,然后计算出此时rts固件包完整性校验信息后,替换掉rts固件包中的完整性校验信息字段,此时写回的完整性校验信息字段仍全为0xff;
S53.上位机发起初始化rts固件包请求,告知主板rts固件包的完整性校验信息及长度;
S54.主板发起rts固件包传输请求,上位机只需被动响应请求,将rts固件包传输至主板并缓存至非易失存储器备份区;
S55.主板在传输完成后,对rts固件包进行校验,计算出rts固件包的完整性校验信息,并与上位机初始化固件包请求下发的完整性校验信息对比是否一致,如一致,则将完整性校验信息写回至备份区写回的完整性校验信息字段地址。
10.根据权利要求9所述的主从板设计下控制器的固件更新方法,其特征在于,在rts固件包中加入写回的完整性校验信息字段作为校验成功标识,在非易失存储器烧写后的首次校验成功后写入校验标识,无需每次上电重新校验;
当主从板跳转至rts固件运行时,从活跃区同步rts固件,主板仅在其rts固件提供从板固件更新流程。
CN202211586765.9A 2022-12-09 2022-12-09 一种主从板设计下控制器的固件更新方法 Pending CN115827023A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211586765.9A CN115827023A (zh) 2022-12-09 2022-12-09 一种主从板设计下控制器的固件更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211586765.9A CN115827023A (zh) 2022-12-09 2022-12-09 一种主从板设计下控制器的固件更新方法

Publications (1)

Publication Number Publication Date
CN115827023A true CN115827023A (zh) 2023-03-21

Family

ID=85546349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211586765.9A Pending CN115827023A (zh) 2022-12-09 2022-12-09 一种主从板设计下控制器的固件更新方法

Country Status (1)

Country Link
CN (1) CN115827023A (zh)

Similar Documents

Publication Publication Date Title
CN109240730B (zh) 一种单片机在线升级方法和系统
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
CN109189445B (zh) 一种物联网设备程序升级的方法
CN108847950B (zh) 电子装置、云系统软件自动部署方法及存储介质
JP4878715B2 (ja) オペレーティングシステムに適合しないアプリケーションにパッチを当てる方法、コンピュータシステム及びコンピュータ可読記録媒体
KR101143112B1 (ko) 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법
WO2021115477A1 (zh) 程序升级方法、装置、电子设备及存储介质
CN101815988A (zh) 固件映像更新和管理
CN110633091A (zh) 一种电子模块及其软件无线升级方法
CN101650662A (zh) 一种嵌入式系统的存储器件、固件启动及升级方法
CN109683941A (zh) 一种基于单芯片在线加载的应答机软件升级方法
CN111562934B (zh) 一种基于热补丁的软件系统升级方法、终端及存储介质
CN101872306B (zh) 一种实现软件更新和软件备份的嵌入式系统及其实现方法
CN108182078B (zh) 一种优化的弹载设备不拆弹软件在线升级方法
CN112152846A (zh) 一种基于物联网的计量仪表远程升级方法
CN114860279A (zh) 一种快速空片升级方法
CN109634781A (zh) 一种基于嵌入式程序双区备份映像系统及启动方法
CN112148339A (zh) 一种双核芯片及其程序更新方法
CN116755749A (zh) 板载mcu的升级方法、板载mcu、板卡及信息处理系统
CN113377425B (zh) Bmc固件生成方法和装置、bmc启动方法和装置及存储介质
CN115827023A (zh) 一种主从板设计下控制器的固件更新方法
CN111930402B (zh) 集群服务器的固件升级方法和集群服务器
CN112230967B (zh) 一种基于传统分区的光模块固件可回退在线升级方法
CN114490178A (zh) 电能表软件升级的方法及电能表
CN114968299A (zh) 基于Multiboot设备固件升级及异常处理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination