CN115357274A - 远程io设备固件升级方法及系统 - Google Patents

远程io设备固件升级方法及系统 Download PDF

Info

Publication number
CN115357274A
CN115357274A CN202210764617.5A CN202210764617A CN115357274A CN 115357274 A CN115357274 A CN 115357274A CN 202210764617 A CN202210764617 A CN 202210764617A CN 115357274 A CN115357274 A CN 115357274A
Authority
CN
China
Prior art keywords
data
firmware
upgrade
remote
upgrading
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
CN202210764617.5A
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.)
Kyland Technology Co Ltd
Original Assignee
Kyland Technology 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 Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Priority to CN202210764617.5A priority Critical patent/CN115357274A/zh
Publication of CN115357274A publication Critical patent/CN115357274A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种远程IO设备固件升级方法及系统,属于固件升级技术领域。一种远程IO设备固件升级方法,由边缘控制器执行,包括:响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载;与待升级的远程IO设备进行身份认证,并在认证通过后对所述升级固件进行拆包/组包操作,获得多个升级包数据;将所述多个升级包数据逐一发送到对应的远程IO设备;响应于接收自远程IO设备的升级完成信号,将所述升级完成信号回传到所述主控端。本发明方案在保证了远程升级的高效率性的同时,解决了远程升级存在的安全性差和稳定性差的问题。

Description

