[go: up one dir, main page]

CN119473338A - 在线升级方法及电子设备 - Google Patents

在线升级方法及电子设备 Download PDF

Info

Publication number
CN119473338A
CN119473338A CN202411385774.0A CN202411385774A CN119473338A CN 119473338 A CN119473338 A CN 119473338A CN 202411385774 A CN202411385774 A CN 202411385774A CN 119473338 A CN119473338 A CN 119473338A
Authority
CN
China
Prior art keywords
main
area
state
upgrade
data
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
CN202411385774.0A
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.)
Kehua Data Co Ltd
Original Assignee
Kehua Data 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 Kehua Data Co Ltd filed Critical Kehua Data Co Ltd
Priority to CN202411385774.0A priority Critical patent/CN119473338A/zh
Publication of CN119473338A publication Critical patent/CN119473338A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种在线升级方法及电子设备,属于在线升级领域。待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件;该方法包括:接收本次升级文件,并将本次升级文件写入主区;对待升级设备进行在线升级预处理;将主区的本次升级文件写入片内存储器,以进行在线升级;若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级。本申请可以实现即使待升级设备在线升级时突发掉电,也能在重新上电后,基于备区存储的文件或主区存储的文件,成功完成本次升级,且程序能够正常运行。

Description

在线升级方法及电子设备
技术领域
本发明涉及在线升级技术领域,尤其涉及一种在线升级方法及电子设备。
背景技术
在线升级是现在许多产品必带的一个功能,根据编程接口的不同,有JTAG,UART,CAN等多种方式。尽管编程接口有所不同,但是其在线升级的原理是类似的,都是通过外部触发条件,使芯片脱离常规应用程序的执行流程,接收升级包文件并将其写入到芯片内部的FLASH中。
然而,在设备进行在线升级的过程中,可能存在设备突发掉电的情况,导致设备在线升级失败,且在设备重新上电后,程序无法正常运行。
发明内容
本发明实施例提供了一种在线升级方法及电子设备,以解决现有技术由于设备突发掉电情况,导致设备在线升级失败,程序无法正常运行的问题。
第一方面,本发明实施例提供了一种在线升级方法,待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件;上述在线升级方法包括:
接收本次升级文件,并将本次升级文件写入主区;
对待升级设备进行在线升级预处理;
将主区的本次升级文件写入片内存储器,以进行在线升级;
若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级。
在一种可能的实现方式中,在将本次升级文件写入主区之后,还包括:
更新主区的标志位;
基于备区存储的文件或主区存储的文件,完成本次升级,包括:
读取备区的当前标志位;
若备区的当前标志位不正确,则读取主区的当前标志位;
若主区的当前标志位正确,则将主区存储的文件写入片内存储器,完成本次升级。
在一种可能的实现方式中,在读取备区的当前标志位之后,基于备区存储的文件或主区存储的文件,完成本次升级,还包括:
若备区的当前标志位正确,则将主区存储的文件擦除,并将备区存储的文件写入片内存储器,完成本次升级。
在一种可能的实现方式中,在接收本次升级文件之前,在线升级方法还包括:
接收固件关键字;固件关键字包括与本次升级文件关联的需升级设备的信息;固件关键字存储于本次升级文件的文件头中;
判断待升级设备的信息与需升级设备的信息是否匹配;
接收本次升级文件,包括:
若待升级设备的信息与需升级设备的信息匹配,则接收本次升级文件。
在一种可能的实现方式中,接收本次升级文件,并将本次升级文件写入主区,包括:
分帧接收本次升级文件;
对接收到的每帧升级数据进行CRC校验和帧索引号校验,并将CRC校验和帧索引号校验通过后的升级数据写入主区;
对接收到的整个本次升级文件进行MD5校验;
若MD5校验通过,则成功完成将本次升级文件写入主区的操作。
在一种可能的实现方式中,在将主区的本次升级文件写入片内存储器,以进行在线升级的过程中,在线升级方法还包括:
若在将主区的本次升级文件写入片内存储器的过程中,检测到数据写入错误,则跳转至对待升级设备进行在线升级预处理的步骤继续执行。
在一种可能的实现方式中,在将主区的本次升级文件成功写入片内存储器之后,在线升级方法还包括:
基于主备区搬运总状态机和主备区读写状态机,将主区存储的本次升级文件搬运至备区。
在一种可能的实现方式中,主备区搬运总状态机包括主区标志位读取状态、备区擦除状态、主区数据读取状态、备区数据写入状态、备区标志位写入状态和第一空闲状态;
在主备区搬运总状态机处于主区标志位读取状态时,若读取标志位为复位状态且读取的主区的标志位正确,则跳转至备区擦除状态,并置位擦除标志位,执行备区擦除操作;
在主备区搬运总状态机处于备区擦除状态时,若擦除标志位为复位状态且正确完成备区擦除操作,则跳转至主区数据读取状态,并置位读取标志位,执行主区数据读取操作;
在主备区搬运总状态机处于主区数据读取状态时,若读取标志位为复位状态,且正确完成主区数据读取操作,则跳转至备区数据写入状态,并置位写入标志位,将从主区读取的数据写入备区,记录主区操作地址,更新备区操作地址,以及复制写入备区的数据;
在主备区搬运总状态机处于备区数据写入状态时,若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件还未全部写入备区,则跳转至主区数据读取状态,并置位读取标志位,继续执行主区数据读取操作,以及记录备区操作地址和更新主区操作地址;若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件全部写入备区,则跳转至备区标志位写入状态,并置位写入标志位,写入备区的标志位,以及将写入备区的所有数据打包;
在主备区搬运总状态机处于备区标志位写入状态时,若写入标志位为复位状态且正确完成备区标志位写入操作,则跳转至第一空闲状态。
在一种可能的实现方式中,主备区读写状态机包括数据写入状态、数据读取状态、数据校验状态、擦除状态和第二空闲状态;
在主备区读写状态机处于第二空闲状态时,若擦除标志位处于置位状态,则跳转至擦除状态;若写入标志位处于置位状态,则跳转至数据写入状态;若读取标志位处于置位状态,则跳转至数据读取状态;
在主备区读写状态机处于擦除状态时,若擦除操作结束,则跳转至第二空闲状态,并复位擦除标志位;
在主备区读写状态机处于数据写入状态时,若数据写入操作结束,则跳转至数据读取状态,并置位写入标志位;
在主备区读写状态机处于数据读取状态时,若数据读取操作结束,则跳转至数据校验状态;
在主备区读写状态机处于数据校验状态时,若数据校验结果正常,则跳转至第二空闲状态,并复位读取标志位和写入标志位;若数据校验结果异常,则重新进行数据读取或者数据写入,并重新进行数据校验,直至数据校验结果正常或数据校验次数达到预设次数。
第二方面,本发明实施例提供了一种在线升级装置,待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件;上述在线升级装置包括:
接收模块,用于接收本次升级文件,并将本次升级文件写入主区;
预处理模块,用于对待升级设备进行在线升级预处理;
在线升级模块,用于将主区的本次升级文件写入片内存储器,以进行在线升级;
掉电处理模块,用于若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级。
第三方面,本发明实施例提供了一种电子设备,包括存储器和处理器,存储器用于存储计算机程序,处理器用于调用并运行存储器中存储的计算机程序,执行如第一方面或第一方面的任一种可能的实现方式所述的在线升级方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上第一方面或第一方面的任一种可能的实现方式所述的在线升级方法的步骤。
本发明实施例提供一种在线升级方法及电子设备,其中,待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件,该方法通过接收本次升级文件,并将本次升级文件写入主区;对待升级设备进行在线升级预处理;将主区的本次升级文件写入片内存储器,以进行在线升级;若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级,从而可以实现即使待升级设备在线升级时突发掉电,也能在重新上电后,基于备区存储的文件或主区存储的文件,成功完成本次升级,且程序能够正常运行。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的应用场景示意图;
图2是本发明一实施例提供的在线升级方法的流程示意图;
图3是本发明另一实施例提供的在线升级方法的流程示意图;
图4是本发明一实施例提供的掉电处理过程的示意图;
图5是本发明一实施例提供的第一格式的升级文件和第二格式的升级文件的对比示意图;
图6是本发明一实施例提供的升级握手的流程示意图;
图7是本发明一实施例提供的数据漏发的示意图;
图8是本发明一实施例提供的数据重写逻辑的示意图;
图9是本发明一实施例提供将本次升级文件写入片内存储器的流程示意图;
图10是本发明一实施例提供的主备区搬运总状态机的示意图;
图11是本发明一实施例提供的主备区读写状态机的示意图;
图12是本发明实施例提供的在线升级装置的结构示意图;
图13是本发明实施例提供的电子设备的示意图。
具体实施方式
下面结合具体实施例对本申请进行更清楚的说明。以下实施例将有助于本领域的技术人员进一步理解本申请的作用,但不以任何形式限制本申请。应当指出的是,对本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进。这些都属于本申请的保护范围。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
此外,本申请实施例中提到的“多个”应当被解释为两个或两个以上。
如前所述,在线升级是现在许多产品必带的一个功能,根据编程接口的不同,有JTAG,UART,CAN等多种方式。尽管编程接口有所不同,但是其在线升级的原理是类似的,都是通过外部触发条件,使芯片脱离常规应用程序的执行流程,接收升级包文件并将其写入到芯片内部的FLASH中。
然而,根据是否配置片外FLASH,其升级方式又可以分为两种:(1)无片外FLASH:升级数据边接收,边导入片内FLASH;(2)有片外FLASH:升级数据先存至片外的FLASH,待全部升级数据接收完毕,再从片外FLASH导入到片内FLASH中。
无片外FLASH的典型代表是公共调试平台在线升级的方式,其缺点是升级数据接收纯开环,容易受到干扰,导致升级数据传输错误,从而出现设备升级失败。
有片外FLASH的升级方式,通过对升级包多层校验,可以避免上述问题。该方式虽然极大的降低升级失败的风险,但仍旧存在两个问题:(1)升级数据从片外FLASH导入片内FLASH过程中掉电,导致设备升级失败;(2)升级文件导入到片内FLASH时,出现错误,导致升级数据导入完毕程序跳转时出现错误。在设备进行在线升级的过程中,可能存在设备突发掉电的情况,导致设备在线升级失败,且在设备重新上电后,程序无法正常运行的问题。
为了解决上述问题,本申请实施例提供了一种在线升级方法,用于对待升级设备进行升级,其中,待升级设备包括片内存储器(片内FLASH)和片外存储器(片外FLASH),片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件;该方法首先将本次升级文件写入主区,并对待升级设备进行在线升级预处理,之后将主区的本次升级文件写入片内存储器,若在这个过程中,带升级设备掉电,则可以在其重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级,从而可以实现即使待升级设备在线升级时突发掉电,也能在重新上电后,成功完成本次升级,且程序能够正常运行。
首先,参见图1,图1示意性地示出了根据本申请实施方式提供的应用场景示意图,该应用场景涉及的设备包括待升级设备和升级文件发放设备。其中,待升级设备可以是DSP,DSP包括片内存储器和片外存储器,其中,片外存储器存储的数据掉电不丢失。升级文件发放设备可以是ARM。
在具体的应用场景中,可以通过ARM对DSP进行升级,升级过程包括:以USB接口为固件导入点,ARM读取U盘中的固件信息,并将固件信息转发给DSP,DSP接收到升级包后,先将数据存储在片外存储器,待升级包发送完整且校验无误后,擦除片内存储器的程序,并将存储在片外存储器的程序搬移到片内存储器从而完成升级。
参见图1,ARM与DSP的通讯接口为CAN或RS485,可支持单点升级,也可支持广播升级。DSP与片外存储器可通过SPI完成数据传输。
下面结合图1的应用场景,参考图2至图11来描述根据本申请示例性实施方式提供的在线升级方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
需要说明的是,本申请的实施方式可应用于电子设备,电子设备可以为服务器、计算机或控制器等等,即可在服务器、计算机或控制器等设备上执行本申请示例性实施方式提供的在线升级方法。电子设备可以是上述待升级设备。
需要说明的是,根据本申请示例性实施方式提供的在线升级方法,可以在同一设备上执行,也可以在不同设备上执行。
参见图2,其示出了本发明实施例提供的在线升级方法的实现流程图。该在线升级方法用于对待升级设备进行升级,具体可以用于对待升级设备中的应用程序APP进行升级。其中,待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件。片外存储器中存储的数据掉电不丢失,主区和备区可以为片外存储器中不同的存储区域。
需要说明的是,本次升级文件和上次升级文件是针对本次升级所定义的文件,本次升级文件中存储有本次升级所需的升级数据,上次升级文件存储有上次升级所需的升级数据。当下次升级时,该本次升级文件则变成下次升级对应的上次升级文件。
参见图2,上述在线升级方法可以包括:
在S201中,接收本次升级文件,并将本次升级文件写入主区。
在本实施例中,参见图3中的本次升级文件接收、校验及存储的流程,可以接收升级文件发放设备下发的本次升级文件,并将本次升级文件写入片外存储器中的主区。
在一些可能的实现方式中,升级文件发放设备在下发本次升级文件时,为了保证信息安全可靠,避免升级文件被恶意修改,会将本次升级文件进行加密。待升级设备接收到加密后的本次升级文件后,进行对应解密,得到本次升级文件。
示例性地,上述加密可以采用AES加密算法进行加密,采用128位密钥,密钥为自定义的“固件关键字”,不足128位的补零。
在S202中,对待升级设备进行在线升级预处理。
其中,参见图3中的待升级设备升级方案流程,在线升级预处理可以包括APP层级预处理和存储器(FLASH)层级预处理。APP层级预处理可以包括:待升级设备关机、封锁驱动(封锁PWM脉冲)以及使待升级设备处于可靠的待机状态。存储器(FLASH)层级预处理可以包括:FLASH API解锁、芯片型号和API工具版本号确认、以及擦除片内存储器内指定扇区内的程序。该指定扇区是指需升级的应用程序所存储的扇区,BootMain所在扇区不擦除。
需要说明的是,在上述在线升级预处理过程中,可以先执行上述APP层级预处理,再执行上述存储器层级预处理。
在S203中,将主区的本次升级文件写入片内存储器,以进行在线升级。
在本实施例中,参见图3中的待升级设备升级方案流程,在对待升级设备进行在线升级预处理后,可以将主区存储的本次升级文件写入片内存储器,具体可以是写入片内存储器的上述指定扇区内,以完成在线升级。
在S204中,若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级。
在在线升级的过程中,可能出现掉电现象,导致在线升级失败。比如,在将主区的本次升级文件写入片内存储器中的过程中,突发掉电现象,导致本次升级文件并未完全写入片内存储器。此时,在待升级设备重新上电后,待升级设备中的应用程序并不能正常运行。
为了解决这个问题,本申请实施例在待升级设备的升级过程中掉电后,若其重新上电,则自动进入引导加载程序Bootloder,通过引导进入Boot程序区域,调用BootMain函数,BootMain函数中增加了在线升级的程序,通过调用备区或者主区存储的升级数据或者升级文件,重新执行在线升级过程,完成本次升级,避免待升级设备的应用程序无法正常运行。
本申请实施例提供的在线升级方法对待升级设备进行在线升级,待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件,该方法通过接收本次升级文件,并将本次升级文件写入主区;对待升级设备进行在线升级预处理;将主区的本次升级文件写入片内存储器,以进行在线升级;若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级,从而可以实现即使待升级设备在线升级时突发掉电,也能在重新上电后,基于备区存储的文件或主区存储的文件,成功完成本次升级,且程序能够正常运行。
在一些实施例中,参见图图3,在上述S201中,在将本次升级文件写入主区之后,还包括:
更新主区的标志位;
在上述S204中,参见图4,上述基于备区存储的文件或主区存储的文件,完成本次升级,包括:
读取备区的当前标志位;
若备区的当前标志位不正确,则读取主区的当前标志位;
若主区的当前标志位正确,则将主区存储的文件写入片内存储器,完成本次升级。
在一些实施例中,参见图4,在读取备区的当前标志位之后,上述基于备区存储的文件或主区存储的文件,完成本次升级,还包括:
若备区的当前标志位正确,则将主区存储的文件擦除,并将备区存储的文件写入片内存储器,完成本次升级。
参见图3中的本次升级文件接收、校验及存储的流程,本申请实施例在将本次升级文件成功写入主区之后,需更新主区的标志位。主区的标志位可以包括主区标志位数值以及升级文件的大小。主区的标志位存储在主区中。
更新主区的标志位可以包括将主区标志位数值更新为预设主区标志位,以及将本次升级文件的大小写入。当主区标志位数值为预设主区标志位时,表示本次升级文件已经成功写入主区。本次升级文件的大小可以用于指示主区向备区搬运本次升级文件的长度。
备区的当前标志位包括当前备区标志位数值,其存储在备区中。
判断备区的当前标志位是否正确,可以包括:判断备区的当前标志位是否为预设备区标志位,若是,则备区的当前标志位正确,若否,则备区的当前标志位不正确。
若备区的当前标志位为预设备区标志位,即备区的当前标志位不正确,表示备区已经成功写入本次升级文件,或者备区完整存储上次升级文件,此时,可以将主区存储的文件擦除,并基于备区存储的文件,调用图3中的待升级设备升级方案,将备区存储的文件写入片内存储器,完成本次升级,使得待升级设备成功完成升级,可以成功运行升级后的应用程序,或者,可以进行升级回滚,使待升级沈北恢复至升级前的状态,可以成功运行升级前的应用程序,不影响设备正常运行。
若备区的当前标志位不为预设备区标志位,则无法根据备区存储的文件完成本次升级,此时,可以读取主区的当前标志位,即读取当前主区标志位数值。
判断主区的当前标志位是否正确,可以包括:判断主区的当前标志位是否为预设主区标志位,若是,则主区的当前标志位正确,若否,则主区的当前标志位不正确。
若主区的当前标志位正确,说明本次升级文件已经成功写入主区,此时,可以基于主区存储的文件,调用图3中的待升级设备升级方案,将主区存储的文件写入片内存储器,完成本次升级,使得待升级设备成功完成升级,可以成功运行升级后的应用程序。
若主区的当前标志位不正确,说明本次升级文件未成功写入主区,无法基于主区存储的文件进行升级,退出本次升级,此时,可以通过调试平台升级,或者采用手动升级方式升级。
在一些实施例中,在上述S201之前,上述在线升级方法还包括:
接收固件关键字;固件关键字包括与本次升级文件关联的需升级设备的信息;固件关键字存储于本次升级文件的文件头中;
判断待升级设备的信息与需升级设备的信息是否匹配;
相应地,在上述S201中,上述接收本次升级文件,包括:
若待升级设备的信息与需升级设备的信息匹配,则接收本次升级文件。
参见图3,在进行升级文件接收之前,需进行升级握手,握手成功后,才会进行升级文件的接收、校验及存储等等。升级握手是指在升级之前,升级文件发放设备与待升级设备之间进行的一些数据交互,用于判断待升级设备的升级固件是否匹配,和/或,待升级设备是否满足升级条件等等,防止将不匹配的升级固件升级到待升级设备中,导致机器异常。
为了能够正确对需升级设备进行升级,本申请实施例提供了一套校验机制来判断升级固件是否匹配。
通过对第一格式的本次升级文件进行改造,改造成第二格式的本次升级文件,具体改造是在第一格式的本次升级文件的文件头部加上一段校验的代码,此段校验码主要包含表1中所示信息。其中,第一格式和第二格式可以是任意适用的格式,比如,可以一个为.hex格式,另一个为.bin格式,等等。
表1第二格式的本次升级文件的文件头包含的信息
改造后的本次升级文件与原文件相比,仅增加了文件头部的上述代码,后续的升级数据与原文件的升级数据相同,其字节数与“升级数据大小”字段的数值相同。
图5为第一格式的升级文件和第二格式的升级文件的对比示意图,可以看出差别仅在第一行,其它无差别。
升级握手的详细流程可参见图6,不再赘述。
在一些实施例中,在上述S201中,上述接收本次升级文件,并将本次升级文件写入主区,包括:
分帧接收本次升级文件;
对接收到的每帧升级数据进行CRC校验和帧索引号校验,并将CRC校验和帧索引号校验通过后的升级数据写入主区;
对接收到的整个本次升级文件进行MD5校验;
若MD5校验通过,则成功完成将本次升级文件写入主区的操作。
参见图3,升级文件发放设备以多帧的形式,向待升级设备发送本次升级文件,可以以广播形式发送,也可以以点对点形式发送,在此不做具体限制。每帧数据的大小也可以根据实际需求设置,在此不做具体限制,比如,可以每帧包括192个字节的有效数据,等等。
待升级设备需将下发的本次升级文件存储在片外存储器中,而为了保证数据准确性和完整性,对接收到的数据进行数据校验是非常重要的。
数据校验可以包括对每帧升级数据的CRC校验和帧索引号校验,以及对整个本次升级文件的MD5校验。
CRC校验:每接收到一帧升级数据,将其存储到片外存储器中的主区,而主区存储策略为:接收数据→校验→写入主区→读回→再校验。上述两次的校验都采用到了CRC校验方式,只有两次校验的结果一致,才允许回复升级文件发放设备,该帧升级数据接收成功,否则回复未接收成功,使升级文件发放设备重新发送该帧升级数据。
帧索引号校验:升级文件发放设备将第二格式的本次升级文件的数据分成N帧下发至待升级设备;N=本次升级文件的总字节数/单帧下发的字节数。
为了防止在通信及存储过程中出现漏帧和丢帧的情况,因此需要逐帧对接收到的数据进行索引号校验。索引号需满足公式:ReceiveIndex=FlashIndex+1;ReceiveIndex表示当前接收到的数据帧的索引号;FlashIndex表示已存储在片外存储器中的最后一帧数据的索引号。
满足上述公式,则可以保证数据帧是连续的,没有出现丢帧的情况。
经过上述两种校验,可识别大部分的数据异常的情况。但是也存在一种可能,升级文件发放设备在处理升级文件的时候,将图7方框内的一整行的数据漏了,那么在升级时,上述的通信数据CRC校验,帧索引号校验以及后面的逐行的CRC校验都是能够通过的。但是因为漏了一行,还是会导致程序异常,因此需要对整个文件做MD5校验。
对整个文件进行MD5检验的过程可以包括:升级文件发放设备将本次升级文件的文件头发送至待升级设备,待升级设备提取其中的MD5校验码;升级文件发放设备下发升级数据,待升级设备每接收到一帧升级数据,则对本真数据进行MD5校验码计算,更新MD5校验码;当本次升级文件传输完成后,待升级设备将计算得到的MD5校验码与从文件头提取到的MD5校验码进行比较,若两者一致,则继续升级,否则,退出升级或者升级文件发放设备重新发送本次升级文件。
在一些可能的实现方式中,待升级设备将升级数据写入片外存储器时,可能因为某些原因而出现数据异常,待升级设备允许一定数量的异常存在,从而提高升级的容错率和成功率。其详细逻辑可参见图8,当某个数据帧为无效数据时,其写入时,数据帧号不会自动加1,可以标记为无效数据,并重新写入该帧数据,直至成功写入;读取时,读取到无效数据,自动舍弃。其中,外扩FLASH即为片外存储器。
在一些可能的实现方式中,上述S203中,将主区的本次升级文件写入片内存储器的详细实现流程可以参见图9。具体地,以行为单位进行数据读取以及校验,每行数据中包含本行数据的校验码,比如,可以是最后一个字节为校验码,将计算到的检验码与本行数据存储的校验码进行比较,若相同,则校验通过,否则校验不通过。每行数据均标记了记录类型,用于标记该行数据为升级数据、扩展段地址还是升级文件结尾,根据不同记录类型,执行不同操作,若为升级数据,则调用对应的函数,将其写入片内存储器,即片内FLASH;若为扩展段地址,则计算基地址,若为升级文件结尾,则进入数据写入是否正确的判断流程。
在一些实施例中,在上述S203中,在将主区的本次升级文件写入片内存储器,以进行在线升级的过程中,在线升级方法还包括:
若在将主区的本次升级文件写入片内存储器的过程中,检测到数据写入错误,则跳转至对待升级设备进行在线升级预处理的步骤继续执行。
在将升级数据写入片内存储器的过程中,由于干扰等问题,可能会出现片内存储器的数据写入错误,此时如果直接执行升级流程,会导致程序出错。因此增加了升级结果的判断,如果失败,则执行跳转至升级预处理环节,重新执行在线升级方案。
其中,可以在检测到数据写入错误时,直接跳转至在线升级预处理的步骤,也可以在检测到数据写入错误后,进行数据重写,重写次数达到次数上限时,跳转至在线升级预处理的步骤,还可以在整个升级文件写入到片内存储器后,检测到片内存储器存储的数据存在错误时,跳转至在线升级预处理的步骤。次数上限可以根据实际需求进行设置,比如可以为5次,10次,等等。出现数据写入次数,跳转至在线升级预处理的步骤重新执行的过程也不是无限次数的,可以根据实际需求进行设置,比如,最多允许进行10次,若还出现写入错误,则退出升级,由工作人员进行调试升级。
上述跳转至对待升级设备进行在线升级预处理的步骤继续执行,可以是直接跳转至图3所示的APP层级预处理继续执行,也可以是直接跳转至图3所示的存储器层级预处理继续执行,在此不做具体限制。
在一些实施例中,在将主区的本次升级文件成功写入片内存储器之后,上述在线升级方法还可以包括:
基于主备区搬运总状态机和主备区读写状态机,将主区存储的本次升级文件搬运至备区。
本实施例在成功将本次升级文件写入片内存储器后,将主区存储的本次升级文件搬运至备区,从而可以在下次升级时,备区存储上次升级文件,便于成功完成下次升级。
在一些实施例中,参见图10,主备区搬运总状态机包括主区标志位读取状态、备区擦除状态、主区数据读取状态、备区数据写入状态、备区标志位写入状态和第一空闲状态;
在主备区搬运总状态机处于主区标志位读取状态时,若读取标志位为复位状态且读取的主区的标志位正确,则跳转至备区擦除状态,并置位擦除标志位,执行备区擦除操作;
在主备区搬运总状态机处于备区擦除状态时,若擦除标志位为复位状态且正确完成备区擦除操作,则跳转至主区数据读取状态,并置位读取标志位,执行主区数据读取操作;
在主备区搬运总状态机处于主区数据读取状态时,若读取标志位为复位状态,且正确完成主区数据读取操作,则跳转至备区数据写入状态,并置位写入标志位,将从主区读取的数据写入备区,记录主区操作地址,更新备区操作地址,以及复制写入备区的数据;
在主备区搬运总状态机处于备区数据写入状态时,若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件还未全部写入备区,则跳转至主区数据读取状态,并置位读取标志位,继续执行主区数据读取操作,以及记录备区操作地址和更新主区操作地址;若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件全部写入备区,则跳转至备区标志位写入状态,并置位写入标志位,写入备区的标志位,以及将写入备区的所有数据打包;
在主备区搬运总状态机处于备区标志位写入状态时,若写入标志位为复位状态且正确完成备区标志位写入操作,则跳转至第一空闲状态。
图10示出了本申请实施例的主备区搬运总状态机,表2示出了主备区搬运总状态机的运行机制。表2中的切换优先级,1的优先级高于2。表2中的各个标志位,其值为FALSE表示,表示对应的标志位为复位状态,其值为TRUE,表示对应的标志位为置位状态。
判断主区的标志位以及备区的标志位是否正确,可以参见前述实施例中的相关描述,不再赘述。
参见图10和表2,主备区搬运总状态机还可以包括第一上电状态、首行数据读取状态、主区标志位写入状态和失效态。首行数据读取状态也可以成为文件头数据读取状态。
在主备区搬运总状态机处于第一上电状态时,若上电完成,则跳转至首行数据读取状态,并置位读取标志位,读取本次升级文件的首行数据;
在主备区搬运总状态机处于首行数据读取状态时,若读取标志位为复位状态且读取的前预设数量个数据存在有效数据,则跳转至主区标志位读取状态,并置位读取标志位,读取主区的标志位;若读取标志位为复位状态且读取的前预设数量个数据均为无效数据,则跳转至第一空闲状态;预设数量可以根据实际需求设置,比如,可以为10或20,等等;表2中的0xFF表示无效数据。
在主备区搬运总状态机处于主区标志位读取状态时,若读取标志位为复位状态且主区的标志位错误,则跳转至第一空闲状态;
在主备区搬运总状态机处于第一空闲状态时,若检测到主区标志位写入请求,则跳转至主区标志位写入状态,并置位写入标志位,写入主区的标志位,并将写入主区的所有数据打包;
在主备区搬运总状态机处于主区标志位写入状态时,若写入标志位为复位状态,且正确完成主区标志位写入操作,则跳转至第一空闲状态;
在主备区搬运总状态机处于除失效态的任一状态时,若检测到读写操作错误,则跳转至失效态,并置位错误标志位;
在主备区搬运总状态机处于失效态时,可以直接跳转至第一空闲状态。
表2主备区搬运总状态机的运行机制
在一些实施例中,主备区读写状态机包括数据写入状态、数据读取状态、数据校验状态、擦除状态和第二空闲状态;
在主备区读写状态机处于第二空闲状态时,若擦除标志位处于置位状态,则跳转至擦除状态;若写入标志位处于置位状态,则跳转至数据写入状态;若读取标志位处于置位状态,则跳转至数据读取状态;
在主备区读写状态机处于擦除状态时,若擦除操作结束,则跳转至第二空闲状态,并复位擦除标志位;
在主备区读写状态机处于数据写入状态时,若数据写入操作结束,则跳转至数据读取状态,并置位写入标志位;
在主备区读写状态机处于数据读取状态时,若数据读取操作结束,则跳转至数据校验状态;
在主备区读写状态机处于数据校验状态时,若数据校验结果正常,则跳转至第二空闲状态,并复位读取标志位和写入标志位;若数据校验结果异常,则重新进行数据读取或者数据写入,并重新进行数据校验,直至数据校验结果正常或数据校验次数达到预设次数。
图11示出了本申请实施例的主备区读写状态机,表3示出了主备区读写状态机的运行机制。表3中的切换优先级,1的优先级高于2。表3中的各个标志位,其值为FALSE表示,表示对应的标志位为复位状态,其值为TRUE,表示对应的标志位为置位状态。
参见图11和表3,主备区读写状态机还可以包括第二上电状态。在主备区读写状态机处于第二上电状态时,若上电完成,则跳转至第二空闲状态。
表3主备区读写状态机的运行机制
需要说明的是,在前述实施例中的相应过程中,也可以根据主备区搬运总状态机和主备区读写状态机,实现相应过程。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
图12示出了本发明实施例提供的在线升级装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
待升级设备包括片内存储器和片外存储器,片外存储器包括主区和备区,主区用于存储本次升级文件,备区用于存储上次升级文件;如图12所示,在线升级装置30可以包括:接收模块31、预处理模块32、在线升级模块33和掉电处理模块34。
接收模块31,用于接收本次升级文件,并将本次升级文件写入主区;
预处理模块32,用于对待升级设备进行在线升级预处理;
在线升级模块33,用于将主区的本次升级文件写入片内存储器,以进行在线升级;
掉电处理模块34,用于若在在线升级的过程中,待升级设备掉电,则在待升级设备重新上电后,进入引导加载程序,并基于备区存储的文件或主区存储的文件,完成本次升级。
在一种可能的实现方式中,在接收模块31中,在将本次升级文件写入主区之后,还包括:
更新主区的标志位;
在掉电处理模块34中,基于备区存储的文件或主区存储的文件,完成本次升级,包括:
读取备区的当前标志位;
若备区的当前标志位不正确,则读取主区的当前标志位;
若主区的当前标志位正确,则将主区存储的文件写入片内存储器,完成本次升级。
在一种可能的实现方式中,在掉电处理模块34中,在读取备区的当前标志位之后,基于备区存储的文件或主区存储的文件,完成本次升级,还包括:
若备区的当前标志位正确,则将主区存储的文件擦除,并将备区存储的文件写入片内存储器,完成本次升级。
在一种可能的实现方式中,在线升级装置30还可以包括:升级握手模块。
升级握手模块用于:在接收本次升级文件之前,接收固件关键字;固件关键字包括与本次升级文件关联的需升级设备的信息;固件关键字存储于本次升级文件的文件头中;判断待升级设备的信息与需升级设备的信息是否匹配;
在接收模块31中,接收本次升级文件,包括:
若待升级设备的信息与需升级设备的信息匹配,则接收本次升级文件。
在一种可能的实现方式中,在接收模块31中,接收本次升级文件,并将本次升级文件写入主区,包括:
分帧接收本次升级文件;
对接收到的每帧升级数据进行CRC校验和帧索引号校验,并将CRC校验和帧索引号校验通过后的升级数据写入主区;
对接收到的整个本次升级文件进行MD5校验;
若MD5校验通过,则成功完成将本次升级文件写入主区的操作。
在一种可能的实现方式中,在在线升级模块33中,在将主区的本次升级文件写入片内存储器,以进行在线升级的过程中,还包括:
若在将主区的本次升级文件写入片内存储器的过程中,检测到数据写入错误,则跳转至对待升级设备进行在线升级预处理的步骤继续执行。
在一种可能的实现方式中,在在线升级模块33中,在将主区的本次升级文件成功写入片内存储器之后,在线升级方法还包括:
基于主备区搬运总状态机和主备区读写状态机,将主区存储的本次升级文件搬运至备区。
在一种可能的实现方式中,主备区搬运总状态机包括主区标志位读取状态、备区擦除状态、主区数据读取状态、备区数据写入状态、备区标志位写入状态和第一空闲状态;
在主备区搬运总状态机处于主区标志位读取状态时,若读取标志位为复位状态且读取的主区的标志位正确,则跳转至备区擦除状态,并置位擦除标志位,执行备区擦除操作;
在主备区搬运总状态机处于备区擦除状态时,若擦除标志位为复位状态且正确完成备区擦除操作,则跳转至主区数据读取状态,并置位读取标志位,执行主区数据读取操作;
在主备区搬运总状态机处于主区数据读取状态时,若读取标志位为复位状态,且正确完成主区数据读取操作,则跳转至备区数据写入状态,并置位写入标志位,将从主区读取的数据写入备区,记录主区操作地址,更新备区操作地址,以及复制写入备区的数据;
在主备区搬运总状态机处于备区数据写入状态时,若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件还未全部写入备区,则跳转至主区数据读取状态,并置位读取标志位,继续执行主区数据读取操作,以及记录备区操作地址和更新主区操作地址;若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件全部写入备区,则跳转至备区标志位写入状态,并置位写入标志位,写入备区的标志位,以及将写入备区的所有数据打包;
在主备区搬运总状态机处于备区标志位写入状态时,若写入标志位为复位状态且正确完成备区标志位写入操作,则跳转至第一空闲状态。
在一种可能的实现方式中,主备区读写状态机包括数据写入状态、数据读取状态、数据校验状态、擦除状态和第二空闲状态;
在主备区读写状态机处于第二空闲状态时,若擦除标志位处于置位状态,则跳转至擦除状态;若写入标志位处于置位状态,则跳转至数据写入状态;若读取标志位处于置位状态,则跳转至数据读取状态;
在主备区读写状态机处于擦除状态时,若擦除操作结束,则跳转至第二空闲状态,并复位擦除标志位;
在主备区读写状态机处于数据写入状态时,若数据写入操作结束,则跳转至数据读取状态,并置位写入标志位;
在主备区读写状态机处于数据读取状态时,若数据读取操作结束,则跳转至数据校验状态;
在主备区读写状态机处于数据校验状态时,若数据校验结果正常,则跳转至第二空闲状态,并复位读取标志位和写入标志位;若数据校验结果异常,则重新进行数据读取或者数据写入,并重新进行数据校验,直至数据校验结果正常或数据校验次数达到预设次数。
图13是本发明实施例提供的电子设备的示意图。如图13所示,该实施例的电子设备4包括:处理器40和存储器41。所述存储器41用于存储计算机程序42,所述处理器40用于调用并运行所述存储器41中存储的计算机程序42,执行上述各个在线升级方法实施例中的步骤,例如图2所示的S201至S204。或者,所述处理器40用于调用并运行所述存储器41中存储的计算机程序42,实现上述各装置实施例中各模块/单元的功能,例如图12所示各个模块的功能。
示例性的,所述计算机程序42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序42在所述电子设备4中的执行过程。例如,所述计算机程序42可以被分割成图12所示的各个模块。
所述电子设备4可包括,但不仅限于,处理器40、存储器41。本领域技术人员可以理解,图13仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器40可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器41可以是所述电子设备4的内部存储单元,例如电子设备4的硬盘或内存。所述存储器41也可以是所述电子设备4的外部存储设备,例如所述电子设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器41还可以既包括所述电子设备4的内部存储单元也包括外部存储设备。所述存储器41用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个在线升级方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种在线升级方法,其特征在于,待升级设备包括片内存储器和片外存储器,所述片外存储器包括主区和备区,所述主区用于存储本次升级文件,所述备区用于存储上次升级文件;所述在线升级方法包括:
接收本次升级文件,并将本次升级文件写入所述主区;
对所述待升级设备进行在线升级预处理;
将所述主区的本次升级文件写入所述片内存储器,以进行在线升级;
若在所述在线升级的过程中,所述待升级设备掉电,则在所述待升级设备重新上电后,进入引导加载程序,并基于所述备区存储的文件或所述主区存储的文件,完成本次升级。
2.根据权利要求1所述的在线升级方法,其特征在于,在所述将本次升级文件写入所述主区之后,还包括:
更新主区的标志位;
所述基于所述备区存储的文件或所述主区存储的文件,完成本次升级,包括:
读取所述备区的当前标志位;
若所述备区的当前标志位不正确,则读取所述主区的当前标志位;
若所述主区的当前标志位正确,则将所述主区存储的文件写入所述片内存储器,完成本次升级。
3.根据权利要求2所述的在线升级方法,其特征在于,在所述读取所述备区的当前标志位之后,所述基于所述备区存储的文件或所述主区存储的文件,完成本次升级,还包括:
若所述备区的当前标志位正确,则将所述主区存储的文件擦除,并将所述备区存储的文件写入所述片内存储器,完成本次升级。
4.根据权利要求1所述的在线升级方法,其特征在于,在所述接收本次升级文件之前,所述在线升级方法还包括:
接收固件关键字;所述固件关键字包括与所述本次升级文件关联的需升级设备的信息;所述固件关键字存储于所述本次升级文件的文件头中;
判断所述待升级设备的信息与所述需升级设备的信息是否匹配;
所述接收本次升级文件,包括:
若所述待升级设备的信息与所述需升级设备的信息匹配,则接收本次升级文件。
5.根据权利要求1所述的在线升级方法,其特征在于,所述接收本次升级文件,并将本次升级文件写入所述主区,包括:
分帧接收本次升级文件;
对接收到的每帧升级数据进行CRC校验和帧索引号校验,并将CRC校验和帧索引号校验通过后的升级数据写入所述主区;
对接收到的整个本次升级文件进行MD5校验;
若所述MD5校验通过,则成功完成将本次升级文件写入所述主区的操作。
6.根据权利要求1所述的在线升级方法,其特征在于,在所述将所述主区的本次升级文件写入所述片内存储器,以进行在线升级的过程中,所述在线升级方法还包括:
若在将所述主区的本次升级文件写入所述片内存储器的过程中,检测到数据写入错误,则跳转至所述对所述待升级设备进行在线升级预处理的步骤继续执行。
7.根据权利要求1至6任一项所述的在线升级方法,其特征在于,在将所述主区的本次升级文件成功写入所述片内存储器之后,所述在线升级方法还包括:
基于主备区搬运总状态机和主备区读写状态机,将所述主区存储的本次升级文件搬运至所述备区。
8.根据权利要求7所述的在线升级方法,其特征在于,所述主备区搬运总状态机包括主区标志位读取状态、备区擦除状态、主区数据读取状态、备区数据写入状态、备区标志位写入状态和第一空闲状态;
在所述主备区搬运总状态机处于所述主区标志位读取状态时,若读取标志位为复位状态且读取的所述主区的标志位正确,则跳转至备区擦除状态,并置位擦除标志位,执行备区擦除操作;
在所述主备区搬运总状态机处于所述备区擦除状态时,若所述擦除标志位为复位状态且正确完成备区擦除操作,则跳转至所述主区数据读取状态,并置位读取标志位,执行主区数据读取操作;
在所述主备区搬运总状态机处于所述主区数据读取状态时,若读取标志位为复位状态,且正确完成主区数据读取操作,则跳转至所述备区数据写入状态,并置位写入标志位,将从主区读取的数据写入备区,记录主区操作地址,更新备区操作地址,以及复制写入备区的数据;
在所述主备区搬运总状态机处于所述备区数据写入状态时,若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件还未全部写入备区,则跳转至所述主区数据读取状态,并置位读取标志位,继续执行主区数据读取操作,以及记录备区操作地址和更新主区操作地址;若写入标志位为复位状态、正确完成备区数据写入操作且本次升级文件全部写入备区,则跳转至所述备区标志位写入状态,并置位写入标志位,写入备区的标志位,以及将写入备区的所有数据打包;
在所述主备区搬运总状态机处于所述备区标志位写入状态时,若写入标志位为复位状态且正确完成备区标志位写入操作,则跳转至第一空闲状态。
9.根据权利要求7所述的在线升级方法,其特征在于,所述主备区读写状态机包括数据写入状态、数据读取状态、数据校验状态、擦除状态和第二空闲状态;
在所述主备区读写状态机处于所述第二空闲状态时,若擦除标志位处于置位状态,则跳转至所述擦除状态;若写入标志位处于置位状态,则跳转至所述数据写入状态;若读取标志位处于置位状态,则跳转至所述数据读取状态;
在所述主备区读写状态机处于所述擦除状态时,若擦除操作结束,则跳转至所述第二空闲状态,并复位擦除标志位;
在所述主备区读写状态机处于所述数据写入状态时,若数据写入操作结束,则跳转至所述数据读取状态,并置位写入标志位;
在所述主备区读写状态机处于所述数据读取状态时,若数据读取操作结束,则跳转至所述数据校验状态;
在所述主备区读写状态机处于所述数据校验状态时,若数据校验结果正常,则跳转至所述第二空闲状态,并复位读取标志位和写入标志位;若数据校验结果异常,则重新进行数据读取或者数据写入,并重新进行数据校验,直至数据校验结果正常或数据校验次数达到预设次数。
10.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,执行如权利要求1至9中任一项所述的在线升级方法。
CN202411385774.0A 2024-09-30 2024-09-30 在线升级方法及电子设备 Pending CN119473338A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411385774.0A CN119473338A (zh) 2024-09-30 2024-09-30 在线升级方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411385774.0A CN119473338A (zh) 2024-09-30 2024-09-30 在线升级方法及电子设备

