IO模块的固件更新方法及IO模块技术

技术编号:29215551 阅读:30 留言:0更新日期:2021-07-10 00:53
本发明专利技术公开了一种IO模块的固件更新方法,IO模块的固件更新方法包括将位于同一固件内的第一程序和第二程序分别存储在IO模块的MCU片上存储器的第一存储区和第二存储区,第一存储区与低位地址相对应,第二存储区与高位地址相对应;当触发IO模块的固件更新条件时,执行第一程序以实现固件的更新。本发明专利技术将第一程序和第一程序合并为一个固件,并在一个工程进行开发,并将第一程序和第二程序在存储器上分区存放,在固件部署时可以通过一次部署完成IO模块的固件更新,方便维护,降低维护成本,通过一次部署完成IO模块的固件更新,减少了部署工作量和部署错误。量和部署错误。量和部署错误。

【技术实现步骤摘要】
IO模块的固件更新方法及IO模块


[0001]本专利技术涉及嵌入式系统控制领域,尤其涉及一种IO模块的固件更新方法及IO模块。

技术介绍

[0002]DCS(分散控制系统)中需要大量的IO模块采集现场数据或驱动现场设备。DCS中的IO(输入输出)模块是一种以微控制器(MCU)为基础的嵌入式终端设备,其存储器上存储有固件代码,固件类型包括BootLoader(引导加载)固件和应用固件,BootLoader固件是在IO模块上电或复位时启动的初始化程序,用于对IO模块进行相应的初始化。应用固件是用于实现IO模块的各种功能的程序。随着IO模块功能的更新,IO模块的固件也存在更新的需求。
[0003]现有技术中,BootLoader固件和应用固件是在独立的工程中进行开发和维护。IO模块进行固件更新时需要分两次部署,第一次部署需将BootLoader固件烧写到IO模块,即,将BootLoader固件代码写入IO模块内存储器的开始地址,第二次部署将应用固件烧写到IO模块,即,将应用固件代码写入IO模块内存储器的BootLoader固件代码后的地址。由于BootLoader固件和应用固件是在独立的工程中进行开发的,不能统一维护,造成维护成本偏高,IO模块固件更新时分两次部署会造成部署工作量增大,部署错误增加。

技术实现思路

[0004]本专利技术要解决的技术问题是为了克服现有技术中BootLoader固件和应用固件在独立的工程中开发,不能统一维护,造成维护成本偏高,IO模块固件更新时分两次部署会造成部署工作量增大,部署错误增加的缺陷,提供一种IO模块的固件更新方法及IO模块。
[0005]本专利技术是通过下述技术方案来解决上述技术问题:
[0006]一种IO模块的固件更新方法,包括:
[0007]将位于同一固件内的第一程序和第二程序分别存储在IO模块的MCU片上存储器的第一存储区和第二存储区,所述第一存储区与低位地址相对应,所述第二存储区与高位地址相对应;
[0008]当触发所述IO模块的固件更新条件时,执行所述第一程序以实现所述固件的更新。
[0009]较佳地,所述执行所述第一程序以实现所述固件的更新,包括:
[0010]执行所述第一程序,以读取更新标志,并在所述更新标志表明所述固件存在更新时,擦除所述第二存储区的内容,以及读取新的第二程序并写入所述第二存储区。
[0011]较佳地,所述读取更新标志,包括:
[0012]从IO模块的非易失性存储器读取所述更新标志。
[0013]较佳地,所述擦除所述第二存储区的内容,包括:
[0014]擦除第二程序起始地址以后的存储空间的内容,所述第二程序起始地址等于所述MCU片上存储器的固件存储起始地址加所述第一程序的大小后所得的偏移地址,或,在所述
第一程序与所述第二程序之间存在数据边界保护区时,等于所述MCU片上存储器的固件存储起始地址加所述第一程序的大小加所述数据边界保护区的大小后所得的偏移地址。
[0015]较佳地,所述读取新的第二程序并写入所述第二存储区,包括:
[0016]从所述IO模块的非易失性存储器读取新的固件,并将所述新的固件所包括的第二程序写入所述第二存储区。
[0017]较佳地,所述读取新的第二程序并写入所述第二存储区,包括:
[0018]读取新的第二程序起始地址起始的存储空间并写入所述第二存储区,直至读取后写入的数据大小等于所述新的第二程序的大小;
[0019]其中,所述新的第二程序起始地址等于新固件存储起始地址加所述第一程序的大小后所得的偏移地址,或,在所述第一程序与所述新的第二程序之间存在数据边界保护区时,等于新固件存储起始地址加所述第一程序的大小加所述数据边界保护保护区的大小后所得的偏移地址;
[0020]所述新的第二程序的大小等于所述新的固件的大小减去所述第一程序的大小,或,在所述第一程序与所述新的第二程序之间存在数据边界保护区时,等于所述新的固件的大小减去所述第一程序的大小再减去所述数据边界保护区的大小。
[0021]较佳地,所述执行所述第一程序以实现所述固件的更新,还包括:在写入所述第二存储区之后,清除所述更新标志以及所述新的第二程序的原始存储。
[0022]一种IO模块,包括微控制单元;
[0023]所述微控制单元的片上存储器包括第一存储区和第二存储区,所述第一存储区和所述第二存储区分别用于存储位于同一固件内的第一程序和第二程序,所述第一存储区与低位地址相对应,所述第二存储区与高位地址相对应;
[0024]所述微控制单元在所述IO模块的固件更新条件被触发时,执行所述第一程序以实现所述固件的更新。
[0025]较佳地,所述微控制单元包括ARM Cortex