远程IO设备固件升级方法及系统
技术领域
本发明涉及固件升级技术领域,具体地涉及一种远程IO设备固件升级方法及一种远程IO设备固件升级系统。
背景技术
随着工业控制技术的发展,工业物联网在监测工业设备技术中,在不同地域、各种特殊环境下的运行情况方面扮演着越来越重要的角色。想要实现工业物联网的目的,需要在生产场地内部署很多IO设备,已实现对应的数据采集和执行。这些IO设备存在分布广和部署量大的特征,在实际生产过程中,难免存在IO设备升级的需求。
在现有的升级方法中,主要存在现场升级和远程升级两种方式。其中,现场升级方式虽然稳定可靠,但因为操作复杂和路途奔波使得升级效率很低。而远程升级方式虽然可以提高升级效率,但这种升级方式采用明文方式下发升级固件,没有对发起升级的单位或人员进行身份识别,存在一定安全隐患,甚至存在被远程攻击的情况。
因此,需要一种新的远程IO设备固件升级方法,以解决现有升级方法普遍存在的升级效率低、安全性差和稳定性差的问题。
发明内容
本发明实施方式的目的是提供一种远程IO设备固件升级方法及一种远程IO设备固件升级系统,以至少解决现有升级方法普遍存在的升级效率低、安全性差和稳定性差的问题。
为了实现上述目的,本发明第一方面提供一种远程IO设备固件升级方法,由边缘控制器执行,所述方法包括:响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载;与待升级的远程IO设备进行身份认证,并在认证通过后对所述升级固件进行拆包/组包操作,获得多个升级包数据;将所述多个升级包数据逐一发送到对应的远程IO设备;响应于接收自远程IO设备的升级完成信号,将所述升级完成信号回传到所述主控端。
可选的,所述对所述升级固件进行拆包/组包操作,获得多个升级包数据,包括:对所述升级固件进行拆包处理,对获得的拆解数据进行头尾信息添加;对完成头尾信息添加的拆解数据进行加密处理,并对每一个存在头尾信息的拆解数据进行组包操作,获得多个加密升级包数据,作为对应的升级包数据。
可选的,所述与待升级的远程IO设备进行身份认证,包括:基于预设鉴权加密算法发起与远程IO设备的身份认证请求,并回收对应远程IO设备的反馈信息;基于所述反馈信息判断对应远程IO设备的身份是否合法;其中,所述预设鉴权加密算法为对称加密算法或非对称加密算法。
可选的,所述与待升级的远程IO设备进行身份认证,还包括:切断与不合法的远程IO设备之间的通讯连接,并回传对应的报警信息到所述主控端。
本发明第二方面提供一种远程IO设备固件升级方法,由远程IO设备执行,所述方法包括:响应于边缘控制器发送的身份认证触发信号,与对应的边缘控制器进行身份认证;若身份认证通过,从所述边缘控制器逐一下载升级包数据;对所述升级包数据进行解密操作,并将解密后的数据写入对应的存储区域;驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,直到完成所有解密后的数据升级,回传升级完成信号到对应的边缘控制器。
可选的,在对所述升级包数据进行解密操作操作前,所述方法还包括:进行升级包数据校验,包括:每下载完成一个升级数据包,便对该升级数据包进行对应的格式校验和CRC校验,并在校验成功后再执行下一个升级数据包下载,直到最后一个升级数据包校验成功,完成升级包数据下载。
可选的,在对所述升级包数据进行解密操作操作前,所述方法还包括:进行升级包数据校验,包括:逐一下载升级包数据,响应于最后一包升级包数据下载完成触发信号,对已下载的所有升级包数据进行对应的格式校验和CRC校验,并在校验成功后完成升级包数据下载。
可选的,所述将解密后的数据写入对应的存储区域,包括:逐一判断解密后的新固件数据是否为MCU固件数据;若是,则将对应解密后的新固件数据写入所述MCU固件的内部存储区域;反之,则将对应解密后的新固件数据写入所述MCU固件的外部存储区域;其中,所述解密后的数据中的新固件数据与对应的配置区信息存储在不同的存储扇区中;直到完成最后一包解密后的新固件数据的判断和存储,完成解密后的数据写入。
可选的,在执行对应的升级操作过程中,每完成一包解密数据升级,便将对应升级后的新固件数据进行读取并校验,并在校验成功后执行下一包解密数据升级;在完成最后一包解密数据升级并校验成功后,判定升级成功。
可选的,在执行对应的升级操作过程中,完成所有解密数据升级后,对整个程序进行一次预读取并校验,并在校验成功后判定升级成功。
可选的,完成解密后的数据写入后,所述方法还包括:生成对应的新固件配置区信息,并将所述新固件配置区信息存储到对应新固件数据的存储区域内;其中,所述新固件数据与对应的新固件配置区信息存储在同一存储区域的不同存储扇区中。
可选的,所述驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,包括:读取所述MCU固件的内部存储区域存储的解密后的数据,根据其配置区信息的标志位判断是否加载新固件;若存在需要加载的新固件,则擦除对应旧存储区域的数据,并将对应的新固件信息拷贝到对应存储区域;在完成数据拷贝后进行校验,在校验成功后更新对应固件标志位状态为不加载新固件,并对应擦除新固件存储区域存储的新固件数据;若不存在需要加载的新固件,则跳转至旧固件区域,读出中断向量表地址并跳转运行旧程序。
可选的,所述驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,还包括:将所述MCU固件的外部存储区域存储的解密后的数据逐一发送给FPGA固件;FPGA固件根据各数据标志位擦除对应旧存储区域的数据,并将对应的新固件信息拷贝到对应存储区域;在完成数据拷贝后进行校验,在校验成功后更新对应固件标志位状态为不加载新固件,并对应擦除新固件存储区域存储的新固件数据;指针调准到新程序入口,读取新固件数据以完成FPGA固件升级。
本申请第三方面提供一种远程IO设备固件升级系统,所述系统包括:主控端,用于发起升级触发信号,并生成对应的升级固件;边缘控制器,与所述主控端通信连接,用于:响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载;对所述升级固件进行拆包/组包操作,获得多个升级包数据;与待升级的远程IO设备进行身份认证,并在认证通过后将所述多个升级包数据逐一发送到对应的远程IO设备;响应于接收自远程IO设备的升级完成信号,将所述升级完成信号回传到所述主控端;远程IO设备,与所述边缘控制器通信连接,用于:响应于边缘控制器发送的身份认证触发信号,与对应的边缘控制器进行身份认证;若身份认证通过,从所述边缘控制器逐一下载升级包数据;对所述升级包数据进行解密操作,并将解密后的数据写入对应的存储区域;驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,直到完成所有解密后的数据升级,回传升级完成信号到对应的边缘控制器。
本发明的再一方面,提供一种计算机可读储存介质,该计算机可读存储介质上储存有指令,其在计算机上运行时使得计算机执行上述的远程IO设备固件升级方法。
通过上述技术方案,通过边缘控制器进行升级固件解包和组包操作,对升级固件进行对应的加密,然后通过身份合法性判断和文件加密传输的双重保护手段进行升级过程保护,避免被恶意攻击程序截取。本发明方案在基于远程升级的方式解决升级效率低的问题的同时,解决了远程升级方案安全性差的问题。
本发明实施方式的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施方式的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施方式,但并不构成对本发明实施方式的限制。在附图中:
图1是本发明一种实施方式提供的远程IO设备固件升级方法的步骤流程图;
图2是本发明一种实施方式提供的远程IO设备固件升级系统的系统结构图;
图3是本发明一种实施方式提供的升级包数据下载存储流程图;
图4是本发明一种实施方式提供的升级后程序驱动的步骤流程图;
图5是本发明一种实施方式提供的远程IO设备的结构示意图;
图6是本发明一种实施方式提供的远程IO设备固件升级方法的执行流程图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
随着工业控制技术的发展,工业物联网在监测工业设备技术中在不同地域、各种特殊环境下的运行情况方面扮演着越来越重要的角色。工业物联网是将具有感知、监控能力的各类采集、控制传感器或控制器,以及移动通信、智能分析等技术不断融入到工业生产过程各个环节,从而大幅提高制造效率,改善产品质量,降低产品成本和资源消耗,最终实现将传统工业提升到智能化的新阶段。可见,想要实现工业物联网的目的,需要在生产场地内部署很多IO设备,已实现对应的数据采集和执行。这些IO设备存在分布广和部署量大的特征,在实际生产过程中,难免存在IO设备升级的需求,在现有的升级方法中,主要存在现场升级和远程升级两种方式,其中,现场升级方式即工作人员带着JTAG烧录器等烧录设备,对远程IO设备上的FPGA或MCU等设备进行程序升级。虽然这种方式稳定可靠,但依旧存在以下几点问题:
1)因为大多数设备量产时不会预留JTAG烧录接口,故需要拆壳后暴露出该接口才可完成升级烧录工作。且有些设备布置于风电设备上,若人为到高空做业升级,困难程度会进一步加大;
2)结合实际应用场景可知,远程IO设备通常分散部署于多个生产车间或控制塔内,设备间相距短则几米,长则几百上千米,考虑折返路程和拆壳等操作,会增加单个设备的升级耗时,降低整批设备升级效率;
3)若出现多人同时完成现场升级工作,标准化管控难以实现,要依赖于操作人员的责任心,使得升级品控难以保证。
而对于远程升级方式,远程IO通过485或者422等接口与本地控制器设备连接,在计算机的控制下通过互联网操作控制器对远程IO的用户程序和系统程序升级。但这种升级方式采用明文方式下发升级固件,没有对发起升级的单位或人员进行身份识别,存在一定安全隐患,甚至存在被远程攻击的情况。升级可能引发的故障包括:
1)恶意攻击产生的设备功能异常;因为远程IO设备多应用于工控行业,部署于大型生产车间等重要生产单位,一旦被恶意攻击破坏,产生的后果会很严重;
2)设备升级时刻的外部电源环境不稳定导致的升级失败;若升级过程中发生意外断电等非人为可控情况时可能导致程序存储区数据写错(多数设备都采用FLASH芯片来存储程序,而flash对于擦写时刻的电压稳定性有要求,如果擦写过程中出现了断电、电压瞬间增大等情况,flash扇区内的数据可能错乱),有一定概率导致设备升级失败从而无法恢复正常,只能进行现场处理。
可见,在现有背景技术下,无论是现场升级方式还是远程升级方式,始终无法兼顾升级效率和升级安全性的问题,使得现有升级方法普遍存在升级效率低、安全性差和稳定性差的问题。
基于此,本发明方案提出了一种新的远程IO设备固件升级方法及远程IO设备固件升级系统。一方面实现远程IO设备的远程升级方式,以解决升级效率低的问题。另一方面通过升级固件加密传输以及优化flash更新固件的流程,解决升级过程安全性差和稳定性差的问题。
图2是本发明一种实施方式提供的远程IO设备固件升级系统的系统结构图。如图2所示,本发明实施方式提供一种远程IO设备固件升级系统,所述系统包括:主控端,用于发起升级触发信号,并生成对应的升级固件;边缘控制器,与所述主控端通信连接,用于:响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载;对所述升级固件进行拆包/组包操作,获得多个升级包数据;与待升级的远程IO设备进行身份认证,并在认证通过后将所述多个升级包数据逐一发送到对应的远程IO设备;响应于接收自远程IO设备的升级完成信号,将所述升级完成信号回传到所述主控端;远程IO设备,与所述边缘控制器通信连接,用于:响应于边缘控制器发送的身份认证触发信号,与对应的边缘控制器进行身份认证;若身份认证通过,从所述边缘控制器逐一下载升级包数据;对所述升级包数据进行解密操作,并将解密后的数据写入对应的存储区域;驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,直到完成所有解密后的数据升级,回传升级完成信号到对应的边缘控制器。
优选的,所述远程IO设备包括:FPGA模块、MCU模块、Flash模块和光通信模块;其中,所述MCU模块包括内部Flash区域,用于作为MCU固件的内部存储区域;所述Flash模块用于作为MCU固件的外部存储区域;所述光通信模块用于下载升级包数据,以及回传升级完成信号。
优选的,每一个远程IO设备的MCU模块存在一个独有的身份标识信息。
优选的,每一个远程IO设备和对应的边缘控制器均存在预设的协商鉴权密钥,用于进行升级过程中的相互身份认证。
图1是本发明一种实施方式提供的远程IO设备固件升级方法的方法流程图。如图1所示,本发明实施方式提供一种远程IO设备固件升级方法的方法,所述方法包括:
步骤S10:响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载。
具体的,当存在远程IO设备升级需求时,在主控端发起对应的升级执行指令,基于该执行指令触发对应的升级触发信号。相关人员在主控端进行对应的升级固件生成,然后选择需要进行升级的远程IO设备类型,这些待升级的远程IO设备预先绑定有对应的边缘控制器,这些边缘控制器便会基于升级触发信号,从所述主控端进行对应的升级固件下载。
优选的,边缘控制器完成升级固件接收后,首先需要对升级固件进行校验,一方面校验升级包数据是否来自于对应的主控端,另一方面校验该升级包数据的完整性。因为存在恶意攻击程序发起恶意升级的可能,所以通过校验数据是否来自于预设的主控端,可以避免其他恶意攻击终端发起恶意升级请求,简单来说,仅预设的主控端才能合法地发起升级指令。而升级固件完整性校验是为了保证后续升级过程稳定,因为在文件传输过程中,存在数据缺失的可能。无论是哪一种校验结果未通过,边缘控制器均需要停止升级步骤,并反馈对应的报警信息到主控端。优选的,若仅是文件完整性校验未通过,反馈报警信息的同时重新发起升级固件下载请求,自动重新尝试进行升级固件下载。
步骤S20:与待升级的远程IO设备进行身份认证,并在认证通过后对所述升级固件进行拆包/组包操作,获得多个升级包数据。
具体的,边缘控制器完成数据校验后,还需要判断待升级IO固件的身份是否合法。因为恶意攻击终端可能会冒充远程IO设备与对应的边缘控制器建立通信连接,若边缘控制器直接将升级固件信息发送到所有通信连接的远程IO设备上,则极易造成升级信息被恶意攻击终端获取的情况,使得后续恶意攻击终端基于该信息进行系统攻击。
优选的,在进行远程IO设备部署时,便在所有远程IO设备和对应的边缘控制器中部署鉴权密钥。后续在升级过程中,边缘控制器与对应的远程IO设备基于该鉴权密钥进行身份认证,若远程IO设备的身份不合法,则表示存在冒充IO固件的恶意攻击终端,则切断与不合法远程IO设备之间的通讯连接,避免其进一步基于该通信链路进行数据截取,并回传对应的报警信息到所述主控端。
在另一种可能的实施方式中,基于预设的对称加密算法或非对称加密算法进行对应的身份鉴权请求发起以及响应,基于加密算法生成对应的身份鉴权数据,然后对方基于相同解密算法进行鉴权数据解密,基于解密数据进行鉴权反馈或认定,判断身份是否合法。只要能够完成边缘控制器对远程IO设备的唯一身份验证,便理应落入本发明的保护范围。
完成身份认证后,对所述升级固件进行拆包处理,为拆解数据进行头尾信息添加;对完成头尾信息添加的拆解数据进行加密处理,并对每一个存在头尾信息的拆解数据进行组包操作,获得多个加密升级包数据,作为对应的升级包数据。其中,对应的加密算法包括:3DES算法、AES算法、SM2算法、SHA1算法中的任意一种。进行边缘控制器部署时,通过软件算法移植或基于硬件安全芯片使其实现对上述加密算法的支持。
在本发明实施例中,通过识别到了冒充IO固件的恶意攻击终端,并对这些终端进行了屏蔽,有效地避免了一部分升级过程被恶意攻击的可能,但在文件传输链路上,文件数据依旧有被截取的可能。为了进一步保证升级过程的安全性,进行数据传输时,摈弃传统的明文传输方法,而采用加密数据传输。仅合法的IO固件才能基于预设的协商密钥进行文件解密提取,即使数据文件被截取,因为恶意攻击终端不存在预设协商密钥,其依旧无法获取完整的数据信息,也就无法基于数据进行恶意攻击。通过身份鉴权和文件加密传输两种方式,保证整个升级过程的绝对安全,避免文件泄漏。
步骤S30:远程IO设备在身份认证通过后从所述边缘控制器逐一下载升级包数据,对所述升级包数据进行解密操作,并将解密后的数据写入对应的存储区域。
具体的,逐一判断解密后的数据是否为MCU固件数据;若是,则将对应解密后的数据写入所述MCU固件的内部存储区域;反之,则将对应解密后的数据写入所述MCU固件的外部存储区域;其中,解密后数据中的新固件数据与对应的配置区信息存储在不同的存储扇区中。
优选的,远程IO设备上的认证鉴权模块鉴权通过后,数据校验单元对数据完整性校验通过后,数据解密单元将接收到的数据包进行解密操作,数据存储单元将升级数据写入到MCU内部flash或外部flash中对应的存储区域,然后进行flash升级数据完整性校验,此处所选方法不固定,可以在每次写入单包数据后马上读出校验,也可以在写完最后一包数据后统一校验。当完成最后一包数据的存储后,将升级配置信息写入到flash的配置页内,此配置信息不能与升级固件数据位于同一flash页内。
在本发明实施例中,IAP引导完成固件升级时,考虑到掉电和电压突变等意外情况,优化了flash更新固件的流程,采用配置区信息与升级数据信息物理扇区隔离的方式,避免了在flash内进行固件移动时,因为擦写新固件失败导致升级配置信息受到关联影响情况的发生。例如,假设配置信息与新固件最后一包数据写入了同一flash扇区内,当移动该页数据到旧flash存储区时意外发生掉电,有极大概率导致本页数据错乱,而设备重新上电后,IAP读取的配置信息错误会导致程序无法正常加载,进而导致功能异常,只能采用现场升级固件方式来解决。
在一种可能的实施方式中,如图3,边缘控制器生成一个随机数,并基于该随机数发起与远程IO设备之间的身份鉴权操作,发送对应的鉴权数据到对应的远程IO设备。该原生IO设备在接受到该鉴权数据后,生成对应的随机数响应该鉴权请求,并生成对应的鉴权数据回传到边缘控制器。边缘控制器基于该鉴权数据进行对应的身份鉴权操作,判断该远程IO设备身份是否合法。在判定身份合法后,边缘控制器对新固件进行拆包和组包操作,获得升级包数据,并逐一发送到对应的IO设备端。IO设备每获得一个升级包数据,便分别对该数据进行CRC校验和格式校验,在其符合需求时,判断其是否为MCU固件。若是,则将对应解密后的新固件数据写入所述MCU固件的内部存储区域;反之,则将对应解密后的新固件数据写入所述MCU固件的外部存储区域。每判断一包数据,便对应将该数据存储到目标区域内,然后逐一进升级包数据判断和存储,直到完成最后一包解密后的新固件数据的判断和存储,便完成了远程IO设备对升级固件数据的下载任务。在完成新固件数据存储后,为了限定后续升级操作步骤,以及指定对应的操作动作,需要基于新固件数据生成对应的新固件配置区信息,该配置区信息记录有固件生成日期、版本号,固件长度,包数,每包数据长度,每包数据校验码。将生成的配置区信息也存储到对应新固件数据的存储区域内,但新固件数据与对应的新固件配置区信息存储在同一存储区域的不同存储扇区中。通过此举可以保证在发生突然断电过程中不会造成新固件数据与配置区信息一同损坏,后续可以基于保存完好的配置区信息在断电位置继续进行升级操作。
步骤S40:驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,直到完成所有解密后的数据升级,完成远程IO设备升级。
具体的,远程IO设备进行复位或者重新上电操作后,MCU内的IAP程序会根据内部flash配置页内的MCU升级信息,获取到MCU新固件大小、生成日期等信息,据此完成对MCU固件的升级加载。然后,读取外部flash配置页内的FPGA升级信息,获取到FPGA新固件大小等信息,据此完成对FPGA固件的升级加载。加载MCU新程序的具体流程是先将存储旧固件的片内flash区域整体擦除,然后从flash存储新固件的地址逐页读出新固件并写入到旧固件地址内并读出校验CRC值,若校验正确则证明数据写入无误,继续操作直至数据全部写入成功后,将flash存储接收升级固件区域的内容擦除。最后IAP程序指针指向新新程序中断向量表位置,MCU程序指针跳转并执行新程序。
而对于FPGA新程序加载,MCU将外部flash内存储的新固件通过SPI接口逐包发送给FPGA,后者对数据校验通过后,拉低config引脚通知MCU加载新程序成功,FPGA内部指针调准到新程序入口完成升级启动。
优选的,完成升级后,生成对应的升级完成信号,并将升级完成信号通过边缘控制器转发到主控端,相关人员基于主控端反馈的信息判断升级过程是否顺利完成。
在本发明实施例中,升级过程中加入了认证鉴权操作,避免非法授权升级事件的发生。因为非法授权人员没有鉴权密钥,无法完成鉴权认证,导致远程IO不会启动升级流程。升级固件采用密文方式传递,保证了固件的安全性。因为非法人员没有加密和解密的密钥,所以没法生成正确的密文固件,进而无法完成升级操作。错误的密钥会导致数据解析错乱,MCU中的IAP具有研判功能,不会对这种数据进行升级操作,保证了升级过程中的安全性。
在一种可能的实施方式中,如图4,进行升级后固件加载时,首先进行MCU固件加载,然后基于加载的MCU固件进行对应的FPGA固件加载。首先读取flash内部存储页上存储的配置区信息,然后判断其中是否记录有新固件信息,如果不存在新固件信息,则直接加载运行旧版程序。若存在新固件信息,则擦除新固件数据对应旧固件数据的存储区域,然后逐一将新固件数据写入对应的存储区域,在此过程中,每写完一包数据,便对写入数据进行读出并校验一次,保证每一次写入都能满足预期,直到完成最后一包新固件数据写入。然后将配置区信息的标识位修改为无新固件,以此表示升级完成。
完成MCU新固件完全写入后,跳转运行升级后的新固件程序,基于该新固件程度读取外部flash存储区域存储的配置区信息。判断该配置区信息是否记录存在新固件信息,若不存在新固件信息,则跳转到旧固件地址,然后逐一将旧固件数传回到FPGA固件,基于读回固件进行FPGA固件被动加载。若存在新固件数据,则对应擦除旧固件数据的存储区域,然后逐一将新固件数据写入到对应的存储区域内,在此过程中,每写完一包数据,便对写入数据进行读出并校验一次,保证每一次写入都能满足预期,直到完成最后一包新固件数据写入。然后将配置区信息的标识位修改为无新固件,并将新固件数据读回FPGA固件,基于读回固件进行FPGA固件被动加载。
在另一种可能的实施方式中,进行新固件数据写入时,也可以在完成多有新固件写入时一并读出并进行校验,在此不限定新固件数据读出和校验的执行时序,只要能够在完成新固件写入后,对写入固件进行对应的结果校验,便理应落入本发明方案的保护范围。
实施例:
如图5,预设一种远程IO设备固件升级系统,其主控端为PC端上位机软件,还包括边缘控制器和远程IO设备。其中,远程IO设备与边缘控制器通过光纤连接,边缘控制器与PC端通过网线连接。远程IO设备由FPGA、MCU和Flash模块组成。光模块与边缘控制器连接用于传输升级固件的数据,FPGA与MCU直连,负责将光纤数据透传给MCU进行分析处理,最后将升级固件的数据按类型分别存储于MCU的片内flash和片外flash。
基于该系统构成,执行一次升级过程,其执行过程为:
如图6,首先在研发和生产阶段,需要在上位机软件、边缘控制器、远程IO设备中分别移植相同的加密算法并注入配套的密钥。将编译器生成的新固件数据进行拆包、组包工作,每包数据加入包头信息(包含TAG信息、LEN数据长度信息、NUM包序号和CRC校验值),最后使用注入的密钥对所有组包后的数据进行加密生成密文版固件数据。然后,上位机输入正确的密码后开启升级操作,将待升级的密文版固件文件增加CRC校验码后下发给边缘控制器。输入密码的作用是与边缘控制进行身份认证操作,使用的密码应该与预先注入密钥相关联,可以截取密钥的部分数据作为密码使用。接着边缘控制器接收到升级申请后,先对升级数据包进行完整性校验,确保数据正确性,确保接收正确后,向远程IO设备发起鉴权操作,用来进行相互间的合法身份确认。
进一步的,远程IO设备接收到鉴权申请后,对鉴权数据进行验证,如果鉴权通过,证明边缘控制器身份合法,进而生成响应数据回发给边缘控制器。需要注意的是,鉴权加密算法不做特殊限定,可以使用对称加密算法也可以使用非对称加密算法。然后,边缘控制器对接收到的鉴权数据进行验证,如果鉴权正确,则代表远程IO设备身份合法,继续对固件数据进行拆包、组包工作,对每包数据加入CRC校验值,然后将数据逐包下发给远程IO设备。远程IO设备接收到一包数据后,先进行完整性校验,通过后,使用生产阶段注入的密钥对数据解密还原出明文,然后对其格式进行校验,判断TAG、LEN、NUM以及CRC是否正确。若正确写入到对应flash地址,若错误,根据具体错误类型反馈给边缘控制器进行出错处理。
进一步的,重复执行数据校验过程,直至远程IO设备接收到完整的密文版固件数据,并成功写入到了对应的flash区域后,远程IO根据收到的固件内容生成配置信息后,写入到单独的一个flash页内。生成的配置信息包含:固件生成日期、版本号、固件长度、包数、每包数据长度、每包数据校验码。远程IO设备进行固件数据的接收处理时,依靠内部的IAP程序进行引导升级。IAP读取片内flash配置页内的数据,根据MCU新固件标志位判断是否加载新固件。若有新固件则拷贝新固件至旧固件存储区域,期间先完整擦除旧存储区域,然后将新固件拷贝过去,重新读出数据判断拷贝成功后,再将配置区内的固件标志位更改为无新固件,最后擦除新固件存储区的内容;若无新固件则直接跳转至旧固件存储区域,读出中断向量表地址并跳转运行旧程序。MCU应用程序成功启动后,IAP读取外部flash中的配置页信息并加载FPGA固件。处理流程与MCU应用程序加载步骤一致,只有最后一步由跳转至新固件更改为将固件数据读出,通过SPI接口引导FPGA被动加载固件。
本发明实施方式还提供一种计算机可读储存介质,该计算机可读存储介质上储存有指令,其在计算机上运行时使得计算机执行上述的远程IO设备固件升级方法。
本领域技术人员可以理解实现上述实施方式的方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上结合附图详细描述了本发明的可选实施方式,但是,本发明实施方式并不限于上述实施方式中的具体细节,在本发明实施方式的技术构思范围内,可以对本发明实施方式的技术方案进行多种简单变型,这些简单变型均属于本发明实施方式的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施方式对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施方式的思想,其同样应当视为本发明实施方式所公开的内容。

