CN112379901A - 单片机固件升级方法、装置、计算机设备及存储介质 - Google Patents

单片机固件升级方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112379901A
CN112379901A CN202011218688.2A CN202011218688A CN112379901A CN 112379901 A CN112379901 A CN 112379901A CN 202011218688 A CN202011218688 A CN 202011218688A CN 112379901 A CN112379901 A CN 112379901A
Authority
CN
China
Prior art keywords
data
upgrading
single chip
chip microcomputer
upgrade
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
CN202011218688.2A
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.)
Shenzhen Kexin Communication Technology Co Ltd
Original Assignee
Shenzhen Kexin Communication 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 Shenzhen Kexin Communication Technology Co Ltd filed Critical Shenzhen Kexin Communication Technology Co Ltd
Priority to CN202011218688.2A priority Critical patent/CN112379901A/zh
Publication of CN112379901A publication Critical patent/CN112379901A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种单片机固件升级方法、装置、计算机设备及存储介质,方法部分通过获取单片机进行升级所需的加密升级文件,并获取预设升级协议,预设升级协议为根据单片机的类型预先编写的自定义传输协议,然后根据预设升级协议对加密升级文件进行处理,以获得目标升级文件,最后传输目标升级文件以对单片机进行升级;本发明中,在对单片机进行固件升级的过程中,使用了根据单片机的类型预先编写的自定义传输协议进行数据处理,减少了使用公有的升级传输协议造成的数据外泄的问题,减少了升级数据外泄遭致篡改的可能,保证了单片机固件升级数据的安全性,从而提高了单片机固件升级的安全性。

Description