Publications (1)

Publication Number Publication Date
CN119473338A true CN119473338A (zh) 2025-02-18

Family

ID=94594051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411385774.0A Pending CN119473338A (zh) 2024-09-30 2024-09-30 在线升级方法及电子设备

Country Status (1)

Country Link
CN (1) CN119473338A (zh)

Similar Documents

Publication Publication Date Title
US8281229B2 (en) Firmware verification using system memory error check logic
CN102483781B (zh) 数据验证方法
US7512749B2 (en) Safe software revision for embedded systems
CN102622253B (zh) 一种单片机及其在线升级的方法
CN105260215A (zh) 一种u盘升级车载行车记录仪终端的方法
RU2248627C2 (ru) Способ и устройство для изменения содержимого запоминающих устройств блоков управления
CN110286853B (zh) 一种数据写入方法和装置、计算机可读存储介质
CN102163155A (zh) 存储设备的升级方法及升级控制装置
CN107678762B (zh) 一种系统版本升级方法及装置
CN109933340B (zh) 一种航天器eeprom基于页模式的在轨写入和自检方法
CN117687664A (zh) 一种dsp的在线升级配置方法及装置
CN111695164B (zh) 电子设备及其控制方法
JP2000019891A (ja) 画像形成装置及びその制御方法、記憶媒体
US9721665B2 (en) Data writing method and system
CN114816832B (zh) 一种单片机的数据管理方法、装置以及系统
CN119473338A (zh) 在线升级方法及电子设备
CN101470666B (zh) 一种数据存储方法
CN109491951B (zh) 一种配置数据的方法以及计算设备
CN119105784A (zh) 设备升级方法、装置、电子设备及存储介质
CN100461713C (zh) 一种通信设备数据加载的方法
CN119149292A (zh) 一种多层次嵌入式工控系统的程序备份和升级方法
CN117407022A (zh) 升级固件的方法、电子设备和存储介质
US20070274302A1 (en) Data Storage Device, Memory Managing Method, and Program
CN116755735A (zh) 嵌入式软件在线升级方法、装置、腹膜透析仪、存储介质
CN114115700B (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