Claims (15)

1.一种远程IO设备固件升级方法,由边缘控制器执行,其特征在于,所述方法包括:
响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载;
与待升级的远程IO设备进行身份认证,并在认证通过后对所述升级固件进行拆包/组包操作,获得多个升级包数据;
将所述多个升级包数据逐一发送到对应的远程IO设备;
响应于接收自远程IO设备的升级完成信号,将所述升级完成信号回传到所述主控端。
2.根据权利要求1所述的方法,其特征在于,所述对所述升级固件进行拆包/组包操作,获得多个升级包数据,包括:
对所述升级固件进行拆包处理,对获得的拆解数据进行头尾信息添加;
对完成头尾信息添加的拆解数据进行加密处理,并对每一个存在头尾信息的拆解数据进行组包操作,获得多个加密升级包数据,作为对应的升级包数据。
3.根据权利要求1所述的方法,其特征在于,所述与待升级的远程IO设备进行身份认证,包括:
基于预设鉴权加密算法发起与远程IO设备的身份认证请求,并回收对应远程IO设备的反馈信息;
基于所述反馈信息判断对应远程IO设备的身份是否合法;其中,
所述预设鉴权加密算法为对称加密算法或非对称加密算法。
4.根据权利要求3所述的方法,其特征在于,所述与待升级的远程IO设备进行身份认证,还包括:
切断与不合法的远程IO设备之间的通讯连接,并回传对应的报警信息到所述主控端。
5.一种远程IO设备固件升级方法,由远程IO设执行,其特征在于,所述方法包括:
响应于边缘控制器发送的身份认证触发信号,与对应的边缘控制器进行身份认证;
若身份认证通过,从所述边缘控制器逐一下载升级包数据;
对所述升级包数据进行解密操作,并将解密后的数据写入对应的存储区域;
驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,直到完成所有解密后的数据升级,回传升级完成信号到对应的边缘控制器。
6.根据权利要求5所述的方法,其特征在于,在对所述升级包数据进行解密操作操作前,所述方法还包括:
进行升级包数据校验,包括:
每下载完成一个升级数据包,便对该升级数据包进行对应的格式校验和CRC校验,并在校验成功后再执行下一个升级数据包下载,直到最后一个升级数据包校验成功,完成升级包数据下载。
7.根据权利要求5所述的方法,其特征在于,在对所述升级包数据进行解密操作操作前,所述方法还包括:
进行升级包数据校验,包括:
逐一下载升级包数据,响应于最后一包升级包数据下载完成触发信号,对已下载的所有升级包数据进行对应的格式校验和CRC校验,并在校验成功后完成升级包数据下载。
8.根据权利要求5所述的方法,其特征在于,所述将解密后的数据写入对应的存储区域,包括:
逐一判断解密后的新固件数据是否为MCU固件数据;
若是,则将对应解密后的新固件数据写入所述MCU固件的内部存储区域;
反之,则将对应解密后的新固件数据写入所述MCU固件的外部存储区域;
直到完成最后一包解密后的新固件数据的判断和存储,完成解密后的数据写入。
9.根据权利要求5所述的方法,其特征在于,在执行对应的升级操作过程中,每完成一包解密数据升级,便将对应升级后的新固件数据进行读取并校验,并在校验成功后执行下一包解密数据升级;
在完成最后一包解密数据升级并校验成功后,判定升级成功。
10.根据权利要求5所述的方法,其特征在于,在执行对应的升级操作过程中,完成所有解密数据升级后,对整个程序进行一次预读取并校验,并在校验成功后判定升级成功。
11.根据权利要求8所述的方法,其特征在于,完成解密后的数据写入后,所述方法还包括:
生成对应的新固件配置区信息,并将所述新固件配置区信息存储到对应新固件数据的存储区域内;
其中,所述新固件数据与对应的新固件配置区信息存储在同一存储区域的不同存储扇区中。
12.根据权利要求8所述的方法,其特征在于,所述驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,包括:
读取所述MCU固件的内部存储区域存储的解密后的数据,根据其配置区信息的标志位判断是否加载新固件;
若存在需要加载的新固件,则擦除对应旧存储区域的数据,并将对应的新固件信息拷贝到对应存储区域;在完成数据拷贝后进行校验,在校验成功后更新对应配置去信息标志位状态为不加载新固件,并对应擦除新固件存储区域存储的新固件数据;
若不存在需要加载的新固件,则跳转至旧固件区域,读出中断向量表地址并跳转运行旧程序。
13.根据权利要求8所述的方法,其特征在于,所述驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,还包括:
将所述MCU固件的外部存储区域存储的解密后的数据逐一发送给FPGA固件;
FPGA固件根据对应配置区信息标志位擦除对应旧存储区域的数据,并将对应的新固件信息拷贝到对应存储区域;
在完成数据拷贝后进行校验,在校验成功后更新对应配置区信息标志位状态为不加载新固件,并对应擦除新固件存储区域存储的新固件数据;
指针调准到新程序入口,读取新固件数据以完成FPGA固件升级。
14.一种远程IO设备固件升级系统,其特征在于,所述系统包括:
主控端,用于发起升级触发信号,并生成对应的升级固件;
边缘控制器,与所述主控端通信连接,用于:
响应于主控端发起的升级触发信号,从所述主控端进行对应的升级固件下载;
对所述升级固件进行拆包/组包操作,获得多个升级包数据;
与待升级的远程IO设备进行身份认证,并在认证通过后将所述多个升级包数据逐一发送到对应的远程IO设备;
响应于接收自远程IO设备的升级完成信号,将所述升级完成信号回传到所述主控端;
远程IO设备,与所述边缘控制器通信连接,用于:
响应于边缘控制器发送的身份认证触发信号,与对应的边缘控制器进行身份认证;
若身份认证通过,从所述边缘控制器逐一下载升级包数据;
对所述升级包数据进行解密操作,并将解密后的数据写入对应的存储区域;
驱动预设IAP程序进行解密后的数据引导,执行对应的升级操作,直到完成所有解密后的数据升级,回传升级完成信号到对应的边缘控制器。
15.一种计算机可读储存介质,该计算机可读存储介质上储存有指令,其在计算机上运行时使得计算机执行权利要求1-13中任一项权利要求所述的远程IO设备固件升级方法。
CN202210764617.5A 2022-06-29 2022-06-29 远程io设备固件升级方法及系统 Pending CN115357274A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210764617.5A CN115357274A (zh) 2022-06-29 2022-06-29 远程io设备固件升级方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210764617.5A CN115357274A (zh) 2022-06-29 2022-06-29 远程io设备固件升级方法及系统