M架构的微控制单元。
[0026]较佳地,所述IO模块还包括非易失性存储器。
[0027]本专利技术的积极进步效果在于:本专利技术将第一程序和第二程序合并在一个固件进行开发,并将第一程序和第二程序在存储器上分区存放,在固件更新时可以通过一次部署完成IO模块的固件更新,通过第一程序和第二程序合并在一个固件进行开发,方便维护,降低维护成本,通过一次部署完成IO模块的固件更新,减少了部署工作量和部署错误。
附图说明
[0028]图1为本专利技术实施例1的IO模块的固件更新方法的流程示意图。
[0029]图2为本专利技术实施例1的MCU片上存储器的地址空间分区示意图。
[0030]图3为本专利技术实施例1的硬件平台示意图。
[0031]图4为本专利技术实施例1的应用程序内下载固件的帧格式。
[0032]图5为本专利技术实施例2的IO模块的结构示意图。
具体实施方式
[0033]下面通过实施例的方式进一步说明本专利技术,但并不因此将本专利技术限制在所述的实
施例范围之中。
[0034]实施例1
[0035]本实施例提供一种IO模块的固件更新方法,如图1所示,包括以下步骤:
[0036]步骤100、将位于同一固件内的第一程序和第二程序分别存储在IO模块的MCU片上存储器的第一存储区和第二存储区,第一存储区与低位地址相对应,第二存储区与高位地址相对应。具体的,第一程序可以为BootLoader程序或引导程序,用于引导固件更新。第二程序可以为应用程序,具体应用程序的种类可根据IO模块所在设备的功能决定,例如扫码设备上IO模块内的应用程序可包括扫码程序等,支付设备上IO模块内的应用程序可包括支付程序等。MCU片上存储器可以为片上Flash(一种存储器)。如图2所示,从片上Flash起始地址到第二程序起始地址构成第一存储区,该第一存储区用于存储第一程序,从第二程序起始地址开始后的地址空间构成第二存储区,该第二存储区用于存储第二程序。MCU为ARMCortex

M系列(包括Cortex

M3,Cortex

M4以及Corte本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种IO模块的固件更新方法,其特征在于,包括:将位于同一固件内的第一程序和第二程序分别存储在IO模块的MCU片上存储器的第一存储区和第二存储区,所述第一存储区与低位地址相对应,所述第二存储区与高位地址相对应;当触发所述IO模块的固件更新条件时,执行所述第一程序以实现所述固件的更新。2.如权利要求1所述的IO模块的固件更新方法,其特征在于,所述执行所述第一程序以实现所述固件的更新,包括:执行所述第一程序,以读取更新标志,并在所述更新标志表明所述固件存在更新时,擦除所述第二存储区的内容,以及读取新的第二程序并写入所述第二存储区。3.如权利要求2所述的IO模块的固件更新方法,其特征在于,所述读取更新标志,包括:从IO模块的非易失性存储器读取所述更新标志。4.如权利要求2所述的IO模块的固件更新方法,其特征在于,所述擦除所述第二存储区的内容,包括:擦除第二程序起始地址以后的存储空间的内容,所述第二程序起始地址等于所述MCU片上存储器的固件存储起始地址加所述第一程序的大小后所得的偏移地址,或,在所述第一程序与所述第二程序之间存在数据边界保护区时,等于所述MCU片上存储器的固件存储起始地址加所述第一程序的大小加所述数据边界保护区的大小后所得的偏移地址。5.如权利要求2所述的IO模块的固件更新方法,其特征在于,所述读取新的第二程序并写入所述第二存储区,包括:从所述IO模块的非易失性存储器读取新的固件,并将所述新的固件所包括的第二程序写入所述第二存储区。6.如权利要求2所述的IO模块的固件更新方法,其特征在于,所述读取新的第二程序...

【专利技术属性】
技术研发人员:俞冠中王巍靳子扬田钢刘玉升项文蔚王汉意
申请(专利权)人:国核自仪系统工程有限公司
类型:发明
国别省市:

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

1