单片机固件升级方法、装置、计算机设备及存储介质
技术领域
本发明涉及单片机技术领域,尤其涉及一种单片机固件升级方法、装置、计算机设备及存储介质。
背景技术
单片机是采用超大规模集成电路技术把具有数据处理能力的计算机系统集成到一个芯片上,形成芯片级的计算机。单片机在国内外有着广泛的应用基础,大量应用在各行业的电子设备中。在现代的电子设备中经常需要更新单片机中的用户程序,以消除在应用过程中发现的程序缺陷或增加新的功能,因此,单片机用户程序升级这一特性已成为众多电子设备的一项基本功能。
对单片机中的用户程序进行升级,为保证单片机的安全性,一般是采用在线升级的方式,即将单片机用户程序的升级数据通过升级传输协议传输至单片机固件上,然后将升级数据烧录至单片机中即可完成单片机的升级。但在升级数据传输的过程中,普遍采用市场上公开的升级传输协议进行数据传输,而使用公有的升级传输协议升级单片机,容易出现升级数据外泄的问题,升级数据的内容容易遭到非法篡改,从而导致单片机错误升级,影响单片机使用,升级安全性低。
发明内容
本发明提供一种单片机固件升级方法、装置、计算机设备及存储介质,以解决现有技术中,使用公有升级传输协议导致升级安全性较低的问题。
一种单片机固件升级方法,包括:
获取所述单片机进行升级所需的加密升级文件;
获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;
传输所述目标升级文件至所述单片机以对所述单片机进行升级。
进一步地,所述根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件,包括:
对所述加密升级文件进行解析,以获得解析文件;
按照所述单片机中Flash页的大小将所述解析文件拆分为多个数据包;
根据预设升级协议对所述多个数据包进行包装,获得所述目标升级文件。
进一步地,所述根据预设升级协议对所述多个数据包进行包装,获得所述目标升级文件,包括:
确定所述预设升级协议中的数据包装格式;
根据所述数据包装格式确定需要增加的预设数据段,所述预设数据段包括数据首段、功能段、数据页序号、数据校验段和数据尾段;
将所述数据首段、所述功能段、所述数据页序号、所述数据校验段和所述数据尾段转化为预设标准编码,以获得格式化数据;
将所述格式化数据和所述多个数据包组合成所述目标升级文件。
进一步地,所述对所述加密升级文件进行解析,以获得解析文件,包括:
对所述加密升级文件进行解密,获得所述单片机的升级文件;
将所述升级文件中的数据转化为预设进制格式的数据,以获得所述解析文件。
进一步地,所述传输所述目标升级文件至所述单片机以对所述单片机进行升级,包括:
根据所述目标升级文件向所述单片机发送握手消息;
接收所述单片机根据所述握手消息返回的应答信息;
根据所述应答信息确定是否握手成功;
若根据所述应答信息确定握手成功,则传输所述目标升级文件的升级数据至所述单片机,以将所述升级数据写入所述单片机的Flash页。
进一步地,所述将所述升级数据写入所述单片机的Flash页之后,所述方法还包括:
获取所述单片机应用编程程序段中的程序段指令;
根据所述程序段指令运行所述单片机的应用程序段,以确定所述应用程序段是否能正常运行;
若所述应用程序段能正常运行,则在所述应用编程程序段中存储预设标志。
进一步地,所述传输所述目标升级文件至所述单片机以对所述单片机进行升级之后,所述方法还包括:
控制所述单片机复位,以运行所述单片机的编程程序段;
确定所述编程程序段中是否包含预设标志;
若所述编程程序段中不包含所述预设标志,则重新根据所述目标升级文件对所述单片机进行升级。
一种单片机固件升级装置,包括:
第一获取模块,用于获取所述单片机进行升级所需的加密升级文件;
第二获取模块,用于获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
处理模块,用于根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;
升级模块,用于传输所述目标升级文件至所述单片机以对所述单片机进行升级。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述单片机固件升级方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述单片机固件升级方法的步骤。
上述单片机固件升级方法、装置、计算机设备及存储介质所提供的一个方案中,通过获取单片机进行升级所需的加密升级文件,并获取预设升级协议,预设升级协议为根据单片机的类型预先编写的自定义传输协议,然后根据预设升级协议对加密升级文件进行处理,以获得目标升级文件,最后传输目标升级文件至单片机以对单片机进行升级;本发明中,在对单片机进行固件升级的过程中,使用了根据单片机的类型预先编写的自定义传输协议进行数据处理,减少了使用公有的升级传输协议造成的数据外泄的问题,减少了升级数据外泄遭致篡改的可能,保证了单片机固件升级数据的安全性,从而提高了单片机固件升级的安全性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中单片机固件升级方法的一应用环境示意图;
图2是本发明一实施例中单片机固件升级方法的一流程示意图;
图3是图2中步骤S30的一实现流程示意图;
图4是图2中步骤S40的一实现流程示意图;
图5是本发明一实施例中单片机固件升级装置的一结构示意图;
图6是本发明一实施例中计算机设备的一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的单片机固件升级方法,可应用在单片机固件升级系统中,该单片机固件升级系统包括单片机和单片机固件升级装置,其中,单片机(MCU)和单片机固件升级装置之间可以通过网络进行通信。单片机固件升级装置通过获取单片机进行升级所需的加密升级文件,并获取预设升级协议,预设升级协议为根据单片机的类型预先编写的自定义传输协议,然后根据预设升级协议对加密升级文件进行处理,以获得目标升级文件,最后传输目标升级文件至单片机以对单片机进行升级;本发明中,在对单片机进行固件升级的过程中,使用了根据单片机的类型预先编写的自定义传输协议进行数据处理,减少了使用公有的升级传输协议造成的数据外泄的问题,减少了升级数据外泄遭致篡改的可能,保证了单片机固件升级数据的安全性,从而提高了单片机固件升级的安全性。
其中,如图1所示,单片机固件升级装置可以上位机,即本实施例中提供的单片机固件升级方法应用在如图1所示的环境中。上位机包含了加密功能和升级功能,即预先开发的加密工具和MCU固件升级工具,对应生成可执行文件bin.exe和update.exe,将bin.exe和update.exe置入上位机中,上位机运行bin.exe可对文件进行加密,上位机运行update.exe可以加载目标升级文件以对MCU固件升级。其中,加密工具的加密算法要与MCU固件升级工具的解密算法相关联。本实施例中,以单片机固件升级装置为上位机为例进行说明。
在一实施例中,如图2所示,提供一种单片机固件升级方法,以该方法应用在上位机为例进行说明,包括如下步骤:
S10:获取单片机进行升级所需的加密升级文件。
需要理解的是,单片机(MCU)的程序分成应用编程(IAP)程序段和应用(APP)程序段,其中IAP程序段作为MCU运行的启动代码,用来实现启动区到应用区的跳转,APP程序段作为MCU运行的应用代码,用以实现产品的整体功能,本实施例中的单片机固件升级即为MCU中APP程序段的升级。在对 APP程序段进行升级之前,需要生成相应的烧录文件:应用编程文件(IAP.bin) 和源文件(APP.bin),源文件即程序升级文件。然后可以利用SWD方式将IAP.bin文件烧录至MCU固件,使得MCU复位后在IAP程序段运行,此时,可以使MCU固件的串口(如RS485串口)接收中断,以接收上位机下发的程序升级文件,从而实现对MCU固件的升级。
本实施例中,在使用程序升级文件之前,需要使用加密工具对程序升级文件进行加密,以获得加密升级文件,避免用户误操作使用错误的程序升级文件进行MCU固件,保证升级安全性。
例如,在使用源文件APP.bin进行升级之前,运行bin.exe对APP.bin 文件进行加密,加密过程中需要将加密之后的加密升级文件与源文件进行对比,保证加密之后的加密升级文件无数据异常。此外,加密升级文件的后缀可以与源文件相同,也可以自定义文件格式,但需保证加密升级文件能被上位机正确识别,保证升级数据的安全性。
S20:获取预设升级协议,预设升级协议为根据单片机的类型预先编写的自定义传输协议。
其中,预设升级协议为根据单片机的类型预先编写的自定义传输协议。为了防止程序升级数据在通信传输过程中丢失,并让程序升级数据快速的传输至MCU固件,需要拟定一种协议,将程序升级数据按照协议格式进行包装,以便于后续传输。本实施例中,为避免使用公有的升级传输协议所导致的数据泄露的问题,需要预先根据MCU的类型编写不同的自定义传输协议,例如,预先编写一个适合所有嵌入式MCU使用的自定义传输协议,若本次升级的MCU 为嵌入式MCU,则将该适合所有嵌入式MCU使用的自定义传输协议作为本次升级所使用的升级协议,以保证数据传输的安全性。
S30:根据预设升级协议对加密升级文件进行处理,以获得目标升级文件。
在获取预设升级协议之后,根据预设升级协议中设定的文件传输格式等对获取的加密升级文件进行包装处理,获得目标升级文件,目标升级文件的数据格式需要根据预设升级协议的格式进行配置。
S40:传输目标升级文件至单片机以对单片机进行升级。
获得目标升级文件之后,上位机需要复位MCU,进入IAP烧录程序,运行 IAP程序段,设置好主时钟和看门狗,编写与升级相关的函数,包括串口收发函数,以及Flash页的读、写、擦除函数,以便后续传输目标升级文件之时,通过串口收发函数使串口收发中断,发送目标升级文件至MCU固件,通过擦除函数擦除MCU上的APP程序段,通过读写函数读取并写入目标升级文件中的升级数据,从而实现MCU固件升级,升级操作简单,无需专业知识,具有较大的推广和实用价值。
本实施例中,通过获取单片机进行升级所需的加密升级文件,并获取预设升级协议,预设升级协议为根据单片机的类型预先编写的自定义传输协议,然后根据预设升级协议对加密升级文件进行处理,以获得目标升级文件,最后传输目标升级文件至单片机以对单片机进行升级;本发明中,在对单片机进行固件升级的过程中,使用了根据单片机的类型预先编写的自定义传输协议进行数据处理和传输,减少了使用公有的升级传输协议造成的数据外泄的问题,减少了升级数据外泄遭致篡改的可能,保证了单片机固件升级数据的安全性,从而提高了单片机固件升级的安全性。
在一实施例中,在根据预设升级协议传输目标升级文件之前,可在IAP 程序段设置相应升级方式的升级代码,在获得目标升级文件之后,上位机根据IAP程序段中的升级代码设置本次升级的升级方式,升级方式可以是CANbus、 RS485、RS232、USB升级等,可按照升级需求配置不然的升级方式,保证升级的顺利进行,提供了多种升级方式,适用于多种应用场景。
例如,MCU为STM32F103VBT6,使用RS485进行MCU固件升级,连接好USB 转485工具,设置升级波特率为9600,数据位8,停止位1,无校验位,选择对应串口,完成升级设置工作。
在一实施例中,如图3所示,步骤S30中,即根据预设升级协议对加密升级文件进行处理,以获得目标升级文件,具体包括如下步骤:
S31:对加密升级文件进行解析,以获得解析文件。
在获得加密升级文件之后,需要对加密升级文件进行解析处理,将加密升级文件中的数据转化为容易处理和传输的数据文件。
S32:按照单片机中Flash页的大小将解析文件拆分为多个数据包。
在获得解析文件之后,按照单片机中Flash页的大小将解析文件按顺序拆分为多个数据包,即最后一个数据包的大小小于或者等于Flash页的大小,其他数据包的大小等于Flash页的大小,使得每一包数据与Flash页对应,传输一个数据包即可及时写入对应的Flash页,分页传输,兼容性好。
例如,MCU为STM32F103VBT6,MCU内核为CORTEX-M3,Flash页的容量为128kb,按照MCU的Flash页大小对数据进行分包,即将解析文件按照128Kb 顺序进行分页处理,获得多个数据包。对于任何一个文件,当以128Byte进行分包时,最后一包数据(最后一页)的大小一定会小于或者等于128Byte,最后一包数据的大小可以用来作为识别程序最后一段数据的依据,以判断升级程序数据是否全部接受完成。
S33:根据预设升级协议对多个数据包进行包装,获得目标升级文件。
在获得多个数据包之后,根据预设升级协议多个数据包进行包装,以获得目标升级文件,即根据预设升级协议设定的文件格式重新配置数据获得目标升级文件,目标升级文件包括多个数据包,以便后续根据预设升级协议对目标升级文件中的多个数据包进行分页传输,提高了协议的兼容性,以分页传输的方式传输数据,使得升级文件的大小不受限,提高了传输的效率,从而使得程序升级耗时短。
本实施例中,通过对加密升级文件进行解析,以获得解析文件,再按照单片机中Flash页的大小将解析文件拆分为多个数据包,最后根据预设升级协议对多个数据包进行包装,获得目标升级文件,细化了根据预设升级协议对加密升级文件进行处理,以获得目标升级文件的步骤,对升级文件进行分页处理,为后续快速传输目标升级文件提供了基础,提高了传输的效率,从而使得程序升级耗时短。
在一实施例中,步骤S31中,即对加密升级文件进行解析,以获得解析文件,具体包括如下步骤:
具体地,对加密升级文件进行解析,以获得解析文件,包括:
S311:对加密升级文件进行解密,获得单片机的升级文件。
由于加密工具的加密算法要与上位机中的MCU固件升级工具的解密算法相关联,在上位机获取加密升级文件之后,可根据上位机中的解密算法对加密升级文件进行解密,获得升级文件,解密后的升级文件与源文件相同;若解密错误,则表示该解析的文件不是MCU的加密升级文件,向用户发送解密错误提示,并停止升级过程,以免用户误操作将不属于本MCU的升级文件升级到MCU固件中,使得MCU程序异常,保证了MCU的安全性。
S312:将升级文件中的数据转化为预设进制格式的数据,以获得解析文件。
在解密获得升级文件之后,将升级文件中的数据转化为预设进制格式的数据,以获得解析文件,例如,预设进制格式为16进制,可以将升级文件中的数据转化为16进制的数据,对数据进标准化进制处理,提高了后续数据处理和传输效率。
本实施例中,预设进制格式为16进制仅为示例性说明,在其他实施例中,预设进制格式还可以是其他进制格式,在此不再赘述。
本实施例中,通过对加密升级文件进行解密,获得单片机的升级文件,并将升级文件中的数据转化为预设进制格式的数据,以获得解析文件,明确了对加密升级文件进行解析,以获得解析文件的具体过程,不仅对加密升级文件,还将解密后的升级文件转化为标准进制格式的数据,使得后续的数据处理和传输更加简单便捷,为升级数据的快速传输提供了基础。
在一实施例中,步骤S33中,即根据预设升级协议对多个数据包进行包装,获得目标升级文件,具体包括如下步骤:
S331:确定预设升级协议中的数据包装格式。
在预设升级协议中,规定了升级数据的包装格式,需要根据数据包装格式对升级数据进行保证,便于后续升级数据的传输。因此,在获取多个数据包之后,需要确定预设升级协议中的数据包装格式。
S332:根据数据包装格式确定需要增加的预设数据段,预设数据段包括数据首段、功能段、数据页序号、数据校验段和数据尾段。
即在获取多个数据包之后,需要根据数据包装格式增加有多个数据包组成的升级数据的数据首段、功能段、数据页序号、数据校验段、数据尾部等内容,以便在后续的数据传输过程中根据数据首段、功能段、数据页序号、数据校验段、数据尾部等内容对传输的数据进行校验,包装数据的完整性和传输的安全性。
其中,增加数据首段和数据尾段即为传输文件的首部和尾部,目的是为了方便识别升级数据的首位和尾段,避免数据传输错漏,同时还可以防止首段/尾段的数据内容与MCU固件的原程序数据相同而导致MCU在接收数据时出现识别错误;数据页序号是指每一包数据发送的编号,可以是每一数据包的包地址,目的是为了使MCU能按顺序完整地接收所有的升级数据,保证数据无误;功能段即为功能码,用于对升级数据进行升级功能分类;数据校验段是对数据进行正确性校验的公式校验,防止数据在传输过程中丢失,方便MCU 准确接收升级数据;此外,数据包装格式还可以包括识别数据段,识别数据段为设备地址,目的是用于识别数据来源,即识别是上位机发送的数据还是 MCU返回的数据。
S333:将数据首段、功能段、数据页序号、数据校验段和数据尾段转化为预设标准编码,以获得格式化数据。
在确定数据首段、功能段、数据页序号、数据校验段和数据尾段等数据之后,将上述数据转换成预设标准编码(可以为ASCII码),获得格式化数据。
S334:将格式化数据和多个数据包组合成目标升级文件。
将转化为预设标准编码的数据首段、功能段、数据页序号、数据校验段和数据尾段,以及多个数据包组合成目标升级文件,即目标升级文件至少包括以下内容:首部、功能段、数据页序号、多个数据包、数据校验段和数据尾段,其中,数据校验段可以作为数据尾段,以减少增加的数据内容。
例如,MCU为stm32f103vbt6、MCU的flash为128kb,数据首段即消息首部可以默认为5A A5,功能段即功能码为05,上位机识别码为F5,下位机 (MCU固件)识别码为F8,校验码,升级数据为多个数据包,数据页序号即为每一数据包的包地址,参考STM32 FLASH功能,读取升级数据的大小,将升级数据以128Bytes分包,不足整包的按整包分配地址,多个数据包的地址为以00 02开始的连续地址。
本实施例中,MCU为stm32f103vbt6、MCU的flash为128K,数据首段即消息首部可以默认为5A A5,功能段即功能码为05,上位机识别码为F5,下位机(MCU固件)识别码为F8,升级数据以128Bytes分包仅为示例性说明,在其他实施例中,上述数据还可以是其他,在此不再赘述。
此外,由于在对加密升级文件解密后,将获得的升级文件,即MCU固件的升级数据转化为16进制的数据,因此,可将ASCII字符段的首部(如5A A5) 转换成的16进制数据。
本实施例中,通过确定预设升级协议中的数据包装格式,根据数据包装格式确定需要增加的预设数据段,预设数据段包括数据首段、功能段、数据页序号、数据校验段和数据尾段,将数据首段、功能段、数据页序号、数据校验段和数据尾段转化为预设标准编码,以获得格式化数据,将格式化数据和多个数据包组合成目标升级文件,细化了根据预设升级协议对多个数据包进行包装,获得目标升级文件的步骤,明确了目标升级文件的文件内容,为后续根据预设升级协议传输目标升级文件提供了基础,提高了数据传输的安全性。
在一实施例中,图4所示,步骤S40中,即传输目标升级文件至单片机以对单片机进行升级,具体包括如下步骤:
S41:根据目标升级文件向单片机发送握手消息。
在获得目标升级文件之后,上位机根据目标升级文件中的配置数据向MCU 固件发送握手消息,握手消息包括首部、功能码、识别码、包地址和校验码等。
S42:接收单片机根据握手消息返回的应答信息。
MCU固件接收到上位机的握手消息之后,根据接收的握手消息生成应答信息,并将应答信息返回上位机,以使上位机根据应答信息判断是否握手成功。
S43:根据应答信息确定是否握手成功。
若MCU固件返回的应答信息与握手消息的内容对应,即可确定握手成功,若MCU固件返回的应答信息与握手消息的内容不对应,即可确定握手失败。
例如,上位机向MCU固件发送的握手消息可以为表1,表1的内容如下:
表1
首部 功能码 识别码 包地址 校验码
5A A5 05 F5 00 01 MBCRC*
若MCU固件根据上述握手消息返回的应答指令为表2,表2的内容如下:
表2
首部 功能码 识别码 包地址 校验码
5A A5 05 F8 00 01 MBCRC*
其中,5A A5消息的首部,05为功能码,F5为上位机是识别码,F8为MCU 固件的识别码,识别码用于确定消息的发送方,00 01为消息的包地址,MBCRC 为校验码,由表1和表2可知,除消息发送方不同外,握手消息的内容与应答内容对应,则确定握手成功。
本实施例中,表1中的内容和表2中的内容仅为示例性说明,在其他实施例中,表1中的内容和表2中的内容还可以是其他,在此不再赘述。
其中,上位机会以第一预设间隔向MCU固件发送握手消息,若MCU固件在第二预设间隔内未返回应答信息,则回复超时,确定握手失败。
例如,第一预设间隔为1s,第二预设间隔为5s,上位机向MCU固件发送可进行升级的握手消息,等待MCU固件的答复,发送间隔为1s,超时时间5s,若5s后未接收到MCU固件的应答信息,则回复超时,确定握手失败,此时升级失败,终止升级流程。
本实施例中,第一预设间隔为1s、第二预设间隔为5s仅为示例性说明,在其他实施例中,第一预设间隔为和第二预设间隔还可以是其他间隔时长,在此不再赘述。
S44:若根据应答信息确定握手成功,则传输目标升级文件中的升级数据至单片机,以将升级数据写入单片机的Flash页。
在根据应答信息确定是否握手成功之后,若根据应答信息确定握手成功,表示需要升级的MCU固件无误,需要发送的升级数据无误,则根据预设升级协议传输目标升级文件中的升级数据至MCU固件,以将升级数据写入单片机的Flash页,完成对MCU固件的升级。
此外,在根据应答信息确定握手成功之后,传输目标升级文件中的升级数据至MCU固件之前,上位机还会向MCU固件发送确认消息,确认消息可以与握手消息相同,MCU固件接收到确认消息之后回复确认消息,回复消息的内容可以与应答握手消息的应答消息相同;上位机在接收到MCU固件确认消息的回复消息后,传输目标升级文件中的升级数据至MCU固件时,还可以根据升级数据的格式对升级数据进行逐一传输,即根据多个数据包的顺序(如根据包地址)进行逐一传输,MCU固件每接收一包数据包即可将数据包直接写入 Flash页,数据包传输完成,即升级写入完成,耗时短,提高了升级效率。
在传输升级数据的过程中,每传输一包数据包都需向MCU固件发送包含校验码的确认消息,并等待MCU固件的确认答复,收到MCU固件关于数据包正确的确认答复再继续传输下一数据包,直至传输完尾包,再传输尾包传输完毕后,上位机向MCU固件发送包括尾包的包地址的传输结束消息,MCU固件收到传输结束消息之后,根据接收到的尾包的包地址发送回复消息,以确保数据接收无误,保证数据的安全性。其中,确认答复的超时时间可以为5s,超过5s未收到MCU固件的确认答复,表示数据传输出现问题,升级失败,则传输中断,停止MCU固件的升级流程,以保护数据安全。
本实施例中,根据目标升级文件向单片机发送握手消息,接收单片机根据握手消息返回的应答信息,根据应答信息确定是否握手成功,若根据应答信息确定握手成功,则传输目标升级文件的升级数据至单片机,以将升级数据写入单片机的Flash页,细化了传输目标升级文件至单片机以对单片机进行升级,在上位机与MCU固件握手成功后再进行升级数据传输,确包升级的准确性,进一步保证了升级的安全性。
在一实施例中,步骤S44之后,即将升级数据写入单片机的Flash页之后,所述方法具体还包括如下步骤:
S441:获取单片机应用编程程序段中的程序段指令。
需要理解的是,预先在MCU的应用编程程序段(IAP程序段)编写对应的 Flash跳转函数(即程序段指令),以在升级数据写入完成后,使MCU程序根据Flash跳转函数从IAP程序段跳转到新写入的应用程序段(APP程序段)。
即在将升级数据写入单片机的Flash页之后,需要获取IAP程序段的程序段指令,以便根据程序段指令实现APP程序段跳转。
S442:根据程序段指令运行单片机的应用程序段,以确定应用程序段是否能正常运行。
在获取IAP程序段的程序段指令之后,根据程序段指令运行MCU的APP 程序段,以确定升级数据是否正确写入MCU,若升级数据正确写入MCU,则应用程序段能正常运行,若升级数据未正确写入MCU,则应用程序段不能正常运行。
S443:若应用程序段能正常运行,则在应用编程程序段中存储预设标志。
若APP程序段能正常运行,则在IAP程序段中存储预设标志,以便MCU 可读取IAP程序段中的预设标志,以确定MCU是否包含APP程序段,即确定 MCU是否能正常运行。
本实施例中,在将升级数据写入单片机的Flash页之后,通过获取单片机应用编程程序段中的程序段指令,以根据程序段指令运行单片机的应用程序段,以确定应用程序段是否能正常运行,若应用程序段能正常运行,则在应用编程程序段中存储预设标志,以便下次复位MCU时,可直接读取编程程序段中存储发预设标志,以确定MCU是否正常。
在一实施例中,步骤S40之后,即传输目标升级文件至单片机以对单片机进行升级之后,所述方法具体还包括如下步骤:
S51:控制单片机复位,以运行单片机的编程程序段。
在对MCU固件进行升级之后,控制MCU复位,并运行MCU的IAP程序段。
S52:确定编程程序段中是否包含预设标志。
在运行MCU的IAP程序段时,确定IAP程序段是否包含预设标志。
S53:若编程程序段中不包含预设标志,则重新根据目标升级文件对单片机进行升级。
若IAP程序段包含预设标志,表示MCU中存在APP程序段,MCU可以正常运行,若IAP程序段不包含预设标志,表示MCU中不存在APP程序段,MCU需要重新升级以下载APP程序段,使得MCU能够正常运行,避免不存在APP程序段而错误运行MCU的可能,保证了MCU的安全性。
即在程序升级成功后,IAP程序段会保留一个APP程序段存在的预设标志,每一次复位MCU后,IAP程序段首先读取预设标志以判断是否有APP程序,若存在预设标志,则会直接跳转至APP程序段,否则继续运行在IAP程序段,等待新的APP程序段升级至MCU固件。
本实施例中,在传输目标升级文件至单片机以对单片机进行升级之后,通过控制单片机复位,以运行单片机的编程程序段,然后确定编程程序段中是否包含预设标志,若编程程序段中不包含预设标志,则重新根据目标升级文件对单片机进行升级,通过读取IAP程序段中的预设标志即可判断升级是否完成,无需复位并运行MCU才能判断MCU正常与否的步骤,减少了MCU错误运行的可能。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种单片机固件升级装置,该单片机固件升级装置与上述实施例中单片机固件升级方法一一对应。如图5所示,该单片机固件升级装置包括第一获取模块501、第二获取模块502、处理模块503和升级模块504。各功能模块详细说明如下:
第一获取模块501,用于获取所述单片机进行升级所需的加密升级文件;
第二获取模块502,用于获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
处理模块503,用于根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;获取所述单片机的加密升级文件;
升级模块504,用于传输所述目标升级文件至所述单片机以对所述单片机进行升级。
进一步地,所述处理模块503具体用于:
对所述加密升级文件进行解析,以获得解析文件;
按照所述单片机中Flash页的大小将所述解析文件拆分为多个数据包;
根据预设升级协议对所述多个数据包进行包装,获得所述目标升级文件。
进一步地,所述处理模块503具体还用于:
确定所述预设升级协议中的数据包装格式;
根据所述数据包装格式确定需要增加的预设数据段,所述预设数据段包括数据首段、功能段、数据页序号、数据校验段和数据尾段;
将所述数据首段、所述功能段、所述数据页序号、所述数据校验段和所述数据尾段转化为预设标准编码,以获得格式化数据;
将所述格式化数据和所述多个数据包组合成所述目标升级文件。
进一步地,所述处理模块503具体还用于:
对所述加密升级文件进行解密,获得所述单片机的升级文件;
将所述升级文件中的数据转化为预设进制格式的数据,以获得所述解析文件。
进一步地,所述升级模块504具体用于:
根据所述目标升级文件向所述单片机发送握手消息;
接收所述单片机根据所述握手消息返回的应答信息;
根据所述应答信息确定是否握手成功;
若根据所述应答信息确定握手成功,则根据传输所述目标升级文件中的升级数据至所述单片机,以将所述升级数据写入所述单片机的Flash页。
进一步地,所述升级模块504具体还用于:
获取所述单片机应用编程程序段中的程序段指令;
根据所述程序段指令运行所述单片机的应用程序段,以确定所述应用程序段是否能正常运行;
若所述应用程序段能正常运行,则在所述应用编程程序段中存储预设标志。
进一步地,所述升级模块504具体还用于:
控制所述单片机复位,以运行所述单片机的编程程序段;
确定所述编程程序段中是否包含预设标志;
若所述编程程序段中不包含所述预设标志,则重新根据所述目标升级文件对所述单片机进行升级。
关于单片机固件升级装置的具体限定可以参见上文中对于单片机固件升级方法的限定,在此不再赘述。上述单片机固件升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是上位机,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种单片机固件升级方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取所述单片机进行升级所需的加密升级文件;
获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;获取所述单片机的加密升级文件;
传输所述目标升级文件至所述单片机以对所述单片机进行升级。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取所述单片机进行升级所需的加密升级文件;
获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;获取所述单片机的加密升级文件;
传输所述目标升级文件至所述单片机以对所述单片机进行升级。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM (RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种单片机固件升级方法,其特征在于,包括:
获取所述单片机进行升级所需的加密升级文件;
获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;
传输所述目标升级文件至所述单片机以对所述单片机进行升级。
2.如权利要求1所述的单片机固件升级方法,其特征在于,所述根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件,包括:
对所述加密升级文件进行解析,以获得解析文件;
按照所述单片机中Flash页的大小将所述解析文件拆分为多个数据包;
根据预设升级协议对所述多个数据包进行包装,获得所述目标升级文件。
3.如权利要求2所述的单片机固件升级方法,其特征在于,所述根据预设升级协议对所述多个数据包进行包装,获得所述目标升级文件,包括:
确定所述预设升级协议中的数据包装格式;
根据所述数据包装格式确定需要增加的预设数据段,所述预设数据段包括数据首段、功能段、数据页序号、数据校验段和数据尾段;
将所述数据首段、所述功能段、所述数据页序号、所述数据校验段和所述数据尾段转化为预设标准编码,以获得格式化数据;
将所述格式化数据和所述多个数据包组合成所述目标升级文件。
4.如权利要求2所述的单片机固件升级方法,其特征在于,所述对所述加密升级文件进行解析,以获得解析文件,包括:
对所述加密升级文件进行解密,获得所述单片机的升级文件;
将所述升级文件中的数据转化为预设进制格式的数据,以获得所述解析文件。
5.如权利要求1所述的单片机固件升级方法,其特征在于,所述传输所述目标升级文件至所述单片机以对所述单片机进行升级,包括:
根据所述目标升级文件向所述单片机发送握手消息;
接收所述单片机根据所述握手消息返回的应答信息;
根据所述应答信息确定是否握手成功;
若根据所述应答信息确定握手成功,则根据传输所述目标升级文件中的升级数据至所述单片机,以将所述升级数据写入所述单片机的Flash页。
6.如权利要求5所述的单片机固件升级方法,其特征在于,所述将所述升级数据写入所述单片机的Flash页之后,所述方法还包括:
获取所述单片机应用编程程序段中的程序段指令;
根据所述程序段指令运行所述单片机的应用程序段,以确定所述应用程序段是否能正常运行;
若所述应用程序段能正常运行,则在所述应用编程程序段中存储预设标志。
7.如权利要求1-6任一项所述的单片机固件升级方法,其特征在于,所述传输所述目标升级文件至所述单片机以对所述单片机进行升级之后,所述方法还包括:
控制所述单片机复位,以运行所述单片机的编程程序段;
确定所述编程程序段中是否包含预设标志;
若所述编程程序段中不包含所述预设标志,则重新根据所述目标升级文件对所述单片机进行升级。
8.一种单片机固件升级装置,其特征在于,包括:
第一获取模块,用于获取所述单片机进行升级所需的加密升级文件;
第二获取模块,用于获取预设升级协议,所述预设升级协议为根据所述单片机的类型预先编写的自定义传输协议;
处理模块,用于根据所述预设升级协议对所述加密升级文件进行处理,以获得目标升级文件;获取所述单片机的加密升级文件;
升级模块,用于传输所述目标升级文件至所述单片机以对所述单片机进行升级。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述单片机固件升级方法的步骤。
10.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述单片机固件升级方法的步骤。
CN202011218688.2A 2020-11-04 2020-11-04 单片机固件升级方法、装置、计算机设备及存储介质 Pending CN112379901A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011218688.2A CN112379901A (zh) 2020-11-04 2020-11-04 单片机固件升级方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011218688.2A CN112379901A (zh) 2020-11-04 2020-11-04 单片机固件升级方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN112379901A true CN112379901A (zh) 2021-02-19

Family

ID=74579357

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011218688.2A Pending CN112379901A (zh) 2020-11-04 2020-11-04 单片机固件升级方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112379901A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064621A (zh) * 2021-04-14 2021-07-02 艾体威尔电子技术(北京)有限公司 一种智能设备安卓系统对密码键盘系统固件升级的方法
CN113515747A (zh) * 2021-05-17 2021-10-19 深圳市友华通信技术有限公司 设备升级方法、装置、设备及存储介质
CN114024950A (zh) * 2021-09-13 2022-02-08 福建新大陆通信科技股份有限公司 一种电子设备大数据传输方法及系统
CN114691178A (zh) * 2022-05-31 2022-07-01 深圳市杰美康机电有限公司 一种基于EtherCAT通讯驱动器的固件升级方法及装置
CN115098176A (zh) * 2022-07-25 2022-09-23 珠海普林芯驰科技有限公司 一种芯片启动引导和程序升级的方法及芯片架构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108174A (zh) * 2016-11-24 2018-06-01 青岛海信宽带多媒体技术有限公司 光模块及其固件升级的方法
US10042634B1 (en) * 2015-12-28 2018-08-07 EMC IP Holding Company LLC Storage management system and method
CN111309364A (zh) * 2020-05-11 2020-06-19 深圳市科信通信技术股份有限公司 芯片程序的升级方法、装置及存储介质
CN111641527A (zh) * 2020-05-28 2020-09-08 四川爱创科技有限公司 一种嵌入式芯片软件远程升级备份方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042634B1 (en) * 2015-12-28 2018-08-07 EMC IP Holding Company LLC Storage management system and method
CN108108174A (zh) * 2016-11-24 2018-06-01 青岛海信宽带多媒体技术有限公司 光模块及其固件升级的方法
CN111309364A (zh) * 2020-05-11 2020-06-19 深圳市科信通信技术股份有限公司 芯片程序的升级方法、装置及存储介质
CN111641527A (zh) * 2020-05-28 2020-09-08 四川爱创科技有限公司 一种嵌入式芯片软件远程升级备份方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064621A (zh) * 2021-04-14 2021-07-02 艾体威尔电子技术(北京)有限公司 一种智能设备安卓系统对密码键盘系统固件升级的方法
CN113515747A (zh) * 2021-05-17 2021-10-19 深圳市友华通信技术有限公司 设备升级方法、装置、设备及存储介质
CN113515747B (zh) * 2021-05-17 2024-02-09 深圳市友华通信技术有限公司 设备升级方法、装置、设备及存储介质
CN114024950A (zh) * 2021-09-13 2022-02-08 福建新大陆通信科技股份有限公司 一种电子设备大数据传输方法及系统
CN114024950B (zh) * 2021-09-13 2023-06-30 福建新大陆通信科技股份有限公司 一种电子设备大数据传输方法及系统
CN114691178A (zh) * 2022-05-31 2022-07-01 深圳市杰美康机电有限公司 一种基于EtherCAT通讯驱动器的固件升级方法及装置
CN114691178B (zh) * 2022-05-31 2022-09-06 深圳市杰美康机电有限公司 一种基于EtherCAT通讯驱动器的固件升级方法及装置
CN115098176A (zh) * 2022-07-25 2022-09-23 珠海普林芯驰科技有限公司 一种芯片启动引导和程序升级的方法及芯片架构
CN115098176B (zh) * 2022-07-25 2023-02-21 珠海普林芯驰科技有限公司 一种芯片启动引导和程序升级的方法及芯片架构

Similar Documents

Publication Publication Date Title
CN112379901A (zh) 单片机固件升级方法、装置、计算机设备及存储介质
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
CN109976767B (zh) 软件烧录方法和装置
CN102760090B (zh) 除错方法及计算机系统
US10496912B2 (en) Electronic unit with a secure element and method carried out in such an electronic unit facilitating communication with the secure element
CN108509215B (zh) 一种系统软件的更换方法、装置、终端设备及存储介质
CN111190629B (zh) 一种嵌入式终端升级软件包及其解析方法
CN109933465B (zh) 异常处理方法、装置、服务器和存储介质
CN114281394A (zh) 一种快速在线升级程序的方法、系统、设备及介质
CN108647131B (zh) 运行日志的输出系统
CN116679986A (zh) 寄存器的访问方法、装置、服务器、系统及存储介质
CN108062714B (zh) 年金数据发送方法、装置、计算机设备及存储介质
CN111538515A (zh) 一种电能表程序的升级方法、装置和设备
CN104036193A (zh) 一种应用程序的本地跨域漏洞检测方法及装置
CN117130841A (zh) 调试信息的输出方法、装置、设备及介质
CN115061704A (zh) 一种固件升级方法和电子设备
CN111371799B (zh) Mctp控制器收发数据的控制方法、装置及设备
CN111538371A (zh) 一种实时时钟装置及其工作方法、usb设备
CN114579166A (zh) 组件模块升级方法、组件模块和财务机器人
WO2005048075A2 (en) Embedded software update methods and systems for digital devices
CN110989408A (zh) 一种设备控制方法、装置、设备及可读存储介质
CN111161874A (zh) 一种智能心电分析装置
CN111310875A (zh) 试剂检测系统、方法、计算机设备以及可读存储介质
CN113568629A (zh) 基于can的软件升级方法、装置、计算机设备和存储介质
US7533299B2 (en) Temporal correlation of messages transmitted by a microprocessor monitoring circuit

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