Publications (1)

Publication Number Publication Date
CN115357274A true CN115357274A (zh) 2022-11-18

Family

ID=84030509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210764617.5A Pending CN115357274A (zh) 2022-06-29 2022-06-29 远程io设备固件升级方法及系统

Country Status (1)

Country Link
CN (1) CN115357274A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573181A (zh) * 2024-01-17 2024-02-20 北京智芯微电子科技有限公司 配电终端升级方法、装置、存储介质及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573181A (zh) * 2024-01-17 2024-02-20 北京智芯微电子科技有限公司 配电终端升级方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
EP3889766B1 (en) Secure firmware upgrade method, device, on-board system, and vehicle
CN111984962B (zh) 固件安全验证方法及装置
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
CN105512538B (zh) 智能移动操作系统的调试方法和系统
CN112035152A (zh) 一种SoC芯片固件升级的安全处理系统及方法
US8931091B2 (en) Method for operating a tachograph and tachograph
WO2013182155A1 (zh) 一种固件版本升级的方法及系统
CN111162911B (zh) 一种plc固件升级系统及方法
CN105159707A (zh) 一种安全的金融终端的固件烧写方法及金融终端
CN113805908A (zh) 固件更新系统和方法
CN110046514B (zh) 调试数据保护方法、装置、服务器及存储介质
CN111614698A (zh) 擦除终端数据的方法及装置
CN105279441A (zh) 用于对数据进行加密和解密的方法和架构
CN108809982B (zh) 一种基于可信执行环境的免密认证方法及系统
CN115357274A (zh) 远程io设备固件升级方法及系统
CN113055340B (zh) 鉴权方法及设备
CN112585608A (zh) 嵌入式设备、合法性识别方法、控制器及加密芯片
CN102831357B (zh) 二次开发嵌入式应用程序的加密和认证保护的方法及系统
CN112231649A (zh) 一种固件加密处理方法、装置、设备及介质
TWI533214B (zh) 模組版本升級方法及終端裝置
CN108763934B (zh) 数据处理方法及装置、存储介质、服务器
CN110716732A (zh) 一种升级汽车仪表ui和固件程序的装置及方法
CN115688120A (zh) 安全芯片固件导入方法、安全芯片及计算机可读存储介质
CN115964067A (zh) 基于红外传输实现产品升级的方法、装置及相关组件
CN113064621B (zh) 一种智能设备安卓系统对密码键盘系统固件升级的方法

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